Mercurial > repos > fgiacomoni > lipidmaps_textsearch
view lib/parser.pm @ 3:f4e6b77c46e3 draft default tip
Master branch Updating - - Fxx
author | fgiacomoni |
---|---|
date | Wed, 03 Oct 2018 05:47:14 -0400 |
parents | e8bd49794291 |
children |
line wrap: on
line source
package lib::parser ; use strict; use warnings; use Data::Dumper; use Carp ; use Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); $VERSION = "1.0"; @ISA = qw(Exporter); @EXPORT = (); @EXPORT_OK = qw( get_oxidation_ref get_neutral_loss_ref set_category set_class set_subclass ); %EXPORT_TAGS = ( ALL => [qw( get_oxidation_ref get_neutral_loss_ref set_category set_class set_subclass )] ) ; =head1 NAME My::operations - An example module =head1 SYNOPSIS use My::operations; my $object = My::Module->new(); print $object->as_string; =head1 DESCRIPTION This module clusters several more used maths functions like factorial... =head1 METHODS Methods are : =head2 METHOD new ## Description : new ## Input : $self ## Ouput : bless $self ; ## Usage : new() ; =cut sub new { ## Variables my $self={}; bless($self) ; return $self ; } ### END of SUB =head2 METHOD get_oxidation_ref ## Description : get oxidation type and oxidation modification from conf file ## Input : $CONF ## Output : $list_oxidations, $list_ox_values ## Usage : my ( $list_oxidations, $list_ox_values ) = get_oxidation_ref( $CONF, $selected_ox ) ; =cut ## START of SUB sub get_oxidation_ref { ## Retrieve Values my $self = shift ; my ( $CONF, $selected_ox ) = @_ ; my @list_oxidations = () ; my @clean_list_oxidations = () ; my @list_ox_values = () ; if ( defined $selected_ox ) { @list_oxidations = split( /,/, $selected_ox ) ; my $pos = 0 ; ## manage the splice foreach my $ox ( @list_oxidations ) { if ($ox !~/NA$/ ) { ## case of ox push(@clean_list_oxidations, $ox) ; if ( $ox =~/^loss_(.*)/ ) { push ( @list_ox_values, ($CONF->{$1}) ) ; } elsif ( $ox =~/^add_(.*)/ ) { push ( @list_ox_values, -($CONF->{$1}) ) ; } ### carefull of the number sign else { warn "This oxidation ($ox) is unknown in conf and menu\n" ; } } else { # if atoms eq NA, splice it next ; } $pos++ ; } } return(\@clean_list_oxidations, \@list_ox_values) ; } ## END of SUB =head2 METHOD get_neutral_loss_ref ## Description : get neutral loss type and neutral loss modifications from conf file ## Input : $CONF ## Output : $list_neutral_losses, $list_nloss_values ## Usage : my ( $list_neutral_losses, $list_nloss_values ) = get_neutral_loss_ref( $CONF, $selected_nloss ) ; =cut ## START of SUB sub get_neutral_loss_ref { ## Retrieve Values my $self = shift ; my ( $CONF, $selected_nloss ) = @_ ; my @list_neutral_losses = () ; ## complete list my @clean_list_neutral_losses = () ; # list without NA my @list_nloss_values = () ; # values if ( defined $selected_nloss ) { @list_neutral_losses = split( /,/, $selected_nloss ) ; foreach my $nloss ( @list_neutral_losses ) { if ($nloss !~/NA$/ ) { ## case of neutral loss push(@clean_list_neutral_losses, $nloss) ; if ( $nloss =~/^loss_(.*)/ ) { push ( @list_nloss_values, ($CONF->{$1}) ) ; } elsif ( $nloss =~/^add_(.*)/ ) { push ( @list_nloss_values, -($CONF->{$1}) ) ; } ### carefull of the number sign else { warn "This neutral loss ($nloss) is unknown in conf and menu\n" ; } } else { # if atoms eq NA, splice it next ; } } } return(\@clean_list_neutral_losses, \@list_nloss_values) ; } ## END of SUB =head2 METHOD set_category ## Description : set the category id from any types of ids ## Input : $unknown_id ## Output : $cat_id ## Usage : my ( $cat_id ) = set_category( $unknown_id ) ; =cut ## START of SUB sub set_category { ## Retrieve Values my $self = shift ; my ( $unknown_id ) = @_ ; my $cat_id = undef ; if ( defined $unknown_id ) { if ( $unknown_id > 0 ) { if ( (length $unknown_id) == 1 ) { $cat_id = $unknown_id } elsif ( (length $unknown_id) == 3 ) { $cat_id = substr($unknown_id, 0, 1) } elsif ( (length $unknown_id) == 5 ) { $cat_id = substr($unknown_id, 0, 1) } } } else { warn "Can't find any id to substr\n" ; } return( \$cat_id ) ; } ## END of SUB =head2 METHOD set_class ## Description : set the class id from any types of ids ## Input : $unknown_id ## Output : $class_id ## Usage : my ( $class_id ) = set_category( $unknown_id ) ; =cut ## START of SUB sub set_class { ## Retrieve Values my $self = shift ; my ( $unknown_id ) = @_ ; my $class_id = undef ; if ( defined $unknown_id ) { if ( $unknown_id > 0 ) { if ( (length $unknown_id) == 3 ) { $class_id = $unknown_id } elsif ( (length $unknown_id) == 5 ) { $class_id = substr($unknown_id, 0, 3) } } } else { warn "Can't find any id to substr\n" ; } return( \$class_id ) ; } ## END of SUB =head2 METHOD set_subclass ## Description : set the subclass id from any types of ids ## Input : $unknown_id ## Output : $subclass_id ## Usage : my ( $subclass_id ) = set_subclass( $unknown_id ) ; =cut ## START of SUB sub set_subclass { ## Retrieve Values my $self = shift ; my ( $unknown_id ) = @_ ; my $subclass_id = undef ; if ( defined $unknown_id ) { if ( $unknown_id > 0 ) { if ( (length $unknown_id) == 5 ) { $subclass_id = $unknown_id } } } else { warn "Can't find any id to substr\n" ; } return( \$subclass_id ) ; } ## END of SUB 1 ; __END__ =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc XXX.pm =head1 Exports =over 4 =item :ALL is ... =back =head1 AUTHOR Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt> =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 VERSION version 1 : xx / xx / 201x version 2 : ?? =cut