InSilicoSpectro
view release on metacpan or search on metacpan
lib/InSilicoSpectro/InSilico/ModRes.pm view on Meta::CPAN
foreach (qw (aaCur aa aaBefore )) {
$mr->set($_, $elres->atts->{$_});
}
my $str="(?<=[$mr->{aaBefore}]" if $mr->{aaBefore};
$str.="[$mr->{aa}]";
$str.="(?=[$mr->{aaAfter}])" if $mr->{aaAfter};
$mr->regexp($str);
} elsif (my $elSite=$el->first_child('site')) {
my $elRes=$elSite->first_child('residue') or croak "no [residue] child";
$mr->nTerm(defined $elSite->first_child('nterm'));
$mr->cTerm(defined $elSite->first_child('cterm'));
$mr->{site}{residue}=$elRes;
my $re.=$mr->nTerm?'^':'';
$re.="[".($elRes->text || '.')."]";
$re.=$mr->cTerm?'$':'';
$mr->regexp($re);
} elsif (my $elSite=$el->first_child('siteRegexp')) {
$mr->nTerm(defined $elSite->atts->{nterm});
$mr->cTerm(defined $elSite->atts->{cterm});
my $re.=$mr->nTerm?'^':'';
$re.=$elSite->text;
$re.=$mr->cTerm?'$':'';
$mr->regexp($re);
} else {
croak "in oneModRes tag, could not find any of (residue|site|siteRegexp) child notations";
}
my @tmp=$el->get_xpath('delta') or InSilicoSpectro::Utils::io::croakIt "cannot find <delta> tag";
my $eldelta=$tmp[0];
foreach (qw (monoisotopic average)) {
$mr->set("delta_$_", $eldelta->atts->{$_});
}
if (@tmp=$el->get_xpath('sprotFT')) {
$mr->set('sprotFT', $tmp[0]->text);
}
# $mr->add2Dico();
if(registerModResHandler()){
registerModResHandler()->($mr);
}
}
sub getXMLTwigElt{
my $this=shift;
my $el=XML::Twig::Elt->new()->parse("<oneModRes type='".($this->{type}||'aaModif')."' name='$this->{name}'/>");
XML::Twig::Elt->new()->parse("<description><![CDATA[$this->{description}]]></description>")->paste(last_child=>$el);
if($this->{site}){
my $termtag="";
$termtag.='<nterm/>' if($this->nTerm);
$termtag.='<cterm/>' if($this->cTerm);
XML::Twig::Elt->new()->parse("<site><residue>$this->{site}{residue}</residue>$termtag</site>")->paste(last_child=>$el);
}else{
my $termatts="";
$termatts=' nterm="yes"' if($this->nTerm);
$termatts=' cterm="yes"' if($this->cTerm);
XML::Twig::Elt->new()->parse("<siteRegexp$termatts>$this->{regexpStr}</siteRegexp>")->paste(last_child=>$el);
}
XML::Twig::Elt->new()->parse("<delta monoisotopic='$this->{delta_monoisotopic}' average='$this->{delta_average}'/>")->paste(last_child=>$el);
XML::Twig::Elt->new()->parse("<formula>$this->{formula}</formula>")->paste(last_child=>$el);
XML::Twig::Elt->new()->parse("<sprotFT><![CDATA[$this->{sprotFT}]]></sprotFT>")->paste(last_child=>$el) if $this->{sprotFT};
return $el;
}
sub registerModResHandler{
my $sub=shift;
if($sub){
$rsRegisterModResHandler=$sub;
}
return $rsRegisterModResHandler;
}
# ------------------------------- misc
return 1;
( run in 1.167 second using v1.01-cache-2.11-cpan-39bf76dae61 )