当前位置: 首页 > ai >正文

质控脚本来喽

好久不更新,上个硬货。脚本需提前准备宿主和rrna的bowtie2索引文件,原始数据的命名方式为{sample}_raw_1/2.fq.gz,保存有原始数据路径的文件,保存样品列表的文件。

最后打个广告,欢迎畜牧学方向的研究生报考兰州大学。

#!/bin/bash
# 脚本功能:二代测序数据质控、去rRNA与去宿主序列处理
#版本1.2,新增了--rrna功能
usage() {echo "用法: $0 [--host <宿主类型>] [--rrna] <路径文件> <样品名列表文件>"exit 1
}# ---------- 配置路径 ----------
declare -A HOST_INDEX=([sheep]="/mnt/data/database/bowtie/sheep/sheepgenome"[goat]="/mnt/data/database/bowtie/goat/goatgenome"[cattle]="/mnt/data/database/bowtie/cattle/cattlegenome"
)
SSU_INDEX="/mnt/data/database/bowtie/SSU/SSU"
LSU_INDEX="/mnt/data/database/bowtie/LSU/LSU"# 初始化变量
HOST=""
REMOVE_RRNA=false
INPUT_FILE=""
SAMPLE_LIST=""
# 增强参数解析
while [[ $# -gt 0 ]]; docase "$1" in--host)# 宿主类型验证if [[ ! " sheep goat cattle " =~ " $2 " ]]; thenecho "错误:无效宿主类型 '$2',可选: sheep/goat/cattle"exit 1fiHOST="$2"shift 2 ;;--rrna)REMOVE_RRNA=trueshift ;;--help)usage ;;-*)echo "错误:未知选项 $1"usage ;;*)# 位置参数处理if [[ -z $INPUT_FILE ]]; thenINPUT_FILE="$1"elif [[ -z $SAMPLE_LIST ]]; thenSAMPLE_LIST="$1"elseecho "错误:多余参数 $1"usagefishift ;;esac
done# 验证必要参数
if [[ -z $INPUT_FILE || -z $SAMPLE_LIST ]]; thenecho "错误:缺失必要参数!"usage
fi# 读取原始路径并验证
INPUT_DIR=$(cat "$INPUT_FILE")
if [[ ! -d $INPUT_DIR ]]; thenecho "错误:路径文件中的目录 $INPUT_DIR 不存在"exit 1
fi# 宿主索引验证
if [[ -n $HOST ]]; thenINDEX="${HOST_INDEX[$HOST]}"if [[ ! -f "${INDEX}.1.bt2" ]]; thenecho "错误:宿主索引文件 ${INDEX}.1.bt2 不存在"exit 1fi
fi# ---------- 目录创建 ----------
CLEAN_DIR=$(dirname "$INPUT_DIR")/cleandata
mkdir -p "$CLEAN_DIR" || { echo "错误:无法创建目录 $CLEAN_DIR"; exit 1; }# ---------- 处理流程 ----------
process_sample() {local sample=$1local raw_1="${INPUT_DIR}/${sample}_raw_1.fq.gz"local raw_2="${INPUT_DIR}/${sample}_raw_2.fq.gz"local clip_1="${CLEAN_DIR}/${sample}.clip.1.fq.gz"local clip_2="${CLEAN_DIR}/${sample}.clip.2.fq.gz"# Step 1: 质控(fastp默认参数)echo "[$(date)] 处理样品 $sample:质控中..."fastp -i "$raw_1" -I "$raw_2" -o "$clip_1" -O "$clip_2" || {echo "错误:fastp处理失败!"exit 1}#Step 2: 去宿主if [[ -n $HOST ]]; thenecho "[$(date)] 去除宿主 $HOST 序列..."bowtie2 -p 192 -x "$INDEX" --quiet\-1 "$clip_1" -2 "$clip_2" \--un-conc-gz "${CLEAN_DIR}/${sample}.clean.fq.gz" \--al-conc-gz "${CLEAN_DIR}/${sample}.host.fq.gz" \-S /dev/null > "${CLEAN_DIR}/${sample}.bowtie2.log" || exit 1mv "${CLEAN_DIR}/${sample}.clean.fq.1.gz" "$clip_1"mv "${CLEAN_DIR}/${sample}.clean.fq.2.gz" "$clip_2"fi#Step 3: 去rRNAif $REMOVE_RRNA; thenecho "[$(date)] 去除rRNA序列(SSU+LSU)..."# SSU过滤bowtie2 -p 192 -x "$SSU_INDEX" --quiet\-1 "$clip_1" -2 "$clip_2" \--un-conc-gz "${CLEAN_DIR}/${sample}.clean.fq.gz" \--al-conc-gz "${CLEAN_DIR}/${sample}.SSU.fq.gz" \-S /dev/null > "${CLEAN_DIR}/${sample}.SSU.log" || exit 1mv "${CLEAN_DIR}/${sample}.clean.fq.1.gz" "$clip_1"mv "${CLEAN_DIR}/${sample}.clean.fq.2.gz" "$clip_2"# LSU过滤bowtie2 -p 192 -x "$LSU_INDEX" --quiet\-1 "$clip_1" -2 "$clip_2" \--un-conc-gz "${CLEAN_DIR}/${sample}.clean.fq.gz" \--al-conc-gz "${CLEAN_DIR}/${sample}.LSU.fq.gz" \-S /dev/null > "${CLEAN_DIR}/${sample}.LSU.log" || exit 1mv "${CLEAN_DIR}/${sample}.clean.fq.1.gz" "$clip_1"mv "${CLEAN_DIR}/${sample}.clean.fq.2.gz" "$clip_2"fi}# 遍历样品列表
while IFS= read -r sample; do[[ -z $sample ]] && continue  # 跳过空行process_sample "$sample"
done < "$SAMPLE_LIST"mkdir ${CLEAN_DIR}/host ${CLEAN_DIR}/rRNA ${CLEAN_DIR}/log
mv ${CLEAN_DIR}/*host\.fq* ${CLEAN_DIR}/host/
mv ${CLEAN_DIR}/*SU\.fq* ${CLEAN_DIR}/rRNA/
mv ${CLEAN_DIR}/*log ${CLEAN_DIR}/log
echo "[$(date)] 处理完成!结果保存至:$CLEAN_DIR"

http://www.xdnf.cn/news/5524.html

相关文章:

  • Java设计模式之适配器模式:从入门到精通
  • 绝缘子缺陷检测数据集VOC+YOLO格式1566张3类别
  • lua入门语法,包含安装,注释,变量,循环等
  • spring boot3.0自定义校验注解:文章状态校验示例
  • 从攻击者角度来看Go1.24的路径遍历攻击防御
  • 数模分离颠覆未来:打造数字时代核心生产力引擎
  • 五、Hive表类型、分区及数据加载
  • 力扣HOT100之二叉树:101. 对称二叉树
  • 洛谷 P1955 [NOI2015] 程序自动分析
  • hdfs客户端操作-文件上传
  • LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
  • 视觉-语言-动作模型:概念、进展、应用与挑战(下)
  • day18-数据结构引言
  • 【Python】UV:单脚本依赖管理
  • DVWA在线靶场-SQL注入部分
  • The Graph:区块链数据索引的技术架构与创新实践
  • maitrix-org/Voila-chat:端到端音频聊天模型
  • 如何判断IP是否被平台标记
  • 深入解读tcpdump:原理、数据结构与操作手册
  • YAFFS2 的 `yaffs_obj` 数据结构详解
  • JAVA EE_网络原理_数据链路层
  • R语言实战第5章(1)
  • 软考错题(四)
  • 小结:Syslog
  • 运用数组和矩阵对数据进行存取和运算——NumPy模块 之五
  • vue3+three 搭建平面上滚动旋转的几何体
  • 【深度学习】计算机视觉(18)——从应用到设计
  • 数据库笔记(1)
  • DeepWiki: Github的百科全书
  • vue实现与后台springboot传递数据【传值/取值 Axios 】