In [2]:
Copied!
import os
from typing import List
from pprint import pprint
from biokb_wcvp import get_session
from biokb_wcvp import models
from biokb_wcvp.api import schemas
_ = os.environ.pop(
"CONNECTION_STR", None
) # to make sure no environment variable is used
import os
from typing import List
from pprint import pprint
from biokb_wcvp import get_session
from biokb_wcvp import models
from biokb_wcvp.api import schemas
_ = os.environ.pop(
"CONNECTION_STR", None
) # to make sure no environment variable is used
Query and search data¶
BioKb-WCVP uses SQLAlchemy to define the database schema for storing plant data from the WCVP database. The following diagram illustrates the main entities and their relationships:
The central entity in the data model is the Plant, which represents a plant in WCVP.
Overview¶
You can query the database using SQLAlchemy's ORM capabilities. Below are some example queries to get you started.
First import the data using the import_data function. You can skip this This will download the ChEBI data files, parse them, and populate the database. Depending on your system and internet connection, this may take some time.
In [ ]:
Copied!
from biokb_wcvp import import_data
import_data()
from biokb_wcvp import import_data
import_data()
In [3]:
Copied!
with get_session() as session:
plants: List[models.Plant] = session.query(models.Plant).limit(3).all()
for plant in plants:
pprint(schemas.Plant.model_validate(plant).model_dump())
with get_session() as session:
plants: List[models.Plant] = session.query(models.Plant).limit(3).all()
for plant in plants:
pprint(schemas.Plant.model_validate(plant).model_dump())
INFO:biokb_wcvp.db.manager:Using database connection: sqlite:////home/ceb/.biokb/biokb.db
{'accepted_plant_name_id': 1,
'basionym_plant_name_id': None,
'climate_description': None,
'family': 'Orchidaceae',
'first_published': '(1854)',
'genus': 'Aa',
'genus_hybrid': None,
'geographic_area': 'Costa Rica to NW. Venezuela and N. Argentina',
'homotypic_synonym': None,
'hybrid_formula': None,
'infraspecies': None,
'infraspecific_rank': None,
'ipni_id': '28572-1',
'lifeform_description': None,
'locations': [{'area': 'Costa Rica',
'code_l1': 8,
'code_l2': 80,
'code_l3': 'COS',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394111,
'introduced': False,
'location_doubtful': False,
'region': 'Central America',
'wcvp_plant_id': 1},
{'area': 'Venezuela',
'code_l1': 8,
'code_l2': 82,
'code_l3': 'VEN',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394112,
'introduced': False,
'location_doubtful': False,
'region': 'Northern South America',
'wcvp_plant_id': 1},
{'area': 'Bolivia',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'BOL',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394113,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 1},
{'area': 'Colombia',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'CLM',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394114,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 1},
{'area': 'Ecuador',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'ECU',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394115,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 1},
{'area': 'Peru',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'PER',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394116,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 1},
{'area': 'Brazil North',
'code_l1': 8,
'code_l2': 84,
'code_l3': 'BZN',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394117,
'introduced': False,
'location_doubtful': False,
'region': 'Brazil',
'wcvp_plant_id': 1},
{'area': 'Argentina Northeast',
'code_l1': 8,
'code_l2': 85,
'code_l3': 'AGE',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394118,
'introduced': False,
'location_doubtful': False,
'region': 'Southern South America',
'wcvp_plant_id': 1},
{'area': 'Argentina Northwest',
'code_l1': 8,
'code_l2': 85,
'code_l3': 'AGW',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 1394119,
'introduced': False,
'location_doubtful': False,
'region': 'Southern South America',
'wcvp_plant_id': 1}],
'nomenclatural_remarks': None,
'parent_plant_name_id': None,
'parenthetical_author': None,
'place_of_publication': 'Xenia Orchid.',
'plant_name_id': 1,
'powo_id': '28572-1',
'primary_author': 'Rchb.f.',
'publication_author': None,
'replaced_synonym_author': None,
'reviewed': True,
'species': None,
'species_hybrid': None,
'tax_id': None,
'taxon_authors': 'Rchb.f.',
'taxon_name': 'Aa',
'taxon_rank': 'Genus',
'taxon_status': 'Accepted',
'volume_and_page': ' 1: 18'}
{'accepted_plant_name_id': 2,
'basionym_plant_name_id': None,
'climate_description': 'subtropical',
'family': 'Orchidaceae',
'first_published': '(1920)',
'genus': 'Aa',
'genus_hybrid': None,
'geographic_area': 'NC. Argentina (La Rioja, San Luis, Córdoba)',
'homotypic_synonym': None,
'hybrid_formula': None,
'infraspecies': None,
'infraspecific_rank': None,
'ipni_id': '303631-2',
'lifeform_description': 'tuberous geophyte',
'locations': [{'area': 'Argentina Northeast',
'code_l1': 8,
'code_l2': 85,
'code_l3': 'AGE',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 90323,
'introduced': False,
'location_doubtful': False,
'region': 'Southern South America',
'wcvp_plant_id': 2},
{'area': 'Argentina Northwest',
'code_l1': 8,
'code_l2': 85,
'code_l3': 'AGW',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 90324,
'introduced': False,
'location_doubtful': False,
'region': 'Southern South America',
'wcvp_plant_id': 2}],
'nomenclatural_remarks': None,
'parent_plant_name_id': 1,
'parenthetical_author': None,
'place_of_publication': 'Repert. Spec. Nov. Regni Veg.',
'plant_name_id': 2,
'powo_id': '303631-2',
'primary_author': 'Schltr.',
'publication_author': None,
'replaced_synonym_author': None,
'reviewed': True,
'species': 'achalensis',
'species_hybrid': None,
'tax_id': None,
'taxon_authors': 'Schltr.',
'taxon_name': 'Aa achalensis',
'taxon_rank': 'Species',
'taxon_status': 'Accepted',
'volume_and_page': ' 16: 358'}
{'accepted_plant_name_id': 3,
'basionym_plant_name_id': None,
'climate_description': 'subalpine or subarctic',
'family': 'Orchidaceae',
'first_published': '(1854)',
'genus': 'Aa',
'genus_hybrid': None,
'geographic_area': 'W. South America to N. Brazil',
'homotypic_synonym': None,
'hybrid_formula': None,
'infraspecies': None,
'infraspecific_rank': None,
'ipni_id': '614525-1',
'lifeform_description': 'tuberous geophyte',
'locations': [{'area': 'Colombia',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'CLM',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 90325,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 3},
{'area': 'Ecuador',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'ECU',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 90326,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 3},
{'area': 'Peru',
'code_l1': 8,
'code_l2': 83,
'code_l3': 'PER',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 499400,
'introduced': False,
'location_doubtful': False,
'region': 'Western South America',
'wcvp_plant_id': 3},
{'area': 'Brazil North',
'code_l1': 8,
'code_l2': 84,
'code_l3': 'BZN',
'continent': 'SOUTHERN AMERICA',
'extinct': False,
'id': 499401,
'introduced': False,
'location_doubtful': False,
'region': 'Brazil',
'wcvp_plant_id': 3}],
'nomenclatural_remarks': None,
'parent_plant_name_id': 1,
'parenthetical_author': None,
'place_of_publication': 'Xenia Orchid.',
'plant_name_id': 3,
'powo_id': '614525-1',
'primary_author': 'Rchb.f.',
'publication_author': None,
'replaced_synonym_author': None,
'reviewed': True,
'species': 'argyrolepis',
'species_hybrid': None,
'tax_id': None,
'taxon_authors': 'Rchb.f.',
'taxon_name': 'Aa argyrolepis',
'taxon_rank': 'Species',
'taxon_status': 'Accepted',
'volume_and_page': ' 1: 18'}