玉米中的元基因调控网络突出了功能上相关的调控相互作用。\zm.rn20b样本为例

yidauthoryearsourceaccessionstudygenotypetissuenASEstressRILRun
rn20bZhou2020localsp065heterosis4 inbred + 6 hybrids3 tissuesTC
rn20b2localsp068aRILB, M, BxM, MxB, 4 RILsleafT C

E:\文章代码\玉米中的元基因调控网络突出了功能上相关的调控相互作用。\rnaseq-master\rnaseq-master\nf\zm.rn20b

design.csv

  • SampleID: 样本编号
  • Tissue: 组织类型
  • Genotype: 基因型
  • Treatment: 处理类型
  • Replicate: 实验重复次数
  • paired: 数据类型(双端测序,PE)
  • r0: 空白列,可根据需要补充内容
  • r1r2: 分别是双端测序的两个FASTQ文件路径
SampleIDTissueGenotypeTreatmentReplicatepairedr0r1r2
mBR502seedling_rootB73m2PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR502_S19_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR502_S19_R2_001.fastq.gz
mBR503seedling_rootB73m3PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR503_S20_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR503_S20_R2_001.fastq.gz
mBR504seedling_rootB73m4PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR504_S21_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR504_S21_R2_001.fastq.gz
mBR506seedling_rootB84m2PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR506_S22_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR506_S22_R2_001.fastq.gz
mBR507seedling_rootB84m3PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR507_S23_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR507_S23_R2_001.fastq.gz
mBR508seedling_rootB84m4PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR508_S24_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR508_S24_R2_001.fastq.gz
mBR510seedling_rootMo17m2PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR510_S25_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR510_S25_R2_001.fastq.gz
mBR511seedling_rootMo17m3PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR511_S26_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR511_S26_R2_001.fastq.gz
mBR512seedling_rootMo17m4PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR512_S27_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR512_S27_R2_001.fastq.gz
mBR514seedling_rootA682m2PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR514_S28_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR514_S28_R2_001.fastq.gz
mBR515seedling_rootA682m3PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR515_S29_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR515_S29_R2_001.fastq.gz
mBR516seedling_rootA682m4PE/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR516_S30_R1_001.fastq.gz/home/springer/zhoux379/projects/s3/zhoup-barn/zm.rn20b/191023_A00223_0239_AHGLLLDRXX/Springer_Project_065_Pool6/mBR516_S30_R2_001.fastq.gz

Nextflow 脚本

好的,以下是对你提供的 Nextflow 脚本的逐部分分析。我们可以分为几个主要部分:1) 参数定义,2) check_max 函数,3) 配置文件的引入。首先,我们先讲解 参数定义 部分。

1. 参数定义 (params block)

这一部分是设置 Nextflow 工作流程的参数,它包含了整个流程的基本配置信息。这些参数将在工作流执行时被动态引用和传递,控制着流程的执行行为。解释如下:

