Home | Trees | Indices | Help |
|
---|
|
1 """ 2 DSSP Parser 3 """ 4 5 import csb.core 6 import csb.io 7 8 from csb.bio.structure import SecStructures, UnknownSecStructureError 9 10 13 141625 2618 19 self.residue_id = residue_id 20 self.accession = accession 21 self.chain = chain 22 self.secondary_structure = secondary_structure 23 self.phi = phi 24 self.psi = psi28 """ 29 Simple DSSP Secondary Structure Parser. 30 """ 318033 """ 34 @param dssp_file: source DSSP file to parse 35 @type dssp_file: str 36 @return: a dictionary of L{ResidueAssignmentInfo} objects 37 @rtype: dict 38 """ 39 40 data = {} 41 start = False 42 offset = 0 # assume old DSSP format 43 accession = None 44 45 for line in open(dssp_file): 46 47 if not start: 48 49 if line.startswith('HEADER'): 50 accession = line[62:66].strip().lower() 51 52 elif line.startswith(' # RESIDUE'): 53 if len(line) >= 140: 54 offset = 4 # the new DSSP format 55 start = True 56 else: 57 if line[13] == '!': 58 continue 59 60 residue_id = line[6:11].strip() 61 chain = line[11] 62 try: 63 ss = line[16].strip() 64 if ss == '': 65 ss = SecStructures.Gap 66 else: 67 ss = csb.core.Enum.parse(SecStructures, ss) 68 except csb.core.EnumValueError as e: 69 raise UnknownSecStructureError(str(e)) 70 phi = float(line[104 + offset : 109 + offset]) 71 psi = float(line[110 + offset : 115 + offset]) 72 73 74 if chain not in data: 75 data[chain] = {} 76 77 data[chain][residue_id] = ResidueAssignmentInfo(residue_id, accession, chain, ss, phi, psi) 78 79 return data82 """ 83 Simple STRIDE Secondary Structure Parser. 84 """ 85117 11887 """ 88 @param stride_file: source STRIDE file to parse 89 @type stride_file: str 90 @return: a dictionary of L{ResidueAssignmentInfo} objects 91 @rtype: dict 92 """ 93 94 data = {} 95 96 for line in open(stride_file): 97 if line.startswith('ASG '): 98 99 fields = line.split() 100 101 residue_id = fields[3] 102 chain = fields[2] 103 accession = fields[-1].lower() 104 try: 105 ss = csb.core.Enum.parse(SecStructures, fields[5]) 106 except csb.core.EnumValueError as e: 107 raise UnknownSecStructureError(str(e)) 108 phi = float(fields[7]) 109 psi = float(fields[8]) 110 111 if chain not in data: 112 data[chain] = {} 113 114 data[chain][residue_id] = ResidueAssignmentInfo(residue_id, accession, chain, ss, phi, psi) 115 116 return data120 """ 121 Download and parse a DSSP entry. 122 123 @param accession: accession number of the entry 124 @type accession: str 125 @param prefix: download URL prefix 126 @type prefix: str 127 128 @return: see L{DSSPParser.parse} 129 @rtype: dict 130 """ 131 dssp = csb.io.TempFile() 132 133 browser = csb.io.urllib.urlopen(prefix + accession.lower() + '.dssp') 134 dssp.write(browser.read().decode('utf-8')) 135 dssp.flush() 136 137 return DSSPParser().parse(dssp.name)138
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Jul 4 20:19:10 2017 | http://epydoc.sourceforge.net |