科研相关bioinformatics

使用LFTP+FileZilla向GEO数据库上传数据

2020-11-09  本文已影响0人  巩翔宇Ibrahimovic

写在前面
向GEO数据库中上传高通量测序的文件可能是一个人研究生阶段必须要经历的过程,如果不太了解高通量测序也不具备linux基本操作的话,可能会费一番工夫。我采用的是LFTP+FileZilla的方式,前者类似Xshell的功能,使用命令行模式来操作;后者类似winscp的功能,可以可视化的查看你当前上传的文件。

1.注册账户

首先要注册一个NCBI账户。
为了上传数据,首先需要登录账号,点击界面右上方“login”。

新用户需要先注册,填写相关信息后,账号通过邮箱激活。


image.png

2. GEO数据上传

2.1基本介绍

进入GEO数据库后,在首页界面选择将要上传的数据类型。大体上,上传数据类型可分为3类:

接下来以某RNA-seq数据上传为例展示,点击上传高通量数据类型。

image.png

根据网站要求,需要上传3种数据,包括:

并且,GEO网站中列出了一些注意事项,仔细阅读网站界面下方的内容即可,大致上有以下几点:

GEO接受数据是有关基因表达定量、基因调控,表观遗传学或其它功能基因组的研究,包括RNA-seq、ChIP-seq、HiC-seq、甲基化测序等,不接收全基因组、宏基因组等类型。

原始测序数据是必须要提交的,由于后续将自动提交SRA,因此需要提供SRA支持的格式。推荐上传gz压缩的fastq文件(不要使用zip压缩),且各个样本已做拆分。

处理后的数据也是GEO提交的必需部分,但只限于非常重要的,例如原始基因表达count值、FPKM标准化后的矩阵、ChIP-seq定量峰bed文件等。一些中间文件,或者大文件,如基因组比对后的BAM不推荐上传,除非有特殊必要需发邮件提前咨询工作人员。

对于上传的数据,需要校验MD5码并填写在信息表中,便于审核文件是否完整。

2.2 填写信息表

首先下载信息表填写相关的信息。

在下载的Excel表中,“METADATA TEMPLATE”中填写上传数据信息,包括试验描述、样本信息、数据类型等。“EXAMPLE”中提供了相关的参考示例,根据实际数据模仿填写即可。

image.png

以展示RNA-seq的EXAMPLE 2为例简单说明下该表。

“SERIES”是对整个试验的描述。

image.png

“SAMPLES”是对样本的描述,“PROTOCOLS”、“DATA PROCESSING PIPELINE”是关于样本处理以及测序细节。

image.png

最后的三项内容,就是上传文件的细节信息。

2.3 上传数据

信息表填写无误后,开始上传数据。

首先返回GEO网站界面,查看有关数据上传的相关说明。

image.png
创建完个人空间后,会在你的目录中显示,然后这个时候退出去进行step2--transfer files.
image.png
然后,点击Step2查看上传说明,下载安装指定的传输工具,上传数据。包括主机、用户名、密码以及个人账号路径等。
若有疑问,可在GEO网站界面下方查看答疑解惑。
#conda 一键安装
conda install lftp

lftp ftp://geoftp:xxx(用户名)@ftp-private.ncbi.nlm.nih.gov
cd uploads/xxx(第一步创建的路径名)
mirror -R Folder_with_submission_files(其实就是你存放文件的绝对路径,会把该路径下的所有文件一并上传)

上面这一步完成后,就可以安心等待rawdata上传了。我的传输速度大概是9M/s,这样算的话,50G的数据大概需要90min,节省了18倍的时间。等传输完成后,还可以在FileZilla中查看文件的内容。

最后share一个python脚本,一键生成某一路径下所有文件的MD5,MD5会在填写上传数据的excel信息时会用到。
vim md5.py

#创建脚本
import hashlib
import os
import io
import sys

def printUsage():
        print ('''Usage: [python] pymd5sum.py ''')

def geneMd5(filename):
    m = hashlib.md5()
    file = io.FileIO(filename,'r')
    bytes = file.read(1024)
    while(bytes != b''):
        m.update(bytes)
        bytes = file.read(1024)
    file.close()
    return m.hexdigest()
def main():
    if(len(sys.argv) != 1 and len(sys.argv) != 2):
        printUsage()
    mat = "{:48}\t{:32}"
    if(len(sys.argv)==1):
        path="./"
    if(len(sys.argv)==2):
        path=sys.argv[1]
    for fpathe,dirs,fs in os.walk(path):
        for f in fs:
            full_file = os.path.join(fpathe,f)
            print (mat.format(full_file,geneMd5(full_file)))
main()

用法就是python md5.py > md5.txt
然后就会生成该路径下所有文件的MD5。
参考链接:
1.https://blog.csdn.net/wushuangge/article/details/89395187
2.https://www.jianshu.com/p/95efb39baf9f

上一篇下一篇

猜你喜欢

热点阅读