BiodiversiteQuebec / bdqc_taxa

`BIOQC-taxa` is a python package that interface with *Biodiversité Québec*'s database to query reference taxa sources, parse their return and generate records.
0 stars 0 forks source link

Verify failed taxa_obs injection to taxa_ref #31

Open BenMerSci opened 1 week ago

BenMerSci commented 1 week ago

A couple (172) of taxa_obs fail to be injected into taxa_ref, and probably for a couple of different reasons. Vincent suggests that it might either be because of:

  1. No matches were found
  2. Bug in bdqc_taxa

To investigate to clarify the problem within bdqc_taxa

BenMerSci commented 1 week ago

Toutes (6) les espèces hybrides dans taxa_obs (avec un x) sont rejetés dans l'injection vers taxa_ref parce que dans le match avec GBIF on link "scientific_name": result["canonicalName"] mais aucun canonicalName n'est renvoyé pour les espèces hybrides, ce qui renvoit une erreur.

Exemple: Anas platyrhynchos x acuta Salix alba x fragilis Rorippa amphibia x sylvestris Fragaria vesca x viridis Anas americana x penelope Anas rubripes x platyrhynchos

name='Oligosphaerales', parent_taxa='Verrucomicrobiota'

et pour certains autres taxa_obs non-hybrides, il n'y a pas de matchedCanonicalFull de global_names: name='Ampelovirus', parent_taxa='Kitrinoviricota' name='Dinocampus coccinellae paralysis virus', parent_taxa='Pisuviricota' name='Alphainfluenzavirus', parent_taxa='Negarnaviricota' name='Asteriusvirus', authorship='', parent_taxa='Uroviricota'

et pour certains autrees taxa_obs non-hybrides, il n'y a pas de canonicalName de gbif: name='Vulcaniibacterium_B', authorship='', parent_taxa='Proteobacteria'

BenMerSci commented 1 week ago

Pour certains taxa_obs, ils ne sont pas injectés dans taxa_ref parce que dans la fonction prune_parent_taxa, le parent_scientific_name en input ne se retrouve pas dans la liste de match dans taxa_ref_list et donc rien ne se retrouve dans parent_srids et keep_ids:

for ref in taxa_ref_list:
            if ref.scientific_name == parent_taxa:
                # Extend set of parent_srids
                parent_srids.append(ref.source_record_id)

                # Extend grand_parent_srids
                keep_ids.update(ref.classification_srids[:-1])

example: name='Dietzia', parent_taxa='Actinobacteriota' name='Gordonia', parent_taxa='Actinobacteriota' name='Rozella', parent_taxa='Ascomycota' name='Gordonia amicalis', parent_taxa='Actinobacteriota' name='Cepheidae', parent_taxa='Arthropoda' name='Limnophila', parent_taxa='Mollusca' name='Waldheimia', parent_taxa='Arthropoda'

Do I simply manually change their parent_scientific_name for the right one, so it doesn't fail in prune_parent_taxa?

BenMerSci commented 1 week ago

Pour certains taxons, il manque un champs dans lequel itérer comme classificationRanks pour VASCAN:

name='Carex bipartita', authorship='All.', parent_taxa='Tracheophyta' name='Dryopteris spinulosa var. americana', authorship='(Fisch. ex Kunze) Fernald', parent_taxa='Tracheophyta' name='Malva rotundifolia', authorship='L.', parent_taxa='Tracheophyta' name='Amaranthus graecizans', authorship='L.', parent_taxa='Tracheophyta' name='Carex sublimosa', authorship='Lepage', parent_taxa='Tracheophyta'

La raison est que le match avec VASCAN pour ces espèces renvoie taxonomicStatus: Synonym et comme le recordID actuel renvoie vers 2 différents currentRecordID. Donc aucune information n'est retournée par l'API puisqu'il ne sait pas quel synonyme des deux on veut...

BenMerSci commented 1 week ago

Other taxa_obs are just not written properly and get no matches: name='Pseudossucinea', parent_taxa='Mollusca'

BenMerSci commented 3 days ago

Just no matches:

name='Abia', authorship='', parent_taxa='Arthropoda' (if you provide the information that the rank is genus to gbif API species/match, you get a match... to be discussed)

name='Caecidota', authorship='', parent_taxa='Arthropoda' name='Tricholinocera', authorship='', parent_taxa='Arthropoda' name='Zigoptera', authorship='', parent_taxa='Arthropoda'