从分析结果中根据list提取突变信息

2023-12-29 22:58
文章标签 分析 提取 list 信息 突变

本文主要是介绍从分析结果中根据list提取突变信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# _*_coding:utf-8_*_
# author: 稻田工作者
# date: 2020-06-13"""根据原始样本对应的突变信息从数据分析文件中提取检出结果,如:
原始样本LC-BR3对应的突变信息如下:
NM_000245.2:exon14_intron14:c.3028_3028+16del17:p.?
NM_005228.3:exon20:c.2290_2291ins12:p.A763_Y764insFQEA
NM_000245.2:intron13:c.2888-41_2888-2delTAGCCGTCTTTAACAAGCTCTTTCTTTCTCTCTGTTTTAA:p.?
即:需要从分析文件中提取该突变信息对应的sample_name,Depth,frequency,CDS_change,Var_ss对应的文件内index(0,9,10,14,28)
"""import xlrd
import csv
import pandas as pd# 根据样本对应突变list生成样本和突变的字典
def generate_sample_dict(work_path,mutation_dict):list_file = open(r"%s\list.txt"%work_path,"r")for line in list_file:s_key = line.strip().split("\t")[0]s_value = line.strip().split("\t")[1]if s_value is not '':if s_key in mutation_dict:mutation_dict.get(s_key).append(s_value)else:mutation_dict.setdefault(s_key,[]).append(s_value)return mutation_dictdef extract_info(work_path,data_xlxs_name,mutation_dict):data_xlxs = xlrd.open_workbook(r"%s\%s.xlsx"%(work_path,data_xlxs_name),"r")data_sheet = data_xlxs.sheet_by_name("SNVIndelHotSpot")n_rows = data_sheet.nrows# 遍历源数据文件和样本list信息提取数据with open(r"%s\%s_filter_data.csv"%(work_path,data_xlxs_name),"w",newline="")as outfile:header = ["#sample_name","Depth","frequency","CDS_change","Var_ss"]write_csv = csv.DictWriter(outfile,fieldnames=header)write_csv.writeheader()for n in range(1,n_rows):if data_sheet.cell(n,14).value in mutation_dict and mutation_dict.values(data_sheet.cell(n,14).value) in data_sheet.cell(n,0).value:for k,v in mutation_dict.items():if k in data_sheet.cell(n,0).value and data_sheet.cell(n,14).value in v:write_csv.writerow({"#sample_name":data_sheet.cell(n,0).value,"Depth":data_sheet.cell(n,9).value,"frequency":data_sheet.cell(n,10).value,"CDS_change":data_sheet.cell(n,14).value,"Var_ss":data_sheet.cell(n,28).value})
def csv2xls(work_path,data_xlxs_name):csv_file = pd.read_csv(r"%s\%s_filter_data.csv"%(work_path,data_xlxs_name),encoding="utf-8",index_col=0,engine='python')csv_file.to_excel(r"%s\%s_filter_data.xlsx"%(work_path,data_xlxs_name),sheet_name="filter_data")if __name__ == '__main__':mutation_dict = {}work_path = input("输入list及源分析文件路径: ")generate_sample_dict(work_path,mutation_dict)data_xlxs_name = input("输入需要提取数据的源文件名称:")extract_info(work_path,data_xlxs_name,mutation_dict)csv2xls(work_path, data_xlxs_name)

 

这篇关于从分析结果中根据list提取突变信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/550970

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、