zoukankan      html  css  js  c++  java
  • 程序树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

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

  • 相关阅读:
    Layout布局
    了解java虚拟机—串行回收器(6)
    了解java虚拟机—JVM相关参数设置(2)
    了解java虚拟机—堆相关参数设置(3)
    了解java虚拟机—垃圾回收算法(5)
    了解java虚拟机—并行回收器(7)
    了解java虚拟机JVM的基本结构(1)
    了解java虚拟机—非堆相关参数设置(4)
    了解java虚拟机—CMS回收器(8)
    求FTP协议规范中文版
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3052225.html
Copyright © 2011-2022 走看看