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

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

范例如下:

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

?

{
   "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,可以用在线工具查看结构:http://json.parser.online.fr/ 如果不懂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] 纯文本查看 复制代码

?

#!/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};
    }
}

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

Nginx双证书ECC/RSA配置

大家好,我是你们的老朋友Alex。今天教大家使用nginx配置证书,双证书! Nginx1.11.0版本后提供了ESA/ECC双证书的支持,以下是参考链接: h...

3358
来自专栏DeveWork

WordPress 免插件仅代码实现 Gravatar 头像缓存

如果你还不知道是神马东东,请先往《设置你的Gravatar头像的方法》一文了解相关资料。因为我大中华局域网的原因, Gravatar 头像所托管的网站有时候会挂...

17510
来自专栏木头编程 - moTzxx

Laravel 框架集成 UEditor 编辑器的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

431
来自专栏FreeBuf

利用Cobalt strike一步步教你发送钓鱼邮件

*本文原创作者:rj00,本文属FreeBuf原创奖励计划,未经许可禁止转载 前几天,在freebuf上就发表了新的Cobalt strike,提权利器Coba...

2265
来自专栏小怪聊职场

爬虫课程(二)|PyCharm的安装激活和简单使用

2528
来自专栏张戈的专栏

WP-PostViews Plus统计插件在TwentyTen主题下的使用

为了博客的文章浏览统计,让我这个不怎么熟悉 PHP 的菜鸟硬是从昨晚折腾到现在! 主要原因是我不太熟悉 PHP 的结构,结果被网上的教程搞得云里雾里,通过度娘搜...

27010
来自专栏FreeBuf

CSRF(跨站点请求伪造)在Flash中的利用

0x00 前言 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session R...

3155
来自专栏葡萄城控件技术团队

用于 Windows8 的 Wijmo Charts 图表控件

随着Windows 8 Developer Preview 和 Visual Studio 11 Preview的发布, 大家对Metro-style的关注也逐...

1886
来自专栏FreeBuf

数据分析告诉你:Php最不安全,Nginx比Apache安全

Google安全研究者Anthony Ferrara分析了那些安装PHP、Python、Nginx、Apache、Wordpress的网站(来自W3Techs)...

1738
来自专栏jeremy的技术点滴

TL-WR941D路由器刷OpenWRT备忘

33011

扫描关注云+社区