适用情况

数据上传到NCBI时,有多种可选方式,对于数据量不大的数据可以选择网页上传。稍大数据可选择FTP或Aspera,目前中国大陆境内FTP上传到NCBI数据速度普遍较慢,使用Aspera速度稍快。
Aspera上传受网络环境稳定影响较大,传输容易中断。 该Python脚本可以设置每隔一段时间自动监测传输状态,如断开传输则自动重新开始。

后续会发布一个NCBI数据上传基础教程,如果不知道如何使用Aspera上传,可以看相关文章

下面是代码:

import subprocess
import time
import psutil

def is_process_running(process_name):
    for proc in psutil.process_iter(['name']):
        if proc.info['name'] == process_name:
            return True
    return False

def run_aspera_transfer():
    command = [
        r"C:\Program Files\IBM\Aspera Connect\bin\ascp.exe",   # 替换成你的Aspera的安装位置的ascp.exe
        "-i", r"D:\data\aspera.openssh", # 替换成从NCBI下载得出传输密钥的位置
        "-QT", "-l500m", "-k1", "-d", # 设置一下限速
        r"D:\data\single-celldata\\", # 替换成你要上传的文件夹,填到文件夹就行,会自动上传文件夹里所有文件
        "subasp@upload.ncbi.nlm.nih.gov:uploads/mail_adress_code/file_you_add_at_root_catalog"  # 用从NCBI处获取的上传路径替换这里,记得在主路径新建文件夹
    ]
    subprocess.run(command)

while True:
    if not is_process_running("ascp.exe"):
        print("Aspera transfer interrupted. Restarting...")
        run_aspera_transfer()
    time.sleep(60)  # 每60秒检查一次

GITHUB地址:https://github.com/Guikong001/Auto-upload-to-NCBI