package SGN::View::Mason::Commands;
use strict;
use vars qw($m $c);
HTML::Mason::Component::FileBased->new(
'code' => sub {
use utf8; local $SGN::View::Mason::Commands::m = $HTML::Mason::Commands::m;
HTML::Mason::Exception::Params->throw
    ( error =>
      "Odd number of parameters passed to component expecting name/value pairs"
    ) if @_ % 2;
my ( $marker );
{
    my %pos;
    for ( my $x = 0; $x < @_; $x += 2 )
    {
        $pos{ $_[$x] } = $x + 1;
    }

    foreach my $arg ( qw( marker ) )
    {
        HTML::Mason::Exception::Params->throw
            ( error => "no value sent for required parameter '$arg'" )
                unless exists $pos{$arg};
    }
#line 29 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
    $marker = $_[ $pos{'marker'} ];
}
$m->debug_hook( $m->current_comp->path ) if ( HTML::Mason::Compiler::IN_PERL_DB() );

#line 1 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print( '
' );
#line 27 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print( '
' );
#line 31 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print( '
' );
#line 32 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"


use CXGN::Accession::Tools;

my $marker_name = $marker->get_name();
my $dbh = $marker->{dbh};
  unless($marker->is_in_collection('COSII')){return'';}
my($html,$html1,$html2,$html3,$html4,$html5,$html6)=('','','','','','');
my $header = "<hr />";
my $cosii_files=cosii_data_files( $marker, $c->config )->{all_other_data_files};

for my $additional_data_file(sort {$a cmp $b} @{$cosii_files}) {
  my $description='';
  my $real_location=$additional_data_file;
  my $data_shared_website_path=$c->config->{'static_datasets_path'};
  $real_location=~s/$data_shared_website_path//;
  $real_location=URI::Escape::uri_escape($real_location);
  my $display_name=$additional_data_file;
  my $view_link='';
  if($additional_data_file=~/([^\/]+)$/){$display_name=$1;}
  if($display_name=~/\.blastx$/) {
    $description = 'BLASTX result of original unigene sequences against Arabidopsis protein database';
    $html1.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/[^FRfr]+\.cds\.fasta$/) {
    $description = 'Alignment of Arabidopsis CDS and edited Asterid unigenes, FASTA';
    $html2.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.aligned2aa$/) {
    $description= 'Alignment of DNA and translated peptides from Arabidopsis CDS and edited Asterid unigenes, plain text';
    $html2.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.pep\.aln$/) {
    $description = 'Alignment of translated peptides from Arabidopsis CDS and edited Asterid unigenes, ClustalW';
    $html2.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.pep\.fasta$/) {
    $description='Alignment of translated peptides from Arabidopsis CDS and edited Asterid unigenes, FASTA';
    $html2.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.cds\.nex$/) {
    $description='Input file for PAUP, NEXUS format';
    $html3.="<a href=\"$additional_data_file\">$description</a><br />";
  } 
  elsif($display_name=~/\.ml\.tre$/) {
    $description='Phylogenetic tree';
    $html3.="<a href=\"$additional_data_file\">$description</a><br />";
    my $file_url=URI::Escape::uri_escape($additional_data_file);
    $html3.="<a href=\"$additional_data_file\">$description</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href=\"/tools/tree_browser/?shared_file=$file_url\">[View]</a><br />"; 
  }
  elsif($display_name=~/\.cds\.fasta$/) {
    $description = 'Amplicon sequence alignment, FASTA';
    $html4.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.txt$/ or $display_name=~/\.seq$/) {
    $description=&_cosii_additional_description($dbh, $display_name).", plain text";
    $html4.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.pdf$/) {
    $description=&_cosii_additional_description($dbh, $display_name).", PDF chromatogram";
    $html4.="<a href=\"$additional_data_file\">$description</a><br />";
  }
  elsif($display_name=~/\.ab1$/) {
    $description=&_cosii_additional_description($dbh, $display_name).", AB1 chromatogram";
    $view_link=" - <a href=\"/tools/trace_view.pl?file=$real_location\">[View]</a>";
    $html4.="<a href=\"$additional_data_file\">$description</a> $view_link<br />";
  }
  elsif($display_name=~/\.cds\.txt$/) {
    $description = 'Original unigene seqs and Arabidopsis CDS seq, FASTA';
    #display nothing
  }
  else {
    $description=$display_name;
    $html6.="<a href=\"$additional_data_file\">$description</a><br />";
  }
}

my $html7 = &cosii_files_html_2($dbh, $marker_name);

if($html1){$html.=$header.$html1;}
if($html2){$html.=$header.$html2;}
if($html3){$html.=$header.$html3;}
if($html4){$html.=$header.$html4;}
if($html5){$html.=$header.$html5;}
if($html6){$html.=$header.$html6;}
if($html7){$html.=$html7;}
if($html){$html.=$header;}
if($html) {
  print  CXGN::Page::FormattingHelpers::blue_section_html('Other COSII sequence data',$html);
}
else{ print '';}

sub cosii_files_html_2 {
  my $dbh = shift;
  my $marker_name = shift;


    $marker_name =~ s/C2_At//;
    my $html;

    my $table = "forward_amplicon_sequence_markers";

    my $select = "select ending from $table where marker_name = '$marker_name' order by ending;";

    my $sth = $dbh->prepare("$select");
    $sth->execute;
    
    while (my $ending = $sth->fetchrow()) {
	$html .= &get_information($dbh, $marker_name, $ending);
    }

    $sth->finish;

    return $html;
}


sub get_information {
    my ($dbh, $marker,$ending) = @_;

    my $cosii_file = $c->config->{'cosii_files'};

    my $table = "forward_amplicon_sequence_information";
    my $html;

    my ($number, $dashnumber, $parennumber) = "";
    if ($ending =~ /(\w+)-(\d+)/) {
	$ending = $1;
	$number = $2;
	$dashnumber = "-$number";
	$parennumber = " ($number)";
    }
    my $select = "select organism_name, accession_id, plant_number "
	. "from $table where ending = '$ending';";
    my $sth = $dbh->prepare("$select");
    $sth->execute;
    my ($organism, $accession, $plant) = $sth->fetchrow();
    
    ($plant eq '0') ? ($plant="") : ($plant = " plant #$plant");
	($accession eq '0') ? ($accession="") : ($accession=" $accession");
    
    my $ab1 = "$cosii_file/ab1/$marker-$ending$dashnumber.ab1";
    my $seq = "$cosii_file/seq/$marker-$ending$dashnumber.seq";
    my $text = "Forward amplicon sequence for $organism$accession$plant$parennumber,";

    $html .= "<a href=\"$ab1\">$text AB1 chromatogram</a> - "
	. "<a href=\"/tools/trace_view.pl?file=$ab1\">[View]</a><br />"
	. "<a href=\"$seq\">$text plain text</a><br />";
    $sth->finish;
    
    return $html;
}

sub _cosii_additional_description {
    my($dbh, $display_name)=@_;
    my $additional_description='';
    if($display_name=~/([FRfr])(\d+)[\-\.]/) {
        my $direction=$1;
        my $accession_abbr=$2;

        if($direction=~/[fF]/){$additional_description='Forward';}
        if($direction=~/[rR]/){$additional_description='Reverse';}
        if($accession_abbr) {
            my @accession_ids=CXGN::Accession::Tools::partial_name_to_ids($dbh,$accession_abbr);
            if(@accession_ids==1) {
                my $accession_object=CXGN::Accession->new($dbh,$accession_ids[0]);
                $additional_description.=' amplicon sequence for '.$accession_object->verbose_name();
            }
            else {
                $additional_description.=" sequence for $accession_abbr";
            }
        }
    }
    else {
        $additional_description=$display_name;
    }
    return $additional_description;
}



sub cosii_data_files {
    my ($marker, $conf) = @_;

    unless($marker->is_in_collection('COSII')){return;}
    my $cosii_data_files={};
    my $seq_file_search_string=CXGN::Marker::Tools::cosii_name_to_seq_file_search_string($marker->name_that_marker());
    my $data_shared_website_path=$conf->{'static_datasets_path'};
    my $additional_data_files_string=`find $data_shared_website_path/cosii -type f -iregex ".*$seq_file_search_string.*"`;
    my @files=split("\n",$additional_data_files_string);
    my @edited_seq_files;
    my @peptide_seq_files;
    my @intron_seq_files;
    my @all_other_data_files;
    for my $file(@files) {
        my $data_shared_url=$conf->{'static_datasets_url'};
        $file=~s/$data_shared_website_path/$data_shared_url/;
        if($file=~/\.cds\.txt\.modify$/) {
            push(@edited_seq_files,$file);
        }
        elsif($file=~/\.pep\.txt$/) {
            push(@peptide_seq_files,$file);
        }
        elsif($file=~/\.intron.txt$/) {
            push(@intron_seq_files,$file);
        }
        else {
            push(@all_other_data_files,$file);
        }
    }
    $cosii_data_files->{edited_seq_files}=\@edited_seq_files;
    $cosii_data_files->{peptide_seq_files}=\@peptide_seq_files;
    $cosii_data_files->{intron_seq_files}=\@intron_seq_files;
    $cosii_data_files->{all_other_data_files}=\@all_other_data_files;
    $cosii_data_files->{all_files}=\@files;
    return $cosii_data_files;
}


#line 252 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print( '
' );
#line 253 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print(  $html  );
#line 253 "/home/production/cxgn/sgn/mason/markers/cosii_files.mas"
$m->print( '
' );
;return;
},
'declared_args' => {
  '$marker' => { default => undef }
},
'load_time' => 1763079527,

)
;