生信分析Python编程高级技巧

Python实现生物信息学分析全流程:从FASTA到差异表达 生物信息学分析是基因组学研究的重要环节,涉及序列获取、质量控制、比对和差异表达分析等多个步骤。Python凭借其丰富的工具库(如Biopython)和强大的数据处理能力,成为实现自动化分析流程的首选语言。本文以RNA-seq数据分析为例,详细介绍了从FASTA文件处理到基因表达差异分析的完整流程,包括环境配置、工具选型、序列比对(HISAT2)、定量分析(HTSeq)以及差异表达分析(基于SciPy)。流程特别适合中小规模数据处理,可在普通计算设备上运行,为科研人员提供了一套高效、轻量级的解决方案。 阅读详情

1. 使用statistics模块进行统计运算

statistics 模块是 Python 标准库的一部分,专门用于执行基本的统计运算

import statistics
import random

random.seed(123)
list_num = [random.randint(1,10) for _ in range(5)]
print(list_num)
# [1, 5, 2, 7, 5]

# 平均数
mean = statistics.mean(list_num)
# 中位数
median = statistics.median(list_num)
# 标准差
std = statistics.variance(list_num)
# 众数
mode = statistics.mode(list_num)

print(f"mean: {mean}")
print(f"median: {median}")
print(f"std: {std}")
print(f"mode: {mode}")

# [1, 5, 2, 7, 5]
# mean: 4
# median: 5
# std: 6
# mode: 5

2. 使用策略模式

将算法实现和使用分开,使得算法变化时不影响其他的代码运行。

实现分为以下三步:

策略接口:定义了所有支持的算法的公共接口;
具体策略:实现了策略接口的具体算法或方法;
上下文:使用策略对象来调用具体算法。

from abc import ABC, abstractmethod

class MappingMethod(ABC):
    """定义策略接口"""
    @abstractmethod
    def mapping(self, method):
        pass
    
class BwaMem(MappingMethod):
    """bwa mem比对具体策略"""
    def mapping(self):
        return "Using bwa mem..."
    
class Bowtie2(MappingMethod):
    """bowtie2比对具体策略"""
    def mapping(self):
        return "Using bowtie2..."
    
class Alignment():
    """上下文类"""
    def __init__(self, method: MappingMethod):
        self._method = method
        
    def set_method(self, method: MappingMethod):
        self._method = method
        
    def run_alignment(self):
        return self._method.mapping()
    
if __name__ == '__main__':
    
    # 比对实例
    alignment = Alignment(BwaMem())
    print(alignment.run_alignment()) 
    
    # 切换为bowtie2比对
    alignment.set_method(Bowtie2())
    print(alignment.run_alignment())
    
	# Using bwa mem...
	# Using bowtie2...

3. 使用字段访问元组

使用字段访问元组, 避免使用索引直接访问元组。

from collections import namedtuple

# 创建namedtuple,包含sample_id和sample_name 2个字段
dtuple = namedtuple('sample_info', ['sample_id', 'sample_name'])

# 实例化dtuple对象
sample_dtuple = dtuple("sample-01", 'test')

# 访问字段
print(sample_dtuple.sample_id)
print(sample_dtuple.sample_name)
# sample-01
# test

4. 使用deque操作队列

deque是一个双端队列,支持从两端添加和删除元素, deque比列表处理队列效率更高。

from collections import deque

# 创建双端队列
queue = deque(['sample1', 'sample2', 'sample3'])
print(queue)

# 左侧添加元素和右侧添加元素
queue.appendleft('sample0')
queue.append('sample4')
print(queue)

# 左侧删除元素和右侧删除元素
queue.popleft()
queue.pop()
print(queue)


# deque(['sample1', 'sample2', 'sample3'])
# deque(['sample0', 'sample1', 'sample2', 'sample3', 'sample4'])
# deque(['sample1', 'sample2', 'sample3'])

5. 使用decimal模块设置计算的精度

from decimal import Decimal, getcontext

# 设置精度
getcontext().prec = 3

