From 162194085591170c26f3c34f75096086ef58572c Mon Sep 17 00:00:00 2001 From: Thomas Forest Date: Mon, 16 Sep 2019 12:00:35 +0200 Subject: [PATCH] add get_ladders() function --- src/dssp.py | 2 ++ src/structure.py | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/dssp.py b/src/dssp.py index b3709be..08fcba9 100644 --- a/src/dssp.py +++ b/src/dssp.py @@ -19,3 +19,5 @@ else: get_helix(pdb_file.residues, turns) get_bends(pdb_file.residues) get_chirality(pdb_file.residues) + bridges = get_bridges(pdb_file.residues) + get_ladders(bridges) diff --git a/src/structure.py b/src/structure.py index 51d2a0c..df720b8 100644 --- a/src/structure.py +++ b/src/structure.py @@ -36,7 +36,7 @@ def get_turns(residues): return(turns) def get_bridges(residues): - bridges = [] + bridges = {} bridge = {} strongest_bridge = {} for i in range(1,len(residues)-4): @@ -102,9 +102,9 @@ def get_bridges(residues): bridge = {} # finally add the strongest bridge at i and j pos if(strongest_bridge): - bridges.append(Bridge(strongest_bridge['btype'], + bridges[strongest_bridge['ipos']] = (Bridge(strongest_bridge['btype'], strongest_bridge['ipos'])) - bridges.append(Bridge(strongest_bridge['btype'], + bridges[strongest_bridge['jpos']] = (Bridge(strongest_bridge['btype'], strongest_bridge['jpos'])) if(len(bridges)>0): return(bridges) @@ -129,15 +129,26 @@ def get_helix(residues, turns): i+=1 return(helix) -def get_ladder(bridges): +def get_ladders(bridges): ladders = {} - for i in range(len(bridges)): + i = 1 + while i < len(bridges): k = 1 - while bridges[i] == bridges[i+k]: + while (((i in bridges.keys()) and (i+k in bridges.keys())) and + (bridges[i].bridge_type == bridges[i+k].bridge_type)): k+=1 if k>1: ladders[bridges[i].res_num] = k-1 + print("ladder", bridges[i].res_num, bridges[i+k-1].res_num) + ladders[bridges[i].res_num] = {'start':bridges[i].res_num, + 'end':bridges[i+k-1].res_num} + i+=k-1 + else: + i+=1 + return ladders + + def get_bends(residues): bends = {} for i in range(2,len(residues)-2): @@ -229,11 +240,11 @@ def get_chirality(residues): if(angle>0 and angle<=180): sign="+" - print("angle", residues[i].resid, "+", angle) + print("chirality", residues[i].resid, "+", angle) if(angle<=0 and angle > -180): sign="-" - print("angle", residues[i].resid, "-", angle) + print("chirality", residues[i].resid, "-", angle) chirality[residues[i].resid] = sign