学完了生信技能树的马拉松授课,算是掌握了跟人工智能对话的基础,比如前些日子看到的练习题:PDX小鼠模型的单细胞样品定量能选择人类参考基因组吗,是需要下载这个CRA010501数据集里面的单细胞转录组样品的fq文件,然后走cellranger定量流程,选择人类以及小鼠参考基因组,各自走一遍定量流程,然后两个表达量矩阵分开做一下降维聚类分群哈, 看看背后是否有一些被忽略的生物学现象。
需要使用的数据库文件批量下载脚本是 :
for i in {34..39};do ( axel -n 20 https://download.cncb.ac.cn/gsa2/CRA010501/CRR7274${i}/CRR7274${i}_f1.fq.gz );done
for i in {34..39};do ( axel -n 20 https://download.cncb.ac.cn/gsa2/CRA010501/CRR7274${i}/CRR7274${i}_r2.fq.gz );done
如果网络好基本上也就是等一个晚上就下载完毕,但是大部分情况下,这个下载会中断!
我首先让人工智能帮我解析了这个脚本
这段Shell脚本代码是一个简单的循环,用于在指定的数字范围内(34到39)执行一个下载命令。下面是对代码的逐行解析:
for i in {34..39}; do
for i in {34..39}
:这是一个for
循环,i
是循环变量,{34..39}
是一个序列表达式,表示从34开始到39结束的整数序列。每次循环,i
依次取34, 35, 36, 37, 38, 39这些值。
( axel -n 20 https://download.cncb.ac.cn/gsa2/CRA010501/CRR7274${i}/CRR7274${i}_f1.fq.gz )
axel
:这是一个下载工具,用于下载网络文件。它类似于wget
,但通常提供更快的下载速度。-n 20
:axel
的选项,表示同时进行20个下载线程。https://download.cncb.ac.cn/gsa2/CRA010501/CRR7274${i}/CRR7274${i}_f1.fq.gz
:这是下载文件的URL。${i}
会被替换为当前循环的值,例如在第一次循环中,${i}
会被替换为34,从而下载CRR727434_f1.fq.gz
文件。
done
done
:表示for
循环的结束。
整个脚本的作用是使用axel
工具并发下载序列34到39对应的.fq.gz
文件。这些文件名遵循模式CRR7274XX_f1.fq.gz
,其中XX
是循环变量i
的值。
需要注意的是,这个脚本中的URL是硬编码的,假设文件结构和URL模式是匹配的。如果URL模式与实际文件结构不匹配,脚本将无法正确下载文件。此外,脚本没有错误处理机制,例如处理下载失败的情况。在实际使用中,可能需要添加适当的错误检查和日志记录。
然后让人工智能帮我修改了它
因为理论上这个代码应该是下载6个文件,但是经常运行卡死,然后就成功了3个文件,需要改进!!!
如果脚本在下载过程中卡死,但最终只成功下载了3个文件,可能是由于几个原因造成的,例如网络问题、服务器限制、本地磁盘写入问题或者axel
命令的稳定性等。以下是一些建议来改进脚本:
-
增加错误处理:
使用set -e
来使脚本在遇到错误时立即退出,这样可以更快地发现问题所在。 -
检查网络连接:
确保网络连接稳定,如果可能的话,使用带有重试机制的下载工具,如curl
或wget
的重试选项。 -
限制并发数:
如果服务器对并发连接数有限制,可能需要减少-n
参数指定的线程数。 -
磁盘空间检查:
确保有足够的磁盘空间来存储下载的文件。 -
使用重试逻辑:
为下载命令添加重试逻辑,例如使用axel -a -n 20 URL
,其中-a
选项会在下载失败时重试。 -
日志记录:
使用日志记录每个下载尝试的结果,便于事后分析问题。 -
检查服务器限制:
检查下载服务器是否有任何速率限制或IP封锁策略。 -
使用其他下载工具:
如果axel
不稳定,可以尝试使用其他下载工具,比如wget
或curl
。 -
增加延时:
在循环中增加延时,避免同时对服务器发起过多请求。 -
检查磁盘写入权限:
确保脚本运行的用户有足够的权限在目标目录写入文件。 -
使用断点续传:
使用支持断点续传的下载工具,这样即使下载中断也可以从中断的地方继续下载。 -
监控下载进度:
使用axel
的--progress
选项来监控下载进度。 -
使用脚本监控工具:
使用如screen
或tmux
等工具来运行脚本,这样即使终端会话断开,下载进程也不会终止。
下面是添加了一些改进的脚本示例:
#!/bin/bash
set -e # 遇到错误立即退出
for i in {34..39}; do
echo "开始下载文件:CRR7274${i}_f1.fq.gz"
axel -q -a -n 20 https://download.cncb.ac.cn/gsa2/CRA010501/CRR7274${i}/CRR7274${i}_f1.fq.gz || true # 重试逻辑,失败不退出
if [ $? -eq 0 ]; then
echo "下载成功:CRR7274${i}_f1.fq.gz"
else
echo "下载失败:CRR7274${i}_f1.fq.gz"
fi
sleep 1 # 增加延时
done
这个脚本在每次下载尝试失败后不会退出,而是继续尝试下载下一个文件,并且在每次下载尝试之间增加了一秒的延时。同时,脚本会在控制台输出每次下载的开始和结束状态。
值得注意的是人工智能说其中-a
选项会在下载失败时重试,但似乎这个知识点有问题!而且很明显上面的代码虽然说最后都会给出来很好的日志信息,但是并不能成功下载:
cat nohup.out
开始下载文件:CRR727434_f1.fq.gz
SSL error: (null)
下载成功:CRR727434_f1.fq.gz
开始下载文件:CRR727435_f1.fq.gz
SSL error: (null)
下载成功:CRR727435_f1.fq.gz
开始下载文件:CRR727436_f1.fq.gz
下载成功:CRR727436_f1.fq.gz
开始下载文件:CRR727437_f1.fq.gz
SSL error: (null)
下载成功:CRR727437_f1.fq.gz
开始下载文件:CRR727438_f1.fq.gz
SSL error: (null)
下载成功:CRR727438_f1.fq.gz
开始下载文件:CRR727439_f1.fq.gz
下载成功:CRR727439_f1.fq.gz
最后我让它介绍了一下这个数据库本
download.cncb.ac.cn
是中国科学院北京基因组研究所(China National Center for Biotechnological Information, CNCB)提供的数据库下载站点。这个数据库主要提供与基因组学相关的数据下载服务,包括但不限于以下几类:
-
基因组序列数据:提供不同物种的完整基因组序列或特定区域的序列数据。
-
转录组数据:包括RNA测序(RNA-Seq)数据,用于研究基因表达模式。
-
蛋白质组数据:提供蛋白质鉴定和定量的数据。
-
表观遗传学数据:如DNA甲基化、组蛋白修饰等数据。
-
变异和多态性数据:包括单核苷酸多态性(SNPs)、插入/缺失(InDels)等。
-
其他组学数据:例如代谢组学、微生物组学等。
关于ID系列的规则,不同的数据库可能有不同的命名规则,但通常这些ID遵循一定的命名约定,以确保它们是唯一的并能够提供关于数据的有用信息。例如:
-
项目或样本标识符:通常是一个独特的参考编号,如
CRA010501
或CRR7274
,可能代表一个特定的研究项目或样本。 -
序列标识符:可能包含序列类型和数字,如
f1.fq.gz
可能表示FASTQ格式的第一条序列。 -
文件扩展名:指示文件格式,如
.gz
表示GZIP压缩文件,.fq
或.fastq
表示FASTQ文件。 -
版本号或部分编号:有时ID可能包含版本信息或部分数据标识,如
1
、2
等。 -
组合ID:一些ID可能组合了多个元素,如
CRR7274${i}
,其中${i}
是一个变量,代表序列中的特定部分或样本编号。
如果需要了解特定数据库的ID规则,通常可以查看数据库的用户指南或FAQ部分,或者直接联系数据库的管理员获取更详细的信息。由于数据库的具体规则可能随时更新,获取最新的信息总是一个好主意。对于download.cncb.ac.cn
数据库,如果需要更具体的信息,建议访问其官方网站或联系他们的技术支持获取帮助。
其实是需要借助于高级工具(这一点目前人工智能无解啊)
其实是需要看官网了,因为人工智能并没有太多关于这个中国科学院北京基因组研究所(China National Center for Biotechnological Information, CNCB)提供的数据库下载站点的信息,所以它也很陌生,我是自己去看官网才发现:
提示: HTTP下载速度有限,推荐使用Egde Turbo或FTP客户端(比如 FileZilla Client)下载数据。 EgdeTurbo支持Linux命令行、Windows/Mac平台的Chrome、Edge和Firefox浏览器。就需要自己下载edgeturbo这个二进制软件,然后使用它的download 命令即可,在linux终端上输入以下命令进行下载软件:
mkdir -p ~/biosoft/
cd ~/biosoft/
wget https://ngdc.cncb.ac.cn/ettrans/download/edgeturbo-client.linux.latest.cncb.tar.gz
然后解压即可使用啦
tar -zxvf edgeturbo-client.linux.latest.cncb.tar.gz
~/biosoft/edgeturbo-client/edgeturbo --help
比如我们上面练习题:PDX小鼠模型的单细胞样品定量能选择人类参考基因组吗,是需要下载这个CRA010501数据集里面的单细胞转录组样品的fq文件,只需要一行代码即可,非常方便!
~/biosoft/edgeturbo-client/edgeturbo dl /gsa2/CRA010501/
~/biosoft/edgeturbo-client/edgeturbo dl /gsa2/CRA008674/
基本上两三个小时就下载完毕了;
├── [4.0K] CRR727434
│ ├── [10.0G] CRR727434_f1.fq.gz
│ ├── [ 11G] CRR727434_r2.fq.gz
│ └── [1.1K] CRR727434_sta.xml
├── [4.0K] CRR727435
│ ├── [ 12G] CRR727435_f1.fq.gz
│ ├── [ 13G] CRR727435_r2.fq.gz
│ └── [1.1K] CRR727435_sta.xml
├── [4.0K] CRR727436
│ ├── [ 17G] CRR727436_f1.fq.gz
│ ├── [ 18G] CRR727436_r2.fq.gz
│ └── [1.1K] CRR727436_sta.xml
├── [4.0K] CRR727437
│ ├── [ 14G] CRR727437_f1.fq.gz
│ ├── [ 14G] CRR727437_r2.fq.gz
│ └── [1.1K] CRR727437_sta.xml
├── [4.0K] CRR727438
│ ├── [ 12G] CRR727438_f1.fq.gz
│ ├── [ 13G] CRR727438_r2.fq.gz
│ └── [1.1K] CRR727438_sta.xml
├── [4.0K] CRR727439
│ ├── [ 12G] CRR727439_f1.fq.gz
│ ├── [ 13G] CRR727439_r2.fq.gz
│ └── [1.1K] CRR727439_sta.xml
└── [ 876] md5sum.txt
6 directories, 19 files
而且很容易检测 md5sum.txt,说明下载的文件是完整的。接下来就完完全全参考 小鼠的5个样品的10x技术单细胞转录组上游定量(文末赠送全套代码),走cellranger流程即可