#!/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]