Jun 05 2008

使用python进行ClustalW格式和aligned FASTA格式转换

分类: programming, studyazalea @ 5:49 pm 367次阅读

ClustalW格式是多序列比对程序CLUSTAL W的默认输出格式,大概是这个样子:

Aligned FASTA格式是多序列比对程序MUSCLE的默认输出格式,与一般的FASTA格式很相似,只是根据比对结果在序列中填充“-”,使所有序列长度相同,例如:

Aligned FASTA格式更便于机器阅读,而ClustalW格式是比较人性化的 ,使用者可以直观地看到相同和不同的区域。

由于MUSCLE程序的profile alignment功能需要aligned FASTA格式的输入,因此我写了以下一段简单的python代码,把ClustalW格式转换成aligned FASTA格式:

PYTHON:
  1. #!/usr/bin/python
  2. #Usage: python clw2afa.py input.clw
  3. #Default output is STDOUT, you can redirect using '>'
  4.  
  5. import sys
  6. import re
  7.  
  8. pat=re.compile('(\S+)\s+(\S+)')
  9.  
  10. f=open(sys.argv[1])
  11. header=f.readline()
  12. if not header.startswith('CLUSTAL') and not header.startswith('MUSCLE'):
  13.     sys.exit("Wrong input file type.")
  14. ln=f.readline()
  15. while not ln.strip():
  16.     ln=f.readline()
  17. seqdict={}
  18. EOF=False
  19. while ln:
  20.     m=pat.search(ln)   
  21.     if m and not '*' in ln:
  22.         seqdict[m.group(1)]=m.group(2)
  23.         ln=f.readline()
  24.     elif not ln:
  25.         EOF=True
  26.         break
  27.     else:
  28.         break
  29. if not EOF:
  30.     while True:
  31.         ln=f.readline()
  32.         if not ln:
  33.             break
  34.         m=pat.search(ln)
  35.         if m and not '*' in ln:
  36.             seqdict[m.group(1)]+='\n'+m.group(2)
  37. f.close()
  38. for k,v in seqdict.items():
  39.     print ">%s\n%s"%(k,v)

输入文件

写得有点混乱,希望大家如果使用的话把BUG报告一下^^

相关文章



Jun 05 2008

收集一堆DNA和蛋白质序列比对软件

分类: studyazalea @ 2:46 am 475次阅读

最近好像爱上收集软件了(其实不是的。。),今天就来收集一下DNA和蛋白质序列比对软件(Sequence Alignment Tools).

最最最著名的就是BLAST了,BLAST虽然叫做the Basic Local Alignment Search Tool(基本局部比对搜索工具),但是研究中经常用BLAST来寻找同源序列。网络版的BLAST非常强大,http://www.ncbi.nlm.nih.gov/blast/Blast.cgi,想必大家都很熟悉,就不多说了。BLAST也可以在本地进行,方法详见如何在本地BLAST, 另外有个本地版的程序叫bl2seq,用来进行2个序列的比对。

FASTA是和BLAST类似的工具,可以在一个数据库中搜索某序列的相似序列,也可以进行2个序列的比对。FASTA比BLAST古老,似乎现在很少有人用,弗吉尼亚大学有FASTA的web server.

一个很古老的序列全局比对(global alignment)工具叫Needle这里有个web版的Needle比对工具。 与Needle对应的是Water,是个很古老的序列局部(local alignment)比对工具,全局比对和局部比对的区别在于,前者尽可能使2个序列在全部长度上可以排列比对,而后者追求达到局部最优比对。这里同时提供了needle和water两种算法进行比对。needle和water只能用于2个序列的比对。题外话:今天得知实验室的师兄用的是Needle,真是怀旧啊。。

另外一个很古老但至今仍然很流行的多序列比对(multiple sequence alignment)工具叫Clustal http://www.clustal.org/. Clustal的图形用户界面版软件叫ClustalX,而命令行模式的版本叫ClustalW,Ubuntu下可以轻松安装CulstalW,只需sudo apt-get install clustalw. Clustal的原理是渐进比对:“在比对过程中,先对所有的序列进行两两比对并计算它们相似性分值,然后根据相似性分值将它们分成若干组,并在每组之间进行比 对,计算相似性分值。根据相似性分值继续分组比对,直到得到最终比对结果。在比对过程中,相似性程度较高的序列先进行比对而距离较远的序列添加在后面。”(抄自这里)因此Clustal不仅可以用来进行多序列比对,也可以构建邻接树(NJ tree).

