生物信息基础:pysam读写基因组文件

news2024/11/29 4:22:11

Pysam[1]是一个 Python 模块,它打包了高通量测序库htslib[2]的 C-API,可用于读写基因组相关文件,如 Fasta/Fastq,SAM/BAM/CRAM,VCF 等。本文以 Fasta/Fastq 文件的读写为例,介绍 Pysam 的用法,详细教程请查看官网。

Install

pip install pysam
或者
conda install pysam

Fasta files

对于 Fasta 文件,可以实现随机访问,前提是要先创建 faidx 索引。

import pysam

# 构建FastaFile对象,随机访问需要先创建faidx,没有的话在这里会自动创建faidx
fa = pysam.FastaFile("ex1.fa")

# Fasta文件中序列的数量,结果是一个整数
print("number of reference sequences: %d" % fa.nreferences)

# Fasta文件中序列的名称,结果是一个列表
print("names of reference sequences: " + ",".join(fa.references))

# Fasta文件中序列的长度,结果是一个列表
print("lengths of reference sequences: " + ",".join([str(i) for i in fa.lengths]))

# 这里是关键,用fetch函数随机读取序列
# 1. 提取整条序列
chr2 = fa.fetch("chr2")
print("Random fetch chr2 sequence:\n%s" % chr2)

# 2. Python风格半开区间:提取chr2位置11-20之间的碱基
# 半开区间碱基位置编号从0开始,(10, 20),其中包含位置10,不包含位置20
front1 = fa.fetch("chr2", 10, 20)
print("Python style region(chr2, 10, 20): %s" % front1)

# 3. Samtools风格闭区间:提取chr2位置11-20之间的碱基,碱基位置编号从1开始
front2 = fa.fetch(region="chr2:11-20")
print("samtools style region(chr2:11-20): %s" % front2)

结果显示:

number of reference sequences: 2
names of reference sequences: chr1,chr2
lengths of reference sequences: 1575,1584
Random fetch chr2 sequence:
TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAG
CTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCT
...

Python style region(chr2, 10, 20): CTTCTGTAAT
samtools style region(chr2:11-20): CTTCTGTAAT

Fastx files

顺序访问 Fasta/Fastq 文件。

import pysam

with pysam.FastxFile("ex1.fa") as fh:
    for record in fh:
        print(record.name)
        print(record.sequence)
        print(record.comment)
        print(record.quality)

with pysam.FastxFile("ex1.fa") as fin, open("out.fa", 'w') as fout:
    for record in fin:
        fout.write(str(record) + "\n")

结果如下:

>chr1
CACTAGTGGCTCATTGTAAATGTGTGGTTTAACTCGTCCATGGCCCAGCATTAGGGAGCT
GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCAC
...
>chr2
TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAG
CTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCT
...

SAM/BAM/CRAM files

序列比对文件操作一般用 samtools 软件。

VCF files

变异文件操作一般用 bcftools 软件。

Tabix files

对于 TAB 键分隔的基因组位置文件(BED, SAM, GFF, VCF),可用tabix软件创建索引,然后随机访问。

写在后面

Pysam 作为一个轮子读写基因组相关文件很好用,可以替代 Biopython 的这部分功能。。

但其实现方式是通过 Cython,Python 代码中混合 C 语言代码,说实话这种代码看着非常头大,我宁愿单独用 C/C++写好相关程序,然后通过 Python 来调用。

参考资料

[1]

Pysam: https://pysam.readthedocs.io/en/latest/index.html

[2]

htslib: http://www.htslib.org/

关于简说基因

  • 生信平台

    Galaxy中国(UseGalaxy.cn)致力于打造中国人的云上生物信息基础设施。大量在线工具免费使用。无需安装,用完即走。活跃的用户社区,随时交流使用心得。

  • 生信培训

    简说基因的生信培训班,荣获学员的一致好评。如果你也对生物信息学感兴趣,欢迎来跟简说基因,学真生信

  • 生信分析

    我们能够承接所有 NGS 组学数据分析业务,包括但不限于 WGS / WES / RNA-seq 等。基因组组装、注释,以及各种重测序业务都可以与简说基因合作。

505f3146b7b3510cb937b11a1f3ce63f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更新Ubuntu并同步网络时间

ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(九)——更新Ubuntu并同步网络时间 文章目录 Ubuntu系统环境搭建(九)——更新Ubuntu并同步网络时间1.更新Ubuntu1.1 查看ubuntu版本和详细信息1.2 创建root用户1.3 更…

Maven error in opening zip file?maven源码debug定位问题jar包

文章目录 问题发现调试Maven1. 查看maven版本2. 下载对应版本的maven源码3. 打开maven源码,配置启动选项 启动maven debug模式进入maven 源码,打断点调试找jar包算账 已录制视频 视频连接 问题发现 最近使用maven分析jar包的时候遇到了一个很搞的问题。…

智慧文旅运营综合平台:重塑文化旅游产业的新引擎

目录 一、建设意义 二、包含内容 三、功能架构 四、典型案例 五、智慧文旅全套解决方案 - 210份下载 在数字化浪潮席卷全球的今天,智慧文旅运营综合平台作为文化旅游产业与信息技术深度融合的产物,正逐渐显现出其强大的生命力和广阔的发展前景。 该…

mfc110.dll丢失是什么意思?全面解析mfc110.dll丢失的解决方法

