程序树Phylip进化树的使用,偏重于文件格式的获取

新手发帖,很多方面都是刚入门,有误错的地方请大家见谅,欢迎批评指正

    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:

    print

    "$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

    Validate XHTML 1.0

文章结束给大家分享下程序员的一些笑话语录: 刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”

posted @ 2013-04-30 18:09  xinyuyuanm  阅读(1836)  评论(0编辑  收藏  举报