(基于已安装的**<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rna</font>**环境和全套软件)
核心原则:AI 是 "代码打字员",不是 "生信分析师"
AI 能帮你把标准流程转换成可运行的 Linux 代码,但不能帮你设计实验、选择参数、解释生物学意义。你需要告诉 AI:
第一步:提前准备(AI 写代码前必须做)
1. 确认环境和数据
先把这些信息整理好,写在 prompt 最前面,AI 生成的代码才会适配你的环境:
plaintext
✅ 已激活的conda环境:rna
✅ 已安装的软件及版本:
- fastqc=0.11.9
- trim-galore=2.1.0
- salmon=1.10.3
- samtools=1.20
- multiqc=1.34
✅ 服务器CPU核心数:8核(线程数不要超过核心数)
✅ 原始数据目录:~/raw_data/ (所有*.fastq.gz文件在这里)
✅ 分析结果目录:~/rna_analysis/
✅ 参考基因组索引:~/reference/hg38/salmon_index/
2. 明确转录组标准流程(你要知道每一步做什么)
标准转录组 Linux 部分流程(差异分析用 R,不在 Linux 里做):
plaintext
原始数据(raw_data) → 质控(fastqc) → 过滤去接头(trim-galore) → 定量(salmon) → 合并定量矩阵 → 差异分析(R)
第二步:写一个 "不会出错" 的 AI Prompt(模板直接套用)
万能 Prompt 模板(复制修改即可)
plaintext
你是一个资深生信工程师,帮我写一个完整的转录组数据分析Linux Shell脚本,要求如下:
1. 环境与软件:
- 使用conda环境:rna
- 软件版本严格使用:
fastqc=0.11.9
trim-galore=2.1.0(运行命令是trim_galore,下划线)
salmon=1.10.3
samtools=1.20
multiqc=1.34
- 所有软件都已经安装在rna环境中,不需要再安装
2. 数据与路径:
- 原始测序数据目录:~/raw_data/
- 数据格式:双端测序,文件名格式为:样本名_1.fastq.gz、样本名_2.fastq.gz
- 分析结果根目录:~/rna_analysis/
- 参考基因组salmon索引目录:~/reference/hg38/salmon_index/
- 所有输出目录如果不存在,自动创建
3. 流程要求:
- 分模块运行,每个模块单独注释
- 每一步运行前检查输入文件是否存在
- 每一步运行后检查是否成功(用$?判断),失败则退出并提示错误
- 线程数统一使用8
- 所有中间文件和结果文件都保存在对应模块的子目录下
- 最后用multiqc汇总所有质控报告
- 脚本开头加#!/bin/bash
- 脚本里不要有任何危险命令(如rm -rf /)
4. 输出要求:
- 完整的可运行脚本
- 每一行关键命令都加中文注释
- 最后给出脚本的运行方法和注意事项
为什么要这么写?
- ✅ 避免 AI 生成错误的软件名(比如把
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">trim_galore</font>写成<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">trim-galore</font>)
第三步:AI 生成代码后,必须做的 3 项检查(新手必看)
绝对不要直接复制运行! AI 生成的代码 90% 都有小错误,检查这 3 点就能避免 90% 的坑:
1. 检查软件名和运行命令
- ❌ 错误:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">trim-galore --version</font> - ✅ 正确:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">trim_galore --version</font>(下划线) - ❌ 错误:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">sratoolkit prefetch</font> - ✅ 正确:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">prefetch</font>(sra-tools 的运行命令是 prefetch)
2. 检查所有路径
- 确认原始数据目录确实是
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">~/raw_data/</font>
3. 检查有没有危险命令
- 绝对不能有:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rm -rf /</font>、<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rm -rf ~</font> - 谨慎使用:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rm -rf</font> 任何目录,最好改成<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rm -i</font>(交互式删除)
第四步:分步测试脚本(不要一次性运行整个脚本)
这是新手最容易犯的错误:一次性运行整个脚本,出了错不知道哪里错了。
正确做法:把脚本拆成模块,逐个测试
- 先测试质控模块:注释掉后面的过滤、定量部分,只运行 fastqc
- 过滤完成后,检查 clean_data 目录有没有生成文件
测试命令示例
bash
运行
# 先给脚本加可执行权限
chmod +x rna_pipeline.sh
# 分步运行:先运行前10行(质控部分)
head -n 30 rna_pipeline.sh > test.sh
bash test.sh
第五步:运行脚本并后台挂起(服务器必备)
所有模块测试通过后,用<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">nohup</font>后台运行,关终端也不会断:
bash
运行
nohup bash rna_pipeline.sh > run.log 2>&1 &
实时查看运行状态
bash
运行
# 实时看日志
tail -f run.log
# 看进程是否在运行
ps -ef | grep rna_pipeline
# 看服务器资源占用
htop
第六步:用 AI 排查错误(99% 的报错 AI 都能解决)
如果运行出错,不要慌,把完整的错误信息复制给 AI,加上下面的 prompt:
plaintext
我运行上面的转录组脚本时出现了这个错误:
[粘贴完整的错误信息]
我的环境是:
- conda环境:rna
- 软件版本:xxx
- 系统:Ubuntu 20.04
请帮我分析错误原因,并给出具体的解决命令。
常见错误及 AI 解决示例
- 错误:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">GLIBCXX_3.4.29 not found</font> - AI 会告诉你:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">conda install -y libstdcxx-ng=13.2.0</font> - 错误:
<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">File not found: sample_1.fastq.gz</font>
第七步:优化和复用脚本
1. 把可变参数提取到脚本开头
这样下次分析不同的数据,只需要修改开头的参数,不用改整个脚本:
bash
运行
#!/bin/bash
# ========== 只需要修改这里的参数 ==========
RAW_DATA_DIR=~/raw_data/
OUTPUT_DIR=~/rna_analysis/
INDEX_DIR=~/reference/hg38/salmon_index/
THREADS=8
# ========================================
# 后面的代码都用上面的变量
mkdir -p ${OUTPUT_DIR}/fastqc
fastqc -o ${OUTPUT_DIR}/fastqc -t ${THREADS} ${RAW_DATA_DIR}/*.fastq.gz
2. 保存模板脚本
把这个脚本保存为<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">rna_pipeline_template.sh</font>,以后做任何转录组分析,只需要修改开头的参数就能直接用。
完整示例:AI 生成的标准转录组脚本(已校验)
bash
运行
#!/bin/bash
set -e # 遇到错误立即退出
# ========== 配置参数(修改这里即可) ==========
RAW_DATA_DIR="$HOME/raw_data"
OUTPUT_DIR="$HOME/rna_analysis"
SALMON_INDEX="$HOME/reference/hg38/salmon_index"
THREADS=8
# ============================================
echo "=== 转录组分析开始 ==="
date
# 1. 创建输出目录
echo "1. 创建输出目录..."
mkdir -p ${OUTPUT_DIR}/{fastqc,trimmed_data,salmon,multiqc}
# 2. 原始数据质控
echo "2. 原始数据质控..."
fastqc \
-o ${OUTPUT_DIR}/fastqc \
-t ${THREADS} \
${RAW_DATA_DIR}/*.fastq.gz
if [ $? -eq 0 ]; then
echo "✅ 原始数据质控完成"
else
echo "❌ 原始数据质控失败"
exit 1
fi
# 3. 过滤去接头
echo "3. 过滤去接头..."
for r1 in ${RAW_DATA_DIR}/*_1.fastq.gz
do
r2=${r1/_1.fastq.gz/_2.fastq.gz}
sample=$(basename $r1 _1.fastq.gz)
echo "正在处理样本:$sample"
trim_galore \
--paired \
--quality 20 \
--length 50 \
--output_dir ${OUTPUT_DIR}/trimmed_data \
--threads ${THREADS} \
$r1 $r2
done
if [ $? -eq 0 ]; then
echo "✅ 过滤去接头完成"
else
echo "❌ 过滤去接头失败"
exit 1
fi
# 4. Salmon定量
echo "4. Salmon定量..."
for r1 in ${OUTPUT_DIR}/trimmed_data/*_1_val_1.fq.gz
do
r2=${r1/_1_val_1.fq.gz/_2_val_2.fq.gz}
sample=$(basename $r1 _1_val_1.fq.gz)
echo "正在定量样本:$sample"
salmon quant \
-i ${SALMON_INDEX} \
-l A \
-1 $r1 \
-2 $r2 \
-p ${THREADS} \
-o ${OUTPUT_DIR}/salmon/${sample}
done
if [ $? -eq 0 ]; then
echo "✅ Salmon定量完成"
else
echo "❌ Salmon定量失败"
exit 1
fi
# 5. 汇总质控报告
echo "5. 汇总质控报告..."
multiqc \
${OUTPUT_DIR}/fastqc \
${OUTPUT_DIR}/trimmed_data \
${OUTPUT_DIR}/salmon \
-o ${OUTPUT_DIR}/multiqc
echo "=== 转录组分析全部完成 ==="
date
新手最容易踩的 5 个坑
- ❌ 直接复制 AI 生成的代码运行,不检查软件名和路径
- ❌ 线程数设置太高(超过服务器核心数),导致服务器卡死