2

这个问题是许多学习生物信息学和 DNA 数据分析新手都在努力解决的问题:

假设我有 20 个具有相同列标题的表。每个表代表一个患者样本,每行代表一个在该样本中发生突变的基因座(位点)。每个位点由两列共同唯一标识 - 染色体编号和碱基编号(例如 1 和 43535、1 和 33456、1 和 3454353)。有几列给出了每个突变的不同特征,包括一个名为 Gene 的列,它给出了该位点的基因。一个基因中可以突变多个位点 - 这意味着 Gene 列可以在一个表中多次具有相同的值。

我想通过 Gene来同时查询所有这些表。我从 Gene 列输入一个值,我希望输出所有表(样本)的名称,其中基因名称存在于 Gene 列中,以及每个样本的整行(最好),这样我可以在一个输出页面上比较多个样本中该基因的突变特征。

我还想输入一个数字,比如 4,并希望输出一个在 20 名患者中至少有 4 名发生突变的基因列表(其名称出现在 20 个表中至少 4 个的“基因”列中的基因列表)。

做到这一点的“最简单方法”是什么?除了这两个之外,假设我想进行更灵活的查询,那么“最佳方式”是什么?

我是一名 MD,没有任何特定的软件专业知识,但我愿意投入必要的时间来构建这个查询系统。几行代码不会让我失望..

例如数据:

Func    Gene    ExonicFunc                 Chr  Start       End        Ref  Obs
exonic  ACTRT2  nonsynonymous SNV           1   2939346     2939346     G   A
exonic  EIF4G3  nonsynonymous SNV           1   21226201    21226201    G   A
exonic  CSMD2   nonsynonymous SNV           1   34123714    34123714    C   T

这只是列的三分之一。删除了多个列以适合此处的页面大小...

谢谢你。

4

2 回答 2

1

创建一个将所有表联合在一起的视图。您可能应该添加有关 ti 来自哪个表的附加信息:

create view allpatients as
    select 'a' as whichtable, t.*
    from tableA t
    union all
    select 'b' as whichtable, t.*
    from tableB t
    ...

您可能会发现通过创建包含所有患者的表来“实例化”视图更容易。只需有一个存储过程,通过组合 20 个表来重新创建表。

或者,您可能会发现您有很大的单个表(数百万行)。在这种情况下,您可能希望将每个原始表视为一个分区。

于 2012-06-25T17:27:11.273 回答
0

如果您拥有的是一堆 Excel 文件,您可以将它们全部导入同一张表中,并使用不同的列作为患者 ID。没有必要为此创建 20 个不同的表——事实上,这是一个坏主意。

完成后,转到 Access 的查询设计、SQL 视图并使用这些查询:

要创建返回输入基因名称的所有字段的查询:

select *
from gene_data
where gene = [GeneName]

要创建一个返回在超过 4 个样本中发生突变的基因名称的查询:

select gene
from
(select gene, sample_id
from gene_data
group by gene, sample_id) g
group by gene
having count(sample_id) > 4

之后,切换到设计视图——您将看到如何使用 GUI 创建类似的查询。

于 2012-06-25T17:57:23.747 回答