```shell
#!/bin/bash
##  目前分析暂时不使用R2序列，单独分析R1
## 原始数据存放于01_seqRaw文件夹中
##  metadata.tsv格式
 #  sampleName	group
 #  MSR1	AG
 #  MSR10	AG
 #  MSR11	AG

set -e

## 1.创建文件夹
mkdir -p 00_result 02_fastqcBeforeTrim 03_seqTrim 04_fastqcAfterTrim 05_umiExtract 06_fastqcAfterumiExtract

# 统计原始数据
seqkit stats -T -a -j64 01_seqRaw/*.fastq.gz > 00_result/seqStatsRaw.tsv
fastqc 01_seqRaw/*.fastq.gz -o 02_fastqcBeforeTrim -t 64

## 2.对原始数据进行质控，使用trim_galore
 # AG方法,即SMARTer smRNA-Seq Kit for Illumina User Manua说明书中的方法
 # 去除illumina接头，去除序列连续含大于等于10bp的polyA，去除小于26bp的序列（small RNA最小长度15bp+UMI序列8bp+R1序列5'端的3nt的G或C碱基）
 
 # 去除接头
 #--max_n 修剪序列后 N 碱基的占比：(N 的数量 / 修剪后序列长度) * 100%。 (注意：查看原始数据的后缀,区分fq.gz/fastq.gz/_/.)
  awk '$2~/AG/ {print $1} ' metadata.tsv | while read id ;do echo -e "${id} 正在trim！！！";trim_galore  --max_n 0.1 --length 1 -j 8 -o 03_seqTrim 01_seqRaw/${id}.R1.raw.fastq.gz;echo -e "${id} 结束trim！！！";done
  
 #去除R1的polyA (注意：查看数据的后缀,区分fq.gz/fastq.gz/_/.)
 #-m 26 过滤小于26bp的序列（small RNA最小长度15bp+UMI序列8bp+R1序列5'端的3nt的G或C碱基），过滤后的reads保留在1-17nt_fq文件夹中。
 #-b 在read任意位置寻找polyA 并把polyA以及后面的序列全部剪掉
 mkdir 1-17nt_fq
awk '$2~/AG/ {print $1} ' metadata.tsv | while read id ;do cutadapt -b "A{10}" -m 26 -j 8 --too-short-output 1-17nt_fq/${id}_short.fastq.gz -o 03_seqTrim/${id}_R1_trimmed_A.fq.gz 03_seqTrim/${id}.R1.raw_trimmed.fq.gz;done

  # 过滤掉的短片段处理：去除每条reads上的UMI序列8bp+R1序列5'端的3nt的G或C碱基（可选步骤，若不保留18bp以下的小片段可跳过）
 cut -f1 metadata.tsv | tail -n+2 | while read id ;do
 cutadapt -u 11 -j 8  -o 1-17nt_fq/${id}_1-17nt.fastq.gz  1-17nt_fq/${id}_short.fastq.gz ;done

## 3.统计去除R1的polyA,接头,小于26bp的序列后的数据质量：
seqkit stats -T -a -j64 03_seqTrim/*_R1_trimmed_A.fq.gz > 00_result/seqStatsAfterTrim.tsv
fastqc 03_seqTrim/*_R1_trimmed_A.fq.gz  -o 04_fastqcAfterTrim -t 64
 
## 4.提取UMI
 #使用parallel加速
 parallel -j 10 "echo {}正在提取UMI标签！！！; umi_tools extract -I 03_seqTrim/{}_R1_trimmed_A.fq.gz --stdout=05_umiExtract/{}_umiExtract_R1.fq.gz --bc-pattern=NNNNNNNN  -L 05_umiExtract/{}_extract.log ;echo {}结束提取UMI标签！！！" ::: $(cut -f1 metadata.tsv | tail -n+2)

## 5.去除R1序列5'端的3nt的G或C碱基
   # -u 3 删除R1前3个碱基
   #-m 15 去除小于15bp的序列
cut -f1 metadata.tsv | tail -n+2 | while read id ;do cutadapt  -u 3 -m 15 -j 64 -o 05_umiExtract/${id}_5primeDel3_R1.fq.gz  05_umiExtract/${id}_umiExtract_R1.fq.gz ;done


## 6.根据需求进行序列的长度筛选
   ##seqkit seq 筛选序列长度  -m 设置最小长度阈值 -M 设置最大长度阈值(例如只分析miRNA,可筛选18-32nt长度的序列) ！可根据实际需求更改参数！
   
   ##对质控后18-32nt，32-150nt，18-150nt的数据分别进行提取（PE150测序，最长为150）
   mkdir -p 18_32nt_fq  32_150nt_fq  18_150nt_fq
cut -f1 metadata.tsv | tail -n+2 | while read id ;do 
	seqkit seq -m 18 -M 32 05_umiExtract/${id}_5primeDel3_R1.fq.gz| gzip > 18_32nt_fq/${id}_18-32nt_R1.fq.gz 
	seqkit seq -m 32 -M 150 05_umiExtract/${id}_5primeDel3_R1.fq.gz| gzip > 32_150nt_fq/${id}_32-150nt_R1.fq.gz
	seqkit seq -m 18 -M 150 05_umiExtract/${id}_5primeDel3_R1.fq.gz| gzip > 18_150nt_fq/${id}_18-150nt_R1.fq.gz
done



##  7.统计质控后的数据质量：
seqkit stats -T -a -j64 18_32nt_fq/*_18-32nt_R1.fq.gz > 00_result/18-32nt_seqStatsAfterumiExtract.tsv
fastqc 18_32nt_fq/*_18-32nt_R1.fq.gz  -o 06_fastqcAfterumiExtract -t 64

seqkit stats -T -a -j64 32_150nt_fq/*_32-150nt_R1.fq.gz > 00_result/32-150nt_seqStatsAfterumiExtract.tsv
fastqc 32_150nt_fq/*_32-150nt_R1.fq.gz  -o 06_fastqcAfterumiExtract -t 64

seqkit stats -T -a -j64 18_150nt_fq/*_18-150nt_R1.fq.gz > 00_result/18-150nt_seqStatsAfterumiExtract.tsv
fastqc 18_150nt_fq/*_18-150nt_R1.fq.gz  -o 06_fastqcAfterumiExtract -t 64
```





