Metadata-Version: 2.3
Name: ontology-loader
Version: 0.1.7
Summary: ontology_loader
License: MIT
Author: Sierra Moxon
Author-email: smoxon@lbl.gov
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: click (>=8.1.7,<9.0.0)
Requires-Dist: curies (>=0.9.1)
Requires-Dist: linkml-store (>=0.2.6,<0.3.0)
Requires-Dist: mongomock (>=4.3.0,<5.0.0)
Requires-Dist: motor (>=3.6.0,<4.0.0)
Requires-Dist: neo4j (>=5.25.0,<6.0.0)
Requires-Dist: nmdc-schema
Requires-Dist: oaklib (>=0.6.16,<0.7.0)
Requires-Dist: pymongo (>=4.9.1,<5.0.0)
Requires-Dist: pystow (>=0.5.0,<0.6.0)
Requires-Dist: pytest (>=8.3.4,<9.0.0)
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
Requires-Dist: tox (>=4.24.1,<5.0.0)
Description-Content-Type: text/markdown

## ontology_loader

Suite of tools to configure and load an ontology from the OboFoundary into the data object for OntologyClass as 
specified by NMDC schema.

## Development Environment

#### Pre-requisites

- >=Python 3.9
- Poetry
- Docker
- MongoDB
- NMDC materialized schema
- ENV variable for MONGO_PASSWORD (or pass it in via the cli/runner itself directly)

```bash

% docker pull mongo
% docker run -d --name mongodb-container -p 27018:27017 mongo
```

#### Basic mongosh commands
```bash
% docker ps
% docker exec -it [mongodb-container-id] bash
% mongosh mongodb://admin:root@mongo:27017/nmdc?authSource=admin
% show dbs
% use nmdc
% db.ontology_class_set.find().pretty()
% db.ontology_relation_set.find().pretty()
``` 

#### Command line
```bash
% poetry install
% poetry run ontology_loader --help
% poetry run ontology_loader --source-ontology "envo"
% poetry run ontology_loader --source-ontology "go"
```

#### Running the tests
```bash
% make test
```

#### Running the linter
```bash
% make lint
```

#### python example usage
```bash
pip install nmdc-ontology-loader
```

```python
from  nmdc_ontology_loader.ontology_loader import OntologyLoader
import tempfile

def test_load_ontology():
    """Test the load_ontology method."""
    ontology_loader = OntologyLoader(
        source_ontology="envo",
        output_directory=tempfile.gettempdir(),
        generate_reports=True,
    )
    ontology_loader.load_ontology()
    assert ontology_loader.ontology_class_set
    assert ontology_loader.ontology_relation_set
    assert ontology_loader.ontology_class_set.count() > 0
    assert ontology_loader.ontology_relation_set.count() > 0
```

### Reset collections in dev

```
% docker exec -it mongodb-container bash
% mongosh mongodb://admin:root@mongo:27017/nmdc?authSource=admin
% db.ontology_class_set.drop()
% db.ontology_relation_set.drop()
```
