Skip to content

Latest commit

 

History

History
225 lines (178 loc) · 7.62 KB

1.0数据下载.md

File metadata and controls

225 lines (178 loc) · 7.62 KB

如何下载SRA中的数据

Caution

如果你是在dbgap申请的项目,需要秘钥下载 如果是GEO的就不用

获取cart文件和秘钥

dbgap:SRA测序数据的cart文件在My Request中SRA data (reads and reference alignments)点击SRA RUN selector GEO:SRA测序数据的cart文件在SRA Run Selected,选择你喜欢的文件,然后点击JWT cart 基因型和表型数据在Phenotype and Genotype files中,点击dbGaP File Selector key密匙在My Projects中点击get dbGaP repository key

数据下载准备

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE136831 为例 在SRA Run Selector中 SRA测序数据的cart文件在My Request中SRA data (reads and reference alignments)点击SRA RUN selector 基因型和表型数据在Phenotype and Genotype files中,点击dbGaP File Selector

Caution

一般都是在linux系统中运行

windows系统下可以通过wsl2解决 如果是在windows中,需要安装WSL2 教程如下https://learn.microsoft.com/zh-cn/windows/wsl/install 需要查看自己的电脑C盘是否有足够的存储空间,100g以上 可以使用vscode操作wsl2 https://zhuanlan.zhihu.com/p/466001838

安装下载软件

aspera connect

wget https://download.asperasoft.com/download/sw/connect/3.8.0/ibm-aspera-connect-3.8.0.158555-linux-g2.12-64.tar.gz
tar zxf ibm-aspera-connect-3.8.0.158555-linux-g2.12-64.tar.gz
sh ibm-aspera-connect-3.8.0.158555-linux-g2.12-64.sh
#echo 'PATH=$PATH:~/.aspera/connect/bin/' >> ~/.bashrc #将软件写入系统路径中
source ~/.bashrc
ascp --help

SRA-tools

教程:https://github.com/ncbi/sra-tools/wiki/02.-Installing-SRA-Toolkit

#在Ubuntu系统中
wget --output-document sratoolkit.tar.gz https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-ubuntu64.tar.gz  ###这里下载后会有一个文件夹名
tar -vxzf sratoolkit.tar.gz
#export PATH=$PATH:$PWD/sratoolkit.3.0.7-ubuntu64/bin(格式是export PATH=$PATH:$PWD/上面的文件夹名/bin)(这个命令是把bin放进系统路径中)
#echo '/home/lin/dbgap/sratoolkit.3.0.7-ubuntu64/bin/' >> ~/.bashrc
which fastq-dump
which fasterq-dump   ##看看这些重要的函数有没有
fastq-dump --stdout -X 2 SRR390728 ###测试一下工具

配置SRA-tools

vdb-config -i

#MAIN菜单的Enable Remote Access勾上,要远程访问

#CACHE菜单定义储存路径和暂存路径

#AWS菜单的 report cloud instance identity勾上
#accept charges for AWS不能勾,因为会使用aws下载,需要付费账号

#GCP菜单的 report cloud instance identity勾上
#accept charges for GCP不能勾,因为会使用GCP下载,需要付费账号
#save保存并exit

恭喜你已经可以开始下载文件啦

下载SRA文件

#非dbgap项目
prefetch --cart /mnt/s/twas/dbGap/download_empty2/cart_DAR125750_202310260405.krt   #直接使用你的cart文件进行下载
#dbgap项目
prefetch --ngc /mnt/s/twas/dbGap/prj_35587.ngc --cart /mnt/s/twas/dbGap/download_empty2/cart_DAR125750_202310260405.krt -O /mnt/s/twas/dbGap/download_empty
# --ngc是秘钥文件  --cart 是cart文件路径   -O 是存储文件夹路径,不过我发现好像没什么用
# key,cart文件,以及一个空的文件夹用来放数据(缓存的文件夹在前面设置好,别动一般没什么问题)(cart文件和key文件放在同一个下载文件夹中))

sralite转fastq文件

fasterq-dump在HowTo: fasterq dump 中有完整的解释 https://github.com/ncbi/sra-tools/wiki/HowTo:-fasterq-dump

