Metadata-Version: 2.4
Name: onith
Version: 0.1.0
Summary: Human-in-the-loop pipeline generator for harmonization of non-clinical study data in SEND format (onith = ontology-based non-clinical integration and term harmonization)
License: MIT
License-File: LICENSE
License-File: NOTICE.txt
Author: Winter, Lisa-Maria (DEV NCE) BIP-DE-B
Author-email: lisa-maria.winter@boehringer-ingelheim.com
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: ipython (>=8.18.1,<9.0.0)
Requires-Dist: ipywidgets (>=8.1.7,<9.0.0)
Requires-Dist: matplotlib (>=3.10.1,<4.0.0)
Requires-Dist: nbconvert (>=7.16.6,<8.0.0)
Requires-Dist: nbformat (>=5.10.4,<6.0.0)
Requires-Dist: networkx (>=3.4.2,<4.0.0)
Requires-Dist: numpy (>=2.2.5,<3.0.0)
Requires-Dist: pandas (>=2.2.3,<3.0.0)
Requires-Dist: plotly (>=6.0.1,<7.0.0)
Requires-Dist: rapidfuzz (>=3.13.0,<4.0.0)
Requires-Dist: regex (>=2024.11.6,<2025.0.0)
Requires-Dist: scikit-learn (>=1.6.1,<2.0.0)
Requires-Dist: seaborn (>=0.13.2,<0.14.0)
Requires-Dist: streamlit (>=1.45.1,<2.0.0)
Requires-Dist: streamlit-aggrid (>=1.1.4.post1,<2.0.0)
Description-Content-Type: text/markdown

# Onith

## Links
- Paper: (our paper is currently under revision. We'll add the link as soon as it is published)
- PyPI: [(link)](https://pypi.org/project/onith/)
- GitHub: [(link)](https://github.com/sysbio-bioinf/onith)

## Installation

ONITH is available on PyPI and can be installed via pip:

```bash
pip install onith
```

## Concept
**What is this?** This package is a collection of classes and functions designed to harmonize various data domains from non-clinical studies, making them suitable for cross-study integration and machine learning applications.

It is optimized for data in the SEND format (CDISC SEND standard), but it can be adapted for other data formats as needed.

**Why it matters** When combining data across studies, the terminology and units used to describe specific findings in animals can vary significantly depending on the year, study site, and involved researchers.

Since each institution or company may have its own internal documentation system, leading to different collections of terms etc., this pipeline is designed to guide a cross-study harmonization process and its documentation, while supporting continuous customization.

**How it works** Each domain has its own set of domain-specific functions, organized into dedicated classes. These functions are already arranged in the correct execution order within this notebook, with the export and documentation step as last step of the pipeline. This way, all decisions made during the harmonization process are documented to ensure reproducability.


## Getting started

Generate your first customized harmonization pipeline:

```python
from onith import *

configure_harmonization_pipeline("<your_output_directory>", lb = True, mi = True, bw = True, om = True)
```

The function ```configure_harmonization_pipeline``` will generate a **custom jupyter notebook file** in the specified output directory.

To configure the notebook, you have to specify what data domains you want to harmonize.

For each specified domain, the custom harmonization pipeline will include a section with all necessary domain-specfic functions already arranged in the correct execution order to ensure a unbiased and reproducable human-in-the-loop harmonization process.

- ```lb```: If set to True, the custom harmonization pipeline will include a section dedicated to the harmonization of the **LB data domain (Laboratory Test Results = Blood Marker Data)**
- ```mi```: If set to True, the custom harmonization pipeline will include a section dedicated to the harmonization of the **MI data domain (Microscopic Findings = Histopathological Finding Descriptions)**
- ```bw```: If set to True, the custom harmonization pipeline will include a section dedicated to the harmonization of the **BW data domain (Body Weight)**
- ```om```: If set to True, the custom harmonization pipeline will include a section dedicated to the harmonization of the **OM data domain (Organ Measurements)**

The generated harmonization pipeline includes default paths to example data, allowing you to explore and test the process before loading your own datasets.

## Documentation

Step-by-step instructions for all following steps will be given in the generated custom notebook file, based on the harmonization pipeline configuration.
Function-specific documentation is available on PyPI (link).

## License

This project is licensed under the MIT License.
You are free to use, modify, and distribute this software with proper attribution. See the [LICENSE](LICENSE) file for more details.

## Citation

Please cite our work in your publications if this package contributed to your project.
Thank you!
