### Data generation utilities for tacular

This directory contains scripts that convert source data (JSON / OBO / other
input files) into the autogenerated `data.py` modules used by the `tacular`
package. Only terms which have at least oen valid formula/composition or mono/avg 
mass are included. This package is not meant to be a replcaement of obo files, but
is instead meant to offer quick lookup of relevant terms for use in calculculating
mass/composition of peptides or fragment ions.

### Problems:
- PSI-MOD.obo has some terms which report different masses than thier formulas produce. Added a github issue for this.
- There are some RESID terms which map to multiple different PSI entries. This seems to 
	happen when the RESID refers to some greater modification type which has different masses
	depending on the residue its attatched to. UNIMOD and PSIMOD terms are unique whereas RESID 
	terms do not appear to be. Since they are not mass resolvable, they are skipped.
- GNO seems like a huge mess of an ontology... There are like ~200k terms with like 90% of them not having a resolvable mass/formula. And many include the moleculare weight in the description??? 
- UNIMOD is perfect.

Quick overview
- Generators: individual scripts named `gen_*.py` produce specific outputs
	(monosaccharides, unimod, psimod, amino acids, fragment ions, proteases,
	reference molecules, neutral deltas, etc.).
- Convenience: a `justfile` is provided (`data_gen/justfile`) with recipes to
	run individual generators or the full generation flow from the repo root.

Logs
- The combined generation log is written to `data_gen/generation_log.txt` when
	you run `generate.py`.

How to run
- Run the full generation (recommended) from the repo root:

```bash
just -f data_gen/justfile gen
```

- Run a single generator (examples):

```bash
just -f data_gen/justfile gen-ref      # reference molecules
just -f data_gen/justfile gen-uni      # unimod
just -f data_gen/justfile gen-mono     # monosaccharides
```

Where outputs go
- Output target paths are centralized in `data_gen/constants.py` as the
	`OutputFile` enum; generators write their generated `data.py` files to those
	paths inside `src/tacular/...`.