fasterq-dump -p  -e 10 --split-3 --include-technical /mnt/s/twas/dbGap/download_empty/SRR14213423/SRR14213423.sra

#fasterq-dump --split-3 -p -e 10 #-p的意思是查看进度,-e的意思是调用多线程,后面10设置线程数,--split-3是默认的分割方式,--include-technical不加这个参数是不会分解出来index和barcode文件(https://www.jianshu.com/p/ab98dd332368) https://zhuanlan.zhihu.com/p/591140275有不同的分割方式的介绍 #关于fasterq-dump的详细用法在https://github.com/ncbi/sra-tools/wiki/08.-prefetch-and-fasterq-dump,用很多参数指定,我用了最简单的

批量下载GEO数据

nohup prefetch -O . $(<SRR_Acc_List.txt) &  #挂在后台下载

具体可以看https://zhuanlan.zhihu.com/p/89024212

还有一些网页下载的方法https://mp.weixin.qq.com/s/p1vlxtKqbYBnwYsJRjNZtA

批量解压sralite文件

#!/bin/bash

max_jobs=5 # 同时运行的最大作业数

function wait_for_jobs() {
    while [ $(jobs -p | wc -l) -ge $max_jobs ]; do
        sleep 1
    done
}

for dir in SRR{1..100}; do
    if [ -d "$dir" ]; then
        for f in "$dir"/*.sralite; do
            if [ -f "$f" ]; then
                # 等待,直到并行作业数降到下限
                wait_for_jobs

                # 执行fasterq-dump,并将其放入后台
                # nohup fasterq-dump -p -e 10 --split-3 --include-technical "$f" &
                nohup fasterq-dump -p -e 10 --split-3 --include-technical -O "$dir" "$f" &
                # 短暂休息,以避免立即填满作业队列
                sleep 1
            fi
        done
    fi
done

# 等待所有后台作业完成
wait

重命名数据,将其准备为cellranger格式

#!/bin/bash

# 开始和结束的序列号
start=7770
end=7800

for ((i=start; i<=end; i++)); do
    dir="SRR2140${i}" # 构造目录名
    # 检查目录是否存在
    if [ -d "$dir" ]; then
        # 构造原始文件名和新文件名,然后重命名
        original1="${dir}/${dir}_1.fastq"
        new1="${dir}/${dir}_S1_L001_R1_001.fastq.gz"
        
        original2="${dir}/${dir}_2.fastq"
        new2="${dir}/${dir}_S1_L001_R2_001.fastq.gz"
        
        # 检查原始文件是否存在,并重命名
        if [ -f "$original1" ]; then
            mv "$original1" "$new1"
            echo "Renamed $original1 to $new1"
        else
            echo "File $original1 does not exist."
        fi
        
        if [ -f "$original2" ]; then
            mv "$original2" "$new2"
            echo "Renamed $original2 to $new2"
        else
            echo "File $original2 does not exist."
        fi
    else
        echo "Directory $dir does not exist."
    fi
done

将代码集成了一下

max_jobs=5 # 同时运行的最大作业数

function wait_for_jobs() {
    while [ $(jobs -p | wc -l) -ge $max_jobs ]; do
        sleep 1
    done
}

for dir in SRR{1..100}; do
    if [ -d "$dir" ]; then
        for f in "$dir"/*.sralite; do
            if [ -f "$f" ]; then
                # 等待,直到并行作业数降到下限
                wait_for_jobs

                # 使用子shell执行fasterq-dump,重命名,然后压缩命令,并将其放入后台
                (
                    fasterq-dump -p -e 10 --split-3 --include-technical -O "$dir" "$f" && 
                    mv "$dir"/$(basename "$f" .sralite)_1.fastq "$dir"/$(basename "$f" .sralite)_S1_L001_R1_001.fastq &&
                    mv "$dir"/$(basename "$f" .sralite)_2.fastq "$dir"/$(basename "$f" .sralite)_S1_L001_R2_001.fastq &&
                    pigz "$dir"/$(basename "$f" .sralite)_S1_L001_R1_001.fastq &&
                    pigz "$dir"/$(basename "$f" .sralite)_S1_L001_R2_001.fastq
                ) &
                # 短暂休息,以避免立即填满作业队列
                sleep 1
            fi
        done
    fi
done

# 等待所有后台作业完成
wait