专栏名称: 生信技能树
生物信息学学习资料分析,常见数据格式及公共数据库资料分享。常见分析软件及流程,基因检测及癌症相关动态。
目录
相关文章推荐
每天学点做饭技巧  ·  45岁李娟现状被扒:住15W房子,不生孩子, ... ·  昨天  
艾格吃饱了  ·  早春最清新好吃的水果之一(可网购 ·  2 天前  
小小牛财经  ·  新荣记家烧10大招牌菜价目表 ·  3 天前  
润农畜牧报价  ·  2025年2月7日 ... ·  3 天前  
51好读  ›  专栏  ›  生信技能树

生信方向的博士找博士后机会不能只看ngs数据处理技术啊!

生信技能树  · 公众号  ·  · 2024-07-19 22:06

正文

有一些生信小伙伴在科研服务公司干了三五年,然后“机缘巧合”去了甲方课题组读博士,但是求学期间仍然是课题组的“工具人”导致 毕业后没有得到什么科研培养仅仅是ngs数据处理经验越来越广泛。 这样的话就很难找到博士后,因为竞争力还不如普通的生信工程师。

因为现在有了人工智能大模型,基本上一年经验的工程师跟三五年经验的不会有什么本质的区别。。。。

现在给大家演示一下

经常下载过ngs项目公共数据集的小伙伴们都是知道fastq文件非常大而且不同数据库访问情况都不太稳定。

详见: aspera的高速下载确实很快吗 ,需要自己在服务器上面配置好conda,然后执行conda的安装两个软件(kingfisher和aspera),我们一般来说会推荐极简下载代码,就是一个循环而已;

首先自己制作文件名字(fq.txt )内容如下所示::

fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_2.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/086/SRR17418286/SRR17418286_1.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/086/SRR17418286/SRR17418286_2.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/087/SRR17418287/SRR17418287_1.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/087/SRR17418287/SRR17418287_2.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/090/SRR17418290/SRR17418290_1.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR174/090/SRR17418290/SRR17418290_2.fastq.gz

有了上面的文件(fq.txt ),接下来就只需要一个脚本即可:step1-aspera.sh

cat fq.txt |while read id
do
ascp -QT -l 300m -P33001 -k 1  \
-i ~/miniconda3/envs/download/etc/asperaweb_id_dsa.openssh   \
era-fasp@$id  .
done
# mamba activate download 
# nohup bash step1-aspera.sh 1>step1-aspera.log 2>&1 &
# which ascp 
## 一定要搞清楚你的软件被conda安装在哪,以及它配套的asperaweb_id_dsa.openssh 文件的路径

但是因为aspera对应的ebi数据库经常是访问有问题,会导致如下所示的下载失败;

ls -lh |cut -d" " -f5-

 770 7月  19 10:03 fq.txt
 19M 7月  19 10:07 SRR17656233_1.fastq.gz
  64 7月  19 10:07 SRR17656233_1.fastq.gz.aspx
 18M 7月  19 10:07 SRR17656233_2.fastq.gz
  64 7月  19 10:07 SRR17656233_2.fastq.gz.aspx
   0 7月  19 10:07 SRR17656234_1.fastq.gz
  64 7月  19 10:08 SRR17656234_1.fastq.gz.aspx
 67M 7月  19 10:10 SRR17656234_2.fastq.gz
  64 7月  19 10:10 SRR17656234_2.fastq.gz.aspx
   0 7月  19 10:02 SRR17656237_1.fastq.gz
   0 7月  19 10:02 SRR17656237_2.fastq.gz
   0 7月  19 10:02 SRR17656238_1.fastq.gz
   0 7月  19 10:02 SRR17656238_2.fastq.gz
   0 7月  19 10:02 SRR17656241_1.fastq.gz
1.3M 7月  19 10:05 SRR17656241_2.fastq.gz
  64 7月  19 10:06 SRR17656241_2.fastq.gz.aspx

如果一次性下载好几百个文件,很容易失败几十个,然后挑出来继续下载然后继续失败,反反复复很浪费时间。这个时候可以借助于人工智能大模型写一个自动化校验文件的md5信息自动删除失败的文件然后重新下载。

如果是文件下载成功而且md5校验成功

会有如下所示的日志信息;

Completed: 268115K bytes transferred in 89 seconds
 (24415K bits/sec), in 1 file.
文件 SRR17656258_1.fastq.gz 下载成功,并且MD5校验和正确。
处理文件: SRR17656258_2.fastq.gz
尝试下载文件 (尝试次数: 1 / 10)...
Completed: 269769K bytes transferred in 74 seconds
 (29520K bits/sec), in 1 file.
文件 SRR17656258_2.fastq.gz 下载成功,并且MD5校验和正确。
处理文件: SRR17656262_1.fastq.gz
尝试下载文件 (尝试次数: 1 / 10)...
Completed: 231723K bytes transferred in 64 seconds
 (29363K bits/sec), in 1 file.
文件 SRR17656262_1.fastq.gz 下载成功,并且MD5校验和正确。
处理文件: SRR17656262_2.fastq.gz
尝试下载文件 (尝试次数: 1 / 10)...
Completed: 234184K bytes transferred in 217 seconds
 (8809K bits/sec), in 1 file.
文件 SRR17656262_2.fastq.gz 下载成功,并且MD5校验和正确。
处理文件: SRR17656229_1.fastq.gz

如果是文件下载成功但是md5校验失败

就需要代码自动化判断,然后继续尝试下载,直到md5校验成功,比如下面的两个样品,都是下载了两三次才md5校验成功。其实每次重新尝试都是可以下载成功但是校验失败。

处理文件: SRR17656233_1.fastq.gz
尝试下载文件 (尝试次数: 1 / 10)...
Completed: 554541K bytes transferred in 645 seconds
 (7032K bits/sec), in 1 file.
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 2 / 10)...
Completed: 554541K bytes transferred in 942 seconds
 (4819K bits/sec), in 1 file.
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 3 / 10)...
Completed: 554541K bytes transferred in 544 seconds
 (8345K bits/sec), in 1 file.
