搜索
查看: 2320|回复: 0

[Perl] perl第7、8题,代码全注释(抛砖引玉)--(iid的转换)

[复制链接]

16

主题

61

帖子

519

积分

高级会员

Rank: 4

积分
519
发表于 2017-7-5 00:07:18 | 显示全部楼层 |阅读模式
本帖最后由 泥土 于 2017-7-5 00:09 编辑

7题的超几何分布,等注释R语言时再进行,所以这里跳过一题,我觉的还是尽量用擅长的工具做擅长的事,最终目标达到目的即可。为了保持帖子的完整性所以在此说明一下

这个题目挺好的,当然现在的网页工具也都很发达,自己探索进行转换,这里注释一下课程中的代码。希望小伙伴们多多讨论指教。
[Perl] 纯文本查看 复制代码
#! /usr/bin/perl
use warnings;
use strict;
#use List::MoreUtils qw/uniq/;#win下无法安装所有注释掉了

my $usage=qq{$0 GeneID.list Database Gene2some2.txt};#$0是程序名,接3个文件,分别是要转换的geneid 数据库 输出文件名
die "$usage\n" if scalar @ARGV !=3;                  #确保文件时3个
my ($geneid_list,$database,$gene2someid) = @ARGV;    #声明变量
open(DATABASE,"$database");  #读入数据库
open(GENEID,"$geneid_list");#读入要转换的列表
open(OUTPUT,">$gene2someid");#输出文件
#以上都是读入文件,作为一个初学者可以开开眼有哪些方式。如果自己写可以容易理解的方式读入文件。

my (%gene_trans,$gene_id,$some_id,@some_id);  #这个是Perl转换的主要操作部分
while(<DATABASE>){ #读入文件
        chomp;   #去\n
        unless(/#/){     #过了掉第一行
                ($gene_id,$some_id)=(split/\t/,$_)[1,2];#将数据split后存入变量,第2列和3列
                push @{$gene_trans{$gene_id}},$some_id;  #将数据放入哈希数组,每个基因id 对应一个数组。
        }
}

while(<GENEID>){
        chomp;
        #my @uniq = uniq(@{$gene_trans{$_}}); #把这个注释掉的原因是win下总是安装不上
        print OUTPUT "$_\t",join(",",@{$gene_trans{$_}}),"\n";  #$_是读入的要转换的geneid,对于的hash数组,用逗号将他们连接起来
}        


输出和课程中是一样的,我这里没有去重。

idtrans

idtrans



上一篇:覃千山的博客
下一篇:怎么用TCGA的数据做ROC曲线
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-11-21 02:11 , Processed in 0.031029 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.