根据GRnges对象的seqnames对其进行排序

时间:2014-07-08 14:59:05

标签: r

我正在尝试根据其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命令将订单指定为字母数字?

1 个答案:

答案 0 :(得分:1)

在创建genome.ref以使用GenomicRanges包中的sortSeqlevels函数时,这可能是最简单的。这巧妙地删除了任何' chr'前缀,还处理罗马数字和X / Y染色体。

否则,您最好使用seqinfo(genome.ref, new2old=mapping) <- Seqinfo(reordered)创建新的注释,您需要创建(小心!)reorderedmapping变量以反映新的顺序(可能再次使用sortSeqlevels)和新旧之间的对应关系。如您所见,在您对GRanges构造函数的初始调用中,首先使用正确的顺序更容易。