外显子bed

NCCL室间质评推荐使用的外显子bed是UCSC的hg19外显子bed,而推荐使用的TMB计算区间则是CCDS的交集。下面介绍怎么获得这两个bed。

使用UCSC Table Browser,assembly选择GRCh37/hg19,track选择NCBI RefSeq,output format选择BED,然后选择get output,再在下一个页面中选择Exons plus 0。点击get Bed即是外显子bed。需注意的是,这个bed包含同一基因的多个转录本。

对于CDS区域(即外显子区域去除UTR3),可以在上一步选择Coding Exons,然后获得bed。


另外可以从NCBI获取CCDS的bed。

对于GRCh37,最新的版本是Hs105。

wget https://ftp.ncbi.nlm.nih.gov/pub/CCDS/archive/Hs105/CCDS.current.txt

使用下面的python脚本转换为bed格式,需要注意的是,CCDS中的坐标需要加1。

ccds = open("CCDS.current.txt", "r", encoding="utf-8")
ccdsBed = open("CCDS.bed", "w", encoding="utf-8")
for line in ccds:
    if not line.startswith("#"):
        lines = line.split("\t")
        chrom = lines[0]
        gene = lines[2]
        ccds_id = lines[4]
        ccds_status = lines[5]
        cds_strand = lines[6]
        cds_locations = lines[9]

        if ccds_status != "Public":
            continue
        
        n = 0
        cdsList = cds_locations.replace("[", "").replace("]", "").split(", ")
        if cds_strand == "-":
            cdsList = cdsList[::-1]
        for c in cdsList:
            n += 1
            exonNum = str(n)
            cLoc = c.split("-")
            start = str(int(cLoc[0]) + 1)
            end = str(int(cLoc[1]) + 1)
            name = gene + "_" + ccds_id + "_exon" + exonNum
            ccdsBed.write("\t".join([chrom, start, end, name, cds_strand]) + "\n")

ccdsBed.close()
ccds.close()

结果使用bedtools进行排序

bedtools sort -i CCDS.bed > CCDS.sort.bed

由于CCDS中包含相同基因的不同转录本,因此结果文件中会包含重复的区域,最后使用bedtools来将区域进行合并

bedtools merge -i CCDS.sort.bed > CCDS.merge.bed