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 )