|
20 | 20 |
|
21 | 21 |
|
22 | 22 | import itertools |
23 | | -from . import _utils_subhog |
24 | | -from ._wrappers import logger |
| 23 | +from . import _utils_subhog, logger |
| 24 | + |
25 | 25 |
|
26 | 26 | # from .infer_subhogs import conf_infer_subhhogs #fastoma_infer_subhogs # |
27 | 27 |
|
@@ -144,6 +144,9 @@ def taxlevel(self): |
144 | 144 | def rhogid(self): |
145 | 145 | return self._rhogid |
146 | 146 |
|
| 147 | + def __len__(self): |
| 148 | + return len(self._members) |
| 149 | + |
147 | 150 | def get_members(self): |
148 | 151 | return set(self._members) |
149 | 152 |
|
@@ -334,10 +337,17 @@ def _sorter_key(sh): |
334 | 337 | elif len(element_list) > 1: |
335 | 338 | #hog_elemnt = ET.Element('orthologGroup', attrib={"id": str(self._hogid)}) |
336 | 339 | hog_elemnt = ET.Element('orthologGroup', attrib={"id": str(self._hogid)}, ) |
337 | | - num_species_tax_hog = len(set([i.split("||")[1] for i in self._members])) # 'tr|H2MU14|H2MU14_ORYLA||ORYLA||1056022282' |
338 | | - completeness_score = round(num_species_tax_hog/self._tax_now.size, 4) |
| 340 | + species_of_members = set([i.split("||")[1] for i in self._members]) # 'tr|H2MU14|H2MU14_ORYLA||ORYLA||1056022282' |
| 341 | + num_species_tax_hog = len(species_of_members) |
| 342 | + mrca = self.taxlevel.get_common_ancestor( |
| 343 | + *[self.taxlevel.search_nodes(name=x)[0] for x in species_of_members]) |
| 344 | + if mrca != self.taxlevel: |
| 345 | + logger.info(f"mrca ({mrca.name}) != self.taxlevel ({self.taxlevel.name})") |
| 346 | + logger.info(f"<{hog_elemnt.tag} {hog_elemnt.attrib}>") |
| 347 | + |
| 348 | + completeness_score = round(num_species_tax_hog/mrca.size, 4) |
339 | 349 | property_element = ET.SubElement(hog_elemnt, "score", attrib={"id": "CompletenessScore", "value": str(completeness_score)}) |
340 | | - property_element = ET.SubElement(hog_elemnt, "property", attrib={"name": "TaxRange", "value": str(self._tax_now.name)}) |
| 350 | + property_element = ET.SubElement(hog_elemnt, "property", attrib={"name": "TaxRange", "value": str(mrca.name)}) |
341 | 351 |
|
342 | 352 | for element in element_list: |
343 | 353 | hog_elemnt.append(element) |
|
0 commit comments