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 :

BioPerl rendre insensible à la casse et primary_id


Sujet :

Bioinformatique Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 39
    Points
    39
    Par défaut BioPerl rendre insensible à la casse et primary_id
    Bonjour !

    En fait j'ai un souci pour rendre une séquence entrée par l'utilisateur insensible à la casse lors d'une recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ( my $seq = $in->next_seq()){
        if($seq->desc=~ /$tag/){
            $garde->write_seq($seq);
        }
        else{
            $keep->write_seq($seq);
        }
    j'ai essayé de mettre /$tag/i, m/$tag/i, /(i?)$tag/... rien n'y fait ..
    Est-ce à cause du module BioPerl?

    J'ai un autre souci concernant l'accession du primary_id, je souhaite le modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ( my $seq = $in1->next_seq()) {
     
    				my $primary_id = $seq->primary_id();
    				my $new_primary_id = "$comment".$primary_id;		
    				$seq->primary_id($new_primary_id);
     
    				$out1->write_seq($seq);		}
    Je voudrais rajouter le mot contenu dans $comment à l'identification d'entrée pour obtenir

    >gi|22212273|gb|AAM92877.1| type II hair-specific keratin [Homo sapiens]

    =>

    >mot_gi|22212273|gb|AAM92877.1| type II hair-specific keratin [Homo sapiens]

    Merci d'avance à qui pourra m'aider !

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    J'ai testé sur un objet de type
    $VAR1 = bless( {
    'primary_id' => 'gi|22212273|gb|AAM92877.1|',
    'primary_seq' => bless( {
    'display_id' => 'gi|22212273|gb|AAM92877.1|',
    'primary_id' => 'gi|22212273|gb|AAM92877.1|',
    'desc' => 'type II hair-specific keratin [Homo sapiens]',
    'seq' => 'atgtcgtgtacgtagtaaccgtagtac',
    'alphabet' => 'dna'
    }, 'Bio:rimarySeq' )
    }, 'Bio::Seq' );
    gi|22212273|gb|AAM92877.1|
    Pour rendre la recherche insensible à la casse, le fonctionne très bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if($seq->desc=~ /$tag/i){
            ...
        }
    Pour ce qui est de modifier l'identifiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $out = FileHandle->new(">chemin.txt");
    my $in  = Bio::SeqIO->new(-file => 'chemin fichier', '-format' => 'Fasta');
    my $comment = 'commentaire';
    while ( my $seq = $in->next_seq()) {
          print  $out ">".$comment.$seq->primary_id().$seq->desc()."\n".$seq->seq()."\n";
    }
    Remarque

    Les doubles quotes sont inutiles dans ton expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $new_primary_id = "$comment".$primary_id;
    -- Jasmine --

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 39
    Points
    39
    Par défaut
    Merci Jasmine !!

    En fait pour le i, c'est juste que j'avais regardé dans des fichiers où certaines séquences n'étaient pas bien délimitées (primary_id collé à la desc) du coup il ne le voyait pas... Je pensais que ça venait du i... Merci pour m'avoir orienté dans la bonne direction !

    Pour la modif de l'identifiant, ça marche super bien mais une fois dans mon script complet, il y un problème de "IO::Handle bad open mode"... Je vais continuer à chercher d'où ça vient...

    Merci pour tes réponses

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Tu dois utiliser le module FileHandle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use FileHandle;
    ...
    my $out = FileHandle->new(">chemin.txt");
    ou sinon directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $out = "test.txt";
    open(OUT, ">".$out);	# Ouvre en écriture
    print OUT...;
    close(OUT);
    -- Jasmine --

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 39
    Points
    39
    Par défaut
    Oui oui j'ai ajouté le module ! Du coup le petit script marche bien seul, mais pas quand je l'intègre à mon application en Tk....
    Ma version d'avant avec juste Bio::SeqIO fonctionne bien mais ne donne pas ce que j'attends comme nouvel id ...
    Je suis vraiment perdue... Je vois pas d'où ça peut venir, le problème se situe bien à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $out = FileHandle->new(">chemin.txt");
    même avec le module...

    Ou alors ça vient du fait que je laisse l'utilisateur choisir le nom du fichier via Tk, et que je stocke ça dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $out = FileHandle->new(-file => ">$NomFinal");
    je sais pas....

    EDIT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    my $out1 = $NomFinal;
    		my $in1 = Bio::SeqIO->new(-file => "$Source1", -format => "Fasta");
     
     
    		while ( my $seq = $in1->next_seq()) {
     
    			open (OUT, ">".$out1)
    			print  OUT ">".$seq->primary_id().$seq->desc()."\n".$seq->seq()."\n\n";
     
    			print  OUT ">".$comment.$seq->primary_id().$seq->desc()."\n".$seq->seq()."\n\n";
     
    			close (OUT);
     
    			}
    Là il est pas d'accord à cause du > après print OUT, j'ai essayé '>' idem ...

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    C'est incorrect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $out = FileHandle->new(-file => ">$NomFinal");
    Ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $out = FileHandle->new(">$NomFinal");
    Tu devrais vérifier que l'extension du fichier est bien introduite sinon cela ne fonctionnera pas.

    Ou alors, tu demandes à l'utilisateur un nom sans extension et tu l'ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $out = FileHandle->new(">$NomFinal".'.txt');
    -- Jasmine --

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 39
    Points
    39
    Par défaut
    Ahhhhhhhhhh !! Merci Jasmine !! J'avais vraiment pas fait attention à ça !!
    (je mélange tout avec le new, filehandle...) L'extension est ok.

    Effectivement du coup ça marche super bien !!

    Tu me sauves une fois de plus !!
    Merci infiniment !!

    Résolu en moins d'une journée !

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

Discussions similaires

  1. Rendre une colonne insensible à la casse
    Par SBOU_42 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 12/06/2013, 16h45
  2. Rendre Wamp insensible à la casse
    Par Beho Double dans le forum Apache
    Réponses: 2
    Dernier message: 15/05/2009, 18h50
  3. Rendre requête insensible à la casse
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/02/2007, 18h53
  4. Recherche insensible à la casse ET insensible aux accents.
    Par Bernard Grosdoy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/07/2005, 03h32
  5. Tri insensible à la casse [IB7]
    Par patquoi dans le forum Débuter
    Réponses: 4
    Dernier message: 02/06/2003, 08h56

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