第二章笔记
本章目的:
帮助读者了解实现生物信息学项目的可重复性和鲁棒性所需要的准备工作和持续性文档记录的习惯
项目的目录结构
命名原则
- 起个简洁又清楚的名字(文件夹名 & 文件名)
- 例子:研究关于 Zea Mays 的 SNP,可以把该项目命名为 zmays-snp
- 自己的想法(书中未提到):如果是几个单词,那么前几个不发音的部分可以省略,只取发音部分来与核心词组合命名,可以缩短长度
- 混成词法:biological biomarker --> biomarker
- 不可以有空格,不要省略扩展名
- 原因:在Unix系统下,命令行中的空格有分开参数的作用
- 原因 :文件名可以很直观地体现文件内容和内容的特点
- 较为一致的命名,便于批量操作
- 使用0开始的命名法,方便使用
sort
时得到正确排序
- genes-001.txt, genes-002.txt
- Ensembl 就是使用这种命名模式的,ENS00000164256
命令
# 构建项目目录结构
$ mkdir -p zmays-snp/{data/seq,scripts,analysis}
$ echo zmays-snp/{data/seq,scripts,analysis}
zmays-snp/data/seq zmays-snp/scripts zmays-snp/analysis
# 创建示例序列文件
$ cd data
$ touch seqs/zmays{A,B,C}_R{1,2}.fastq
$ ls seqs/
# 通配符的使用
# * 可以表示 >= 0 个字符,忽略隐藏文件
$ ls seqs/zmaysB*
# ? 表示一个字符,忽略隐藏文件
$ ls seqs/zmaysB_R*.fastq
# [A-Z], [0-9], {10..19}
$ ls seqs/zmays[AB]_R1.fastq
$ ls zmays[D-G]_R1.fastq
$ ls snps_[4-5].txt
$ ls snps_{14-15}.txt
# 在OS X 和 Linux 系统中使用通配符,如果匹配到的文件数目达到上限,会产生报错 “Argument list too long”
注意事项
- 在 scripts 和 analyses 中使用相对路径
../data/stats/qual.txt
利于项目的可重复性和自动化,因此要保持核心目录结构一致; - 如果 scripts 中包含很多文件,那么应该保存为一个子目录中
../scripts/align/
; - 子目录可以帮助组织文件,帮助研究者将项目拆分成子项目;
记录项目的文档 (使用 Markdown 语法撰写)
记录所有有关于项目的事情,每个目录下都有一个 README 纯文本文件比较好,因为纯文本可以直接使用命令行来读取、检索、编辑。
- 文档记录项目中使用的方法和工作流程
- 凡事产生出结果的命令都应该被记录
- 脚本是记录步骤和参数的天然文档;
- 记录运行脚本的语句;
- 记录项目目录下所有数据的来源
- 记录数据下载的时间
- 记录数据版本信息
- 描述是怎样下载得到数据的
- 记录所使用的软件的版本
使用 Markdown 语法撰写文档,这个很简单,本人使用 Mac Down,渲染方式使用 GitHub2
写在最后
希望自己可以多看看 GitHub 上比较厉害的人是怎设计项目的目录结构的,这样多学习一些,也多多在自己的项目中进行尝试,最终想达到的目标是实现项目的可重复性和鲁棒性。
至于README的文档记录,要全部写英文,不知道怎样写的话可以看同一方法,大佬是怎样写的,根据自己的项目进行模仿和调整。
以上内容并不是完全按照原书顺序,主要是依照自己的理解和分解写出的笔记,还有一些部分是自己加进去的理解和私货。若读者对原文内容感兴趣还是亲自读来最好,本文的撰写主要是服务自己督促自己