小白的perl语言之数据分割

Posted 计算表观遗传学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白的perl语言之数据分割相关的知识,希望对你有一定的参考价值。


前言

作为Perl语言初学者,小编分享一些自己的perl数据处理代码,在处理文本数据时,遇到数据较大,处理较困难的数据可以通过将大数据文件分割成数据相对较小的文件进行处理,小编以一个简单数据文件为例,分享自己的perl语言学习过程。


原始数据:文件如图所示,该文件用作识别差异甲基化,前三行为标题行,其中第二行注明文件的行数及细胞系个数,文件中共包括67个细胞系的甲基化数据信息,总行数为423463。第三行为甲基化位点信息。

小白的perl语言之数据分割

数据处理目标:为了方便数据处理,将原始文件分割为包含100000的子文件,文件分割格式如下图,将原始文件分为5个子文件。

思路:逐行遍历文件,如果文件当前行数对100000取余为1,新建一个文件,将数据输入文件中,否则就往当前文件中追加数据。


数据处理代码:

use strict;

use warnings;

my $dir_in="/pub1/LUAD/";

my $dir_out="/pub1 /LUAD/split/";

open IN,$dir_in."Data_standard.gct"||die;

my $first_line=<IN>;

my $second_line=<IN>;

my $third_line=<IN>;

my $line_number=423463;

my $i=1;

my $j=0;

while(<IN>){

      if($i<400001){

           if($i% 100000 == 1){

                 $j++;

                 openOUT,">$dir_out"." Data _standard_$j.gct";

                 printOUT $first_line;

                 printOUT "100000 67 ";

                 printOUT $third_line;

                 printOUT $_;

                 closeOUT;

                 }

           else{

                 openOUT,">>$dir_out"." Data _standard_$j.gct";

                 printOUT $_;

                 closeOUT;

                 }

           }

      elsif($i==400001){

           $j++;

           openOUT,">$dir_out"." Data _standard_$j.gct";

           printOUT $first_line;

           printOUT "23463 67 ";

           printOUT $third_line;

           printOUT $_;

           closeOUT;

          

      }

      else{

                 openOUT,">>$dir_out"." Data _standard_$j.gct";

                 printOUT $_;

                 closeOUT;

                 }

      $i++;

     

      }

close IN;


通讯邮箱:ad.cepi@edbc.org

投稿邮箱:scw.cepi@edbc.org

往期「精彩内容」,点击回顾

| |

|

  | |

精彩会议及课程,点击回顾




CEPI感谢您的支持!

ios系统用户专用通道)




以上是关于小白的perl语言之数据分割的主要内容,如果未能解决你的问题,请参考以下文章

化腐朽为神奇,编程语言不可错过之---正则表达式

小白程序要进阶系列之RabbitMQ-前言

边看MHA源码边学Perl语言之三 NodeUtil.pm

Perl单行命令介绍

小白学Perl之初始哈希

边看MHA源码边学Perl语言之二 ManagerUtil