生信数据分析高效Python代码

R语言生信作图代码集合大全 1.利用R语言从多种给癌症中画基因在癌症中的表达的箱线图和小提琴图。 rna_cancer_sample <- read.delim("D:/desk_user/morning/TCGA_ALL/rna_cancer_sample.tsv") View(rna_cancer_sample) typeof(rna_cancer_sample$Gene) [1] "integer" t2=as.... 阅读详情

1. Pandas + glob获取指定目录下的文件列表

import pandas as pd
import glob

data_dir = "/public/data/"
# 获取文件后缀为.txt的文件列表
df_all = pd.concat([pd.read_csv(f, sep='\t') for f in glob.glob(data_dir + '*.txt')])
print(df_all)

2. 使用 enumerate 函数获取索引和值

# A-K 字母列表
letter = [chr(ord('A') + i) for i in range(0, 11)]

# 输出索引和值
for idx, value in enumerate(letter):
    print(f"{idx}\t{value}")

3. 使用 zip 函数同时遍历多个列表

# 0-10 数字列表
number = [n for n in range(0, 11)]
# A-K 字母列表
letter = [chr(ord('A') + i) for i in range(0, 11)]

for number, letter in zip(letter, number):
    print(f"{letter}: {number}")
    
# 0: A
# 1: B
# 2: C
# 3: D
# 4: E
# 5: F
# 6: G
# 7: H
# 8: I
# 9: J
# 10: K

5. 使用uuid生成唯一编号

import time
import uuid

run_id = (time.strftime("%Y%m%d%H", time.localtime()) + str(uuid.uuid1())[:4])[2:]
print(run_id)
# 24052909e1f9

6. 快速生成24条染色体名称列表

list_chrom = ['chr' + str(i) for i in range(1, 23)] + ['chrX', 'chrY']
print(list_chrom)
# ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', 'chr11', 'chr12', 'chr13', # 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY']

7. pandas+os库合并相同列文件

import os
import pandas as pd

# 搜索目录
search_dir = './'
# 文件路径列表
list_files = [search_dir + f for f in os.listdir(search_dir) if f.endswith('.txt')]

# 合并全部文件
for idx, file_path in enumerate(list_files):
    df_tmp = pd.read_csv(file_path, sep='\t')
    
    if idx == 0:
        df_merge = df_tmp
    else:
        # df_tmp行数据加入df_merge
        df_merge = pd.concat([df_merge, df_tmp], axis=0)

df_merge.to_csv(search_dir + 'merge.txt', sep='\t', index=False)

8. 内置函数map + filter 过滤数据

number = [n for n in range(0, 11)]

