【问题标题】:How do you loop and match column 1 and 2 of file1 with cell in column1 of file2 in order to replace them with the adjacent cell in column 2 of file 2?您如何循环和匹配 file1 的第 1 列和第 2 列与 file2 的 column1 中的单元格,以便用文件 2 的第 2 列中的相邻单元格替换它们?
【发布时间】:2018-08-06 05:35:06
【问题描述】:

我在一个项目中使用 String-db 交互,但我发现交互的完整列表使用它们的整体蛋白质 ID。我想用 HGNC 批准的基因符号替换那些 ensembl 蛋白质 ID 名称。使用 BioMart,我下载了一个包含 ensembl 蛋白质 ID 及其各自基因名称的表格。因此,我需要将字符串文件中找到的所有 ensembl ID(第一列和第二列都有 ensembl ID)与我的 biomart 文件中的 ensembl ID 匹配,然后用它们在 biomart 文件中找到的基因符号替换每个 ID。我有一个“9606”的额外并发症。在字符串文件中的每个 ensembl ID 之前,而不是在 BioMart 文件中。这个数字表示它是一个人类 ensembl ID,并且仍然需要在新的 tbl String 文件中。

注意:这些文件很大!

字符串文件示例(前 10 行):

9606.ENSP00000000233    9606.ENSP00000263025    ptmod       f   f   150
9606.ENSP00000000233    9606.ENSP00000265709    reaction    f   f   908
9606.ENSP00000000233    9606.ENSP00000265709    catalysis   t   t   908
9606.ENSP00000000233    9606.ENSP00000263025    inhibition  inhibition  t   t   154
9606.ENSP00000000233    9606.ENSP00000265709    binding     f   t   908
9606.ENSP00000000233    9606.ENSP00000265709    catalysis   t   f   908
9606.ENSP00000000233    9606.ENSP00000263025    inhibition  inhibition  f   t   150
9606.ENSP00000000233    9606.ENSP00000263025    inhibition  inhibition  f   f   150
9606.ENSP00000000233    9606.ENSP00000265709    binding     f   f   908
9606.ENSP00000000233    9606.ENSP00000263025    catalysis   t   t   156

BioMart 文件(适用于上述文件的示例):

Ensembl_Protein_ID  Gene_Symbol
ENSP00000265709 ANK1
ENSP00000000233 ARF5
ENSP00000263025 MAPK3
ENSP00000388118 NCSTN

输出文件:

9606.ARF5   9606.MAPK3  ptmod       f   f   150
9606.ARF5   9606.ANK1   reaction    f   f   908
9606.ARF5   9606.ANK1   catalysis   t   t   908
9606.ARF5   9606.MAPK3  inhibition  inhibition  t   t   154
9606.ARF5   9606.ANK1   binding     f   t   908
9606.ARF5   9606.ANK1   catalysis   t   f   908
9606.ARF5   9606.MAPK3  inhibition  inhibition  f   t   150
9606.ARF5   9606.MAPK3  inhibition  inhibition  f   f   150
9606.ARF5   9606.ANK1   binding     f   f   908
9606.ARF5   9606.MAPK3  catalysis   t   t   156

我不知道该怎么做。我尝试过使用 awk 和 perl,但没有任何效果。我仍然是生物信息学方面的菜鸟。如果有人愿意帮助这个可怜的家伙,我将不胜感激。

【问题讨论】:

  • 你尝试了什么?本质上,您需要制作 BioMart 数据的哈希表,然后用哈希值在哈希键的“字符串”文件中进行替换。

标签: perl awk bioinformatics genetics


【解决方案1】:

听起来您所需要的(假设 String 中的所有值都存在于 BioMart 中,就像您的示例中一样)是:

awk '
NR==FNR{ map[$1]=$2; next }
{
    for (i=1; i<=2; i++) {
        split($i,f,/[.]/)
        $i = f[1] "." map[f[2]]
    }
    print
}
' BioMartFile StringFile

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2016-10-20
    • 2016-09-30
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2020-02-12
    • 2015-04-16
    相关资源
    最近更新 更多