Operational Automations
🤖 Once you have set up your Isabl instance and created a few applications you can now automate your processes! In Isabl, this is achieved using signals.
Last updated
Was this helpful?
Was this helpful?
# experiments signals are triggered on data import
"ON_DATA_IMPORT": [
"my_apps.signals.trigger_apps"
]
# analyses signals are triggered on status change
"ON_STATUS_CHANGE": [
"my_apps.signals.trigger_dependencies"
]from isabl_apps import apps
def signal_data_import(experiment):
"""Run upon data import using the cli."""
species = experiment.sample.individual.species
category = experiment.technique.category
dna_aligner = {"HUMAN": apps.BwaMemGRCh37, "MOUSE": apps.BwaMemGRCm38}.get(species)
tuples = [([experiment], [])]
if category == "DNA" and dna_aligner:
dna_aligner().run(tuples=tuples, commit=True)from isabl_apps import apps
def signal_apps_automation(analysis):
"""Run upon an analysis status update in the database."""
qc_app = {
"GRCh37": apps.QualityControlGRCh37,
"GRCm38": apps.QualityControlGRCm38,
}.get(analysis.application.assembly.name)
if (
analysis.status == "SUCCEEDED"
and analysis.application.name in ["DISAMBIGUATE", "BWA_MEM", "STAR"]
and qc_app
):
qc_app().run(tuples=[(analysis.targets, [])], commit=True)# experiment signals
isabl run-signals experiments -s my_apps.signals.trigger_apps -fi projects 100
# analyses signals
isabl run-signals analyses -s my_apps.signals.trigger_dependencies -fi projects 100 # rerun all failed signals
isabl rerun-signals
# rerun failed signals using filters
isabl rerun-signals \
-fi import_string my_apps.signals.trigger_apps \
-fi target_endpoint analyses \
-fi target_id <an analysis primary key>