rank()返回的是对向量中每个数值对应的秩
order()返回的值表示位置,依次对应的是向量的最小值、次小值、第三小值......最大值
rank() sort() order() 和 reorder()
data<=c(2,3,6,1)
reorder()函数在ggplot2中见过:
x = reorder(Var1, -Freq) Var1是分类变量,Freq是数值型变量
help(recorder) 的结果:
Reorder Levels of a Factor
Description
reorder is a generic function. The "default" method treats its first argument as a categorical variable, and reorders its levels based on the values of a second variable, usually numeric.
Usage
reorder(x, ...)
Default S3 method:
reorder(x, X, FUN = mean, ...,
order = is.ordered(x))
目录
在之前的文章里介绍了如何通过直方图来可视化等位杂合碱基的比例来判断物种的染色体倍数性。在本文里会继续向下挖掘,介绍如何可视化染色体上的拷贝数变化(CNVs)。
和前文一样的操作,使用包自带的数据。
我们需要去除过高和过低深度的数据。和前文的操作一样,提取vcf文件里的深度数据"AD"。
然后过滤出10%~90%的数据,当然此处可以根据实际情况进行微调。然后对第一种出现频率最高的碱基进行可视化。(一般情况下一个位点上会有两种碱基,具体参考前文。)
同样也可以对出现频率第二高的碱基进行同样的操作,这里节约篇幅就省略了。
为了避免复杂的基于AD比例的模型假设,程序里设计了非参数估计法来计算峰值。计算完了以后可以直接对染色体进行拆分以后可视化进行校验。
根据尺寸把染色体分割成合适的大小
然后用 freq_peak 函数计算峰值。并对数据进行处理,去掉负数和Na值。
计算到此为止,可以可视化实际数据来验证计算的正确性。
仔细想一下,峰值计算的结果其实就是CNV的结果。这里根据窗口大小把染色体分成了若干段。(那么是不是可以给每一段 CDS进行细分然后计算出每一个CDS的具体数字呢????)
当然也可以把所有样本组合到一起。