Intégration LatchBio
Vue d'ensemble
Latch est un framework Python pour construire et déployer des workflows de bioinformatique comme des pipelines serverless. Construit sur Flyte, créez des workflows avec les décorateurs @workflow/@task, gérez les données cloud avec LatchFile/LatchDir, configurez les ressources et intégrez les pipelines Nextflow/Snakemake.
Capacités principales
La plateforme Latch propose quatre domaines de fonctionnalité :
1. Création et déploiement de workflows
- Définissez des workflows serverless avec des décorateurs Python
- Support pour les pipelines Python natifs, Nextflow et Snakemake
- Conteneurisation automatique avec Docker
- Interfaces utilisateur sans code auto-générées
- Contrôle de version et reproductibilité
2. Gestion des données
- Abstractions de stockage cloud (LatchFile, LatchDir)
- Organisation structurée des données avec Registry (Projects → Tables → Records)
- Opérations de données type-safe avec liens et énumérations
- Transfert automatique de fichiers entre local et cloud
- Correspondance par pattern glob pour la sélection de fichiers
3. Configuration des ressources
- Décorateurs de tâche préconfigurés (@small_task, @large_task, @small_gpu_task, @large_gpu_task)
- Spécifications de ressources personnalisées (CPU, mémoire, GPU, stockage)
- Support GPU (K80, V100, A100)
- Configuration des timeouts et du stockage
- Stratégies d'optimisation des coûts
4. Workflows vérifiés
- Pipelines pré-construits prêts pour la production
- Bulk RNA-seq, DESeq2, analyse de voies biologiques
- AlphaFold et ColabFold pour la prédiction de structure protéique
- Outils single-cell (ArchR, scVelo, emptyDropsR)
- Analyse CRISPR, phylogénétique et bien plus
Démarrage rapide
Installation et configuration
# Installer Latch SDK
python3 -m uv pip install latch
# Se connecter à Latch
latch login
# Initialiser un nouveau workflow
latch init my-workflow
# Enregistrer le workflow sur la plateforme
latch register my-workflow
Prérequis :
- Docker installé et en cours d'exécution
- Identifiants de compte Latch
- Python 3.8+
Exemple de workflow basique
from latch import workflow, small_task
from latch.types import LatchFile
@small_task
def process_file(input_file: LatchFile) -> LatchFile:
"""Traiter un fichier unique"""
# Logique de traitement
return output_file
@workflow
def my_workflow(input_file: LatchFile) -> LatchFile:
"""
Mon workflow de bioinformatique
Args:
input_file: Fichier de données d'entrée
"""
return process_file(input_file=input_file)
Quand utiliser cette compétence
Cette compétence doit être utilisée dans les scénarios suivants :
Développement de workflows :
- « Créer un workflow Latch pour l'analyse RNA-seq »
- « Déployer mon pipeline sur Latch »
- « Convertir mon pipeline Nextflow en Latch »
- « Ajouter le support GPU à mon workflow »
- Travail avec les décorateurs
@workflow,@task
Gestion des données :
- « Organiser mes données de séquençage dans Latch Registry »
- « Comment utiliser LatchFile et LatchDir ? »
- « Configurer le suivi des échantillons dans Latch »
- Travail avec les chemins
latch:///
Configuration des ressources :
- « Configurer GPU pour AlphaFold sur Latch »
- « Ma tâche manque de mémoire »
- « Comment optimiser les coûts du workflow ? »
- Travail avec les décorateurs de tâche
Workflows vérifiés :
- « Exécuter AlphaFold sur Latch »
- « Utiliser DESeq2 pour l'expression différentielle »
- « Workflows pré-construits disponibles »
- Utilisation du module
latch.verified
Documentation détaillée
Cette compétence inclut une documentation de référence complète organisée par capacité :
references/workflow-creation.md
Lisez ceci pour :
- Créer et enregistrer des workflows
- Définition et décorateurs de tâche
- Support Python, Nextflow, Snakemake
- Plans de lancement et sections conditionnelles
- Exécution de workflows (CLI et programmatique)
- Pipelines multi-étapes et parallèles
- Dépannage des problèmes d'enregistrement
Thèmes clés :
- Commandes
latch initetlatch register - Décorateurs
@workflowet@task - Bases de LatchFile et LatchDir
- Annotations de type et docstrings
- Plans de lancement avec paramètres prédéfinis
- Sections UI conditionnelles
references/data-management.md
Lisez ceci pour :
- Stockage cloud avec LatchFile et LatchDir
- Système Registry (Projects, Tables, Records)
- Enregistrements liés et relations
- Colonnes énumérées et typées
- Opérations en masse et transactions
- Intégration avec les workflows
- Gestion des comptes et espaces de travail
Thèmes clés :
- Format de chemin
latch:/// - Transfert de fichiers et patterns glob
- Création et interrogation de tables Registry
- Types de colonnes (string, number, file, link, enum)
- Opérations CRUD sur les enregistrements
- Intégration Workflow-Registry
references/resource-configuration.md
Lisez ceci pour :
- Décorateurs de ressources de tâche
- Configuration personnalisée du CPU, mémoire, GPU
- Types de GPU (K80, V100, A100)
- Paramètres de timeout et stockage
- Stratégies d'optimisation des ressources
- Conception de workflows économes
- Surveillance et débogage
Thèmes clés :
@small_task,@large_task,@small_gpu_task,@large_gpu_task@custom_taskavec spécifications précises- Configuration multi-GPU
- Sélection des ressources par type de charge de travail
- Limites et quotas de plateforme
references/verified-workflows.md
Lisez ceci pour :
- Workflows pré-construits en production
- Bulk RNA-seq et DESeq2
- AlphaFold et ColabFold
- Analyse single-cell (ArchR, scVelo)
- Analyse d'édition CRISPR
- Enrichissement de voies biologiques
- Intégration avec les workflows personnalisés
Thèmes clés :
- Imports du module
latch.verified - Workflows vérifiés disponibles
- Paramètres et options de workflow
- Combinaison d'étapes vérifiées et personnalisées
- Gestion des versions
Patterns de workflows courants
Pipeline RNA-seq complet
from latch import workflow, small_task, large_task
from latch.types import LatchFile, LatchDir
@small_task
def quality_control(fastq: LatchFile) -> LatchFile:
"""Exécuter FastQC"""
return qc_output
@large_task
def alignment(fastq: LatchFile, genome: str) -> LatchFile:
"""Alignement STAR"""
return bam_output
@small_task
def quantification(bam: LatchFile) -> LatchFile:
"""featureCounts"""
return counts
@workflow
def rnaseq_pipeline(
input_fastq: LatchFile,
genome: str,
output_dir: LatchDir
) -> LatchFile:
"""Pipeline d'analyse RNA-seq"""
qc = quality_control(fastq=input_fastq)
aligned = alignment(fastq=qc, genome=genome)
return quantification(bam=aligned)
Workflow accéléré par GPU
from latch import workflow, small_task, large_gpu_task
from latch.types import LatchFile
@small_task
def preprocess(input_file: LatchFile) -> LatchFile:
"""Préparer les données"""
return processed
@large_gpu_task
def gpu_computation(data: LatchFile) -> LatchFile:
"""Analyse accélérée par GPU"""
return results
@workflow
def gpu_pipeline(input_file: LatchFile) -> LatchFile:
"""Pipeline avec tâches GPU"""
preprocessed = preprocess(input_file=input_file)
return gpu_computation(data=preprocessed)
Workflow intégré à Registry
from latch import workflow, small_task
from latch.registry.table import Table
from latch.registry.record import Record
from latch.types import LatchFile
@small_task
def process_and_track(sample_id: str, table_id: str) -> str:
"""Traiter l'échantillon et mettre à jour Registry"""
# Récupérer l'échantillon depuis la registry
table = Table.get(table_id=table_id)
records = Record.list(table_id=table_id, filter={"sample_id": sample_id})
sample = records[0]
# Traiter
input_file = sample.values["fastq_file"]
output = process(input_file)
# Mettre à jour la registry
sample.update(values={"status": "completed", "result": output})
return "Success"
@workflow
def registry_workflow(sample_id: str, table_id: str):
"""Workflow intégré à Registry"""
return process_and_track(sample_id=sample_id, table_id=table_id)
Bonnes pratiques
Conception de workflows
- Utilisez les annotations de type pour tous les paramètres
- Écrivez des docstrings clairs (apparaissent dans l'UI)
- Commencez par les décorateurs de tâche standard, augmentez si nécessaire
- Divisez les workflows complexes en tâches modulaires
- Implémentez une gestion des erreurs appropriée
Gestion des données
- Utilisez des structures de dossiers cohérentes
- Définissez les schémas Registry avant l'entrée en masse
- Utilisez les enregistrements liés pour les relations
- Stockez les métadonnées dans Registry pour la traçabilité
Configuration des ressources
- Dimensionnez correctement les ressources (sans sur-allocation)
- Utilisez GPU uniquement quand les algorithmes le supportent
- Surveillez les métriques d'exécution et optimisez
- Concevez pour l'exécution parallèle si possible
Flux de développement
- Testez localement avec Docker avant l'enregistrement
- Utilisez le contrôle de version pour le code du workflow
- Documentez les exigences en ressources
- Profilez les workflows pour déterminer les besoins réels
Dépannage
Problèmes courants
Échecs d'enregistrement :
- Assurez-vous que Docker est en cours d'exécution
- Vérifiez l'authentification avec
latch login - Vérifiez toutes les dépendances dans le Dockerfile
- Utilisez le drapeau
--verbosepour des logs détaillés
Problèmes de ressources :
- Manque de mémoire : Augmentez la mémoire dans le décorateur de tâche
- Timeouts : Augmentez le paramètre de timeout
- Problèmes de stockage : Augmentez storage_gib
Accès aux données :
- Utilisez le format de chemin
latch:///correct - Vérifiez que le fichier existe dans l'espace de travail
- Vérifiez les permissions pour les espaces de travail partagés
Erreurs de type :
- Ajoutez des annotations de type à tous les paramètres
- Utilisez LatchFile/LatchDir pour les paramètres fichier/répertoire
- Assurez-vous que le type de retour du workflow correspond au retour réel
Ressources supplémentaires
- Documentation officielle : https://docs.latch.bio
- Dépôt GitHub : https://github.com/latchbio/latch
- Communauté Slack : Rejoignez l'espace de travail Latch SDK
- Référence API : https://docs.latch.bio/api/latch.html
- Blog : https://blog.latch.bio
Support
Pour les problèmes ou les questions :
- Consultez les liens de documentation ci-dessus
- Recherchez dans les issues GitHub
- Posez des questions dans la communauté Slack
- Contactez support@latch.bio