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

2024-07-26 16:31:04 浏览数 (2)

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

现在给大家演示一下

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

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

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

代码语言:javascript复制
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

代码语言:javascript复制
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数据库经常是访问有问题,会导致如下所示的下载失败;

代码语言:javascript复制
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校验成功

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

代码语言:javascript复制
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校验成功。其实每次重新尝试都是可以下载成功但是校验失败。

代码语言:javascript复制
处理文件: 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文件,就没办法校验,会出现下面的日志:

代码语言:javascript复制
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的高速下载确实很快吗里面的基础代码发给人工智能大模型,然后给出来自己的需求,它就可以完成了:

代码语言:javascript复制
#!/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
        else
            echo "文件校验失败,正在重试..."
            rm "$download_path" 
            retries=$((retries   1))
        fi
    done

    # 检查是否达到最大重试次数
    if [ $retries -eq $MAX_RETRIES ]; then
        echo "文件 $filename 下载和校验失败,已达到最大重试次数。"
       # exit 1
    fi
done < "$FILE_LIST"

上面的shell脚本需要读取一个文本文件input.txt,它的内容节选如下所示:

代码语言:javascript复制
SRR17656233_1.fastq.gz  14f36c82df316bfcda3070db182461e6        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/033/SRR17656233/SRR17656233_1.fastq.gz
SRR17656233_2.fastq.gz  1fdad0e3c4d17c35721d4f4fe7518f18        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/033/SRR17656233/SRR17656233_2.fastq.gz
SRR17656234_1.fastq.gz  eaf46f1d519bb050ab654d5975f4706e        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/034/SRR17656234/SRR17656234_1.fastq.gz
SRR17656234_2.fastq.gz  f68099418142c70d7abae1728c4562ef        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/034/SRR17656234/SRR17656234_2.fastq.gz
SRR17656237_1.fastq.gz  b30ab3b951086cef51ac545c9b06cea7        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/037/SRR17656237/SRR17656237_1.fastq.gz
SRR17656237_2.fastq.gz  8aee6152c6c3bc280e5b120d008d9a73        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/037/SRR17656237/SRR17656237_2.fastq.gz
SRR17656238_1.fastq.gz  2a24527bcbd9cc8faa87af1c2cd129e1        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/038/SRR17656238/SRR17656238_1.fastq.gz
SRR17656238_2.fastq.gz  56802f4f4c0202ea72506e46720575e2        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/038/SRR17656238/SRR17656238_2.fastq.gz
SRR17656241_1.fastq.gz  ccdad148ae44ca4d7be4ba95a5c383c0        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/041/SRR17656241/SRR17656241_1.fastq.gz
SRR17656241_2.fastq.gz  25533fed6cba16c073ef26080cc948cc        fasp.sra.ebi.ac.uk:/vol1/fastq/SRR176/041/SRR17656241/SRR17656241_2.fastq.gz

人工智能颠覆了生信能力的评价体系

以前能写出上面的有逻辑的自动化下载并且校验文件完整性的shell脚本就是成熟的生信工程师了,可是现在基本上只需要有生信基础的编程能力,加上人工智能大模型,都是可以以一当十!!!

0 人点赞