UCSC Xena Demo-针对私人数据集进行分析


经过,我们能够对TCGA等公开数据库进行简单的可视化处理了,但实际上UCSC Xena可以做到更多。

这里我们从GEO下载数据集GSE121720作为私人数据集,然后使用UCSC Xena进行分析。这一部分的tutorial可以见官方提供的视频教程,或者是其网页

1. 安装Local Xena Hub

为了安全性和服务器压力考虑,对于私人数据的处理,其服务器是使用Local Xena Hub软件架设在本地机上的。Local Xena Hub由java编写。

下载需要点击VIEW MY DATA,这里提供windows的直接下载链接。在windows上的安装比较简单,就是点一点就好了。

2. 开启Local Xena Hub

直接进入VIEW MY DATA,如果已经安装了Local Xena Hub,并且其安装位置在Applications folder中(其实自动就安装到这里),则浏览器会自动开启它。如果没有自动开启,需要主动双击打开exe文件。这时候网页会连接到本地服务器。

需要使用Chrome或Firefox浏览器。

3. 清理数据集

为了本地服务器可以识别私人数据集,我们必须把数据集整理成一定的格式。

总的来说有以下几条要求:

  • 首先,本地服务器可以识别多种数据,但这些数据必须是TCGA的“level 3”格式的数据(比如gene表达的值、transcript的值、probe的值)。不支持FASTQ、BAMs等更加“raw”的数据格式。
  • 所有的数据必须是tab-delimited的,文件的后缀一般是.tsv.txt,不支持Excel格式(.xls.xlsx)。
  • 不要有重复的genes/probes/identifiers或samples,不然本地服务器只会保留重复的第一个。
  • 使用空格或"NA"来表示缺失值。
  • 使用.来表示小数点,不要使用,(在一些语言中用逗号做小数分割符)。

至于具体的数据格式,这里细化分为了4种,分别进行介绍:

3.1 Basic Genomic data

大部分的基因组level3级数据,是正常的numerical rectangle/matrix/spreadsheet型数据。即每一列是一个样本,每一行是一个变量,反过来也可以。比如下面的这些:

  • RNA-seq expression (exon, transcript, gene, etc)
  • Array-based expression (probe, gene, etc)
  • Gene-level mutation
  • Gene-level copy number
  • DNA methylation
  • RPPA
  • and more ...

图示(注意Sample的存在):


服务器可以自动将一些probesname(比如TP53、EGFR等)。其支持的probes中可以查到。

3.2 Basic Phenotypic data

也是rectangle/matrix/spreadsheet型数据,用来描述临床信息,可以是categorical或numerical的。可以是一行是样本一列是变量或者反过来,比如下面的这些:

  • phenotype/patient/clinical data (age, weight, if there was blood drawn, etc)
  • sample/aliquot data (where it was sequenced, tumor weight, etc)
  • derived data (regulon activity for a gene, etc)
  • genomic signatures (EMT signature score, stemness score, etc)
  • other (whether a sample has an ERG-TMPRSS2 fusion, whether a sample has WGS data available, etc)

这一类数据是最灵活的,比如下面的形式:


3.3 Advanced Segmented data

需要有5列,分别是samplechrstartendvalue,现在支持的coordinators是hg38、hg19和hg18。主要就是copy number。


3.4 Advanced Positional data

需要有6列,分别是samplechrstartendreference(参考基因组)、alt(变异后的编码)。另外还可以有的列有geneeffectDNA_VAFRNA_VAFAmino_Acid_Change。这些列不是必须的但会增强数据的可视化(比如根据effect为不同的突变赋予不同的颜色)。

现在支持的coordinators是hg38、hg19和hg18。


3.5 其他

也支持其他数据,但需要和官方联系得到支持。


现在我们下载的数据是这样的格式:

clinical matrix

genomic matrix

也需要进一步的处理才会符合上面的要求,以下是处理代码:

# py preprocess.py
import os.path as osp
import re

import pandas as pd

data_root = "G:\\dataset\\UCSCexamples"
cli_fn = "GSE121720_series_matrix.txt"
gene_fn = "tpm.txt"

# 处理clinical 数据
cli_data = {}
with open(osp.join(data_root, cli_fn), "r") as f:
    for line in f:
        if line.startswith("!Sample"):
            # 1. 将每一行的第一个元素去除!Sample_作为key,剩下的提取出“”中的部分作为value
            key, value = line.split("\t", maxsplit=1)
            key = key[len("!Sample_"):]
            value = re.findall(r'"(.*?)"', value)

            # 2. 如果value中的元素以xx:yy形式存在,则xx作为其新的变量名
            if all([":" in v for v in value]):
                v1s, v2s = [], []
                for v in value:
                    v1, v2 = v.split(":", maxsplit=1)
                    v1s.append(v1.strip())
                    v2s.append(v2.strip())
                if len(set(v1s)) == 1:
                    key = v1
                    value = v2s

            # 保存到dict中
            cli_data[key] = value
