InSilicoSpectro

 view release on metacpan or  search on metacpan

cgi/cgiInSilicoDef.pl  view on Meta::CPAN

        document.define.site_cleav.disabled=1;
        document.define.site_adjacent.disabled=1;
        document.define.site_terminus[0].disabled=1;
        document.define.site_terminus[1].disabled=1;
        document.define.site_cleav.value='';
        document.define.site_adjacent.value='';
        document.define.siteregexp.disabled=0;
        return;
      }
    }
    function check(){
      return 1;
    }

    </script>
  </head>
  <body>
    <form name="define"  method="get">
    <table border='1' cellspacing='0'>
      <tr>
        <td valign='top'>
          <select size=20 onchange="id2cleavenzymeForm(this.value)">
EOT
  foreach (sort @keys) {
    print "            <option value='$_' ".(($_ eq $key)?'selected="1"':'').">$_</option>\n";
  }
    print <<EOT;
          </select>
        </td>
        <td>
          <h5>Name <input type='textfield' name='key'/></h5>
          <h5>Cleavage site</h5>
          <table border=1 cellspacing=0>
            <tr id="cleavsite_classic">
              <td valign='top'>Site</td>
              <td valign='top'><input type="radio" name="sitetype" value="classic" onclick="selectCleavSiteMode('classic');"/></td>
              <td>
                <table>
                  <tr>
                  <td>cleav at</td>
                  <td><input type='textfield' name='site_cleav'/></td>
                  </tr>
                  <tr>
                  <td>adjacent</td>
                  <td><input type='textfield' name='site_adjacent'/></td>
                  </tr>
                  <tr>
                  <td valign='top'>terminus</td>
                  <td><input type="radio" name="site_terminus" value="C" SELECTED/>C<br/><input type="radio" name="site_terminus" value="N"/>N</td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr id="cleavsite_regexp">
              <td valign='top'>Regular expression</td>
              <td valign='top'><input type="radio" name="sitetype"  value="regexp" onclick="selectCleavSiteMode('regexp');"/></td>
              <td><input type='textfield' name='siteregexp'/></td>
            </tr>
          </table>

          <h5>Gain (formula)</h5>
          <table border=1 cellspacing=0>
            <tr>
              <td>N-term</td>
              <td><input type="textfield" name="NTermGain"/></td>
            </tr>
            <tr>
              <td>C-term</td>
              <td><input type="textfield" name="CTermGain"/></td>
            </tr>
          </table>
        </td>
      </tr>
      <tr>
EOT
  if ($edit){
    print <<EOT;
        <td colspan='2'>
          <input type="button" value="new" onclick="newObj('$cat');"/>
          <input type="button" value="delete" onclick="removeObj();"/>
          <input type="submit" value="save" onclick="saveObj();"/>
          <input type='hidden' name='edit' value='1'/>
        </td>
EOT
  }
  print <<EOT;
      </tr>
    </table>
EOT

  foreach (@args){
    my ($n, $v)=split /=/, $_, 2;
    print "    <input type='hidden' name='$n' value='$v'/>\n";
  }
  print "    <input type='hidden' name='cat' value='cleavenzyme'/>\n";
  print "    <input type='hidden' name='actiontype' value='n/A'/>\n";

  print "    <input type='hidden' name='frame' value='main'/>\n";

print <<EOT;
    </form>
EOT

print <<EOT;
<form name='test'>
  <textarea name='sequence' cols=60 rows=5>$testSequence</textarea>
  <br/>
  <input type="submit" value="test"/>
EOT

  foreach (@args){
    my ($n, $v)=split /=/, $_, 2;
    print "    <input type='hidden' name='$n' value='$v'/>\n";
  }
  print "    <input type='hidden' name='cat' value='cleavenzyme'/>\n";
  print "    <input type='hidden' name='actiontype' value='test'/>\n";
  print "    <input type='hidden' name='key' value=''/>\n";
  print "    <input type='hidden' name='edit' value='1'/>\n" if $edit;

  print "    <input type='hidden' name='frame' value='main'/>\n";
  print "  </form>\n";

