【发布时间】:2013-12-11 22:37:14
【问题描述】:
我有这样的数据
pop A B C D E
P1 T/T C/C C/C T/T C/C
P2 A/A G/G C/C T/T C/C
1 A/A G/G C/C T/T C/C
2 A/A G/G C/C T/T C/C
3 A/T A/C A/G A/T A/C
4 T/A T/G T/C T/A T/G
5 G/A G/T G/C G/A G/T
6 C/A C/T C/G C/A C/T
pop A B C D E
P1 T/T C/C C/C T/T C/C
P2 A/A G/G C/C T/T C/C
1 A/A G/G C/C T/T C/C
2 A/A G/G C/C T/T C/C
3 A/T A/C A/G A/T A/C
4 T/A T/G T/C T/A T/G
5 G/A G/T G/C G/A G/T
6 C/A C/T C/G C/A C/T
我想对我的数据做以下事情
我想将所有
A/A转换为A,T/T转换为T,C/C转换为C,G/G转换为G,Z/Z转换为@39和-/-到-和其余字符,如A/T,G/T,C/G,T/C到H现在我想通过比较
P1和P2来了解从A到E的状态,如果P1=P2然后从A到E的状态是单声道或任何一个P1或P2包含Z/Z或-/-然后从A到E的状态是单声道,从A到E的状态是多边形如果
pop列中的 1 与pop列中的p2匹配,我想将pop列中的 1 与A到E的弹出列中的P2匹配它的状态只有 poly 然后我想给 1 否则,如果它是 mono 我不想做任何事情。现在我将计算
# 1s 和# H's最后我会用这个公式
=((#1*2+#H)/((#1+#H)*2))*100计算%sim。我想对第二组父母
P1和P2重复相同的过程
预计会是这样的
pop A B C D E A B C D E
P1 POLY POLY MONO MONO MONO POLY POLY MONO MONO MONO #1's #H's %sim
P2 A G C T C
1 A G C T C 1 1 C T C 2 0 100
2 A G C T C 1 1 C T C 2 0 100
3 A G C - C H H H H H 0 5 100
4 H H H H H H H H H H 0 5 50
5 H H H H H H H H H H 0 5 50
6 H H H H H H H H H H 0 5 50
7 H H H H H H H H H H 0 5 50
现在我成功到了第一步,但不知道如何继续,这是我到目前为止尝试的代码
#!/usr/bin/perl -w
use strict;
open(FILE, "<input.txt") || die "File not found";
my @lines = <FILE>;
my @newlines;
foreach(@lines) {
$_ =~ s/AA/A/g;
$_ =~ s/TT/T/g;
$_ =~ s/GG/G/g;
$_ =~ s/CC/C/g;
$_ =~ s/AT/H/g;
$_ =~ s/AG/H/g;
$_ =~ s/AC/H/g;
$_ =~ s/TA/H/g;
$_ =~ s/TG/H/g;
$_ =~ s/TC/H/g;
$_ =~ s/GA/H/g;
$_ =~ s/GT/H/g;
$_ =~ s/GC/H/g;
$_ =~ s/CA/H/g;
$_ =~ s/CT/H/g;
$_ =~ s/CG/H/g;
$_ =~ s/ZZ/-/g;
push(@newlines,$_);
}
open(FILE, ">input1.txt") || die "File not found";
print FILE @newlines;
close(FILE);
【问题讨论】:
-
我对生物学一无所知,但可能有助于您了解 BioPerl。再说一次,也许不是,谁知道呢,但我听说如果人们想办法用大量的 As、Ts、Gs 和 Cs 来做有趣的事情,他们通常喜欢听到 BioPerl 的存在。
标签: perl