将转录组SRR数据组装为核酸FASTA文件的流程——个人学习记录

一、转录组SRA(Sequence Read Archive)数据组装FASTA文件流程:

(1)下载SRR数据:使用SRA Toolkit中的prefetch和fasterq-dump或fastq-dump工具。

(2)质量控制和修剪:使用FastQC检查质量,然后用Trimmomatic处理。

 (3)组装转录本:使用Trinity(适用于真核生物)或SPAdes(可能更适合原核?需要确认)等工具。

(4)评估组装质量:使用BUSCO或TransRate等。

(5)输出FASTA文件:组装后的结果通常就是FASTA格式。

      需要注意的细节:是否需要去除rRNA?是否需要比对到参考基因组(如果有的话)来进行指导组装?如果用户有参考基因组,可能可以使用StringTie等工具进行参考转录组组装,但如果没有,则需从头组装。

      另外,可能需要解释每个步骤的目的,例如质量控制的重要性,以及不同组装工具的适用场景。例如,Trinity适用于真核生物,而SPAdes可能更适合原核或较简单的转录组。此外,在组装后可能需要去冗余,使用CD-HIT等工具聚类相似的转录本。


1. 下载SRR数据并解压SRA文件加验证文件

###使用NCBI的SRA Toolkit下载原始数据:

       prefetch SRRXXXXXXX # 替换为实际SRR编号

###判断拿到的数据是单端还是双端数据,可以用fastq-dump -X 1 --split-spot SRRxxxxxxx.sra来判断测序类型。如果返回值是4,就是单端SE;如果返回值是8,那么就是双端PE。

        fastq-dump -X 1 --split-spot -Z SRR5489805.sra | wc -l

###使用fastq-dump工具解压SRA数据,把双端测序文件分开

fastq-dump --split-files --defline-seq '@$sn[_$rn]/$ri' SRRXXXXXXX 

#####验证生成的文件: 正确格式应显示类似:@SRR6892154.1_1/1  @SRR6892154.1_1/2

head -n 1 SRR6892154_1.fastq

head -n 1 SRR6892154_2.fastq

常见的参数有三类:

--split-spot: 将双端测序分为两份,但是都放在同一个文件中

--split-files: 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads直接丢弃

--split-3 : 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads会单独放在一个文件夹里


2. 质量控制与修剪-----质量好的可以不做修剪,直接组装

###质量检查:使用FastQC生成报告

fastqc SRR8652038_1.fastq SRR8652038_2.fastq

###fastqc的使用方法:

fastqc -t 12 -o out_path sample1_1.fq sample1_2.fq

运行结束后生成两个文件一个.html网页文件,一个是.zip压缩文件。

常用参数:

-o 用来指定输出文件的所在目录,生成的报告的文件名是根据输入来定的,注意是不能自动新建目录的。输出的结果是.zip文件,默认不解压缩,命令里加上--extract则压缩。

-f      用来强制指定输入文件格式,默认自动检测。支持fastq、bam、sam极相应的gz压缩格式

-c      污染物选项,输入的是一个文件,格式是Name[Tab] Sequence,#开头的行是注释,里面是可能的污染序列,如果有这个选项,FastQC会在计算时候评估污染的情况,并在统计的时候进行分析。

-q      会进入沉默模式,指定这个选项的时候,程序不会实时报告运行的状况,即不出现下面的提示:


####修剪低质量序列和接头:使用Trimmomatic

trimmomatic PE -threads 4 SRR8652038_1.fastq SRR8652038_1.fastq

  SRR8652038_1_trimmed_paired.fq SRR8652038_1_unpaired.fq \

  SRR8652038_2_trimmed_paired.fq SRR8652038_2_unpaired.fq \

ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 LEADING:20 TRAILING:20 SLIDINGWINDOW:4:20 MINLEN:50


###查看trimmed后的文件中的reads名称是否符合Trinity的要求:

head -n 4 SRR9023132_1_trimmed_paired.fq

head -n 4 SRR9023132_2_trimmed_paired.fq