一个很新的多序列比对工具叫MUSCLE (multiple sequence comparison by log-expectation) http://www.drive5.com/muscle/. MUSCLE对Clustal的算法进行了改进,具体我也不懂,作者测试的结果是与Clustal相比,运行速度和准确性都有所提高。

最近一直在用ClustalW和MUSCLE,下面对二者的优劣谈谈我的看法。ClustalW可以方便的设定Gap Penalty,即对序列比对出现的缺口如何罚分,这个参数对比对的结果有很大影响,但是ClustalW只能输出clw格式,不方便程序的处理。而MUSCLE可以输出多种格式的文件,总有一款适合你-.- 而且MUSCLE可以在已经进行好的比对里增加新的序列,再次比对,而不必从头对这些序列一起比对。

以上软件除了可以设定一些参数外,不能人为对比对结果进行修改。那么如果我们已知这些序列的某段子序列是比对在一起的,而软件计算的结果却不在一起,我们怎么办呢?换句话说,如果我想预先强制确定某个序列的某个位点与另外一个序列的某位点是比对在一起的,那么就需要这个软件:DiAlign, http://bibiserv.techfak.uni-bielefeld.de/dialign/ DiAlign可以输入一个文件,包含每条序列的锚定位点(即强制比对的区域),在此基础上比对其余序列。上述网站提供了web server,本地安装的方法在这里

此外今天看到一个满可爱的web序列比对软件,Base by Base, http://athena.bioc.uvic.ca/workbench.php?tool=basebybase&db=。它是专门为病毒基因和蛋白质序列比对而开发的,不过推而广之也可以用来比对任何序列。使用者可以手动拖动序列,改变比对的位点,也可以选中想要重新比对的子序列,使用T-Coffee, ClustalW或MUSCLE算法重新进行比对。具体使用方法详见the OpenHelix Blog,有视频演示,非常赞。

罗嗦了一大堆,本来还想写一下各个软件适用的情况,不过我也不是很清楚,暂时算啦,留待以后补充。在MUSCLE的文档里看到,如果不能确信比对结果,就去搞几个不同的比对软件,所有结果中共同的比对区域可信度就高。。 我个人的偏好是2个序列比对或数据库搜索用BLAST,多序列比对用MUSCLE,因为选项丰富,可以根据需要改变一些参数,另外就是可以大规模处理数据。

相关文章



Apr 23 2008

分子生物学家眼中的侏罗纪公园

分类: fun, studyazalea @ 6:04 am 314次阅读

标题很不恰当,我不是讨论生物伦理学,而是要讲个故事。

1990年, Micheal Crichton出版了著名的科幻小说《侏罗纪公园》,书中的科学家Dr. Henry Wu讲解复活恐龙的原理时,给读者看了一段恐龙DNA序列:

gcgttgctgg cgtttttcca taggctccgc ccccctgacg agcatcacaa aaatcgacgc
ggtggcgaaa cccgacagga ctataaagat accaggcgtt tccccctgga agctccctcg
tgttccgacc ctgccgctta ccggatacct gtccgccttt ctcccttcgg gaagcgtggc
tgctcacgct gtaggtatct cagttcggtg taggtcgttc gctccaagct gggctgtgtg
ccgttcagcc cgaccgctgc gccttatccg gtaactatcg tcttgagtcc aacccggtaa
agtaggacag gtgccggcag cgctctgggt cattttcggc gaggaccgct ttcgctggag
atcggcctgt cgcttgcggt attcggaatc ttgcacgccc tcgctcaagc cttcgtcact
ccaaacgttt cggcgagaag caggccatta tcgccggcat ggcggccgac gcgctgggct
ggcgttcgcg acgcgaggct ggatggcctt ccccattatg attcttctcg cttccggcgg
cccgcgttgc aggccatgct gtccaggcag gtagatgacg accatcaggg acagcttcaa
cggctcttac cagcctaact tcgatcactg gaccgctgat cgtcacggcg atttatgccg
caagtcagag gtggcgaaac ccgacaagga ctataaagat accaggcgtt tcccctggaa
gcgctctcct gttccgaccc tgccgcttac cggatacctg tccgcctttc tcccttcggg
ctttctcatt gctcacgctg taggtatctc agttcggtgt aggtcgttcg ctccaagctg
acgaaccccc cgttcagccc gaccgctgcg ccttatccgg taactatcgt cttgagtcca
acacgactta acgggttggc atggattgta ggcgccgccc tataccttgt ctgcctcccc
gcggtgcatg gagccgggcc acctcgacct gaatggaagc cggcggcacc tcgctaacgg
ccaagaattg gagccaatca attcttgcgg agaactgtga atgcgcaaac caacccttgg
ccatcgcgtc cgccatctcc agcagccgca cgcggcgcat ctcgggcagc gttgggtcct
gcgcatgatc gtgctagcct gtcgttgagg acccggctag gctggcgggg ttgccttact
atgaatcacc gatacgcgag cgaacgtgaa gcgactgctg ctgcaaaacg tctgcgacct
atgaatggtc ttcggtttcc gtgtttcgta aagtctggaa acgcggaagt cagcgccctg

