发布时间:2025-06-10
浏览次数:0
[]
基因异常的表现形式在转录本层面通常表现为数量上的增加,这一现象通常通过以下三种途径实现:基因的复制增多、表达水平的提升,以及基因间的融合。
此定义如下,源自别处摘录,该总结尤为出色,特此引用以供展示,(参考来源:https://mp..qq.com/s/UQ)。

在生物信息学领域,转录组数据是最常被使用的,转录组的高表达背后dnastar key,按照我现在的理解,主要有三种逻辑。因此,从基因组角度探究转录组异常的原因,可以是一种很有趣的叙事方式。通过这种筛选得到的key,在实验中更容易得到证实。毕竟,对于细胞来说dnastar key,转录组和蛋白组相对容易发生变化,而真正能够遗传下去的,往往是基因组和表观组层面的。近期,我聆听了江涛院士关于其团队在融合基因研究方面的成果介绍,对其技术价值有了深刻认识。因此,我编写了一个脚本,它能够轻松地对获得的fastq.gz文件进行融合基因的鉴定与统计。只需调整相关参数,问题便能迎刃而解,整个过程仅需几行代码即可完成。
由此开始正文。
该脚本的设计核心在于,在获取到原始的f*q.gz文件后,首先执行质控流程,接着进行过滤和去除接头序列的操作,随后利用star软件包进行一体化分析,并最终完成融合基因的统计分析。
使用conda命令创建一个名为fusion的新环境,指定使用bioconda和conda-forge两个渠道。conda activate rna-seq使用conda命令,在bioconda通道中,安装名为fastqc的软件包,同时,也要安装star-fusion软件包。使用conda工具为该流程构建一个独立环境,并为其设定名称为fusion。# 下载参考数据(这个最好下载最新的)# 首先cd到自己存贮 参考基因组的目录mkdir gene_refcd gene_ref下载链接为https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/,其中包含了GRCh38_gencode_v44_CTAT_lib_Oct292023.plug-n-play.tar.gz文件。tar -xzvf GRCh38_*.tar.gz# 构建STAR索引启动STAR工具,进入基因组生成模式。确保使用路径 ./GRCh38_gencode_v44_CTAT_lib_Oct292023.plug-n-play/ctat_genome_lib_build_dir/ref_genome.fa.star.idx,对基因组目录进行限制,不得进行任何修改。将基因组fasta文件指定为位于"./GRCh38_gencode_v44_CTAT_lib_Oct292023.plug-n-play/ctat_genome_lib_build_dir/ref_genome.fa"的路径。运行sjdbGTFfile命令,指定文件路径为./GRCh38_gencode_v44_CTAT_lib_Oct292023.plug-n-play/ctat_genome_lib_build_dir/ref_annot.gtf,对数据进行处理。--runThreadN 32将此脚本内容保存为一个sh文件,确保其具备执行权限,并命名为 fusion_pipeline.sh。
融合基因检测流程脚本 fusion_fastp_pipeline_with_stats.sh,采用fastp工具,并包含结果统计分析功能。usage() {echo "用法: $0 [选项]"echo "选项:"echo 请指定原始数据存放的文件夹路径(该项为必填项,若未指定,系统将默认设置为当前目录下的rawdata子文件夹)。echo " -o 输出根目录 (默认: ./results)"echo " -r 参考基因组路径 (必须)"echo " -t 并行线程数 (默认: 16)"echo " -h 显示帮助信息"exit 1}# 默认参数RAW_DIR="./rawdata"OUT_DIR="./results"REF_GENOME=THREADS=16# 解析参数while getopts "i:o:r:t:h" opt; docase $opt ini) RAW_DIR="$OPTARG" ;;o) OUT_DIR="$OPTARG" ;;r) REF_GENOME="$OPTARG" ;;t) THREADS="$OPTARG" ;;h) usage ;;*) echo "无效参数"; usage ;;esacdone# 参数验证[[ -z "$REF_GENOME" ]] && { echo "错误:必须指定参考基因组路径(-r)"; exit 1; }[[ $THREADS =~ ^[0-9]+$ ]] || { echo "错误:线程数必须为整数"; exit 1; }# 日志记录LOG_FILE="${OUT_DIR}/pipeline.log"mkdir -p "$OUT_DIR" || { echo "无法创建输出根目录 $OUT_DIR"; exit 1; }exec > >(tee -a "$LOG_FILE") 2>&1# 质量控制与过滤process_data() {local CLEAN_DIR="${OUT_DIR}/cleandata"mkdir -p "$CLEAN_DIR" || { echo "无法创建 $CLEAN_DIR 目录"; exit 1; }# 原始数据质控local QC_RAW_DIR="${OUT_DIR}/qc_raw"mkdir -p "$QC_RAW_DIR" || { echo "无法创建 $QC_RAW_DIR 目录"; exit 1; }echo "[$(date)] 原始数据质控"fastqc -t $THREADS -o "$QC_RAW_DIR" "$RAW_DIR"/*.f*q.gz# 使用fastp过滤for R1 in "$RAW_DIR"/*_R1.f*q.gz; dolocal SAMPLE=$(basename "${R1%_R1*}")local R2="${R1/_R1/_R2}"local JSON_REPORT="${CLEAN_DIR}/${SAMPLE}_fastp.json"local HTML_REPORT="${CLEAN_DIR}/${SAMPLE}_fastp.html"echo "[$(date)] 处理样本: $SAMPLE"fastp \--in1 "$R1" --in2 "$R2" \--out1 "${CLEAN_DIR}/${SAMPLE}_R1.clean.fq.gz" \--out2 "${CLEAN_DIR}/${SAMPLE}_R2.clean.fq.gz" \检测适配器针对个人使用--cut_right \确保质量分数达到15的合格标准不合格百分比限制设定为40%。规定明确,必须满足长度要求,具体数值为36。--thread $THREADS \--json "$JSON_REPORT" \--html "$HTML_REPORT"done# 过滤后质控local QC_CLEAN_DIR="${OUT_DIR}/qc_clean"mkdir -p "$QC_CLEAN_DIR" || { echo "无法创建 $QC_CLEAN_DIR 目录"; exit 1; }echo "[$(date)] 过滤数据质控"fastqc -t $THREADS -o "$QC_CLEAN_DIR" "${CLEAN_DIR}"/*.clean.fq.gz}# 融合基因检测run_fusion() {local CLEAN_DIR="${OUT_DIR}/cleandata"local FUSION_OUT="${OUT_DIR}/fusion_results"mkdir -p "$FUSION_OUT" || { echo "无法创建 $FUSION_OUT 目录"; exit 1; }for R1 in "$CLEAN_DIR"/*_R1.clean.fq.gz; dolocal SAMPLE=$(basename "${R1%_R1*}")local R2="${R1/_R1/_R2}"echo "[$(date)] 检测样本: $SAMPLE"STAR-Fusion \--left_fq "$R1" \--right_fq "$R2" \--genome_lib_dir "$REF_GENOME" \--output_dir "${FUSION_OUT}/${SAMPLE}" \--CPU $THREADSdone}# 结果统计generate_report() {local FUSION_OUT="${OUT_DIR}/fusion_results"local REPORT_DIR="${OUT_DIR}/final_report"mkdir -p "$REPORT_DIR" || { echo "无法创建 $REPORT_DIR 目录"; exit 1; }# 合并所有样本的融合结果cat "$FUSION_OUT"对星融合.fusion_predictions.tsv文件执行命令,使用awk工具进行处理。'NR == 1 || !/^#FusionName/' > "${REPORT_DIR}/merged_fusion_results.tsv"# 统计融合基因的数量total_fusions=$(wc -l < "${REPORT_DIR}/merged_fusion_results.tsv")lettotal_fusions减去1,赋值给total_fusions。# 减去表头# 统计每个融合基因出现的次数awk -F'\t' 若NR大于1,则对序列中的第一个元素执行计数加一操作,完成计数后,遍历计数字典中的每一个基因,输出基因名称及其对应的计数值。 "${REPORT_DIR}/merged_fusion_results.tsv" | sort -k2 -nr > "${REPORT_DIR}/fusion_gene_counts.txt"# 统计支持融合的跨接reads数和片段数的总和将文件中的数据按照分隔符进行分割,并计算每个分隔符分隔出的字段的总和,赋值给变量junction_read_sum。'\t' 当NR大于1时,将$6的值加到sum上,操作结束后,输出sum的值。 "${REPORT_DIR}/merged_fusion_results.tsv")将文件内容按照特定分隔符分割,并计算包含特定分隔符的行数总和。'\t' 当NR大于1时,对sum进行累加,累加的值为$7,操作完成后,输出sum的值。 "${REPORT_DIR}/merged_fusion_results.tsv")# 生成综合统计报告{echo "总融合基因数量: $total_fusions"echo "支持融合的跨接reads数总和: $junction_read_sum"echo "支持融合的片段数总和: $spanning_frag_sum"echo "融合基因出现次数统计(前10):"head "${REPORT_DIR}/fusion_gene_counts.txt"} > "${REPORT_DIR}/summary_report.txt"}# 主流程main() {echo "====== 开始流程 $(date) ======"process_datarun_fusiongenerate_reportecho "====== 流程完成 $(date) ======"}main
参数解答:
这里我指定了四个传参变量:
echo" -i 原始数据目录 (必须, 默认: ./rawdata)"echo" -o 输出根目录 (默认: ./results)"echo" -r 参考基因组路径 (必须)"echo" -t 并行线程数 (默认: 16)"
如何使用:
创建脚本.sh,
复制下面的代码:
# conda activate fusion启动命令:执行nohup指令,以bash运行名为fusion_pipeline_test.sh的脚本,并将输出结果重定向至fusion.log文件,同时将标准错误也重定向至该文件,最后在后台执行。#这里的四个参数是必须根据自己实际情况进行填写的# 完整参数运行/export3/zhangw/Code.sum/fusion_pipeline.sh \-i 参数用于指定路径,即/export3/zhangw/mRNA/test/rawdata。将/export3/zhangw/mRNA/test/results路径下的文件进行封锁处理。请勿在/export3/zhangw/gene_ref/GRCh38_gencode_v37_CTAT_lib/GRCh38_gencode_v44_CTAT_lib_Oct292023.plug-n-play/ctat_genome_lib_build_dir目录下进行修改。-t 48
然后运行,提交后台
nohup执行bash命令 fusion_pipeline_test.sh,并将输出重定向至文件 fusion.log。2>&1 &
输出文件结构
results/├── cleandata/ # 处理后的clean数据├── qc_raw/ # 原始数据质控报告├── qc_clean/ # 过滤数据质控报告├── fusion_results/ # 各样本融合检测结果├── final_report/│ ├── 存储了融合后的数据# 合并后的融合基因检测结果融合基因计数文件,即 fusion_gene_counts.txt。# 融合基因出现次数统计└── 摘要报告文件.txt# 综合统计报告└── pipeline.log # 完整运行日志
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码