<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>有个博客 &#187; Bioperl</title>
	<atom:link href="http://www.yelinsky.com/blog/archives/tag/bioperl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yelinsky.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 11:34:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>批量Blast小程序</title>
		<link>http://www.yelinsky.com/blog/archives/298.html</link>
		<comments>http://www.yelinsky.com/blog/archives/298.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 06:13:30 +0000</pubDate>
		<dc:creator>叶林</dc:creator>
				<category><![CDATA[生物技术]]></category>
		<category><![CDATA[Bioperl]]></category>
		<category><![CDATA[Biopython]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[小程序]]></category>

		<guid isPermaLink="false">http://www.yelinsky.com/blog/archives/298.html</guid>
		<description><![CDATA[问题是这样的：有很多很多序列，几百条，想大致了解一下这些序列分别是什么样的微生物，如果一条一条去blast，那是相当的累。想找一个工具告诉我每条序列blast结果的前几条的名称是什么... ]]></description>
			<content:encoded><![CDATA[<p>问题是这样的：有很多很多序列，几百条，想大致了解一下这些序列分别是什么样的微生物，如果一条一条去blast，那是相当的累。想找一个工具告诉我每条序列blast结果的前几条的名称是什么即可，不需要其它信息。</p>
<p>在网上找了一下，没找到合适的软件或工具，虽然有些关于批量blast的教程之类的，比如<a href="http://yunbio.com/49" target="_blank">这个</a>，但是给出的结果及其繁琐，很多不需要的信息。</p>
<p>后来发现Biopython可以很简单就进行批量Blast。只需先安装<a href="http://www.yelinsky.com/blog/archives/tag/python">Python</a>和<a href="http://www.yelinsky.com/blog/archives/tag/biopython">Biopython</a>，Python和Biopython的下载地址分别为：<br />
<a href="http://www.python.org/download/" target="_blank">http://www.python.org/download/</a><br />
<a href="http://www.biopython.org/wiki/Download" target="_blank">http://www.biopython.org/wiki/Download</a></p>
<p><span id="more-298"></span>Windows版本下载后直接双击安装即可，非常简单。<br />
然后打开IDLE（Python GUI)，”File”-&gt;”New Window”, 分如下两步进行：</p>
<p>第一步，运行下面的代码进行Blast</p>
<pre>
from Bio.Blast import NCBIWWW
from Bio import SeqIO
SeqNumber = 0
for record in SeqIO.parse("allseq.seq", "fasta"):
  result_handle = NCBIWWW.qblast("blastn", "nr", record.seq)
  SeqNumber += 1
  save_file = open('xml\\'+str(SeqNumber)+'.xml', 'w')
  save_file.write(result_handle.read())
  save_file.close()
  print 'OK ', SeqNumber
print 'OK! Finished!'
</pre>
<p>序列要以fasta格式放在allseq.seq这个文件中，另外需要在当前目录下建一个名字为xml文件夹，代码运行结束后结果放在这个文件夹中。</p>
<p>第二步，列出每条序列blast结果的前几条的名称</p>
<pre>
from Bio.Blast import NCBIXML
import glob
total_xml_file = len(glob.glob('xml\\*.xml'))
for xmlnumber in range(1,total_xml_file+1):
  result_handle = open('xml\\'+str(xmlnumber)+'.xml')
  blast_records = NCBIXML.parse(result_handle)
  blast_record = blast_records.next()
  i = 0
  print '-------------------No.', xmlnumber, '-------------------'
  for alignment in blast_record.alignments:
    if i<10 : ##如果想看前20条结果就该为20
      print alignment.title
    else:
      break
    i+=1
  result_handle.close()
</pre>
<p>如果序列比较多，第一步可能需要很长时间，可以趁程序运行的时候先出去踢踢球或逛逛街，回来之后再运行第二步，第二步很快：）</p>
<p>第一次接触使用Python语言，非常好用，个人感觉要比<a href="http://www.yelinsky.com/blog/archives/tag/perl">Perl</a>好一些，当然Python的生物信息学组件Biopython的可能现在没有<a href="http://www.yelinsky.com/blog/archives/tag/bioperl">Bioperl</a>强大。</p>
<p>上次做了个<a href="http://www.yelinsky.com/blog/archives/227.html">序列文件合并小程序</a>，后来发现用<a href="http://www.yelinsky.com/blog/archives/275.html">Bioedit就可以很简单地进行合并</a>，白忙活了。如果进行批量Blast也有更好的方法，请留言告诉我一下，谢谢 <img src='http://www.yelinsky.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<center><div>如转载，请以超链接形式注明：转载自：<a title="有个博客" href="http://www.yelinsky.com/blog/">有个博客</a> [ <a rel="bookmark" title="有个博客" href="http://www.yelinsky.com/blog/">http://www.yelinsky.com/blog/</a> ] </div></center><center><div>本文链接地址：<a rel="bookmark" title="批量Blast小程序" href="http://www.yelinsky.com/blog/archives/298.html">http://www.yelinsky.com/blog/archives/298.html</a></div></center>
	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.yelinsky.com/blog/archives/344.html" title="功能强大而又简单易学的编程语言Python (2011年2月5日)">功能强大而又简单易学的编程语言Python</a> (4)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/278.html" title="酶切位点分析 (2009年9月26日)">酶切位点分析</a> (5)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/346.html" title="测试了一下编程水平 (2011年2月6日)">测试了一下编程水平</a> (0)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/388.html" title="在Ubuntu中安装Biopython (2011年10月17日)">在Ubuntu中安装Biopython</a> (2)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/319.html" title="动态作图小程序 (2010年9月5日)">动态作图小程序</a> (4)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/380.html" title="FASTA文件拆分与合并 (2011年8月22日)">FASTA文件拆分与合并</a> (1)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/368.html" title="高通量测序数据分析 (2011年5月28日)">高通量测序数据分析</a> (4)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/370.html" title="在亚马逊EC2上部署Apache和Django (2011年6月11日)">在亚马逊EC2上部署Apache和Django</a> (3)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/395.html" title="一些高通量测序数据处理软件 (2011年11月13日)">一些高通量测序数据处理软件</a> (8)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/404.html" title="Shell编程中的IF语句 (2011年12月20日)">Shell编程中的IF语句</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.yelinsky.com/blog/archives/298.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>酶切位点分析</title>
		<link>http://www.yelinsky.com/blog/archives/278.html</link>
		<comments>http://www.yelinsky.com/blog/archives/278.html#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:03:24 +0000</pubDate>
		<dc:creator>叶林</dc:creator>
				<category><![CDATA[生物技术]]></category>
		<category><![CDATA[Bioperl]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[小程序]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.yelinsky.com/blog/archives/278.html</guid>
		<description><![CDATA[前段时间做了一个克隆文库，有点大，拿到上百条序列，有了序列后，想选择一种合适的酶进行酶切，进而将克隆的结果与T-RFLP的结果联系起来。试了几个软件和一些在线酶切分析工具，好像... ]]></description>
			<content:encoded><![CDATA[<p>前段时间做了一个克隆文库，有点大，拿到上百条序列，有了序列后，想选择一种合适的酶进行酶切，进而将克隆的结果与T-RFLP的结果联系起来。试了几个软件和一些在线酶切分析工具，好像都是可以用多种酶去切一个序列，而不能同时切多个序列。要是序列不多，一个个切切还可以，可是这上百条序列就需要几百次甚至更多的重复操作，不但能把手累的抽筋，眼都能被累的抽筋，实在让人无法忍受。于是决定自己做个小工具。</p>
<p>首先用了几个小时速成了一下Perl语言及<a href="http://www.bioperl.org/" target="_blank">Bioperl</a>，发现这玩意处理字符串真的是太方便了！只需要下面这几行代码就可以自动或半自动同时查找多个序列酶切位点了(由于T-RFLP结果只与第一个酶切位点有关，因此只找每个序列的第一个切点)。<br />
<span id="more-278"></span><br />
#!/usr/bin/perl -w<br />
use strict;<br />
use Bio::SeqIO;<br />
my $file = &#8216;All_Sequences.fas&#8217;;<br />
my $site = &#8216;CCGG&#8217;;<br />
my $n = 2;<br />
my $inputfile = Bio::SeqIO-&gt;new(-format =&gt; &#8216;fasta&#8217;, -file =&gt; $file);<br />
my $outputfile = “Result.txt”;<br />
unless ( open(RESULT, “&gt;$outputfile”) ) {<br />
print “Cannot open \”$outputfile\” to write to!!\n\n”;<br />
exit;<br />
}<br />
while ( my $seq = $inputfile-&gt;next_seq) {<br />
my $str = $seq-&gt;seq;<br />
if ( $str =~ /$site/ ) {<br />
print RESULT index ($str, $site, 0)+$n, “\n”;<br />
print $seq-&gt;id, ” -&gt; “, index ($str, $site, 0)+$n,”\n”;<br />
}<br />
}<br />
close(RESULT);</p>
<p>使用说明：</p>
<p>首先要先安装Perl，另外还需要安装Bioperl。然后将上面这段代码保存到一个文本文档中，将后缀名改为.pl，把待切的<a href="http://www.yelinsky.com/blog/archives/227.html" target="_blank">多条序列合并到一起</a>(fasta格式)，命名为All_Sequences.fas，和这个.pl文件放在同一个文件夹，然后和运行其它perl程序一样运行就可以了。需要说明的是上面只是用一个酶(<em>MSP</em> I)去切放在All_Sequences.fas这个文件中的所有序列，结果保存打印在屏幕上同时保存在Result.txt这个文件中，如果需要用别的酶，my $site = &#8216;CCGG&#8217;;和my $n = 2;这两行需要进行相应的修改，具体怎么改我就不说了，做酶切的同学肯定知道怎么改。</p>
<p>显而易见，这个东西使用起来不是很方便，因此如果需要处理的序列不是很多，使用这个代码没有什么优势，不需要使用，序列多的话，可以考虑用一下。</p>
<p><em>有人知道用什么软件可以进行类似的操作吗？如果知道，麻烦留言告诉我一下:)</em></p>
<center><div>如转载，请以超链接形式注明：转载自：<a title="有个博客" href="http://www.yelinsky.com/blog/">有个博客</a> [ <a rel="bookmark" title="有个博客" href="http://www.yelinsky.com/blog/">http://www.yelinsky.com/blog/</a> ] </div></center><center><div>本文链接地址：<a rel="bookmark" title="酶切位点分析" href="http://www.yelinsky.com/blog/archives/278.html">http://www.yelinsky.com/blog/archives/278.html</a></div></center>
	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.yelinsky.com/blog/archives/298.html" title="批量Blast小程序 (2010年7月26日)">批量Blast小程序</a> (5)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/276.html" title="最简单最好用的截图软件 (2009年9月1日)">最简单最好用的截图软件</a> (3)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/299.html" title="国产文件同步软件-快盘 (2010年7月31日)">国产文件同步软件-快盘</a> (1)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/344.html" title="功能强大而又简单易学的编程语言Python (2011年2月5日)">功能强大而又简单易学的编程语言Python</a> (4)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/281.html" title="免费的文件备份/同步/共享工具 (2010年1月16日)">免费的文件备份/同步/共享工具</a> (0)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/327.html" title="高通量测序 (2010年10月12日)">高通量测序</a> (4)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/392.html" title="香港公交车报站软件 (2011年10月30日)">香港公交车报站软件</a> (6)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/255.html" title="绿坝专杀 (2009年6月12日)">绿坝专杀</a> (2)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/322.html" title="简单易用的单片机-Arduino (2010年9月18日)">简单易用的单片机-Arduino</a> (5)</li>
	<li><a href="http://www.yelinsky.com/blog/archives/228.html" title="离心速度的单位及其换算 (2008年12月25日)">离心速度的单位及其换算</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.yelinsky.com/blog/archives/278.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