1992年,NCBI的科学家Dr. Mark Boguski阅读《侏罗纪公园》时,好奇地用这段序列去blast了一下,结果他发现了什么?
哈哈,你自己去blast一下,只需要2分钟,或者看看Mark发表在BioTechniques上的发现 Boguski, M.S. A Molecular Biologist Visits Jurassic Park. (1992) BioTechniques 12(5):668-669.

话说Micheal Crichton看到Mark这篇文章,大为倾倒,于是请他做写科幻小说的顾问,在他的另一本书《消失的世界》(The Lost World)中,Mark杜撰了一个恐龙DNA序列:

gaattccgga agcgagcaag agataagtcc tggcatcaga tacagttgga gataaggacg
gacgtgtggc agctcccgca gaggattcac tggaagtgca ttacctatcc catgggagcc
atggagttcg tggcgctggg ggggccggat gcgggctccc ccactccgtt ccctgatgaa
gccggagcct tcctggggct gggggggggc gagaggacgg aggcgggggg gctgctggcc
tcctaccccc cctcaggccg cgtgtccctg gtgccgtggg cagacacggg tactttgggg
accccccagt gggtgccgcc cgccacccaa atggagcccc cccactacct ggagctgctg
caaccccccc ggggcagccc cccccatccc tcctccgggc ccctactgcc actcagcagc
gggcccccac cctgcgaggc ccgtgagtgc gtcatggcca ggaagaactg cggagcgacg
gcaacgccgc tgtggcgccg ggacggcacc gggcattacc tgtgcaactg ggcctcagcc
tgcgggctct accaccgcct caacggccag aaccgcccgc tcatccgccc caaaaagcgc
ctgcgggtga gtaagcgcgc aggcacagtg tgcagccacg agcgtgaaaa ctgccagaca
tccaccacca ctctgtggcg tcgcagcccc atgggggacc ccgtctgcaa caacattcac
gcctgcggcc tctactacaa actgcaccaa gtgaaccgcc ccctcacgat gcgcaaagac
ggaatccaaa cccgaaaccg caaagtttcc tccaagggta aaaagcggcg ccccccgggg
gggggaaacc cctccgccac cgcgggaggg ggcgctccta tggggggagg gggggacccc
tctatgcccc ccccgccgcc ccccccggcc gccgcccccc ctcaaagcga cgctctgtac
gctctcggcc ccgtggtcct ttcgggccat tttctgccct ttggaaactc cggagggttt
tttggggggg gggcgggggg ttacacggcc cccccggggc tgagcccgca gatttaaata
ataactctga cgtgggcaag tgggccttgc tgagaagaca gtgtaacata ataatttgca
cctcggcaat tgcagagggt cgatctccac tttggacaca acagggctac tcggtaggac
cagataagca ctttgctccc tggactgaaa aagaaaggat ttatctgttt gcttcttgct
gacaaatccc tgtgaaaggt aaaagtcgga cacagcaatc gattatttct cgcctgtgtg
aaattactgt gaatattgta aatatatata tatatatata tatatctgta tagaacagcc
tcggaggcgg catggaccca gcgtagatca tgctggattt gtactgccgg aattc

这个序列来源于和恐龙亲缘关系很近的一个物种的序列,并混合了蛙的DNA序列,同时,Mark还做了点小手脚,在这个序列翻译成的蛋白质序列中,嵌入了一条消息。是什么你也不要问啦,我虽然不知道,即使知道也不会告诉你滴,自己去blast!

这段轶事是在http://www.inf.fu-berlin.de/lehre/WS05/aldabi/aufgabe5_12.html看到的,赞一下!

