通过在EBI 网站上选择相关的测序数据下载信息,我们可以获得文件的md5值:
用tsv格式下载下来,就是这样:
然而,如果你直接把这个文件往md5 里面怼,它是看不懂的,不讲武德啊!
$md5sum -c md5.txt
md5sum: md5.txt: no properly formatted MD5 checksum lines found
我们需要转换为md5 可以认识的格式才行~
$cat md5.txt
edb28880ba7056f5428eef84ec59b501 SRR12692093_1.fastq.gz
6637d5e8ff67a966d2eddc604e6e2e7e SRR12692093_2.fastq.gz
2f682ab1324cb73be60ce109d3e15cd4 SRR12692098_1.fastq.gz
3bfee3b58c8e50373747f5991fecf387 SRR12692098_2.fastq.gz
54422bb1ff8718b1f514615214f033e0 SRR12692099_1.fastq.gz
64d854f25b644abb0672540cc02fac1a SRR12692099_2.fastq.gz
可以看到,一共有三个部分,第一个是md5值,中间分隔是两个空格符号,再是文件名。
这里我写了个小脚本:
$ bash ena2md5.sh atac_md5.txt
edb28880ba7056f5428eef84ec59b501 SRR12692093_1.fastq.gz
6637d5e8ff67a966d2eddc604e6e2e7e SRR12692093_2.fastq.gz
2f682ab1324cb73be60ce109d3e15cd4 SRR12692098_1.fastq.gz
3bfee3b58c8e50373747f5991fecf387 SRR12692098_2.fastq.gz
54422bb1ff8718b1f514615214f033e0 SRR12692099_1.fastq.gz
64d854f25b644abb0672540cc02fac1a SRR12692099_2.fastq.gz
代码如下:
$ cat ena2md5.sh
paste <(cat $1 | sed '1d' | \
cut -f2 | awk -F ';' '{print$1,$2}' | \
tr ' ' '\n') <(cat $1 | sed '1d' | \
cut -f1 | while read id; do echo ${id}_1.fastq.gz; echo ${id}_2.fastq.gz; done) | \
awk -F '\t' '{print$1,$2}' | sed 's/[ ]/ /'
这里还有一个问题,我们从ebi 上下载的内容有时候不是来源于同一个项目的,或者是多次下载不同的SRR 数据的,因此我们有时候需要将它们的md5 数据进行合并,再进行检验,这里还是有一个脚本:
需要注意在下载的文件目录下操作。
$ cat merge_md5.sh
if [ -f ./new_md5.txt ]
then rm ./new_md5.txt
fi
ls filereport_read_run_ERR* | \
while read id ; do cat $id | sed '1d' ; done >> ./new_md5.txt
ps:不知道ebi 有没有sra 类似的“购物车”功能,如果有,那就不需要我这个合并脚本了,甚至更加方便~