Le développement de médicaments est un processus complexe et long qui implique le criblage de milliers de médicaments candidats et l'utilisation de méthodes informatiques ou expérimentales pour évaluer les pistes. Selon McKinsey, un seul médicament peut prendre 10 ans et coûter en moyenne 2.6 milliards de dollars pour passer par l'identification de la cible de la maladie, le dépistage du médicament, la validation de la cible du médicament et le lancement commercial éventuel. La découverte de médicaments est la composante de recherche de ce pipeline qui génère des médicaments candidats avec la plus grande probabilité d'être efficaces avec le moins de dommages pour les patients. Les méthodes d'apprentissage automatique (ML) peuvent aider à identifier les composés appropriés à chaque étape du processus de découverte de médicaments, ce qui permet de rationaliser la hiérarchisation et les tests des médicaments, ce qui permet d'économiser des milliards de dollars en coûts de développement de médicaments (pour plus d'informations, reportez-vous à L'IA dans la recherche biopharmaceutique : il est temps de se concentrer et d'évoluer).
Les cibles médicamenteuses sont généralement des entités biologiques appelées protéines, les éléments constitutifs de la vie. La structure 3D d'une protéine détermine comment elle interagit avec un composé médicamenteux ; par conséquent, la compréhension de la structure 3D de la protéine peut apporter des améliorations significatives au processus de développement de médicaments en recherchant des composés médicamenteux qui correspondent mieux à la structure de la protéine cible. Un autre domaine où la prédiction de la structure des protéines peut être utile est la compréhension de la diversité des protéines, de sorte que nous ne sélectionnions que des médicaments qui ciblent sélectivement des protéines spécifiques sans affecter d'autres protéines dans le corps (pour plus d'informations, reportez-vous à Améliorer l'évaluation des cibles en recherche biomédicale : les recommandations du GOT-IT). Des structures 3D précises de protéines cibles peuvent permettre la conception de médicaments avec une spécificité plus élevée et une probabilité plus faible d'interactions croisées avec d'autres protéines.
Cependant, prédire comment les protéines se replient dans leur structure 3D est un problème difficile, et les méthodes expérimentales traditionnelles telles que la cristallographie aux rayons X et la spectroscopie RMN peuvent être longues et coûteuses. Les progrès récents des méthodes d'apprentissage en profondeur pour la recherche sur les protéines se sont révélés prometteurs dans l'utilisation des réseaux de neurones pour prédire le repliement des protéines avec une précision remarquable. Algorithmes de pliage comme AlphaFold2, ESMFold, OuvrirPliet une RoseTTAFold peut être utilisé pour construire rapidement des modèles précis de structures protéiques. Malheureusement, ces modèles sont coûteux en calcul et les résultats peuvent être difficiles à comparer à l'échelle de milliers de structures protéiques candidates. Une solution évolutive pour l'utilisation de ces différents outils permettra aux chercheurs et aux équipes R&D commerciales d'intégrer rapidement les dernières avancées en matière de prédiction de la structure des protéines, de gérer leurs processus d'expérimentation et de collaborer avec des partenaires de recherche.
Amazon Sage Maker est un service entièrement géré pour préparer, créer, former et déployer rapidement des modèles de ML de haute qualité en rassemblant un large éventail de fonctionnalités spécialement conçues pour le ML. Il offre un environnement entièrement géré pour le ML, en faisant abstraction de l'infrastructure, de la gestion des données et des exigences d'évolutivité afin que vous puissiez vous concentrer sur la création, la formation et le test de vos modèles.
Dans cet article, nous présentons une solution ML entièrement gérée avec SageMaker qui simplifie le fonctionnement des flux de travail de prédiction de la structure de repliement des protéines. Nous abordons d'abord la solution au plus haut niveau et son expérience utilisateur. Ensuite, nous vous expliquerons comment configurer facilement des flux de travail optimisés pour le calcul d'AlphaFold2 et d'OpenFold avec SageMaker. Enfin, nous montrons comment vous pouvez suivre et comparer les prédictions de la structure des protéines dans le cadre d'une analyse typique. Le code de cette solution est disponible ci-dessous GitHub référentiel.
Vue d'ensemble de la solution
Dans cette solution, les scientifiques peuvent lancer de manière interactive des expériences de repliement de protéines, analyser la structure 3D, surveiller la progression du travail et suivre les expériences dans Amazon SageMakerStudio.
La capture d'écran suivante montre une seule exécution d'un flux de travail de repliement de protéines avec Amazon SageMaker Studio. Il comprend la visualisation de la structure 3D dans un bloc-notes, l'état d'exécution des travaux SageMaker dans le flux de travail et des liens vers les paramètres d'entrée et les données et journaux de sortie.
Le schéma suivant illustre l'architecture de la solution de haut niveau.
Pour comprendre l'architecture, nous définissons d'abord les composants clés d'une expérience de repliement de protéines comme suit :
- Fichier de séquence cible FASTA - L' Format FASTA est un format textuel pour représenter des séquences de nucléotides ou des séquences d'acides aminés (protéines), dans lequel les nucléotides ou les acides aminés sont représentés à l'aide de codes à une seule lettre.
- Bases de données génétiques – Une base de données génétiques est un ou plusieurs ensembles de données génétiques stockées avec un logiciel pour permettre aux utilisateurs de récupérer des données génétiques. Plusieurs bases de données génétiques sont nécessaires pour exécuter les algorithmes AlphaFold et OpenFold, tels que BFD, MGnifier, PDB70, APB, Séquences PDB, UniRef30 (FKA UniClust30), UniProtet une UniRef90.
- Alignement de séquences multiples (MSA) - A alignement de séquences est une façon d'arranger les séquences primaires d'une protéine pour identifier les régions de similarité qui peuvent être une conséquence de relations fonctionnelles, structurelles ou évolutives entre les séquences. Les caractéristiques d'entrée pour les prédictions incluent les données MSA.
- Prédiction de la structure des protéines - La structure des séquences cibles d'entrée est prédite avec des algorithmes de repliement comme AlphaFold2 ainsi que OuvrirPli qui utilisent une architecture de transformateur multipiste formée sur des modèles de protéines connus.
- Visualisation et métriques – Visualisez la structure 3D avec le py3Dmol bibliothèque sous forme de visualisation 3D interactive. Vous pouvez utiliser des métriques pour évaluer et comparer les prévisions de structure, notamment écart quadratique moyen (RMSD) et modèle de modélisation Score (score TM)
Le workflow contient les étapes suivantes:
- Les scientifiques utilisent l'IDE Web SageMaker ML pour explorer la base de code, créer des workflows d'analyse de séquences de protéines dans les blocs-notes SageMaker Studio et exécuter des pipelines de repliement de protéines via l'interface utilisateur graphique de SageMaker Studio ou du SDK SageMaker.
- Les bases de données génétiques et structurelles requises par AlphaFold et OpenFold sont téléchargées avant la configuration du pipeline à l'aide de Traitement d'Amazon SageMaker, une fonctionnalité de calcul éphémère pour le traitement des données de ML, à un Service de stockage simple Amazon (Amazon S3). Avec SageMaker Processing, vous pouvez exécuter une tâche de longue durée avec un calcul approprié sans configurer de cluster de calcul ni de stockage et sans avoir besoin d'arrêter le cluster. Les données sont automatiquement enregistrées dans un emplacement de compartiment S3 spécifié.
- An Amazon FSx pour Lustre système de fichiers est configuré, le référentiel de données étant l'emplacement du compartiment S3 où les bases de données sont enregistrées. FSx for Lustre peut évoluer jusqu'à des centaines de Go/s de débit et des millions d'IOPS avec une récupération de fichiers à faible latence. Lors du démarrage d'une tâche d'estimateur, SageMaker monte le système de fichiers FSx for Lustre sur le système de fichiers de l'instance, puis démarre le script.
- Pipelines Amazon SageMaker est utilisé pour orchestrer plusieurs exécutions d'algorithmes de repliement de protéines. SageMaker Pipelines offre une interface visuelle souhaitée pour la soumission interactive des travaux, la traçabilité de la progression et la répétabilité.
- Au sein d'un pipeline, deux algorithmes de repliement de protéines lourds de calcul, AlphaFold et OpenFold, sont exécutés avec des estimateurs SageMaker. Cette configuration prend en charge le montage d'un système de fichiers FSx pour Lustre pour une recherche de base de données à haut débit dans les algorithmes. Une exécution d'inférence unique est divisée en deux étapes : une étape de construction MSA utilisant une instance CPU optimale et une étape de prédiction de structure utilisant une instance GPU. Ces sous-étapes, comme le traitement SageMaker à l'étape 2, sont éphémères, à la demande et entièrement gérées. Les sorties de tâches telles que les fichiers MSA, les fichiers de structure pdb prédite et d'autres fichiers de métadonnées sont enregistrés dans un emplacement S3 spécifié. Un pipeline peut être conçu pour exécuter un seul algorithme de repliement de protéines ou exécuter à la fois AlphaFold et OpenFold après une construction MSA commune.
- Les exécutions de la prédiction du repliement des protéines sont automatiquement suivies par Expériences Amazon SageMaker pour une analyse et une comparaison plus approfondies. Les journaux des travaux sont conservés dans Amazon Cloud Watch pour le suivi.
Pré-requis
Pour suivre cet article et exécuter cette solution, vous devez avoir rempli plusieurs prérequis. Se référer au GitHub référentiel pour une explication détaillée de chaque étape.
Exécutez le repliement des protéines sur SageMaker
Nous utilisons les capacités entièrement gérées de SageMaker pour exécuter des tâches de repliement de protéines lourdes en termes de calcul sans trop de surcharge d'infrastructure. SageMaker utilise des images de conteneur pour exécuter des scripts personnalisés pour le traitement, la formation et l'hébergement de données génériques. Vous pouvez facilement démarrer une tâche éphémère à la demande qui exécute un programme avec une image de conteneur avec quelques lignes du SDK SageMaker sans autogérer aucune infrastructure de calcul. Plus précisément, le travail d'estimateur SageMaker offre une flexibilité en ce qui concerne le choix de l'image de conteneur, du script d'exécution et de la configuration de l'instance, et prend en charge un grande variété d'options de stockage, y compris les systèmes de fichiers tels que FSx pour Lustre. Le schéma suivant illustre cette architecture.
Les algorithmes de repliement comme AlphaFold et OpenFold utilisent une architecture de transformateur multipiste entraînée sur des modèles de protéines connus pour prédire la structure de séquences peptidiques inconnues. Ces prédictions peuvent être exécutées sur des instances GPU pour fournir le meilleur débit et la latence la plus faible. Cependant, les caractéristiques d'entrée pour ces prédictions incluent les données MSA. Les algorithmes MSA dépendent du processeur et peuvent nécessiter plusieurs heures de temps de traitement.
L'exécution des étapes MSA et de prédiction de structure dans le même environnement informatique peut s'avérer peu rentable, car les ressources GPU coûteuses restent inactives pendant l'exécution de l'étape MSA. Par conséquent, nous optimisons le flux de travail en deux étapes. Tout d'abord, nous exécutons une tâche d'estimateur SageMaker sur une instance de CPU spécifiquement pour calculer l'alignement MSA en fonction d'une séquence d'entrée FASTA particulière et de bases de données génétiques sources. Ensuite, nous exécutons une tâche d'estimateur SageMaker sur une instance GPU pour prédire la structure de la protéine avec un alignement MSA d'entrée donné et un algorithme de repliement comme AlphaFold ou OpenFold.
Exécuter la génération MSA
Pour le calcul MSA, nous incluons un script personnalisé run_create_alignment.sh
ainsi que create_alignments.py
script adopté à partir de la source de prédiction AlphaFold existante run_alphafold.py. Notez que ce script peut devoir être mis à jour si le code source AlphaFold est mis à jour. Le script personnalisé est fourni à l'estimateur SageMaker via mode script. Les composants clés de l'image de conteneur, l'implémentation du mode script et la configuration d'un travail d'estimateur SageMaker font également partie de l'étape suivante de l'exécution des algorithmes de pliage et sont décrits plus en détail dans la section suivante.
Exécutez AlphaFold
Nous commençons par exécuter une prédiction de structure AlphaFold avec une seule séquence de protéines à l'aide de SageMaker. L'exécution d'un travail AlphaFold implique trois étapes simples, comme on peut le voir dans 01-run_stepbystep.ipynb
. Tout d'abord, nous construisons une image de conteneur Docker basée sur AlphaFold Dockerfile afin que nous puissions également exécuter AlphaFold dans Sage Maker. Deuxièmement, nous construisons le script run_alphafold.sh
qui indique comment AlphaFold doit être exécuté. Troisièmement, nous construisons et exécutons un Estimateur SageMaker avec le script, le conteneur, le type d'instance, les données et la configuration de la tâche.
Image du conteneur
L'exigence d'exécution pour qu'une image de conteneur exécute AlphaFold (OpenFold également) dans SageMaker peut être grandement simplifiée avec le Dockerfile d'AlphaFold. Nous n'avons qu'à ajouter une poignée de couches simples en haut pour installer une bibliothèque Python spécifique à SageMaker afin qu'un travail SageMaker puisse communiquer avec l'image du conteneur. Voir le code suivant :
Script d'entrée
Nous fournissons ensuite le script run_alphafold.sh
ça court run_alphafold.py du référentiel AlphaFold actuellement placé dans le conteneur /app/alphafold/run_alphafold.py
. Lorsque ce script est exécuté, l'emplacement des bases de données génétiques et la séquence d'entrée FASTA seront renseignés par SageMaker en tant que variables d'environnement (SM_CHANNEL_GENETIC
ainsi que SM_CHANNEL_FASTA
, respectivement). Pour plus d'informations, reportez-vous à Configuration des données d'entrée.
Poste d'estimateur
Nous créons ensuite une tâche à l'aide d'un estimateur SageMaker avec les arguments d'entrée clés suivants, qui indiquent à SageMaker d'exécuter un script spécifique à l'aide d'un conteneur spécifié avec le type ou le nombre d'instances, l'option de mise en réseau de votre choix et d'autres paramètres pour la tâche. vpc_subnet_ids
ainsi que security_group_ids
demandez au travail de s'exécuter dans un VPC spécifique où se trouve le système de fichiers FSx for Lustre afin que nous puissions monter et accéder au système de fichiers dans le travail SageMaker. Le chemin de sortie fait référence à un emplacement de compartiment S3 où le produit final d'AlphaFold sera téléchargé automatiquement à la fin d'une tâche réussie par SageMaker. Ici, nous définissons également un paramètre DB_PRESET
, par exemple, à transmettre et à accéder dans run_alphafold.sh
comme variable d'environnement pendant l'exécution. Voir le code suivant :
from sagemaker.estimator import Estimator
alphafold_image_uri=f'{account}.dkr.ecr.{region}.amazonaws.com/sagemaker-studio-alphafold:v2.3.0'
instance_type='ml.g5.2xlarge'
instance_count=1
vpc_subnet_ids=['subnet-xxxxxxxxx'] # okay to use a default VPC
security_group_ids=['sg-xxxxxxxxx']
env={'DB_PRESET': db_preset} # <full_dbs|reduced_dbs>
output_path='s3://%s/%s/job-output/'%(default_bucket, prefix) estimator_alphafold = Estimator(
source_dir='src', # directory where run_alphafold.sh and other runtime files locate
entry_point='run_alphafold.sh', # our script that runs /app/alphafold/run_alphafold.py
image_uri=alphafold_image_uri, # container image to use
instance_count=instance_count, #
instance_type=instance_type,
subnets=vpc_subnet_ids,
security_group_ids=security_group_ids,
environment=env,
output_path=output_path,
...)
Enfin, nous recueillons les données et faisons savoir au travail où elles se trouvent. Le fasta
Le canal de données est défini comme une entrée de données S3 qui sera téléchargée depuis un emplacement S3 dans l'instance de calcul au début de la tâche. Cela permet une grande flexibilité pour gérer et spécifier la séquence d'entrée. D'autre part, le genetic
le canal de données est défini comme un FileSystemInput
qui sera monté sur l'instance au début du travail. L'utilisation d'un système de fichiers FSx for Lustre comme moyen d'apporter près de 3 To de données évite le téléchargement répété de données d'un compartiment S3 vers une instance de calcul. Nous appelons le .fit
méthode pour lancer une tâche AlphaFold :
from sagemaker.inputs import FileSystemInput
file_system_id='fs-xxxxxxxxx'
fsx_mount_id='xxxxxxxx'
file_system_directory_path=f'/{fsx_mount_id}/{prefix}/alphafold-genetic-db' # should be the full prefix from the S3 data repository file_system_access_mode='ro' # Specify the access mode (read-only)
file_system_type='FSxLustre' # Specify your file system type genetic_db = FileSystemInput(
file_system_id=file_system_id,
file_system_type=file_system_type,
directory_path=file_system_directory_path,
file_system_access_mode=file_system_access_mode) s3_fasta=sess.upload_data(path='sequence_input/T1030.fasta', # FASTA location locally
key_prefix='alphafoldv2/sequence_input') # S3 prefix. Bucket is sagemaker default bucket
fasta = sagemaker.inputs.TrainingInput(s3_fasta,
distribution='FullyReplicated',
s3_data_type='S3Prefix',
input_mode='File')
data_channels_alphafold = {'genetic': genetic_db, 'fasta': fasta} estimator_alphafold.fit(inputs=data_channels_alphafold,
wait=False) # wait=False gets the cell back in the notebook; set to True to see the logs as the job progresses
C'est ça. Nous venons de soumettre une tâche à SageMaker pour exécuter AlphaFold. Les journaux et la sortie, y compris les fichiers de prédiction .pdb, seront écrits sur Amazon S3.
Exécutez OpenFold
L'exécution d'OpenFold dans SageMaker suit un modèle similaire, comme indiqué dans la seconde moitié de 01-run_stepbystep.ipynb
. Nous ajoutons d'abord une couche simple pour obtenir la bibliothèque spécifique à SageMaker afin de rendre l'image de conteneur compatible SageMaker en plus d'OpenFold. Dockerfile. Dans un deuxième temps, nous construisons un run_openfold.sh
comme point d'entrée pour le travail SageMaker. Dans run_openfold.sh
, nous exécutons le run_pretrained_openfold.py d'OpenFold, qui est disponible dans l'image du conteneur avec les mêmes bases de données génétiques que nous avons téléchargées pour les poids des modèles AlphaFold et OpenFold (--openfold_checkpoint_path
). En termes d'emplacements des données d'entrée, outre le canal des bases de données génétiques et le canal FASTA, nous introduisons un troisième canal, SM_CHANNEL_PARAM
, afin que nous puissions transmettre de manière flexible les poids de modèle choisis à partir de la construction de l'estimateur lorsque nous définissons et soumettons un travail. Avec l'estimateur SageMaker, nous pouvons facilement soumettre des travaux avec différents entry_point
, image_uri
, environment
, inputs
, et d'autres configurations pour OpenFold avec la même signature. Pour le canal de données, nous ajoutons un nouveau canal, param
, en tant qu'entrée Amazon S3 avec l'utilisation des mêmes bases de données génétiques du système de fichiers FSx for Lustre et du fichier FASTA d'Amazon S3. Ceci, encore une fois, nous permet de spécifier facilement le poids du modèle à utiliser à partir de la construction du travail. Voir le code suivant :
s3_param=sess.upload_data(path='openfold_params/finetuning_ptm_2.pt',
key_prefix=f'{prefix}/openfold_params')
param = sagemaker.inputs.TrainingInput(s3_param,
distribution="FullyReplicated",
s3_data_type="S3Prefix",
input_mode='File') data_channels_openfold = {"genetic": genetic_db, 'fasta': fasta, 'param': param} estimator_openfold.fit(inputs=data_channels_openfold,
wait=False)
Pour accéder au résultat final une fois la tâche terminée, nous exécutons les commandes suivantes :
!aws s3 cp {estimator_openfold.model_data} openfold_output/model.tar.gz
!tar zxfv openfold_output/model.tar.gz -C openfold_output/
Performances d'exécution
Le tableau suivant montre les économies de coûts de 57 % et 51 % pour AlphaFold et OpenFold, respectivement, en divisant les algorithmes d'alignement et de pliage MSA en deux tâches par rapport à une seule tâche de calcul. Cela nous permet de dimensionner correctement le calcul pour chaque tâche : ml.m5.4xlarge pour l'alignement MSA et ml.g5.2xlarge pour AlphaFold et OpenFold.
Détails de l'emploi | Type d'instance | Séquence d'entrée FASTA | Runtime | Prix |
Alignement MSA + OpenFold | ml.g5.4xlarge | T1030 | 50 mins | $1.69 |
Alignement MSA + AlphaFold | ml.g5.4xlarge | T1030 | 65 mins | $2.19 |
Alignement MSA | ml.m5.4xlarge | T1030 | 46 mins | $0.71 |
OuvrirPli | ml.g5.2xlarge | T1030 | 6 mins | $0.15 |
AlphaFold | ml.g5.2xlarge | T1030 | 21 mins | $0.53 |
Créez un flux de travail reproductible à l'aide de SageMaker Pipelines
Avec SageMaker Pipelines, nous pouvons créer un flux de travail ML qui prend en charge la gestion des données entre les étapes, l'orchestration de leurs exécutions et la journalisation. SageMaker Pipelines nous fournit également une interface utilisateur pour visualiser notre pipeline et exécuter facilement notre flux de travail ML.
Un pipeline est créé en combinant un certain nombre de mesures. Dans ce pipeline, nous combinons trois étapes de formation, qui nécessitent un estimateur SageMaker. Les estimateurs définis dans ce cahier sont très similaires à ceux définis dans 01-run_stepbystep.ipynb
, à l'exception du fait que nous utilisons les emplacements Amazon S3 pour pointer vers nos entrées et nos sorties. Les variables dynamiques permettent à SageMaker Pipelines d'exécuter les étapes les unes après les autres et permettent également à l'utilisateur de réessayer les étapes ayant échoué. La capture d'écran suivante montre un graphique acyclique dirigé (DAG), qui fournit des informations sur les exigences et les relations entre chaque étape de notre pipeline.
Variables dynamiques
SageMaker Pipelines est capable de prendre les entrées de l'utilisateur au début de chaque exécution de pipeline. Nous définissons les variables dynamiques suivantes, que nous souhaitons modifier à chaque expérience :
- FastaInputS3URI – URI Amazon S3 du fichier FASTA téléchargé via SDK, Boto3 ou manuellement.
- NomFichierFast – Nom du fichier FASTA.
- db_preset – Sélection entre
full_dbs
orreduced_dbs
. - DateModèleMax – L'étape MSA d'AlphaFold recherchera les modèles disponibles avant la date spécifiée par ce paramètre.
- ModèlePreset – Choisissez entre les modèles AlphaFold, y compris
monomer
,monomer_casp14
,monomer_ptm
et unemultimer
. - NumMultimerPredictionsPerModel – Nombre de graines à exécuter par modèle lors de l'utilisation d'un système multimère.
- InférenceInstanceType – Type d'instance à utiliser pour les étapes d'inférence (à la fois AlphaFold et OpenFold). La valeur par défaut est ml.g5.2xlarge.
- MSAInstanceType – Type d'instance à utiliser pour l'étape MSA. La valeur par défaut est ml.m5.4xlarge.
Voir le code suivant:
fasta_file = ParameterString(name="FastaFileName")
fasta_input = ParameterString(name="FastaInputS3URI")
pipeline_db_preset = ParameterString(name="db_preset",
default_value='full_dbs',
enum_values=['full_dbs', 'reduced_dbs'])
max_template_date = ParameterString(name="MaxTemplateDate")
model_preset = ParameterString(name="ModelPreset")
num_multimer_predictions_per_model = ParameterString(name="NumMultimerPredictionsPerModel")
msa_instance_type = ParameterString(name="MSAInstanceType", default_value='ml.m5.4xlarge')
instance_type = ParameterString(name="InferenceInstanceType", default_value='ml.g5.2xlarge')
Un pipeline SageMaker est construit en définissant une série d'étapes, puis en les enchaînant dans un ordre spécifique où la sortie d'une étape précédente devient l'entrée de l'étape suivante. Les étapes peuvent être exécutées en parallèle et définies pour avoir une dépendance sur une étape précédente. Dans ce pipeline, nous définissons une étape MSA, qui est la dépendance d'une étape d'inférence AlphaFold et d'une étape d'inférence OpenFold qui s'exécutent en parallèle. Voir le code suivant :
step_msa = TrainingStep(
name="RunMSA",
step_args=pipeline_msa_args,
) step_alphafold = TrainingStep(
name="RunAlphaFold",
step_args=pipeline_alphafold_default_args,
)
step_alphafold.add_depends_on([step_msa]) step_openfold = TrainingStep(
name="RunOpenFold",
step_args=pipeline_openfold_args,
)
step_openfold.add_depends_on([step_msa]
Pour rassembler toutes les étapes, nous appelons le Pipeline
class et fournissez un nom de pipeline, des variables d'entrée de pipeline et les étapes individuelles :
pipeline_name = f"ProteinFoldWorkflow"
pipeline = Pipeline(
name=pipeline_name,
parameters=[
fasta_input,
instance_type,
msa_instance_type,
pipeline_db_preset
],
steps=[step_msa, step_alphafold, step_openfold],
) pipeline.upsert(role_arn=role, # run this if it's the first time setting up the pipeline
description='Protein_Workflow_MSA')
Exécutez le pipeline
Dans la dernière cellule du cahier 02-define_pipeline.ipynb
, nous montrons comment exécuter un pipeline à l'aide du SDK SageMaker. Les variables dynamiques que nous avons décrites précédemment sont fournies comme suit :
!mkdir ./sequence_input/
!curl 'https://www.predictioncenter.org/casp14/target.cgi?target=T1030&view=sequence' > ./sequence_input/T1030.fasta
fasta_file_name = 'T1030.fasta' pathName = f'./sequence_input/{fasta_file_name}'
s3_fasta=sess.upload_data(path=pathName,
key_prefix='alphafoldv2/sequence_input') PipelineParameters={ 'FastaInputS3URI':s3_fasta, 'db_preset': 'full_dbs', 'FastaFileName': fasta_file_name, 'MaxTemplateDate': '2020-05-14', 'ModelPreset': 'monomer', 'NumMultimerPredictionsPerModel': '5', 'InferenceInstanceType':'ml.g5.2xlarge', 'MSAInstanceType':'ml.m5.4xlarge'
}
execution = pipeline.start(execution_display_name='SDK-Executetd',
execution_description='This pipeline was executed via SageMaker SDK',
parameters=PipelineParameters
)
Suivre les expériences et comparer les structures des protéines
Pour notre expérience, nous utilisons un exemple de séquence protéique de la CASP14 concurrence, qui fournit un mécanisme indépendant pour l'évaluation des méthodes de modélisation de la structure des protéines. La cible T1030 est dérivé de la protéine PDB 6P00 et possède 237 acides aminés dans la séquence primaire. Nous exécutons le pipeline SageMaker pour prédire la structure protéique de cette séquence d'entrée avec les algorithmes OpenFold et AlphaFold.
Lorsque le pipeline est terminé, nous téléchargeons les fichiers .pdb prédits à partir de chaque tâche de pliage et visualisons la structure dans le cahier à l'aide py3Dmol, comme dans le cahier 04-compare_alphafold_openfold.ipynb
.
La capture d'écran suivante montre la prédiction de la tâche de prédiction AlphaFold.
La structure prédite est comparée à sa structure de référence de base connue avec le code PDB 6poo archivé dans RCSB. Nous analysons les performances de prédiction par rapport au code PDB de base 6poo avec trois métriques : RMSD, RMSD avec superposition et score de modélisation de modèle, comme décrit dans Comparer des structures.
. | Séquence d'entrée | Comparaison avec | RMSD | RMSD avec superposition | Score de modélisation du modèle |
AlphaFold | T1030 | 6poo | 247.26 | 3.87 | 0.3515 |
Les algorithmes de pliage sont maintenant comparés les uns aux autres pour plusieurs séquences FASTA : T1030, T1090et une T1076. Les nouvelles séquences cibles peuvent ne pas avoir la structure pdb de base dans les bases de données de référence et il est donc utile de comparer la variabilité entre les algorithmes de repliement.
. | Séquence d'entrée | Comparaison avec | RMSD | RMSD avec superposition | Score de modélisation du modèle |
AlphaFold | T1030 | OuvrirPli | 73.21 | 24.8 | 0.0018 |
AlphaFold | T1076 | OuvrirPli | 38.71 | 28.87 | 0.0047 |
AlphaFold | T1090 | OuvrirPli | 30.03 | 20.45 | 0.005 |
La capture d'écran suivante montre les exécutions de ProteinFoldWorkflow
pour les trois séquences d'entrée FASTA avec SageMaker Pipeline :
Nous enregistrons également les métriques avec SageMaker Experiments en tant que nouvelles exécutions de la même expérience créée par le pipeline :
from sagemaker.experiments.run import Run, load_run
metric_type='compare:'
experiment_name = 'proteinfoldworkflow'
with Run(experiment_name=experiment_name, run_name=input_name_1, sagemaker_session=sess) as run:
run.log_metric(name=metric_type + "rmsd_cur", value=rmsd_cur_one, step=1)
run.log_metric(name=metric_type + "rmds_fit", value=rmsd_fit_one, step=1)
run.log_metric(name=metric_type + "tm_score", value=tmscore_one, step=1)
Nous analysons et visualisons ensuite ces parcours sur le Expériences page dans SageMaker Studio.
Le graphique suivant illustre la valeur RMSD entre AlphaFold et OpenFold pour les trois séquences : T1030, T1076 et T1090.
Conclusion
Dans cet article, nous avons décrit comment vous pouvez utiliser SageMaker Pipelines pour configurer et exécuter des flux de travail de repliement de protéines avec deux algorithmes de prédiction de structure populaires : AlphaFold2 et OpenFold. Nous avons démontré une architecture de solution performante en termes de prix de plusieurs tâches qui sépare les exigences de calcul pour la génération MSA de la prédiction de structure. Nous avons également souligné comment vous pouvez visualiser, évaluer et comparer les structures 3D prédites des protéines dans SageMaker Studio.
Pour démarrer avec les flux de travail de repliement des protéines sur SageMaker, reportez-vous à l'exemple de code dans le GitHub repo.
À propos des auteurs
Michel Hsieh est un architecte principal de solutions spécialisées en IA/ML. Il travaille avec les clients HCLS pour faire avancer leur parcours ML avec les technologies AWS et son expertise en imagerie médicale. En tant que greffé de Seattle, il adore explorer la grande mère nature que la ville a à offrir, comme les sentiers de randonnée, le paysage en kayak dans la SLU et le coucher de soleil à Shilshole Bay.
Shivam Patel est architecte de solutions chez AWS. Il vient d'une formation en R&D et combine cela avec ses connaissances en affaires pour résoudre les problèmes complexes auxquels sont confrontés ses clients. Shivam est surtout passionné par les charges de travail dans l'apprentissage automatique, la robotique, l'IoT et le calcul haute performance.
Hassan Poonawala est architecte principal de solutions spécialisées en IA/ML chez AWS, Hasan aide les clients à concevoir et à déployer des applications d'apprentissage automatique en production sur AWS. Il a plus de 12 ans d'expérience professionnelle en tant que scientifique des données, praticien en apprentissage automatique et développeur de logiciels. Dans ses temps libres, Hasan aime explorer la nature et passer du temps avec ses amis et sa famille.
Jasleen Grewal est scientifique appliquée senior chez Amazon Web Services, où elle travaille avec des clients AWS pour résoudre des problèmes du monde réel à l'aide de l'apprentissage automatique, avec un accent particulier sur la médecine de précision et la génomique. Elle possède une solide expérience en bioinformatique, en oncologie et en génomique clinique. Elle est passionnée par l'utilisation de l'IA/ML et des services cloud pour améliorer les soins aux patients.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Automobile / VE, Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- Décalages de bloc. Modernisation de la propriété des compensations environnementales. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/build-protein-folding-workflows-to-accelerate-drug-discovery-on-amazon-sagemaker/
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 10
- 100
- 12
- 3d
- 7
- 9
- a
- A Propos
- AC
- accélérer
- accès
- accédé
- précision
- Avec cette connaissance vient le pouvoir de prendre
- acyclique
- ajouter
- adopté
- avancer
- avances
- affectant
- Après
- encore
- à opposer à
- AI / ML
- algorithme
- algorithmes
- alignement
- Tous
- permettre
- permet
- le long de
- aussi
- Amazon
- Amazon Sage Maker
- Amazon SageMakerStudio
- Amazon Web Services
- an
- selon une analyse de l’Université de Princeton
- il analyse
- ainsi que
- Une autre
- tous
- applications
- appliqué
- architecture
- SONT
- Réservé
- arguments
- AS
- Évaluation de risque climatique
- At
- automatiquement
- disponibles
- moyen
- et
- AWS
- RETOUR
- fond
- base
- basé
- baie
- BE
- car
- devient
- before
- Début
- va
- outre
- LES MEILLEURS
- Améliorée
- jusqu'à XNUMX fois
- Milliards
- milliards
- biomédical
- biopharmacie
- Blocs
- corps
- tous les deux
- apporter
- Apporter
- vaste
- construire
- Développement
- la performance des entreprises
- by
- Appelez-nous
- appelé
- CAN
- candidat
- candidats
- capacités
- capable
- les soins
- Change
- Développement
- Graphique
- le choix
- Ville
- classe
- Infos sur les
- Fermer
- le cloud
- services de cloud computing
- Grappe
- code
- base de code
- codes
- collaborons
- combiner
- moissonneuses-batteuses
- vient
- commercial
- Commun
- communiquer
- comparer
- par rapport
- Comparaison
- compatible
- concurrence
- complet
- Complété
- finalise
- complexe
- composant
- composants électriques
- Composé
- calcul
- calcul
- informatique
- configuration
- construire
- construction
- Contenant
- contient
- Prix
- les économies de coûts
- Costs
- Couples
- engendrent
- créée
- Lecture
- Customiser
- Clients
- JOUR
- données
- gestion des données
- informatique
- Data Scientist
- Base de données
- bases de données
- Date
- profond
- l'apprentissage en profondeur
- Réglage par défaut
- Vous permet de définir
- défini
- définir
- démontrer
- démontré
- Dépendance
- déployer
- Dérivé
- décrit
- Conception
- un
- voulu
- détaillé
- Déterminer
- détermine
- Développeur
- Développement
- différent
- difficile
- découverte
- discuter
- Maladie
- Diversité
- divisé
- Docker
- down
- download
- drogue
- Médicaments
- pendant
- Dynamic
- chacun
- Plus tôt
- même
- Efficace
- non plus
- permettre
- fin
- entités
- entrée
- Environment
- environnementales
- évaluer
- éventuellement
- Chaque
- exemple
- exception
- réalisé
- exécution
- existant
- cher
- d'experience
- expérience
- expériences
- nous a permis de concevoir
- explication
- explorez
- Explorer
- face
- Échoué
- famille
- Fonctionnalité
- Fonctionnalités:
- Déposez votre dernière attestation
- Fichiers
- finale
- finalement
- Prénom
- première fois
- s'adapter
- Flexibilité
- flexible
- Focus
- suivre
- Abonnement
- suit
- Pour
- le format
- amis
- De
- plein
- d’étiquettes électroniques entièrement
- fonctionnel
- plus
- recueillir
- génère
- génération
- génomique
- obtenez
- donné
- Go
- GPU
- graphique
- l'
- considérablement
- Half
- main
- poignée
- nuire
- Vous avez
- he
- lourd
- vous aider
- aide
- ici
- Haute
- de haut niveau
- haute performance
- de haute qualité
- augmentation
- le plus élevé
- Surbrillance
- sa
- hébergement
- HEURES
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- Des centaines
- Identification
- identifier
- Idle
- if
- illustre
- image
- satellite
- Imagerie
- la mise en oeuvre
- importer
- améliorer
- améliorations
- in
- comprendre
- inclut
- Y compris
- intégrer
- indépendant
- individuel
- d'information
- Infrastructure
- contribution
- entrées
- à l'intérieur
- installer
- instance
- Interactif
- interagit
- Interfaces
- développement
- introduire
- IOT
- IT
- SES
- Emploi
- Emplois
- chemin
- jpg
- juste
- conservé
- ACTIVITES
- coup de pied
- Savoir
- spécialisées
- connu
- Nom
- Latence
- Nouveautés
- lancer
- couche
- poules pondeuses
- Conduit
- apprentissage
- au
- laisser
- Niveau
- Bibliothèque
- VIE
- comme
- probabilité
- lignes
- Gauche
- localement
- emplacement
- emplacements
- enregistrer
- enregistrement
- Location
- aime
- baisser
- le plus bas
- click
- machine learning
- a prendre une
- gérer
- gérés
- gestion
- les gérer
- manuellement
- Mai..
- McKinsey
- mécanisme
- médical
- médecine
- Métadonnées
- méthode
- méthodes
- Métrique
- des millions
- ML
- Mode
- modèle
- modélisation statistique
- numériques jumeaux (digital twin models)
- Surveiller
- Stack monitoring
- PLUS
- (en fait, presque toutes)
- mère
- MONTER
- beaucoup
- plusieurs
- prénom
- Nature
- Besoin
- besoin
- de mise en réseau
- réseaux
- les réseaux de neurones
- Nouveauté
- nouvelle cible
- next
- NIH
- notamment
- cahier
- maintenant
- nombre
- of
- de rabais
- code
- Offres Speciales
- Bien
- on
- À la demande
- ONE
- uniquement
- sur
- opération
- optimaux
- Optimiser
- Option
- or
- de commander
- Autre
- nos
- sortie
- plus de
- page
- Parallèle
- paramètre
- paramètres
- partie
- particulier
- partenaires,
- pass
- passé
- passionné
- chemin
- patientforward
- patients
- Patron de Couture
- /
- performant
- pipeline
- Platon
- Intelligence des données Platon
- PlatonDonnées
- Point
- Populaire
- peuplé
- Post
- précis
- La précision
- prévoir
- prédit
- prévoir
- prédiction
- Prédictions
- Préparer
- conditions préalables
- représentent
- précédent
- prix
- primaire
- Directeur
- Avant
- contextualisée
- Problème
- d'ouvrabilité
- processus
- les process
- traitement
- Produit
- Vidéo
- Programme
- Progrès
- PROMETTONS
- correct
- Protéines
- Protéines
- fournir
- à condition de
- fournit
- mettre
- Python
- vite.
- R & D
- réal
- monde réel
- récent
- se réfère
- régions
- Les relations
- rester
- remarquables
- répétable
- À PLUSIEURS REPRISES
- dépôt
- représenté
- représentation
- exigent
- conditions
- exigence
- Exigences
- un article
- chercheurs
- Resources
- respectivement
- résultant
- Résultats
- robotique
- Courir
- pour le running
- fonctionne
- s
- sagemaker
- Pipelines SageMaker
- même
- économie
- Épargnes
- Évolutivité
- évolutive
- Escaliers intérieurs
- Sciences
- Scientifique
- scientifiques
- But
- dépistage
- scripts
- Sdk
- Rechercher
- Seattle
- Deuxièmement
- Section
- sur le lien
- graines
- vu
- sélection
- supérieur
- Séquence
- Série
- service
- Services
- set
- Sets
- mise
- installation
- plusieurs
- elle
- devrait
- montrer
- montré
- Spectacles
- arrêter
- significative
- similaires
- étapes
- simplifié
- unique
- So
- Logiciels
- sur mesure
- Solutions
- RÉSOUDRE
- Identifier
- spécial
- spécialiste
- groupe de neurones
- spécifiquement
- spécificité
- spécifié
- Spectroscopie
- passer
- Étape
- Commencer
- j'ai commencé
- Commencez
- départs
- Statut
- étapes
- Étapes
- storage
- stockée
- rationalisé
- STRONG
- de construction
- structure
- studio
- Soumission
- soumettre
- soumis
- réussi
- tel
- convient
- Sunset
- superposition
- Les soutiens
- combustion propre
- Système
- table
- Prenez
- prend
- prise
- Target
- objectifs
- équipes
- Les technologies
- modèle
- modèles
- conditions
- Essais
- qui
- La
- La Source
- leur
- Les
- puis
- donc
- Ces
- l'ont
- Troisièmement
- this
- ceux
- milliers
- trois
- Avec
- débit
- fiable
- long
- à
- ensemble
- les outils
- top
- Traçabilité
- suivre
- traditionnel
- Train
- qualifié
- Formation
- transformateur
- oui
- deux
- type
- débutante
- typiquement
- ui
- comprendre
- compréhension
- malheureusement
- inconnu
- a actualisé
- téléchargé
- us
- utilisé
- d'utiliser
- Utilisateur
- Expérience utilisateur
- Interface utilisateur
- utilisateurs
- Usages
- en utilisant
- validation
- Plus-value
- variété
- divers
- très
- via
- visualisation
- était
- Façon..
- we
- web
- services Web
- Basé sur le Web
- poids
- WELL
- quand
- qui
- tout en
- Wikipédia
- sera
- comprenant
- dans les
- sans
- activités principales
- workflow
- workflows
- vos contrats
- world
- pourra
- code écrit
- radiographie
- années
- Vous n'avez
- Votre
- zéphyrnet