Python_scripts/taxref.py

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]