文件 SRR17656233_1.fastq.gz 下载成功,并且MD5校验和正确。


处理文件: SRR17656233_2.fastq.gz
尝试下载文件 (尝试次数: 1 / 10)...
Completed: 556271K bytes transferred in 850 seconds
 (5357K bits/sec), in 1 file.
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 2 / 10)...
Completed: 556271K bytes transferred in 707 seconds
 (6437K bits/sec), in 1 file.
文件 SRR17656233_2.fastq.gz 下载成功,并且MD5校验和正确。

如果是网络失败

就不会下载到fq文件,就没办法校验,会出现下面的日志:

Startup failed, exit
md5sum: SRR17656242_1.fastq.gz: No such file or directory
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 8 / 10)...
ascp: Target address not available 
Startup failed, exit
md5sum: SRR17656242_1.fastq.gz: No such file or directory
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 9 / 10)...
ascp: Target address not available 
Startup failed, exit
md5sum: SRR17656242_1.fastq.gz: No such file or directory
文件校验失败,正在重试...
尝试下载文件 (尝试次数: 10 / 10)...
ascp: Target address not available 
Startup failed, exit
md5sum: SRR17656242_1.fastq.gz: No such file or directory

让我们看看人工智能大模型给出来的代码吧

我仅仅是把 aspera的高速下载确实很快吗 里面的基础代码发给人工智能大模型,然后给出来自己的需求,它就可以完成了:

#!/bin/bash

# 定义文件列表的文本文件路径
FILE_LIST="input.txt"

# 定义最大重试次数
MAX_RETRIES=10

# 检查文件列表文件是否存在
if [ ! -f "$FILE_LIST" ]; then
    echo "文件列表文件 $FILE_LIST 不存在。"
    exit 1
fi

# 读取文件列表文件
while read -r filename md5sum download_url; do
    echo "处理文件: $filename"

    # 定义下载的文件路径
    download_path="$filename"

    # 初始化重试次数
    retries=0

    # 循环直到文件校验成功或达到最大重试次数
    while [ $retries -lt $MAX_RETRIES ]; do
        echo "尝试下载文件 (尝试次数: $((retries + 1)) / $MAX_RETRIES)..."

        # 使用curl下载文件
        #curl -o "$download_path" -L "$download_url"
        # 使用 ascp 下载文件
ascp -QT -l 300m -P33001 -k 1  \
-i ~/miniconda3/envs/download/etc/asperaweb_id_dsa.openssh   \
era-fasp@$download_url  .  

        # 计算下载文件的MD5校验和
        actual_md5=$(md5sum "$download_path" | awk '{print $1}')

        # 校验文件
        if [ "$actual_md5" = "$md5sum" ]; then
            echo "文件 $filename 下载成功,并且MD5校验和正确。"
            break






请到「今天看啥」查看全文