转录组分析

本文详细记录了使用tophat2和cufflinks进行HeLa细胞转录组分析的过程,包括数据预处理、质量控制、比对、表达量化及变异检测,最终利用R包CustomProDB构建具有样本特异性的蛋白质数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验记录:

实验目的:下载参考基因组:hg19.UCSCRefSeqCDS.fasta和参考蛋白质 hg19.UCSCRefSeqproteins.fasta ,下载很hg38 参考基因组, 通过tophat2和cufflinks对Hela细胞进行转录组分析,得到BAM和BED文件,使用samtools生成BCF文件并用BCFTOOLS生成VCF文件,并将得到的BAM文件、BED文件、VCF文件作为R语言包customProDB输入文件利用customProDB定制数据库具有样本特异性的蛋白质数据库。

首先,我创建了rna-seq-analysis/目录来存放本次实验数据
目录如下:/public/biology2017/gaojiarui/customProDB/rna-seq-analysis
一、数据准备
参考基因组:hg19.UCSCRefSeqCDS.fasta
参考蛋白质组:hg19.UCSCRefSeqproteins.fasta

样本数据:
SRR6811717_L1hela1.sra
SRR6811719_L3Hela3_ATCC.sra
SRR6811720_L4Hela4.sra
SRR6811724_L8Hela8_ATCC.sra
SRR6811725_H9Hela9.sra
SRR6811726_H10Hela10.sr
1 . 使用sratoolkit将sra文件转化为fastq格式得到single paired fastq files

fastq-dump 

SRR6811717_L1hela1_1.fastq
SRR6811719_L3Hela3_ATCC_1.fastq
SRR6811720_L4Hela4_1.fastq
SRR6811724_L8Hela8_ATCC_1.fastq
SRR6811725_H9Hela9_1.fastq
SRR6811726_H10Hela10_1.fastq
2. 创建索引
将所有单端测序的fastq文件用tophat

快速判断碱基质量格式

head your-fastq-file-name | awk '{if(NR%4==0) printf("%s",$0);}' |  od -A n -t u1 | awk 'BEGIN{min=100;max=0;}{for(i=1;i<=NF;i++) {if($i>max) max=$i; if($i<min) min=$i;}}END{if(max<=74 && min<59) print "Phred+33"; else if(max>73 && min>=64) print "Phred+64"; else if(min>=59 && min<64 && max>73) print "Solexa+64"; else print "Unknown score encoding!";}'

我的fastq文件为:Phred+33

使用fastqc对检测fastq file,命令如下:

fastqc -o ./SRR6811717_L1hela1_1.fastq.fastqcout         SRR6811717_L1hela1_1.fastq
fastqc -o ./SRR6811719_L3Hela3_ATCC_1.fastq.fastqcout    SRR6811719_L3Hela3_ATCC_1.fastq
fastqc -o ./SRR6811720_L4Hela4_1.fastq.fastqcout         SRR6811720_L4Hela4_1.fastq
fastqc -o ./SRR6811724_L8Hela8_ATCC_1.fastq.fastqcout    SRR6811724_L8Hela8_ATCC_1.fastq
fastqc -o ./SRR6811725_H9Hela9_1.fastq.fastqcout         SRR6811725_H9Hela9_1.fastq
fastqc -o ./SRR6811726_H10Hela10_1.fastq.fastqcout SRR6811726_H10Hela10_1.fastq

创建文件夹all-fastqc-out

mv *.fastq.fastqcout ./all-fastqc-out

在这里插入图片描述

查看结果,发现各数据普遍存在如下问题
在这里插入图片描述

仅SRR6811724_L8Hela8_ATCC_1_fastq的Per base sequence quality为warning,其他皆为fail。
在这里插入图片描述

使用Trimmomatic对原始数据处理
命令如下:
一定要注意选单端模式(SE)