### 使用软件的安装

seqkit / fastqc / trim_galore / umi_tools / cutadapt

### 1.seqkit安装

```shell
#下载地址：https://github.com/shenwei356/seqkit/releases

tar -xzvf seqkit_linux_amd64.tar.gz    ## 解压
pwd
/home/software/Seqkit

 echo "export PATH=$PATH:/home/software/Seqkit" >> ~/.bashrc  ## 添加环境变量
 source ~/.bashrc                                             ## 加载环境变量
 seqkit --help                                                ## 调用测试
```

### 2.fastqc安装

```shell
wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip
unzip ./fastqc_v0.11.9.zip      ##解压
cd FastQC/
chmod +x ./fastqc               ##使 fastqc 程序在当前目录下可执行
echo 'export PATH=/home/zhaohuiyao/Biosoft/general/FastQC/:$PATH' >> ~/.bashrc ## 添加环境变量
source ~/.bashrc## 加载环境变量
fastqc --version                ## 验证是否安装成功
```



### 3.cutadapt安装

```shell
## way1： conda安装

conda install -c bioconda cutadapt

## way2： pip安装

pip install --user --upgrade cutadapt # 直接安装最新版
#pip install --user cutadapt==4.1      # 安装特定版本（例如4.1）
cutadapt --version                    # 验证安装



## way3：源代码安装
wget -c https://files.pythonhosted.org/packages/a3/30/4a889a6916d7480c153774777e634b89865f95cb02f2c3209762c7ef984b/cutadapt-4.1.tar.gz
tar -zxvf cutadapt-4.1.tar.gz
cd cutadapt-4.1
python setup.py install --user

```



### 4.fastp安装

```shell
# 参考链接：https://github.com/FelixKrueger/TrimGalore
#https://github.com/OpenGene/fastp/archive/refs/tags/v0.23.4.tar.gz   #官网下载地址
wget -c https://github.com/OpenGene/fastp/archive/refs/tags/v0.23.4.tar.gz   #下载
tar -zxvf v0.23.4.tar.gz   #解压缩即可得到最终二进制软件
 
mv fastp.0.23.4 fastp
chmod a+x ./fastp
 
chmod 744 ./fastp     #可选步骤，一般权限够用，默认744
chmod a+x ./fastp     #可选步骤，作用同上

./fastp -h            #检查fastp已安装
```



### 5.trim_galore安装

```shell
#安装Trim Galore软件之前需要安装好Fastqc和cutadapt两个软件
#参考链接：https://github.com/FelixKrueger/TrimGalore

#way1：
cutadapt --version  ## 检查cutadapt已安装
fastqc -v           ## 检查fastqc已安装

curl -fsSL https://github.com/FelixKrueger/TrimGalore/archive/0.6.10.tar.gz -o trim_galore.tar.gz
tar xvzf trim_galore.tar.gz
~/TrimGalore-0.6.10/trim_galore  ## 运行 Trim Galore

## way2: conda安装
conda install trim-galore        ## conda一键安装
```



### 6.umi_tools安装

```shell
## way1： 
conda install -c bioconda -c conda-forge umi_tools

## way2： 
pip install umi_tools
or grab a zip of the latest release from github and unpack (replace 0.5.5 with version number; replace wget with curl -O for OS X):

## way3：
 unzip 1.0.0.zip
 cd UMI-tools-1.0.0
 python setup.py install --user
 
## 官方指南：https://umi-tools.readthedocs.io/en/latest/INSTALL.html
```

