适用情况
数据上传到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秒检查一次