生物信息学科研项目中的文件管理

生物信息学的科研实际上就是在计算机上进行的科研。各种文件的管理其实是个很重要的事情。乱七八糟的文件不但会影响研究进度和效率,还有可能造成意想不到的错误和损失。在过去六年的科研过程中,我逐渐总结出了一套适用于自己的文件管理方式。这套玩意不一定适用每一个人,不过,我想,给别人看看无伤大雅吧。

对于一个一般的生物信息学项目,都要单独建立一个文件夹,里面的结构大约是这个样子的,当然不可能每个都一样啦。略微偷偷懒也是允许的诶,只要别把自己搞乱了就可以了

SMC
|------ src
|------ dat
|------ bin
|------ log
|------ bak
|------ doc
|------ ref
|------ TODO.TXT
|------ STATUS.TXT
|------ META.TXT

SMC:项目根目录,就是你自己喜欢的项目代号啦,例如我曾经用过的代号:CURE,PURE,SAIR,MAIRE……

src:项目的源程序,脚本,批处理文件等的目录

bin:可执行程序,.class文件等

dat:项目的各种数据文件,中间结果,临时测试等等等,这个是最乱的目录啦

log:记录项目中的各种问题,数据处理中删掉哪些数据,为什么删除,整理了哪些结果,为啥那么整理的…..总之,目的是为了让自己,注意是自己,明白自己都干了什么,即便是在梦游状态下干的。这个玩意的目的在于建立一个基本完整的undo/redo的机制。

bak:项目过程中需要删除,但又不晓得会不会后悔的部分,我想你懂得

doc:paper就是从这个里面诞生的啦

ref:EndNote文件和一大堆的PDF,你知道这是什么啦

TODO.TXT:你不想明天早晨起床后再回忆昨天晚上都觉得自己今天需要干啥吧?这个文件就是干这个事情用的。

STATUS.TXT:中止一个项目以后,你确定你一定不会又来搞它吗?尤其是在3年以后?这个文件是用来确定一个项目究竟是为什么不做了的,以及是不是做完了,要不然dejavu的次数多了,很浪费时间的。

META.TXT:这个项目的一些元数据,例如,为啥它叫SMC?

接着,有了目录结构以后,下面的问题就是组织那些乱七八糟的数据和代码,他们真的是乱七八糟的。例如你的原始数据文件是smc.txt,去除了重复数据以后,就命名成smc_nodup.txt,再经过反向互补以后,就得是smc_nodup_rc.txt,文件名的每个段落表明一次处理的目的,这样只要看到那些文件名和文件的生成时间,就可以知道你的数据是怎么处理出来的。要不然,3年后去想当时怎么处理的数据,那可是很大的一场灾难啊。

代码方面我是C#+JAVA+Perl+Bash+CPP+VB+VBA…反正很多语言的说,哦,对,还有R和MATLAB,有些人说生物信息学只要 R+Perl就万事大吉了,不过,可惜的是,我不是Perl大牛,没有本事用Perl搞定一切。例如把人类基因组装进内存什么的,在下愚钝,还得用CPP 解决。故而,组织代码是很重要的。如果是Visual Studio的话,会好很多,只要注意一个项目只建一个解决方案,然后各个程序分别作不同的项目就可以了。当然,把生成目录设定到bin目录里去,这个是很重要的。至于Java和Perl,我个人推荐Eclipse环境来搞定。Eclipse+EPIC就是很好的解决方案,Windows下的perl还是用Strawberry perl吧,比Activestate的更方便,主要是有CPAN的资源支持啦,不需要到处去找DBI/DBD的那些connector了。这样的话,在运行程序的时候,就只需要在命令行窗口里保持在dat目录就可以了。然后用..binXXXXXX.exe的方式来进行执行,需要的文件也就在当前目录下了。

虽然我不是Linux的粉丝,但是我仍然觉得,即便是Windows,也还是装一套MSYS或者Cygwin增强一下的好,尤其是推荐Cygwin,以及其中的X Server,那个可以直接用来连接远程的X桌面,玩Cluster的时候,很有用的。Cygwin一定要装各种wget,sed,tr…的工具,处理生物数据,太有用了。多行fasta变单行,就一行命令:

sed 's/^>S*/|&|/g' {FASTA_FILE_NAME} | tr -d "rn" | tr -s "n" "*" | tr -d "*" | sed 's/|/n/g'

这些玩意是相当相当的好使滴。

至于怎么编程,其实不用我特别说,我相信会编的人都会编,不会的肯定都不会。但是程序里面也最好都写点废话,例如我在Perl程序里面一边都会写这么两行。

# XXXXX.pl - This scirpt is used to XXXXXX
# Usage : XXXXX.pl XXXX File YYYY File ZZZZZ Value

以防万一你3年后需要这个程序,然后连怎么写参数都得现看代码,那可真的是灾难,其实,真的用不了3年,3个月足够了。

管道操作和批处理是很重要的,尤其是在有了Windows PS以及Win7的CMD扩展之后,用起来那是相当的有效率,这个事情以后专题写吧,内容很多。

至于paper怎么写,其实我觉得主要还是先把框架搭好了,然后边写边改的好。这个也得以后专题写。

嗯,文件管理方面的就这样吧,想起来再补。

此条目发表在生物信息学分类目录。将固定链接加入收藏夹。