Identify potential repeated sites
Searches potential repeated sites that each target site’s own gapmer still binds.
- Step type:
Internal step
Applicability
This step can run only when each configured value is listed below. Incompatible selections are rejected before execution.
Configuration path |
Supported values |
|---|---|
|
|
|
|
|
|
Run this step
ASOkai run --step identify-potential-repeated-sites --config-file ./config.yaml
Example configuration for this step and its dependencies:
datadir: ./data
parameters:
genome:
assembly: GRCh38
release: 114
source: ensembl
species: Homo_sapiens
target:
target_id: ENSG00000133703
k: 16
region: pre-mrna
antisense:
modality:
design:
left_wing_length: 3
gap_length: 10
right_wing_length: 3
type: gapmer
type: aso
mechanism: rnase-h1
Parameters
These scalar configuration values are passed to this step.
Common parameters
Configuration path |
Details |
|---|---|
|
Accepted value: integer; minimum: 1 Requirement: Required Description: Target-site length. |
|
Accepted value: number; minimum: 0 Requirement: Default: 5.0 Description: Largest accepted binding-energy loss in kcal/mol relative to the original site. |
|
Accepted value: number; minimum: 0 Requirement: Default: 0.5 Description: Extra binding-energy loss in kcal/mol that is still explored, because later mutations can have better binding. |
|
Accepted value: value; one of: RNA_Turner2004, RNA_Turner1999, RNA_Andronescu2007, RNA_Langdon2018, DNA_Mathews2004, DNA_Mathews1999, null Requirement: Default and only value: null Description: Built-in ViennaRNA energy parameter set. The DNA sets model a DNA duplex rather than the DNA-RNA hybrid a gapmer forms, so they are an approximation too. |
|
Accepted value: string or null; minimum string length: 1 Requirement: Default and only value: null Description: ViennaRNA parameter file to load instead of a named set. It is read where it lies rather than staged, so a run under CWL needs a path its job can reach. |
|
Accepted value: string Requirement: Default: Description: Extra ViennaRNA model arguments as comma-separated name=value pairs, such as ‘temperature=37.0,noGU=1’. Accepted names are the fields of ViennaRNA’s model details. An empty value keeps every ViennaRNA default values. |
|
Accepted value: string; minimum string length: 1 Requirement: Required to determine step compatibility Description: Antisense therapeutic modality. |
|
Accepted value: string; minimum string length: 1 Requirement: Required to determine step compatibility Description: Therapeutic mechanism of action for the selected modality. |
Designs
Gapmer design
Set parameters.antisense.modality.type to aso and parameters.antisense.modality.design.type to gapmer.
Example configuration:
parameters:
antisense:
modality:
type: aso
design:
type: gapmer
left_wing_length: 3
gap_length: 10
right_wing_length: 3
Configuration path |
Details |
|---|---|
|
Accepted value: integer; minimum: 1 Requirement: Required when parameters.antisense.modality.design.type is gapmer Description: Number of nucleotides in the left gapmer wing. Required for a gapmer design and not used by an unmodified design. |
|
Accepted value: integer; minimum: 1 Requirement: Required when parameters.antisense.modality.design.type is gapmer Description: Number of nucleotides in the central gapmer gap. Required for a gapmer design and not used by an unmodified design. |
|
Accepted value: integer; minimum: 1 Requirement: Required when parameters.antisense.modality.design.type is gapmer Description: Number of nucleotides in the right gapmer wing. Required for a gapmer design and not used by an unmodified design. |
Unmodified design
Set parameters.antisense.modality.type to aso and parameters.antisense.modality.design.type to unmodified.
Example configuration:
parameters:
antisense:
modality:
type: aso
design:
type: unmodified
This option has no additional parameters.
Parameter rules
set either energy_parameters or energy_parameter_file, not both
exactly one of these config values is required: target_id, target_name
Inputs
An input with a fixed producer uses that output by default. A selected run can instead link a named output or supply an existing path. The input’s path override in config.yaml also selects an existing file. External paths are validated against the input’s file contract.
File input |
Details |
|---|---|
|
Producer output: create-target-gene. Shared config source: Format: JSON — Description: Target gene whose sites are searched, from create-target-gene. |
Example path-override configuration:
steps:
identify-potential-repeated-sites:
inputs:
target_gene:
path: /path/to/target_gene.json
Resources
Configurable resources use the first value in the resolution order shown below.
Resource setting |
Details |
|---|---|
|
Step override: Shared default: Built-in fallback: 1 Accepted value: integer; minimum: 1 Description: Number of workers allocated to a step that supports parallel execution. |
|
Step override: Shared default: Built-in fallback: 4096 Accepted value: integer; minimum: 1 Description: Memory in mebibytes allocated to this step. |
Outputs
File output paths are relative to datadir. Braced names are replaced with the corresponding parameter values.
File outputs
File output |
Details |
|---|---|
|
Format: plain FASTA reference Description: One FASTA record per potential repeated site, named by its target site and the substitutions applied to it. Path template: Example path: |
The step finds potential repeated sites: sequences that a target site’s own gapmer still binds almost as strongly as the site itself. They are only potential. A later step aligns them to a reference, and only the sequences found there are repeated sites.
Sites and strands
The target sites come from the target_gene input, which defaults to
create-target-gene. The step needs no therapeutic input: a gapmer is the
reverse complement of its target site, so each site is searched against the
reverse complement of that same site.
The wing and gap lengths come from the configured gapmer design under
parameters.antisense.design. Positions of the site that pair with the gap
form the core, which is never mutated. Because the gapmer runs antiparallel to
the site, its 5’ left wing pairs with the site’s 3’ end, so the core covers
site positions right_wing_length through
right_wing_length + gap_length - 1 (zero-based). A 2-10-4 design on a
16-nucleotide site therefore has its core at positions 4 to 13.
Search
The search visits the flanking positions one at a time, 5’ to 3’. At each position every variant kept so far is extended with each of the four nucleotides, and each new variant is scored against the unchanged gapmer:
where ΔG_binding = MFE(site&strand) - (MFE(site) + MFE(strand)) is folded
with ViennaRNA. The strand is the same for every sequence derived from one
site, so its own folding energy is computed once per site.
A sequence with
ΔΔG <= max_ddgis reported.A variant with
ΔΔG <= max_ddg + ddg_toleranceis explored further but not reported, because a later substitution can restore binding.Every other variant is pruned together with its subtree.
The gap’s base pairs are enforced while folding, so every sequence is scored in the RNase H1-competent alignment that the gapmer must form. The core is always an exact reverse complement of the gapmer gap and is never mutated.
Energy parameters
ViennaRNA folds with one energy parameter table per process.
energy_parameters selects a built-in set:
RNA_Turner2004 (the default), RNA_Turner1999, RNA_Andronescu2007,
RNA_Langdon2018, DNA_Mathews2004, DNA_Mathews1999.
energy_parameter_file loads a ViennaRNA parameter file instead. Supply one
or the other, never both. The file is read where it lies rather than staged
into the job, so a run under CWL needs a path its job can reach.
A gapmer binds its RNA target as a DNA-RNA hybrid, and ViennaRNA ships parameters for neither RNA-DNA hybrids nor the modified wings. The RNA sets therefore model the duplex as RNA-RNA and the DNA sets model it as DNA-DNA; both are approximations, and switching between them moves every energy the step reports.
Progress
The step logs the number of target sites and workers before it starts, and then shows one progress bar over every site, counting the work of all workers together. The bar writes to the terminal, so a run whose output is redirected to a file, as under CWL, records nothing for it.
Output
potential_repeated_sites is a FASTA file with one record per result,
ready to align against a reference. Each record is named by the site it came
from and the substitutions applied to it, and carries nothing else:
>site:GRCh38:12:25250719-25250734:-
ATGACTGAATATAAAC
>site:GRCh38:12:25250719-25250734:-&1G
GTGACTGAATATAAAC
>site:GRCh38:12:25250719-25250734:-&1G_14G
GTGACTGAATATAGAC
The identifier is the site ID, then & and one {position}{nucleotide}
group per substitution, separated by underscores, with one-based positions
in the site sequence. &1G_14G therefore means G at position 1 and
G at position 14. The & separates the site ID, which
contains colons and hyphens of its own, from the suffix. Applying the groups
to the site sequence reproduces the result, so the identifier records the
whole sequence and no side table is needed.
The record carries no description, so an aligner keeps the identifier intact as the read name and a later step can recover each alignment’s target site from that name alone. Every search also writes the unmutated site itself as a record with just the site ID, so exact copies of a site are found too. Within one site the remaining records are ordered by binding-energy loss. The energies themselves are neither written nor returned; the search uses them only to prune and to order its results.
Limitations
ViennaRNA’s RNA energy parameters are applied to DNA sequences, so the energies approximate an RNA-RNA duplex. They model neither the DNA-RNA hybrid of the gap nor the modified chemistry of the wings. An RNA G·U wobble counts as stabilizing, so some variants receive a negative
ΔΔG.Wide thresholds produce many results. With the default
max_ddga 3-10-3 design can yield roughly a thousand sequences per site, and a pre-mRNA target gene contributes tens of thousands of sites.ViennaRNA holds the interpreter lock while folding, so the analysis opts into worker processes. Where those are unavailable it falls back to threads, which overlap very little, and the running time then scales with the number of target sites.