Python client for GNparser
Project description
pyGNparser
This is a Python wrapper on the GNparser API. Code follow the spirit/approach of the pygbif package, and indeed much of the wrapping utility is copied 1:1 from that repo, thanks @sckott and other contributors.
Installation
Add this line to your application's requirements.txt:
pygnparser
And then execute:
$ pip install -r requirements.txt
Or install it yourself as:
$ pip install pygnparser
Usage
Import the library:
from pygnparser import gnparser
If you have a local installation of gnparser, set the GNPARSER_BASE_URL to the host and port that the service is running on, for example if running locally on port 8787:
GNPARSER_BASE_URL = "http://localhost:8787/"
Without the GNPARSER_BASE_URL environment variable set, the wrapper will default to using the remote API which will perform slower: https://parser.globalnames.org/
Parse a scientific name
Parse a scientific name:
>>> result = gnparser('Ursus arctos Linnaeus, 1758') # => Dictionary
Check if parsed:
>>> result.parsed() # => Boolean
True
Get parsed quality:
>>> result.quality() # => Integer
1
Get the genus name:
>>> result.genus() # => String
'Ursus'
Get the species name:
>>> result.species() # => String
'arctos'
Get the year:
>>> result.year() # => String
'1758'
Get the authorship:
>>> result.authorship() # => String
'(Linnaeus, 1758)'
Get the scientific name without the Latin gender stem:
>>> result.canonical_stemmed() # => String
'Ursus arct'
Get the parsed name components for a hybrid formula:
>>> result = gnparser('Isoetes lacustris × stricta Gay') # => Dictionary
>>> result.is_hybrid() # => Boolean
True
>>> result.hybrid() # => String
'HYBRID_FORMULA'
>>> result.normalized() # => String
'Isoetes lacustris × Isoetes stricta Gay'
>>> result.hybrid_formula_ranks() # => Array
['species', 'species']
>>> res.hybrid_formula_genera() # => Array
['Isoetes', 'Isoetes']
>>> res.hybrid_formula_species() # => Array
['lacustris', 'stricta']
>>> res.hybrid_formula_authorship() # => Array
['', 'Gay']
Parse multiple scientific names
Parse multiple scientific names by separating them with \r\n
:
results = gnparser('Ursus arctos Linnaeus, 1758\r\nAlces alces (Linnaeus, 1758)\r\nRangifer tarandus (Linnaeus, 1758)\r\nUrsus maritimus (Phipps, 1774') # => Array
Get the genus of the 1st parsed name in the list:
results[0].genus() # => String
'Ursus'
Deviations
Some extra helpers are included that extend the functionality of GNparser.
- The page() method gets the page number out of the unparsed tail:
>>> result = gnparser('Ursus arctos Linnaeus, 1758: 81')
result.page() # => String
'81'
- The authorship() method returns a formatted authorship string depending on the number of authors. If it is one author with a year, it will return as Smith, 1970. For two authors and a year it will return as Smith & Johnson, 1970. For three authors it will return as Smith, Johnson & Jones, 1970. Any additional authors beyond 3 will be comma separated with the last author included with an ampersand.
>>> result = gnparser('Aus bus cus Smith, Johnson, & Jones, 1970')
result.authorship() # => String
'Smith, Johnson & Jones, 1970'
- The infraspecies() method will return the infraspecies name. Currently there is no special methods for ranks lower than trinomials but you can access them with the infraspecies_details() method. Please open an issue if you need it added.
>>> result = gnparser('Aus bus cus')
result.infraspecies() # => String
'cus'
Other GNparser Libraries
- Node.js: node-gnparser
- R: rgnparser
- Ruby Gem: biodiversity
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/gnames/pygnparser. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
Development
After checking out the repo, change into the package directory cd pygnparser
, run pip install .
to install the package, and pip install -r requirements.txt
to install the dependencies. Then, run pytest
to run the tests. You can also run bin/console
for an interactive Python prompt that will allow you to experiment with the above example commands.
License
The package is available as open source under the terms of the MIT license. You can learn more about the MIT license on Wikipedia and compare it with other open source licenses at the Open Source Initiative.
Code of Conduct
Everyone interacting in the pyGNparser project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.
[Unreleased]
[0.0.3] - 2024-10-14
- Added uninomial method
[0.0.2] - 2024-10-10
- Added named hybrid and hybrid formula handling
- Added original authorship and combination authorship handling
- Added et_al_cutoff parameter to authorship formatting
[0.0.1] - 2024-03-27
- Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pygnparser-0.0.3.tar.gz
.
File metadata
- Download URL: pygnparser-0.0.3.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39ba2a49c488d5885e77bbefcb96faab7fcbe2a4e5ad2291cfd29806556b72c4 |
|
MD5 | b66df64cb708c3236850cf75b4022ad3 |
|
BLAKE2b-256 | 016b34e69d074ec8de4f13e3fd8503dd46de80542bce2db68d8b36d2f7490431 |
File details
Details for the file pyGNparser-0.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: pyGNparser-0.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c85228b5d7f85b38bb916f4c2fdb179bc3470433675092564f5fb2a451a7d0ea |
|
MD5 | 3d45e2d9793096b22725214817adadc0 |
|
BLAKE2b-256 | c3fbef2673e93c01e82cee092f1635d5f93d82e2a5c030bb2e51a97909336f42 |