Le SDK ClinVCF est la boîte à outils Python officielle pour créer des modules qui s'intègrent nativement dans ClinVCF-OS. Pharmacogénomique, classification ACMG, annotation, prédiction — vos algorithmes, notre plateforme.
Une seule commande, pas de dépendances exotiques. Compatible Python 3.10, 3.11, 3.12 et 3.13.
# Depuis PyPI (recommandé) $ pip install clinvcf-sdk # Vérification $ python -c "import clinvcf_sdk; print(clinvcf_sdk.SDK_VERSION)" 1.0.1
Note : Le SDK seul ne fait rien — il définit le contrat entre vos modules et la plateforme ClinVCF-OS. Pour tester votre module en conditions réelles, installez également ClinVCF-OS.
Des contrats clairs, des types validés, une intégration QML directe. Tout ce qu'il faut, rien de plus.
Classe abstraite que vous étendez. Implémentez run() et render_report(), le reste est géré.
ModuleResult, GeneCallResult, DrugRecommendation, CoverageReport — tous typés avec pydantic, prêts pour l'audit.
to_qml_payload() sérialise vos résultats pour l'affichage dans ClinVCF-OS — graphique, badges, recommandations.
Tier (Community/Pro/Team/Enterprise), QuotaTracker, LicenseChecker — gérez les niveaux d'accès sans réinventer la roue.
Génération automatique des avertissements Research Use Only dans tous vos rapports — conformité juridique de série.
Manifest schema validé, structure standard, signature — tout prêt pour la distribution sur le ClinStore.
Une arborescence simple, conforme au schéma .cvf attendu par le ClinStore.
my-module/ ├── manifest.json # Métadonnées (id, version, deps, entrée) ├── logo.svg # Icône carrée (256×256) ├── pyproject.toml # Dépendances Python ├── my_module/ │ ├── __init__.py │ └── main.py # Votre module hérite de ClinVCFModule └── tests/ └── test_main.py # Pytest — requis pour la certification
Implémentez les méthodes run() et render_report(). Le SDK s'occupe du reste : validation manifest, injection patient, sérialisation UI.
from datetime import datetime, timezone from clinvcf_sdk import ( ClinVCFModule, ModuleResult, ReportFormat, PatientMetadata, to_qml_payload, ) class MyModule(ClinVCFModule): """Mon module d'analyse génomique.""" def run(self, vcf_path: str, patient: PatientMetadata, config: dict) -> ModuleResult: # Votre logique d'analyse ici gene_results = self._analyze(vcf_path) return ModuleResult( module_id="my-module", module_version="1.0.0", sdk_version=clinvcf_sdk.SDK_VERSION, executed_at=datetime.now(timezone.utc), gene_results=gene_results, ) def render_report(self, result, fmt, language="fr"): if fmt == ReportFormat.QML_PAYLOAD: return json.dumps(to_qml_payload(result)).encode() # PDF, JSON, HTML...
Un .cvf est juste un .zip renommé contenant votre code et son manifest. Le ClinStore le lira tel quel.
$ cd my-module $ zip -r my-module-1.0.0.cvf manifest.json logo.svg my_module/ # C'est tout. Vous pouvez le tester localement : # 1. Lancer ClinVCF-OS # 2. Glisser my-module-1.0.0.cvf dans le ClinStore # 3. Cliquer "Installer"
Quand vous êtes prêt à publier, soumettez votre module au ClinStore. La CI valide automatiquement (pytest, schéma, deps), et un score de certification est calculé.
Voir la marketplace →Modules audités manuellement par notre équipe. Sources, tests, deps, sécurité — tout est passé en revue. Badge violet "F©" sur l'icône.
Exemples : PharmGx, PredSoma, PredConst.
Modules qui passent la CI automatique : pytest verts, manifest valide, deps clean, smoke test OK. Listés sur la marketplace avec leur score.
Le développeur reste responsable du contenu — disclaimer RUO obligatoire à l'install.
Le module est rejeté. Le développeur reçoit le détail de ce qui ne passe pas (tests manquants, dépendances vulnérables, etc.) et peut resoumettre après corrections.
Le SDK est open-source, la documentation est libre, et les premiers contributeurs auront leur module mis en avant sur la page d'accueil de la marketplace.