Permalink
Browse files

primer3 input file being generated now

  • Loading branch information...
1 parent 9ccfac7 commit f8b1c0a08f384c95d53017f6dd13d44e6ea9971c mestato committed Jul 7, 2015
Showing with 55 additions and 61 deletions.
  1. +55 −61 hwg_gssr_scripts/findSSRs_post_assembly.pl
@@ -235,11 +235,8 @@ sub main{
flag_multiSSRs();
print "done.\n";
- #open(PI3, ">$p3_input") or die $!;
- #my $p3_input_fh = *PI3;
- #close PI3;
-
-# print "running primer3...\n";
+ print "running primer3...\n";
+ addToPrimer3InputFile ($p3_input);
# print "$PRIMER3 < $p3_input > $p3_output\n";
# my $status = system("$PRIMER3 < $p3_input > $p3_output");
#
@@ -287,32 +284,20 @@ sub process_file{
my $fasta_file = $_[0]; # file name
my $masked_file = $_[1]; # file name
- my $seqio;
- my $seqioM;
-
- my $seqobj;
- my $seqobjM;
-
- my $seqname;
- my $seqnameM;
-
- my $seqstr;
- my $seqstrM;
-
- $seqio = Bio::SeqIO->new('-format' => 'fasta', -file => $fasta_file);
- $seqioM = Bio::SeqIO->new('-format' => 'fasta', -file => $masked_file);
+ my $seqio = Bio::SeqIO->new('-format' => 'fasta', -file => $fasta_file);
+ my $seqioM = Bio::SeqIO->new('-format' => 'fasta', -file => $masked_file);
# Get seq obj from io stream
- while($seqobj = $seqio->next_seq){
- $seqobjM = $seqioM->next_seq;
+ while(my $seqobj = $seqio->next_seq){
+ my $seqobjM = $seqioM->next_seq;
$SEQ_COUNT++;
- $seqname = $seqobj->id; # get actual sequence as a string
- $seqnameM = $seqobjM->id; # get actual sequence as a string
+ my $seqname = $seqobj->id; # get actual sequence as a string
+ my $seqnameM = $seqobjM->id; # get actual sequence as a string
- $seqstr = $seqobj->seq(); # get actual sequence as a string
- $seqstrM = $seqobjM->seq(); # get actual sequence as a string
+ my $seqstr = $seqobj->seq(); # get actual sequence as a string
+ my $seqstrM = $seqobjM->seq(); # get actual sequence as a string
if($seqname ne $seqnameM){
die "masked sequence $seqnameM not in same order as regular sequence $seqname\n";
@@ -552,6 +537,50 @@ sub flag_multiSSRs{
close FASTA;
}
+
+################################################################
+sub addToPrimer3InputFile{
+ my $p3_file = shift;
+
+ open OUT, ">$p3_file";
+
+ foreach my $ssr_id (keys %SSR_STATS){
+ #skip compound SSRS
+ if($SSR_STATS{$ssr_id}{COMPOUND} == 'FALSE'){
+ my $ssrStart = $SSR_STATS{$ssr_id}{START};
+ my $ssrEnd = $SSR_STATS{$ssr_id}{END};
+ my $seq = $SSR_STATS{$ssr_id}{SEQM};
+
+ # change from soft mask to hard mask
+ $seq =~ s/[actg]/N/g;
+
+ my $len = $ssrEnd-$ssrStart;
+
+ printf OUT ("SEQUENCE_ID=$ssr_id\n");
+ printf OUT ("SEQUENCE_TEMPLATE=$seq\n");
+ printf OUT ("SEQUENCE_TARGET=$ssrStart,$len\n");
+ printf OUT ("PRIMER_TASK=generic\n");
+ printf OUT ("PRIMER_PICK_LEFT_PRIMER=1\n");
+ printf OUT ("PRIMER_PICK_INTERNAL_OLIGO=0\n");
+ printf OUT ("PRIMER_PICK_RIGHT_PRIMER=1\n");
+ printf OUT ("PRIMER_OPT_SIZE=$PRIMER_OPT_SIZE\n");
+ printf OUT ("PRIMER_MIN_SIZE=$PRIMER_MIN_SIZE\n");
+ printf OUT ("PRIMER_MAX_SIZE=$PRIMER_MAX_SIZE\n");
+ printf OUT ("PRIMER_NUM_NS_ACCEPTED=$PRIMER_NUM_NS_ACCEPTED\n");
+ printf OUT ("PRIMER_PRODUCT_SIZE_RANGE=$PRIMER_PRODUCT_SIZE_RANGE\n");
+ printf OUT ("PRIMER_OPT_TM=$PRIMER_OPT_TM\n");
+ printf OUT ("PRIMER_MIN_TM=$PRIMER_MIN_TM\n");
+ printf OUT ("PRIMER_MAX_TM=$PRIMER_MAX_TM\n");
+ printf OUT ("PRIMER_MIN_GC=$PRIMER_MIN_GC\n");
+ printf OUT ("PRIMER_MAX_GC=$PRIMER_MAX_GC\n");
+ printf OUT ("PRIMER_MAX_POLY_X=$PRIMER_MAX_POLY_X\n");
+ printf OUT ("PRIMER_GC_CLAMP=$PRIMER_GC_CLAMP\n");
+ printf OUT ("PRIMER_THERMODYNAMIC_PARAMETERS_PATH=$PRIMER3_CONFIG\n");
+ printf OUT ("=\n");
+ }
+ }
+ close OUT;
+}
################################################################
#sub printFasta{
# my $fasta_out = shift;
@@ -596,42 +625,7 @@ sub flag_multiSSRs{
#
#}
################################################################
-##sub _addToPrimer3InputFile{
-## my $p3_input_fh = shift;
-## my $contig_name = shift;
-## my $ssrStart = shift;
-## my $ssrEnd = shift;
-## my $seq = shift;
-##
-## # change from soft mask to hard mask
-## $seq =~ s/[actg]/N/g;
-##
-## my $len = $ssrEnd-$ssrStart;
-##
-## printf $p3_input_fh ("SEQUENCE_ID=$contig_name\_ssr$ssrStart\n");
-## printf $p3_input_fh ("SEQUENCE_TEMPLATE=$seq\n");
-## printf $p3_input_fh ("SEQUENCE_TARGET=$ssrStart,$len\n");
-## printf $p3_input_fh ("PRIMER_TASK=generic\n");
-## printf $p3_input_fh ("PRIMER_PICK_LEFT_PRIMER=1\n");
-## printf $p3_input_fh ("PRIMER_PICK_INTERNAL_OLIGO=0\n");
-## printf $p3_input_fh ("PRIMER_PICK_RIGHT_PRIMER=1\n");
-## printf $p3_input_fh ("PRIMER_OPT_SIZE=$PRIMER_OPT_SIZE\n");
-## printf $p3_input_fh ("PRIMER_MIN_SIZE=$PRIMER_MIN_SIZE\n");
-## printf $p3_input_fh ("PRIMER_MAX_SIZE=$PRIMER_MAX_SIZE\n");
-## printf $p3_input_fh ("PRIMER_NUM_NS_ACCEPTED=$PRIMER_NUM_NS_ACCEPTED\n");
-## printf $p3_input_fh ("PRIMER_PRODUCT_SIZE_RANGE=$PRIMER_PRODUCT_SIZE_RANGE\n");
-## printf $p3_input_fh ("PRIMER_OPT_TM=$PRIMER_OPT_TM\n");
-## printf $p3_input_fh ("PRIMER_MIN_TM=$PRIMER_MIN_TM\n");
-## printf $p3_input_fh ("PRIMER_MAX_TM=$PRIMER_MAX_TM\n");
-## printf $p3_input_fh ("PRIMER_MIN_GC=$PRIMER_MIN_GC\n");
-## printf $p3_input_fh ("PRIMER_MAX_GC=$PRIMER_MAX_GC\n");
-## printf $p3_input_fh ("PRIMER_MAX_POLY_X=$PRIMER_MAX_POLY_X\n");
-## printf $p3_input_fh ("PRIMER_GC_CLAMP=$PRIMER_GC_CLAMP\n");
-## printf $p3_input_fh ("PRIMER_THERMODYNAMIC_PARAMETERS_PATH=$PRIMER3_CONFIG\n");
-## printf $p3_input_fh ("=\n");
-##
-##}
-#
+
################################################################
#sub parseP3_output{
# my $p3_output = $_[0]; # file name

0 comments on commit f8b1c0a

Please sign in to comment.