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 """ 317933 """ 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 44 for line in open(dssp_file): 45 46 if not start: 47 48 if line.startswith('HEADER'): 49 accession = line[62:66].strip().lower() 50 51 elif line.startswith(' # RESIDUE'): 52 if len(line) >= 140: 53 offset = 4 # the new DSSP format 54 start = True 55 else: 56 if line[13] == '!': 57 continue 58 59 residue_id = line[6:11].strip() 60 chain = line[11] 61 try: 62 ss = line[16].strip() 63 if ss == '': 64 ss = SecStructures.Gap 65 else: 66 ss = csb.core.Enum.parse(SecStructures, ss) 67 except csb.core.EnumValueError as e: 68 raise UnknownSecStructureError(str(e)) 69 phi = float(line[104 + offset : 109 + offset]) 70 psi = float(line[110 + offset : 115 + offset]) 71 72 73 if chain not in data: 74 data[chain] = {} 75 76 data[chain][residue_id] = ResidueAssignmentInfo(residue_id, accession, chain, ss, phi, psi) 77 78 return data81 """ 82 Simple STRIDE Secondary Structure Parser. 83 """ 84116 11786 """ 87 @param stride_file: source STRIDE file to parse 88 @type stride_file: str 89 @return: a dictionary of L{ResidueAssignmentInfo} objects 90 @rtype: dict 91 """ 92 93 data = {} 94 95 for line in open(stride_file): 96 if line.startswith('ASG '): 97 98 fields = line.split() 99 100 residue_id = fields[3] 101 chain = fields[2] 102 accession = fields[-1].lower() 103 try: 104 ss = csb.core.Enum.parse(SecStructures, fields[5]) 105 except csb.core.EnumValueError as e: 106 raise UnknownSecStructureError(str(e)) 107 phi = float(fields[7]) 108 psi = float(fields[8]) 109 110 if chain not in data: 111 data[chain] = {} 112 113 data[chain][residue_id] = ResidueAssignmentInfo(residue_id, accession, chain, ss, phi, psi) 114 115 return data119 """ 120 Download and parse a DSSP entry. 121 122 @param accession: accession number of the entry 123 @type accession: str 124 @param prefix: download URL prefix 125 @type prefix: str 126 127 @return: see L{DSSPParser.parse} 128 @rtype: dict 129 """ 130 dssp = csb.io.TempFile() 131 132 browser = csb.io.urllib.urlopen(prefix + accession.lower() + '.dssp') 133 dssp.write(browser.read().decode('utf-8')) 134 dssp.flush() 135 136 return DSSPParser().parse(dssp.name)137
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sun Jul 7 23:29:49 2013 | http://epydoc.sourceforge.net |