Package: probe-design
Instructions for probe design[!CAUTION]
You may want to add python and pip as aliases for python3 and pip3On your terminal;echo"alias python='python3'">>~/.bashrcecho"alias pip='pip3'">>~/.bashrcsource~/.bashrcInstallationInstallprobe_design(also installsifpd2q)pipinstallprobe_design-UThis addsprb(short for probe design) as a shell command.Installoligo-meltingOn your terminal;pipinstallgit+https://github.com/ggirelli/oligo-melting.git[!NOTE]
nHUSH, HUSH and escafish are private repositoriesInstall thedev branchofnHUSHInstallHUSHInstallescafishInstallOligoArrayAuxPreparationDNA:Get the genomic coordinates of the regions of interestGet the reference genomeRNA:Get the transcripts of interestGet the reference transcriptomeNotes:For DNA probes, the reference genome will be used both to extract
the sequences of interest and to test probe candidates for
homology. If different genomes need to be used, follow RNA steps and
provide the regions of interest directly.For combined DNA-RNA FISH, the probe sets should be designed with an
homology check against both genome and transcriptome.All the commands below assume you are starting from your project directorymkdir<project_name>cd<project_name>Probe design pipeline:Alternative 1: Normally repetitive regions.PreparationThe probe desin pipeline data is currently intended to be run on a
folder calleddata/contained within the pipeline project folder <project_name>.Upon starting the pipeline, thedata/folder should only containdata/rois/anddata/ref/(and possiblydata/blacklist/, see 6.). If more folders are included, consider making a back-up or simply removing them.List your regions of interest and their coordinates in the input file:data/rois/all_regions.tsvPlace your reference genome in thedata/ref/folder. Make
sure that the chromosome naming matches with the reference genome
name provided inall_regions.tsv.The reference folder can alternatively be gathered usingprb get_ref_genome.
In that case, adjust the script manually with the correct Ensembl
address for your genome of interest.Generate all required subfolders inside your project directory:prbmakedirsRetrieve your region sequences and extract all k-mers of correct length:prbget_oligosDNA|RNA[optional:applyGCfilter0|1]# Example:prbget_oligosDNA1[!NOTE]
If indicatingRNA, the module will assume that the transcript / region
sequences are already present in thedata/regionsfolder. Default: `DNA.Test all k-mers for their homology to other regions in the genome,
using nHUSH. Instead of running the entire k-mers (of lengthL) at
once, can be sped up by testing shorter sublength oligos (of length
l).-mnumber of mismatches to test for (always use 1 when running
sublength);-tnumber of threads,-icomb sizeFull length:prbrun_nHUSH-dRNA-L35-m5-t40-i14Sublength:prbrun_nHUSH-dDNA-L40-l21-m3-t40-i14[!TIP]
ADD -g if this is the first time running with a new reference genome!In case nHUSH is interrupted before completion, run before continuing:prbunfinished_HUSHRecapitulate nHUSH results as a scoreprbreform_hush_combinedDNA|RNA|-RNAlengthsublengthuntil(untildenotes the same number as specified after-mwhen running nHUSH).Calculate the melting temperature of k-mers and the free energy of
secondary structure formation:prbmelt_secs_parallel(optionalDNA(ref)/RNA(rev.compl))Generate a black list of abundantly repeated oligos in the reference genome.prbgenerate_blacklist-L40-c100[!NOTE]
This only needs to be run once per reference genome if not using any
exclusion regions! Just save the blacklist folder between runs.L: oligo lengthc: min abundance to be included in oligo black listCreate k-mer database, convert to TSV for querying and attribute
score to each oligo (based on nHUSH score, GC content, melting
temperature, homopolymer stretches, secondary structures).prbbuild-db_BL-fq_bl-m32-i6-L40-c100-d8-T72m: Maximum length of a consecutive match. Default: 24i: Maximum length of a consecutive homopolymer. Default: 6All oligos with a longer consecutive match or homopolymer are stricly excluded.L: oligo lengthc: min number of occurrences for an oligo to be counted in black list(should match settings used in 6.)d: min Hamming distance to an oligo in the blacklist for exclusionT: Target melting temperature. Default: 72CQuery the database to get candidate probes:prbcycling_query-sDNA-L40-m8-c100-t40-greedy[optional: -greedy. Speed > quality]
[optional: -start 20 -end 100 -step 5]To sweep different oligo numbers, otherwise uses the oligo counts provided in./rois/all_regions.tsv[optional: -stepdown 10]
Number of oligos to decrease probe size with every iteration that does not find enough oligos. Default: 1Cycling query which generate probe candidates, then checks the resulting oligos using HUSH, removes inacceptable oligos and generate probes again.
If enough oligos cannot be found, design probes with fewer oligos, decreasing withstepdownat each step.Summarize the final probes:prbsummarize_probes_finalSome visual elements can be obtained using the following notebooks (needs updating!):prbplot_probe_candidates
prbplot_oligosAlternative 2: Repetitive or repeated regions.In this alternative, the region (along with any user-indicated repeats)
is masked out from the reference genome used by nHUSH. This way, repeated
oligos that are specific for the ROI can be included in the final probe.Warning: This approach occupies a lot more hard drive space!PreparationBesidesdata/rois/anddata/ref/, the pipeline requires an additionaldata/exclude/folder containing BED files with the coordinates of sections
to mask out when running HUSH for each ROI.(UNLESS manually providing exclusion regions)
Exclude regions of interest from HUSH scan.prbgenerate_excludeThe same sheet template can be used to manually add further regions to exclude.Generate all required subfolders:prbmakedirsRetrieve your region sequences and extract all k-mers of correct length:# (from Pipeline/)prbget_oligosDNA|RNA[optional:applyGCfilter0|1]# Example:prbget_oligosDNAIf indicatingRNA, the module will assume that the transcript / region
sequences are already present in thedata/regionsfolder. Default: `DNA.Apply the region exclusion mask on the reference genome.prbexclude_regionGenerate a black list of abundantly repeated oligos in the reference genome.prbgenerate_blacklist-L40-c100Needs to be re-run everytime when using exclusion masks.
L: oligo length; c: min abundance to be included in oligo black listTest all k-mers for their homology to other regions in the genome,
using nHUSH. Instead of running the entire k-mers (of lengthL) at
once, can be sped up by testing shorter sublength oligos (of length
l).-mnumber of mismatches to test for (minimum 1 for sublength;
more gives better information but takes longer time);-tnumber of threads,-icomb sizeSublength:prbrun_nHUSH_excl-dDNA-L40-l21-m3-t40-i14Note the_exclspecific to the exclusion mode.In case nHUSH is interrupted before completion, run before continuing:prbunfinished_HUSHRecapitulate nHUSH results as a score# Format:prbreform_hush_combinedDNA|RNA|-RNAlengthsublengthuntil# Example:prbreform_hush_combinedDNA40213(untildenotes the same number as specified after-mwhen running nHUSH).Calculate the melting temperature of k-mers and the free energy of
secondary structure formation:prbmelt_secs_parallel(optionalDNA(ref)/RNA(rev.compl))Create k-mer database, convert to TSV for querying and attribute
score to each oligo (based on nHUSH score, GC content, melting
temperature, homopolymer stretches, secondary structures).Recommended:prbbuild-db_BL-fq_bl-m32-i6-L40-c100-d8-T72f: score functiond: max Hamming distance to blacklist that is excludedL: oligo lengthc: min abundance to be included in oligo blacklisti: max identical consecutive base pairs,T: target temperaturem: max length of consecutive off-target matchQuery the database to get candidate probes:prbcycling_query-sDNA-L40-m8-c100-t40-g500-stepdown50-greedy-excl[optional: -greedy. Speed > quality]
[optional: -start 20 -end 100 -step 5]To sweep different oligo numbers, otherwise uses the oligo counts provided in./rois/all_regions.tsv[optional: -stepdown 10]
Number of oligos to decrease probe size with every iteration that does not find enough oligos. Default: 1Cycling query which generate probe candidates, then checks the resulting oligos using HUSH, removes inacceptable oligos and generate probes again.
If enough oligos cannot be found, design probes with fewer oligos, decreasing withstepdownat each step.Summarize the final probes:prbsummarize-probes-finalGenerate probes for orderingSelect forward, reverse primers and color flaps.Add the forward and reverse primer sequences to the probe oligosThe forward primer to order has the color flap + the forward sequenceThe reverse primer to order has the t7 promoter sequence + the
rev. compl of the rev sequence in the oligoThe complete oligos can be uploaded as an Excel file containing the
oligo names (arbitrary but unique) and the sequencesTO DO:Adapt the code for more flexibility in input/output folders.Add a visual report of the probes at the end of the pipeline.One-button process!Find a way to automatize selecting primer sequences.