comparison commons/core/parsing/AxtParser.py @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
comparison
equal deleted inserted replaced
30:5677346472b5 31:0ab839023fe4
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
96 mapping = Mapping() 98 mapping = Mapping()
97 subMapping = SubMapping() 99 subMapping = SubMapping()
98 100
101 offset = -1 if m.group(7) == "-" else 0
99 subMapping.queryInterval.setName(m.group(4)) 102 subMapping.queryInterval.setName(m.group(4))
100 subMapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))) 103 subMapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))-1)
101 subMapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))) 104 subMapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))-1)
102 subMapping.queryInterval.setDirection(m.group(7)) 105 subMapping.queryInterval.setDirection(m.group(7))
103 106
104 subMapping.targetInterval.setChromosome(m.group(1)) 107 subMapping.targetInterval.setChromosome(m.group(1))
105 subMapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3)))) 108 subMapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))) + offset)
106 subMapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3)))) 109 subMapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))) + offset)
107 subMapping.targetInterval.setDirection(1) 110 subMapping.targetInterval.setDirection(1)
108 111
109 subMapping.setSize(min(subMapping.targetInterval.getSize(), subMapping.queryInterval.getSize())) 112 subMapping.setSize(min(subMapping.targetInterval.getSize(), subMapping.queryInterval.getSize()))
110 subMapping.setDirection(m.group(7)) 113 subMapping.setDirection(m.group(7))
111 114
112 mapping.addSubMapping(subMapping) 115 mapping.addSubMapping(subMapping)
113 116
114 mapping.setDirection(m.group(7)) 117 mapping.setDirection(m.group(7))
115 mapping.targetInterval.setChromosome(m.group(1)) 118 mapping.targetInterval.setChromosome(m.group(1))
116 mapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3)))) 119 mapping.targetInterval.setStart(min(int(m.group(2)), int(m.group(3))) + offset)
117 mapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3)))) 120 mapping.targetInterval.setEnd(max(int(m.group(2)), int(m.group(3))) + offset)
118 121
119 mapping.queryInterval.setName(m.group(4)) 122 mapping.queryInterval.setName(m.group(4))
120 mapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))) 123 mapping.queryInterval.setStart(min(int(m.group(5)), int(m.group(6)))-1)
121 mapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))) 124 mapping.queryInterval.setEnd(max(int(m.group(5)), int(m.group(6)))-1)
122 125
123 mapping.setSize(min(mapping.targetInterval.getSize(), mapping.queryInterval.getSize())) 126 mapping.setSize(min(mapping.targetInterval.getSize(), mapping.queryInterval.getSize()))
124 127
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
125 self.currentMapping = mapping 139 self.currentMapping = mapping
126 return None 140 else:
127 if self.queryLine == None: 141 if self.queryLine == None:
128 self.queryLine = line 142 self.queryLine = line
129 return None 143 else:
130 self.subjectLine = line 144 self.subjectLine = line
131 seqLen = float(len(self.subjectLine)) 145 seqLen = float(len(self.subjectLine))
132 dist = float(getHammingDistance(self.queryLine, self.subjectLine)) 146 dist = float(getHammingDistance(self.queryLine, self.subjectLine))
133 self.currentMapping.setNbMismatches(getHammingDistance(self.queryLine, self.subjectLine)) 147 identity = ((seqLen-dist)/seqLen) *100
134 self.currentMapping.setNbGaps(0) 148 self.currentMapping.setIdentity(identity)
135 self.queryLine = None 149 self.queryLine = None
136 self.subjectLine = None 150 self.subjectLine = None
137 return self.currentMapping 151 return self.currentMapping
138 152
139 153
140 154