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 :

identifier la complémentarité entre des séquences


Sujet :

Bioinformatique Perl

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut identifier la complémentarité entre des séquences
    Bonjour à tous,
    J'ai des millions de séquences à analyser (taille variant entre 25 et 30 nt).
    Je souhaite en fait identifier, pour chaque séquence, si il y a des sequences complémentaires à ma séquence, sachant que la complémentarité peut être sur toute la longueur de ma séquence, mais aussi bien sur les 10 premiers nucléotides, comme sur les 3 premiers, les 5 premier etc ...

    Par exemple :
    >seqA
    UACGCAGAGGCCUAAGUAAAUAGUC
    >seqB
    GAAUUUCAUUUACCGGAUGCGUCUCC

    Voici un exemple de complémentarité que je peux avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ----------------UACGCAGAGGCCUAAGUAAAUAGUC
    GAAUUUCAUUUACCGGAUGCGUCUCC
    Je ne vois pas du tout comment m'y prendre, quelqu'un aurait une idée à me proposer ?

    Merci pour votre aide!

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    hum cela revient à aligner les séquences et les séquences complémentaires non ?
    en recherchant des alignements locaux en priorité
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    oui c'est ca, j'ai recherché un module bioperl, mais je n'ai pas trouvé ...
    Je pense peut etre utiliser la fonction index(), en cherchant toutes les sous chaines dans seq2 qui se trouvent dans seq1 ...

  4. #4
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    Transformer une séquence en sa séquence complémentaire est simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub reverse_complement($){
    	my $string = shift;
    	my $res = $string;
    	$res =~ tr/TAGCtagc/ATCGatcg/;
    	$res = scalar reverse $res;
    	return $res;
    }
    à adapter pour l'arn.

    Ensuite il suffit de savoir quel logiciel d'alignement est suffisamment sensible pour obtenir de bons résultats... je n'ai pas testé plus en détail, mais en terme de sensibilité BLAST est pas mal il me semble, après il faut jouer avec les paramètres. Le prix à payer sera certainement en temps de calcul.
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    J'ai fait quelque chose comme ca :
    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
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    sub complement {
        $_[0] =~ y/CGATcgat/GCTAgcta/;
        return $_[0];
    }
     
    sub match {
    	my ($s1, $s2) = @_; # TACGCAGAGGCCTAAGTAAATAGTC, GAATTTCATTTACCGGATGCGTCTCC
    	#$s2 = reverse_complement $s2 ;
    	complement $s2;
    	print "$s1\n";
    	my $s2l = length $s2;
    	for (my $length = $s2l; $length; $length--) { # start from the longest possible substring
    		for my $start (0 .. $s2l - $length) {     # starting position of the matching substring
    			my $substr = substr $s2, $start, $length;
    			#print "$substr\n";
    			my $pos = index $s1, $substr; # searches for one string within another
    			if ($pos + 1) {
    				my $length_sub = length $substr;
    				print "$pos\t$length_sub\n";
    			}
    		}
    	}
    }
     
     
    print match('TACGCAGAGGCCTAAGTAAATAGTC',
    'GAATTTCATTTACCGGATGCGTCTCC')
        ,"\n";
    J'ai oublié de préciser que ce que je souhaite obtenir c'est la distance entre le début de seq1 et le premier nucléotide complémentaire à la seq1 de la seq2;
    Mais je voudrais m'assurer que la complémentarité se produit bien entre la fin de la seq2 et le début de la seq1 pour toute séquence seq1 et seq2, comment puis je m'y prendre ?

    Par exemple :
    >seq1
    UACGCAGAGGCCUAAGUAAAUAGUC
    >seq2
    GAAUUUCAUUUACCGGAUGCGUCUCC

    Voici un exemple de complémentarité que je veux avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ----------------UACGCAGAGGCCUAAGUAAAUAGUC
    GAAUUUCAUUUACCGGAUGCGUCUCC
    Dans cet exemple, j'obtiens distance = 10

    Et un exemple de complémentarité que je ne veux pas avoir :

    >seq3
    ATGCAGACAGACAGTAGACAGTAGAACCAGCAGAC
    >seq4
    ATCTTGGTCGTCTGGCGATGACAG



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ATGCAGACAGACAGTAGACAGTAGAACCAGCAGAC
    ---------------------ATCTTGGTCGTCT

  6. #6
    Membre du Club
    Homme Profil pro
    BioInformaticien
    Inscrit en
    Décembre 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BioInformaticien
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 49
    Points : 63
    Points
    63
    Par défaut
    sur des millions de lignes, ton script risque d'être assez long... Tu as déjà deux boucles imbriquées dans ta sub, qui risque elle meme d'etre dans 1 voir 2 boucles pour croiser toutes tes séquences. Des logiciels comme BLAST utilisent des algorithmes très efficaces afin de trouver les alignements de séquence. Je te conseille de les utiliser, et éventuellement de trier les séquences qui t'interessent ou pas.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    Ok comment faire un blast de mon fichier séquence contre mon autre fichier séquence avec bioperl ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2010, 11h01
  2. Comment dessiner lignes entre des fenêtres ?
    Par Hauwke dans le forum Langage
    Réponses: 5
    Dernier message: 17/11/2005, 12h33
  3. Liens entre des bases Access
    Par Zorg44 dans le forum Access
    Réponses: 2
    Dernier message: 17/11/2005, 00h54
  4. Comment faire un retour ligne entre des " ??
    Par DrTank dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/05/2005, 09h35
  5. Empêcher le retour á la ligne entre des balises <Hx> e
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 29/11/2004, 16h39

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