前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信方向的博士找博士后机会不能只看ngs数据处理技术啊!

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

作者头像
生信技能树
发布2024-07-26 16:31:04
320
发布2024-07-26 16:31:04
举报
文章被收录于专栏:生信技能树

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

现在给大家演示一下

经常下载过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脚本就是成熟的生信工程师了,可是现在基本上只需要有生信基础的编程能力,加上人工智能大模型,都是可以以一当十!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现在给大家演示一下
  • 如果是文件下载成功而且md5校验成功
  • 如果是文件下载成功但是md5校验失败
  • 如果是网络失败
  • 让我们看看人工智能大模型给出来的代码吧
  • 人工智能颠覆了生信能力的评价体系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档