# 获取平方数
squared_numbers = list(map(lambda x: x**2, number)
print(squared_numbers) 
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 获取偶数
even_numbers = list(filter(lambda x: x % 2 == 0, number))
print(even_numbers)
# [0, 2, 4, 6, 8, 10]

9. 使用concurrent.futures模块实现循环的并发处理,提高计算效率

import concurrent.futures
def square(num):
    return num ** 2

with concurrent.futures.ThreadPoolExecutor() as executor:
    res = list(executor.map(square, number))
    
print(res)

10. 使用asyncio模块实现异步处理,提高并发性能

import asyncio
import math
async def sqrt(num):
    return math.sqrt(num)

async def calculate():
    run_tasks = [sqrt(num) for num in number]
    
    results = await asyncio.gather(*run_tasks)
    print(results)

asyncio.run(calculate())

11. 程序运行分析装饰器

import time

def analysis_time(func):
    def warpper(*args, **kwargs):
        start_time = time.time()
        res = func(*args, *kwargs)
        end_time = time.time()
        print(f"{func.__name__} program run time: {end_time - start_time}s")
        return res
    return warpper

# 并行计算
import concurrent.futures
def square(num):
    return num ** 2
    
@analysis_time
def calulate(number):
    with concurrent.futures.ThreadPoolExecutor() as executor:
        res = list(executor.map(square, number))
        return res

print(calulate(number))
# calulate program run time: 0.002947568893432617s
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

12. 读取文本文件的\t分割内容至列表

# 读取文本文件的\t分割内容至列表
table = []
for line in open('data.txt','r'):
    table.append(line.strip().split('\t'))
    
print(table)

13. 写入列表内容至文本文件

table = [
    ['protein', 'ext1', 'ext2', 'col3'],
    [0.16, 0.038, 0.044, 0.040],
    [0.33, 0.089, 0.095, 0.091],
    [0.66, 0.184, 0.191, 0.191],
    [1.00, 0.280, 0.292, 0.283],
    [1.32, 0.365, 0.367, 0.365],
    [1.66, 0.441, 0.443, 0.444]
    ]

out = ''
for row in table:
    line = [str(cell) for cell in row]
    out = out + '\t'.join(line) + '\n'
    # print(type(out))
    # print(type(line))
    
open('output.txt', 'w').write(out)

14. pandas读取VCF文件

import pandas as pd
import os

# 跳过##开头行
df_vcf = pd.read_table(vcf_path, sep='\t', 
                       skiprows=int(os.popen(f"grep '^##' {vcf_path}|wc -l").read()))

15. 获取linux服务器最大逻辑CPU数和物理CPU数

# 根据物理和逻辑CPU返回线程数
# 实际使用线程数不超过服务器最大支持数
def get_max_process(threads_using: int, cpu='logic'):
    if cpu == 'logic':
        # 逻辑CPU数量
        cpu_number = int(os.popen("cat /proc/cpuinfo | grep processor | wc -l").read()) - 1 
    elif cpu == 'physical':
        # 物理CPU数量
        cpu_number = int(os.popen("cat /proc/cpuinfo | grep 'cpu cores' | uniq | awk '{print $4}'").read())
    else:
        raise Exception("ERROR CPU INPUT!")

    return cpu_number if threads_using > cpu_number else threads_using


get_max_process(threads_using=30)

16. 根据染色体对dataframe进行排序


# 染色体排序函数
def chrom_order(chrom):
    order = {str(k):k for k in range(1,23)}
    order.update({"X":23, "Y":24})
    return order.get(str(chrom).replace("chr", ""), 25)

# 将Chromosome的染色体重新映射为1-24数字
df["Chrom"] = df["Chromosome"].apply(chrom_order)
df = df.sort_values("Chrom").reset_index(drop=True)

排序

17. pandas读取多种格式文件

import pandas as pd

def read_dataframe(file_path):
    if file_path.endswith('.xlsx'):
        return pd.read_excel(file_path)
    elif file_path.endswith(('.tsv', '.txt')):
        return pd.read_csv(file_path, sep='\t')
    elif file_path.endswith('.csv'):
        return pd.read_csv(file_path, sep=',')
    else:
        raise Exception("ERROR FORMAT!")

18. gzip读取gz文件以及写入文本文件

import gzip

fastq_gz_path = 'Read.fq.gz'

# Read.fq.gz格式
"""
@250722124206_B144_20250722-SE50-250722124044:T0095:9803 1:ATAATTCGTG:86:0:0:0:1
AAAATCCTGGGCTCAAGTGATCCTCCCACCTCAGCCTCCTGA
+
<PQOMLLNNNNNNNNNNNLNMNNMNNNMLLMMNNNNNLLEIE
@250722124206_B144_20250722-SE50-250722124044:T0095:9872 1:AACCTCTCAC:83:0:0:0:1
CTCAGATGGGCATCACGGAACCTGCTGGTATGTGATGT
+
"""

fout = open("Output.txt", 'w')
fout.write("ReadsID\tBarcodeSeq\tSorce\n")

# 读取fq.gz文件
with gzip.open(fastq_gz_path, 'rt') as f:
    for line in f:
        if line.startswith('@'): # 当行以@符号开头
            line_split = line.replace(' ', '').split(':') # 去除空格并按:符号分割字符串

            reads_id = line_split[0] + ':' + line_split[2]
            barcode_seq = line_split[3]
            sorce = line_split[4]

            # 写入输出文本文件
            fout.write(f"{reads_id}\t{barcode_seq}\t{sorce}\n")

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

相关推荐

生信数据分析第一步:用WSL2配置Miniconda环境,管理Python/R包真方便

本文详细介绍了如何在Windows系统下通过WSL2配置Miniconda环境,解决生信数据分析中的环境隔离、依赖管理和工具链缺失问题。WSL2提供接近原生Linux的性能,而Miniconda则以其轻量级和灵活性成为管理Python/R包的利器,特别适合生物信息学领域的多版本软件需求。

weixin_42531923的博客 195

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

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

weixin_34737066的博客 5215

AI时代下,生信分析为何仍需掌握Linux与编程?

生物信息学分析的核心是从海量、复杂的生物数据中提取可靠洞见,这依赖于扎实的计算基础。Linux操作系统因其高效、稳定和可脚本化特性,成为处理大规模生物数据(如测序数据)的标准环境,其命令行工具和管道思维是数据预处理和批量操作的核心。编程语言如Python和R则是实现数据操作、自动化流程和自定义分析的关键,它们让研究者能够超越固定工具,灵活解决独特的科学问题。在AI辅助分析日益普及的当下,这些底层技能的价值不仅没有减弱,反而变得更加重要——它们帮助研究者理解AI工具的输出、调试代码、并设计创新的分析流程,从而

weixin_33968104的博客 385

R语言实验课(生信)(附代码)

R语言实验、apply()函数的应用、随机取值、保留小数点后几位格式、以及对矩阵的操作

weixin_51936315的博客 1758

Python 3.9.7 实战:用5个ROSALIND入门题搞定生信编程基础(附完整代码)

本文通过Python 3.9.7实战ROSALIND平台的五大经典生物信息学题目,帮助开发者构建生信编程思维体系。内容涵盖DNA序列分析、GC含量计算、动态规划算法等核心技能,并提供完整代码示例和性能优化建议,是生信入门者的理想学习资源。

weixin_30621711的博客 380

15、使用Python进行生物信息学分析:实战指南

本文详细介绍了如何使用Python进行生物信息学分析,涵盖环境搭建、大规模数据处理、基因组分析、群体遗传学研究以及蛋白质结构分析等多个方面。通过具体案例和代码示例,展示了Python在生物信息学领域的强大功能和应用价值。

醉三国 501

跟着NC学空转-python篇(1)-数据下载

跟着NC学空转,第一步下载数据!

songyi10的博客 1074

生物信息python中文版.pdf

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

python 生信分析_用python做生物信息数据分析(2-pysam)

写perl的思维,可能确实不能拿来学python。毕竟,python的裤子有很多。面向对象的语言,如果不好好穿裤子,怎么找对象?。手上要做的事情,需要解析sam,更或者bam文件。当然,如果有可能的话,还需要对SAM或者BAM进行排序!这个事情我在java写过,but,最后效率不如htsjdk,故最后还是打包了htsjdk。吸取这个教训,使用python的时候。第一步,先用pysam。pysam的...

weixin_39566493的博客 2878

Android逆向实战:抖音聊天记录数据库解析与导出(附完整SQL查询)

本文提供了一份Android逆向实战指南,详细解析了抖音聊天记录数据库的结构与导出方法。通过定位核心的`im.db`数据库文件,深度解读conversation_list、msg等关键表结构,并附上完整的SQL查询语句,帮助开发者或研究人员安全、合规地提取和分析本地聊天数据,适用于移动安全研究与数据分析场景。

mango的博客 850

别再死记硬背窗函数公式了!用MATLAB实战汉宁窗FIR滤波器,从频谱图看懂‘主瓣’和‘旁瓣’

本文通过MATLAB实战演示汉宁窗FIR滤波器的设计过程,帮助读者从频谱图直观理解主瓣与旁瓣的特性。文章详细对比了矩形窗与汉宁窗的频谱差异,并提供了高通滤波器设计的完整代码示例,适用于数字信号处理学习和工程应用。

weixin_30555125的博客 490

生信软件35 - AI代码编辑器Cursor

AI代码编辑器Cursor

LittleComputerRobot的博客 2409

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 393

数信院开年大促 — 生信服务器

数信院推出年终算力优惠活动,提供独享/共享/VHPC超算全系列服务。活动包含300元抵用券、两年9折三年8折优惠,并配备免费增值服务如预装软件、技术指导等。服务器配置覆盖从入门到顶级科研需求,包括X1-X6型号和VHPC集群,支持各类生信分析任务。独享版服务器提供专属算力,满足不同阶段科研需求。活动旨在为科研人员提供高性价比、便捷高效的算力解决方案。

2401_89507557的博客 1134

PCB之AD层次化原理图设计

PCB之AD层次化(模块化)原理图设计 软件版本:AD17.1.9(bBuild 592) 先上效果图: 可以看到,图中有RS485和W5500这两个部分是复用了原理图,当项目中需要多个功能相同的电路时,这种设计就可以大大节约PCB布局布线的时间,方法后面介绍; 1.首先确定好项目中个部分电路的功能模块 不同功能的电路分开不同原理图画,然后给出输入输出端口,这样方便复用,下面是实例项目的功能划分 2.单个模块电路的接口设计 这里以W5500以太网接口电路为例说明: 主要就分为通讯接口和电源接口:

洋洋洋的博客 3万+

word多级列表为什么会变成黑块解决思路

今天在写文档时,发现WORD5级的标题都变黑块了,找了度娘的资料,终于解决了。 第一种 1、光标bai放在黑快的右边,按向左的箭头,然后ctrl+shift+s,点击重新应用。 2、点击“定义新的多级列表”(不知道从哪儿找这个按钮的百度下),直接点确定。 3、这里很重要!!!不要直接保存,而是直接关掉word,会提示保存还是不保存,这个地方再点击保存。 第二种 Word2016 使用宏代码修复方法 1.找到视图-宏,打开 查看宏 2.创建宏 3.贴...

霍力强的专栏 8580

生信软件34 - 大幅提升Python程序执行效率的工具Pypy

大幅提升Python程序执行效率的工具Pypy

LittleComputerRobot的博客 1072

【YOLOv11工业级实战】27. TensorRT量化实战:FP16/INT8极致加速!边缘设备YOLOv11推理速度提升4倍,精度损失控制在1.5%内

摘要:本文针对智慧园区200路摄像头实时分析的工业痛点——RTX 3080单卡仅能处理12路视频流(YOLOv11-nano FP32精度45FPS,需≥120FPS且精度损失≤3%),提供TensorRT量化完整解决方案。从原理解析(FP16/INT8精度差异与量化逻辑)到实操落地(ONNX转换、FP16引擎构建、INT8精细校准),全程给出可复用代码。实测显示:FP16量化后速度达128FPS(×2.8),精度损失0.2%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1715

数信院用户-生信免费答疑

数信院提供专业生物信息学答疑服务,帮助科研人员解决代码报错、算法选择、数据分析等难题。服务特色包括:1)硕博团队支持,涵盖多组学领域技术指导;2)个性化解决方案,优化分析流程;3)快速响应机制。购买共享/独享服务器可获赠答疑服务,实现算力资源与技术指导的无缝衔接,助力科研突破。

