2013-10-25 3 views
0

Итак, мой вопрос: как вы зеркалируете последовательность генов в perl? В принципе у меня есть кусок кода, который выглядит следующим образом:Как зеркалировать последовательность генов с использованием perl

m/(([ACGT]{4})\2)/ 

это совпадает с любым из четырех букв в строке 4 раза * 2 ... так например: CGAG CGAG (без места). Как я могу получить этот код, чтобы распечатать CGAG с последующим GAGC вместо CGAG (зеркало второго Любая помощь будет оценена

+0

Вы бы дали нам образец ввода и желаемый результат для нескольких сценариев? – michael501

ответ

0

Использование reverse & split:.

$ perl -le 'print reverse split //, "GAGC"' 
CGAG 
1

пфф, true- регулярное выражение способ:

m/(([ACGT]{4})\s*(??{ my $b = reverse $2; $b }))/ 

perl -E 'warn "CGAG GAGC" =~ m/(([ACGT]{4})\s*(??{ my $b = reverse $2; $b }))/' 
CGAG GAGCCGAG at -e line 1. 

Но это экспериментальная функция еще ...

вы можете сделать что-л, как

my $str = "CGAGGAGC"; 
index($str, $1 . reverse($1)) != -1 && print "$1" . reverse($1) . " at " . (pos($str) - 4) while $str =~ m/([ACGT]{4})/g; 
0

Если я не ошибаюсь, вы хотите найти palindromic secuence..

В вашем случае вы можете сделать что-то подобное.

#!/usr/bin/perl 
use warnings; 
use strict; 
use 5.014; 

my $dna = "TGCACGAGGAGCTTAC"; 

my ($match) = $dna =~ m/(([ACGT])([ACGT])([ACGT])([ACGT])\5\4\3\2)/; 

say $match 
#CGAGGAGC