【发布时间】:2017-10-31 03:21:33
【问题描述】:
我需要获取以下Json输入的Exon中的值并用“;”分割它并转换为嵌套 JSON,如下面的预期输出部分所示
示例输入
{
"regions":[
{
"metric":"GENE1",
"value":[
{
"metric":"Exons",
"value":[
"GENE1;chr1;45656;5656667"
],
"type":"set"
},
{
"metric":"Precent_no_call",
"value":4.22623,
"type":"simple"
},
{
"metric":"Total_NoCall_bases",
"value":112533,
"type":"simple"
}
],
"type":"metrics-set"
},
{
"metric":"GENE2",
"value":[
{
"metric":"Exons",
"value":[
"GENE2_Exon5;chr1;45656;5656667",
"GENE2_Exon10;chr1;45656;5656667"
],
"type":"set"
},
{
"metric":"Precent_no_call",
"value":0.746464,
"type":"simple"
},
{
"metric":"Total_NoCall_bases",
"value":16842,
"type":"simple"
}
],
"type":"metrics-set"
}
]
}
预期输出
{
"regions":[
{
"metric":"GENE1",
"value":[
{
"metric":"Exons",
"value":[
"GENE1",
{
"chromosome":"chr1",
"start":45656,
"end":5656667
}
],
"type":"set"
},
{
"metric":"Precent_no_call",
"value":4.22623,
"type":"simple"
},
{
"metric":"Total_NoCall_bases",
"value":112533,
"type":"simple"
}
],
"type":"metrics-set"
},
{
"metric":"GENE2",
"value":[
{
"metric":"Exons",
"value":[
"GENE2_Exon5",
{
"chromosome":"chr1",
"start":45656,
"end":5656667
},
"GENE2_Exon10",
{
"chromosome":"chr1",
"start":45656,
"end":5656667
}
],
"type":"set"
},
{
"metric":"Precent_no_call",
"value":0.746464,
"type":"simple"
},
{
"metric":"Total_NoCall_bases",
"value":16842,
"type":"simple"
}
],
"type":"metrics-set"
}
]
}
注意
另外,这与这里的问题有关:- Converting comma separated file to nested objects json in jq
提前感谢您的帮助。
我从逗号分隔的输入文件中尝试的解决方案(请参阅我发布的另一个问题)
def parse:
[
inputs # read lines
| split(",") # split into columns
| select(length>0) # eliminate blanks
| .[:1] + [.[1:-3]] + .[-3:] # normalize columns
]
;
def simple(n;v): {metric:n, value:v|tonumber, type:"simple"};
def set(n;v): {metric:n, value:v, type:"set"};
def chr(c;s;e): {chromsome:c, start:s, end:e};
def region:
set(.[0]; [
set("Exons"; (.[1] | tostring | split(";") |.[0]);
chr((.[1] | tostring | split(";") |.[1]),(.[1] | tostring | split(";") |.[2]),(.[1] | tostring | split(";") |.[3]))
]
),
simple("Fraction of bases"; .[5]),
simple("Total_bases"; .[6])
]
)
;
{
"Regions": parse | map(region)
}
我无法循环并递归读取。
【问题讨论】:
-
请展示您尝试过的内容以及遇到的问题。 SO 不是免费的编码服务。
-
嗨,Dat,我对使用 Jq 比较陌生,而且我也不是专业的软件工程师。我的专长是基因组学和脚本。我确实尝试通过创建一个从我之前的答案中使用的 JQ 函数来使其工作,我无法拆分子对象并且它正在打印整行。我将编辑问题并添加我尝试过的内容。谢谢你的建议。我会记住以后的帖子。
标签: json bioinformatics jq