2401_89507557的博客 646

人群仿真软件:AnyLogic_(12).AnyLogic高级功能应用

在AnyLogic中,自定义行人行为是通过编写Java代码来实现的。行人行为的自定义可以包括行走路径的选择、速度变化、交互行为等。这使得仿真模型更加灵活和真实。

kkchenjj的博客 1060

不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)

一个我觉得很有效的做法是,选取几篇具有代表性的文献,从研究方法、变量设置或结论方面进行对照分析,并指出本研究在哪些方面进行了补充或修正。除了简单说“提出了新的方法”或“首次应用某模型”,更需要说明这一做法在结果解读、研究设计或理论拓展上的具体意义,最好能够与现有研究进行比较,形成明确的差异化描述。段落应包含:研究结果解释、与前人研究对比、研究贡献、局限性反思,并在结尾提出未来研究的可能方向。讨论与对比部分一般位于文献综述、研究讨论或结果分析的后面,目的是对比已有研究,突出自己研究的价值与新意。

智能AI让学术科研更容易 169

生信核心技能浓缩手册:从 Linux 到 AI 的 10 倍效率实战指南

模块化积累代码:将常用分析(如火山图绘制、差异分析、批量处理)封装为函数或脚本,建立个人代码库,后续直接调用;善用公共数据:用 GEO、TCGA、ENCODE 等公共数据库的数据练手,避免重复测序,加速项目进展;自动化替代手动:任何需要重复 3 次以上的操作(如批量处理样本、绘制多张图表),都用脚本或 Snakemake 自动化;主动解决实际问题:以项目为驱动学习,比如 “需要做单细胞细胞类型注释”,再去学 Seurat 相关功能,比单纯看教程更高效;关注领域前沿工具。

