96 lines
2.3 KiB
Python
96 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: UTF-8 -*-
|
|
#Nom : : taxref.py
|
|
#Description :
|
|
#Copyright : 2021, CEN38
|
|
#Auteur : Colas Geier
|
|
#Version : 1.0
|
|
|
|
|
|
import pandas as pd
|
|
|
|
PATHIN = '~/Documents/5_BDD/TAXON/TAXREF/TAXREF_V14_2020/'
|
|
FILE = 'TAXREFv14.txt'
|
|
sep = '\t'
|
|
LB_NOM = 'Taraxacum bulbosum'
|
|
|
|
df = pd.read_csv(PATHIN+FILE, sep = sep)
|
|
|
|
# tar = df[df.LB_NOM.str.contains('Taraxacum')].iloc[:,:15]
|
|
# tarbulb = tar[tar.LB_NOM == 'Taraxacum bulbosum']
|
|
# taxref = df[df.CD_NOM == tarbulb.CD_REF]
|
|
|
|
# lst_taxon = df[df.LB_NOM.str.contains('Taraxacum') & df.RANG.str.fullmatch('ES')].iloc[:,:15].CD_NOM
|
|
|
|
|
|
esp2 = df[df.LB_NOM == LB_NOM]
|
|
df2 = df3 = esp3 = esp2
|
|
rang3 = rang2 = esp2.RANG.values[0]
|
|
|
|
|
|
def get_taxonomie (taxon, taxref, detail = False):
|
|
# Définition du niveau de détail
|
|
if detail:
|
|
cd_taxsup = 'CD_SUP'
|
|
else:
|
|
cd_taxsup = 'CD_TAXSUP'
|
|
|
|
esp = taxref[taxref.CD_NOM == taxon]
|
|
esp_nom = esp.LB_NOM.values[0]
|
|
|
|
# Récupértation de l'espèce de référence
|
|
if esp.CD_NOM.equals(esp.CD_REF) :
|
|
print('OK')
|
|
espref = esp
|
|
else:
|
|
espref = taxref[taxref.CD_NOM == esp.CD_REF.values[0]]
|
|
|
|
esptemp = esp
|
|
rang = esp.RANG.values[0]
|
|
|
|
# Récupération de la taxonomie
|
|
while (rang != 'KD'):
|
|
reftemp = taxref[taxref.CD_NOM == esptemp.CD_REF.values[0]]
|
|
taxsup = taxref[taxref.CD_NOM == reftemp[cd_taxsup].values[0]]
|
|
esptemp = taxsup
|
|
rang = esptemp.RANG.values[0]
|
|
esp = esp.combine_first(taxsup)
|
|
|
|
# Transpose les noms de rangs en ligne
|
|
tmp = esp[['RANG', 'LB_NOM']]
|
|
tmp.set_index('RANG', inplace=True)
|
|
tmp = tmp.T
|
|
tmp.columns.name = None
|
|
tmp.reset_index(drop=True, inplace=True)
|
|
id_cdnom = esp.columns.to_list().index('CD_NOM')
|
|
esp = esp[esp.LB_NOM == esp_nom].iloc[:,id_cdnom:]
|
|
esp.reset_index(drop=True, inplace=True)
|
|
tmp.join(esp, how='outer')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (rang2 != 'KD'):
|
|
print(rang2)
|
|
espref = df[df.CD_NOM == esp2.CD_REF.values[0]]
|
|
taxsup = df[df.CD_NOM == espref.CD_TAXSUP.to_list()[0]]
|
|
esp2 = taxsup
|
|
rang2 = esp2.RANG.to_list()[0]
|
|
df2 = pd.concat([df2, taxsup])
|
|
|
|
df2.iloc[:,:15]
|
|
|
|
while (rang3 != 'KD'):
|
|
print(rang3)
|
|
espref = df[df.CD_NOM == esp3.CD_REF.to_list()[0]]
|
|
taxsup = df[df.CD_NOM == espref.CD_SUP.to_list()[0]]
|
|
esp3 = taxsup
|
|
rang3 = esp3.RANG.to_list()[0]
|
|
df3 = pd.concat([df3, taxsup])
|
|
|
|
df3.iloc[:,:15]
|