新手发帖,很多方面都是刚入门,有误错的地方请大家见谅,欢迎批评指正
1
关于这个软件
这个软件含包的内容很多,里头有很多的程序。面后我会附上我从别处看到的一 个总结,这里我们只是侧重于,对于这些程序所要需的输入文件的格式行进说明, 并论讨体具的实现法方。
这里我道知的要需两种格式。一种是mix.exe 和dnaml,dnamlk等要需的, 另外就是pars.exe等要需的。我没有用到部全的程序,所以我只是总结一下这 两种格式的得获。
2
mix.exe格式
4 5 ab 01001 acd 00101 m
101
10 n 10000
这里的要点就是第一行,写明Sample的数目,和mark的数目。 然后面后的每一行都是“名字 状态”。名字和状态之间不是tab 键得获的。也就是要通过空格保障mark开始的位置都是齐对的。 我们用perl来实现就很简略了,只要需对名字这个数参用printf. 程序如下:
#
首先自己要到得一个没有排序的全完的文件
#
格式大概是这样
#
a 01010
#
b 00010
#
也就是没有齐对的,如果你的品样非常的多,当然你可以手动理处,但是还是稍显费事
use
stric
;
use
waarnings
;
my
@
information
; open(OUT,
"out.txt"
)||
die
(
"can not open"
); open(IN,
"in.txt"
) ||
die
(
"can not open"
);
while
(<
IN
>) { chomp; @
information
=split
/\s+/
,$
_
; $
number
=@
information
; printf OUT
"%s-10s"
,$
information
[0]; print OUT
"@information[0..$number-1];
}
close IN;
close OUT;
3
pars.exe
这类格式就略微杂复一些了
1:
I9311 AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA
2:
AP TTTTTTTTTT AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA TTTTTTTTTT
3:
4:
AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA
5:
TTTTTTTTTT TTTTTTTTTT TTTTTTTTTT TTTTTTTTTT TTTTTTTTTT
6:
7:
AAAAAAAAA
8:
TTTTTTTTT
9:
这类格式的点特就是:一行50个,然后分红5段,每段10个,第一行放不下的,要放到第四行
程序如下,体具的就不多说了。
1:
use
strict
;
2:
use
warnings
;
3:
4:
my
(@
information
,$
i
,@
file
,$
file
,$
key
,$
m
,$
geshi
,%
hash
,$
value
);
5:
open(OUT,
">geshi_out.txt"
);
6:
open(IN,
"all.txt"
)||
die
(
"can not open"
);
7:
while
(<
IN
>)
8:
{
9:
chomp;
10:
@
information
=split
/\s+/
,$
_
;
11:
"$information[0]\n"
;
12:
$
hash
{$
information
[0]}=$
information
[1];
13:
}
14:
close IN;
15:
16:
for
($
i
=0;$
i
<50;$
i
+=50)
17:
{
18:
foreach
$
key
(sort keys %
hash
)
19:
{
20:
printf OUT
"%-10s"
,$
key
;
21:
foreach
($
m
=$
i
;$
m
<$
i
+41;$
m
+=10)
22:
{
23:
$
value
=$
hash
{$
key
};
24:
$
geshi
=substr($
value
,$
m
,10);
25:
print OUT
"$geshi "
;
26:
}
27:
print OUT
"\n"
;
28:
}
29:
print OUT
"\n"
;
30:
}
31:
32:
for
($
i
=0;$
i
<26341;$
i
+=50)
33:
{
34:
foreach
$
key
(sort keys %
hash
)
35:
{
36:
printf OUT
"%-10s"
, ;
37:
foreach
($
m
=$
i
;$
m
<$
i
+41;$
m
+=10)
38:
{
39:
$
value
=$
hash
{$
key
};
40:
$
geshi
=substr($
value
,$
m
,10);
41:
print OUT
"$geshi "
;
42:
}
43:
print OUT
"\n"
;
44:
}
45:
print OUT
"\n"
;
46:
}
4
附录:phylip软件子程序说明
PHYLIP是一个综合的系统产生析分软件包,由华盛顿大学的Joseph Felsenstein发开的。在现该软件包可成完很多系统产生析分。软件包中可用的法方包含了繁复法、离距矩阵和似然法,以及bootstrap和致一性树。可以理处的数据类型有子分序列、基因频率、限制性位点、离距矩阵和二进制散离字符。 户用界面: 程序通过一个单菜来控制,户用置设项选。数据从一个文本文件中读入程序,这个文本文件不能是有特别格式的文字理处器(office word)。有些序列比对程序,如clustalX,可将数据文件写为PHYLIP格式。 而大部分的程序动自找寻在infile文件中的数据。如果它们没有找到这个文件,它们将提示户用自己输入数据文件名。输出的内容将被写到特定的文件中,如:outfile和outtree。Outtree中的树是newick格式的,这是一个正式的标准,由1986年被重要系统产生软件包的作者所定确的。 Getting started 意注持保记载。 记载每步的试验进程是非常重要的,甚至是在盘算析分时。许也你会对很多的结果文件到感头痛,那么最好的法方就是给 结果文件改一个有意义的名字。 序列比对。 PHYLIP的输入文件是比对过的序列,并且是PHYLIP格式的。文件的后缀名是.phy的。比对可用clustalX:
http
:
//
www-igbmc.u-strasbg.fr/BioInfo/ClustalX/Top.html 定一要把比对的序列保存为phylip格式的。 PHYLIP程序的行运 这些程序要按照定一的次序来行运。前一个程序的输出作为下一个程序的输入。如何理合的组合这些程序也很症结。 在windows中,PHYLIP程序可通过双击程序的图标来启动,或是在命令行中输入程序的称名来启动。我们议建应用命令行方式,因为你许也能看到一些误错提示。它启动的方是:开始->部全程序->件附->命令提示符。 大部分PHYLIP程序行运法方同相。程序把infile作为默许输入文件,如果没有找到它将要求户用输入数据文件的称名。输出结果写在outfile文件中。有些则写在outfile和outtree或plotfile中。 因为大部分程序应用默许的输入和输出文件名,所以在下一步的析分前,要重命名你想保存的文件。比如,你用Dnadist到得了离距矩阵(outfile),你还想试试不同的置设,那么再做矩阵盘算前,你可以把outfile重命名为dnadist_out_F84,或其它称名,这样你能就区分两次的结果了。 程序 离距法方: 次序应用这些程序。首先,用dandist或protdist程序盘算序列比对结果的离距矩阵。接着这个矩阵被fitch、kitsch或 neighbor程序转换为树。Dandist和protdist程序的输出文件是outfile。在行运fitch、kitsch或neighbor 前,outfile应当重命名为infile或另外的名字。fitch、kitsch和neighbor的输出文件是outfile和outtree。 Dnadist DNA离距矩阵盘算器 Protdist 蛋白质离距矩阵盘算器 Fitch 没有子分时钟的Fitch-Margoliash树 Kitsch 有子分时钟的Fitch-Margoliash树 Neighbor Neighbor-Joining和UPGMA树 基于字符的法方 这些程序读入一个序列对,它们的输出文件是outfile和outtree。 Dnapars DNA繁复法 Dnapenny DNA繁复法using branch-and-bound Dnaml DNA最大似然,无子分时钟 Dnamlk DNA最大似然,有子分时钟 Protpars 蛋白质繁复法 Proml 蛋白质最大似然法 重样抽具工 该程序成生一系列的特别的随机样本,保存在outfile中。这些样本在继后的析分中作为一个序列对文件,要置设项选M(
use
multiple
datasets)。 Seqboot 成生随机样本,用bootstrap和jack-knife法方。 画树 这些程序可画newick格式的树。如,danml程序成生的树。Drawgram和drawtree成生文件为plotfile,而retree成生outtree。 Drawgram 画有根树 Drawtree 画无根树 Retree interactive tree-rearrangement致一树 用多重树构建致一树。如,dnapars可成生多重树,可用consense程序来汇总。Bootstrap的结果也由它来汇总为一棵majority rule tree。 Consense draws consensus trees from multiple trees 树的离距 盘算多个树间的基于朴拓结构的离距。该法方可用来比拟不同析分法方的结果。 Treedist 盘算树朴拓结构间的离距 Quick start 这里以DNA序列数据为例说明。构建和画树,用F84化进模式的NJ法方。 离距法方 比对你的DNA序列并且保存比对结果为PHYLIP格式,如:alignment.phy。启动dnadist程序,双击图标或在命令行中输入dnadist。 Dnadist首先检查该程序地点文件夹中否是有infile文件。如果没有找到infile,它就会提示你输入序列比对文件。
Dnadist
: can
't find input file "infile"
Please enter a new file name> alignment.phy
意注,将程序与数据文件放在同一个文件夹中,应用起来会轻易一些。如果数据文件在另外的文件夹中,你就要输入该文件的部全路径,比如文件在D:/data文件夹中,
Dnadist: can'
t find input file
"infile"
Please enter a new file name> D:\data\alignment.phy 部全的PHYLIP程序都是单菜提示的。下面就是dnadist的单菜。每行都是以一个字母或数字开始的。通过输入每行后面的字母或数字,来改修响应的程序置设。例如,输入”D”按回车将环循到得不同的化进模式。改修完后输入“Y”,按回车,开始行运该程序。 Nucleic acid sequence Distance Matrix program, version 3.66 Settings
for
this run: D Distance (F84, Kimura, Jukes-Cantor, LogDet)? F84 G Gamma distributed rates across sites? No T Transition/transversion ratio? 2.0 C One category of substitution rates? Yes W Use weights
for
sites? No F Use empirical base frequencies? Yes L Form of distance matrix? Square M Analyze multiple data sets? No I Input sequences interleaved? Yes 0 Terminal type (IBM PC, ANSI, none)? ANSI 1 Print out the data at start of run No 2 Print indications of progress of run Yes Y to accept these or type the letter
for
one to change y 两两序列的离距保存在outfile文件中。你可以将它重命名为outfile.txt,那么当前双击它时可就动自用记事本打开了。 Distances calculated
for
species Rabbit .... Human ... Opossum .. Chicken . Frog Distances written to file
"outfile"
Done. 接着把outfile重命名为infile,行运neighbor程序(输入neighbor)。该程序从infile文件中读取离距数据。这里不要需置设,输入Y按回车。 Neighbor-Joining/UPGMA method version 3.66 Settings
for
this run: N Neighbor-joining or UPGMA tree? Neighbor-joining O Outgroup root? No,
use
as
outgroup species 1 L Lower-triangular data matrix? No R Upper-triangular data matrix? No S Subreplicates? No J Randomize input order of species? No. Use input order M Analyze multiple data sets? No 0 Terminal type (IBM PC, ANSI, none)? ANSI 1 Print out the data at start of run No 2 Print indications of progress of run Yes 3 Print out tree Yes 4 Write out trees onto tree file? Yes Y to accept these or type the letter
for
one to change y 行运完当前,树含包在outfile和outtree。可以用文本编辑器来看outfile中的树。 画树 下面我们用drawgram程序把outtree画成一棵看好的树吧。首先,把outtree重命名为intree,并把font文件的其中 一个重命名为fontfile,启动drawgram程序。该程序首先找寻文件fontfile,如果找不到它(如果你没有把字体文件之一为改fontfile 的话),它会提示输入一个字体文件。接着就会涌现单菜。你要需将项选P对应的终最绘图备设为改MS-windows bitmap。它还要要求你输入树的维数,比如说640x400。置设好后输入Y按回车。 Drawgram打开一个新的口窗,你可以看到一棵树,如果你意满这个结果,择选file单菜中的plot。在当前文件夹中涌现一个plotfile文件。如果你将它重命名为plotfile.bmp,可就用图形具工将它打开了。 树支的长度是核苷酸或氨基酸变改的数目,变改的数目用dandist程序化进模式来预算。 氨基酸序列 所用的程序与下面所举的例子似类。只要把dnadist换成protdist就好了。
################
具体说明
#################
除了基于离距的法方外,还有基于字符的法方:最大繁复法和最大似然法。 根据实际情况,除了数据析分和画以外,我们还要验证数据的可靠性,比如用bootstrap法方。 如果行运有些程序之前,你还行运过别的程序,在文件夹中经已存在了outfile文件的话,程序会有这样的提示:
Dnadist
: the file
"outfile"
that you wanted to
use
as
output file already exists. Do you want to Replace it, Append to it, write to a new File, or Quit? (please type R, A, F, or Q)
#####
DNA数据####
Dnadist的单菜 Nucleic acid sequence Distance Matrix program, version 3.66 Settings
for
this run: D Distance (F84, Kimura, Jukes-Cantor, LogDet)? F84 G Gamma distributed rates across sites? No T Transition/transversion ratio? 2.0 C One category of substitution rates? Yes W Use weights
for
sites? No F Use empirical base frequencies? Yes L Form of distance matrix? Square M Analyze multiple data sets? No I Input sequences interleaved? Yes 0 Terminal type (IBM PC, ANSI, none)? ANSI 1 Print out the data at start of run No 2 Print indications of progress of run Yes D——离距盘算法方,化进模式。是争对替换题问和转换颠换的。Jukes-Cantor离距假设部全替换的率概都等相。Kimura离距有两个不同的替换率,一个对应转换,一个对应颠换。这些模式都假设个一每碱基的频率是等相,且于等0.25。F84离距,转换和颠换率不同,碱基的频率也不同。 LogDet离距在序列间有较大的碱基频率差异时应用。LogDet离距不能复制暧昧的代码,必须是定确的序列。 (下面是一些摘抄的他人题问,或益有) 近来用phylip的N-J来建系统化进树,到得的图型如下图。特征如下:一是无根,二是化进速率恒定(表现为分支等长)。可是我从文献看到的化进树(Phylip,N-J),一幅是有根树;另外一幅无根,但分支不等长。 叨教:N-J否能构建有根树?如果是无根树,分支节点后的分支定一是等长么?请不吝赐教。 附3幅图: ….. 我用的软件是phylip3.65。流程:clustx-seqboot-dnadist-consense-treeview表现。请导指 另外,在neighbor.exe中,O,即outgroup root?项选,我用的是默许值,即
use
as
spieces 1。否是是这里的影响?该如何择选outgroup。请您导指。 你的是能可合巧吧,我和你的法方一样,作出来也不是等长的。你可以再试试别的建立法方。不同的算法有不同的实用目标。一般来说,最大繁复性法实用于符合以下条件的多序列:i 所要比拟的序列的碱基差异小,ii 对于序列上的个一每碱基有近似等相的异变率,iii 没有多过的颠换/转换的向倾,iv 所检修的序列的碱基数目较多(大于几千个碱基);用最大可能性法析分序列则不需以上的诸多条件,但是此种法方盘算极其耗时。如果其它法方也是这样的结果,那是能可你的数据的题问了 等长的是朴拓树,只反响化进关系;不等长是化进树,其是非代表化进的离距远近。跟有根无根系关没。选outgroup定一要选你理处数据以外的一个远缘序列,然后指定他是outgroup。如果没有就不指定outgroup。 对于outgroup的择选,要需充补一点,如果是做物种的系统发育关系,则外群应当择选远缘关系的,如果是做体群即一个物种下的,则外群要择选近缘的
Date: 2013-04-30 13:46:42 CST
Author: gaorongchao
Org version 7.8.11 with Emacs version 24
文章结束给大家分享下程序员的一些笑话语录: 刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”