Skip to content

Commit 5676e1f

Browse files
author
Francesca
committed
3-terms-species fix
1 parent b0cbbbb commit 5676e1f

2 files changed

Lines changed: 33 additions & 9 deletions

File tree

thoraxe/transcript_query/transcript_query.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

thoraxe/utils/species.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ def check_species_name(species_name):
1818
>>> check_species_name('homo_sapiens')
1919
True
2020
>>> check_species_name('colobus_angolensis_palliatus')
21-
False
21+
True
2222
>>> check_species_name('cricetulus_griseus_chok1gshd')
23-
False
23+
True
2424
"""
2525
result = re.match('^[a-z]+_[a-z]+(_[0-9a-z]+)?$', species_name)
2626

@@ -30,10 +30,22 @@ def check_species_name(species_name):
3030
' with spaces replaced by underscores e.g. Homo sapiens should be '
3131
f'homo_sapiens. {species_name} do not conform the format.')
3232

33-
if len(species_name.split('_')) != 2:
34-
warnings.warn(
35-
f'Only binomial names are used. Skipping {species_name}.')
36-
return False
33+
# DEPRECATED: trinomial names were previously skipped
34+
# if len(species_name.split('_')) != 2:
35+
# warnings.warn(
36+
# f'Only binomial names are used. Skipping {species_name}.')
37+
# return False
38+
39+
# 3-TERM-SPECIES FIX: accept trinomial names (e.g. anas_platyrhynchos_platyrhynchos)
40+
n_parts = len(species_name.split('_'))
41+
if n_parts < 2:
42+
raise ValueError(
43+
f'Species name must have at least 2 parts (genus_species). '
44+
f'Got: {species_name}')
45+
# if n_parts > 2:
46+
# warnings.warn(
47+
# f'Trinomial species name detected: {species_name}. '
48+
# f'Attempting to use it.')
3749

3850
return True
3951

0 commit comments

Comments
 (0)