
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
QCParser是一款命令行工具,用于从主流生物信息学输出文件中解析信息,并将数据存储为通用格式(QCReport)。其模块化设计允许用户添加新模块以满足特定需求,旨在为生物信息学工作流提供集中式质量控制解决方案。
适用于生物信息学数据分析流程中,需要对多种工具输出的质量控制数据进行标准化整合、解析和报告生成的场景。尤其适合需要跨样本、跨工具整合QC信息的项目,以及需要自定义解析特定格式数据的研究需求。
QCParser目前仅支持Linux系统。需安装并配置以下工具:
检查Python版本:
sh$ python -V Python 2.7.10
安装方法:访问Python官方网站下载并安装对应版本。
需通过pip安装上述包。安装pip后,执行以下命令:
sh# 升级pip sudo pip install -U pip pip install numpy pip install scipy pip install pandas pip install matplotlib
sh# 克隆仓库 git clone https://github.com/alexwaldrop/QCParser.git
QCParser通过指定可用的解析器模块解析单个输入文件,并生成名为QCReport的输出文件。运行顶层QCParser.py程序可查看可用解析模块:
sh./QCParser.py <tool> [tool_args] 工具列表: SamtoolsDepth 从Samtool depth输出中汇总覆盖深度 Cbind 按列连接两个或多个QCReport(如合并同一样本的多个报告) FastQC 解析Fastqc文本输出 PrintTable 将QCReport输出为制表符分隔的表格 PicardInsertSize 解析Picard InsertSize Metrics输出 MosdepthDist 解析Mosdepth的读长深度分布输出 SamtoolsIdxstats 解析Samtools idxstats输出(v1.3及更高版本) TNADemuxReport 解析TNA demux脚本的RNA/DNA报告 Rbind 按行连接两个或多个QCReport(如合并多个样本的报告) BedtoolsIntersect 从Bedtools Intersect输出中汇总重叠百分比 SamtoolsFlagstat 解析Samtools flagstat输出(v1.3及更高版本) GATKCollectReadCount 统计映射到基因组特征的总读长数 Trimmomatic 解析Trimmomatic的标准错误日志
每个解析器模块都有自己的命令行参数,可通过--help查看:
sh./QCParser.py FastQC --help
FastQC模块示例参数:
解析Fastqc文本输出 可选参数: -h, --help 显示此帮助消息并退出 -v 增加程序详细程度。多个-v增加详细级别:0=错误 1=错误+警告 2=错误+警告+信息 3=错误+警告+信息+调试 -i INPUT_FILE, --input INPUT_FILE FastQC输出文件路径(fastqc_data.txt) -s SAMPLE_NAME, --sample SAMPLE_NAME 样本名称 -n NOTE, --note NOTE 关于被解析文件的备注
QCParser将非结构化信息解析为统一的JSON文件,称为QCReport。本质上,QCReport是具有一致列类型的表格的JSON表示。
QCReport ::= { QCSample* } QCSample ::= "SampleName" : [ QCEntry+ ] QCEntry ::= { "Module" : String, "Name" : String, "Note" : String, "Source" : String, "Value" : Int | String }
QCParser生成的QCReport保证满足以下条件:
此外,QCReport还满足以下特性:
JSON格式
json{ "Sample_1": [ { "Module": "FastQC", "Name": "Total_Reads", "Note": "rna raw fastqs", "Source": "/home/sample_1/fastqc_data.txt", "Value": 18346 }, { "Module": "FastQC", "Name": "LQ_Reads", "Note": "rna raw fastqs", "Source": "/home/sample_1/fastqc_data.txt", "Value": 0 } ], "Sample_2": [ { "Module": "FastQC", "Name": "Total_Reads", "Note": "rna raw fastqs", "Source": "/home/sample_2/fastqc_data.txt", "Value": 233990 }, { "Module": "FastQC", "Name": "LQ_Reads", "Note": "rna raw fastqs", "Source": "/home/sample_2/fastqc_data.txt", "Value": 59 } ] }
表格格式
Sample Total_Reads LQ_Reads Sample_1 18346 0 Sample_2 233990 59
QCParser包含三个基本QCReport操作功能,用于合并来自多个文件、样本或工作流的QCReport。
将QCReport输出为TSV表格格式到标准输出:
sh./QCReport PrintTable -i sample_1.qc_report.txt
按列连接两个或多个具有相同样本的QCReport(适合同一样本的多个QCReport合并):
sh./QCReport Cbind -i sample_1.fastqc.qc_report.txt sample_1.trimmomatic.qc_report.txt
按行连接两个或多个具有相同QCEntry的QCReport(适合多个样本的QCReport合并):
sh./QCReport Rbind -i sample_1.qc_report.txt sample_2.qc_report.txt
QCParser的核心优势在于可扩展性,支持解析几乎任何数据类型。以下是创建自定义模块以解析新输入类型的步骤:
在QCModules/Parsers目录下创建新Python文件。
需满足以下条件:
pythonfrom BaseParser import BaseParser from QCModules.BaseModule import QCParseException class MyNewParser(BaseParser): DESCRIPTION = "这是一个测试类" INPUT_FILE_DESC = "生物信息学工具X的文本输出" def __init__(self, sys_args): super(MyNewParser, self).__init__(sys_args)
继承BaseParser后,新类自动集成到基础CLI:
sh./QCParser.py --help 工具列表: SamtoolsDepth 从Samtool depth输出中汇总覆盖深度 ... MyNewParser 这是一个测试类
并继承工具特定CLI:
sh./QCParser.py MyNewParser --help usage: MyNewParser [-h] [-v] -i INPUT_FILE -s SAMPLE_NAME [-n NOTE] 这是一个测试类 可选参数: -h, --help 显示此帮助消息并退出 -v 增加程序详细程度。多个-v增加详细级别:0=错误 1=错误+警告 2=错误+警告+信息 3=错误+警告+信息+调试 -i INPUT_FILE, --input INPUT_FILE 生物信息学工具X的文本输出路径 -s SAMPLE_NAME, --sample SAMPLE_NAME 样本名称 -n NOTE, --note NOTE 关于被解析文件的备注
声明类将从输入文件中解析的数据类型:
python# 定义FastQC解析器类的输出数据类型 def define_required_colnames(self): return ["FastQC_Tests", "Total_Reads", "LQ_Reads", "Read_Len", "GC"]
QCParser使用此函数检查是否提取了所有所需数据类型,若缺失则退出并报错。
该方法主要功能:
若检测到文件格式错误,抛出QCParseException:
python# 检查文件是否为正确类型 if first_line and "FastQC" not in line: raise QCParseException("FastQC文件'%s'第一行不包含'FastQC'。请确认是fastq_data.txt文件。") else: first_line = False
使用add_entry()方法添加数据点到QCReport:
python# 将读长数量添加到QCReport num_reads = line.split()[0] self.add_entry(colname= "Num_Reads", value=num_reads)
(注:Module、Source和可选Note属性由类在实例化时自动设置)
如需添加额外命令行参数,可重写configure_arg_parser()方法。以下是SamtoolsDepth模块添加深度阈值参数的示例:
pythondef configure_arg_parser(self, base_parser): base_parser = super(SamtoolsDepth, self).configure_arg_parser(base_parser) # 添加深度阈值选项 base_parser.add_argument('--ct', action='append', dest='cutoffs', default=[5], type=int, help="指定覆盖深度阈值,计算高于该深度的碱基百分比(整数)。可多次指定以设置多个阈值。") return base_parser
QCParser提供Docker镜像,可在任何安装Docker的环境中使用。
需安装Docker客户端。检查Docker是否安装:
bash$ sudo docker --version
若未安装,从Docker-client获取安装包。
从https://hub.docker.com/拉取QCParser镜像:
bash$ sudo docker pull alexwaldrop/qcparser:latest
bash$ sudo docker run --rm --user root alexwaldrop/qcparser:latest "./QCParser.py --help"
QCParser正在积极开发中。如需请求功能,请联系下方作者。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务