玉米中的元基因调控网络突出了功能上相关的调控相互作用。\ase.01.test.R

总结:

  1. 数据读取

    • 加载了多个数据文件,包括RNA-seq数据、等位基因表达数据、样本信息以及BAM文件的统计数据。
  2. 等位基因数据处理

    • 通过 separate()spread()rename() 等函数对等位基因数据进行了长宽格式转换,确保每个样本的两个等位基因的计数值分别存储在 pa1pa2 列中。
    • 使用 replace_na() 将缺失值替换为零。
  3. 计算等位基因比例

    • 对每个样本计算了 pa1 的比例,表示该等位基因在该样本中的相对丰度。
  4. 合并与展示

    • 计算结果通过 inner_join() 与样本元数据(如基因型、处理类型等)进行了合并。
    • 最终打印出前120行的合并数据,帮助进一步分析样本的特征与基因表达情况。

这个脚本的核心目的是对等位基因的表达比例进行计算并与样本元数据结合,最终得到每个样本的等位基因表达比例以及相关的元数据信息,方便后续的分析与研究。

第一部分:数据读取和初始化

r 复制代码
source("functions.R")
t_cfg %>% print(n=50)

yid = 'rn17c'
yid = 'rn18g'
diri = file.path(dird, 'raw', yid)
fi = file.path(diri, 'cpm.rds')
x = readRDS(fi)
fi = file.path(diri, 'ase.rds')
ase = readRDS(fi)
th = x$th %>% select(SampleID,Tissue,Genotype,Treatment)
fi = file.path(diri, 'ase0.tsv')
ase0 = read_tsv(fi)
fi = file.path(diri, 'bamstats.tsv')
bs = read_tsv(fi)

解析

  1. source("functions.R")

    这一行加载了一个外部的R脚本文件 functions.R,其中可能定义了一些用于数据处理的自定义函数。通过调用 source(),你可以在当前脚本中使用该文件中的所有函数。

  2. t_cfg %>% print(n=50)
    t_cfg 可能是一个配置对象或数据框,通过管道操作符 %>% 将其传递给 print() 函数,打印前50行数据。t_cfg 可能包含了实验配置或元数据。

  3. yid = 'rn17c'yid = 'rn18g'

    这两行代码似乎是设置了不同的实验或样本的ID。实际运行时,只有第二个 yid = 'rn18g' 会被有效地赋值(因为它覆盖了前一个)。

  4. diri = file.path(dird, 'raw', yid)

    创建了一个文件路径 diri,指向存放原始数据的目录。dird 可能是一个根目录变量,yid 是前面设置的样本ID(rn18g),这条路径指向与样本ID相关的文件夹。

  5. fi = file.path(diri, 'cpm.rds')

    创建了指向 cpm.rds 文件的路径。这个文件存储了RNA-seq数据(可能是经过计算后的每百万计数值,CPM)。

  6. x = readRDS(fi)

    使用 readRDS() 读取 cpm.rds 文件,并将其存储在变量 x 中。x 可能是一个包含RNA-seq数据的列表或数据框,其中包含了基因表达信息。

  7. fi = file.path(diri, 'ase.rds')

    创建了指向 ase.rds 文件的路径。ase 可能是一个与RNA-seq数据相关的文件,包含了某些分析结果(例如,表达的等位基因信息)。

  8. ase = readRDS(fi)

    读取 ase.rds 文件并将其赋值给变量 ase,它存储了基因组数据(可能与等位基因表达量相关)。

  9. th = x$th %>% select(SampleID, Tissue, Genotype, Treatment)

    x 中提取 th 数据框(通常包含样本元数据),并选择了四列(SampleIDTissueGenotypeTreatment)。这些列存储了与每个样本相关的元数据(样本ID、组织类型、基因型和处理类型)。

  10. fi = file.path(diri, 'ase0.tsv')ase0 = read_tsv(fi)

    创建了指向 ase0.tsv 文件的路径并读取该文件,将其存储在 ase0 变量中。ase0 可能包含了其他形式的基因组数据,格式为TSV。

  11. fi = file.path(diri, 'bamstats.tsv')bs = read_tsv(fi)

    创建了指向 bamstats.tsv 文件的路径,并使用 read_tsv() 读取该文件,存储在 bs 变量中。bamstats.tsv 可能包含与BAM文件相关的统计信息,如读取的数量、覆盖度等。

总结:

这一部分主要是加载了实验数据,包括RNA-seq的表达数据cpm.rds),等位基因表达数据ase.rds),样本元数据x$th),以及额外的基因组数据ase0.tsvbamstats.tsv)。这些数据为后续的分析(如基因表达模式分析、样本信息处理等)提供了必要的输入。

很好!接下来是第二部分:对等位基因数据进行处理

第二部分:对等位基因数据进行处理

r 复制代码
ase1 = ase %>%
    separate(sid, c('sid', 'pa'), sep='[\\.]') %>%
    spread(pa, cnt) %>%
    rename(pa1 = `1`, pa2 = `2`) %>%
    replace_na(list(pa1=0, pa2=0))