恩,补充一下,这个故事说明,生物学家要多读科幻小说,并且保持好奇心,把里面的序列都去blast一下,就可以发paper,并且兼职做顾问赚外快啦

相关文章



Feb 26 2008

Install ClustalW on Ubuntu

分类: studyazalea @ 12:09 am 268次阅读

ClustalW is a sequence alignment tool widely used in bioinformatics.

It is easy to install ClustalW on Ubuntu, simply type:

sudo apt-get install clustalw

And it's all set.

Ubuntu is good!

Want to know more about what ClustalW can do or how to use it? Check this.

Update: Here is  a general Q&A of clustalw including the default parameter settings:

http://searchlauncher.bcm.tmc.edu/multi-align/Help/clustalw.html

相关文章



Jan 31 2008

如何在本地BLAST

分类: studyazalea @ 7:44 pm 1,193次阅读

1. 下载Standalone BLAST executables

下载地址: http ftp

注意下载和你的系统对应的文件

2. 解压

以下步骤针对于linux操作系统,windows操作系统的方法请参考解压后的doc文件夹的index.html文件

3. 创建一个名为.ncbirc的文件

内容如下:
[NCBI]
Data="path/data/"

其中,"path/data/"是Standalone BLAST程序data子目录的位置。如: Data=/root/blast/data
.ncbirc文件应保存在你调用Standalone BLAST程序的目录或者你的根目录

4. 创建BLAST database

下载或者收集BLAST搜索的数据库,通常是核酸序列或蛋白质序列,

通过Standalone BLAST程序的formatdb命令把这些序列格式化。如:

formatdb -i db -o F -p F -n "nr" -v 2000000000

各选项意义如下:

-i 输入文件,只能是一个文件,

-o Parse options (默认是F)

    T - True: Parse SeqId and create indexes.

    F - False: Do not parse SeqId. Do not create indexes.
Update: 如果需要用fastacmd通过SeqId获取序列,则必须使用-o选项;
如果只是BLAST,不需要获取BALST得到的序列,则不使用-o选项
-p 文件类型  (默认是T)
    T - protein

    F - nucleotide [T/F]  Optional
-n 数据库名称
    不指出的话默认为输入文件名
-v 数据库每卷大小(单位是百万字母) (默认是0)
    这个选项把大的FASTA文件分割成卷,每卷大小由-v后的参数指定,不超过2000000000,即20亿字母。
更多选项请参阅 解压后的doc文件夹的formatdb.html文件或者man formatdb
关于错误解决方法,请参阅http://bioinformatics.ubc.ca/resources/tools/formatdb
4. 开始BLAST

大家熟悉的"blastp", "blastn", "blastx", "tblastn", 或 "tblastx" 都通过Standalone BLAST程序的formatdb命令实现。

格式是:
blastall -p blastn -d nr -i QUERY -o out.QUERY -m 9
各选项意义如下:
-p 程序名
    包括 blastp: 通过蛋白质序列搜索蛋白质序列数据库
    blastn: 通过核酸序列搜索核酸数据库
    blastx: 通过翻译后的核酸序列搜索蛋白质数据库
    tblastn: 通过蛋白质序列搜索翻译后的核酸数据库
    tblastx: 通过翻译后的核酸序列搜索翻译后的核酸数据库
-d 数据库名称
    与formatdb中-n选项一致
-i 输入文件
    不指明的话默认为STDIN
-o 输出文件
    不指明的话默认为STDOUT
-m (blast2, blastall, blastall_old, blastcl3, blastpgp,impala, megablast, rpsblast)显示选项:
              0      pairwise (default)
              1      query-anchored showing identities
              2      query-anchored, no identities
              3      flat query-anchored, show identities
              4      flat query-anchored, no identities
              5      query-anchored, no identities and blunt ends
              6      flat query-anchored, no identities and blunt ends
              7      XML Blast output (not available for impala)
              8      tabular (not available for impala)
              9      tabular with comment lines (not available for impala)
              10     ASN.1 text (not available for impala or rpsblast)
              11     ASN.1 binary (not available for impala or rpsblast)
-T 输出html格式的文件
更多选项请参阅 解压后的doc文件夹的formatdb.html文件,或者man blast
5.  Standalone BLAST程序还带有其他命令,如
bl2seq: 比较2个序列相似性
megablast: 高度相似性核酸序列BLAST
等等
详情请参阅 解压后的doc文件夹,或者man blast

相关文章



第 1 页,共 1 页1