cgi/cgiInSilicoDef.pl  view on Meta::CPAN

}

###############################################################

if($cat eq 'modres'){
  print "<h3>Residue modifications setup for $target</h3>\n";
  my $key=$query->param('key');
  $key=~s/\s/_/g;
  if($query->param('actiontype') eq 'save'){
    my @tmp=$twig->root->get_xpath("//oneModRes[\@name='$key']");
    my $el;
    if(@tmp){
      $el=$tmp[0];
    }else{
      $el=XML::Twig::Elt->new()->parse("<oneModRes name='$key'/>")->paste(last_child=> $twig->root->first_child('modRes'));
    }
    query2modres($query, $el);
    $lockmgr->trylock("$defFile") || croak "can't lock [$defFile]: $!\n";
    open (fd, ">$defFile") or CORE::die "cannot open for writeing [$defFile]: $!";
    $twig->print(\*fd);
    close fd;
    $lockmgr->unlock("$defFile") || croak "can't unlock [$defFile]: $!\n";
  }
  if($query->param('actiontype') eq 'delete'){
    my @tmp=$twig->root->get_xpath("//oneModRes[\@name='$key']");
    my $el;
    if(@tmp){
      $el=$tmp[0];
      $el->delete;
      $lockmgr->trylock("$defFile") || croak "can't lock [$defFile]: $!\n";
      open (fd, ">$defFile") or CORE::die "cannot open for writeing [$defFile]: $!";
      $twig->print(\*fd);
      close fd;
      $lockmgr->unlock("$defFile") || croak "can't unlock [$defFile]: $!\n";
    }
  }
  print "  <script language='javascript'>\n";
  my @keys;
  foreach ($twig->root->get_xpath("//oneModRes")) {
    my $key=$_->atts->{name};
    push @keys, $key;
    print "    defList['$key']=new Array();\n";
    print "    defList['$key']['name']='$key';\n";
    my $descr=$_->first_child('description')->text;
    $descr=~s/'/ /g;
    $descr=~s/[\r\n]//g;
    print "    defList['$key']['description']='$descr';\n";
    if (my $els=$_->first_child('site')) {
      print "    defList['$key']['residue']='".$els->first_child("residue")->text."';\n";
      print "    defList['$key']['nterm']=".($els->first_child("nterm")?'1':'0').";\n";
      print "    defList['$key']['cterm']=".($els->first_child("cterm")?'1':'0').";\n";
    } elsif($_->first_child('siteRegexp')){
      print "    defList['$key']['siteRegexp']='".$_->first_child('siteRegexp')->text."';\n";
      print "    defList['$key']['nterm']=".(0+$_->atts->{nterm}).";\n";
      print "    defList['$key']['cterm']=".(0+$_->atts->{cterm}).";\n";
    }else{#oldfashion
      print "    defList['$key']['residue']='".$_->first_child('residue')->atts->{a}."';\n";
    }
    print "    defList['$key']['delta_mono']='".$_->first_child('delta')->atts->{monoisotopic}."';\n";
    print "    defList['$key']['delta_avg']='".$_->first_child('delta')->atts->{average}."';\n";
    print "    defList['$key']['formula']='".($_->first_child('formula')?$_->first_child('formula')->text:'')."';\n";
    my $spft=($_->first_child('sprotFT'))?($_->first_child('sprotFT')->text):"";
    print "    defList['$key']['sprotFT']=\"$spft\";\n";
  }
  print <<EOT;

    function id2modresForm(id){
      document.define.key.value=id;
      document.test.key.value=id;

      document.define.key.disabled=1;
      mr=defList[id];
      document.define.description.value=mr.description;
      if(mr['residue']!=null){
        selectSiteMode('classic');
        document.define.sitetype[0].checked=1;
        document.define.residue.value=mr['residue'];
      }else{
        selectSiteMode('regexp');
        document.define.sitetype[1].checked=1;
        document.define.siteregexp.value=mr['siteRegexp'];
      }
      document.define.nterm.checked=mr['nterm'];
      document.define.cterm.checked=mr['cterm'];
      document.define.delta_mono.value=mr['delta_mono'];
      document.define.delta_avg.value=mr['delta_avg'];
      document.define.formula.value=mr['formula'];
      document.define.sprotFT.value=mr['sprotFT'];

    }

    function selectSiteMode(val){
      if(val == 'classic'){
        document.getElementById('site_regexp').bgColor='lightgrey';
        document.getElementById('site_classic').bgColor='white';
        document.define.sitetype[0].checked=1;
        document.define.residue.disabled=0;
        document.define.siteregexp.disabled=1;
        document.define.siteregexp.value='';
        return;
      }
      if(val == 'regexp'){
        document.getElementById('site_classic').bgColor='lightgrey';
        document.getElementById('site_regexp').bgColor='white';
        document.define.sitetype[1].checked=1;
        document.define.residue.disabled=1;
        document.define.residue.value='';
        document.define.siteregexp.disabled=0;
        return;
      }
    }

    function check(){
      return 1;
    }

    </script>
  </head>
  <body>
    <form name="define"  method="get">
    <table border='1' cellspacing='0'>
      <tr>
        <td valign='top'>
          <select size=20 onchange="id2modresForm(this.value)">
EOT
  foreach (sort @keys) {
    print "            <option value='$_' ".(($_ eq $key)?'selected="1"':'').">$_</option>\n";
  }
    print <<EOT;
          </select>
        </td>
        <td>
          <h5>Name <input type='textfield' name='key'/></h5>
          <h5>Description</h5>
            <input type='textfield' size=80 name='description'/>
          <hr width="100%"/>
          <center><h4>Position</h4></center>
          <h5>Modif site</h5>
          <table border=1 cellspacing=0>
            <tr id="site_classic">
              <td valign='top'>Residue</td>
              <td valign='top'><input type="radio" name="sitetype" value="classic" onclick="selectSiteMode('classic');"/></td>
              <td>
                <input type='textfield' name='residue'/>
              </td>
            </tr>
            <tr id="site_regexp">
              <td valign='top'>Regular expression</td>
              <td valign='top'><input type="radio" name="sitetype"  value="regexp" onclick="selectSiteMode('regexp');"/></td>
              <td><input type='textfield' name='siteregexp'/></td>
            </tr>
          </table>

          <h5>Peptide terminus</h5>
          nterm <input type="checkbox" name="nterm"/>
          cterm <input type="checkbox" name="cterm"/>

          <hr width="100%"/>
          <center><h4>Mass modification</h4></center>
          <h5>Delta mass</h5>
          <table border=1 cellspacing=0>
            <tr>
              <td>mono isotopic</td>
              <td><input type="textfield" name="delta_mono"/></td>
            </tr>
            <tr>
              <td>average</td>
              <td><input type="textfield" name="delta_avg"/></td>
            </tr>
          </table>

          <h5>Formula</h5>
          <input type="textfield" name="formula"/>

          <hr width="100%"/>
          <center><h4>Uniprot annotations</h4></center>
          <h5>Uniprot FT mask</h5>
          <input type='textfield' size=80 name='sprotFT'/>
        </td>
      </tr>
      <tr>
EOT
  if ($edit){
    print <<EOT;
        <td colspan='2'>
          <input type="button" value="new" onclick="newObj('$cat');"/>
          <input type="button" value="delete" onclick="removeObj();"/>
          <input type="submit" value="save" onclick="saveObj();"/>
          <input type='hidden' name='edit' value='1'/>
        </td>
      </tr>
    </table>
EOT
  }
  print <<EOT;
      </tr>
    </table>
EOT

  foreach (@args){
    my ($n, $v)=split /=/, $_, 2;
    print "    <input type='hidden' name='$n' value='$v'/>\n";
  }
  print "    <input type='hidden' name='cat' value='modres'/>\n";
  print "    <input type='hidden' name='actiontype' value='n/A'/>\n";

  print "    <input type='hidden' name='frame' value='main'/>\n";

print <<EOT;
    </form>
EOT

print <<EOT;
<form name='test'>
  <textarea name='sequence' cols=60 rows=5>$testSequence</textarea>
  <br/>
  <input type="submit" value="test"/>
EOT

  foreach (@args){
    my ($n, $v)=split /=/, $_, 2;
    print "    <input type='hidden' name='$n' value='$v'/>\n";
  }
  print "    <input type='hidden' name='cat' value='modres'/>\n";
  print "    <input type='hidden' name='actiontype' value='test'/>\n";
  print "    <input type='hidden' name='key' value=''/>\n";
  print "    <input type='hidden' name='edit' value='1'/>\n" if $edit;

  print "    <input type='hidden' name='frame' value='main'/>\n";
  print "  </form>\n";

print "  <script language='javascript'>id2modresForm('$key')</script>\n" if defined $key;

cgi/cgiInSilicoDef.pl  view on Meta::CPAN

    my $mr=InSilicoSpectro::InSilico::ModRes::getFromDico($key);
    my $qr=$mr->regexp;
    print "<h4>$qr</h4>\n";
    $testSequence=~s/($qr)/<b>$1<\/b>/g;
    print "<tt>$testSequence</tt>\n";

  }