m0_60789033的博客 1900

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python 生信进阶:Biopython 库完全指南(序列处理 + 数据库交互)

功能模块化:从基础的序列解析(SeqIO)、比对(pairwise2),到高级的数据库管理(BioSQL)、结构分析(PDB),无需切换工具即可完成端到端分析;Python 生态整合:无缝对接 Pandas(数据处理)、Matplotlib(可视化)、NumPy(数值计算),甚至 AI 框架(TensorFlow/PyTorch),可快速构建复杂分析流水线;社区驱动迭代:20 余年持续更新,每月发布新版本,及时适配生信领域新需求(如单细胞测序、空间转录组分析);低学习成本。

m0_60789033的博客 1509

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

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

生信批量处理混合脚本实战:Shell+Python+R 高效整合指南

生信批量处理的核心不是 “写复杂脚本”,而是用工具链解决实际问题术:掌握 Shell 循环、Python pandas、R ggplot2 的批量语法;道:理解数据流转逻辑,让每个工具做它最擅长的事。哪些步骤适合用 Shell 调度?(文件操作、命令行工具调用)哪些数据需要 Python 清洗?(表格处理、格式转换)哪些分析适合用 R 完成?(统计建模、可视化)

m0_60789033的博客 1161

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

高效Python数据分析的技巧(附完整代码)

定义某种列表时,写For 循环过于麻烦,幸运的是,Python有一种内置的方法可以在一行代码中解决这个问题。下面是使用For循环创建列表和用一行代码创建列表的对比。out = []print(out)# vs.print(out)02 Lambda表达式厌倦了定义用不了几次的函数?Lambda表达式是你的救星!Lambda表达式用于在Python中创建小型,一次性和匿名函数对象, 它能替你创建一个函数。注意!只要有一个lambda表达式,就可以完成常规函数可以执行的任何操作。10。

luzhengquan的博客 602

2025.03.16【读书笔记】|生信专用Python异步编程指南

异步编程是一种编程范式,它允许程序在等待外部事件(如I/O操作)时继续执行其他任务,从而提高程序的效率和响应速度。在Python中,异步编程通常通过asyncio库来实现。

939
上一篇: CentOS服务器网页版Rstudio-server及R包批量安装最佳实践
下一篇: 生信技能30 - 获取CNV开始位置和结束位置所在的染色体区带
生信与基因组学
博客等级 码龄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、付费专栏及课程。

余额充值