comparison commons/core/parsing/AxtParser.py @ 18:94ab73e8a190

Uploaded
author m-zytnicki
date Mon, 29 Apr 2013 03:20:15 -0400
parents 769e306b7933
children 0ab839023fe4
comparison
equal deleted inserted replaced
17:b0e8584489e6 18:94ab73e8a190
91 if line.strip() == "": 91 if line.strip() == "":
92 return None 92 return None
93 93
94 m = re.search(r"^\s*\d+\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+([+-])\s+\d+\s*$", line) 94 m = re.search(r"^\s*\d+\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+([+-])\s+\d+\s*$", line)
95 if m != None: 95 if m != None:
96 #sys.exit("\nLine %d '%s' does not have an AXT format" % (self.currentLineNb, line))
97
98 mapping = Mapping() 96 mapping = Mapping()
99 subMapping = SubMapping() 97 subMapping = SubMapping()
100 98
101 offset = -1 if m.group(7) == "-" else 0
102 subMapping.queryInterval.setName(m.group(4)) 99 subMapping.queryInterval.setName(m.group(4))
103 subMapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))-1) 100 subMapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6))))
104 subMapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))-1) 101 subMapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6))))
105 subMapping.queryInterval.setDirection(m.group(7)) 102 subMapping.queryInterval.setDirection(m.group(7))
106 103
107 subMapping.targetInterval.setChromosome(m.group(1)) 104 subMapping.targetInterval.setChromosome(m.group(1))
108 subMapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))) + offset) 105 subMapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))))
109 subMapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))) + offset) 106 subMapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))))
110 subMapping.targetInterval.setDirection(1) 107 subMapping.targetInterval.setDirection(1)
111 108
112 subMapping.setSize(min(subMapping.targetInterval.getSize(), subMapping.queryInterval.getSize())) 109 subMapping.setSize(min(subMapping.targetInterval.getSize(), subMapping.queryInterval.getSize()))
113 subMapping.setDirection(m.group(7)) 110 subMapping.setDirection(m.group(7))
114 111
115 mapping.addSubMapping(subMapping) 112 mapping.addSubMapping(subMapping)
116 113
117 mapping.setDirection(m.group(7)) 114 mapping.setDirection(m.group(7))
118 mapping.targetInterval.setChromosome(m.group(1)) 115 mapping.targetInterval.setChromosome(m.group(1))
119 mapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))) + offset) 116 mapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))))
120 mapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))) + offset) 117 mapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))))
121 118
122 mapping.queryInterval.setName(m.group(4)) 119 mapping.queryInterval.setName(m.group(4))
123 mapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))-1) 120 mapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6))))
124 mapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))-1) 121 mapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6))))
125 122
126 mapping.setSize(min(mapping.targetInterval.getSize(), mapping.queryInterval.getSize())) 123 mapping.setSize(min(mapping.targetInterval.getSize(), mapping.queryInterval.getSize()))
127 124
128 for line in self.handle:
129 string1 = line.strip()
130 self.currentLineNb += 1
131 break
132 for line in self.handle:
133 string2 = line.strip()
134 self.currentLineNb += 1
135 break
136 mapping.setNbMismatches(Utils.getHammingDistance(string1, string2))
137 mapping.setNbGaps(0)
138
139 self.currentMapping = mapping 125 self.currentMapping = mapping
140 else: 126 return None
141 if self.queryLine == None: 127 if self.queryLine == None:
142 self.queryLine = line 128 self.queryLine = line
143 else: 129 return None
144 self.subjectLine = line 130 self.subjectLine = line
145 seqLen = float(len(self.subjectLine)) 131 seqLen = float(len(self.subjectLine))
146 dist = float(getHammingDistance(self.queryLine, self.subjectLine)) 132 dist = float(getHammingDistance(self.queryLine, self.subjectLine))
147 identity = ((seqLen-dist)/seqLen) *100 133 self.currentMapping.setNbMismatches(getHammingDistance(self.queryLine, self.subjectLine))
148 self.currentMapping.setIdentity(identity) 134 self.currentMapping.setNbGaps(0)
149 self.queryLine = None 135 self.queryLine = None
150 self.subjectLine = None 136 self.subjectLine = None
151 return self.currentMapping 137 return self.currentMapping
152 138
153 139
154 140