解析

  1. ase %>% separate(sid, c('sid', 'pa'), sep='[\\.]')

    • 这里,ase 是之前从 ase.rds 读取的等位基因数据。
    • separate() 函数用于将 sid 列按分隔符([\\.],即".")拆分成两列:sidpasid 可能是样本的ID,而 pa 代表的是等位基因的不同部分(例如,基因的两个等位基因可能会通过这个列标记)。
  2. spread(pa, cnt)

    • spread() 函数用于将数据从"长格式"转换为"宽格式"。
    • 这里,将 pa 列(表示等位基因的部分)转换为列名,并将 cnt(计数值)分配到相应的列。结果就是,等位基因的计数(cnt)将被分配到 pa1pa2 两列,分别表示两个等位基因的计数。
  3. rename(pa1 = 1, pa2 = 2)

    • rename() 函数将列名 12 分别重命名为 pa1pa2,这使得数据更具可读性和直观性。这里的 pa1pa2 代表两个等位基因的计数值。
  4. replace_na(list(pa1=0, pa2=0))

    • replace_na() 函数用于替换缺失值(NA)。
    • 在这里,如果 pa1pa2 存在缺失值,则将其替换为0,表示这些等位基因没有被检测到或计数为0。

总结:

这一部分主要是对 ase 数据进行处理,将原始的等位基因数据从长格式转换为宽格式,并处理缺失值 。经过处理后,ase1 数据框将包含每个样本的两个等位基因(pa1pa2)的计数。

好的,接下来是第三部分:计算等位基因比例并与样本元数据合并

第三部分:计算等位基因比例并与样本元数据合并

r 复制代码
ase1 %>% group_by(sid) %>%
    summarise(prop.B = sum(pa1) / sum(pa1 + pa2)) %>%
    ungroup() %>%
    inner_join(th, by = c('sid' = 'SampleID')) %>%
    print(n=120)

解析

  1. ase1 %>% group_by(sid)

    • 这行代码将 ase1 数据框按 sid(样本ID)进行分组。每个组代表一个样本,之后会对每个样本的等位基因计数进行聚合计算。
  2. summarise(prop.B = sum(pa1) / sum(pa1 + pa2))

    • summarise() 函数用于生成每个组(每个样本)的汇总统计信息。
    • 在这里,通过计算 pa1pa2(代表两个等位基因的计数)的和,求出 pa1 占总计数(pa1 + pa2)的比例,结果存储在新列 prop.B 中。
      • prop.B 表示每个样本中,等位基因 pa1 的比例。
  3. ungroup()

    • ungroup() 解除之前的分组操作,这样后续的操作(如 inner_join())不再基于分组进行。这样可以防止在后续操作中意外地保持分组状态。
  4. inner_join(th, by = c('sid' = 'SampleID'))

    • 使用 inner_join() 将计算得到的每个样本的等位基因比例(prop.B)与之前加载的样本元数据(th)合并。
    • 合并的条件是 sid(来自 ase1)与 SampleID(来自 th)相匹配。这样,每个样本的等位基因比例会和样本的其他信息(如组织类型、基因型、处理类型等)一起出现在合并后的数据框中。
  5. print(n=120)

    • 打印合并后的数据框的前120行,以便查看计算结果和合并后的样本信息。通过这种方式,你可以检查每个样本的等位基因比例以及与其相关的元数据。

总结:

这一部分的代码计算了每个样本中 pa1 的比例(即 prop.B),然后将这些信息与样本的元数据合并,最终打印出前120行合并后的数据。合并后,每个样本的等位基因比例与其他信息(如基因型、处理类型等)一起展示,便于后续分析和理解样本的特征。

你清楚这一部分了吗?如果理解了,我们可以继续。

相关推荐
HEU_firejef24 分钟前
设计模式——工厂模式
java·开发语言·设计模式
云计算DevOps-韩老师27 分钟前
【网络云SRE运维开发】2024第52周-每日【2024/12/31】小测-计算机网络参考模型和通信协议的理论和实操考题
开发语言·网络·计算机网络·云计算·运维开发
fajianchen29 分钟前
应用架构模式
java·开发语言
Code成立1 小时前
《Java核心技术 卷II》流的创建
java·开发语言·流编程
Amo 67292 小时前
axios 实现进度监控
开发语言·前端·javascript
魂兮-龙游3 小时前
C语言中的printf、sprintf、snprintf、vsnprintf 函数
c语言·开发语言·算法
越甲八千3 小时前
C语言中的强弱符号
c语言·开发语言
编程梦想家(大学生版)3 小时前
使用Python和OpenCV进行视觉图像分割
开发语言·python·opencv
微凉的衣柜3 小时前
【C++/CMake】从静态库到动态库:一行改动解决 “找不到 -ljsoncpp” 链接报错
开发语言·c++
sara_shengxin4 小时前
LUA基础语法
开发语言·lua