a = Decimal('1.21212')
b = Decimal('1.323')

print(a+b)
# 2.54

6. 使用协程实现并行运行

import asyncio
import time
import os 

async def run_fastq_qc(fastq_path: str):
    print( f"Run fastqc, input fastq path: {fastq_path}")
    await asyncio.sleep(1)
    print( f"Finiash fastqc!")

async def run_mapping(fastq_path: str):
    print(f"Run bwa mem mapping, input fastq path: {fastq_path} ")
    await asyncio.sleep(3)
    print(f"Finish bwa mem mapping!") 
    
async def run_async(fastq_path: str):
    await asyncio.gather(run_fastq_qc(fastq_path), run_mapping(fastq_path))

asyncio.run(run_async(fastq_path="/path/sample.fastq"))

其他Python相关文章

生信数据分析高效Python代码

生信开发中的多进程和多线程编程

轻量级TinyDB数据库文件写入和增删改查操作

Python处理生信分析流程配置文件4种方法

生物信息Python-从入门到精通? Python开发的方向太多了,有机器学习,数据挖掘,网络开发,爬虫等等。其实在生信领域,Python还显现不出绝对的优势,生信的大部分软件流程都是用shell或Perl写的,而且已经足够好用了。我选Python是因为我想顺便学点数据挖掘和机器学习的东西,而且Python这些年越来越火,发展势头远超其他脚本语言,所以学它肯定是没错的。 一、入门标准 入门比较难定义,什么程度才算入门呢? ... 阅读详情

相关推荐

生信网站整理

生信网站整理前言生信课程和推荐博客语言PythonRPerl生信分析流程案例GWAS甲基化其他 前言 在生信学习过程中我保存了很多网站,但是因为没有对网站进行记录和管理经常找不到需要的信息,在这篇博客中将汇总我收藏的生信相关网站(持更)。 生信课程和推荐博客 这部分网站为大佬分享/大学开设的生信相关课程资料: HarvardX Biomedical Data Science Open Onlin...

ruby912的博客 2197

python做生物信息学分析_Python从零开始第五章生物信息学①提取差异基因

目前来说,做生物信息学的人越来越多,但是我觉得目前而言做生信的主要有三类人:老本行是做实验的,做生信可能是为了辅助研究或者是为了发paper(有非常多的临床生选择趟生信这波水)主要是做生信的,主要涵盖高通量测序数据分析,组学数据分析等等,专门从事生物学数据分析的这群人,其大部分也是本科生物狗作为强大的生力军,以调包写R,python为主。那么这群人就要熟悉看各种包的tutorial以及如何进行常规...

weixin_34737066的博客 5215

生信分析用python还是r_生信分析利器:JupyterLab

