如何使用perl镜像基因序列

时间:2013-10-25 19:54:12

标签: perl match mirror

所以我的问题是你如何在perl中镜像基因序列?基本上我有一段看起来像这样的代码:

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

这匹配连续四个字母中的任何一个4次* 2 ...所以例如:CGAG CGAG(没有空格)。如何让这个代码打印出CGAG,然后是GAGC而不是CGAG(第二个镜像?任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

pff,true-regexp方式是:

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;

答案 1 :(得分:0)

使用reverse& split

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

答案 2 :(得分: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