IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bioinformatique Perl Discussion :

Amelioration perforformance pour script de filtration


Sujet :

Bioinformatique Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut Amelioration perforformance pour script de filtration
    Je me permet un petit post dans cette section car j'ai un script de bio-info que je souhaiterais optimiser mais je suis a court de ressource.

    J'ai un programme capable de lire des fichiers STOCKHOLM et de les convertir en differents autres formats (par exemple fasta... )

    Je souhaite implementer une sous routine qui permette au programme de filtrer les donnees STOKHOLM grace aux valeurs PP et PP_cons presentent dans le fichier STOCKHOLM.

    De la facon suivante :
    - Si une position n'est pas conserve (PP_cons) je supprime la colonne dans tous les alignements.

    - Si une position n'est pas conserve dans une sequence je remplace l'amino acide present a cette position par "-" dans la dite sequence.

    Pour savoir quelles collones supprimer je cree un petit tableau @$columnToRemove contenant les positions ou PP_cons est inferieur au seuil souhaite.

    Je travaille avec des PirObjects AlignedSeq :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    0  PirObject::AlignedSeq=HASH(0x17b9978)
       'PP' => '.................................................8764............................................................................................689**********************************************************************************************************************************************************************************************************************************99998......677889***********................................................*..*...*****......*******************..*.....****************************.***********************************..****************.****......**.****************...................................**********....*..**.*......................................*.**..............********.*******************........*****.......**...***************99999...887655.....22222.......................................................................................2.68999*************..***98...66.377.8.8999998666555..55...............44444.........222........1..2333333.........................................................................33333333332..2221111......................................1................................111111111111.11..1111.111.................1111........................................1111.................................11.......................................1....111...1110.11111..1...11..1...111111..1..................................1.2..23444444.....444.......44.4433......222...............................................................2333.......3....3332...2211......11111...................................................................................................................................11.1111111...........00.....1122...2.2.222211.......................112222111...11.111.1..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................111..1111....111111.111.111111..11........111111.1111...1234..67899*******.*******.*.....*********.........................*..****.........***********************************...***********.**************************755.....566666666515678................................................................99**************************************************999****************.****....***.................................................................................................*****************..*************************************************99988554444.................................43333330...............................................3445555666666777777777777777777778888888999999***********............................................................................................................................................................................................................................................................'
       'seqId' => 'Zygnema_circumcarinatum@AAX45864'
       'sequence' => '-------------------------------------------------MAEL--------------------------------------------------------------------------------------------KNRIFYNQVMDKSAIKQLIIRLVACLGRVCTAHILDQLKTLGFQYSTQTGISLGIDDLLASPLKNWILQDAENEANVSQEYCRHGYIHAVERLRQIVETWHTTSEFLKREMTVSFNILDGFNPVHMMSFSGARGNVSQVHQLVGMRGLISDPQGNIIDLPIQSNLREGLSLTEYIISCYGARKGVVDTAIRTADAGYLTRRLVEVAQHVVIRNVDCNTYEGIILRSIRTRQGNA------YLTQENRIIGRVLARPL------------------------------------------------Y--F---GKRCI------AVRNQDIGPDLAAKLSIIS--P-----QAILVRSPITCKTTDWVCQLCYGWGVNQ-GKMVSLGEAIGVVAGQSIGEPGTQLTLRTFHTGGV--FTGDIANHLRAPFNGI-AHFE------TH-NCKPTRNRHGRLVWKC-----------------------------------LQDLTITVIG----Q--GK-K--------------------------------------H-SL--------------NVPSQSLL-LINNNQYVESKQVIAEVRA--------SIAPI-------KE---KVQRNIYSYLQGEVVHTRSA---LRLSNA-----FSGTI---------------------------------------------------------------------------------------L-LIHHNPNTGHLWIWSGKL--YQLSG---QQ-ASS-I-YTSEDFIQTNITV--AN---------------KRYLK---------FDT--------H--KISNKKV-------------------------------------------------------------------------LKSVLIGKFTR--FKQVKSI--------------------------------------Q--------------------------------TGTVRSVLIQKP-DT--LRMV-VLS-----------------SVDQ----------------------------------------LEIT---------------------------------MH---------------------------------------K----TPY---IMEP-LLTQK--I---SN--N---ILNLTS--Y----------------------------------P-K--SSTLISKQ-----KNT-------VS-SFAS------IHI---------------------------------------------------------------KRPT-------I----GFQF---QLPI------VPKIR-----------------------------------------------------------------------------------------------------------------------------------CY-SLGLLGK-----------LQ-----RPLQ---Y-N-LVLSSP-----------------------TQPIFIDRY---YN-TFT-N----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------WCY--LNEH----GNSYNL-YGL-QMIVLD--KK--------LYNNNS-ISGL---FNTY--RNIPKIGQLICK-GTFVQQT-T-----QLSESGKIV-------------------------S--IFKH---------KIVLRLSQPYLLAPGTFIHPDCYDVINRGDIVITM---MYEQLRTTDII-QGLPKAEQLLEARSFNEVVLKLENDFVML-----TERIARQLRSLSRSY----------------------------------------------------------------MLSTKESTKHSQIDLVNRIQTVYLSQGVRIVDKHIEIIVRQMSSKVMLVENGDPHTFLPRELVELTRAQKI-NYVI----QNP-------------------------------------------------------------------------------------------------VAYKPVLLGITKASLNT--NSFISEASFQQTARVLSKSAIKNRVDWIRGLQENVLFGRMIPAGTGCREISSQLQYGNIF---------------------------------QKKWAQHT-----------------------------------------------KWKLFVNSFGLNLSCLQIYLHFQAYCLESTNEQPQSNLHVHNSRIFPFTTICSILKS------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
    1  PirObject::AlignedSeq=HASH(0x17b99f0)
       'PP' => '....................................................6...............................................................................................7**************************************************************************************************************************************************************************************************************************************.......****************................................................*..*...*****......******************...9.....****************************.***********************************..****************.****......*******************...................................*********9....8..66.5......................................5.545............5********.******************9.......788889.......99...********************...999887.........................................................................................3.....678.9*****************..*****...**..**.*.*************..***......***..*******9........66552..........................................................................................23344444433...........................22..22......034.5.6.8................................9999********.**..****.***.................******..*********...***.....**********.**.*****86....................4567.99***.***...*******...*****......***...******.***....***...**********..*...**..**********..****...****************.**.....**.**.*..********.....***.......**.****......***.*.......**........****..........................*...*99..98.7*****.......*....****...****.**.**********...........................................................................................................*.**.****...*****.*..**.*******........*****.....****...*.*.******888......5534..33778888888887776......8**.*****...*....*****.........**99999...999888654......6.7888999999...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................**************.********.****..****99998864.4433...........................................................................................................................................................................................................................................................................................................................................35..7889999*****.*******.*.....*********.........................*..*99766.....668**********************************...***********.************************996443..322222222222....246699**********************.........**********************************************************************************.****************.****98888**.................................................................................................*****************..**************************************************9999777665554...........................43333222220...............................................222223334555666777777778888889999999999999**************.............................................................................................................................................................................................................................................................'
       'seqId' => 'Cyanothece_sp._atcc51142@ACB52835'
       'sequence' => '----------------------------------------------------M-----------------------------------------------------------------------------------------------TFYNQIVDKGRLKKLISWAYRNYGAARSSQVADNLKDLGFRYATKAGVSISIDDLTVPPTKRGMLDSAEKEINITEARYARGEITEVERFQKVIDTWNSTSEELKDEVVRNFRQTDPLNSVYMMAFSGARGNMSQVRQLVGMRGLMADPQGQIIDQPIKTNFREGLTVTEYVISSYGARKGLVDTALRTADSGYLTRRLVDVSQDVIVREIDCGTRRGLKVTAMKDGDRVK-------IALGDRLLGRVLAEDV------------------------------------------------M--V---GDEVI------ASRNQSIDAALAAKIGKS---V-----ESVMVRSPLTCEAARSVCRCCYGWSLAT-GRPVDLGEAVGIIAAQSIGEPGTQLTMRTFHTGGV--FTGEVAEQIKAPDHGT-VKWG------KGLSTRKVRTRHGEDAFQV-----------------------------------ELAGDLIWTP----T--GS-G--------------------------------------K-KMT------------YSVTPGSVL-FAADGDTVEKDKMLAEVTA-------AKSTRS-------TE---RATKDVSTDLAGEVFFANLI---AEEKTD-----------------------------------------------------------------------------------------R-----QGN-TTHIAQRGGLVWVLSGEV--YNLPP---GA--EP-V-VSNGDEVAEGTVL--AET------KLI--SVNGGVVR--------YQPQS------------------------------------------------------------------------------------------REIDIITASVL---------------------------LD--QA------EVR-K-E-S--------------------------------TGGHEQYVIYTA-DG--QRFL-LKA-----------------TPETKV--QNHAIIAEL---IDD-----RYQTTTGGML-RY-GGIEVAK--------------------GSRK-TGYEV-VQG---GTLLWVP---EETHE------VNK---DISLLV-VED----GQY---VEAGTEVVKD--I---FC--QCSGAIEVVQ--KNDI---LREIIIKPGEFHLDVD-PD-----EV-SY-K--NEDLIPPG-----TEV-------LP-GVVT------TDL-R-------QV--------EWIE--------------------------S---TEG--LG-LLLRPV-------E----EYPV---SNEP-AA-PSQGSINEEE-----------------------------------------------------------------------------------------------------------V-GR-HIEL---RSVQR-L--FY-KDGERVK--------SVDGI-----HLLS---T-Q-LVLEIETGS------EQAA--ANLAADIELKNDEEEDC------QRL-QLVIL---E----SLILR---------RDLDTDP---HGGTITTSV------L-VTDGDQIAPG-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------AVVAKTEIQCREEG-EVRGIRRG-LEAV--RRVLIVRDEDLE-IITL-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------KE--KPTVAKDDLIVA-GTEFAPG-V-----VAAESGLVV-------------------------A--VNQGEE-----GYEIKLRLARPYRVSPGAILHIADGDLVQRGDNLVLL---VYERAKTGDII-QGLPRIEELLEARKPKEACVLSRKPGVCQV--EYLEDESVDVKV----IEDDGTVSEYPILLNQNVIVSDNQRVDV---------GEHLTDGPANPHELLEVFFDYYVDKKGVYEAALIGLQAAQKFLVDQVQSVYQSQGIDISDKHIEVIVRQMTAKVRVDDGGDT-TMLPGELVELRQIEQV-NEAMAITGGAP-------------------------------------------------------------------------------------------------ARYTPVLLGITKASLNT--DSFISAASFQETTRVLTEAAIEGKSDWLRGLKENVIIGRLIPAGTGFNAHEEMVMGTLDNGED---------------------------SLNNRYGQGER-----------------------------------------------DNNNSDKKPPNRLIGATLDEVDENMILDDNIARAYTEADPPWSVESKQEKDDDDDK-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
    2  PirObject::AlignedSeq=HASH(0x17b9af8)
       'PP' => '..............................................8876655..............................................................556667778888888888888888777.....9***************************************************************************************************************************************************************************************************************************************.......*************************************************************9988..8...*****......******************...9.....****************************.***********************************..****************.****......*******************...................................**********....*..99.98999999999.................988888877766.66..............********.****************9855.....5588888.......88...9*******************...99988765778888887766444899999999.............................................999999976655555555......689.999999999999999999..99999...88..5548.8899999999999..999......999..99888888........788888888.888..88877779999999999999999999..................................9999999986666666666655555555555..555555555.....4...44....443..3...............0333..........................345778888888888.88..8888.888.................777766..55554433......3.....7889999999.99.999999988887...6555....78999999.99999.99*...*******...*****......***...******.***....***...**********..*...**..**********..966........7889********.**.....**.**.*..********.....***.......**.****......***.*.......**........****..........................*...998..88.....88.......8....99.6...7778.89.999999****...........................................................................................................*.**.****...***99.98778.999999877...77778888.....9999...*.*.*********......**......**********86.67...78.***.*****...*....*99887777777766677777...889999999999.999.8888777766**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************999966777777777777.77655555.5555..677778888888.8887...............44444433.................3443304444444555555556666666666677777777777777778888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999*****************99****..**....**...*..........****.......******..****....*99997.5...889999..**........*****9.9999...5777..99**********.***9876.55566699*******.........................*..****.........***********************************...***********.**************************8......67*********.****................................................................******************************************************.****************.***99..88**.................................................................................................*****************..**********************************************75....................................................................................................68...................................................................................................................................................................................................................................................................................................................'
       'seqId' => 'Stigeoclonium_helveticum@YP_764414'
       'sequence' => '----------------------------------------------MNIFSDF--------------------------------------------------------------SLYSLSPKKKTSLTDNKIVSFATKDFP-----QVFWNLSFNKGSLKNFVFWCFVNYGQRETIKILEKLQIIGFGYATKAGISLSIDDLKIPPTKAILLADADKSIEAGFLSYKKSQLTGLERFQRIIETWHKTSESLKDEMITNFRQTDSLNPVYMMAFSGARGNVSQVRQLVAMRGLMSDPQGKILDFPIRSNFREGLTLTEYVISCYGARKGVVDTALRTANAGYLTRRLVDVAQHVIVLNFDCGTKKGFYLTEMKKFNKTL-------YPLRQRLLGRVLAANLYNVNPFHLKKRIEIGEKEKNLSSLPSSKGKMEFFPSFPQASLAGKASCF--P---EPQIV------AFRNQEISEPLAEKISKI---T-----NKVFIRSPLTCDTPRLVCQLCYGWSLSE-GYLVSIGEAVGIIAAQSIGEPGTQLTMRTFHTGGV--FAGEMFDQLMAPYDGI-VQYS------SSIPGTLVRTTQGKIAFLT-----------------------------------KVEGKLSVFE----K--NN-STFLSNSNNGD-----------------NHSLISHTISHK-SF--------------KLPAYTLL-FIRNNETISKDQLIAELAFL-----SSKGKKK-------GE---IAEFIVKSEIEGQLYSGSVN---ILEKYTDYNDIMTKSIDWGSVWILSGKICQLP---------------------------------------------VNSSFFALPGDLVDENAI------LSQ-IQWVVPMKSLLDTNSLIK--PNLKK---EI--YFDF-SLNQTKWFQKRNL--ENL------NTL--FNLKFGIE--------KKNRTKKRV-LSQ--EKKSDFLNPSFSHSSRNYLYFSLPSK----------------------------------KTFSYYPFAYFSKIKEKNGGRETKSSFAMSG--WGKKSLSFF-----P---SL----ASD--V---------------PKLL--------------------------SDFYPTSKKRNFKSF-EK--KELK-LSS-----------------FSQTIF--FNQDKSLL------L-----KMKIKIQTIS-DF-TKVSSKMITSRE---LKKN----GMEKGKNG-EKENS-SLQ---RTFFSQG---AKAPA------FPE---LFSFFS-SRL----FPI---LPFKSSLVSS--T---FS--HNSQLCTIRR--QNK--------LVLSGNSNQFEN-FA-----YL-KD-K--ITINLPLI-----FLC-------ID-NIYY------KKI-G-------YF--------FSLF--------------------------P---PES--KI-----PR-------E----KF-L---PEEE-GF-SPPSFGRTFK-----------------------------------------------------------------------------------------------------------N-KN-LAKL---KDVFF-VPKLL-EQRNIISTK---KKNSFKKN-----NQIS---N-Q-LLHWFPKSY------LT------MKGGICVYRLTH-DF---FC-QYI-NFHSS---S----FLFEKKRGTLICNVDGEMNKP---VSSNILGRICWV-NQD-YKKTKLYTLKFFSYSKFIQQLTDRTKRLQRQIKREKKIGQADFFQTVLSMSQAKEKSSLQRTFFSQGAKSRKKVPPKTLLSGEMPIFSLSPSLCGLKPAKRSEKEKIWVKGEKAELFSLSNAFHQPQHSKKHKYSSFSLNFYKNLTSYCLKNKDKSVANCFSEKKKRQFLFFSEPKLSLFPDFLFSKSEKNIFYNANKKKYSFFYLKKTNSSKKSLTNNSIMNGFIYKPKDVVSAISLHKKFFLPGQKIIDDLSFDNFLIYVECIPEDNLSSLSETLYKSRFDKKICFNLKKLITNKMPRFIKIPTLLSTIPFAFLKSEFKEQNEKIAQRKADRQKNNKKSEAFFFKSNTLVSDFD--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SPFLSHLVVLITKVIEYPLYKPNHYKKALYNRQKTSEQSFFHYSCKVKSKMLNKIFKNNYHSNVLNKQTSSLRLLDKFPNTDLVLALKCKGIQKDLMENFLKNPLNLNLYVKLGKQKSFGKEKDKTFSVSQPFFKSSAFKKEKKSNSFSQAKAFDFNLTSKKSRKKANKLVENLANGKKSRAFPASKACGKLGKNYIFPLEERKNGKKERAKASSFPGLLSFSHLAFPIFFRKSFSKFFCMKFFSKSSIQLLELVLVGVQKNSVNNKIIGITVFNFFQKNKLKEEEKKRQEEKEIFRSLSLSPLFLSHLTRKKNSDFFSVSKSEALEKKKLQLLFFSHAAFPLKEISKNYSSKASFLSFFH-FLDKKIKK-QTRR--QANFVVSAFEKS-DFSF---------------DPNINRKK-----------------KYFSNKAFNYENIKIMNNNISQSILQPNFYFNYYQKYPFGYYLINNINVFAPSSFSFSSLFSRNTANFKNYFLFYQLLSMFNRPNFQLHKSMEENLLQVYEQSTSYFSLISCFFQQPCFDAFFTQQVSFGFNEVKNVNHYSKNLTFSKKIGKRREFYLSPFLRSKIYFKKNSFSEQGEIALTQYLSPFMGEILNH--EN----YY---W----------SQNT-------QKNRYL--LLTK----KDQISF-L---STNYNT--QK--------ESINNS-SFFI---LKNK--KNTPNLGEFLTK-GDCCFIS-KSQNSIISSESGLIV-------------------------H--SNKS---------KITLRKAQSFFLSPNCIFHYSHGDLVEKNKSILSL---PYEQLKTGDIV-QGIPKVEQLLEARSTFKGKEEEDNLHK------LLKYAFELYKT-KFSL----------------------------------------------------------------KLSVRKSFSFIQLILVNSVQRIYRSQGVSISDKHLEVIVKQMTSKVQITSRGDS-SFFRGEHVDLYIVETW-NALHP--QLKK-------------------------------------------------------------------------------------------------ICYKPILLGISRSSLEV--NSFLSAASFQHTKKVLSRSAFKTNIDFLNGLKENVIIGNLISAGTGNL----------------------------------------------------------------------------------------------------NN-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
    ensuite je passe a travers le PirObject MultAlign (qui contient les objet AlignedSeq) et traite chaque sequence.
    Je commence par m'occuper des probabilites par sequence definies par "PP" puis je continue dans la meme boucle par enlever les collones definies par "PP_cons".

    J'ai essaye de faire les choses de differentes facons :
    en utilisant un splice pour supprimer les collones, avec un remplacement de caractere puis une substitution...

    Dans l'absolue mon algo fonctionne je souhaite gagner du temps a l'execution car c'est actuellement trop lent.
    Pour un fichier contenant 104 sequences de 4938aa le programme met un peu moins de 2min a rouler.

    Sachant que dans la partie la du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            foreach my $alignedSeq (@$alignedSeqs) {
                my $PP  = $alignedSeq->get_PP();
                my $Seq = $alignedSeq->get_sequence();
                #Treat LOCALPERCENT
                my @aPP  = split(//,$PP);
                my @aSeq = split(//,$Seq);
                for (my $i = @aSeq - 1; $i >= 0 ; $i--) {
                    my $PP_val = $aPP[$i];
                    $PP_val    =  0  if $PP_val eq ".";
                    $PP_val    = 10  if $PP_val eq "*";
                    $aSeq[$i]  = "-" if $PP_val < $LocalPercent;
                    $aSeq[$i]  = "=" if grep($_ == $i, @$columnToRemove)
                }

    Il met 1 seconde par sequence... je ne sais pas comment reduire le temps
    d'execution.

    Je met ci-dessous le code de ma sous routine de filtration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    sub FilteringStockholm {
        my $ma = shift;
     
        my $PP_cons     = $ma->get_PP_cons();
        die "Can't use option -F no line 'PP_cons' found in $INFILE\n" 
            if $PP_cons eq "" && $FILTERING == 1;
        my $alignedSeqs = $ma->get_alignedSeqs();
     
        #Make array with pos to remove use GLOBALPERCENT
        print "\n Make column to Remove :".strftime("\%H:\%M:\%S", gmtime(time));
        my $GlobalPercent = $GLOBALPERCENT;
           $GlobalPercent = 10 if $GLOBALPERCENT eq "*";
           $GlobalPercent = 0  if $GLOBALPERCENT eq ".";
        my @aPP_cons = split(//,$PP_cons);
        my $columnToRemove = ();
     
        for ( my $i = 0 ; $i < @aPP_cons ; $i++) {
            my $PP_val = $aPP_cons[$i];
            $PP_val    =  0 if $PP_val eq ".";
            $PP_val    = 10 if $PP_val eq "*";
            push(@$columnToRemove,$i) if $PP_val < $GlobalPercent;
        }
     
        #Treat each Seq with LOCALPERCENT and GLOBALPERCENT
        my $LocalPercent = $LOCALPERCENT;
           $LocalPercent = 10 if $LOCALPERCENT eq "*";
           $LocalPercent = 0  if $LOCALPERCENT eq ".";
        foreach my $alignedSeq (@$alignedSeqs) {
            my $PP  = $alignedSeq->get_PP();
            my $Seq = $alignedSeq->get_sequence();
            #Treat LOCALPERCENT
            my @aPP  = split(//,$PP);
            my @aSeq = split(//,$Seq);
            for (my $i = @aSeq - 1; $i >= 0 ; $i--) {
                my $PP_val = $aPP[$i];
                $PP_val    =  0  if $PP_val eq ".";
                $PP_val    = 10  if $PP_val eq "*";
                $aSeq[$i]  = "-" if $PP_val < $LocalPercent;
                $aSeq[$i]  = "=" if grep($_ == $i, @$columnToRemove)
            }
     
            $Seq = join('',@aSeq);
            $Seq =~ s/=//g;
            $alignedSeq->set_sequence($Seq);
        }
    }
    Si vous avez besoin d'autre information n'hesite pas a me demander.

    Merci de m'avoir lu jusqu'ici

    Loula

  2. #2
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    Voila mon probleme est resolu.

    Au final la partie qui etait inneficace etait celle contenant le grep.

    Voici ma nouvelle boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        #Treat each Seq with LOCALPERCENT and GLOBALPERCENT
        my $LocalPercent = $LOCALPERCENT;
           $LocalPercent = 10 if $LOCALPERCENT eq "*";
           $LocalPercent = 0  if $LOCALPERCENT eq ".";
        my %cols_to_remove = map { $_ => 1 } @$columnToRemove;
        foreach my $alignedSeq (@$alignedSeqs) {
            my $PP  = $alignedSeq->get_PP();
            my $Seq = $alignedSeq->get_sequence();
            #Treat LOCALPERCENT
            for (my $i = length($Seq) - 1; $i >= 0 ; $i--) {
                my $PP_val = substr($PP,$i,1);
                $PP_val    =  0  if $PP_val eq ".";
                $PP_val    = 10  if $PP_val eq "*";
                substr($Seq,$i,1) = "-" if $PP_val < $LocalPercent;
                substr($Seq,$i,1) = ""  if $cols_to_remove{$i};
            }
            $alignedSeq->set_sequence($Seq);
        }
    Peut etre que ca servira a quelqu'un un jour, je l'espere en tous cas moi je garde ca en memoire .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Exec pour script shell
    Par Tempotpo dans le forum Langage
    Réponses: 9
    Dernier message: 31/08/2006, 14h08
  2. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 18h08
  3. Réponses: 8
    Dernier message: 19/10/2005, 15h06
  4. Composant pour Script Interbase
    Par Andry dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/10/2004, 09h59
  5. aides pour script en shell
    Par komatek dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 12/08/2003, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo