Mercurial > repos > yufei-luo > s_mart
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 |