建立与管理项目文件
项目文件结构
$ mkdir zmays-snps
$ cd zmays-snps
$ mkdir data
$ mkdir data/seqs scripts analysis
$ ls -l
total 0
drwxr-xr-x 2 vinceb staff 68 Apr 15 01:10 analysis
drwxr-xr-x 3 vinceb staff 102 Apr 15 01:10 data
drwxr-xr-x 2 vinceb staff 68 Apr 15 01:10 scripts
其中的主文件夹中应该存放有README文件,用来记录详细的实验过程(实验记录本)
项目文件
记录方法和工作流程
这应包括通过 shell 运行的、生成数据或中间结果的完整命令行(复制并粘贴)。即使使用软件中的默认值,也一定要写下来,一切使用的命令都要记录在案
记录项目目录中所有数据的来源
您需要记录数据的下载地址、提供者以及其他相关信息。"数据 "不仅仅指项目的实验数据,还包括程序用来创建输出结果的任何数据。这包括你的合作者从他们各自的分析中发送给你的文件、基因注释轨迹、参考基因组等。记录这些有关数据的重要数据或元数据至关重要。例如,如果您下载了一组基因区域,请记录网站的 URL。这似乎是一个显而易见的建议,但我曾无数次遇到过因为有人忘记记录数据来源而导致分析步骤无法轻松复制的情况
记录下载数据的时间
这里指的「时间」,并不是指的下载的「耗时」,而是指的下载数据的时刻,下载的数据可能随着时间而发生变化
包含数据下载时间很重要,因为外部数据源(如网站或服务器)将来可能会发生变化。例如,直接从数据库下载数据的脚本在外部数据库更新后重新运行可能会产生不同的结果。因此,记录数据何时进入版本库非常重要
记录数据版本信息
许多数据库都有明确的发布号、版本号或名称(例如,拟南芥基因组注释的 TAIR10 版本,或 Wormbase 的 WS231 版本)。在文档中记录所有版本信息(包括次版本号)非常重要
描述您如何下载数据
例如,您是否使用 MySQL 下载了一组基因?还是使用 UCSC 基因组浏览器?这些细节对于追踪合作者之间数据不同等问题很有帮助
记录运行的软件版本
方便后续合作者复现实验,如果没有版本信息,只需提供发布日期、软件链接和下载日期即可
所有这些信息最好都存储在纯文本 README 文件中。纯文本文件可以直接从命令行轻松读取、搜索和编辑,因此是便携式和可访问 README 文件的最佳选择。它还适用于所有计算机系统,这意味着你可以直接在服务器或计算机集群上记录工作步骤。纯文本也缺乏复杂的格式,这可能会在将文档中的命令复制粘贴到命令行时产生问题。最好避免使用 Microsoft Word 等格式的 README 文档,因为这些格式在生物信息学常用的 Unix 系统中的可移植性较差
一致的文件命名
另一个有用的技巧是在命名文件时使用前导零(例如,file-0021.txt 而不是 file-21.txt)。这很有用,因为用词典图形排序文件(如 ls 所做的)可以获得正确的排序。例如,如果我们有基因-1.txt、基因-2.txt、......、基因-14.txt 这样的文件名,按照词典排序(lexicographical order)的结果是:
基因-1.txt
基因-10.txt
基因-11.txt
基因-12.txt
基因-13.txt
基因-14.txt
基因-2.txt
基因-3.txt
基因-4.txt
基因-5.txt
基因-6.txt
基因-7.txt
基因-8.txt
基因-9.txt
问题:
由于词典排序是基于字符的,而不是数值的,所以 "基因-10.txt"
会排在 "基因-2.txt"
之前。
解决方案:
使用前导零,使所有文件名的数字部分长度相同,例如:
基因-01.txt
基因-02.txt
基因-03.txt
基因-04.txt
基因-05.txt
基因-06.txt
基因-07.txt
基因-08.txt
基因-09.txt
基因-10.txt
基因-11.txt
基因-12.txt
基因-13.txt
基因-14.txt
这样就能按照预期的数值顺序正确排序