java -jar /public/biology2017/gaojiarui/bio_software2/BIOSOFTS/Trimmomatic-0.36/trimmomatic-0.36.jar SE -phred33 -trimlog se.logfile SRR6811724_L8Hela8_ATCC_1.fastq trimed-SRR6811724_L8Hela8_ATCC_1.fastq.gz ILLUMINACLIP:/public/biology2017/gaojiarui/bio_software2/BIOSOFTS/Trimmomatic-0.36/adapters/TruSeq3-SE.fa:2:30:10 SLIDINGWINDOW:5:20 LEADING:5 TRAILING:5 MINLEN:50 

输出文件名为 trimed-SRR6811724_L8Hela8_ATCC_1.fastq.gz


之前运行,犯了一个错误,可能是参考基因组的问题,tophat的匹配率只有50%左右,

在这里插入图片描述
于是从网上重新下在参考基因组
下载地址:http://hgdownload.soe.ucsc.edu/goldenPath/hg19/bigZips/chromFa.tar.gz
在这里插入图片描述
我在customprodb下重建了一个文件夹,命名为singe-rna-analysis,在其中存放genome,tophat和cufflinks的输出文件

解压chromFa.tar.gz并将解压后所有文件合并为一个文件:hg19.genome.fasta

使用bowtie2-build对参考基因组建立索引
在这里插入图片描述

以下操作均以SRR6811724_L8Hela8_ATCC_1_fastq为样本

bowtie2-build index hg19.genome.fasta && tophat -p 8 -o  SRR6811717_L1hela1_1.fastq.tophat.out2 SRR6811724_L8Hela8_ATCC_1_fastq  
#运行时间约为3h48min
cufflinks -p 8 -o SRR6811717_L1hela1_1.fastq.cufflnkd-out2  SRR6811717_L1hela1_1.fastq.tophat.out2/accepted_hits.bam


在这里插入图片描述

对accepted_hits.bam进行排序,

samtools faidx hg19.genome.fa ##
samtools sort accepted_hits.bam -o accepted_hits.sort.bam ## 对accepted_hits.bam进行排序

samtools index accepted_hits.sort.bam    ##对accepted_hits.sort.bam建立索引

samtools tview  accepted_hits.sort.bam ../genome/hg19/hg19.genome.fa #使用samtools tview 查看比对情况,

蓝色较多,质量值较差怀疑出错

在这里插入图片描述

samtools mpileup -vuf /public/biology2017/gaojiarui/customProDB/singe-rna-analysis/genome/hg19/hg19.genome.fa accepted_hits.sort.bam &
 ##生成vcf文件
 

vcf 文件

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


