Biopython SeqIO 读取序列文件,读取信息,写入序列

Biopython
1.序列赋值 转录(反转录) 翻译 反向互补
2.读取序列文件,识别序列的属性信息。SeqRecord提供序列及其注释的容器
属性:
seq :一条生物序列
id:基本ID,标识这条序列
name:常用分子的名称
description:序列分子的描述
letter_annotation:是一个有给每个碱基注释的字典,键是注释类型,值是每个残基序列注释的列表
annotations:序列附件信息的字典。键是信息的类型,值包含信息
features:是SeqFeature对象的列表

2.1 读取序列文件 。
只包含一个序列条目的文件,Bio.SeqIO.read(文件句柄,序列格式) #最新版都可以直接用文件,不过用with 句柄也可以更加规范 如:

>>> from Bio import SeqIO
>>> record = SeqIO.read("Fasta/f001", "fasta")
>>> print("%s %i" % (record.id, len(record)))
gi|3318709|pdb|1A91| 79
多条序列的文件,Bio.SeqIO.parse(文件句柄,序列格式),返回SeqRecord 对象迭代器如:
from Bio import SeqIO
for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"):
print seq_record.id
print repr(seq_record.seq)
print len(seq_record)
还可以用next() 遍历序列条目
如:from Bio import SeqIO
record_iterator = SeqIO.parse("ls_orchid.fasta", "fasta")

first_record = record_iterator.next()
print first_record.id
print first_record.description

second_record = record_iterator.next()
print second_record.id
print second_record.description

保存为序列条目列表 list()即可
from Bio import SeqIO
records = list(SeqIO.parse("ls_orchid.gbk", "genbank"))

print "Found %i records" % len(records)

print "The last record"
last_record = records[-1]

2.2 提取序列条目信息
annotations 属性 得到序列条目的注释信息如:
print first_record.annotations

2.3 gzip文件提取,先gzip模块得句柄,再操作
>>> import gzip
>>> from Bio import SeqIO
>>> handle = gzip.open("ls_orchid.gbk.gz", "r")
>>> print sum(len(r) for r in SeqIO.parse(handle, "gb"))
67518
>>> handle.close()

2.4 保存序列文件到字典,默认序列id作为key,value是序列的Seq对象
Bio.SeqIO.to_dict()内存占用大,每个条目以 SeqRecord 对象形式存储在内存中,你修改这些条目。
Bio.SeqIO.index() 处于中间水平,类似于只读字典,当需要时解析序列到 SeqRecord 对象。
Bio.SeqIO.index() ,工作原理上略有不同。尽管仍然是返回一个类似于字典的对象,它并不将所有的信息存储在内存中。相反,它仅仅记录每条序列条目在文件中的位置 - 当你需要读取某条特定序列条目时,它才进行解析。注:index()只接受文件名,不接受句柄。如:
>>> from Bio import SeqIO
>>> orchid_dict = SeqIO.index("ls_orchid.gbk", "genbank")
>>> len(orchid_dict)
94
Bio.SeqIO.index_db() 也类似于只读字典,但是将文件中的ID和文件偏移值存储到硬盘(SQLite3数据库),这意味着它对内存需求很低(请见第 5.4.3 节),但会慢一点。
如:>>> from Bio import SeqIO
>>> orchid_dict = SeqIO.to_dict(SeqIO.parse("ls_orchid.gbk", "genbank"))

2.5 来自 Bio.SeqIO.index() 的字典样对象以 SeqRecord 对象形式返回序列条目。但是,有时候从文件中直接获取原始数据非常有用。对于此种情况,使用 get_raw() 方法获取文件原始数据,方便选择序列再写入

>>> from Bio import SeqIO
>>> uniprot = SeqIO.index("uniprot_sprot.dat", "swiss")
>>> handle = open("selected.dat", "w")
>>> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
... handle.write(uniprot.get_raw(acc))
>>> handle.close()

