PSI-MOD Curator
Validation and curation tools for the PSI-MOD protein modification ontology. Focuses on structure validation using RDKit, cross-reference checking, and mass/formula consistency.
Installation
uvx psimod-validator
or
pipx run psimod-validator
Usage
Command Line
# Validate entire ontology
psimod-validator validate PSI-MOD.obo
# Validate and auto-fix issues (writes PSI-MOD.fixed.obo)
psimod-validator validate PSI-MOD.obo --fix
# Strict mode (warnings become errors)
psimod-validator validate PSI-MOD.obo --strict
# JSON or Markdown output
psimod-validator validate PSI-MOD.obo --format json -o report.json
# Check specific terms
psimod-validator check --ontology PSI-MOD.obo MOD:00046 MOD:00047
# Verify cross-references online (slow)
psimod-validator validate PSI-MOD.obo --check-online
Python API
from psimod_validator import PsiModValidator
validator = PsiModValidator("PSI-MOD.obo")
report = validator.validate_all()
print(f"Errors: {report.error_count}")
print(f"Warnings: {report.warning_count}")
print(f"Fixable: {len(report.fixable_issues)}")
for issue in report.errors:
print(f"{issue.mod_id}: [{issue.category}] {issue.message}")
Validation Rules
| Category | What it checks | Severity |
|---|---|---|
| SMILES | Parseable by RDKit, canonical form, valence errors, undefined stereocenters | ERROR / WARNING |
| Backbone | Dummy atom patterns via SMARTS, term_spec consistency | WARNING / ERROR |
| Mass | SMILES-computed mass/formula vs MassMono/Formula annotations | ERROR (fixable) |
| Charge | RDKit formal charge vs FormalCharge annotation | ERROR (fixable) |
| Xref | Unimod/UniProt PTM/Origin format, optional online verification | ERROR / WARNING |
| Structure | Term name, definition, parent relationships | ERROR / WARNING / INFO |
Metadata
Release files for psimod-validator 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| psimod_validator-0.1.0.tar.gz | 16.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| psimod_validator-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.0 kB
Release files / psimod_validator-0.1.0.tar.gz
| Download URL | psimod_validator-0.1.0.tar.gz |
|---|---|
| Size | 16.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31ac7f68b5b4ef653d458eb69a5dffda722496ceedead9271fac5338bdc58d4f
|
|
BLAKE2b-256 checksum How to use checksums |
a07d1ca2147c0a63df3862c05c8463d2b1989ec8af5f2c0fdf1386c039e5a17b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.
Transparency logRelease files / psimod_validator-0.1.0-py3-none-any.whl
| Download URL | psimod_validator-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f53baf2f0ef95fe1e0a49cdada4e9312cb9a347c6ccb5066956d5f24caad45d
|
|
BLAKE2b-256 checksum How to use checksums |
fa6f1c032deed61be81618f2d97e3e4b34ba8992b780652418e372646e35dfb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.
Transparency log