params {genome = 'Zmays_B73v5'          // 基因组的名称,这里指定的是玉米(Zmays)B73v5版本name = 'zm.rn20b'               // 流程名称design = 'design.tsv'           // 实验设计文件的路径,通常包含样本和条件的映射source = 'local'                // 数据来源,本例中指定为“local”read_type = 'illumina'          // 测序平台类型,这里指定为Illuminapaired = 'PE'                   // 数据的配对类型,这里指定为双端测序(PE: Paired-End)outdir = "./raw"                // 输出目录,用于存储原始数据文件tracedir = "./pipeline_info"    // 追踪信息存储目录,通常用于保存工作流执行过程的日志文件stranded = 'no'                 // 是否为链特异性数据,'no'表示非链特异性interleaved = false             // 是否为交替合并的双端数据,设置为false表示不是save_fastq = false              // 是否保存原始的FASTQ文件,设置为false表示不保存trimmer = "trim_galore"         // 使用的测序数据修剪工具save_trimmed = false            // 是否保存修剪后的数据aligner = "hisat2"              // 对齐工具,这里使用的是HISAT2saveBAM = false                 // 是否保存BAM文件,设置为false表示不保存skip_preseq = true              // 是否跳过PreSeq步骤,用于预测测序深度skip_markdup = true             // 是否跳过标记重复步骤run_salmon = false              // 是否运行Salmon进行转录本定量run_stringtie = false           // 是否运行StringTie进行转录本拼接和定量count_multi = false             // 是否计算多重映射的readsase = false                     // 是否进行等位基因表达(ASE)分析ril = false                     // 是否进行RIL(重组自交系)分析cage = false                    // 是否进行CAGE(Cap Analysis of Gene Expression)分析
}
  • genome: 指定了用于比对的基因组版本,这里使用的是玉米(Zmays)B73v5。
  • name: 设定了工作流的名字,用于识别和组织工作流的输出。
  • design: 指定了实验设计文件路径,通常该文件定义了不同样本之间的对照组信息。
  • read_typepaired: 表示使用的测序平台和数据类型,这里选择的是 Illumina 平台和配对末端测序(PE)。
  • trimmer: 选择了修剪工具,trim_galore 是常见的一个修剪工具,主要用于去除低质量的序列。
  • aligner: 选择了比对工具,这里使用的是 hisat2,它广泛用于基因组比对。
  • skip_preseqskip_markdup: 设置为 true,意味着跳过了测序深度预测和重复序列标记这两个步骤。
  • run_salmonrun_stringtie: 两者都设为 false,表示不运行这两个基于转录本的分析工具。
  • ase, ril, cage: 这些参数控制是否执行特定的分析,当前都设为 false

这些参数为整个工作流的执行提供了灵活的配置,可以根据需要调整。


很好,接下来我们讲解 check_max 函数 部分。

2. check_max 函数

该函数的作用是检查和比较不同的资源限制(内存、时间、CPU),确保所需资源不会超过工作流设定的最大值。该函数会根据传入的类型(内存、时间或CPU)返回一个合适的值。具体实现如下:

