한글 테스트 해봐야 함
#!/usr/bin/perl -w
#
# Parse ace file and extract read names of destined contig
#
# Written by Suk Namgoong
#
use strict;
use Spreadsheet::WriteExcel;
my $usage = "aceprimer.pl <ace file name>";
my $acefilename = shift or die $usage;
my $workbook = Spreadsheet::WriteExcel->new($acefilename.".xls");
my ($contigfound, $fofname, $readname, $ctstart);
my $worksheet1 = $workbook->add_worksheet("forward");
my $worksheet2 = $workbook->add_worksheet("reverse");
my $format = $workbook->add_format();
$format->set_bold();
$format->set_bg_color(18);
$format->set_pattern(1);
my $align = $workbook->add_format();
$align->set_align('center');
my $align2 = $workbook->add_format();
$align2->set_align('vjustify');
$contigfound = 0;
my %primerhash = ();
#
# Parse Ace File and put start postion and length of each reads into hash (%read_start and %read length))
#
$worksheet1->write(0,0,"Experiment ID", $format);
$worksheet1->write(0,1,"Contig Name", $format);
$worksheet1->write(0,2,"Primer Name", $format);
$worksheet1->write(0,3 ,"Sequence", $format);
$worksheet1->write(0,4,"Tm", $format);
$worksheet1->write(0,5,"Comment", $align2);
$worksheet2->write(0,0,"Experiment ID", $format);
$worksheet2->write(0,1,"Contig Name", $format);
$worksheet2->write(0,2,"Primer Name", $format);
$worksheet2->write(0,3,"Sequence", $format);
$worksheet2->write(0,4,"Tm", $format);
$worksheet2->write(0,5,"Comment", $align2);
my $frow = 1;
my $rrow = 1;
my $col = 0;
my $exp_no = 1;
$ctstart = 0;
open (FILEHANDLE, "<$acefilename");
my ($contigname, $primername, $sequence, $comment, $oligostart, $oligoend, $meltingTemp);
while (my $readline = <FILEHANDLE>) {
chomp($readline);
if ($readline =~ m/^CT{/)
{
$ctstart = 1;
$comment = "";
next;
}
if ($ctstart eq 1 ) {
if ($readline =~ m/^(\S+) oligo consed (\S+) (\S+)/) {
$contigname = $1;
$oligostart = $2;
$oligoend = $3;
$ctstart = 2;
next;
}
else {
$ctstart = 0;
next;
}
}
if ($ctstart eq 2) {
if ($readline =~ m/^(\S+) (\S+) (\S+)/) {
$primername = $1;
$sequence = $2;
$meltingTemp = $3;
$ctstart = 3;
next;
}
}
if ($ctstart eq 3) {
if ($readline =~ m/^COMMENT{/) {
$ctstart = 4;
next;
}
}
if ($ctstart eq 4) {
if ($readline =~ m/}$/) {
$ctstart = 0;
if (exists($primerhash{$comment})) {
$worksheet2->write($frow,0,$primerhash{$comment});
$worksheet2->write($frow,1,$contigname);
$worksheet2->write($frow,2,$primername);
$worksheet2->write($frow,3,$sequence);
$worksheet2->write($frow,4,$meltingTemp,$align);
$worksheet2->write($frow,5,$comment, $align2);
$frow++;
}
else {
$primerhash{$comment} = $exp_no;
$worksheet1->write($rrow,0,$exp_no);
$worksheet1->write($rrow,1,$contigname);
$worksheet1->write($rrow,2,$primername);
$worksheet1->write($rrow,3,$sequence);
$worksheet1->write($rrow,4,$meltingTemp,$align);
$worksheet1->write($rrow,5,$comment, $align2);
$exp_no++;
$rrow++;
}
next;
}
else {
$comment = $comment.$readline;
next;
}
}
}
close FILEHANDLE;