Bio-BioStudio

 view release on metacpan or  search on metacpan

gbrowse_plugins/BS_ChromosomeSplicer.pm  view on Meta::CPAN

  }
}

=head2 configure_form

Render form, gather configuration from user

=cut

sub configure_form
{
  my $self = shift;
  my $gb_settings = $self->page_settings;
  my $sourcename  = $gb_settings->{source};
  my $chromosome  = $BS->set_chromosome(-chromosome => $sourcename);

  #Check if overwrite warning is needed
  my $gwarning = $BS->gv_increment_warning($chromosome);
  my $cwarning = $BS->cv_increment_warning($chromosome);

  my $scalewarns = "<br>";
  if ($gwarning)
  {
    my $gwarn  = "$gwarning already exists; if you increment the genome ";
       $gwarn .= "version it will be overwritten.";
    $scalewarns .= p("<strong style=\"color:#FF0000;\">$gwarn</strong><br> ");
  }
  if ($cwarning)
  {
    my $cwarn  = "$cwarning already exists; if you increment the chromosome ";
       $cwarn .= "version it will be overwritten.";
    $scalewarns .= p("<strong style=\"color:#FF0000;\">$cwarn.</strong><br> ");
  }

  my $db    = $self->db_search;
  my $start = $gb_settings->{view_start};
  my $stop  = $gb_settings->{view_stop};

  my @a = $db->features(-range=>"contains");
  my @flankers =  grep {($_->start < $start && ($_->end <= $stop && $_->end >= $start))
                    || ($_->end > $stop && ($_->start >= $start && $_->start <= $stop))} @a;
  @flankers = map {$_->primary_tag . q{ } . $_->Tag_load_id . "<br>"} @flankers;
 
  my %FEATTYPES = ();
  my @contained = grep {$_->start >= $start && $_->end <= $stop} @a;
  $FEATTYPES{$_->primary_tag}++ foreach (@contained);
  my @featcounts = map { $FEATTYPES{$_} . q{ } . $_  . "<br>"} sort keys %FEATTYPES;
  my @featkeys = sort {$a cmp $b} keys %FEATTYPES;
  unshift @featkeys, $featdefault;
 
  my $BS_FEATS = $BS->custom_features();
  my @BSKINDS = map {"<strong>" . $_->prototype . "</strong> " . $_->primary_tag . "<br>"} values %{$BS_FEATS};
  @BSKINDS = sort {$a cmp $b} @BSKINDS;
  my @inskeys = sort {$a cmp $b} map {$_->prototype} values %{$BS_FEATS};
  unshift @inskeys, $featdefault;
 
  #my %dirlabels = {"3'" => "W", "5'" => 5, "5' and 3'" => 35};
  my $dirlabels = {"3" => "3'", "5" => "5'", "35" => "5' and 3'"};
  my %BSFEATINSHASH;
 
  my $popupsegmflankbsfeat = popup_menu(
    -name     => $self->config_name("segmentflank.INSERT"),
    -values   => \@inskeys,
    -default  => $featdefault);
  $BSFEATINSHASH{"segmentflank"} = "flank this segment with $popupsegmflankbsfeat features (intrusive)<br>";
 
  my $popupfeatflank = popup_menu(
    -name     => $self->config_name("featflank.FEATURE"),
    -values   => \@featkeys,
    -default  => $featdefault);
  my $flankdist = textfield (
    -name       => $self->config_name("featflank.DISTANCE"),
    -default    =>'10',
    -size       => 4,
    -maxlength  => 3);
  my $flankdir = popup_menu(
    -name     => $self->config_name("featflank.DIRECTION"),
    -labels   => $dirlabels,
    -values   => [5, 3, 35],
    -default  => 35);
  my $popupfeatflankbsfeat = popup_menu(
    -name     => $self->config_name("featflank.INSERT"),
    -values   => \@inskeys,
    -default  => $featdefault);
  $BSFEATINSHASH{"featflank"} = "put $popupfeatflankbsfeat features $flankdist bases $flankdir of the $popupfeatflank features in this segment (non-intrusive)<br>";
 
  my $popupbsfeatins = popup_menu(
    -name     => $self->config_name("featins.INSERT"),
    -values   => \@inskeys,
    -default  => $featdefault);
  my $namebsfeatins = textfield (
    -name       => $self->config_name("featins.NAME"),
    -default    => "$sourcename:$start..$stop",
    -size       => 30,
    -maxlength  => 30);
  $BSFEATINSHASH{"featins"} = "insert a $popupbsfeatins feature here and name it $namebsfeatins (intrusive)<br>";
 
  my (@choices, @facts) = ((), ());
  
  push @choices, TR(
    {-class => 'searchtitle'},
    th("Editing Chromosome Features<br>")
  );
     
  push @choices, TR(
    {-class => 'searchtitle'},
    th('Editor Name'),
    td(
      textfield(
        -name       => $self->config_name('EDITOR'),
        -default    => $ENV{REMOTE_USER},
        -size       => 25,
        -maxlength  => 20
      )
    )
  );
           
  push @choices, TR(
    {-class => 'searchtitle'},
    th('Notes'),
    td(
      textfield(
        -name =>  $self->config_name('MEMO'),
        -size =>  50
      )
    )
  );
           
  push @choices, TR(
    {-class => 'searchtitle'},
    th("Increment genome version or chromosome version?$scalewarns"),
    td(
      radio_group(
        -name   => $self->config_name('SCALE'),
        -values => ['genome', 'chrom'],
        -labels =>  {
          'chrom'  => 'chromosome version',
          'genome' => 'genome version'},
        -default=>'chrom'
      )
    )
  );
           
  autoEscape(0);
  push @choices, TR(
    {-class => 'searchbody'},
    th(
      {-align => 'RIGHT', -width => '25%'},
      "CUSTOM FEATURE INSERTIONS"
    ),
    td("<br>",
      radio_group(
        -name   => $self->config_name('ACTION'),
        -values => \%BSFEATINSHASH
      ),
      "<br><br>"



( run in 1.042 second using v1.01-cache-2.11-cpan-364913b4093 )