{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "36ffdd0e", "metadata": {}, "source": [ "# Tutorial 2: Taxa\n", "[](https://mybinder.org/v2/gh/pyinat/pyinaturalist/main?filepath=examples%2FTutorial_2_Taxa.ipynb)\n", "\n", "This notebook will give a quick introduction to searching taxa." ] }, { "cell_type": "code", "execution_count": 1, "id": "1b7ffb09", "metadata": {}, "outputs": [], "source": [ "from rich import print\n", "\n", "from pyinaturalist import (\n", " enable_logging,\n", " iNatClient,\n", " pprint,\n", ")\n", "\n", "enable_logging()\n", "client = iNatClient()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "3bd30a71", "metadata": {}, "source": [ "## Basic taxon search\n", "The [taxa search](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.controllers.TaxonController.html#pyinaturalist.controllers.TaxonController.search)\n", "can be used to search by name, rank, and several other criteria.\n", "Let's say you partially remember either a genus or family name that started with **'vespi'**-something.\n", "Use the `q` parameter to search by name:" ] }, { "cell_type": "code", "execution_count": 2, "id": "60e719b3", "metadata": {}, "outputs": [], "source": [ "taxa = client.taxa.search(q='vespi', rank=['genus', 'family']).all()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9dca3b13", "metadata": {}, "source": [ "## Taxon data\n", "As with observations, there is a lot of information in the response:" ] }, { "cell_type": "code", "execution_count": 3, "id": "3f53d34f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Taxon(\n", " id=52747,\n", " ancestor_ids=[48460, 1, 47120, 372739, 47158, 184884, 47201, 124417, 326777, 48740, 52747],\n", " extinct=False,\n", " iconic_taxon_id=47158,\n", " iconic_taxon_name='Insecta',\n", " is_active=True,\n", " matched_term='Vespidae',\n", " name='Vespidae',\n", " observations_count=1246088,\n", " parent_id=48740,\n", " preferred_common_name='Hornets, Paper Wasps, Potter Wasps, and Allies',\n", " rank_level=30,\n", " rank='family',\n", " taxon_changes_count=0,\n", " taxon_schemes_count=2,\n", " wikipedia_url='http://en.wikipedia.org/wiki/Vespidae',\n", " ancestors=[],\n", " children=[],\n", " conservation_status=None,\n", " conservation_statuses=[],\n", " default_photo=Photo(\n", " id=26329814,\n", " license_code='CC-BY-SA',\n", " url='https://inaturalist-open-data.s3.amazonaws.com/photos/26329814/square.jpg'\n", " ),\n", " establishment_means=None,\n", " listed_taxa=[],\n", " taxon_photos=[]\n", ")\n", "\n" ], "text/plain": [ "\u001b[1;35mTaxon\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mid\u001b[0m=\u001b[1;36m52747\u001b[0m,\n", " \u001b[33mancestor_ids\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m48460\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m47120\u001b[0m, \u001b[1;36m372739\u001b[0m, \u001b[1;36m47158\u001b[0m, \u001b[1;36m184884\u001b[0m, \u001b[1;36m47201\u001b[0m, \u001b[1;36m124417\u001b[0m, \u001b[1;36m326777\u001b[0m, \u001b[1;36m48740\u001b[0m, \u001b[1;36m52747\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[33mextinct\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", " \u001b[33miconic_taxon_id\u001b[0m=\u001b[1;36m47158\u001b[0m,\n", " \u001b[33miconic_taxon_name\u001b[0m=\u001b[32m'Insecta'\u001b[0m,\n", " \u001b[33mis_active\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", " \u001b[33mmatched_term\u001b[0m=\u001b[32m'Vespidae'\u001b[0m,\n", " \u001b[33mname\u001b[0m=\u001b[32m'Vespidae'\u001b[0m,\n", " \u001b[33mobservations_count\u001b[0m=\u001b[1;36m1246088\u001b[0m,\n", " \u001b[33mparent_id\u001b[0m=\u001b[1;36m48740\u001b[0m,\n", " \u001b[33mpreferred_common_name\u001b[0m=\u001b[32m'Hornets, Paper Wasps, Potter Wasps, and Allies'\u001b[0m,\n", " \u001b[33mrank_level\u001b[0m=\u001b[1;36m30\u001b[0m,\n", " \u001b[33mrank\u001b[0m=\u001b[32m'family'\u001b[0m,\n", " \u001b[33mtaxon_changes_count\u001b[0m=\u001b[1;36m0\u001b[0m,\n", " \u001b[33mtaxon_schemes_count\u001b[0m=\u001b[1;36m2\u001b[0m,\n", " \u001b[33mwikipedia_url\u001b[0m=\u001b[32m'http://en.wikipedia.org/wiki/Vespidae'\u001b[0m,\n", " \u001b[33mancestors\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[33mchildren\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[33mconservation_status\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", " \u001b[33mconservation_statuses\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[33mdefault_photo\u001b[0m=\u001b[1;35mPhoto\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mid\u001b[0m=\u001b[1;36m26329814\u001b[0m,\n", " \u001b[33mlicense_code\u001b[0m=\u001b[32m'CC-BY-SA'\u001b[0m,\n", " \u001b[33murl\u001b[0m=\u001b[32m'https://inaturalist-open-data.s3.amazonaws.com/photos/26329814/square.jpg'\u001b[0m\n", " \u001b[1m)\u001b[0m,\n", " \u001b[33mestablishment_means\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", " \u001b[33mlisted_taxa\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[33mtaxon_photos\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n", "\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(taxa[0])" ] }, { "attachments": {}, "cell_type": "markdown", "id": "4020d25d", "metadata": {}, "source": [ "## Previewing data\n", "And we can get a condensed preview with `pprint()`:" ] }, { "cell_type": "code", "execution_count": 4, "id": "2cb9732e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n",
" ID Rank Scientific name Common name \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" 52747 family 🐝 Vespidae Hornets, Paper Wasps, Potter Wasps, and Allies \n",
" 1312989 genus 🐠 Trichosomus \n",
" 84737 genus 🦋 Vespina \n",
" 250566 genus 🐝 Vespita \n",
" 646195 genus 🪰 Vespiodes \n",
" 1399531 genus 🪲 Vespinitocris \n",
" 1007575 genus 🦋 Vespitinea \n",
" \n",
"\n"
],
"text/plain": [
" \n",
" \u001b[1;37m \u001b[0m\u001b[1;37mID \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mRank \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mScientific name \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mCommon name \u001b[0m\u001b[1;37m \u001b[0m \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m52747 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mfamily\u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🐝 Vespidae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mHornets, Paper Wasps, Potter Wasps, and Allies\u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m1312989\u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mgenus \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🐠 Trichosomus \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m84737 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🦋 Vespina \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m250566 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mgenus \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🐝 Vespita \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m646195 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🪰 Vespiodes \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m1399531\u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mgenus \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🪲 Vespinitocris\u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m1007575\u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🦋 Vespitinea \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pprint(taxa)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b9767ea3",
"metadata": {},
"source": [
"## Searching by parent ID\n",
"Oh, that's right, it was **'Vespidae'**! Now let's find all of its subfamilies.\n",
"We can run another search by parent ID, using the taxon ID from the results above:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1ea4e154",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" ID Rank Scientific name Common name \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" 343248 subfamily 🐝 Polistinae Paper Wasps \n",
" 84738 subfamily 🐝 Vespinae Hornets and Yellowjackets \n",
" 119344 subfamily 🐝 Eumeninae Potter and Mason Wasps \n",
" 121511 subfamily 🐝 Masarinae Pollen Wasps \n",
" 522215 subfamily 🐝 Stenogastrinae Hover Wasps \n",
" 343388 subfamily 🐝 Euparagiinae \n",
" 1633740 genus 🐝 Ischnogaster \n",
" \n",
"\n"
],
"text/plain": [
" \n",
" \u001b[1;37m \u001b[0m\u001b[1;37mID \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mRank \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mScientific name \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mCommon name \u001b[0m\u001b[1;37m \u001b[0m \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m343248 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177msubfamily\u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🐝 Polistinae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mPaper Wasps \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m84738 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177msubfamily\u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🐝 Vespinae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34mHornets and Yellowjackets\u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m119344 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177msubfamily\u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🐝 Eumeninae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mPotter and Mason Wasps \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m121511 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177msubfamily\u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🐝 Masarinae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34mPollen Wasps \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m522215 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177msubfamily\u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🐝 Stenogastrinae\u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mHover Wasps \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m343388 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177msubfamily\u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🐝 Euparagiinae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m1633740\u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🐝 Ischnogaster \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"subfamilies = client.taxa.search(parent_id=52747).all()\n",
"pprint(subfamilies)"
]
},
{
"cell_type": "markdown",
"id": "45d02c45",
"metadata": {},
"source": [
"## Autocomplete search\n",
"There is a [taxon autocomplete](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.controllers.TaxonController.html#pyinaturalist.controllers.TaxonController.autocomplete)\n",
"text search endpoint, which is intended for autocomplete interfaces like the one on iNaturalist.org:\n",
"\n",
"\n",
"\n",
"But it also provides an easy way to search the iNaturalist taxonomy database by taxon name.\n",
"Here is a quick example that will run searches from console input. Try a few different searches:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d75328ba",
"metadata": {},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"> opilio\n"
]
},
{
"data": {
"text/html": [
" \n",
" ID Rank Scientific name Common name \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" 527573 genus 🕷️ Opilio \n",
" 47367 order 🕷️ Opiliones Harvestmen \n",
" 84644 species 🕷️ Phalangium opilio European Harvestman \n",
" 527419 subfamily 🕷️ Opilioninae \n",
" 527576 species 🕷️ Opilio canestrinii Canestrini's Harvestman \n",
" 541903 species 🕷️ Pholcus opilionoides Opilion-like Cellar Spider \n",
" 488349 species 🕷️ Rilaena triangularis Spring Harvestman \n",
" 527483 species 🕷️ Paroligolophus agrestis \n",
" 527479 species 🕷️ Oligolophus tridens \n",
" 1500492 tribe 🕷️ Opilionini \n",
" 57325 family 🕷️ Sclerosomatidae Sclerosomatid Harvestmen \n",
" 527578 species 🕷️ Opilio saxatilis \n",
" 533285 subfamily 🕷️ Leiobuninae \n",
" 527577 species 🕷️ Opilio parietinus \n",
" 144132 order 🕷️ Opilioacarida \n",
" 245164 family 🕷️ Opilioacaridae \n",
" 57396 species 🕷️ Dicranopalpus ramosus Fork-palped Harvestman \n",
" 324310 species 🕷️ Mitopus morio Saddleback Harvestman \n",
" 527919 species 🕷️ Opilio transversalis \n",
" 527574 species 🕷️ Opilio ruzickai \n",
" 71583 family 🌱 Opiliaceae opilia family \n",
" 527575 species 🕷️ Opilio dinaricus \n",
" 527798 species 🕷️ Odiellus spinosus \n",
" 249965 genus 🕷️ Opilioacarus \n",
" 297844 species 🕷️ Opilioacarus texanus \n",
" 525996 species 🕷️ Leiobunum limbatum \n",
" 527732 species 🕷️ Lacinius dentiger \n",
" 262076 species 🕷️ Diguetinus raptator \n",
" 249258 genus 🕷️ Paranelima \n",
" 527905 species 🕷️ Opilio insulae \n",
" \n",
"\n"
],
"text/plain": [
" \n",
" \u001b[1;37m \u001b[0m\u001b[1;37mID \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mRank \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mScientific name \u001b[0m\u001b[1;37m \u001b[0m \u001b[1;37m \u001b[0m\u001b[1;37mCommon name \u001b[0m\u001b[1;37m \u001b[0m \n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527573 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Opilio \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m47367 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177morder \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opiliones \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34mHarvestmen \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m84644 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Phalangium opilio \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mEuropean Harvestman \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527419 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177msubfamily\u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilioninae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527576 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Opilio canestrinii \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mCanestrini's Harvestman \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m541903 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Pholcus opilionoides \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34mOpilion-like Cellar Spider\u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m488349 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Rilaena triangularis \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mSpring Harvestman \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527483 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Paroligolophus agrestis\u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527479 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Oligolophus tridens \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m1500492\u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mtribe \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilionini \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m57325 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mfamily \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Sclerosomatidae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mSclerosomatid Harvestmen \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527578 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilio saxatilis \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m533285 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177msubfamily\u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Leiobuninae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527577 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilio parietinus \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m144132 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177morder \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Opilioacarida \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m245164 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mfamily \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilioacaridae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m57396 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Dicranopalpus ramosus \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mFork-palped Harvestman \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m324310 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Mitopus morio \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34mSaddleback Harvestman \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527919 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Opilio transversalis \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527574 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilio ruzickai \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m71583 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mfamily \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🌱 Opiliaceae \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34mopilia family \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527575 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilio dinaricus \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527798 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Odiellus spinosus \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m249965 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mgenus \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilioacarus \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m297844 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Opilioacarus texanus \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m525996 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Leiobunum limbatum \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m527732 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mspecies \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Lacinius dentiger \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m262076 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Diguetinus raptator \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \u001b[2;36m \u001b[0m\u001b[2;36m249258 \u001b[0m\u001b[2;36m \u001b[0m \u001b[2;38;5;177m \u001b[0m\u001b[2;38;5;177mgenus \u001b[0m\u001b[2;38;5;177m \u001b[0m \u001b[2;32m \u001b[0m\u001b[2;32m🕷️ Paranelima \u001b[0m\u001b[2;32m \u001b[0m \u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m\u001b[2;34m \u001b[0m \n",
" \u001b[36m \u001b[0m\u001b[36m527905 \u001b[0m\u001b[36m \u001b[0m \u001b[38;5;177m \u001b[0m\u001b[38;5;177mspecies \u001b[0m\u001b[38;5;177m \u001b[0m \u001b[32m \u001b[0m\u001b[32m🕷️ Opilio insulae \u001b[0m\u001b[32m \u001b[0m \u001b[34m \u001b[0m\u001b[34m \u001b[0m\u001b[34m \u001b[0m \n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdin",
"output_type": "stream",
"text": [
"> exit\n"
]
}
],
"source": [
"while True:\n",
" query = input('> ')\n",
" if query == 'exit':\n",
" break\n",
" results = client.taxa.autocomplete(q=query).all()\n",
" pprint(results)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}