语言以基因组数据分类并勾画来文件,python,awk,R data.table速度PK

语言 1

 

场景

咱省企业里普遍的同等栽方案呈报或评审场景,老板可能会参与其间。

员工:
千古几乎全面我们已经举行了大气调研与筹划,完成了咱们新的某某方案…啪啦啪啦讲同样堆放,最后大家省还有啊建议还是意见。

其他人:
象征性的提点意见,最后大家还抵着放老板的观要说拍板。

老板:
恩典,不错,我欢喜。你们的干活做得死去活来好,但是自醒着这里,这里,这里还可这么、这样…完善修改下。

复具体到下这个现象,假如我们报告或评审的是一个活方案,老板可能会说:思路是,但好更参考下有竞品的某部细节。再品尝下某种新的自由化追。如果是一个设计方案,老板可能会说:整体感觉不错,也许这字可以另行挺一点,那边的辛亥革命可以再浅一点,等等。

而是技术方案也?恩,产品跟设计方案一般可以因常识性知识来判断,但技术方案免是,它要特别的知识,所以技术方案老板就很少与。但就怕老板是发生技术背景的,好多年前也是开技术的。

拥有这些见解或者建议,其实就算是
“老板的片私分钱”,老板呢和任何人一样,不过是于品味发表有好非熟的一得之见,以期作为参照。但是以老板的角色不同于其他人,他的
“两分割钱” 容易被职工解读成令,需要让高效履,使命必达。

终极,老板的 “两分开钱” 也许无意间就被放大成了团伙的 “好几万”。

连通下是用python,python语言简练,书写好。因此迅速便落实了先后,同样逐行处理,比awk添加了一点细节,只挑来得的染色体。用时19.9秒。

反思

自意见我来说,老板的眼光并不一定优于任何人的,毕竟业主为无是全能的,区分只是位。

假设有朝一日你变成了业主,你的视角要见以不再是只有表示个人的见识或见。在各种专业的上报或评审会上,你得小心无意发表您从以为的
“两分叉钱” 个人意见或者意见,但当时并无意味着老板于这么的场所就无法发表意见了。

同等种植更好的副老板的表达方式,也许是故问题句来替代陈述句,因为老板的陈句容易吃解读成祈使句。用提问题来替意见、看法还是建议,把自己心的迷惑与问题抛给原本方案的提出人口(团队),他们才是得去找到答案,执行进程并获取无限好结果的总人口。

作为业主,你莫需对拥有业务都受来理念要意见,仅仅是盖你可知。
作为业主,你协调偏好之答案恐怕并无紧要,毕竟术业有专攻。

不过要业主认为自己之意或意见并不只是
“两区划钱”,那就坚决直接的游说出,这就算不再是建议而是命令,这就是是老板娘做出的核定,并需担裁决的本金以及果。

任何人,也许还可能未是例外层面的小业主,不是吗?


写点文字,画点画儿,记录成长瞬间。
微信公众号「瞬息之间」,既然撞,不如同行。
语言 2

   
用时10.6秒,发现刚刚读了数据,立刻就处理及描写来了,处理及描绘起时很紧缺,因此整体用时比短。

不久前读到同样篇英语文章,名叫 《Don’t add your 2
cents》,初一羁押对这个题目有些迷惑,心想就是啊意思啊?后来读了文章内容,不仅学会了一个新的英语习惯用语,还沾一个可怜有启示的故事。

 

原意

先期来询问下是习惯用语的背景。

在维基百科的说里 “My two cents” 或者说它的总体版 “Put my two cents in”
是一个美语的惯表达,它用在发挥一个总人口之试探性建议场景下。大概表达的感到就是是,我的提议还是见吧不怕值少瓜分钱,微不足道,你听就好了,以表明建议者的礼与谦卑,以期减少这种产生争议之眼光对深受建议人的思维冲击。

身处中文语言语境下,大概就是这么有发挥:“以自身的浅见,你或许这样会…我起一些不一的见解,说出大家参考参考…”,都是抒发相同种小心翼翼提出不同视角的方法。

即时按照是同等种于丁重复容易接受建议之言语技巧,但于不同角色的总人口,特别是诸如老板这么的角色,其功效可能就转换了味。

率先是awk处理,awk进行的凡逐行处理,具有自己之语法,具有十分怪的灵活性,一行代码解决,用时24S,

语言 3

 

 1 #!/usr/bin/sh
 2 function main()
 3 {
 4 start_tm=date
 5 start_h=`$start_tm +%H`
 6 start_m=`$start_tm +%M`
 7 start_s=`$start_tm +%S`
 8 awk -F $sep '{print $1","$2","$3 >> "'"$inputfile"'""_"$1}' $inputfile
 9 end_tm=date
10 end_h=`$end_tm +%H`
11 end_m=`$end_tm +%M`
12 end_s=`$end_tm +%S`
13 use_tm=`echo $end_h $start_h $end_m $start_m $end_s $start_s | awk '{ print ($1 - $2),"h",($3-$4),"m",($5-$6),"s"}'`
14 echo "Finished in "$use_tm
15 }
16 
17 
18 if [ $# == 2 ]; then
19 sep=$1
20 inputfile=$2
21 main
22 else
23 echo "usage: SplitChr.sh sep inputfile"
24 echo "eg: SplitChr.sh , test.csv"
25 fi

 

 

 1 #!/usr/bin/Rscript
 2 library(data.table)
 3 main <- function(filename,sep){
 4 started.at <- proc.time()
 5 arg <- commandArgs(T)
 6 sep <- arg[1]
 7 inputfile <- arg[2]
 8 dt <- fread(filename,sep=sep,header=T)
 9 chrLst <- lapply(c(1:22,"X","Y"),function(x)paste("chr",x,sep=""))
10 for (chrI in chrLst){
11     outputfile <- paste(filename,"_",chrI,sep="")
12     fwrite(dt[.(chrI),,on=.(chr)],file=outputfile,sep=sep)
13 }
14 cat ("Finished in",timetaken(started.at),"\n")
15 }
16 
17 arg <- commandArgs(T)
18 if (length(arg)==2){
19 sep <- arg[1]
20 filename <- arg[2]
21 main(filename,sep)
22 }else{
23 cat("usage: SplitChr.R sep inputfile eg: SplitChr.R '\\t' test.csv","\n")
24 }

 

语言 4

语言 5

   
由于基因组数据了怪,想愈用R语言处理担心系统内存不够,因此想在以文件按染色体拆分,发现python,awk,R
语言都能非常简单快捷的兑现,那么快是不是发生差异啊,因此于飞几个50G的非常文件前,先用了244MB的多少对各个脚本进行测试,并且用其速度进行自查自纠。

 1 #!/usr/bin/python
 2 import sys
 3 import time
 4 def main():
 5     if len(sys.argv)!=3:
 6         print "usage : SplitChr sep inputfile eg: SplitChr ',' test.txt"
 7         exit()
 8     sep=sys.argv[1]
 9     filename=sys.argv[2]
10     f=open(filename,'r')
11     header=f.readline()
12     if len(header.split(sep))<2:
13         print "The sep can't be recongnized !"
14         exit()
15     chrLst=range(1,23)
16     chrLst.extend(["X","Y"])
17     chrLst=["chr"+str(i) for i in chrLst]
18     outputdic={}
19     for chrI in chrLst:
20         output=filename+"_"+chrI
21         outputdic[chrI]=open(output,'w')
22         outputdic[chrI].write(header)
23     for eachline in f:
24         tmpLst=eachline.strip().split(sep)
25         tmpChr=tmpLst[0]
26         if tmpChr in chrLst:
27             outputdic[tmpChr].write(eachline)
28     end=time.clock()
29     print "read: %f s" % (end - start)
30 
31 
32 
33 if __name__=='__main__':
34     start=time.clock()
35     main()

总结

 

    虽还是逐行处理,但由上述结果猜测awk内部运转并无python快,但awk书写一行代码搞定,书写速度快,至于python比data.table慢,猜测因是R
data.table用C语言写,并且用多线程写有,hash读取,传地址各种办法优化速度的结果。当然,上述结果但供参考。

最后所以R语言data.table包进行拍卖,data.table是data.frame的高级版,在快上发了大老的改进,但是同awk和python相比,具有优势呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图