Bioinformatics Data Skills_tricks_Part I

《Bioinformatics Data Skills》据说是入门生信的必备书之一。最近抽了点时间看,发现里面的确有很多有意思的骚操作和建议。我这里简略地列出一些有意思的地方以及其对应的章节目录,大家感兴趣地可以去对应章节看。当然,时间充裕的话,建议大家读整本书。

Charpter 1

  • Write Code for Humans, Write Data for Computers 即代码要尽可能地写的友好一点,要考虑到以后的你和其他人还看不看得懂。但对应的,你所输出的格式必须要让计算机能够读取,即要符合一定的规范。

    关于代码的规范,作者给出了google的public style guides for many languages 这一编程范式。

  • Make Assertions and Be Loud, in Code and in Your Methods 即我们在写程序的时候,要将报错也考虑在内。这样万一出错的时候,就可以返回报错信息。关于返回报错信息,我们可以尝试用 Assertions

    几乎每个语言都会有自己的assert function。Python里面是assert(),而R里面是 stopifnot()

  • Use Existing Libraries Whenever Possible 即尽量地用现成的库去完成你的任务,因为现成的库已经发表了好久,也有很多人去使用并帮助debug。如果是自己写的话,可能会没有考虑到一些问题。就比如一个简单的核酸转蛋白的程序,我们可能只会考虑ATCG的核酸序列。但实际上,序列中还会存在NYW等。NYW这些字符都是在International Union of Pure and Applied Chemistry(IUPAC)里面的,是一些standard ambiguous nucleotides。

  • Treat Data as Read-Only 即最好你产生的数据都是只读的,你的后续分析都不是去修改数据,而是产生新的文件。这样对以后重新检查、重复分析流程等都会有帮助。

  • Recommendations for Reproducible Research 对于一个可重复的分析来说,document 是至关重要的,即尝试写README。我们应该学会在document加上软件、数据等相关信息。比如说软件的版本,数据是从哪里下的,数据的下载日期。如果可以的话,最好能在分析流程里面将结果图也放上去,便于你或者其他人后续的重复。R’s knitr和iPython 都可以帮助我们做到这一点。

Chapter 2

  • Project Directories and Directory Structures 在写一个脚本的时候,尽量用相对路径。这样,你的脚本不管放哪里,都可以运行了。

    关于相对路径和绝对路径这一点,我觉得是仁者见仁,智者见智的。

  • shell expansion 中有一种brace expansion可以快速地创建结构化的文件

    $ echo dog-{gone,bowl,bark}
    dog-gone dog-bowl dog-bark
    
    $ mkdir -p zmays-snps/{data/seqs,scripts,analysis}
    
    
    $ touch seqs/zmays{A,B,C}_R{1,2}.fastq
    $ ls seqs/
    zmaysA_R1.fastq zmaysB_R1.fastq zmaysC_R1.fastq
    zmaysA_R2.fastq zmaysB_R2.fastq zmaysC_R2.fastq
    
    $ touch zmays{A..C}_R{1,2}.fastq
    $ ls *.fastq
    zmaysA_R1.fastq  zmaysB_R1.fastq  zmaysC_R1.fastq
    zmaysA_R2.fastq  zmaysB_R2.fastq  zmaysC_R2.fastq
    
  • Wildcards(通配符)也是一种shell expansion,通配符最常见的语法是

    • * 代表任意数量的字符(但会忽略 .bashrc 这种点号开头的隐藏文件)

    • ? 代表单个字符

    • [A-Z] 可以匹配方括号里面的任意一个字符(比如[aeiou]),也可以匹配A-Z这26个大写字母([start-end]这种连续范围),也可以匹配0-9这种数字。但需要注意的是,匹配的是含有字母或数字的字符串

      按作者所说,snps_10.txt, snps_11.txt, snps_12.txt 这种是不能用snps_[10-13].txt 来匹配的,如果想要匹配的话,就要用brace expansion来做。即snps_{10..13}.txt 。不过R1,R2,R3这种还是可以正常匹配的。

      $ touch snps_{10..13}.txt
      
      $ ls *.txt
      snps_10.txt  snps_11.txt  snps_12.txt  snps_13.txt
      
      $ ls snps_[10-13].txt
      ls: cannot access 'snps_[10-13].txt': No such file or directory
      
      $ ls snps_{10..13}.txt
      snps_10.txt  snps_11.txt  snps_12.txt  snps_13.txt
      

      关于通配符,发现一篇阮一峰的命令行通配符教程

  • OS 和 linux 系统对于命令的参数数目(更准确来说是命令的长度)实际上是有限制的。这种“Argument list too long” 通常会出现在你用通配符匹配了太多的文件。

    这种解决方法在书的后面也提到了。

  • 我们可以用0021而非21来命名,这样在后续排序的时候会有好处。

    $ ls -l
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:24 genes-1.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:24 genes-11.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:24 genes-12.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:24 genes-13.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:24 genes-14.txt
    
    $ ls -l
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:23 genes-001.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:23 genes-002.txt
    [...]
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:23 genes-013.txt
    -rw-r--r-- 1 vinceb staff 0 Feb 21 21:23 genes-014.txt
    

    所以你能看见像一些大的Project比如Ensemble,就是采取这种命名方式:ENSG00000164256

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容