<think>好的,用户让我介绍一下Python转录组分的代码。首先,我需要明确转录组分通常包括哪些步骤。转录组分一般涉及数据预处理、质量控制、比对、定量表达、差异表达分等。不过用户可能想要一个简单的示例,比如使用现有的Python库来处理RNA-seq数据。 首先,我应该考虑常用的Python库,比如Biopython处理序列数据,pandas用于数据处理,scipy和statsmodels做统计检验,seaborn或matplotlib绘图。还有像HTSeq这样的库可以用来处理高通量测序数据。 接下来,我需要组织代码结构。可能包括读取FASTQ文件,进行质量控制,比如计算每个碱基的质量分数,然后进行比对后的表达量定量,比如读取BAM文件并统计reads计数,最后进行差异表达分。 但转录组分的某些步骤可能更依赖命令行工具,比如FastQC、STAR、HISAT2等,Python可能用于后续的数据处理。比如,用pandas处理基因表达矩阵,用scikit-learn做聚类,或者用DESeq2的R包,不过在Python中可以使用rpy2调用R的DESeq2,或者使用Python的类似库比如Deseq2Py。 不过用户可能希望一个完整的示例流程,但考虑到时间和复杂度,可能需要简化。例如,展示如何用HTSeq计算基因计数,用pandas和scipy进行差异分,以及可视化。 另外,要注意用户可能对转录组分的流程不太熟悉,可能需要解释每个步骤的目的,比如质量控制是为了过滤低质量reads,比对是将reads定位到参考基因组,定量是计算每个基因的表达量,差异分是比较不同条件下的基因表达变化。 现在,我需要编写示例代码。比如: 1. 使用HTSeq读取BAM文件并统计基因计数。 2. 使用pandas加载表达矩阵。 3. 使用scipy进行t检验或Mann-Whitney U检验。 4. 使用matplotlib绘制火山图。 同时,要解释每个步骤的作用和相关库的用途。比如,HTSeq用于处理高通量测序数据,pandas处理数据框,scipy进行统计检验,matplotlib绘图。 但可能HTSeq的安装和使用需要依赖其他库,或者用户可能更常用其他工具,比如pysam来处理BAM文件。因此,可能需要调整代码,使用pysam代替HTSeq。 另外,差异分部分可能需要更复杂的模型,比如考虑批次效应,使用线性模型,而不仅仅是t检验。但简单情况下,t检验可以作为示例。 最后,给出相关问题,比如询问质量控制步骤、差异表达的其他方法、可视化方法或处理BAM文件的库。</think><< Python在转录组分中常用于数据处理、统计分和可视化。以下是基于HTSeq和scipy的简单转录组分代码示例,包含基因计数和差异表达分: 1. 基因计数(使用pysam处理BAM文件): ```python import pysam from collections import defaultdict # 读取基因注释GTF文件 gene_dict = defaultdict(int) bamfile = pysam.AlignmentFile("sample.bam", "rb") # 遍历比对结果 for read in bamfile: if not read.is_unmapped: # 获取比对位置(这里需要实际基因位置匹配逻辑) chrom = read.reference_name pos = read.reference_start # 伪代码:根据坐标匹配基因(需实际注释数据) gene = find_gene(chrom, pos) if gene: gene_dict[gene] += 1 print("Gene counts:", dict(gene_dict)) ``` 2. 差异表达分(使用scipy): ```python import pandas as pd from scipy import stats # 示例数据:对照组和实验组各3个样本 data = { 'Gene': ['GeneA', 'GeneB', 'GeneC'], 'Control1': [100, 200, 50], 'Control2': [110, 190, 55], 'Control3': [105, 210, 53], 'Treat1': [150, 80, 200], 'Treat2': [145, 75, 210], 'Treat3': [155, 85, 195] } df = pd.DataFrame(data) # 计算log2 Fold Change和p值 results = [] for index, row in df.iterrows(): control = row[['Control1', 'Control2', 'Control3']] treat = row[['Treat1', 'Treat2', 'Treat3']] fold_change = treat.mean() / control.mean() log2fc = np.log2(fold_change) if fold_change != 0 else 0 _, p_value = stats.ttest_ind(control, treat) results.append({ 'Gene': row['Gene'], 'log2FC': log2fc, 'p_value': p_value }) result_df = pd.DataFrame(results) print(result_df) ``` 3. 可视化(使用matplotlib): ```python import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(10,6)) plt.scatter(result_df['log2FC'], -np.log10(result_df['p_value']), c=np.where(result_df['p_value']<0.05, 'red', 'gray')) plt.xlabel('log2 Fold Change') plt.ylabel('-log10(p-value)') plt.title('Volcano Plot') plt.axhline(-np.log10(0.05), linestyle='--', color='blue') plt.show() ``` 解释说明: 1. 基因计数:使用pysam读取BAM文件,遍历比对结果统计基因计数(需要基因注释数据) 2. 差异分:通过t检验计算组间差异,计算log2倍数变化 3. 火山图:可视化展示显著差异基因(红点表示p<0.05) 实际分中需要考虑: - 标准化处理(如TPM/RPKM) - 多重假设校正(如FDR) - 使用DESeq2/edgeR等专业工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值