Skip to content
Snippets Groups Projects
Commit 8cb241e7 authored by Robert Bossy's avatar Robert Bossy
Browse files

remove taxpath from roots config files

cut-root.py computes the path from the taxid
cut-root.py thus takes an additional argument, the NCBI nodes.dmp file
More robust if a root taxid changes path
parent 6ac7f23e
No related branches found
No related tags found
No related merge requests found
Pipeline #188927 skipped
- name: Hexapoda
taxid: ncbi:6960
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:88770/ncbi:6656/ncbi:197563/ncbi:197562/ncbi:6960
- name: Acari
taxid: ncbi:6933
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:88770/ncbi:6656/ncbi:6843/ncbi:6854/ncbi:6933
- mesh-id: D056893
mesh-tree: B01.043
name: Alveolata
taxid: ncbi:33630
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:33630
- mesh-id: D056894
mesh-tree: B01.046
name: Amoebozoa
taxid: ncbi:554915
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:554915
- mesh-id: D001105
mesh-tree: B02
name: Archaea
taxid: ncbi:2157
taxpath: /ncbi:1/ncbi:131567/ncbi:2157
- mesh-id: D001419
mesh-tree: B03
name: Bacteria
taxid: ncbi:2
taxpath: /ncbi:1/ncbi:131567/ncbi:2
- mesh-id: D000077105
mesh-tree: B01.650.940.150.511
name: Chlamydomonadales
taxid: ncbi:3042
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:3166/ncbi:2812636/ncbi:3042
- mesh-id: D002708
mesh-tree: B01.650.940.150.469
name: Chlorella
taxid: ncbi:3071
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:75966/ncbi:35460/ncbi:35461/ncbi:2511126/ncbi:3071
- mesh-id: D056897
mesh-tree: B01.175
name: Choanoflagellida
taxid: ncbi:28009
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:28009
- mesh-id: D044785
mesh-tree: B01.206
name: Cryptophyta
taxid: ncbi:3027
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:3027
- mesh-id: D058114
mesh-tree: B01.650.940.800.150.200
name: Desmidiales
taxid: ncbi:131210
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:35493/ncbi:131221/ncbi:131209/ncbi:2684882/ncbi:131210
- mesh-id: D016828
mesh-tree: B01.237
name: Diplomonadida
taxid: ncbi:5738
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:207245/ncbi:5738
- mesh-id: D056898
mesh-tree: B01.268
name: Euglenozoa
taxid: ncbi:33682
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611352/ncbi:33682
- mesh-id: D005658
mesh-tree: B01.300
name: Fungi
taxid: ncbi:4751
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:4751
- mesh-id: D058108
mesh-tree: B01.650.232
name: Glaucocystophyceae
taxid: ncbi:38254
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:38254
- mesh-id: D058087
mesh-tree: B01.400
name: Haptophyta
taxid: ncbi:2830
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2608109/ncbi:2830
- mesh-id: D050298
mesh-tree: B01.500
name: Ichthyosporea
taxid: ncbi:127916
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:127916
- mesh-id: D009348
mesh-tree: B01.050.500.500.294
name: Nematoda
taxid: ncbi:6231
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:6231
- mesh-id: D056899
mesh-tree: B01.625
name: Oxymonadida
taxid: ncbi:66288
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:2662611/ncbi:66288
- mesh-id: D056900
mesh-tree: B01.630
name: Parabasalia
taxid: ncbi:5719
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:5719
- mesh-id: D011525
mesh-tree: B01.650.940.150.634
name: Prototheca
taxid: ncbi:3110
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:75966/ncbi:35460/ncbi:35461/ncbi:3110
- mesh-id: D056919
mesh-tree: B01.675
name: Retortamonadidae
taxid: ncbi:193075
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:207245/ncbi:193075
- mesh-id: D056901
mesh-tree: B01.680
name: Rhizaria
taxid: ncbi:543769
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:543769
- mesh-id: D058009
mesh-tree: B01.750
name: Stramenopiles
taxid: ncbi:33634
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:33634
- mesh-id: D014780
mesh-tree: B04
name: Viruses
taxid: ncbi:10239
taxpath: /ncbi:1/ncbi:10239
- mesh-id: D008827
mesh-tree: G06
name: Microbiological Phenomena
......
- name: Mammalia
taxid: ncbi:40674
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33511/ncbi:7711/ncbi:89593/ncbi:7742/ncbi:7776/ncbi:117570/ncbi:117571/ncbi:8287/ncbi:1338369/ncbi:32523/ncbi:32524/ncbi:40674
......@@ -2,117 +2,94 @@
mesh-tree: B01.043
name: Alveolata
taxid: ncbi:33630
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:33630
- mesh-id: D056894
mesh-tree: B01.046
name: Amoebozoa
taxid: ncbi:554915
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:554915
- mesh-id: D001105
mesh-tree: B02
name: Archaea
taxid: ncbi:2157
taxpath: /ncbi:1/ncbi:131567/ncbi:2157
- mesh-id: D001419
mesh-tree: B03
name: Bacteria
taxid: ncbi:2
taxpath: /ncbi:1/ncbi:131567/ncbi:2
- mesh-id: D000077105
mesh-tree: B01.650.940.150.511
name: Chlamydomonadales
taxid: ncbi:3042
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:3166/ncbi:2812636/ncbi:3042
- mesh-id: D002708
mesh-tree: B01.650.940.150.469
name: Chlorella
taxid: ncbi:3071
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:75966/ncbi:35460/ncbi:35461/ncbi:2511126/ncbi:3071
- mesh-id: D056897
mesh-tree: B01.175
name: Choanoflagellida
taxid: ncbi:28009
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:28009
- mesh-id: D044785
mesh-tree: B01.206
name: Cryptophyta
taxid: ncbi:3027
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:3027
- mesh-id: D058114
mesh-tree: B01.650.940.800.150.200
name: Desmidiales
taxid: ncbi:131210
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:35493/ncbi:131221/ncbi:131209/ncbi:2684882/ncbi:131210
- mesh-id: D016828
mesh-tree: B01.237
name: Diplomonadida
taxid: ncbi:5738
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:207245/ncbi:5738
- mesh-id: D056898
mesh-tree: B01.268
name: Euglenozoa
taxid: ncbi:33682
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611352/ncbi:33682
- mesh-id: D005658
mesh-tree: B01.300
name: Fungi
taxid: ncbi:4751
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:4751
- mesh-id: D058108
mesh-tree: B01.650.232
name: Glaucocystophyceae
taxid: ncbi:38254
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:38254
- mesh-id: D058087
mesh-tree: B01.400
name: Haptophyta
taxid: ncbi:2830
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2608109/ncbi:2830
- mesh-id: D050298
mesh-tree: B01.500
name: Ichthyosporea
taxid: ncbi:127916
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:127916
- mesh-id: D009348
mesh-tree: B01.050.500.500.294
name: Nematoda
taxid: ncbi:6231
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:6231
- mesh-id: D056899
mesh-tree: B01.625
name: Oxymonadida
taxid: ncbi:66288
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:2662611/ncbi:66288
- mesh-id: D056900
mesh-tree: B01.630
name: Parabasalia
taxid: ncbi:5719
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:5719
- mesh-id: D011525
mesh-tree: B01.650.940.150.634
name: Prototheca
taxid: ncbi:3110
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:3041/ncbi:2692248/ncbi:75966/ncbi:35460/ncbi:35461/ncbi:3110
- mesh-id: D056919
mesh-tree: B01.675
name: Retortamonadidae
taxid: ncbi:193075
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2611341/ncbi:207245/ncbi:193075
- mesh-id: D056901
mesh-tree: B01.680
name: Rhizaria
taxid: ncbi:543769
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:543769
- mesh-id: D058009
mesh-tree: B01.750
name: Stramenopiles
taxid: ncbi:33634
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:2698737/ncbi:33634
- mesh-id: D014780
mesh-tree: B04
name: Viruses
taxid: ncbi:10239
taxpath: /ncbi:1/ncbi:10239
- mesh-id: D008827
mesh-tree: G06
name: Microbiological Phenomena
......
- name: Spermatophyta
taxid: ncbi:58024
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33090/ncbi:35493/ncbi:131221/ncbi:3193/ncbi:58023/ncbi:78536/ncbi:58024
- name: Hexapoda
taxid: ncbi:6960
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:88770/ncbi:6656/ncbi:197563/ncbi:197562/ncbi:6960
- name: Arachnida
taxid: ncbi:6854
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:88770/ncbi:6656/ncbi:6843/ncbi:6854
- mesh-id: D009348
mesh-tree: B01.050.500.500.294
name: Nematoda
taxid: ncbi:6231
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:33208/ncbi:6072/ncbi:33213/ncbi:33317/ncbi:1206794/ncbi:6231
- mesh-id: D005658
mesh-tree: B01.300
name: Fungi
taxid: ncbi:4751
taxpath: /ncbi:1/ncbi:131567/ncbi:2759/ncbi:33154/ncbi:4751
......@@ -19,10 +19,11 @@ rule microorganisms:
input:
full=config['OUTDIR'] + '/{p}_full.txt',
roots='resources/microorganisms-roots.yaml'
roots='resources/microorganisms-roots.yaml',
nodes=config['OUTDIR'] + '/' + config['NCBI_DIR'] + '/nodes.dmp'
shell:
'''scripts/cut-root.py {input.roots} <{input.full} >{output}'''
'''scripts/cut-root.py {input.nodes} {input.roots} <{input.full} >{output}'''
rule taxaid_full:
......
......@@ -4,25 +4,34 @@
import sys
import re
import yaml
import taxutils
ROOT_FILE = sys.argv[1]
ROOT_CANDIDATES = []
TAXO_FILE = sys.argv[1]
with (open(TAXO_FILE) as f):
TAXO = taxutils.NCBIParser.read_node_file(f)
TAXO.resolve_parents()
ROOT_FILE = sys.argv[2]
ROOT_CANDIDATES: list
with open(ROOT_FILE) as f:
ROOT_CANDIDATES = list((e['name'], e['taxpath']) for e in yaml.load(f, Loader=yaml.FullLoader) if 'taxpath' in e)
ROOT_CANDIDATES = list((e['name'], TAXO.get_taxon(e['taxid'])) for e in yaml.load(f, Loader=yaml.FullLoader) if 'taxid' in e)
ROOTS = []
for name1, path1 in ROOT_CANDIDATES:
for name1, taxon1 in ROOT_CANDIDATES:
accept = True
for name2, path2 in ROOT_CANDIDATES:
if path1 == path2 and name1 == path2:
for name2, taxon2 in ROOT_CANDIDATES:
if taxon1 == taxon2 and name1 == name2:
continue
if path1.startswith(path2 + '/'):
if taxon1 in taxon2.ancestors():
sys.stderr.write('%s excluded since it is subsumed by %s\n' % (name1, name2))
accept = False
if accept:
sys.stderr.write('Root %s (%s)\n' % (name1, path1))
ROOTS.append((name1, path1))
sys.stderr.write('Root %s (%s)\n' % (name1, taxon1.path))
ROOTS.append((name1, taxon1.path))
PATTERN = re.compile(r'\t(?:' + '|'.join(path for (name, path) in ROOTS) + r')[/\t]')
REMAIN = list(ROOTS)
......@@ -34,4 +43,4 @@ for line in sys.stdin:
if path in line:
REMAIN.remove((name, path))
for name, path in REMAIN:
sys.stderr.write('%s not seen' % (name,))
sys.stderr.write('%s not seen\n' % (name,))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment