homonin.labs.read_observation() · homonin.labs.read_panel() · homonin.labs.link_loinc() · homonin.genetics.read_vcf() · homonin.genetics.open_htsget() · homonin.genetics.parse_hgvs() · homonin.signals.ecg.read_ecg() · homonin.signals.ecg.detect_qrs() · homonin.signals.ecg.to_waveform() · homonin.signals.eeg.read_eeg() · homonin.signals.eeg.apply_montage() · homonin.signals.eeg.bandpower() · homonin.imaging.read_series() · homonin.imaging.series_metadata() · homonin.imaging.to_numpy() · homonin.molecular.read_structure() · homonin.molecular.parse_smiles() · homonin.molecular.load_embedding() · homonin.pharmacology.read_medication() · homonin.pharmacology.link_rxnorm() · homonin.pharmacology.parse_dose() · homonin.documentation.read_condition() · homonin.documentation.read_problem_list() · homonin.documentation.to_phenopacket() · homonin.labs.read_observation() · homonin.labs.read_panel() · homonin.labs.link_loinc() · homonin.genetics.read_vcf() · homonin.genetics.open_htsget() · homonin.genetics.parse_hgvs() · homonin.signals.ecg.read_ecg() · homonin.signals.ecg.detect_qrs() · homonin.signals.ecg.to_waveform() · homonin.signals.eeg.read_eeg() · homonin.signals.eeg.apply_montage() · homonin.signals.eeg.bandpower() · homonin.imaging.read_series() · homonin.imaging.series_metadata() · homonin.imaging.to_numpy() · homonin.molecular.read_structure() · homonin.molecular.parse_smiles() · homonin.molecular.load_embedding() · homonin.pharmacology.read_medication() · homonin.pharmacology.link_rxnorm() · homonin.pharmacology.parse_dose() · homonin.documentation.read_condition() · homonin.documentation.read_problem_list() · homonin.documentation.to_phenopacket() ·
~/homonin $ cat POSTSCRIPT.md
You, split into eight streams . # after Deleuze: the individual becomes the dividual. A body in the clinic arrives as labs, images, waveforms, variants and notes, each in its own standard. homonin.* reads every stream into a typed object and checks it against that standard. It never interprets and never scores.
# status: in development · not yet published to PyPI
tree homonin/
homonin/
├── core/ # vocabularies, units, provenance
├── labs/ # FHIR Observation · LOINC
├── genetics/ # VCF · HGVS · htsget
├── signals.ecg/ # aECG · WFDB
├── signals.eeg/ # EDF · MNE
├── imaging/ # DICOM
├── molecular/ # PDB · SMILES
├── pharmacology/ # RxNorm
└── documentation/ # SNOMED CT · Phenopacket ingest.py # Reads the native format.
model.py # Builds the typed object.
validate.py # Checks it against the standard.
homonin --list
glyph package standard calls
homonin.labs FHIR Observation · LOINC read_observation() read_panel() link_loinc()
homonin.genetics VCF · HGVS · htsget read_vcf() open_htsget() parse_hgvs()
homonin.signals.ecg aECG · WFDB read_ecg() detect_qrs() to_waveform()
homonin.signals.eeg EDF · MNE read_eeg() apply_montage() bandpower()
homonin.imaging DICOM read_series() series_metadata() to_numpy()
homonin.molecular PDB · SMILES read_structure() parse_smiles() load_embedding()
homonin.pharmacology RxNorm read_medication() link_rxnorm() parse_dose()
homonin.documentation SNOMED CT · Phenopacket read_condition() read_problem_list() to_phenopacket()
example.py · planned API
# planned API: not yet published
from homonin.labs import read_observation
obs = read_observation("observation.json") # FHIR Observation
obs.loinc # "2823-3" (Potassium)
obs.value # Quantity(4.1, "mmol/L")
obs.validate() # raises on anything off-standard punchcard --encode packages
Typed, validated, never scored. Get told when the first packages ship.