生信分析对计算机的开发环境有诸多要求,随之而来的自然就是很多麻烦。不说别的,要兼顾 Python 和 R 的问题就有够头疼。一边想着用 Python 搭流程处理文本和分析结果,另一边还想着用 R 来做统计分析和画图,而且大多数时候生信分析还得在服务器上完成。Python 你用 Pycharm,R 用 Rstudio,一会这儿一会那儿的切来切去,还得设置服务器连接(Pycharm 如果不是付费版本,...

weixin_39612726的博客 2150

用Python做生信分析--环境配置

【代码】用Python做生信分析--环境配置以哦见状。

最棒的yee 1038

生信分析常用编程语言汇总

0525 Cloudy 说到编程语言,其实大致可以分成两种,一种是计算机编译器语言,比方说C,C++,优点在于基于计算机硬件特点编写,可以使代码有效高速的运行,特别适合大规模复杂的计算。日常用到的程序有很多,比方说其中之一就是大名鼎鼎的BLAST。还有一种是脚本语言,小到中等规模的计算和数据操作时会经常用到,这个时候用C可以说是用牛刀杀鸡。用编译器语言编写的工具绝大多数情况下除了需要参数设置以外都可以直接使用。比起编译器语言,生信分析中给我们带来阻碍更多的是脚本语言。 当然也不是说每一个编程语言都需要用的风

一台没有感情的知识吸尘器 2276

Conda及常用生信软件安装

1 Conda安装 1.1 Conda介绍 Conda是一种开源的软件包和环境管理软件,用于安装和转换不同版本的软件包及环境。其专为Python设计,可用于Mac、Linux和Windows系统。 Conda有两个主要的版本,Anaconda和Miniconda,前者包含一些常用软件包,后者是精简版,根据需要安装软件包。考虑到用于生信工作一些常用包反而可能并不常用,我个人建议下载精简版。 Miniconda下载地址:https://conda.io/minicond...

invalidsyntax的博客 2860

生信分析用python还是r_生信分析中常用的R语句

一、前言好难受,今天的R崩了、昨天才安装的包怎么报错了、为啥我装了这个包没反应,什么鬼怎么又乱码了。这玩泥巴(╯‵□′)╯︵┻━┻不行要佛系生活,好久没写简书了,还是来整理下代码吧┬—┬ノ('-'ノ)二、常见的生信分析代码整理今天要说的事如题,这些都是本人完成的流程中非常常见的R代码,以下一一整理并为其注释,没事就经常翻阅这些代码瞧瞧。不过话说回来,R真的好垃圾啊(/‵Д′)/~ ╧╧老板来了,我...

weixin_39600447的博客 1615

Python高级编程技巧与实战

Python高级编程技巧涵盖了数据结构、算法、异步编程、元编程、性能优化与调试等多个方面。通过掌握这些技巧,开发者可以编写出更高效、更可维护的代码。希望本文能为Python开发者提供有益的参考和指导,助力大家在编程之路上不断前行。

shejizuopin的博客 802

python 生信分析_提速Python!无论生信分析还是数据分析

提速Python运算速度对于生物信息来说非常重要,因为大部分情况下,我们需要自己写代码来提取数据和处理格式,再加上生信领域内的原始数据动辄几千万行,最少也得数万行的基因注释,所以最快地拿到想要的结果才是老板们想要的。解释型语言(python,perl等)的平均速度远远不如编译型语言(C,C++,Java等),但解释型语言胜在语法简单明了,代码量少,效率高,很快能处理数据、分析并得到结果,虽然没法比...

weixin_39724441的博客 925

生物信息python中文版.pdf

生物信息分析&&python脚本开发,适合生物信息行业的编程爱好者。

S/4中的16种特殊库存类型

S/4中的16种特殊库存类型

yanzibing99的博客 1万+

生信宝典文章集锦,一站式学习生信!众多干货,有趣有料

生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频...

悟道西方 3222

硬件单板类机考复习提纲

6、 功率晶体管低导通损耗时处于的状态(饱和状态、放大状态、截止状态)(放大器的采样频率特性)总结:元器件特性(电阻、电容、二极管、三极管、晶体、晶振、MOS、磁珠等)信号质量问题产生根因(单调性、边沿过缓、毛刺、回沟、抖动等)3、 几种电容容量范围大小(超级电容、钽电容、陶瓷电容、铝电容)66、背板连接器接触设计的接触顺序(先导向、再地针、最后信号针)28、逻辑电平接口的特性(CMOS、TTL、ECL、PECL)76、差分电平(lvpecl、RS-422/485、cml)

2303_79562407的博客 1万+

分享一些可以提升生信分析效率的vscode插件

让你的vscode更加好用的插件!

水木的编程生涯 1815

联想X3650M5服务器双模式切换实战:UEFI与Legacy BIOS如何选择?

本文深入探讨了联想X3650 M5服务器在UEFI与Legacy BIOS启动模式间的选择策略。文章从技术原理、决策矩阵、实战切换步骤及后期验证等方面,为企业IT管理员提供了基于操作系统兼容性、存储架构、安全合规与运维习惯的完整决策框架,帮助其在数据中心硬件生命周期管理中做出明智选择。

weixin_29207533的博客 281

华为 S2600T 存储 3 种网络端口(H4/H5/串口)用途解析与故障恢复实战

本文深度解析华为S2600T存储设备的三种关键网络端口(H4/H5/串口)的功能用途与故障恢复方法。通过详细的配置指南和实战案例,帮助管理员掌握管理接口(H4)的日常运维、维护接口(H5)的高级应用以及串口的应急操作,提升存储设备的可靠性和维护效率。

weixin_30899023的博客 332

生信分析案例 Python简明教程 | 视频11

开源生信 Python教程生信专用简明 Python 文字和视频教程源码在:https://github.com/Tong-Chen/Bioinfo_course_python目录背景介绍编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法数值变量操作字符串变量操作列表操作集合操作Range使用字典...

悟道西方 490

【AUTOSAR-DEM】-2.1-APP SWC设置UDS/OBD DTC检出和恢复

点击返回「《Autosar_BSW高阶配置》总目录」 案例背景(共6页精讲): DEM模块提供两种不同类型的Event: • BSW-related events:DEM_EVENT_KIND_BSW(通过C-API报告 - Dem_SetEventStatus) • SW-C-related events:DEM_EVENT_KIND_SWC(通过RTE operation - SetEventStatus) 下面我们讲讲在APP SWC中设置BusOff(总线关闭) DTC故障成立/恢复(其它

「汽车电子助手」的博客 3940

生信分析案例 Python简明教程 | 视频14

开源生信 Python教程生信专用简明 Python 文字和视频教程源码在:https://github.com/Tong-Chen/Bioinfo_course_python目录背景介绍编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法数值变量操作字符串变量操作列表操作集合操作Range使用字典...

悟道西方 406

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7023

PX4实战(四):PX4 uorb模块详解

本节主要讲解PX4中的uorb消息,主要包括uorb的基本概念使用、PX4内重要的uorb消息、如何自定义uorb消息以及使用uorb消息的注意点等,其中讲解重要uorb消息是为了对PX4内重要数据结构有初步的了解,有助于后期算法理解。uORB(micro Object Request Broker)是PX4中用于模块间通信的轻量级发布-订阅(Publish/Subscribe)机制。模块之间可以通过uORB传递消息,无需直接调用对方函数;提高系统模块化与解耦性;

PX4-SLAM-PNC 1928

学习生信的系列教程 | 留言您是如何学习生信的免费获取北大出版《Python数据分析》书籍...

生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视...

悟道西方 1103

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

生信软件41 - GATK经典使用方法合集

GATK经典使用方法合集

LittleComputerRobot的博客 1688

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python 生信分析_生信分析之<Python>学习1

一、什么是Python?python为解释性语言,直接运行。之前学的java为编译型语言,需要编译后再运行。所以python运行效率相比java、c语言低一点,但是使用更便捷。目前生信分析,大多是直接使用java写好的软件。同时生信医疗AI分析更需要Python的参与!二、如何在Mac系统中安装Python。mac自带安装的是2.7版本。如何安装、启用python3呢?1、进入python官网下载...

weixin_39823200的博客 1013

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Biomamba生信基地全内容索引

目前Biomamba生信基地最大的矛盾就是菜逼Biomamba孱弱的能力与日益增长的粉丝需求之间的矛盾。早期的很多分析都已然是青椒,面临着基金申报的压力。,以后不定期更新,方便大家获快速获得自己需要的教程。当然,最好的方式还是按照自己的需求直接用关键词在公众号中检索。总有同学在添加我们时询问我们有哪些教程,这很难回答,毕竟我们光原创内容就有。我们的公众号有一部分订阅内容,下面列出来给大家,我们目前开放终身订阅~欢迎各界人士的交流与合作,一同开启生物信息学之旅。

weixin_47195452的博客 1244

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 生信软件37 - 基于测序reads变异进行单倍型分型工具WhatsHap
下一篇: 生信机器学习入门5 - 构建决策树(Decision Tree)和随机森林(Random Forest)分类器
生信与基因组学
博客等级 码龄9年 7202粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信与基因组学

每一份鼓励是我坚持下去动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值