2.6 序列写入,序列文件格式转换
Bio.SeqIO.write() 输出序列(写入文件)。该函数需要三个参数:某些 SeqRecord 对象,要写入的句柄或文件名,和序列格式

from Bio import SeqIO
records = SeqIO.parse("ls_orchid.gbk", "genbank")
count = SeqIO.write(records, "my_example.fasta", "fasta")
print "Converted %i records" % count
或:
from Bio import SeqIO
count = SeqIO.convert("ls_orchid.gbk", "genbank", "my_example.fasta", "fasta")
print "Converted %i records" % count

原文地址:https://www.cnblogs.com/koujiaodahan/p/8443992.html

时间: 2024-08-28 06:32:46

Biopython SeqIO 读取序列文件,读取信息,写入序列的相关文章

javascript读取xml文件读取节点数据的例子

分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject

采用OleDB读取EXCEL文件 读取数字后,字符串无法读取

很多人采用OleDB读取EXCEL文件的时候会发现,当一列数据以数字开头的时候,后面的字符串无法读取,今天就给大家分享一下解决此问题的小窍门. 1.把列标题当做数据来读取(HDR=NO设置把第一行当做数据而不是表头来处理):  string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" +                     &

Java读取txt文件和覆盖写入txt文件和追加写入txt

package thread; import java.io.*; public class hh { /** * 创建文件 * @param fileName * @return */ public static boolean createFile(File fileName)throws Exception{ try{ if(!fileName.exists()){ fileName.createNewFile(); } }catch(Exception e){ e.printStackT

使用Lucene的IndexReader读取索引文件的信息

/*前面学习了创建索引的方法是IndexWriter,这里所使用的是读取所创建的 * 索引的方法IndexReader. * 和他的子类 * MultiReader * */ package indexReader; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import o

C# 读取Excel文件,并写入word模板文档

1.该程序是一个win32控制台程序 2.开发工具是VS2010,office是2013版的 3.需要添加以下引用 4 在C盘保存.dot模板,样式如下 6.excel中的数据格式,最好都设置为常规. 具体的代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using

Linux 读取 (*.xls)文件读取,使用libxls库

首先下载libxls,项目地址:http://sourceforge.net/projects/libxls/,备用下载:libxls-1.4.0.zip 解压后使用: ./configure --prefix=/usr make sudo make install 但是注意的是 必须是2003 版本的 ×××.xls ,但是不限制是windows 还是ubuntu 原文地址:https://www.cnblogs.com/wanghuixi/p/8948268.html

html外部文件读取/写入

1.文件的读取 外部文件读取控件: <input type="file" id="file_jquery" onchange="file_jquery(this.id)"/> 调用函数: function file_jquery(id){ var a = $("#"+id); var selectedFile = $("#"+id)[0].files[0]; console.log(a); co

【学习ios之路:UI系列】iOS沙盒机制,文件读取,归档与反归档

1.IOS中的沙盒机制 IOS中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 特点: 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.如下图

生成器来解决大文件读取,大数据下载

目录 场景 下载文件 读取大文件 场景 电商平台想要导出一年的报表数据,数据可能有百万,平常的做法是查出所有数据放到数组或对象中,再进行excel导出,一般情况下,数据不是很多这种是没什么问题,但百万级别的数据一下读到内存中,服务器会一下崩溃,内存溢出.通常情况下也不会做这种需求,产品提出来你可以骂两句怼回去,但老板说我就需要这个功能,你苦口婆心说几句,但是还是要做啊.生成器可以帮我做到这些,理解概念可以看看这里. 下载文件 //实现下载大文件,解决内存溢出 public function ac

纯C#,读取shp文件转json,arcgis api for js 3.x可加载

public static void FeaturesToJSON(string shpName) { int ShapeType;//shp文件类型,点1 线3 面5 double[] fileBox = new double[4]; List<int> partsArr = new List<int>();//多部分的 List<double> coorsArr = new List<double>();//坐标 fileBox[0] = double.