cli_data = pd.DataFrame(cli_data)
# 这里变量名是title,需要对其进行一些处理:包括去掉一些冗余的字符和改一下变量名
cli_data.insert(
    0, "Sample", cli_data["title"].str.split(" ", n=1, expand=True)[0])
cli_data.pop("title")
# 把名称超过255长度的列去掉
bool_index = cli_data.columns.map(lambda x: len(x) < 255)
cli_data = cli_data.loc[:, bool_index]
cli_data.to_csv(osp.join(data_root, "clean_cli.tsv"), sep="\t", index=False)

# 处理RNAseq data(主要为第一列加Sample的column name)
writer = open(osp.join(data_root, "clean_rnaseq.tsv"), "w")
with open(osp.join(data_root, gene_fn), "r") as f:
    for i, line in enumerate(f):
        if i == 0:
            line = "Sample\t" + line
        writer.write(line)

处理结果:

clean clinical matrix

clean genomic matrix

4. 载入数据集

载入数据集的方式有两种:

4.1 使用VIEW MY DATA网页载入

直接使用网页上的3-steps wizard来完成,这需要一个文件一个文件的import,对于文件比较少的比较适合。

注意事项: * 变量名长度不能超过255。 * 将表示样本的列放在第一列或第一行。

结果:


4.2 使用命令行载入

Toturial地址,这适合数据文件比较多的时候,可以通过写一个metadata file来载入。

但实际上也不是很方便,每一个数据文件就必须创建一个json文件。

Metadata file

  • 需要和数据文件在同一个路径下
  • 需要json文件名和数据文件名一致:my_data.tsv -- my_data.json

metadata file有以下field可以填写:

  • type:必填,是数据这个数据文件的类型,

    • genomicMatrix:Basic Genomic data,必须是一列是一个样本,一行是一个变量,不支持另一种形式。
    • clinicalMatrix:Basic Phenotypic data,必须是一列是一个样本,一行是一个变量,不支持另一种形式。
    • mutationVector:Advanced Positional data。
    • genomicSegment:Advanced Segmentation data。
  • cohort:必填,即study的名字。

  • assembly:如果是mutation或segmentation copy number数据,需要填写,即支持的coordinations。

  • Probemap:这个比较麻烦,简单来说,就是如果数据集使用的是自己的probes,则需要建立一个probes到其他identifiers的map,所以需要上传有这个映射关系的文件。所以需要准备3个文件:

    • Probemap文件:比如:


    • probemap.json

      { “type”:“probeMap”,
      “assembly”:“hg19"}
    • data.json

      加上如下一条:

      ":probeMap":"/unc_v2_exon_hg19_probe_TCGA"
    • data.tsv

UCSC Xena官方准备了一些probemap文件,可以使用xenaPython app来获得,可见{% post_link ucsc-python %}的介绍。

命令行

  • 上传数据:

    # 上传文件下的所有数据
    java -jar cavm-0.xx.0-standalone.jar -l ~/xena/files/*
    # 上传一个数据
    java -jar cavm-0.xx.0-standalone.jar -l ~/xena/files/file1.tsv
  • 删除数据:

    java -jar cavm-0.xx.0-standalone.jar -x ~/xena/files/file1.tsv
    java -jar cavm-0.xx.0-standalone.jar -x ~/xena/files/file1.tsv ~/xena/files/file2.tsv
  • 帮助:

    java -jar cavm-0.xx.0-standalone.jar -h

需要找到那个cavm*.jar文件,在那个文件所在路径下运行。

5. 数据集分析

其分析方式和一致,下面是最后的可视化结果:

GSE121720的可视化

有几点需要注意:

  1. 如果想要做K-M plot,则需要clinical data中有相应的Time to Event和Event变量。其命名必须按照tutorial-kmplot中进行。
  2. 如果要为自己的实验室或科室创建一个数据服务器,则需要另外的步骤,请见Hubs for institutions, collaborations, labs, and larger projects

文章作者: Luyiyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luyiyun !
评论
评论
 上一篇
UCSC Xena Visual-Spreadsheet介绍 UCSC Xena Visual-Spreadsheet介绍
主要介绍了spreadsheet在不同数据类型下的不同表示,重点是copy number和mutation数据的展示
2020-05-25
下一篇 
UCSC Xena Demo-低级胶质瘤和胶质母细胞瘤的分子特征 UCSC Xena Demo-低级胶质瘤和胶质母细胞瘤的分子特征
本篇主要介绍了如何使用UCSC Xena来对TCGA的数据进行一个简单的可视化。使用的示例数据是LGG和BGM的chr1、chr19的copy number数据,以及tp53、ATRX的somatic mutation数据
2020-05-24
  目录