我正在尝试根据其seqnames对Granges对象进行排序。
我有一个GRanges对象,genome.ref,它具有随机顺序的间隔。
seqnames(genome.ref)
factor-Rle of length 3141 with 5 runs
Lengths: 724 844 86 722 765
Values : CHR02 CHR04 CHR01 CHR03 CHR05
Levels(5): CHR02 CHR04 CHR01 CHR03 CHR05
如果我使用sort,R将根据值排序,但不按字母数字顺序排序:
sort(genome.ref)
生成的Granges对象将首先包含所有CHR02区间,然后CHR04,然后CHR01等组合在一起而不是随机,但顺序将不是基于seqlevels的字母数字(即CHR01区间不会首先出现)。 / p>
如何使用sort命令将订单指定为字母数字?
答案 0 :(得分:1)
在创建genome.ref
以使用GenomicRanges包中的sortSeqlevels
函数时,这可能是最简单的。这巧妙地删除了任何' chr'前缀,还处理罗马数字和X / Y染色体。
否则,您最好使用seqinfo(genome.ref, new2old=mapping) <- Seqinfo(reordered)
创建新的注释,您需要创建(小心!)reordered
和mapping
变量以反映新的顺序(可能再次使用sortSeqlevels)和新旧之间的对应关系。如您所见,在您对GRanges
构造函数的初始调用中,首先使用正确的顺序更容易。