查看原文
其他

生信编程直播第12题:json格式数据的格式化

2017-05-08 生信菜鸟团 生信技能树

json数据大家统一用我给的测试数据,自己在浏览器打开下载:http://biotrainee.com/jbrowse/JBrowse-1.12.1/sample_data/json/modencode/modencodeMetaData.json


范例如下:

[AppleScript] 纯文本查看 复制代码

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
   "types" : {
      "data set" : {
         "pluralLabel" : "data sets"
      }
   },
   "items" : [
      {
         "technique" : "ChIP-chip",
         "factor" : "BEAF-32",
         "target" : "Non TF Chromatin binding factor",
         "principal_investigator" : "White, K.",
         "Tracks" : [
            "fly/White_INSULATORS_WIG/BEAF32"
         ],
         "submission" : "21",
         "label" : "BEAF-32;Embryos 0-12 hr;ChIP-chip",
         "category" : "Other chromatin binding sites",
         "type" : "data set",
         "Developmental-Stage" : "Embryos 0-12 hr",
         "organism" : "D. melanogaster"
      },
      {
         "technique" : "ChIP-chip",
         "factor" : "CP190",
         "target" : "Non TF Chromatin binding factor",
         "principal_investigator" : "White, K.",
         "Tracks" : [
            "fly/White_INSULATORS_WIG/CP190"
         ],
         "submission" : "22",
         "label" : "CP190;Embryos 0-12 hr;ChIP-chip",
         "category" : "Other chromatin binding sites",
         "type" : "data set",
         "Developmental-Stage" : "Embryos 0-12 hr",
         "organism" : "D. melanogaster"
      },


因为帖子长度有限,我就只截取了一部分,请自己下载查看,如果是完整的json,可以用在线工具查看结构:

如果不懂json格式的,请自行搜索哈,现在TCGA在GDC的metadata信息,就是json格式的。

我们需要从这个json文件里面提取:technique factor target principal_investigator submission label category type Developmental-Stage organism key  这几列信息,当然,是可以用正则表达式做的。
完成之后应该是:http://biotrainee.com/jbrowse/JBrowse-1.12.1/sample_data/json/modencode/modencodeMetaData.csv 同样可以在浏览器打开并且下载用excel查看哈

我就不多做介绍了,主要难点在于理解json,本次作业,推荐大家用已有的包,正则表达式虽然可以做,但是太麻烦了~

给一个perl代码如下;

[Perl] 纯文本查看 复制代码

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env perl
use strict;
use warnings;
use autodie ':all';
use 5.10.0;
 
use JSON 2;
 
my $data = from_json( do { local $/; open my $f, '<', $ARGV[0]; scalar <$f> } );
 
my @fields = qw( technique factor target principal_investigator submission label category type Developmental-Stage organism key );
 
say join ',', map "\"$_\"", @fields;
 
for my $item ( @{$data->{items}} ) {
    $item->{key} = $item->{label};
    no warnings 'uninitialized';
    for my $track ( @{$item->{Tracks}} ) {
        $item->{label} = $track;
        say join ',', map "\"$_\"", @{$item}{@fields};
    }

}

希望有同学可以推陈出新,不要局限于我们的作业。

可以自己下载TCGA的metadata信息,自己尝试提取,格式化。

点击阅读原文可以查看其他同学提交的作业!

历史题目:

生信编程直播第0题-生信编程很简单!

生物信息学技能面试题(第1题)-人类基因组的外显子区域到底有多长

生物信息学技能面试题(第2题)-探索人类基因组序列

生物信息学技能面试题(第3题)-探索人类基因组注释文件

生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来

生物信息学技能面试题(第5题)-根据GTF画基因的多个转录本结构

生物信息学技能面试题(第6题)-下载最新版的KEGG信息,并且解析好

生信编程直播第七题:写超几何分布检验!

生信编程直播第八题:ID转换大全

生信编程直播第9题-根据指定染色体及坐标得到参考碱基

生信编程直播第10题:根据指定染色体及坐标得到位置信息

生信编程直播第11题:把文件内容按照染色体分开写出

ps:历史题目都可以点击阅读原文可以查看其他同学提交的作业!

而且,这个是最后一题啦



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存