Bonjour,


Voici mon problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
my $sql0 = <<"SQL0";
SELECT accession, organism, sequence
FROM ma_table
WHERE sequence REGEXP 'TGTAGACGTGACGATGTAACAC[ATCG]{100,}' OR sequence REGEXP '[ATCG]{100,}TGATACCGATCCCTAGAACAGAT' 
SQL2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
my ($subseq) = $sequence =~ m/((?:TGTAGACGTGACGATGTAACAC)?[ATCG]{100,250}(?:TGATACCGATCCCTAGAACAGAT)?)/;
$sequence contient TGTAGACGTGACGATGTAACAC ou TGATACCGATCCCTAGAACAGAT ou les 2 polynucléotides séparés par 100 à 250 nucléotides.

J'aimerais récupérer des sous-séquences de $sequence dont les 2 polynucléotides (TGTAGACGTGACGATGTAACAC et TGATACCGATCCCTAGAACAGAT) seraient les bornes. Si un seul polynucléotide est présent on récupère ce qu'il est possible de récupérer en gardant les même bornes.

Le problème est que si je fais une recherche gourmande, je récupère d'office 250 nucléotides après le premier polynucléotide (ce qui peut dépasser le second polynucléotide) et dans le cas contraire ([ATCG]{100,250}?), je n'en récupère que 100 et le second polynucléotide est laissé de côté.

Comment puis-je faire en une seule regexp?

Merci pour votre aide,