YAML specification of the LigoSim instruction for introducing immune signals¶
The YAML definition consists of three components: motif, signal and simulation definitions.
motifs
: defined by either a (gapped) k-mer (see: SeedMotif) and how it might vary or by a position weight matrix (see: PWM).signals
(see: Signal): defined as a union of a set of motifs and AIR-specific information, such as V or J gene or IMGT position of the motif in the CDR3 sequence. Immune signals correspond to e.g., antigen-specificity.immune_events
: immune events are sets of immune signals and their proportion in an AIRR. They correspond to diseases, vaccination, allergies. In practice, we define which signals are present and how often in a set of examples, and the immune event is assigned as a label for that example set.simulations
defines how the signals will be combined and simulated in the receptors or repertoires.
Simulation (as defined in Simulation config in the specification) groups examples (receptors or repertoires, depending on the level of simulation desired by the user) with the same characteristics into simulation items (Simulation config item) that precisely defines how this set of examples should be simulated.
Each simulation item defines the following for a set of examples:
which signals should exist in that set of examples (and if it’s repertoire-level simulation: in which percentage of each individual repertoire)
what is the generative model that will create background AIR sequences which will be used as a starting point for simulation. Currently supported generative models for this purpose are OLGA (which can generate sequences from either one of the default OLGA models or from a custom model) and ExperimentalImport (which allows any set of sequences to be imported and used as background).
immune events are defined on this level and have the same value for all examples within the given set.
See also the tutorial about recovering simulated immune signals.
An example of a simulation with disease-associated signals is given below.
ligo_complete_specification.yaml
definitions: motifs: motif1: seed: AA motif2: seed: GG signals: signal1: motifs: [motif1] signal2: motifs: [motif2] simulations: sim1: is_repertoire: true # if the simulation is on repertoire or receptor here -> here it's repertoire level paired: false # whether to simulate paired chain data or not sequence_type: amino_acid simulation_strategy: Implanting # how to simulate the signals remove_seqs_with_signals: true # remove signal-specific AIRs from the background sim_items: sim_item: # group of AIRs with the same parameters AIRR1: immune_events: # all repertoires in this set will have these values for immune events ievent1: True ievent1: False signals: signal1: 0.3 # in each repertoire 30% of sequences will have signal1 signal2: 0.3 # in each repertoire other 30% of sequences will have signal2 number_of_examples: 10 # simulate 10 repertoires receptors_in_repertoire_count: 6 # how many receptor sequences should be in each repertoire generative_model: # how to generate background AIRs chain: heavy default_model_name: humanIGH # use default model type: OLGA # use OLGA for background simulation AIRR2: # another set of repertoires, but with different parameters immune_events: ievent1: False ievent1: True signals: {signal1: 0.5, signal2: 0.5} number_of_examples: 10 receptors_in_repertoire_count: 6 generative_model: chain: heavy default_model_name: humanIGH model_path: null # if there was a custom model to use, path to the folder should be given here type: OLGA instructions: my_sim_inst: export_p_gens: false max_iterations: 100 number_of_processes: 4 sequence_batch_size: 1000 simulation: sim1 type: LigoSim