发现TCGA下载的bam文件中文件名存在两种不同的模式,可以采用正则表达式对样本id进行提取。
下面是一个简单的例子:
test_char = c("TCGA-66-2781-11A-01W-0878-08_gdc_realn.bam",
"C662.TCGA-75-5126-10A-01D-1753-08.4_gdc_realn.bam")
sub(pattern = ".*\\.?(TCGA-\\w+{2}-\\w{4}-\\w{3}-\\w{3}-\\w{4}-\\w{2}).*",
replacement = "\\1", test_char)
这里关键点在于pattern的设定。
测试结果:
> sub(pattern = ".*\\.?(TCGA-\\w+{2}-\\w{4}-\\w{3}-\\w{3}-\\w{4}-\\w{2}).*", "\\1", test_char)
[1] "TCGA-66-2781-11A-01W-0878-08" "TCGA-75-5126-10A-01D-1753-08"
开始处的\\.?
似乎是多余的,测试一下:
> sub(pattern = ".*(TCGA-\\w+{2}-\\w{4}-\\w{3}-\\w{3}-\\w{4}-\\w{2}).*",
+ replacement = "\\1", test_char)
[1] "TCGA-66-2781-11A-01W-0878-08" "TCGA-75-5126-10A-01D-1753-08"
的确如此。
网友评论