diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:32:42 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:32:42 +0000 |
| commit | 99179d07dc8fbaa203fa340e08b53c371a76e005 (patch) | |
| tree | 3db407f3af42553a686eefe8078151d5a25f4a00 /python-pronto.spec | |
| parent | 25cdd49a23b6a1d84ef4f337b74cc329f62f9cdb (diff) | |
automatic import of python-prontoopeneuler20.03
Diffstat (limited to 'python-pronto.spec')
| -rw-r--r-- | python-pronto.spec | 652 |
1 files changed, 652 insertions, 0 deletions
diff --git a/python-pronto.spec b/python-pronto.spec new file mode 100644 index 0000000..ba01d08 --- /dev/null +++ b/python-pronto.spec @@ -0,0 +1,652 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pronto +Version: 2.5.4 +Release: 1 +Summary: Python frontend to ontologies. +License: MIT +URL: https://github.com/althonos/pronto +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/db/5a/263f1314a3614231e9278ca84314a03625365fda02bf65193fd53497733e/pronto-2.5.4.tar.gz +BuildArch: noarch + +Requires: python3-chardet +Requires: python3-fastobo +Requires: python3-networkx +Requires: python3-dateutil + +%description +# `pronto` [](https://github.com/althonos/pronto/stargazers) + +*A Python frontend to ontologies.* + +[](https://github.com/althonos/pronto/actions) +[](https://choosealicense.com/licenses/mit/) +[](https://github.com/althonos/pronto/) +[](http://pronto.readthedocs.io/en/stable/?badge=stable) +[](https://codecov.io/gh/althonos/pronto/) +[](https://codacy.com/app/althonos/pronto) +[](https://pypi.python.org/pypi/pronto) +[](https://anaconda.org/bioconda/pronto) +[](https://pypi.org/project/pronto/#files) +[](https://pypi.org/project/pronto/#files) +[](https://github.com/althonos/pronto/blob/master/CHANGELOG.md) +[](https://github.com/althonos/pronto/issues) +[](https://doi.org/10.5281/zenodo.595572) +[](https://pepy.tech/project/pronto) + +## π© Table of Contents + +- [Overview](#%EF%B8%8F-overview) +- [Supported Languages](#%EF%B8%8F-supported-languages) +- [Installing](#-installing) +- [Examples](#-examples) +- [API Reference](#-api-reference) +- [License](#-license) + +## πΊοΈ Overview + +Pronto is a Python library to parse, browse, create, and export +ontologies, supporting several ontology languages and formats. It +implement the specifications of the +[Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/obo-syntax.html) +in the form of an safe high-level interface. *If you're only interested in +parsing OBO or OBO Graphs document, you may wish to consider +[`fastobo`](https://pypi.org/project/fastobo) instead.* + + +## π³οΈ Supported Languages + +- [Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/GO.format.obo-1_4.html). + *Because this format is fairly new, not all OBO ontologies can be parsed at the + moment. See the [OBO Foundry roadmap](https://github.com/orgs/fastobo/projects/2) + listing the compliant ontologies, and don't hesitate to contact their developers + to push adoption forward.* +- [OBO Graphs](https://github.com/geneontology/obographs) in [JSON](http://json.org/) + format. *The format is not yet stabilized to the results may change from file + to file.* +- [Ontology Web Language 2](https://www.w3.org/TR/owl2-overview/) + in [RDF/XML format](https://www.w3.org/TR/2012/REC-owl2-mapping-to-rdf-20121211/). + *OWL2 ontologies are reverse translated to OBO using the mapping defined in the + [OBO 1.4 Semantics](http://owlcollab.github.io/oboformat/doc/obo-syntax.html).* + +## π§ Installing + + +Installing with `pip` is the easiest: +```console +# pip install pronto # if you have the admin rights +$ pip install pronto --user # install it in a user-site directory +``` + +There is also a `conda` recipe in the `bioconda` channel: +```console +$ conda install -c bioconda pronto +``` + +Finally, a development version can be installed from GitHub +using `setuptools`, provided you have the right dependencies +installed already: +```console +$ git clone https://github.com/althonos/pronto +$ cd pronto +# python setup.py install +``` + +## π‘ Examples + +If you're only reading ontologies, you'll only use the `Ontology` +class, which is the main entry point. + +```python +>>> from pronto import Ontology +``` + +It can be instantiated from a path to an ontology in one of the supported +formats, even if the file is compressed: +```python +>>> go = Ontology("tests/data/go.obo.gz") +``` + +Loading a file from a persistent URL is also supported, although you may also +want to use the `Ontology.from_obo_library` method if you're using persistent +URLs a lot: +```python +>>> cl = Ontology("http://purl.obolibrary.org/obo/cl.obo") +>>> stato = Ontology.from_obo_library("stato.owl") +``` + +### π·οΈ Get a term by accession + +`Ontology` objects can be used as mappings to access any entity +they contain from their identifier in compact form: +```python +>>> cl['CL:0002116'] +Term('CL:0002116', name='B220-low CD38-positive unswitched memory B cell') +``` + +Note that when loading an OWL ontology, URIs will be compacted to CURIEs +whenever possible: + +```python +>>> aeo = Ontology.from_obo_library("aeo.owl") +>>> aeo["AEO:0000078"] +Term('AEO:0000078', name='lumen of tube') +``` + +### ποΈ Create a new term from scratch + +We can load an ontology, and edit it locally. Here, we add a new protein class +to the Protein Ontology. +```python +>>> pr = Ontology.from_obo_library("pr.obo") +>>> brh = ms.create_term("PR:XXXXXXXX") +>>> brh.name = "Bacteriorhodopsin" +>>> brh.superclasses().add(pr["PR:000001094"]) # is a rhodopsin-like G-protein +>>> brh.disjoint_from.add(pr["PR:000036194"]) # disjoint from eukaryotic proteins +``` + +### βοΈ Convert an OWL ontology to OBO format + +The `Ontology.dump` method can be used to serialize an ontology to any of the +supported formats (currently OBO and OBO JSON): +```python +>>> edam = Ontology("http://edamontology.org/EDAM.owl") +>>> with open("edam.obo", "wb") as f: +... edam.dump(f, format="obo") +``` + +### πΏ Find ontology terms without subclasses + +The `terms` method of `Ontology` instances can be used to +iterate over all the terms in the ontology (including the +ones that are imported). We can then use the `is_leaf` +method of `Term` objects to check is the term is a leaf in the +class inclusion graph. + +```python +>>> ms = Ontology("ms.obo") +>>> for term in ms.terms(): +... if term.is_leaf(): +... print(term.id) +MS:0000000 +MS:1000001 +... +``` + +### π€« Silence warnings + +`pronto` is explicit about the parts of the code that are doing +non-standard assumptions, or missing capabilities to handle certain +constructs. It does so by raising warnings with the `warnings` module, +which can get quite verbose. + +If you are fine with the inconsistencies, you can manually disable +warning reports in your consumer code with the `filterwarnings` function: + +```python +import warnings +import pronto +warnings.filterwarnings("ignore", category=pronto.warnings.ProntoWarning) +``` + +<!-- ### π€ Merging several ontologies --> + +## π API Reference + +A complete API reference can be found in the +[online documentation](https://pronto.readthedocs.io/en/latest/api.html), or +directly from the command line using `pydoc`: +```console +$ pydoc pronto.Ontology +``` + +## π License + +This library is provided under the open-source +[MIT license](https://choosealicense.com/licenses/mit/). +Please cite this library if you are using it in a scientific +context using the following DOI: +[**10.5281/zenodo.595572**](https://doi.org/10.5281/zenodo.595572) + + +%package -n python3-pronto +Summary: Python frontend to ontologies. +Provides: python-pronto +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pronto +# `pronto` [](https://github.com/althonos/pronto/stargazers) + +*A Python frontend to ontologies.* + +[](https://github.com/althonos/pronto/actions) +[](https://choosealicense.com/licenses/mit/) +[](https://github.com/althonos/pronto/) +[](http://pronto.readthedocs.io/en/stable/?badge=stable) +[](https://codecov.io/gh/althonos/pronto/) +[](https://codacy.com/app/althonos/pronto) +[](https://pypi.python.org/pypi/pronto) +[](https://anaconda.org/bioconda/pronto) +[](https://pypi.org/project/pronto/#files) +[](https://pypi.org/project/pronto/#files) +[](https://github.com/althonos/pronto/blob/master/CHANGELOG.md) +[](https://github.com/althonos/pronto/issues) +[](https://doi.org/10.5281/zenodo.595572) +[](https://pepy.tech/project/pronto) + +## π© Table of Contents + +- [Overview](#%EF%B8%8F-overview) +- [Supported Languages](#%EF%B8%8F-supported-languages) +- [Installing](#-installing) +- [Examples](#-examples) +- [API Reference](#-api-reference) +- [License](#-license) + +## πΊοΈ Overview + +Pronto is a Python library to parse, browse, create, and export +ontologies, supporting several ontology languages and formats. It +implement the specifications of the +[Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/obo-syntax.html) +in the form of an safe high-level interface. *If you're only interested in +parsing OBO or OBO Graphs document, you may wish to consider +[`fastobo`](https://pypi.org/project/fastobo) instead.* + + +## π³οΈ Supported Languages + +- [Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/GO.format.obo-1_4.html). + *Because this format is fairly new, not all OBO ontologies can be parsed at the + moment. See the [OBO Foundry roadmap](https://github.com/orgs/fastobo/projects/2) + listing the compliant ontologies, and don't hesitate to contact their developers + to push adoption forward.* +- [OBO Graphs](https://github.com/geneontology/obographs) in [JSON](http://json.org/) + format. *The format is not yet stabilized to the results may change from file + to file.* +- [Ontology Web Language 2](https://www.w3.org/TR/owl2-overview/) + in [RDF/XML format](https://www.w3.org/TR/2012/REC-owl2-mapping-to-rdf-20121211/). + *OWL2 ontologies are reverse translated to OBO using the mapping defined in the + [OBO 1.4 Semantics](http://owlcollab.github.io/oboformat/doc/obo-syntax.html).* + +## π§ Installing + + +Installing with `pip` is the easiest: +```console +# pip install pronto # if you have the admin rights +$ pip install pronto --user # install it in a user-site directory +``` + +There is also a `conda` recipe in the `bioconda` channel: +```console +$ conda install -c bioconda pronto +``` + +Finally, a development version can be installed from GitHub +using `setuptools`, provided you have the right dependencies +installed already: +```console +$ git clone https://github.com/althonos/pronto +$ cd pronto +# python setup.py install +``` + +## π‘ Examples + +If you're only reading ontologies, you'll only use the `Ontology` +class, which is the main entry point. + +```python +>>> from pronto import Ontology +``` + +It can be instantiated from a path to an ontology in one of the supported +formats, even if the file is compressed: +```python +>>> go = Ontology("tests/data/go.obo.gz") +``` + +Loading a file from a persistent URL is also supported, although you may also +want to use the `Ontology.from_obo_library` method if you're using persistent +URLs a lot: +```python +>>> cl = Ontology("http://purl.obolibrary.org/obo/cl.obo") +>>> stato = Ontology.from_obo_library("stato.owl") +``` + +### π·οΈ Get a term by accession + +`Ontology` objects can be used as mappings to access any entity +they contain from their identifier in compact form: +```python +>>> cl['CL:0002116'] +Term('CL:0002116', name='B220-low CD38-positive unswitched memory B cell') +``` + +Note that when loading an OWL ontology, URIs will be compacted to CURIEs +whenever possible: + +```python +>>> aeo = Ontology.from_obo_library("aeo.owl") +>>> aeo["AEO:0000078"] +Term('AEO:0000078', name='lumen of tube') +``` + +### ποΈ Create a new term from scratch + +We can load an ontology, and edit it locally. Here, we add a new protein class +to the Protein Ontology. +```python +>>> pr = Ontology.from_obo_library("pr.obo") +>>> brh = ms.create_term("PR:XXXXXXXX") +>>> brh.name = "Bacteriorhodopsin" +>>> brh.superclasses().add(pr["PR:000001094"]) # is a rhodopsin-like G-protein +>>> brh.disjoint_from.add(pr["PR:000036194"]) # disjoint from eukaryotic proteins +``` + +### βοΈ Convert an OWL ontology to OBO format + +The `Ontology.dump` method can be used to serialize an ontology to any of the +supported formats (currently OBO and OBO JSON): +```python +>>> edam = Ontology("http://edamontology.org/EDAM.owl") +>>> with open("edam.obo", "wb") as f: +... edam.dump(f, format="obo") +``` + +### πΏ Find ontology terms without subclasses + +The `terms` method of `Ontology` instances can be used to +iterate over all the terms in the ontology (including the +ones that are imported). We can then use the `is_leaf` +method of `Term` objects to check is the term is a leaf in the +class inclusion graph. + +```python +>>> ms = Ontology("ms.obo") +>>> for term in ms.terms(): +... if term.is_leaf(): +... print(term.id) +MS:0000000 +MS:1000001 +... +``` + +### π€« Silence warnings + +`pronto` is explicit about the parts of the code that are doing +non-standard assumptions, or missing capabilities to handle certain +constructs. It does so by raising warnings with the `warnings` module, +which can get quite verbose. + +If you are fine with the inconsistencies, you can manually disable +warning reports in your consumer code with the `filterwarnings` function: + +```python +import warnings +import pronto +warnings.filterwarnings("ignore", category=pronto.warnings.ProntoWarning) +``` + +<!-- ### π€ Merging several ontologies --> + +## π API Reference + +A complete API reference can be found in the +[online documentation](https://pronto.readthedocs.io/en/latest/api.html), or +directly from the command line using `pydoc`: +```console +$ pydoc pronto.Ontology +``` + +## π License + +This library is provided under the open-source +[MIT license](https://choosealicense.com/licenses/mit/). +Please cite this library if you are using it in a scientific +context using the following DOI: +[**10.5281/zenodo.595572**](https://doi.org/10.5281/zenodo.595572) + + +%package help +Summary: Development documents and examples for pronto +Provides: python3-pronto-doc +%description help +# `pronto` [](https://github.com/althonos/pronto/stargazers) + +*A Python frontend to ontologies.* + +[](https://github.com/althonos/pronto/actions) +[](https://choosealicense.com/licenses/mit/) +[](https://github.com/althonos/pronto/) +[](http://pronto.readthedocs.io/en/stable/?badge=stable) +[](https://codecov.io/gh/althonos/pronto/) +[](https://codacy.com/app/althonos/pronto) +[](https://pypi.python.org/pypi/pronto) +[](https://anaconda.org/bioconda/pronto) +[](https://pypi.org/project/pronto/#files) +[](https://pypi.org/project/pronto/#files) +[](https://github.com/althonos/pronto/blob/master/CHANGELOG.md) +[](https://github.com/althonos/pronto/issues) +[](https://doi.org/10.5281/zenodo.595572) +[](https://pepy.tech/project/pronto) + +## π© Table of Contents + +- [Overview](#%EF%B8%8F-overview) +- [Supported Languages](#%EF%B8%8F-supported-languages) +- [Installing](#-installing) +- [Examples](#-examples) +- [API Reference](#-api-reference) +- [License](#-license) + +## πΊοΈ Overview + +Pronto is a Python library to parse, browse, create, and export +ontologies, supporting several ontology languages and formats. It +implement the specifications of the +[Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/obo-syntax.html) +in the form of an safe high-level interface. *If you're only interested in +parsing OBO or OBO Graphs document, you may wish to consider +[`fastobo`](https://pypi.org/project/fastobo) instead.* + + +## π³οΈ Supported Languages + +- [Open Biomedical Ontologies 1.4](http://owlcollab.github.io/oboformat/doc/GO.format.obo-1_4.html). + *Because this format is fairly new, not all OBO ontologies can be parsed at the + moment. See the [OBO Foundry roadmap](https://github.com/orgs/fastobo/projects/2) + listing the compliant ontologies, and don't hesitate to contact their developers + to push adoption forward.* +- [OBO Graphs](https://github.com/geneontology/obographs) in [JSON](http://json.org/) + format. *The format is not yet stabilized to the results may change from file + to file.* +- [Ontology Web Language 2](https://www.w3.org/TR/owl2-overview/) + in [RDF/XML format](https://www.w3.org/TR/2012/REC-owl2-mapping-to-rdf-20121211/). + *OWL2 ontologies are reverse translated to OBO using the mapping defined in the + [OBO 1.4 Semantics](http://owlcollab.github.io/oboformat/doc/obo-syntax.html).* + +## π§ Installing + + +Installing with `pip` is the easiest: +```console +# pip install pronto # if you have the admin rights +$ pip install pronto --user # install it in a user-site directory +``` + +There is also a `conda` recipe in the `bioconda` channel: +```console +$ conda install -c bioconda pronto +``` + +Finally, a development version can be installed from GitHub +using `setuptools`, provided you have the right dependencies +installed already: +```console +$ git clone https://github.com/althonos/pronto +$ cd pronto +# python setup.py install +``` + +## π‘ Examples + +If you're only reading ontologies, you'll only use the `Ontology` +class, which is the main entry point. + +```python +>>> from pronto import Ontology +``` + +It can be instantiated from a path to an ontology in one of the supported +formats, even if the file is compressed: +```python +>>> go = Ontology("tests/data/go.obo.gz") +``` + +Loading a file from a persistent URL is also supported, although you may also +want to use the `Ontology.from_obo_library` method if you're using persistent +URLs a lot: +```python +>>> cl = Ontology("http://purl.obolibrary.org/obo/cl.obo") +>>> stato = Ontology.from_obo_library("stato.owl") +``` + +### π·οΈ Get a term by accession + +`Ontology` objects can be used as mappings to access any entity +they contain from their identifier in compact form: +```python +>>> cl['CL:0002116'] +Term('CL:0002116', name='B220-low CD38-positive unswitched memory B cell') +``` + +Note that when loading an OWL ontology, URIs will be compacted to CURIEs +whenever possible: + +```python +>>> aeo = Ontology.from_obo_library("aeo.owl") +>>> aeo["AEO:0000078"] +Term('AEO:0000078', name='lumen of tube') +``` + +### ποΈ Create a new term from scratch + +We can load an ontology, and edit it locally. Here, we add a new protein class +to the Protein Ontology. +```python +>>> pr = Ontology.from_obo_library("pr.obo") +>>> brh = ms.create_term("PR:XXXXXXXX") +>>> brh.name = "Bacteriorhodopsin" +>>> brh.superclasses().add(pr["PR:000001094"]) # is a rhodopsin-like G-protein +>>> brh.disjoint_from.add(pr["PR:000036194"]) # disjoint from eukaryotic proteins +``` + +### βοΈ Convert an OWL ontology to OBO format + +The `Ontology.dump` method can be used to serialize an ontology to any of the +supported formats (currently OBO and OBO JSON): +```python +>>> edam = Ontology("http://edamontology.org/EDAM.owl") +>>> with open("edam.obo", "wb") as f: +... edam.dump(f, format="obo") +``` + +### πΏ Find ontology terms without subclasses + +The `terms` method of `Ontology` instances can be used to +iterate over all the terms in the ontology (including the +ones that are imported). We can then use the `is_leaf` +method of `Term` objects to check is the term is a leaf in the +class inclusion graph. + +```python +>>> ms = Ontology("ms.obo") +>>> for term in ms.terms(): +... if term.is_leaf(): +... print(term.id) +MS:0000000 +MS:1000001 +... +``` + +### π€« Silence warnings + +`pronto` is explicit about the parts of the code that are doing +non-standard assumptions, or missing capabilities to handle certain +constructs. It does so by raising warnings with the `warnings` module, +which can get quite verbose. + +If you are fine with the inconsistencies, you can manually disable +warning reports in your consumer code with the `filterwarnings` function: + +```python +import warnings +import pronto +warnings.filterwarnings("ignore", category=pronto.warnings.ProntoWarning) +``` + +<!-- ### π€ Merging several ontologies --> + +## π API Reference + +A complete API reference can be found in the +[online documentation](https://pronto.readthedocs.io/en/latest/api.html), or +directly from the command line using `pydoc`: +```console +$ pydoc pronto.Ontology +``` + +## π License + +This library is provided under the open-source +[MIT license](https://choosealicense.com/licenses/mit/). +Please cite this library if you are using it in a scientific +context using the following DOI: +[**10.5281/zenodo.595572**](https://doi.org/10.5281/zenodo.595572) + + +%prep +%autosetup -n pronto-2.5.4 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pronto -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2.5.4-1 +- Package Spec generated |
