#! usr/bin/perl #2009/1/2 sub usage { print STDERR "usage: converts \n\n"; print STDERR "#program takes output from SeqMan alignment exported as single file, extended fasta including gaps\n"; print STDERR "Creator: Laurie Stevison\n"; exit; } #end sub if ($#ARGV != 0) { # zero means one argument &usage; } $efasta = $ARGV[0]; if($efasta =~ /\.fas/) { $fasta = $`; $output = $fasta . "_converted.fas"; } else { print "File not saved in fasta format. Please resave SeqMan output and try conversion again. Need \".fas\" extension.\n"; exit; } #end if open(READFAS, $efasta); open(WRITEOUT, ">$output"); print STDERR "Reading input file...\n"; print STDOUT "Please indicate labeling for reverse sequences...\n"; chomp($reverse_seqs = ()); while () { chomp; if (/>/) { $seq_name = $'; #' push(@seq_names, $seq_name); if ($newseq==1) { push(@sequences, $sequence); } #end if $sequence = ""; $newseq=0; next; } else { $sequence .= $_; $newseq=1; } #end else } #end while push(@sequences, $sequence); print "done.\n\n"; print STDERR "Converting file...\n"; for ($i = 0; $i <= $#seq_names; $i++) { $seq_name = $seq_names[$i]; @seq_name_array = split(/\;/ , $seq_name); $sequence = $sequences[$i]; if($seq_name_array[0] =~ /$reverse_seqs/) { $revcom_sequence = reverse($sequence); $revcom_sequence =~ tr/ACGTacgt/TGCAtgca/; } else { $revcom_sequence = $sequence; } #end if if($seq_name_array[0] =~ /at offset/) { chomp($offset = $'); #' $dash_number = "-" x $offset; } else { print "File not saved in extended fasta format. Please resave SeqMan output and try conversion again.\n"; exit; } #end if print WRITEOUT ">$seq_name_array[0]\n"; print WRITEOUT "$dash_number" . "$revcom_sequence\n"; } #end for print STDERR "done.\n\n";