def check_max(obj, type) {if (type == 'memory') {  // 如果请求的是内存资源try {if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1)  // 比较当前请求的内存是否超过最大限制return params.max_memory as nextflow.util.MemoryUnit  // 返回最大内存限制elsereturn obj  // 否则返回当前请求的内存} catch (all) {println "   ### ERROR ###   Max memory '${params.max_memory}' is not valid! Using default value: $obj"return obj  // 如果比较失败,则输出错误并返回当前请求的内存}} else if (type == 'time') {  // 如果请求的是时间资源try {if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1)  // 比较当前请求的时间是否超过最大限制return params.max_time as nextflow.util.Duration  // 返回最大时间限制elsereturn obj  // 否则返回当前请求的时间} catch (all) {println "   ### ERROR ###   Max time '${params.max_time}' is not valid! Using default value: $obj"return obj  // 如果比较失败,则输出错误并返回当前请求的时间}} else if (type == 'cpus') {  // 如果请求的是CPU资源try {return Math.min(obj, params.max_cpus as int)  // 返回请求的CPU数和最大限制中的较小者} catch (all) {println "   ### ERROR ###   Max cpus '${params.max_cpus}' is not valid! Using default value: $obj"return obj  // 如果比较失败,则输出错误并返回当前请求的CPU数}}
}
功能解析:
  • 内存(memory:

    • obj 是当前请求的内存大小,params.max_memory 是工作流中定义的最大内存。函数通过 compareTo 比较两者,若请求的内存超过了最大内存限制,函数返回最大内存值。
    • 如果 compareTo 比较失败,则打印错误信息并返回当前请求的内存大小。
  • 时间(time:

    • 与内存类似,函数会比较当前请求的时间和最大时间,确保请求不会超过最大限制。
  • CPU(cpus:

    • 通过 Math.min 返回请求的 CPU 数和最大 CPU 数的较小者。
错误处理:

每个 if 分支中都有一个 try-catch 结构来捕获可能的错误,如果传入的资源限制不合法(比如格式不正确),则会输出错误提示,并返回默认的请求值。

总结:

check_max 函数通过限制资源使用,确保不会请求超出配置中允许的最大值,防止资源过载或不必要的资源浪费。它可以在任务调度时提供更高效的资源管理。


好的,接下来我们讲解 配置文件的引入 部分。

3. 配置文件的引入

在 Nextflow 中,includeConfig 用来引入外部的配置文件。这些文件通常包含一些共享的参数或流程配置,能够简化和集中管理工作流设置。你提供的代码中有三行引入配置文件:

includeConfig "$nf/configs/nextflow.config"
includeConfig "$nf/configs/fastq.config"
includeConfig "$nf/configs/rnaseq.config"
解释:
  • $nf/configs/nextflow.config: 这是工作流的主配置文件,通常包含一些全局设置,例如工作目录、资源配置、日志记录等。它可以包含常用的默认配置,供其他配置文件引用。
  • $nf/configs/fastq.config: 该文件可能用于处理与 FASTQ 文件相关的配置,包括数据输入路径、FASTQ 文件格式相关的设置等。
  • $nf/configs/rnaseq.config: 这个配置文件可能专门用于 RNA-seq 流程的设置,包括测序类型、比对工具、转录本定量工具等。
工作流配置的组织:

通过引入这些配置文件,用户可以将工作流的设置模块化,并且避免在代码中硬编码过多的参数。这样,如果需要修改某个配置,直接修改对应的配置文件即可,而不需要改变工作流的主代码。

总结:

  • includeConfig 用于将外部的配置文件加载到当前工作流中,支持模块化配置管理。
  • 这种做法有助于提高代码的可维护性和灵活性,尤其是当多个流程共享相同的配置时,可以通过引入公共的配置文件来简化管理。

rn20b.R

output.md

这是关于 RNA-seq 数据分析结果的一些输出文件和其对应内容的概述。你提供的链接和文件主要围绕样本的质量控制(QC)、基因型特异性表达(ASE)分析等方面的可视化结果。以下是这些文件的详细解读和它们在数据分析中的作用:

1. Raw Samples

Raw samples 包含了原始的 RNA-seq 数据,这些数据未经任何清理或过滤,主要用于分析原始样本的质量和数据分布。

  • sample meta
    该文件通常包含有关样本的基本信息,如样本 ID、基因型、处理条件、重复样本信息等。这是数据分析中非常重要的一部分,帮助定义不同的实验组和处理方式。

  • hierarchical clustering w. pearson correlationhierarchical clustering w. spearman correlation
    这两个文件是基于原始 RNA-seq 数据进行层次聚类(Hierarchical Clustering)分析的可视化结果。

    • Pearson correlation:使用 Pearson 相关系数衡量样本间的相似性,常用于评估样本间的线性关系。
    • Spearman correlation:使用 Spearman 等级相关系数衡量样本间的关系,适用于非线性或非正态分布的数据。

    这两个图的目的是帮助理解样本间的相似性或差异性,通常通过颜色区分聚类结果,显示哪些样本彼此相似或属于同一类。

  • PCA clustering

    • mRNAtotal RNA
      PCA(主成分分析)是一种降维技术,用于简化高维数据,帮助我们理解样本之间的主要差异。在此,mRNAtotal RNA 分别代表不同类型的 RNA 样本。PCA 可视化帮助判断样本在主要维度上的分布情况,如是否存在明显的群体或处理效果。
  • tSNE clustering

    • mRNAtotal RNA
      tSNE(t-distributed Stochastic Neighbor Embedding)是一种非线性降维方法,通常用于探索高维数据的局部结构,尤其适用于更复杂的数据模式。和 PCA 相似,tSNE 可帮助理解样本的聚类情况。

2. Cleaned Samples

Cleaned samples 是经过质量控制和预处理(如去除低质量的读数、过滤掉冗余数据等)的数据。这部分数据是经过清理后,用于更精确的下游分析。

  • sample meta
    与原始样本的元数据类似,01.meta.tsv 文件包含了清理后样本的详细信息,通常包括数据清洗后的样本信息和相应的处理细节。

  • hierarchical clustering w. pearson correlationhierarchical clustering w. spearman correlation
    这两个文件与原始样本的层次聚类图类似,但这次是在数据清理后的结果。目的是查看数据清理是否改变了样本间的关系,检查清理后数据是否更为一致。

  • PCA clustering

    • mRNAtotal RNA
      清理后的 PCA 分析结果,帮助我们查看数据清理后的样本间差异。通常,清理后的数据应显示更明确的群体划分。
  • tSNE clustering

    • mRNAtotal RNA
      清理后的 tSNE 聚类图,与原始样本相比,清理后的数据可能表现出更好的聚类效果。

3. ASE (Allele-Specific Expression) Analysis

ASE分析 主要关注基因型特异性表达(即不同等位基因的表达差异),并生成与基因表达相关的结果。

  • SNP-level allele frequency distribution
    这是在单核苷酸多态性(SNP)位点上的基因型特异性表达分析结果。该图展示了不同 SNP 位点的等位基因频率分布,可以用于分析不同基因型对基因表达的影响。

  • gene-level allele frequency distribution
    这是在基因层面进行的 ASE 分析,展示了不同基因型在基因表达水平上的差异。该图可帮助理解不同基因型对整体基因表达的影响。

文件位置

  • MSI上文件路径/home/springer/zhoux379/projects/rnaseq/data/11_qc/rn**/01.rds
    • 这表示文件在 MSI(可能是一个高性能计算集群或服务器)上的存储位置。01.rds 文件通常是 R 语言的数据存储文件,保存了 RNA-seq 分析的中间结果。

Result file walk through

这个链接指向一个详细的结果文件 walkthrough,提供了如何解释这些分析结果的具体指导。它将帮助你深入理解每个分析步骤的目的、方法和结果。


总结

这些分析结果文件为 RNA-seq 数据的质量控制、样本聚类、基因型特异性表达分析等提供了丰富的信息。每个步骤的可视化图表都帮助你更好地理解不同实验组之间的差异,进而为进一步的生物学分析奠定基础。如果你有任何特定问题或需要进一步分析某个部分,随时可以告诉我!

第一部分:读取数据与数据处理

代码:
yid = 'rn20b'
dirw = file.path(dird, '11_qc', yid)
if(!dir.exists(dirw)) system(sprintf("mkdir -p %s", dirw))#{{{ read in
res = rnaseq_cpm_raw(yid)
th = res$th; tm = res$tm; tl = res$tl; th_m = res$th_m; tm_m = res$tm_m
解释:
  1. yid = 'rn20b':这是给定的物种或数据集的标识符(例如,rn20b 可能代表某个基因组版本)。

  2. dirw = file.path(dird, '11_qc', yid):指定数据输出目录。dird 应该是预定义的路径,而 yid 是项目标识符,路径拼接后形成完整的文件夹路径。

  3. if(!dir.exists(dirw)) system(sprintf("mkdir -p %s", dirw)):如果指定的文件夹路径 dirw 不存在,则创建该文件夹。system 函数执行命令行操作,这里是用来创建目录。

  4. res = rnaseq_cpm_raw(yid):调用 rnaseq_cpm_raw 函数,传入 yid(数据集标识符)并读取原始的 RNA-seq 数据,返回的结果 res 包含多个数据框:th(样本信息)、tm(基因表达矩阵)、tl(某些相关数据),以及其他与处理相关的数据框(th_mtm_m)。

结果:
  • th: 样本信息,包含样本的详细信息(如组织类型、基因型、处理等)。
  • tm: 基因表达矩阵,包含基因在不同样本中的表达值(通常是CPM)。
  • tl: 其他数据。
  • th_mtm_m: 这些可能是经过处理的 thtm 的变体,通常在后续分析中会使用。

第二部分:数据处理与合并

代码:
thl = th %>% arrange(Tissue, Genotype, Treatment) %>%select(Tissue, Genotype, Treatment, Replicate) %>%group_by(Tissue, Genotype, Treatment) %>% slice(1) %>% ungroup() %>%mutate(elab = Genotype)
解释:
  1. arrange(Tissue, Genotype, Treatment):首先,按 Tissue(组织类型)、Genotype(基因型)和 Treatment(处理类型)对 th 数据框进行排序,确保数据按照这些列的顺序排列。

  2. select(Tissue, Genotype, Treatment, Replicate):选择 Tissue(组织类型)、Genotype(基因型)、Treatment(处理类型)和 Replicate(重复次数)这几列,去除其他不需要的列。

  3. group_by(Tissue, Genotype, Treatment):将数据按 TissueGenotypeTreatment 分组,以便后续对每组数据进行操作。

  4. slice(1):在每个组内,选择第一行。因为我们可能希望每个不同的 TissueGenotypeTreatment 组合只有一个代表样本,通常这代表了每个组的第一个(或任意一个)样本。

  5. ungroup():去除分组信息,使得后续操作不再受到分组影响。

  6. mutate(elab = Genotype):创建一个新的列 elab,其值与 Genotype 相同,用于后续可视化和标注。

结果:
  • thl:处理后的数据框,包含每种 TissueGenotypeTreatment 组合的一个代表样本,并增加了 elab 列,用于存储基因型信息。

接下来的部分是将样本信息和基因表达矩阵进行合并。

代码:
th = res$th %>%mutate(grp = str_c(Tissue, Genotype, Treatment, sep="_")) %>%left_join(thl, by=c('Tissue', 'Genotype', 'Treatment', 'Replicate')) %>%replace_na(list(elab='')) %>%mutate(lab = str_c(Treatment, Tissue, Genotype, Replicate, sep='_'))
解释:
  1. mutate(grp = str_c(Tissue, Genotype, Treatment, sep="_")):为 th 数据框创建一个新的列 grp,该列是由 TissueGenotypeTreatment 拼接而成的字符串,用下划线连接。这样做可以帮助后续的分组与可视化。

  2. left_join(thl, by=c('Tissue', 'Genotype', 'Treatment', 'Replicate')):将 thl 数据框与 th 进行左连接。通过 TissueGenotypeTreatmentReplicate 四列进行连接。连接后,th 将包含来自 thlelab 列。

  3. replace_na(list(elab='')):如果在合并过程中 thl 中的某些 elab 值缺失,则用空字符串 '' 填充这些缺失值。

  4. mutate(lab = str_c(Treatment, Tissue, Genotype, Replicate, sep='_')):创建一个新的列 lab,它由 TreatmentTissueGenotypeReplicate 拼接而成,用下划线分隔。这通常用于给样本加标签,方便后续分析和可视化。

结果:
  • th:处理后的样本信息数据框,其中包含新的列 grplab,方便后续的分析和可视化。

接下来的部分是对基因表达矩阵的处理。

代码:
tm = res$tm %>% filter(SampleID %in% th$SampleID) %>%mutate(value=asinh(CPM))
解释:
  1. filter(SampleID %in% th$SampleID):过滤 tm(基因表达矩阵)中的样本,只保留 SampleIDth(样本信息)中的那些样本。这确保了基因表达数据和样本信息的一致性。

  2. mutate(value=asinh(CPM)):对 CPM(每百万映射值)取反双曲正弦变换(asinh)。这通常用于对表达值进行平滑,以减少极端值对结果的影响。

结果:
  • tm:处理后的基因表达矩阵,其中 value 列包含了经过变换的 CPM 值,适合进行后续分析。

好的,接下来的部分是代码的第三部分:

第三部分:数据可视化

这一部分主要是用于可视化基因表达数据,通过层次聚类(hclust)、PCA 和 tSNE 进行样本间的相似性分析。你将通过这些分析探索不同样本之间的关系,帮助你理解数据的潜在结构。

代码:
#{{{ hclust & tSNE
p1 = plot_hclust(tm, th, pct.exp=.7, cor.opt='pearson', var.col='Tissue', expand.x=.25)
ggsave(file.path(dirw, '11.hclust.p.pdf'), p1, width=8, height=15)p1 = plot_hclust(tm, th, pct.exp=.7, cor.opt='spearman', var.col='Tissue', expand.x=.25)
ggsave(file.path(dirw, '11.hclust.s.pdf'), p1, width=8, height=15)
解释:
  1. plot_hclust:这个函数用于绘制层次聚类图。层次聚类是一种将数据对象根据相似性进行分组的无监督学习方法。

    • tm:基因表达矩阵。
    • th:样本信息数据框。
    • pct.exp=.7:过滤掉低表达的基因,只保留那些在至少 70% 样本中有表达的基因。
    • cor.opt='pearson'cor.opt='spearman':指定用于计算相似性的相关性方法。pearson 是皮尔逊相关系数,spearman 是斯皮尔曼等级相关系数。
    • var.col='Tissue':样本的分类变量,这里是根据 Tissue(组织类型)来给样本上色。
    • expand.x=.25:控制x轴的扩展,调整聚类图的布局。
  2. ggsave(file.path(dirw, '11.hclust.p.pdf'), p1, width=8, height=15):将绘制的层次聚类图保存为 PDF 文件,文件名为 11.hclust.p.pdf

  3. 第二个聚类图与第一个类似,只不过它使用了不同的相关性计算方法 spearman

结果:
  • 生成两张层次聚类图,分别使用皮尔逊和斯皮尔曼相关性来展示样本间的相似性。

接下来的 PCA 和 tSNE 可视化:
p2 = plot_pca(tm, th[th$Treatment=='m',], pct.exp=.7, pca.center=T, pca.scale=F,var.shape='Tissue', var.col='Genotype', var.lab='elab', var.ellipse='grp',legend.pos='top.left', legend.dir='v', pal.col='aaas')
ggsave(file.path(dirw, '11.pca.m.pdf'), p2, width=6, height=6)p3 = plot_tsne(tm, th[th$Treatment=='m',], pct.exp=.7, perp=4, iter=1000, seed=42,var.shape='Tissue', var.col='Genotype', var.lab='elab', var.ellipse='grp',legend.pos='top.left', legend.dir='v', pal.col='aaas')
ggsave(file.path(dirw, '11.tsne.m.pdf'), width=6, height=6)p2 = plot_pca(tm, th[th$Treatment=='t',], pct.exp=.7, pca.center=T, pca.scale=F,var.shape='Tissue', var.col='Genotype', var.lab='elab', var.ellipse='grp',legend.pos='top.left', legend.dir='v', pal.col='aaas')
ggsave(file.path(dirw, '11.pca.t.pdf'), p2, width=6, height=6)p3 = plot_tsne(tm, th[th$Treatment=='t',], pct.exp=.7, perp=4, iter=1000, seed=42,var.shape='Tissue', var.col='Genotype', var.lab='elab', var.ellipse='grp',legend.pos='top.left', legend.dir='v', pal.col='aaas')
ggsave(file.path(dirw, '11.tsne.t.pdf'), width=6, height=6)
解释:
  1. plot_pca:主成分分析(PCA)是一种将高维数据降维到二维或三维的技术,用于探索数据中的主要变异源。

    • pct.exp=.7:选择在至少 70% 样本中有表达的基因。
    • pca.center=T:在进行PCA之前对数据进行中心化,即减去均值。
    • pca.scale=F:不对数据进行缩放(标准化)。
    • var.shape='Tissue':样本点的形状根据 Tissue(组织类型)进行区分。
    • var.col='Genotype':样本点的颜色根据 Genotype(基因型)进行区分。
    • var.lab='elab':样本点的标签使用 elab 列(即基因型)进行标注。
    • var.ellipse='grp':样本点的分组信息用于绘制置信椭圆。
  2. plot_tsne:t-分布随机邻居嵌入(tSNE)是一种降维方法,主要用于探索高维数据中的群体结构。

    • perp=4:设置 tSNE 的参数 perplexity,它决定了每个点的邻居数量。
    • iter=1000:设置迭代次数,决定优化的精度。
    • seed=42:设置随机种子以确保结果可重复。
    • plot_pca 类似,tSNE 的结果根据 TissueGenotype 来区分样本点的形状和颜色。
结果:
  • 生成四张图:
    • PCA 和 tSNE 图分别展示了处理为 mt 的样本。
    • 图中使用不同的颜色和形状来表示不同的组织类型和基因型。

好的,接下来是代码的最后一部分,它主要进行基因表达数据的进一步分析,并生成相应的可视化图。

第四部分:基因表达数据的进一步处理与可视化

这一部分主要处理基因表达数据,并绘制一些与基因表达水平相关的图表,包括基因型的表达分析(ASE,Allele-specific expression)。

代码:
#{{{ ase
pa1 = plot_ase(res$ase_gene, th, val.col='Genotype', pal.col='aaas')
fo = file.path(dirw, '31.afs_gene.pdf')
ggsave(fo, pa1, width=7, height=15)pa2 = plot_ase(res$ase_snp, th, val.col='Genotype', pal.col='aaas')
fo = file.path(dirw, '32.afs_site.pdf')
ggsave(fo, pa2, width=7, height=15)
#}}}
解释:
  1. plot_ase(res$ase_gene, th, val.col='Genotype', pal.col='aaas')

    • plot_ase:该函数用于绘制基因型特异性表达(ASE,Allele-Specific Expression)图,展示不同基因型在基因表达上的差异。
    • res$ase_gene:包含基因型特异性表达的基因数据。
    • th:样本信息数据框。
    • val.col='Genotype':图中使用基因型信息进行颜色区分。
    • pal.col='aaas':指定颜色调色板。

    该图展示了不同基因型在基因层面的表达差异,帮助理解是否存在基因型特异性表达。

  2. ggsave(fo, pa1, width=7, height=15)

    • 将上一步绘制的图保存为 PDF 文件,文件名为 31.afs_gene.pdf
  3. plot_ase(res$ase_snp, th, val.col='Genotype', pal.col='aaas')

    • 这一行代码与前面的 plot_ase 类似,但此处绘制的是单核苷酸多态性(SNP)层面的基因型特异性表达分析图。

    • res$ase_snp:包含SNP位点的基因型特异性表达数据。

    • 其他参数与上一步类似。

  4. ggsave(fo, pa2, width=7, height=15)

    • 将 SNP 层面的 ASE 图保存为 PDF 文件,文件名为 32.afs_site.pdf
结果:
  • 31.afs_gene.pdf:展示了基因层面的基因型特异性表达(ASE)。
  • 32.afs_site.pdf:展示了 SNP 层面的基因型特异性表达(ASE)。

总结

  • 这段代码涉及了 RNA-seq 数据的多个分析步骤:
    1. 数据读取和整理:将 RNA-seq 数据进行预处理,整理成适合后续分析的格式。
    2. 数据可视化:通过层次聚类、PCA 和 tSNE 等方法,探索样本间的关系。
    3. 基因型特异性表达分析(ASE):分析不同基因型在基因和 SNP 位点的表达差异。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497982.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 数据库 dmp文件从高版本导入低版本的问题处理

当前有个需求是将oracle 19c上的数据备份恢复到oracle 11g上使用。我们通过exp命令远程进行备份,然后通过imp进行恢复时出现IMP-00010: not a valid export file, header failed verification报错。 这是数据库版本问题,在使用exp命令导出的时候使用的客…

VScode怎么重启

原文链接:【vscode】vscode重新启动 键盘按下 Ctrl Shift p 打开命令行,如下图: 输入Reload Window,如下图:

NLP自然语言处理——使用飞桨实现基于LSTM的情感分析

任务说明: 通过对电影评论历史数据分析,构建深度学习分类模型,最终完成对新的数据样本的识别分类。 任务要求: 运用神经网络算法,创建、训练、评估模型,完成对电影评论的情感分类任务。 数据集说明&#xf…

百度热力图数据处理流程Arcgis PRO篇,Arcgis,QGIS见链接其他文章

目录 0、Arcgis,Arcgis Pro,QGis软件选择1、Arcgis,QGIS软件数据处理教程(最近太忙后续更新)1.1、Arcgis篇操作1.2、QGIS篇操作 2、Arcgis PRO 百度热力图数据处理流程!!!&#xff0…

从底层源码剖析AQS的来龙去脉!

文章目录 一、AQS概述二、AQS底层结构2.1 AQS底层基本变量2.2 Node节点结构2.3 FIFO队列 三、源码分析3.1 lock3.1.1 lock3.1.2 acquire3.1.2.1 tryAcquire3.1.2.2 addWaiter3.1.2.3 acquireQueued3.1.2.4 selfInterrupt 3.2 unlock 四、写在最后 一、AQS概述 谈到并发&#x…

运动健康小程序SpringBoot+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…

【Linux网络编程】第十七弹---深入理解以太网与ARP协议:从帧格式到数据报解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、认识以太网 1.1、以太网帧格式 1.2、认识 MAC 地址 1.3、对比理解 MAC 地址和 IP 地址 1.4、认识 MT…

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成logback 及 原理分析

文章目录 Pre官网集成步骤POM依赖使用第一步:编写 Logback 的配置文件第二步:在代码中使用 SLF4J 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging&…

引发C++程序内存泄漏的原因分析与排查方法总结

目录 1、概述 2、内存泄漏与程序的位数 3、调用哪些接口去动态申请内存? 4、引发内存泄漏的常见原因总结 4.1、通过malloc/new等动态申请的内存,在使用完后,没有调用free/delete去释放(也可能是调用了上面讲到的HeapAlloc或V…

仓颉编程语言:编程世界的 “文化瑰宝”

我的个人主页 在当今编程领域百花齐放的时代,各种编程语言争奇斗艳,服务于不同的应用场景和开发者群体。然而,有这样一种编程语言,它承载着独特的文化内涵,宛如编程世界里一颗熠熠生辉的“文化瑰宝”,那就…

【Java】Spring Bean生命周期讲解

Spring bean生命周期的重要性 了解bean生命周期有助于更好掌握Spring框架,理解其对bean实例的管理和创建方式。有助于解决bean相关问题,如循环依赖问题,利于编写健壮、灵活、易维护的应用程序。 bean definition概念 spring容器实例化时&…

物联网工厂可视化监控平台:为智能制造打造的可视化大屏

01行业背景 随着技术的不断进步,物联网(IoT)已经成为推动数字化转型的核心力量。物联网通过连接各种设备和传感器,实现数据的实时收集、传输和分析,为各行各业带来了革命性的变化。随着5G、云计算、大数据等技术的成熟…

跟着问题学18——大模型基础transformer模型详解(4)解码器

3 Decoder层 图中可以看到,解码器Decoder其实和编码器Encoder大同小异,核心区别是在最下面额外多了一个掩码多头注意力层masked mutil-head attetion。在解码器中,自注意力层仅被允许“注意”输出序列中前面的单词信息。这是通过在自注意力计…

day-102 二叉树中的链表

思路 DFS,先将链表转换为字符串s在进行匹配 解题过程 对二叉树进行遍历,每到一个新节点判断当前的字符串t长度是否大于等于的长度,如果满足,再将t从末尾截取s.length()长度的子串与s进行匹配,若匹配成功,结果为true&a…

RACI矩阵在项目管理中的应用:优化任务管理

在团队合作中,最怕的就是责任不清、任务分工混乱。谁该做什么,谁对结果负责,谁需要提供帮助,谁需要被通知?如果这些问题没有理清楚,就很容易出现任务没完成、团队内耗或者“甩锅”的情况。RACI责任矩阵正是…

uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器

前言 uniapp,碰到新需求,反转摄像头,需要在打卡的时候对上传图片加上水印,拍照前就显示当前时间日期地点,拍摄后在呈现刚才拍摄的图加上水印,最好还需要将图片上传到阿里云。 声明 水印部分代码是借鉴的…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data? Server-Sent Events (SSE):允许服务器连续发送多个 data: 行,每个代表一个独立的数据块。 流式响应:大模型服务通常以流式响应方式返回数据,提高响应速度。 批量处理&#x…

怎么在电脑桌面上设置备忘录,桌面工作提醒小工具哪个好?

在现代的工作和生活中,我们经常需要记录重要的事项和提醒。而在电脑上设置备忘录,无疑是最方便和有效的方法之一。那么,怎么在电脑桌面上设置备忘录?又有哪个工作提醒小工具值得推荐呢? 以Windows系统为例&#xff0c…

EasyExcel简介和读写操作

EasyExcel简介 官网地址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 EasyExcel 的主要特点如下: 1、高性能:EasyExcel 采用了异步导入导出的方式,并且底层使用 NIO 技术实现,使得其在导入导出大…

【网络协议】路由信息协议 (RIP)

未经许可,不得转载。 路由信息协议(Routing Information Protocol,简称 RIP)是一种使用跳数(hop count)作为路由度量标准的路由协议,用于确定源网络和目标网络之间的最佳路径。 文章目录 什么是…