问题:如果遇到fastq格式报错解决办法:

确保文件是标准的FASTQ格式。

每对双端测序的reads名称(除了 /1 和 /2)必须完全一致

1、开始检查错误

head -n 4 SRR9023133_1.fastq

head -n 4 SRR9023133_2.fastq

####输出结果

@1/1

GTTGTGGTCTCACACTCGCAAGATTTTTTGAATGGTGTCTGTACCAACATGATTCACATGCAAAACAAGAAGTTGAAATTTTACACTGGT

+SRR9023133.1 1 length=90

JJFFFFJJJJJJJJJFJJJJJJJFJJ-FJAJF7FAFF-F<FAFJFFFJJJJJFJAA7AA7-7AAAFFJJFJF-F-FJJFFAFA<JJFJFF

@1/2

GTTCCCATCTGTACTGCTTCATCTGGTTCTCCTCCAGCTCTGTCCTGGTTTGGATACACTGGTCGTAATTACCAGTGTAAAATTTCAACT

+SRR9023133.1 1 length=90

FJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJJJJJAJJJ7FJJJJJJJJFJJJFJF7<7AJFJ-7AFJFFJFAAFAAJFFAFJFJ-<A7F

加粗的地方显示格式不对,手动进行修改:

(1)在文件1中,序列标识符为@1/1,但在质量分数行中出现了+SRR9023133.1 1 length=90。

(2)在文件2中,序列标识符为@1/2,质量分数行同样出现了+SRR9023133.1 1 length=90。

这种不一致可能会导致Trinity或其他工具解析时出现问题。建议统一序列标识符的格式,例如:

将@1/1和@1/2改为@SRR9023133.1/1和@SRR9023133.1/2。

质量分数行的标识符也应与序列标识符一致,例如+SRR9023133.1/1和+SRR9023133.1/2。


####解决方法:

使用以下命令修复文件格式:

###检查文件完整性

# 修复文件1

awk '{if(NR%4==3) {print "+" $1 "/1"} else {print}}' SRR9023133_1.fastq > modified_SRR9023133_1.fastq

# 修复文件2

awk '{if(NR%4==3) {print "+" $1 "/2"} else {print}}' SRR9023133_2.fastq > modified_SRR9023133_2.fastq

检查文件完整性

#验证修改后的结果:

head -n 4 modified_SRR9023133_1.fastq

head -n 4 modified_SRR9023133_2.fastq

@1/1

GTTGTGGTCTCACACTCGCAAGATTTTTTGAATGGTGTCTGTACCAACATGATTCACATGCAAAACAAGAAGTTGAAATTTTACACTGGT

+SRR9023133.1/1

JJFFFFJJJJJJJJJFJJJJJJJFJJ-FJAJF7FAFF-F<FAFJFFFJJJJJFJAA7AA7-7AAAFFJJFJF-F-FJJFFAFA<JJFJFF

@1/2

GTTCCCATCTGTACTGCTTCATCTGGTTCTCCTCCAGCTCTGTCCTGGTTTGGATACACTGGTCGTAATTACCAGTGTAAAATTTCAACT

+SRR9023133.1/2

FJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJJJJJAJJJ7FJJJJJJJJFJJJFJF7<7AJFJ-7AFJFFJFAAFAAJFFAFJFJ-<A7F


运行Trinity组装:

###修剪低质量序列和接头:使用Trimmomatic,加了&后直接在后台运行


Trinity --seqType fq --left SRR9023132_1.fastq --right SRR9023132_2.fastq --CPU 8 --max_memory 60G --output trinity_out_9023132 &


结果文件:trinity_out/Trinity.fasta

关键参数说明:

--seqType:支持输入数据格式为fq或者fa

--max_memory:内存设置,这一步是最耗费资源的一步,所以这个内存主要由jellyfish控制

--left --right:如果是双端测序--left为read1,--right为read2,多个样品的reads由逗号隔开,不允许出现空格;如果是单端测序,参数为--single加上文件,多个样品的reads由逗号隔开,不允许出现空格。

--CPU:软件所用线程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容