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_orthologs.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_orthologs.mas"
$m->print( '
' );
#line 27 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
' );
#line 31 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
' );
#line 32 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"


use CXGN::Unigene::Tools;

my $marker_name = $marker->get_name();
return '' unless $marker->is_in_collection('COSII');

my $cosii_data_files = cosii_data_files($marker, $c);
my @unigenes = $marker->cosii_unigenes();

my $table_headings = [ 'Species', 'Copies', 'Sequence ID', 'CDS/Edited sequence', 'Peptide sequence', 'Predicted introns' ];
my $table_data = [];

for my $unigene (@unigenes) {

  $unigene->{copies} = {
         S => 'Single',
         M => 'Multiple',
  }->{ $unigene->{copies} } || 'No copy data found';

  $unigene->{sequence_name} ||= CXGN::Marker::Tools::cosii_to_arab_name( $marker_name );

  $unigene->{organism} ||= $unigene->{database_name};
        
  if( $unigene->{unigene_id} ) {

    if( $unigene->{organism}=~/Coffee/i ) {

      my $new_sgn_id = CXGN::Unigene::Tools::cgn_id_to_sgn_id( $marker->{dbh}, $unigene->{unigene_id} );
      my $old_coffee_id = $unigene->{unigene_id};
      $unigene->{unigene_id} = qq|<a href="/search/unigene.pl?unigene_id=$new_sgn_id">$new_sgn_id (SGN)</a><br /><span class="ghosted">$old_coffee_id (CGN)</span>|;
    }
    else {
      $unigene->{unigene_id} = qq|<a href="/search/unigene.pl?unigene_id=$unigene->{unigene_id}">SGN-U$unigene->{unigene_id}</a>|;
    }
  }
  else {
    $unigene->{unigene_id} = 'Not available';
  }

  my $organism_name_for_uri = URI::Escape::uri_escape( $unigene->{organism} );
  my( $ed_desc, $pep_desc, $int_desc ) = ( 'Edited', 'Peptide', 'Introns' );

  my @row_data;

  push @row_data, $unigene->{organism};
  push @row_data, $unigene->{copies};

  if( $unigene->{organism}=~/Arabidopsis/i ) {
    push @row_data, CXGN::Marker::Tools::tair_gene_search_link($unigene->{sequence_name});
    $ed_desc  = 'CDS from TAIR';
    $pep_desc = 'Peptide from TAIR';
    $int_desc = 'Introns from TAIR';
  }
  else {
    push @row_data, $unigene->{unigene_id};
  }

  if ($cosii_data_files->{edited_seq_files}->[0]) {
    for my $file (@{$cosii_data_files->{edited_seq_files}}) {
      push @row_data, qq|<a href="$file">$ed_desc</a>|;
    }
  }
  else {
    push @row_data, '-';
  }

  if ( $cosii_data_files->{peptide_seq_files}->[0] ) { 
    for my $file( @{$cosii_data_files->{peptide_seq_files}} ) {
        push @row_data, qq|<a href="$file">$pep_desc</a>|;
    }
  }
  else{
      push @row_data, '-';
  }

  if( $cosii_data_files->{intron_seq_files}->[0] ) {
    for my $file( @{$cosii_data_files->{intron_seq_files}} ) {
      push @row_data, qq|<a href="$file">$int_desc</a>|;
    }
  }
  else{
      push @row_data, '-';
  }

  push @$table_data, \@row_data;
}

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 158 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
' );
#line 159 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->comp( { content => sub {
#line 159 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
  ' );
#line 160 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->comp(   '/page/columnar_table.mas', headings => $table_headings, data => $table_data, __align => 'llcccc'   
); #line 160 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
' );
#line 161 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
} }, '/page/info_section.mas', title=>"Orthologs in this COSII group"
 );
#line 161 "/home/production/cxgn/sgn/mason/markers/cosii_orthologs.mas"
$m->print( '
' );
;return;
},
'declared_args' => {
  '$marker' => { default => undef }
},
'load_time' => 1763079527,

)
;