Geneesmiddelenontwikkeling is een complex en langdurig proces waarbij duizenden kandidaat-geneesmiddelen worden gescreend en computer- of experimentele methoden worden gebruikt om leads te evalueren. Volgens McKinsey, kan een enkel medicijn 10 jaar duren en gemiddeld $ 2.6 miljard kosten om de identificatie van het ziektedoel, de screening van het medicijn, de validatie van het medicijndoel en de uiteindelijke commerciële lancering te doorlopen. Geneesmiddelenontdekking is de onderzoekscomponent van deze pijplijn die kandidaat-geneesmiddelen genereert met de grootste waarschijnlijkheid om effectief te zijn met de minste schade aan patiënten. Methoden voor machinaal leren (ML) kunnen helpen bij het identificeren van geschikte verbindingen in elke fase van het geneesmiddelenontdekkingsproces, wat resulteert in een meer gestroomlijnde prioritering en testen van geneesmiddelen, waardoor miljarden worden bespaard op de ontwikkelingskosten van geneesmiddelen (voor meer informatie, zie AI in biofarmaceutisch onderzoek: een tijd om te focussen en op te schalen).
Drug targets worden typisch biologische entiteiten genoemd eiwitten, de bouwstenen van het leven. De 3D-structuur van een eiwit bepaalt hoe het interageert met een geneesmiddel; daarom kan het begrijpen van de eiwit-3D-structuur aanzienlijke verbeteringen toevoegen aan het ontwikkelingsproces van geneesmiddelen door te screenen op geneesmiddelverbindingen die beter passen bij de beoogde eiwitstructuur. Een ander gebied waar voorspelling van de eiwitstructuur nuttig kan zijn, is het begrijpen van de diversiteit van eiwitten, zodat we alleen medicijnen selecteren die zich selectief richten op specifieke eiwitten zonder andere eiwitten in het lichaam te beïnvloeden (voor meer informatie, zie Doelbeoordeling in biomedisch onderzoek verbeteren: de GOT-IT-aanbevelingen). Nauwkeurige 3D-structuren van doeleiwitten kunnen het ontwerpen van geneesmiddelen mogelijk maken met een hogere specificiteit en een kleinere kans op kruisinteracties met andere eiwitten.
Het voorspellen van hoe eiwitten zich in hun 3D-structuur vouwen, is echter een moeilijk probleem, en traditionele experimentele methoden zoals röntgenkristallografie en NMR-spectroscopie kunnen tijdrovend en duur zijn. Recente vorderingen op het gebied van diepgaande leermethoden voor eiwitonderzoek zijn veelbelovend gebleken bij het gebruik van neurale netwerken om eiwitvouwing met opmerkelijke nauwkeurigheid te voorspellen. Vouwalgoritmen zoals AlphaFold2, ESMFold, Openvouw en RoseTTAFoud kan worden gebruikt om snel nauwkeurige modellen van eiwitstructuren te bouwen. Helaas zijn deze modellen rekenkundig duur om uit te voeren en kunnen de resultaten omslachtig zijn om te vergelijken op de schaal van duizenden kandidaat-eiwitstructuren. Een schaalbare oplossing voor het gebruik van deze verschillende tools stelt onderzoekers en commerciële R&D-teams in staat om snel de nieuwste ontwikkelingen op het gebied van eiwitstructuurvoorspelling te integreren, hun experimentprocessen te beheren en samen te werken met onderzoekspartners.
Amazon Sage Maker is een volledig beheerde service om snel ML-modellen van hoge kwaliteit voor te bereiden, te bouwen, te trainen en te implementeren door een breed scala aan mogelijkheden samen te brengen die speciaal zijn ontwikkeld voor ML. Het biedt een volledig beheerde omgeving voor ML, waarbij de vereisten voor infrastructuur, gegevensbeheer en schaalbaarheid worden weggelaten, zodat u zich kunt concentreren op het bouwen, trainen en testen van uw modellen.
In dit bericht presenteren we een volledig beheerde ML-oplossing met SageMaker die de werking van voorspellingsworkflows voor eiwitvouwstructuren vereenvoudigt. We bespreken eerst de oplossing op hoog niveau en de gebruikerservaring. Vervolgens laten we u zien hoe u eenvoudig compute-geoptimaliseerde workflows van AlphaFold2 en OpenFold kunt instellen met SageMaker. Ten slotte laten we zien hoe u voorspellingen van de eiwitstructuur kunt volgen en vergelijken als onderdeel van een typische analyse. De code voor deze oplossing is hieronder beschikbaar GitHub-repository.
Overzicht oplossingen
In deze oplossing kunnen wetenschappers interactief eiwitvouwingsexperimenten starten, de 3D-structuur analyseren, de voortgang van het werk volgen en de experimenten volgen in Amazon SageMaker Studio.
De volgende schermafbeelding toont een enkele run van een workflow voor het vouwen van eiwitten met Amazon SageMaker Studio. Het bevat de visualisatie van de 3D-structuur in een notebook, de uitvoeringsstatus van de SageMaker-taken in de workflow en koppelingen naar de invoerparameters en uitvoergegevens en logboeken.
Het volgende diagram illustreert de oplossingsarchitectuur op hoog niveau.
Om de architectuur te begrijpen, definiëren we eerst de belangrijkste componenten van een eiwitvouwingsexperiment als volgt:
- FASTA doelreeksbestand - The FASTA-formaat is een op tekst gebaseerd formaat voor het weergeven van nucleotidesequenties of aminozuur (eiwit) sequenties, waarin nucleotiden of aminozuren worden weergegeven met codes van één letter.
- Genetische databases – Een genetische database is een of meer sets genetische gegevens die samen met software zijn opgeslagen om gebruikers in staat te stellen genetische gegevens op te halen. Er zijn verschillende genetische databases nodig om AlphaFold- en OpenFold-algoritmen uit te voeren, zoals BFD, MGnify, VOB70, VOB, VOB-volgorde, UniRef30 (FKA UniClust30), UniProt en UniRef90.
- Uitlijning van meerdere sequenties (MSA) - A sequentie-uitlijning is een manier om de primaire sequenties van een eiwit te rangschikken om gebieden van overeenkomst te identificeren die een gevolg kunnen zijn van functionele, structurele of evolutionaire relaties tussen de sequenties. De invoerfuncties voor voorspellingen omvatten MSA-gegevens.
- Eiwitstructuur voorspelling - De structuur van ingevoerde doelreeksen wordt voorspeld met vouwalgoritmen zoals AlphaFold2 en Openvouw die een multitrack-transformatorarchitectuur gebruiken die is getraind op bekende eiwitsjablonen.
- Visualisatie en statistieken – Visualiseer de 3D-structuur met de py3Dmol bibliotheek als een interactieve 3D-visualisatie. U kunt metrieken gebruiken om met name structuurvoorspellingen te evalueren en te vergelijken root-mean-square afwijking (RMSD) en sjabloonmodellering Score (TM-score)
De workflow bevat de volgende stappen:
- Wetenschappers gebruiken de webgebaseerde SageMaker ML IDE om de codebasis te verkennen, workflows voor eiwitsequentieanalyse te bouwen in SageMaker Studio-notebooks en pijplijnen voor het vouwen van eiwitten uit te voeren via de grafische gebruikersinterface in SageMaker Studio of de SageMaker SDK.
- Genetische en structuurdatabases vereist door AlphaFold en OpenFold worden gedownload voordat de pijplijn wordt ingesteld met behulp van Amazon SageMaker-verwerking, een kortstondige rekenfunctie voor ML-gegevensverwerking, naar een Amazon eenvoudige opslagservice (Amazon S3) emmer. Met SageMaker Processing kunt u een langlopende taak uitvoeren met een goede rekenkracht zonder een rekencluster en opslag in te stellen en zonder dat u het cluster hoeft af te sluiten. Gegevens worden automatisch opgeslagen op een opgegeven S3-bucketlocatie.
- An Amazon FSx voor Luster bestandssysteem is ingesteld, waarbij de gegevensrepository de S3-bucketlocatie is waar de databases worden opgeslagen. FSx for Luster kan worden geschaald tot honderden GB/s doorvoer en miljoenen IOPS met het ophalen van bestanden met lage latentie. Bij het starten van een schattertaak koppelt SageMaker het FSx for Luster-bestandssysteem aan het instantiebestandssysteem en start vervolgens het script.
- Amazon SageMaker-pijpleidingen wordt gebruikt om meerdere runs van algoritmen voor het vouwen van eiwitten te orkestreren. SageMaker Pipelines biedt een gewenste visuele interface voor interactieve opdrachtverzending, traceerbaarheid van de voortgang en herhaalbaarheid.
- Binnen een pijplijn worden twee computationeel zware eiwitvouwalgoritmen - AlphaFold en OpenFold - uitgevoerd met SageMaker-schatters. Deze configuratie ondersteunt het aankoppelen van een FSx voor Luster-bestandssysteem voor zoeken in databases met hoge doorvoer in de algoritmen. Een enkele inferentie-run is verdeeld in twee stappen: een MSA-constructiestap met behulp van een optimale CPU-instantie en een structuurvoorspellingsstap met behulp van een GPU-instantie. Deze substappen, zoals SageMaker-verwerking in stap 2, zijn kortstondig, on-demand en volledig beheerd. Taakuitvoer zoals MSA-bestanden, bestanden met voorspelde pdb-structuur en andere metagegevensbestanden worden opgeslagen op een opgegeven S3-locatie. Een pijplijn kan worden ontworpen om één enkel eiwitvouwalgoritme uit te voeren of om zowel AlphaFold als OpenFold uit te voeren na een gemeenschappelijke MSA-constructie.
- Runs van de eiwitvouwvoorspelling worden automatisch gevolgd door Amazon SageMaker-experimenten voor verdere analyse en vergelijking. De taaklogboeken worden bijgehouden Amazon Cloud Watch voor toezicht.
Voorwaarden
Om dit bericht te volgen en deze oplossing uit te voeren, moet u aan verschillende vereisten hebben voldaan. Verwijs naar de GitHub-repository voor een gedetailleerde uitleg van elke stap.
Voer eiwitvouwing uit op SageMaker
We gebruiken de volledig beheerde mogelijkheden van SageMaker om rekenkundig zware eiwitvouwtaken uit te voeren zonder veel infrastructuuroverhead. SageMaker gebruikt containerimages om aangepaste scripts uit te voeren voor generieke gegevensverwerking, training en hosting. U kunt eenvoudig een kortstondige taak op aanvraag starten die een programma uitvoert met een containerimage met een paar regels van de SageMaker-SDK zonder zelf een computerinfrastructuur te beheren. Met name de SageMaker-schattertaak biedt flexibiliteit als het gaat om de keuze van containerimage, runscript en instantieconfiguratie, en ondersteunt een grote verscheidenheid aan opbergmogelijkheden, inclusief bestandssystemen zoals FSx for Lustre. Het volgende diagram illustreert deze architectuur.
Vouwalgoritmen zoals AlphaFold en OpenFold gebruiken een multitrack-transformatorarchitectuur die is getraind op bekende eiwitsjablonen om de structuur van onbekende peptidesequenties te voorspellen. Deze voorspellingen kunnen worden uitgevoerd op GPU-instanties om de beste doorvoer en de laagste latentie te bieden. De invoerfuncties voor deze voorspellingen omvatten echter MSA-gegevens. MSA-algoritmen zijn CPU-afhankelijk en kunnen enkele uren verwerkingstijd vergen.
Het uitvoeren van zowel de MSA- als de structuurvoorspellingsstappen in dezelfde computeromgeving kan kosteninefficiënt zijn omdat de dure GPU-resources inactief blijven terwijl de MSA-stap wordt uitgevoerd. Daarom optimaliseren we de workflow in twee stappen. Eerst voeren we een SageMaker-schattertaak uit op een CPU-exemplaar, specifiek om MSA-uitlijning te berekenen, gegeven een bepaalde FASTA-invoerreeks en genetische brondatabases. Vervolgens voeren we een SageMaker-schattertaak uit op een GPU-instantie om de eiwitstructuur te voorspellen met een gegeven MSA-invoeruitlijning en een vouwalgoritme zoals AlphaFold of OpenFold.
Voer MSA-generatie uit
Voor MSA-berekeningen voegen we een aangepast script toe run_create_alignment.sh
en create_alignments.py
script dat is overgenomen van de bestaande AlphaFold-voorspellingsbron run_alphafold.py. Houd er rekening mee dat dit script mogelijk moet worden bijgewerkt als de AlphaFold-broncode wordt bijgewerkt. Het aangepaste script wordt aan de SageMaker-schatter geleverd via scriptmodus. De belangrijkste componenten van de containerimage, de implementatie van de scriptmodus en het instellen van een SageMaker-schattertaak maken ook deel uit van de volgende stap van het uitvoeren van vouwalgoritmen en worden verder beschreven in de volgende sectie.
Voer AlphaFold uit
We beginnen door een AlphaFold-structuurvoorspelling uit te voeren met een enkele eiwitsequentie met behulp van SageMaker. Het uitvoeren van een AlphaFold-taak bestaat uit drie eenvoudige stappen, zoals te zien is in 01-run_stepbystep.ipynb
. Eerst bouwen we een Docker-containerimage op basis van die van AlphaFold Dockerfile zodat wij dat ook kunnen voer AlphaFold uit in SalieMaker. Ten tweede bouwen we het script run_alphafold.sh
dat aangeeft hoe AlphaFold moet worden uitgevoerd. Ten derde bouwen en runnen we een SageMaker schatter met het script, de container, het instantietype, de gegevens en de configuratie voor de taak.
Containerimage
De runtimevereiste voor een containerimage om AlphaFold (ook OpenFold) in SageMaker uit te voeren, kan aanzienlijk worden vereenvoudigd met AlphaFold's Dockerfile. We hoeven alleen maar een handvol eenvoudige lagen toe te voegen om een SageMaker-specifieke Python-bibliotheek te installeren, zodat een SageMaker-taak kan communiceren met de containerafbeelding. Zie de volgende code:
Invoerscript
Wij zorgen dan voor het script run_alphafold.sh
dat loopt run_alphafold.py uit de AlphaFold-repository die momenteel in de container is geplaatst /app/alphafold/run_alphafold.py
. Wanneer dit script wordt uitgevoerd, worden de locatie van de genetische databases en de ingevoerde FASTA-reeks door SageMaker ingevuld als omgevingsvariabelen (SM_CHANNEL_GENETIC
en SM_CHANNEL_FASTA
, respectievelijk). Voor meer informatie, zie Configuratie invoergegevens.
Schatter taak
Vervolgens maken we een taak met behulp van een SageMaker-schatter met de volgende belangrijke invoerargumenten, die SageMaker instrueren om een specifiek script uit te voeren met behulp van een gespecificeerde container met het instantietype of aantal, uw netwerkoptie naar keuze en andere parameters voor de taak. vpc_subnet_ids
en security_group_ids
instrueer de taak om te worden uitgevoerd binnen een specifieke VPC waar het FSx for Lustre-bestandssysteem zich in bevindt, zodat we het bestandssysteem kunnen koppelen en openen in de SageMaker-taak. Het uitvoerpad verwijst naar een S3-bucketlocatie waar het eindproduct van AlphaFold automatisch naar wordt geüpload aan het einde van een succesvolle taak door SageMaker. Hier stellen we ook een parameter in DB_PRESET
, bijvoorbeeld om te worden doorgegeven en binnen te openen run_alphafold.sh
als een omgevingsvariabele tijdens runtime. Zie de volgende code:
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,
...)
Ten slotte verzamelen we de gegevens en laten we de job weten waar ze zijn. De fasta
gegevenskanaal wordt gedefinieerd als een S3-gegevensinvoer die vanaf een S3-locatie wordt gedownload naar de rekeninstantie aan het begin van de taak. Dit biedt een grote flexibiliteit bij het beheren en specificeren van de invoervolgorde. Aan de andere kant, de genetic
datakanaal wordt gedefinieerd als een FileSystemInput
die aan het begin van de taak op de instantie wordt gemonteerd. Het gebruik van een FSx for Luster-bestandssysteem als een manier om bijna 3 TB aan gegevens binnen te halen, vermijdt het herhaaldelijk downloaden van gegevens van een S3-bucket naar een rekeninstantie. Wij noemen de .fit
methode om een AlphaFold-taak te starten:
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
Dat is het. We hebben zojuist een taak ingediend bij SageMaker om AlphaFold uit te voeren. De logboeken en uitvoer, inclusief .pdb-voorspellingsbestanden, worden naar Amazon S3 geschreven.
Voer OpenFold uit
Het uitvoeren van OpenFold in SageMaker volgt een vergelijkbaar patroon, zoals getoond in de tweede helft van 01-run_stepbystep.ipynb
. We voegen eerst een eenvoudige laag toe om de SageMaker-specifieke bibliotheek te krijgen om de containerafbeelding SageMaker compatibel te maken bovenop OpenFold's Dockerfile. Ten tweede construeren we a run_openfold.sh
als startpunt voor de SageMaker-taak. In run_openfold.sh
, we runnen de run_pretrained_openfold.py van OpenFold, dat is beschikbaar in de containerafbeelding met dezelfde genetische databases die we hebben gedownload voor de modelgewichten van AlphaFold en OpenFold (--openfold_checkpoint_path
). In termen van invoergegevenslocaties introduceren we naast het kanaal voor genetische databases en het FASTA-kanaal een derde kanaal, SM_CHANNEL_PARAM
, zodat we flexibel de gewenste modelgewichten uit de schatterconstructie kunnen doorgeven wanneer we een taak definiëren en indienen. Met de SageMaker-schatter kunnen we eenvoudig vacatures indienen met verschillende entry_point
, image_uri
, environment
, inputs
, en andere configuraties voor OpenFold met dezelfde handtekening. Voor het datakanaal voegen we een nieuw kanaal toe, param
, als een Amazon S3-invoer, samen met het gebruik van dezelfde genetische databases van het FSx for Lustre-bestandssysteem en FASTA-bestand van Amazon S3. Dit stelt ons opnieuw in staat om eenvoudig het modelgewicht te specificeren dat moet worden gebruikt vanuit de taakconstructie. Zie de volgende code:
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)
Om toegang te krijgen tot de uiteindelijke uitvoer nadat de taak is voltooid, voeren we de volgende opdrachten uit:
!aws s3 cp {estimator_openfold.model_data} openfold_output/model.tar.gz
!tar zxfv openfold_output/model.tar.gz -C openfold_output/
Runtime-prestaties
De volgende tabel toont de kostenbesparingen van respectievelijk 57% en 51% voor AlphaFold en OpenFold door de MSA-algoritmen voor uitlijnen en vouwen op te splitsen in twee taken in vergelijking met een enkele rekentaak. Het stelt ons in staat om de computer voor elke taak op maat te maken: ml.m5.4xlarge voor MSA-uitlijning en ml.g5.2xlarge voor AlphaFold en OpenFold.
Job Details | Instantietype | Voer de FASTA-volgorde in | Runtime | Kosten |
MSA uitlijning + OpenFold | ml.g5.4xgroot | T1030 | 50 minuten | $1.69 |
MSA uitlijning + AlphaFold | ml.g5.4xgroot | T1030 | 65 minuten | $2.19 |
MSA-uitlijning | ml.m5.4xgroot | T1030 | 46 minuten | $0.71 |
Openvouw | ml.g5.2xgroot | T1030 | 6 minuten | $0.15 |
AlphaFold | ml.g5.2xgroot | T1030 | 21 minuten | $0.53 |
Bouw een herhaalbare workflow met SageMaker Pipelines
Met SageMaker Pipelines kunnen we een ML-workflow creëren die zorgt voor het beheer van gegevens tussen stappen, het orkestreren van hun uitvoeringen en logboekregistratie. SageMaker Pipelines biedt ons ook een gebruikersinterface om onze pijplijn te visualiseren en eenvoudig onze ML-workflow uit te voeren.
Een pijplijn ontstaat door een aantal te kammen stappen. In deze pijplijn combineren we er drie trainingsstappen, waarvoor een SageMaker-schatter vereist is. De schatters die in dit notitieboekje zijn gedefinieerd, lijken sterk op die in 01-run_stepbystep.ipynb
, met de uitzondering dat we Amazon S3-locaties gebruiken om naar onze invoer en uitvoer te verwijzen. Dankzij de dynamische variabelen kan SageMaker Pipelines stappen een voor een uitvoeren en kan de gebruiker mislukte stappen opnieuw proberen. De volgende schermafbeelding toont een Directed Acyclic Graph (DAG), die informatie geeft over de vereisten voor en relaties tussen elke stap van onze pijplijn.
Dynamische variabelen
SageMaker Pipelines kan gebruikersinvoer opnemen aan het begin van elke pijplijnrun. We definiëren de volgende dynamische variabelen, die we tijdens elk experiment willen wijzigen:
- FastaInputS3URI - Amazon S3 URI van het FASTA-bestand geüpload via SDK, Boto3 of handmatig.
- SnelleBestandsnaam – Naam van het FASTA-bestand.
- db_voorinstelling – Selectie tussen
full_dbs
orreduced_dbs
. - MaxTemplateDatum – De MSA-stap van AlphaFold zoekt naar de beschikbare sjablonen vóór de datum gespecificeerd door deze parameter.
- ModelVoorinstelling - Kies tussen AlphaFold-modellen inclusief
monomer
,monomer_casp14
,monomer_ptm
enmultimer
. - AantalMultimerVoorspellingenPerModel - Aantal te gebruiken zaden per model bij gebruik van een multimeersysteem.
- InferenceInstanceType – Exemplaartype om te gebruiken voor deductiestappen (zowel AlphaFold als OpenFold). De standaardwaarde is ml.g5.2xlarge.
- MSAInstanceType – Exemplaartype dat moet worden gebruikt voor de MSA-stap. De standaardwaarde is ml.m5.4xlarge.
Zie de volgende code:
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')
Een SageMaker-pijplijn wordt geconstrueerd door een reeks stappen te definiëren en ze vervolgens in een specifieke volgorde aan elkaar te koppelen, waarbij de uitvoer van een vorige stap de invoer wordt voor de volgende stap. Stappen kunnen parallel worden uitgevoerd en gedefinieerd om afhankelijk te zijn van een vorige stap. In deze pijplijn definiëren we een MSA-stap, die de afhankelijkheid is voor een AlphaFold-inferentiestap en een OpenFold-inferentiestap die parallel worden uitgevoerd. Zie de volgende code:
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]
Om alle stappen bij elkaar te zetten, noemen we de Pipeline
class en geef een pijplijnnaam, pijplijninvoervariabelen en de afzonderlijke stappen op:
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')
Voer de pijplijn uit
In de laatste cel van het notitieblok 02-define_pipeline.ipynb
, laten we zien hoe u een pijplijn uitvoert met behulp van de SageMaker SDK. De dynamische variabelen die we eerder hebben beschreven, worden als volgt geleverd:
!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
)
Volg experimenten en vergelijk eiwitstructuren
Voor ons experiment gebruiken we een voorbeeld eiwitsequentie uit de CASP14 concurrentie, die een onafhankelijk mechanisme biedt voor de beoordeling van methoden voor het modelleren van eiwitstructuren. Het doelwit T1030 is afgeleid van het PDB 6P00-eiwit en heeft 237 aminozuren in de primaire sequentie. We voeren de SageMaker-pijplijn uit om de eiwitstructuur van deze invoersequentie te voorspellen met zowel OpenFold- als AlphaFold-algoritmen.
Wanneer de pijplijn is voltooid, downloaden we de voorspelde .pdb-bestanden van elke vouwtaak en visualiseren we de structuur in het notitieboek met behulp van py3Dmol, zoals in het notitieboekje 04-compare_alphafold_openfold.ipynb
.
De volgende schermafbeelding toont de voorspelling van de AlphaFold-voorspellingstaak.
De voorspelde structuur wordt vergeleken met de bekende basisreferentiestructuur met PDB-code 6poep gearchiveerd in RCSB. We analyseren de voorspellingsprestaties tegen de basis PDB-code 6poo met drie statistieken: RMSD, RMSD met superpositie en sjabloonmodelleringsscore, zoals beschreven in Constructies vergelijken.
. | Invoervolgorde | Vergelijking met | RMSD | RMSD met superpositie | Sjabloonmodelleringsscore |
AlphaFold | T1030 | 6poep | 247.26 | 3.87 | 0.3515 |
De vouwalgoritmen worden nu met elkaar vergeleken voor meerdere FASTA-reeksen: T1030, T1090 en T1076. Nieuwe doelwitsequenties hebben mogelijk niet de basis pdb-structuur in referentiedatabases en daarom is het nuttig om de variabiliteit tussen vouwalgoritmen te vergelijken.
. | Invoervolgorde | Vergelijking met | RMSD | RMSD met superpositie | Sjabloonmodelleringsscore |
AlphaFold | T1030 | Openvouw | 73.21 | 24.8 | 0.0018 |
AlphaFold | T1076 | Openvouw | 38.71 | 28.87 | 0.0047 |
AlphaFold | T1090 | Openvouw | 30.03 | 20.45 | 0.005 |
De volgende schermafbeelding toont de uitvoeringen van ProteinFoldWorkflow
voor de drie FASTA-invoerreeksen met SageMaker Pipeline:
We loggen ook de statistieken met SageMaker Experiments als nieuwe uitvoeringen van hetzelfde experiment gemaakt door de pijplijn:
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)
Vervolgens analyseren en visualiseren we deze runs op de Experimenten pagina in SageMaker Studio.
Het volgende diagram toont de RMSD-waarde tussen AlphaFold en OpenFold voor de drie reeksen: T1030, T1076 en T1090.
Conclusie
In dit bericht hebben we beschreven hoe u SageMaker Pipelines kunt gebruiken om workflows voor het vouwen van eiwitten op te zetten en uit te voeren met twee populaire structuurvoorspellingsalgoritmen: AlphaFold2 en OpenFold. We demonstreerden een prijspresterende oplossingsarchitectuur van meerdere taken die de rekenvereisten voor het genereren van MSA scheidt van structuurvoorspelling. We hebben ook benadrukt hoe u voorspelde 3D-structuren van eiwitten in SageMaker Studio kunt visualiseren, evalueren en vergelijken.
Raadpleeg de voorbeeldcode in de GitHub repo.
Over de auteurs
Michaël Hsieh is een Principal AI/ML Specialist Solutions Architect. Hij werkt samen met HCLS-klanten om hun ML-traject vooruit te helpen met AWS-technologieën en zijn expertise op het gebied van medische beeldvorming. Als transplantatie uit Seattle verkent hij graag de geweldige moeder natuur die de stad te bieden heeft, zoals de wandelpaden, kajakken op het landschap in de SLU en de zonsondergang bij Shilshole Bay.
Shivam Patel is een oplossingsarchitect bij AWS. Hij heeft een achtergrond in R&D en combineert dit met zijn zakelijke kennis om complexe problemen van zijn klanten op te lossen. Shivam is het meest gepassioneerd door workloads in machine learning, robotica, IoT en high-performance computing.
Hassan Poonawala is Senior AI/ML Specialist Solutions Architect bij AWS, Hasan helpt klanten bij het ontwerpen en implementeren van machine learning-applicaties in productie op AWS. Hij heeft meer dan 12 jaar werkervaring als datawetenschapper, beoefenaar van machine learning en softwareontwikkelaar. In zijn vrije tijd houdt Hasan ervan om de natuur te verkennen en tijd door te brengen met vrienden en familie.
Jasleen Grewal is een Senior Applied Scientist bij Amazon Web Services, waar ze samenwerkt met AWS-klanten om problemen uit de echte wereld op te lossen met behulp van machine learning, met speciale aandacht voor precisiegeneeskunde en genomica. Ze heeft een sterke achtergrond in bio-informatica, oncologie en klinische genomica. Ze is gepassioneerd door het gebruik van AI/ML en cloudservices om de patiëntenzorg te verbeteren.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. Automotive / EV's, carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- BlockOffsets. Eigendom voor milieucompensatie moderniseren. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/build-protein-folding-workflows-to-accelerate-drug-discovery-on-amazon-sagemaker/
- : heeft
- :is
- :niet
- :waar
- $UP
- 1
- 10
- 100
- 12
- 3d
- 7
- 9
- a
- Over
- AC
- versnellen
- toegang
- geraadpleegde
- nauwkeurigheid
- accuraat
- acyclische
- toevoegen
- aangenomen
- bevorderen
- voorschotten
- die van invloed
- Na
- weer
- tegen
- AI / ML
- algoritme
- algoritmen
- opstelling
- Alles
- toelaten
- toestaat
- langs
- ook
- Amazone
- Amazon Sage Maker
- Amazon SageMaker Studio
- Amazon Web Services
- an
- analyse
- analyseren
- en
- Nog een
- elke
- toepassingen
- toegepast
- architectuur
- ZIJN
- GEBIED
- argumenten
- AS
- beoordeling
- At
- webmaster.
- Beschikbaar
- gemiddelde
- weg
- AWS
- terug
- achtergrond
- baseren
- gebaseerde
- Baai
- BE
- omdat
- wordt
- vaardigheden
- Begin
- wezen
- behalve
- BEST
- Betere
- tussen
- Miljard
- miljarden
- biomedische
- biofarma
- Blokken
- lichaam
- zowel
- brengen
- Bringing
- breed
- bouw
- Gebouw
- bedrijfsdeskundigen
- by
- Bellen
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- CAN
- kandidaat
- kandidaten
- mogelijkheden
- in staat
- verzorging
- verandering
- Kanaal
- tabel
- keuze
- Plaats
- klasse
- Klinisch
- Sluiten
- Cloud
- cloud-diensten
- TROS
- code
- codebasis
- codes
- samenwerken
- combineren
- combines
- komt
- commercieel
- Gemeen
- communiceren
- vergelijken
- vergeleken
- vergelijking
- verenigbaar
- concurrentie
- compleet
- Voltooid
- voltooit
- complex
- bestanddeel
- componenten
- Samenstelling
- berekening
- Berekenen
- computergebruik
- Configuratie
- bouwen
- bouw
- Containers
- bevat
- Kosten
- kostenbesparingen
- Kosten
- Koppel
- en je merk te creëren
- aangemaakt
- Op dit moment
- gewoonte
- Klanten
- DAG
- gegevens
- gegevensbeheer
- gegevensverwerking
- data scientist
- Database
- databanken
- Datum
- deep
- diepgaand leren
- Standaard
- bepalen
- gedefinieerd
- het definiëren van
- tonen
- gedemonstreerd
- Afhankelijkheid
- implementeren
- Afgeleid
- beschreven
- Design
- ontworpen
- gewenste
- gedetailleerd
- Bepalen
- bepaalt
- Ontwikkelaar
- Ontwikkeling
- anders
- moeilijk
- ontdekking
- bespreken
- Ziekte
- Verscheidenheid
- Verdeeld
- havenarbeider
- beneden
- Download
- drug
- Drugs
- gedurende
- dynamisch
- elk
- Vroeger
- gemakkelijk
- effectief
- beide
- in staat stellen
- einde
- entiteiten
- toegang
- Milieu
- milieu
- schatten
- eventueel
- Alle
- voorbeeld
- uitzondering
- uitgevoerd
- uitvoering
- bestaand
- duur
- ervaring
- experiment
- experimenten
- expertise
- uitleg
- Verken
- Verkennen
- geconfronteerd
- Mislukt
- familie
- Kenmerk
- Voordelen
- Dien in
- Bestanden
- finale
- Tot slot
- Voornaam*
- eerste keer
- geschikt
- Flexibiliteit
- flexibel
- Focus
- volgen
- volgend
- volgt
- Voor
- formaat
- vrienden
- oppompen van
- vol
- geheel
- functioneel
- verder
- verzamelen
- genereert
- generatie
- genomics
- krijgen
- gegeven
- Go
- GPU
- diagram
- groot
- sterk
- Helft
- hand
- handvol
- schaden
- Hebben
- he
- zwaar
- hulp
- helpt
- hier
- Hoge
- high-level
- hoge performantie
- hoogwaardige
- hoger
- hoogst
- Gemarkeerd
- zijn
- Hosting
- HOURS
- Hoe
- How To
- Echter
- HTML
- http
- HTTPS
- Honderden
- Identificatie
- identificeren
- Idle
- if
- illustreert
- beeld
- afbeeldingen
- Imaging
- uitvoering
- importeren
- verbeteren
- verbeteringen
- in
- omvatten
- omvat
- Inclusief
- nemen
- onafhankelijk
- individueel
- informatie
- Infrastructuur
- invoer
- ingangen
- binnen
- installeren
- instantie
- interactieve
- wisselwerking
- Interface
- in
- voorstellen
- iot
- IT
- HAAR
- Jobomschrijving:
- Vacatures
- jpg
- voor slechts
- gehouden
- sleutel
- schop
- blijven
- kennis
- bekend
- Achternaam*
- Wachttijd
- laatste
- lancering
- lagen
- Legkippen
- Leads
- leren
- minst
- laten
- Niveau
- Bibliotheek
- Life
- als
- waarschijnlijkheid
- lijnen
- links
- plaatselijk
- plaats
- locaties
- inloggen
- logging
- lang
- houdt
- te verlagen
- laagste
- machine
- machine learning
- maken
- beheer
- beheerd
- management
- beheren
- handmatig
- Mei..
- McKinsey
- mechanisme
- medisch
- geneeskunde
- Metadata
- methode
- methoden
- Metriek
- miljoenen
- ML
- Mode
- model
- modellering
- modellen
- monitor
- Grensverkeer
- meer
- meest
- moeder
- MOUNT
- veel
- meervoudig
- naam
- NATUUR
- Noodzaak
- nodig
- netwerken
- netwerken
- neurale netwerken
- New
- nieuw doelwit
- volgende
- NIH
- in het bijzonder
- notitieboekje
- nu
- aantal
- of
- korting
- bieden
- Aanbod
- Okay
- on
- On-Demand
- EEN
- Slechts
- naar
- operatie
- optimale
- Optimaliseer
- Keuze
- or
- bestellen
- Overige
- onze
- uitgang
- over
- pagina
- Parallel
- parameter
- parameters
- deel
- bijzonder
- partners
- passeren
- voorbij
- hartstochtelijk
- pad
- patiënt
- patiënten
- Patronen
- voor
- prestatie
- pijpleiding
- Plato
- Plato gegevensintelligentie
- PlatoData
- punt
- Populair
- bevolkte
- Post
- nauwkeurig
- precisie
- voorspellen
- voorspeld
- het voorspellen van
- voorspelling
- Voorspellingen
- Voorbereiden
- vereisten
- presenteren
- vorig
- prijs
- primair
- Principal
- Voorafgaand
- prioritering
- probleem
- problemen
- processen
- verwerking
- Product
- productie
- Programma
- Voortgang
- belofte
- gepast
- Eiwit
- Eiwitten
- zorgen voor
- mits
- biedt
- zetten
- Python
- snel
- R & D
- vast
- echte wereld
- recent
- verwijst
- regio
- Relaties
- blijven
- opmerkelijk
- herhaalbare
- HERHAALDELIJK
- bewaarplaats
- vertegenwoordigd
- vertegenwoordigen
- vereisen
- nodig
- vereiste
- Voorwaarden
- onderzoek
- onderzoekers
- Resources
- respectievelijk
- verkregen
- Resultaten
- robotica
- lopen
- lopend
- loopt
- s
- sagemaker
- SageMaker-pijpleidingen
- dezelfde
- besparing
- Bespaar geld
- Schaalbaarheid
- schaalbare
- Scale
- Wetenschap
- Wetenschapper
- wetenschappers
- partituur
- doorlichting
- scripts
- sdk
- Ontdek
- Seattle
- Tweede
- sectie
- zien
- zaden
- gezien
- selectie
- senior
- Volgorde
- -Series
- service
- Diensten
- reeks
- Sets
- het instellen van
- setup
- verscheidene
- ze
- moet
- tonen
- getoond
- Shows
- stilgelegd
- aanzienlijke
- gelijk
- Eenvoudig
- vereenvoudigd
- single
- So
- Software
- oplossing
- Oplossingen
- OPLOSSEN
- bron
- special
- specialist
- specifiek
- specifiek
- specificiteit
- gespecificeerd
- Spectroscopie
- besteden
- Stadium
- begin
- gestart
- Start
- starts
- Status
- Stap voor
- Stappen
- mediaopslag
- opgeslagen
- gestroomlijnd
- sterke
- structureel
- structuur
- studio
- voorlegging
- voorleggen
- ingediend
- geslaagd
- dergelijk
- geschikt
- Zonsondergang
- superpositie
- steunen
- system
- Systems
- tafel
- Nemen
- neemt
- het nemen
- doelwit
- doelen
- teams
- Technologies
- sjabloon
- templates
- termen
- Testen
- dat
- De
- De Bron
- hun
- Ze
- harte
- daarom
- Deze
- ze
- Derde
- dit
- die
- duizenden kosten
- drie
- Door
- doorvoer
- niet de tijd of
- tijdrovend
- naar
- samen
- tools
- top
- Traceerbaarheid
- spoor
- traditioneel
- Trainen
- getraind
- Trainingen
- transformator
- waar
- twee
- type dan:
- typisch
- typisch
- ui
- begrijpen
- begrip
- helaas
- onbekend
- bijgewerkt
- geüpload
- us
- .
- gebruikt
- Gebruiker
- Gebruikerservaring
- User Interface
- gebruikers
- toepassingen
- gebruik
- bevestiging
- waarde
- variëteit
- divers
- zeer
- via
- visualisatie
- was
- Manier..
- we
- web
- webservices
- Web-based
- gewicht
- GOED
- wanneer
- welke
- en
- Wikipedia
- wil
- Met
- binnen
- zonder
- Mijn werk
- workflow
- workflows
- Bedrijven
- wereld
- zou
- geschreven
- röntgenstraal
- jaar
- You
- Your
- zephyrnet