当前位置:首页>Linux>用 AI 写转录组分析Linux 代码标准 7 步法(生信新手专属)

用 AI 写转录组分析Linux 代码标准 7 步法(生信新手专属)

  • 2026-10-11 05:56:54
用 AI 写转录组分析Linux 代码标准 7 步法(生信新手专属)

(基于已安装的**<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 让你重新安装软件(你已经装好了)
  • ✅ 避免路径错误(AI 不知道你的数据在哪里)
  • ✅ 自动加错误检查(新手最容易忽略的点)
  • ✅ 自动创建目录(不用你手动 mkdir)

第三步: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>(交互式删除)

第四步:分步测试脚本(不要一次性运行整个脚本)

这是新手最容易犯的错误:一次性运行整个脚本,出了错不知道哪里错了。

正确做法:把脚本拆成模块,逐个测试

  1. 先测试质控模块:注释掉后面的过滤、定量部分,只运行 fastqc
  2. 运行后查看日志,确认没有错误,再测试过滤模块
  3. 过滤完成后,检查 clean_data 目录有没有生成文件
  4. 再测试定量模块,以此类推

测试命令示例

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>
  • AI 会告诉你:检查原始数据目录和文件名是否正确

第七步:优化和复用脚本

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 个坑

  1. ❌ 直接复制 AI 生成的代码运行,不检查软件名和路径
  2. ❌ 一次性运行整个脚本,出了错不知道哪里找
  3. ❌ 线程数设置太高(超过服务器核心数),导致服务器卡死
  4. ❌ 不用 nohup 后台运行,关终端任务就断了
  5. ❌ 不保存日志,出了错没有排查依据

最新文章

随机文章