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.
Operational Signals
Signals are python functions that take one argument: an experiment or an analysis. Signals for experiments are triggered on data import, whilst signals for analyses are triggered on status change (i.e. analysis failure or completion).
Registering Signals
Register signals by including the function import string in either ON_STATUS_CHANGE
or ON_DATA_IMPORT
Isabl CLI settings:
Signals on Data Import
Signals for experiments are triggered on data import and receive the experiment object as its only argument. You can use the metadata of the experiment to determine what automation should be applied.
Some examples are:
Trigger assembly/species/category aware alignment
Perform Gene quantification or Fusion calling in RNA
Create symlinks to the raw data that are more human accessible
Signals on Analysis Status Change
Analyses signals are triggered on status change. Each signal will receive the analysis object as its only argument. You can use the metadata of the experiment to determine what automation should be applied.
Some examples are:
Trigger Quality Control/Coverage calculation after alignment has successfully been run
Trigger Variant Calling after alignment
Trigger Report Generation after analyses have been completed
Working with Signals
Here are a few examples of how to work with signals, trigger them, and get notified if signals fail.
Running Signals Manually
You can trigger signals manually with Isabl CLI:
Rerunning Failed Signals
When signals fail during automation, database records are created to keep track of this event. Rerun failed signals with:
Get Notified When Signals Fail
You can configure Isabl API to periodically check if any signal has failed and send you email notifications. To do so, head to the admin site at /admin/django_celery_beat/periodictask/add/
and in Task (registered) select isabl_api.tasks.report_failed_signals_task
, then create a 15 minutes interval, and hit save:
Last updated