print <<EOT;
  </body>
</html>
EOT
}





sub query2cleavEnzyme{
  my ($q, $el)=@_;
  foreach ($el->children){
    $_->delete;
  }
  if($q->param('sitetype')eq 'classic'){
    my $els=XML::Twig::Elt->new()->parse("
<site>
  <cleavSite>".(uc $q->param('site_cleav'))."</cleavSite>
  <adjacentSite>".((uc $q->param('site_adjacent'))||'.')."</adjacentSite>
  <terminus>".(uc $q->param('site_terminus'))."</terminus>
</site>
")->paste(first_child=>$el);;
  }else{
    my $els=XML::Twig::Elt->new()->parse("<siteRegexp><![CDATA[".$q->param('siteregexp')."]]></siteRegexp>")->paste(first_child=>$el);;
  }
  XML::Twig::Elt->new()->parse("<CTermGain>".$q->param('CTermGain')."</CTermGain>")->paste(last_child=>$el);
  XML::Twig::Elt->new()->parse("<NTermGain>".$q->param('NTermGain')."</NTermGain>")->paste(last_child=>$el);

}

sub query2modres{
  my ($q, $el)=@_;
  foreach ($el->children){
    $_->delete;
  }
  XML::Twig::Elt->new()->parse("<description>".$q->param('description')."</description>")->paste(last_child=>$el);

  if($q->param('sitetype')eq 'classic'){
    my $contents="<site>";
    $contents.="<residue>".(uc $q->param('residue'))."</residue>";
    $contents.="<nterm/>" if $q->param('nterm');
    $contents.="<cterm/>" if $q->param('cterm');
    $contents.="</site>";
    my $els=XML::Twig::Elt->new()->parse($contents)->paste(last_child=>$el);;
  }else{
    my $atts;
    $atts.=" nterm='yes'" if $q->param('nterm');
    $atts.=" cterm='yes'" if $q->param('cterm');
    my $els=XML::Twig::Elt->new()->parse("<siteRegexp$atts><![CDATA[".$q->param('siteregexp')."]]></siteRegexp>")->paste(first_child=>$el);
  }
  my $formula=$q->param('formula');
  my $dm_mono=$q->param('delta_mono')||-999;
  my $dm_avg=$q->param('delta_avg')||-999;
  if ($formula){
    ($dm_mono, $dm_avg)=InSilicoSpectro::InSilico::MassCalculator::massFromComposition($formula);
  }
  XML::Twig::Elt->new()->parse("<delta monoisotopic='$dm_mono' average='$dm_avg'/>")->paste(last_child=>$el);
  XML::Twig::Elt->new()->parse("<formula>$formula</formula>")->paste(last_child=>$el) if $q->param('formula');
  XML::Twig::Elt->new()->parse("<sprotFT><![CDATA[".$q->param('sprotFT')."]]></sprotFT>")->paste(last_child=>$el);
}



( run in 2.918 seconds using v1.01-cache-2.11-cpan-0fb53d1c279 )