Changeset 9 for lib


Ignore:
Timestamp:
Apr 22, 2010, 6:35:36 PM (10 years ago)
Author:
maarten
Message:

Fixed file names and parsing indels

Location:
lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lib/Omim2dbsnp.pm

    r7 r9  
    4848                }
    4949                else {
    50                         $dbsnp = "";
     50                        $dbsnp = "\t";
    5151                        #carp( "omimid:" . $omim,
    5252                        #       " numberref:", $av, " value does not exist/n" );
  • lib/ProccesAllicVariants.pm

    r8 r9  
    1717sub trim($) {
    1818        my $string = shift;
    19         $string =~ s/^\s+//;
    20         $string =~ s/\s+$//;
     19        if ( length($string) > 0 ) {
     20                $string =~ s/^\s+//;
     21                $string =~ s/\s+$//;
     22        }
    2123        return $string;
     24}
     25
     26sub getfilename {
     27        my ( $title, $alt ) = @_;
     28        my $protein = "";
     29
     30        if ( $title =~ m/\;/ ) {
     31                if ( $title =~ /([\w\-]{2,10})\s{0,1}$/ ) {
     32                        $protein = $1;
     33
     34                }
     35        }
     36
     37        if ( $protein eq "" ) {
     38
     39                my $titlelong = $title . ";" . $alt . ";";
     40
     41                #remove breaks
     42                $titlelong =~ s/\r\n|\n|\r/;/g;
     43
     44                if ( $protein eq "") {
     45
     46                        if ( $alt =~ /^(\w{2,10})$/ ) {
     47                                $protein = $alt;
     48
     49                        }
     50
     51                        else {
     52                                if ( $titlelong =~ /[\;\:][ ]*?([\w\-]{3,10})[ ]*?\;/ ) {
     53                                        $protein = $1;
     54                                }
     55                        }
     56                }
     57        }
     58        return ( trim $protein);
    2259}
    2360
     
    2764        my $mutation = $av->aa_ori() . $av->position() . $av->aa_mut();
    2865        if ( length($mutation) == 0 ) {
    29                 $mutation = formatInDelMutation($av->additional_mutations());
    30                
     66                $mutation = formatInDelMutation( $av->additional_mutations() );
     67
    3168        }
    3269        return ($mutation);
     
    89126                        $result = $1;
    90127                }
     128
    91129                #n A-to-G transition at nucleotide 1730 in exon 13, resulting in
    92                 elsif ( $desc =~ /([ACTG]-to-[ACTG] trans[a-z]{4,9})[\w\s\-\.]{0,10}(nucleotide \d{1,5})[\w\s\-\.]{0,90}((exon|intron)\s\d{1,3})/i ) {
    93                         $result = $1." at ".$2." in ".$3;
    94                        
     130                elsif ( $desc =~
     131/([ACTG]-to-[ACTG] trans[a-z]{4,9})[\w\s\-\.]{0,10}(nucleotide \d{1,5})[\w\s\-\.]{0,90}((exon|intron)\s\d{1,3})/i
     132                  )
     133                {
     134                        $result = $1 . " at " . $2 . " in " . $3;
    95135
    96136                        #print($result);
    97                        
     137
    98138                        #T-to-C transition BLABLA in exon 30
    99139                }
     
    106146                elsif ( $desc =~ /([0-9]{1,5}[ACTG]-[ACTG] trans[a-z]{4,9})/i ) {
    107147                        $result = $1;
     148
     149                        #print($result);
     150
     151                        #T-to-C transition BLABLA in exon 30
     152                }
     153                elsif ( $desc =~ /([ACTG]{3}-to-[ACTG]{3})/i ) {
    108154                        $result = $1;
    109155
    110156                        #print($result);
    111                        
     157
    112158                        #T-to-C transition BLABLA in exon 30
    113                 }elsif($desc =~ /([ACTG]-to-[ACTG] trans[a-z]{4,9})[\w\s\-\.]{0,90}((exon|intron)\s\d{1,3})/i){
    114                         $result=$1." in ".$2;
     159                }
     160
     161                elsif ( $desc =~
     162/([ACTG]-to-[ACTG] trans[a-z]{4,9})[\w\s\-\.]{0,90}((exon|intron)\s\d{1,3})/i
     163                  )
     164                {
     165                        $result = $1 . " in " . $2;
    115166                }
    116167                elsif ( $desc =~ /([ACTG]{3} to [ACTG]{3})/ ) {
    117168                        $result = $1;
     169                }
     170                else {
     171
     172                        $result = "\t";
    118173                }
    119174
     
    136191        # add regexp for authors with  And between names
    137192
    138         push( @regexp, "\\b([A-Za-z\\-]*.[^\\)\\,]\\sand\\s[\\w-]*.)\\s*.\\(([\\d]{4})\\)" );
     193        push( @regexp,
     194                "\\b([A-Za-z\\-]*.[^\\)\\,]\\sand\\s[\\w-]*.)\\s*.\\(([\\d]{4})\\)" );
    139195
    140196        #TODO: add solution for mulitple authors (author 2009; auth3 2002 ,etc )
     
    152208        #de Vries and de Wet (1986, 1987)
    153209        push( @regexp,
    154                 "\\b([A-Za-z\\-]{3,11}\\sand\\s[\\w\\s-]{3,11})\\s*.\\(([\\d\\s,]{4,17})\\)" );
     210"\\b([A-Za-z\\-]{3,11}\\sand\\s[\\w\\s-]{3,11})\\s*.\\(([\\d\\s,]{4,17})\\)"
     211        );
    155212
    156213        #See 123456.1234
     
    163220
    164221                if ( @srcs = ( $desc =~ /$reg/g ) ) {
     222
    165223                        #print($reg);
    166224                        push( @returnarray, @srcs );
     
    192250                        my $auth = $ref->authors();
    193251                        if ( $auth =~ m/^$authAV/ ) {
    194                                 my $authY = $ref->location();
    195                                 my $tempresult="";
     252                                my $authY      = $ref->location();
     253                                my $tempresult = "";
    196254                                if ( $authY =~ m/$yearAV/ ) {
    197                                        
     255
    198256                                        $tempresult =
    199257                                          $self->{Omim2Pubmed}->getpubmed( $numb, $counter );
    200                                           if ($tempresult ne ""){
    201                                                 print($counter." ".$numb."\n");
    202                                                 $result.=$tempresult;
    203                                           }else{
    204                                                 $result.=$authAV."(".$yearAV.") ".$ref->location();
    205                                                
    206                                           }
     258                                        if ( $tempresult ne "" ) {
     259                                                $result .= "{PMID"
     260                                                  . $tempresult . ":"
     261                                                  . $authAV . " ("
     262                                                  . $yearAV . ")}";
     263                                        }
     264                                        else {
     265                                                $result .=
     266                                                  $authAV . "(" . $yearAV . ") " . $ref->location();
     267
     268                                        }
    207269                                }
    208270                        }
     
    238300
    239301sub formatAuthors {
    240         my ($authref) = shift;
     302        my ($authref)       = shift;
    241303        my @authorsAndYears = @$authref;
    242         my @formatedAuth = ();
     304        my @formatedAuth    = ();
    243305
    244306        for ( my $i = 0 ; $i < scalar(@authorsAndYears) ; $i = $i + 2 ) {
     
    260322        }
    261323        else {
    262                 $deceaseID = "decease ID not found";
     324                $deceaseID = "\t";
    263325        }
    264326        return ($deceaseID);
     
    275337#}
    276338
    277 sub formatInDelMutation{
    278                 my $mutation = shift;
    279 #               print("'".$mutation."'");
    280                 my $formatMutation="";
    281                 if  ( $mutation =~ /^1-BP\s*?(DEL)\,\s*?(\d{1,5})([A-Z])/i ) {
     339sub formatInDelMutation {
     340        my ($mutation,$desc) = @_;
     341        #create return vraiable
     342        my $formatMutation = "";
     343        #check a postion is availble
     344        if (! ($mutation =~ /,/)) {
     345                #carp("no postion\n $mutation \n");
     346                 if($desc =~ /loss of nucleotide(s | )(\d{1,5})/i ){
     347                        $mutation= $mutation.",".$2;
     348                 }
     349        }
     350        #codon check
     351        if ( $mutation =~ /,[\w ]*?(\d+)/){
     352                my $codonnumber =$1;
     353#               carp("test 1 \n");
     354                if ( $desc =~ /codon $codonnumber/){
     355#                       carp("test 2 \n");
     356                        my $nuclitdenumber=($codonnumber*3)-2;
     357                        $mutation=~s/$codonnumber/$nuclitdenumber/;
     358       
     359                }
     360        }
     361        #check indels
     362        if ( $mutation =~ /(DEL|INS).*(DEL|INS)/){
     363#               carp("INDEL 2 \n");
     364                my $indelregex="(\\d{1,5})-BP\\s*?(DEL|INS)\\/(\\d{1,5})-BP\\s*?(DEL|INS)";
     365                if($mutation=~/$indelregex/){
     366#                               carp("INDEL 3 \n");
    282367                       
    283                         $formatMutation=$2.lc($1).$3;
    284                 }elsif($mutation =~ /^(\d{1,5})-BP\s*?(DEL|INS)\,[\sNT]*?(\d{1,5})([A-Z]*.?)/i){
    285                         #correction for calculating deletions
    286                         my $cor_del=1;
    287                         if(lc($2)eq"ins"){
    288                                 $cor_del=0;
     368                        my $del=0;
     369                        my $ins=0;
     370                        #derm length of del en ins and asign to right variable
     371                        if ($2 eq "DEL"){
     372                         $del=$1;
     373                                $ins=$3;
     374                        }else{
     375                                 $del=$3;
     376                                 $ins=$1;
    289377                        }
    290                         $formatMutation=$3."_".($3+$1-$cor_del).lc($2).$4;
    291                 }elsif($mutation =~ /^(\d{1,5})([A-Z]*?)\s*?(DEL)/i){
    292                         $formatMutation=$1.lc($3).$2;
    293                 }elsif($mutation =~/(INT(\d{0,3})-(\d{0,3}) (DEL))/i){
    294                
    295                         $formatMutation="IVS".$2."+?_IVS".$3."+?".lc($4);
    296                         $mutation =~ s/INT\d{0,3}-\d{0,3} DEL//;
    297                         if(length($mutation)>5){
    298                                 $formatMutation.=",".formatInDelMutation($mutation);
     378                        my $mutationclean=$mutation;
     379                        $mutationclean=~s/$indelregex/ /;
     380#                       carp("\n\n $mutationclean \n\n");
     381                        if ( my @results=$mutationclean =~ /([ACTGN]*)(\d{1,5})([ACTGN]*)/i ) {
     382#                                               carp("INDEL 4 \n");
     383                                $formatMutation=$results[1]."_".(($results[1])+($del-1))."del".$results[0]."ins".$results[2];
    299384                        }
    300385                }
    301                 else{
    302                         $formatMutation=$mutation;
    303                 }
    304                
    305                
    306                 return ($formatMutation);
     386        }
     387        #               print("'".$mutation."'");
     388       
     389        if ( $mutation =~ /^1-BP\s*?(DEL)\,\s*?(\d{1,5})([A-Z])/i ) {
     390
     391                $formatMutation = $2 . lc($1) . $3;
     392        }
     393        elsif ( $mutation =~
     394                /^(\d{1,5})-BP\s*?(DEL|INS)\,[\sNT]*?(\d{1,5})([A-Z]*.?)/i )
     395        {
     396
     397                #correction for calculating deletions
     398                my $cor_del = 1;
     399                if ( lc($2) eq "ins" ) {
     400                        $cor_del = 0;
     401                }
     402                $formatMutation = $3 . "_" . ( $3 + $1 - $cor_del ) . lc($2) . $4;
     403        }
     404        elsif ( $mutation =~ /^(\d{1,5})([A-Z]*?)\s*?(DEL)/i ) {
     405                $formatMutation = $1 . lc($3) . $2;
     406        }
     407        elsif ( $mutation =~ /(INT(\d{0,3})-(\d{0,3}) (DEL))/i ) {
     408
     409                $formatMutation = "IVS" . $2 . "+?_IVS" . $3 . "+?" . lc($4);
     410                $mutation =~ s/INT\d{0,3}-\d{0,3} DEL//;
     411                if ( length($mutation) > 5 ) {
     412                        $formatMutation .= "," . formatInDelMutation($mutation);
     413                }
     414        }
     415        elsif($formatMutation eq "") {
     416                $formatMutation = $mutation;
     417        }
     418
     419        return ($formatMutation);
    307420}
    308421
     
    311424        my $result      = "";
    312425        my @authAndYear = @$authref;
    313         my ( $author, $year, $pubmedid ) = "";
     426        my ( $author, $year, $pubmedidref ) = "";
    314427        for ( my $i = 0 ; $i < scalar(@authAndYear) ; $i = $i + 2 ) {
    315                 $author   = $authAndYear[$i];
    316                 $year     = $authAndYear[ $i + 1 ];
    317                 $pubmedid = $self->getPubmedID( $refsref, $author, $year, $numb );
    318                 $result .= "{PMID" . $pubmedid . ":" . $author . " (" . $year . ")}";
     428                $author = $authAndYear[$i];
     429                $year   = $authAndYear[ $i + 1 ];
     430                $result .= $self->getPubmedID( $refsref, $author, $year, $numb );
     431
     432        }
     433        if ( $result eq "" ) {
     434                $result = "\t";
    319435        }
    320436
     
    327443        my $result = "";
    328444        foreach my $av (@avs) {
    329 #print($av->number() . "\t");
    330 if ($av->title() ne "REMOVED FROM DATABASE"){
    331                 my $mutation        = getMutation( $av );
    332                
    333                 my $authorsAndYears = getAuthor( $av->description() );
    334                 $authorsAndYears = formatAuthors($authorsAndYears);
    335                 my $articles =
    336                   $self->createAuthorsOutput( $refsref, $authorsAndYears, $numb );
    337        
    338                 #lool up allelic variant in dbsnp and return accesionnumber 
    339                 my $dbsnp = $self->{Omim2DBsnp}->getdbsnp( $numb, $av->number() );
    340                                
    341                 #print(Dumper($authorsAndYears));
    342                
    343                 my $desc = $av->description();
    344                
    345                 $desc =~ tr/\n/ /;
    346                 if ( length($desc) < 60 ) {
    347 
    348                         my $pubmedid = "test";
    349 
    350                         # $self->getPubmedID( $refsref, $authAV, $yearAV, $numb );
    351                         $result .=
    352                             $numb . "\t"
    353                           . $av->number() . "\t"
    354                           . $av->title() . "\t"
    355                           . $mutation . "\t"
    356                           . $desc
    357                           . $articles . "\n";
    358                 }
    359                 else {
     445
     446                #print($av->number() . "\t");
     447                if ( $av->title() ne "REMOVED FROM DATABASE" ) {
     448                        my $mutation = getMutation($av);
     449
     450                        my $authorsAndYears = getAuthor( $av->description() );
     451                        $authorsAndYears = formatAuthors($authorsAndYears);
     452                        my $articles =
     453                          $self->createAuthorsOutput( $refsref, $authorsAndYears, $numb );
     454
     455                        #lool up allelic variant in dbsnp and return accesionnumber
     456                        my $dbsnp = $self->{Omim2DBsnp}->getdbsnp( $numb, $av->number() );
     457
     458                        #print(Dumper($authorsAndYears));
     459
     460                        my $desc = $av->description();
     461
     462                        $desc =~ tr/\n/ /;
     463
     464                        #                       if ( length($desc) < 60 ) {
     465                        #
     466                        #                               my $pubmedid = "test";
     467                        #
     468                        #                               # $self->getPubmedID( $refsref, $authAV, $yearAV, $numb );
     469                        #                               $result .=
     470                        #                                   $numb . "\t"
     471                        #                                 . $av->number() . "\t"
     472                        #                                 . $av->title() . "\t"
     473                        #                                 . $mutation . "\t"
     474                        #                                 . $desc
     475                        #                                 . $articles . "\n";
     476                        #                       }
     477                        #                       else {
    360478
    361479                        my $deceaseID = getDeceaseID($desc);
     
    370488                          . $deceaseID . "\t"
    371489                          . $mutation . "\t"
    372                           . $dbsnp. "\t"
     490                          . $dbsnp . "\t"
    373491                          . $articles . "\t"
    374492
    375 
    376493                          . $nucleotidemutation . "\n";
    377                 }
    378 }
     494
     495                        #                       }
     496                }
    379497        }
    380498
Note: See TracChangeset for help on using the changeset viewer.