.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Bio::Tools::AmpliconSearch 3pm" .TH Bio::Tools::AmpliconSearch 3pm "2020-10-28" "perl v5.30.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Bio::Tools::AmpliconSearch \- Find amplicons in a template using degenerate PCR primers .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use Bio::PrimarySeq; \& use Bio::Tools::AmpliconSearch; \& \& my $template = Bio::PrimarySeq\->new( \& \-seq => \*(AqaaaaaCCCCaaaaaaaaaaTTTTTTaaaaaCCACaaaaaTTTTTTaaaaaaaaaa\*(Aq, \& ); \& my $fwd_primer = Bio::PrimarySeq\->new( \& \-seq => \*(AqCCNC\*(Aq, \& ); \& my $rev_primer = Bio::PrimarySeq\->new( \& \-seq => \*(AqAAAAA\*(Aq, \& ); \& \& my $search = Bio::Tools::AmpliconSearch\->new( \& \-template => $template, \& \-fwd_primer => $fwd_primer, \& \-rev_primer => $rev_primer, \& ); \& \& while (my $amplicon = $search\->next_amplicon) { \& print "Found amplicon at position ".$amplicon\->start.\*(Aq..\*(Aq.$amplicon\->end.":\en"; \& print $amplicon\->seq\->seq."\en\en"; \& } \& \& # Now change the template (but you could change the primers instead) and look \& # for amplicons again \& \& $template = Bio::PrimarySeq\->new( \& \-seq => \*(Aqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\*(Aq, \& ); \& $search\->template($template); \& \& while (my $amplicon = $search\->next_amplicon) { \& print "Found amplicon at position ".$amplicon\->start.\*(Aq..\*(Aq.$amplicon\->end.":\en"; \& print $amplicon\->seq\->seq."\en\en"; \& } .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Perform an in silico \s-1PCR\s0 reaction, i.e. search for amplicons in a given template sequence using the specified degenerate primer. .PP The template sequence is a sequence object, e.g. Bio::Seq, and the primers can be a sequence or a Bio::SeqFeature::Primer object and contain ambiguous residues as defined in the \s-1IUPAC\s0 conventions. The primer sequences are converted into regular expressions using Bio::Tools::IUPAC and the matching regions of the template sequence, i.e. the amplicons, are returned as Bio::Seq::PrimedSeq objects. .PP AmpliconSearch will look for amplicons on both strands (forward and reverse\- complement) of the specified template sequence. If the reverse primer is not provided, an amplicon will be returned and span a match of the forward primer to the end of the template. Similarly, when no forward primer is given, match from the beginning of the template sequence. When several amplicons overlap, only the shortest one to more accurately represent the biases of \s-1PCR.\s0 Future improvements may include modelling the effects of the number of \s-1PCR\s0 cycles or temperature on the \s-1PCR\s0 products. .SH "TODO" .IX Header "TODO" Future improvements may include: .IP "\(bu" 4 Allowing a small number of primer mismatches .IP "\(bu" 4 Reporting all amplicons, including overlapping ones .IP "\(bu" 4 Putting a limit on the length of amplicons, in accordance with the processivity of the polymerase used .SH "FEEDBACK" .IX Header "FEEDBACK" .SS "Mailing Lists" .IX Subsection "Mailing Lists" User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to one of the Bioperl mailing lists. Your participation is much appreciated. .PP .Vb 2 \& bioperl\-l@bioperl.org \- General discussion \& http://bioperl.org/wiki/Mailing_lists \- About the mailing lists .Ve .SS "Support" .IX Subsection "Support" Please direct usage questions or support issues to the mailing list: .PP \&\fIbioperl\-l@bioperl.org\fR .PP rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible. .SS "Reporting Bugs" .IX Subsection "Reporting Bugs" Report bugs to the Bioperl bug tracking system to help us keep track the bugs and their resolution. Bug reports can be submitted via the web: .PP .Vb 1 \& https://github.com/bioperl/bioperl\-live/issues .Ve .SH "AUTHOR" .IX Header "AUTHOR" Florent Angly .SH "APPENDIX" .IX Header "APPENDIX" The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ .SS "new" .IX Subsection "new" .Vb 12 \& Title : new \& Usage : my $search = Bio::Tools::AmpliconSearch\->new( ); \& Function : Initialize an amplicon search \& Args : \-template Sequence object for the template sequence. This object \& will be converted to Bio::Seq if needed in since features \& (amplicons and primers) will be added to this object. \& \-fwd_primer A sequence object representing the forward primer \& \-rev_primer A sequence object representing the reverse primer \& \-primer_file Read primers from a sequence file. It replaces \& \-fwd_primer and \-rev_primer (optional) \& \-attach_primers Whether or not to attach primers to Amplicon objects. Default: 0 (off) \& Returns : A Bio::Tools::AmpliconSearch object .Ve .SS "template" .IX Subsection "template" .Vb 6 \& Title : template \& Usage : my $template = $search\->template; \& Function : Get/set the template sequence. Setting a new template resets any \& search in progress. \& Args : Optional Bio::Seq object \& Returns : A Bio::Seq object .Ve .SS "fwd_primer" .IX Subsection "fwd_primer" .Vb 7 \& Title : fwd_primer \& Usage : my $primer = $search\->fwd_primer; \& Function : Get/set the forward primer. Setting a new forward primer resets any \& search in progress. \& Args : Optional sequence object or primer object or \*(Aq\*(Aq to match beginning \& of sequence. \& Returns : A sequence object or primer object or undef .Ve .SS "rev_primer" .IX Subsection "rev_primer" .Vb 7 \& Title : rev_primer \& Usage : my $primer = $search\->rev_primer; \& Function : Get/set the reverse primer. Setting a new reverse primer resets any \& search in progress. \& Args : Optional sequence object or primer object or \*(Aq\*(Aq to match end of \& sequence. \& Returns : A sequence object or primer object or undef .Ve .SS "primer_file" .IX Subsection "primer_file" .Vb 8 \& Title : primer_file \& Usage : my ($fwd, $rev) = $search\->primer_file; \& Function : Get/set a sequence file to read the primer from. The first sequence \& must be the forward primer, and the second is the optional reverse \& primer. After reading the file, the primers are set using fwd_primer() \& and rev_primer() and returned. \& Args : Sequence file \& Returns : Array containing forward and reverse primers as sequence objects. .Ve .SS "attach_primers" .IX Subsection "attach_primers" .Vb 6 \& Title : attach_primers \& Usage : my $attached = $search\->attach_primers; \& Function : Get/set whether or not to attach primer objects to the amplicon \& objects. \& Args : Optional integer (1 for yes, 0 for no) \& Returns : Integer (1 for yes, 0 for no) .Ve .SS "next_amplicon" .IX Subsection "next_amplicon" .Vb 5 \& Title : next_amplicon \& Usage : my $amplicon = $search\->next_amplicon; \& Function : Get the next amplicon \& Args : None \& Returns : A Bio::SeqFeature::Amplicon object .Ve .SS "annotate_template" .IX Subsection "annotate_template" .Vb 11 \& Title : annotate_template \& Usage : my $template = $search\->annotate_template; \& Function : Search for all amplicons and attach them to the template. \& This is equivalent to running: \& while (my $amplicon = $self\->next_amplicon) { \& # do something \& } \& my $annotated = $self\->template; \& Args : None \& Returns : A Bio::Seq object with attached Bio::SeqFeature::Amplicons (and \& Bio::SeqFeature::Primers if you set \-attach_primers to 1). .Ve