https://github.com/aiotter/spsearch
python tools to get species data from various API, like IUCN Red List or Encyclopedia of Life.
https://github.com/aiotter/spsearch
biodiversity bioinformatics biology species
Last synced: about 2 months ago
JSON representation
python tools to get species data from various API, like IUCN Red List or Encyclopedia of Life.
- Host: GitHub
- URL: https://github.com/aiotter/spsearch
- Owner: aiotter
- License: gpl-3.0
- Created: 2019-03-01T12:56:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-05-18T06:50:05.000Z (over 6 years ago)
- Last Synced: 2025-07-11T20:14:25.479Z (3 months ago)
- Topics: biodiversity, bioinformatics, biology, species
- Language: Python
- Homepage:
- Size: 3.54 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# spsearch
Python tools to get species data from various API, including IUCN Red List and Encyclopedia of Life.## What is spsearch?
This is a collection of CLI tools which enable you to use various API with ease.## Why spsearch?
- **Using asyncio.**
Unfortunately, some of the APIs are far from fastest (e.g. IUCN Red List API), so asynchronous retrieval will help you getting various info at once.- **For easier search.**
Some of the APIs accept the only one certain scientific name of the species to search.
For example, when you search Asian small-clawed otter with `Aonyx cinerea` via 'Individual species by name' method,
Red List API returns no result, as it is only referable in `Aonyx cinereus`.
`spsearch.RedListApiHandler.species_from_name()` both accepts `Aonyx cinerea` and `Aonyx cinereus`.## How to use
### Red List API
You have to generate your own token [here](http://apiv3.iucnredlist.org/api/v3/token).
```python
from pprint import pprint
import asyncio
from spsearch.redlist import RedListApiHandler
handler = RedListApiHandler(token=YOUR_REDLIST_API_TOKEN)async def main():
# Get the info of Eurasian otter (Lutra lutra)
otter = await handler.species_from_name('Lutra lutra')
print(otter) # [NT]Lutra lutra# Print some information about this species
print(otter.category) # NT
print(otter.order) # MUSTELIDAE
print(otter.assessment_date) # 2014-06-20# Get the list of the threats
threats = await otter.get_threats()# Threats are returned in a container class with some convenient method
print(threats)
# -> CodeHierarchySeq([
# ,
# ,
# ,
# ,
# ,
# ,
# ...
# ])print(threats[2][4])
# -> CodeHierarchySeq([
# ,
#
# ])print(threats.codes()) # [1, 2, 4, 5, 6, 7, 9]
# Use .slice() to slice the container
print(threats.slice(0)) # 1.1: Housing & urban areas# Print some data for each threats
print(threats.code) # 1.1
print(threats.title) # Housing & urban areas# The same methods are available for the habitats, conservation measures
pprint(await otter.get_habitats())
pprint(await otter.get_conservation_measures())# Print the list of the countries in which they live
pprint(await otter.get_country_occurrence())asyncio.run(main())
```### EOL API
If you want to use the cypher API, you need a token.
Follow the guide [here](https://github.com/EOL/eol_website/blob/master/doc/api.md) to get yours.
Classical API doesn't need it.
```
Not yet prepared
```