Skip to content
/ bioc Public

Data structures and code to read/write BioC XML and Json.

License

Notifications You must be signed in to change notification settings

bionlplab/bioc

Repository files navigation

bioc - Processing BioC, Brat, and PubTator with Python

Build status Latest version on PyPI Downloads License codecov

BioC XML / JSON format can be used to share text documents and annotations.

Brat standoff format is created by the brat annotation tool to store annotations on disk in a standoff format. annotations are stored separately from the annotated document text, which is never modified by the tool.

PubTator format is created by the PutTator Central system.

bioc exposes an API familiar to users of the standard library marshal and pickle modules.

Development of bioc happens on GitHub: https://github.com/bionlplab/bioc

Getting started

Installing bioc

$ pip install bioc

BioC

Encoding the BioC collection object collection:

from bioc import biocxml
# Serialize ``collection`` as a BioC formatted stream to ``fp``.
with open(filename, 'w') as fp:
    biocxml.dump(collection, fp)

Decoding the BioC XML file:

from bioc import biocxml
# Deserialize ``fp`` to a BioC collection object.
with open(filename, 'r') as fp:
    collection = biocxml.load(fp)

Brat

Encoding the Brat document

from bioc import brat
# Serialize ``doc`` as a brat formatted stream to ``text_fp`` and ``ann_fp``.
with open(annpath, 'w') as ann_fp, open(txtpath, 'w') as text_fp:
    brat.dump(doc, text_fp, ann_fp)

Decoding the Brat document:

from bioc import brat
# Deserialize two streams (text and ann) to a Brat document object.
with open(annpath) as ann_fp, open(txtpath) as text_fp:
    doc = brat.load(text_fp, ann_fp)

PubTator

Encoding the PubTator document object doc:

from bioc import pubtator
# Serialize ``collection`` as a BioC formatted stream to ``fp``.
with open(filename, 'w') as fp:
    pubtator.dump([doc], fp)

Decoding the PubTator file

from bioc import pubtator
# Deserialize ``fp`` to a PubTator object.
with open(filename, 'r') as fp:
    docs = pubtator.load(fp)

Documentation

You will find complete documentation at our Read the Docs site.

Contributing

You can find information about contributing to bioc at our Contribution page.

Reference

If you use bioc in your research, please cite the following paper:

  • Comeau DC, Doğan RI, Ciccarese P, Cohen KB, Krallinger M, Leitner F, Lu Z, Peng Y, Rinaldi F, Torii M, Valencia V, Verspoor K, Wiegers TC, Wu CH, Wilbur WJ. BioC: a minimalist approach to interoperability for biomedical text processing. Database (Oxford). 2013;2013:bat064. doi: 10.1093/database/bat064. Print 2013. PMID: 24048470; PMCID: PMC3889917

Acknowledgment

This work is supported by the National Library of Medicine under Award No. 4R00LM013001.

License

Copyright BioNLP Lab at Weill Cornell Medicine, 2023.

Distributed under the terms of the MIT license, bioc is free and open source software.