在使用计算机的过程中,用户可能会遭遇一个常见的困扰,即系统提示无法找到mfc110.dll文件。这个动态链接库文件(DLL)是Microsoft Foundation Classes(MFC)库的重要组成部分,对于许多基于Windows的…

Java多线程并发篇----第二十六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Executors 框架?二、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?三、什么是 Callable 和 Future?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

海外媒体发稿:满足要求的二十个爆款文案的中文标题-华媒舍

爆款文案是指在营销和推广方面非常受欢迎和成功的文案。它们能够吸引读者的眼球,引发浏览者的兴趣,最终促使他们采取行动。本文将介绍二十个满足要求的爆款文案的中文标题,并对每个标题进行拆解和描述。 1. "XX 绝对不能错过的十大技巧…

专题篇|国芯科技系列化布局车载DSP芯片,满足不同层次车载音频产品的需求

随着高端DSP芯片产品CCD5001的亮相,国芯科技也在积极布局未来的DSP系列芯片群。通过深入研究不同车型音频处理需求,对比国外DSP产品综合性能和成本,国芯科技未来将推出全新DSP芯片家族,包括已经推出的高端产品CCD5001,…

vector讲解

在学习玩string后我们开始学习vector,本篇博客将对vector进行简单的介绍,还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构,但是vector是由C编写而成的,他和数组也有本质上的区别&#xff…

排序算法整理

快速排序 C实现 void fastStore(int *a, int start, int end){if(start>end)return ;int leftstart;int rightend;int tempa[left];//设置基准值tempwhile(left < right) //左指针的位置一定小于右指针的位置{while(a[right]>temp && left < right) //左…

VRRP协议负载分担

VRRP流量负载分担 VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。与主备备份方式不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加…

linux(七):I2C(touch screen)

本文主要探讨210触摸屏驱动相关知识。 I2C子系统 i2c子系统组成部分:I2C核心,I2C总线驱动,I2C设备驱动 I2C核心&#xff1a;I2C总线驱动和设备驱动注册注销方法 I2C总线驱动&#xff1a;I2C适配器(I2C控制器)控制,用于I2C读写时序(I2C_adapter、i2c_a…

树的一些经典 Oj题 讲解

关于树的遍历 先序遍历 我们知道 树的遍历有 前序遍历 中序遍历 后序遍历 然后我们如果用递归的方式去解决&#xff0c;对我们来说应该是轻而易举的吧&#xff01;那我们今天要讲用迭代&#xff08;非递归&#xff09;实现 树的相关遍历 首先呢 我们得知道 迭代解法 本质上也…

微信小程序(九)轮播图

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.轮播容器的基本属性 2.轮播图片的尺寸处理 index.wxml <view class"navs"><text class"active">精选</text><text>手机</text><text>食品</text><…

第6章 现代通信技术

文章目录 6.1 图像与多媒体通信6.1.1 图像通信6.1.2 多媒体通信技术1、多媒体通信概念2、多媒体通信的组成3、多媒体通信的业务分类4、实用化的多媒体通信系统类型5、多媒体通信应用系统&#xff08;1&#xff09;多媒体会议电视系统&#xff08;2&#xff09;IPTV 6.2 移动通信…

C++——函数

1&#xff0c;概述 函数的作用&#xff1a;将一段经常使用的代码封装起来&#xff0c;减少重复代码 一个较大的程序&#xff0c;一般分为若干个程序块&#xff0c;每个模块实现特定的功能。 2&#xff0c;函数的定义 函数的定义一般主要有五个步骤&#xff1a; 1&#xff…

69.使用Go标准库compress/gzip压缩数据存入Redis避免BigKey

文章目录 一&#xff1a;简介二&#xff1a;Go标准库compress/gzip包介绍ConstantsVariablestype Headertype Reader 三&#xff1a;代码实践1、压缩与解压工具包2、单元测试3、为何压缩后还要用base64编码 代码地址&#xff1a; https://gitee.com/lymgoforIT/golang-trick/t…

USB-C接口给显示器带来怎样的变化?

随着科技的不断发展&#xff0c;Type-C接口已经成为现代电子设备中常见的接口标准。它不仅可以提供高速的数据传输&#xff0c;还可以实现快速充电和视频传输等功能。因此&#xff0c;使用Type-C接口的显示器方案也受到了广泛的关注。本文将介绍Type-C接口显示器的优势、应用场…

基于C++11的数据库连接池【C++/数据库/多线程/MySQL】

一、概述 概述&#xff1a;数据库连接池可提前把多个数据库连接建立起来&#xff0c;然后把它放到一个池子里边&#xff0c;就是放到一个容器里边进行维护。这样的话就能够避免数据库连接的频繁的创建和销毁&#xff0c;从而提高程序的效率。线程池其实也是同样的思路&#xf…

Mysql 编译安装部署

Mysql 编译安装部署 环境&#xff1a; 172.20.26.198&#xff08;Centos7.6&#xff09; 源码安装Mysql-5.7 大概步骤如下&#xff1a; 1、上传mysql-5.7.28.tar.gz 、boost_1_59_0.tar 到/usr/src 目录下 2、安装依赖 3、cmake 4、make && make install 5、…

【React】组件性能优化、高阶组件

文章目录 React性能优化SCUReact更新机制keys的优化render函数被调用shouldComponentUpdatePureComponentshallowEqual方法高阶组件memo 获取DOM方式refs如何使用refref的类型 受控和非受控组件认识受控组件非受控组件 React的高阶组件认识高阶函数高阶组件的定义应用一 – pro…