@@ -230,10 +230,20 @@ def _species2ensembldataset(species_name):
230230
231231 >>> _species2ensembldataset('homo_sapiens')
232232 ['hsapiens_gene_ensembl', 'hsapiens_eg_gene']
233+ >>> _species2ensembldataset('anas_platyrhynchos_platyrhynchos')
234+ ['applatyrhynchos_gene_ensembl', 'applatyrhynchos_eg_gene']
233235 """
234236 utils .species .check_species_name (species_name )
235237 names = species_name .split ("_" )
236- species = names [0 ][0 ] + names [1 ]
238+ # DEPRECATED: only handled binomial names
239+ # species = names[0][0] + names[1]
240+ # 3-TERM-SPECIES FIX: handle both binomial and trinomial names
241+ # Binomial: homo_sapiens -> hsapiens
242+ # Trinomial: canis_lupus_familiaris -> clfamiliaris
243+ if len (names ) == 2 :
244+ species = names [0 ][0 ] + names [1 ]
245+ else :
246+ species = names [0 ][0 ] + names [1 ][0 ] + "" .join (names [2 :])
237247 return [species + "_gene_ensembl" , species + "_eg_gene" ]
238248
239249
@@ -450,8 +460,10 @@ def get_orthologs(species, ensgeneid, **params):
450460 if not dortho :
451461 raise Exception (
452462 f"Ensembl does not have annotated orthologs for { ensgeneid } " )
453- # keep only binomial species names:
454- dortho = [d for d in dortho if len (d ['target' ]['species' ].split ('_' )) == 2 ]
463+ # DEPRECATED: used to keep only binomial species names
464+ # dortho = [d for d in dortho if len(d['target']['species'].split('_')) == 2]
465+ # 3-TERM-SPECIES FIX: keep binomial and trinomial species names (>= 2 parts)
466+ dortho = [d for d in dortho if len (d ['target' ]['species' ].split ('_' )) >= 2 ]
455467 return dortho
456468
457469
0 commit comments