This package assists in the automation of multiplex primer design. This package was designed for the companion MPD program, which you can find here (mpd-c).
Please cite our paper if you use MPD in your work. Thanks.
git clone https://github.com/wingolab-org/mpd-perl.git
).cpanm
(i.e., App::cpanminus). To install, cpanm MPD.tar.gz
.
Dist::Zilla
. Otherwise, Dist::Zilla
is not needed.prove -l
or prove -lv t/some_test.t
.perltidyrc
(Perl::Tidy
) and tidyall -a
(Code::Tidy
) is used to tidy code before committing.Dist::Zilla
, please see dagolden's distribution and Dist::Zilla on metacpan.ex
directory or look at the tests, specifically, t/05-Mpd.t
to see how to build and use the MPD object.YAML
format.From the ex
(example) directory:
---
BedFile: ex/markers.txt.bed # TARGET LIST
isPcrBinary: isPcr # isPcr binary, optional
TwoBitFile: hg38.2bit # TwoBitFile, optional (needed for isPcr)
MpdBinary: ../mpd-c/build/mpd # mpd binary (see http://github.com/wingolab-org/mpd-c)
MpdIdx: hg38.d14.sdx # HASHED GENOME, see mpd-c setup
dbSnpIdx: ds_flat.sdx # LIST of FLAT DBSNP FILES, see mpd-c setup
CoverageThreshold: 0.8 # The definition of "covered"
PrimerSizeMin: 17 # Minimum primer size
PrimerSizeMax: 27 # Maximum primer size
PadSize: 60 # The region flanking the target to search for primers
PoolMax: 10 # Maximum number of primers in a pool
PoolMin: 5 # Minimum number of primers in a pool
AmpSizeMax: 260 # Initial maximum amplicon size
AmpSizeMin: 230 # Initial minimum amplicon size
TmMax: 62 # Initial maximum Tm
TmMin: 57 # Initial minimum Tm
GcMax: 0.7 # Initial maximum GC
GcMin: 0.3 # Initial minimum GC
Iter: 2 # Number of iterations to try to find primers
IncrTm: 1 # degrees Celsius to widen the Min/Max Tm on successive trial
IncrTmStep: 1 # degrees Celsius to widen the Tm step (within mpd-c) on successive trial
IncrAmpSize: 10 # number of base pairs to widen the acceptable amplicon max/min on successive trial
RunAll()
method.From design.pl
:
my $m = MPD->new_with_config(
{
configfile => $config_file,
BedFile => 'target_regions.bed',
OutExt => 'myGreatPrimerPools',
OutDir => '/temp/',
InitTmMin => 58,
InitTmMax => 61,
PoolMin => 5,
Debug => 0,
IterMax => 2,
RunIsPcr => undef, # set to something perl evaluates to true if you want isPcr to check the in-silico PCR
Act => 1, # set to something perl evaluates to true if you want the program to execute the mpd-c binary
ProjectName => $out_ext,
FwdAdapter => '', # your fwd adapter
RevAdapter => '', # your rev adapter
Offset => 0, # when printing pools where do we start?
Randomize => 1, # should we shuffle the pools so they are in random order?
}
);
$m->RunAll(); # run the design.