首页 > 数据库 >生信公共数据库下载处理

生信公共数据库下载处理

时间:2024-04-15 23:23:45浏览次数:20  
标签:sra 数据库 fastq SRR SRA 生信 id 下载

下载数据

基础知识

首先了解一下SRA数据库的架构:

SRP(项目 Project)—>SRS(样本 Sample)—>SRX(数据产生 Experiment)—>SRR(数据本身)

国际上的三大生物数据库:SRA, ENA or DDBJ,分别在美国、欧洲、日本,它们之间的数据是同步的,所以可以在任意一个数据库中下载数据,而EBI数据库能够直接下载fq文件,而NCBI则需要先下载sra文件,然后再转换成fq文件(左边方框),所以推荐使用ENA数据库下载数据。或者可以直接使用sra-explorer,它是一个为了让SRA更易检索、更易下载的网页端应用。

  • 生物项目(BioProjects)是最顶层的,根据不同的数据库,它的前缀是PRJ 或者 SRP/ERP/DRP;
  • BioProjects中包含一个或多个的生物样本(BioSamples),它的前缀是SAMN 或者SRS/ERS/DRS;
  • 一个BioSample虽然只是一个样本,但它可以使用多种实验处理,也就是Experiments,前缀是SRX/ERX/DRX;
  • 每个实验都会有一个数据产出Run,它的前缀是SRR/ERR/DRR。因此,一个SRS或许会包含多个实验产生的多个数据,也就可能对应多个SRR号

NCBI找到SRR List

首先在NCBI搜BioSample的ID(DLC15103121701)
,可以进入对应的BioProject(PRJNA511588),然后在BioProject的页面中找到SRA Experiments的Link,在这里可以

  • 点send to Run Selector,然后就会跳转到Run Selector的页面,可以在这里点击Accession List获取所有的SRR号
  • 点send to File RunInfo,会获取一个csv文件,文件中会有所有sra的下载链接,可使用wget进行下载

如果我们任意点进一个SRX号,进去后:

  • PRJNA511588:点了就又回到了进入对应的BioProject界面
  • SRP174371:这个界面是一个项目的总览,包括了标识符、研究类型、简要介绍和对应的文章链接
  • All experiments:回到了SRA Experiments的界面
  • All runs:跳转到Run Selector,点击Accession List获取所有的SRR号

NCBI中SRA Normalized Format和SRA Lite Format的区别

SRA Lite采用了简化的quality scores,具体它是如何简化的请参考原文

SRA Lite files are produced from SRA Normalized Format by assessing overall read quality, setting a per-read quality flag (Read_Filter), and removing base quality scores from the file. In the resulting files, all reads have a Read_Filter flag with value pass or reject. Importantly, it is still possible to produce fastq formatted files from SRA Lite format using the SRA toolkit. In this case, each read will have a constant quality score set to 30 for reads with Read_Filter value "pass" or 3 for reads with a value "reject".
Illumina fastq and sam/bam specifications support a quality bit that is set by the sequencing instrument and SRA Lite stores this as a "pass"/"reject" Read_Filter value. If this bit is set in the submitted fastq or bam file, the value is retained. If it is not, SRA will set a pass/reject value based on the quality score distribution within each read. Reads that have more than half of quality score values <20 are flagged "reject". Reads that begin or end with a run of more than 10 quality scores <20 are also flagged "reject". Reads that pass these quality checks are flagged "pass". When dumping data using the fastq-dump, fasterq-dump, or sam-dump utilities in the SRA toolkit, all reads are included by default. However, the fastq-dump tool has an option to include only passed or only rejected reads:
fastq-dump --read-filter <[pass|reject]>
In order to interact with these files and set your preference for SRA Lite files, please use SRA Toolkit version 2.11.2 or later.

简单来说,SRA Lite文件将碱基质量得分分为了pass和reject两种,pass统一给分为30,而reject统一给分为3。这里我们要注意,在后面去接头等trim的分析步骤中,有些参数设置为去除碱基质量低于36的片段,在处理SRA Lite时要小心这一点。

EBI找到SRR List

首先在网站ENA数据库中搜索SRR号,可以找到对应的BioProject(PRJNA511588),然后在BioProject的页面中就可以下载全部的fq文件

获取SRR download URL后使用wget下载

链接获取上述已说

获取SRR List后使用prefetch+ascp进行数据下载

来吧,加速你的下载

conda install sra-tools=2.9.6 -y

SRA数据库如何直接下载fq文件:
使用SRA-toolkit中的工具fastq-dump直接下载SRR文件,并转换为FASTQ格式,--split-3参数表示如果是双端测序就自动拆分,如果是单端不受影响。--gzip转换fastq为压缩文件,节省空间

nohup fastq-dump -v --split-3 --gzip SRR5908360 &

使用kingfisher下载数据

转录组数据下载+文件名整理

ftp下载

下载地址的规律:ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR836/SRR8366764/SRR8366764.sra
后面地址分别为:

  • SRR
  • SRR+前三个数
  • SRR号
  • SSR号.sra

GSA数据库下载

GSA数据库的申请及数据下载
不止是NCBI的SRA可以下载测序数据
使用Edge turbo下载CNCB数据
对于wget的下载方式,暂时只发现在CRR一级的能够直接下载:https://ngdc.cncb.ac.cn/gsa/browse/CRA000005/CRR007231

wget ftp://download.big.ac.cn/gsa/CRA000005/SAMC000237/CRX000077/CRR000071/CRD000132.gz

通过观察可以发现,可以使用md5文件第二列的数据进行替换实现批量下载

一些小问题

将SRS号转换成SRR号
单细胞测序的文件必须下载sra

SRA数据转换成fastq格式

​对于sra数据转换,fasterq-dump可不止快了亿点点

  • sra转换为fastq,使用的转换工具,推荐顺序为:fasterq-dump > pfastq-dump > fastq-dump
  • 需先下载并安装好sratoolkit,fasterq-dump和 fastq-dump都包含在sratoolkit里,而pfastq-dump需要单独下载
  • fasterq-dump最快最棒,转化速度是其他两个比不了的。但它的参数有些特殊,需要注意。

下载好数据后的处理:

cat Accession List | while read id ; do mv ./${id}/* ./ ; done # 从文件夹中将数据取出
cat Accession List | while read id; do rm -r ${id}; done # 去除文件夹
# 需要安装pigz
# conda install pigz -y
cat Accession List | while read id;do echo "fasterq-dump -e 8 --split-files -O ./ --outfile ${id}.fastq ${id}.sra";echo "pigz -p 8 -f ./${id}_1.fastq";echo "pigz -p 8 -f ./${id}_2.fastq";done > sra2fq.sh
nohup bash sra2fq.sh &

ascp下载数据

在ENA上下载数据,以SRR为单位下载,下载的数据为fastq.gz格式,下载数据的地址等信息已经提供

  • 准备工作
# 安装prefetch
conda install sra-tools=2.9.6 -y
prefetch -h

# 安装ascp
conda install -c hcc aspera-cli -y
conda install -c hcc aspera-cli=3.7.7 # 密钥地址要对应的修改为:-i ~/miniconda3/envs/wgbs/etc/asperaweb_id_dsa.openssh
  • 下载数据
# 下载数据
## 未使用conda环境
ascp -QT -l 300m -P33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:vol1/fastq/SRR645/002/SRR6457892/SRR6457892_1.fastq.gz ./
## 使用conda环境:设置-m可以抢点网速
ascp -QT -l 1000m -m 300m -k 1 -P33001 -i ~/miniconda3/envs/wgbs/etc/asperaweb_id_dsa.openssh [email protected]:/vol1/fastq/SRR558/006/SRR5582006/SRR5582006_1.fastq.gz ./

-i string输入私钥,安装 aspera 后有在目录 ~/.aspera/connect/etc/ 下有几个私钥,使用 linux 服务器的时候一般使用 asperaweb_id_dsa.openssh 文件作为私钥。使用conda下载的私钥可能在/miniconda3/pkgs/aspera-cli-3.7.7-0/etc/asperaweb_id_dsa.openssh或者/miniconda3/envs/wgbs/etc/asperaweb_id_dsa.openssh,可以使用ls -R | grep openssh查看是否存在,然后使用find . -iname asperaweb_id_dsa.openssh查看具体位置
-l string设置最大传输速度,比如设置为 200M 则表示最大传输速度为 200m/s。若不设置该参数,则一般可达到10m/s的速度,而设置了,传输速度可以更高。
-m 设置最小传输速度
-T 不进行加密。若不添加此参数,可能会下载不了。
--host=stringftp的host名,NCBI的为http://ftp-private.ncbi.nlm.nih.gov;EBI的为http://fasp.sra.ebi.ac.uk
--user=string用户名,NCBI的为anonftp,EBI的为era-fasp
--mode=string选择模式,上传为 send,下载为 recv

fasp.sra.ebi.ac.uk:/vol1/fastq/SRR558/005/SRR5582015/SRR5582015_1.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR558/005/SRR5582015/SRR5582015_2.fastq.gz

aspera.sh脚本命令

cat fq.txt | while read id
do
ascp -QT -l 300m -P33001  \
-i ~/miniconda3/envs/wgbs/etc/asperaweb_id_dsa.openssh   \
era-fasp@$id  .
done

运行脚本:

nohup bash aspera.sh > aspera.log 2>&1 &

批量下载脚本/检测并下载

#!/usr/bin/env bash
# 假定要下载的文件列表为
# files=(
#     "SRR13289578_1.fastq.gz"
#     "SRR13289578_2.fastq.gz"
#     ...
#     ...
#     "SRR13289606_1.fastq.gz"
#     "SRR13289606_2.fastq.gz"
# )

# 定义文件名前缀和范围
prefix="SRR13289"
start=578
end=606

# 初始化文件列表
files=()

# 循环生成文件名列表
for id in $(seq $start $end); do
  base="${prefix}${id}"
  files+=("${base}_1.fastq.gz" "${base}_2.fastq.gz")
done

# 定义下载命令
download_cmd="ascp -QT -l 300m -P33001 -i ~/miniconda3/envs/rnaseq/etc/asperaweb_id_dsa.openssh [email protected]:vol1/fastq"
# ascp -QT -l 300m -P33001 -i ~/miniconda3/envs/rnaseq/etc/asperaweb_id_dsa.openssh [email protected]:vol1/fastq/SRR132/078/SRR13289578/SRR13289578_1.fastq.gz .

# 循环检查每个文件是否存在
echo "#!/usr/bin/env bash" > down.sh
for file in "${files[@]}"
do
    if [ ! -f "$file" ]; then
        # 如果文件不存在,则将下载命令写入脚本文件
        # SRR为file的前六个字符
        SRR=$(echo "${file:0:6}")
        # srr_dir为0加上file的第十位和第十一位
        srr_dir="0${file:9:2}"
	# base为file的前十一个字符
        base=$(echo "${file:0:11}")
        ${download_cmd}/$SRR/$srr_dir/$base/$file ./
    fi
done

数据处理

获取样本名和md5校验

从ENA上下载的数据,需要进行md5校验,以保证数据的完整性

# 查看下载的tsv文件
# less sample.txt | column -t | less -S

# study_accession	sample_accession	experiment_accession	run_accession	tax_id	scientific_name	base_count	fastq_md5	fastq_ftp	submitted_ftp	sra_ftp	bam_ftp	bam_bytes
# PRJNA672964	SAMN16582408	SRX9390297	SRR12926135	9823	Sus scrofa	13951863300	aaae352258023e73f1dc2634f56cda59;ce7c1558bb360b383a8833661493f1cb	ftp.sra.ebi.ac.uk/vol1/fastq/SRR129/035/SRR12926135/SRR12926135_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR129/035/SRR12926135/SRR12926135_2.fastq.gz		ftp.sra.ebi.ac.uk/vol1/srr/SRR129/035/SRR12926135		

# 删除第一行
sed -i '1d' sample.txt
# 保留fastq_md5列和fastq_ftp列,也即第8列和第9列
cat sample.txt | cut -f 8,9 > sampleID.txt
# 将;替换成/t
sed -i 's/;/\t/g' sampleID.txt
# 依次输出第一列,第三列,换行符,第二列,第四列
awk '{print $1"\t"$3"\n"$2"\t"$4}' sampleID.txt > md5.txt
# md5.txt第二列依据/分割,保留分割后的最后一列
awk '{n=split($2, a, "/"); print $1 " " a[n]}' md5.txt > md5.txt.1 && mv md5.txt.1 md5.txt

使用url获取样本名

# ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR132/072/SRR13281272/SRR13281272_1.fastq.gz

# 将文本按照/分割,保留分割后的最后一列
cat sample.txt | cut -d "/" -f 9 > sample.txt.1 && mv sample.txt.1 sample.txt

生成md5.txt以便于校验

import pandas as pd

# 读取文本文件
data = pd.read_csv('md5.txt', delimiter='\t', header=None)

# 删除第二列最后一个斜杠前面的内容
data[1] = data[1].apply(lambda x: x.rsplit('/', 1)[-1])

# 保存修改后的数据
data.to_csv('md5.txt', sep='\t', header=False, index=False)
# 校验md5值
# conda install md5sum -y
md5sum -c md5.txt

标签:sra,数据库,fastq,SRR,SRA,生信,id,下载
From: https://www.cnblogs.com/cauwj/p/18137157

相关文章

  • 数据库问题排查以及SQL优化
    数据库CPU飙高通过top等命令确定是否数据库进程CPU飙高通过命令showprocesslist找出耗资源较大的SQL如果没有特别耗资源的SQL,就查看session是不是突然增多,可以通过限制连接数如果有特别耗资源的SQL,排查耗资源的SQL是否命中索引、是否表的数据量特别大kill掉这个消耗大的线程......
  • ChromeDriver高版本下载
    chromedriver下载chromedriver114版本及以下的下载仓库地址:https://chromedriver.storage.googleapis.com/index.html chromedrvier从115版本开始从以前默认的仓库变成了新的地址发布:https://googlechromelabs.github.io/chrome-for-testing 新发布地址默认只列出......
  • 网易云音乐音乐下载
    1.python部分网易云音乐.py:#-*-coding:utf-8-*-#@Time:2024/4/1519:30#@Author:快乐的小猴子#@Version:#@Function:importsubprocessfromfunctoolsimportpartialsubprocess.Popen=partial(subprocess.Popen,encoding='utf-8')importexecj......
  • 向量数据库之Lancedb学习记录
    简介Lancedb是一个用于人工智能的开源矢量数据库,旨在存储、管理、查询和检索大规模多模式数据的嵌入。Lancedb的核心是用Rust编写的,并构建在Lance之上,专为高性能ML工作负载和快速随机访问而设计。快速开始安装pipinstalllancedb目前0.6.8需要pyarrow-12.0.0及以上,亲测15......
  • java连接ssmsSqlserver数据库 报错信息:com.microsoft.sqlserver.jdbc.SQLServerExce
    解决办法:将官网下载的驱动文件打开,找到如下路径,并复制,粘贴放到jdk的bin目录下......
  • 数据库和缓存如何保证一致性
    保证数据库和缓存之间的一致性是在许多应用程序中面临的挑战。数据库和缓存是两个不同的存储层,具有不同的特性和行为。在使用缓存的同时,确保数据库和缓存之间的数据一致性是至关重要的。 针对读请求,流程较简单,先读取缓存,缓存命中则返回结果,缓存未命中则读取数据库,并将读取的数......
  • openGauss AI4DB-数据库自治运维
    AI4DB:数据库自治运维如上文所述,AI4DB主要用于对数据库进行自治运维和管理,从而帮助数据库运维人员减少运维工作量。在实现上,DBMind的AI4DB框架具有监控和服务化的性质,同时也提供即时AI工具包,提供开箱即用的AI运维功能(如索引推荐)。AI4DB的监控平台以开源的Prometheus为主,DBMind提......
  • QGIS下载影像
    插件下载在QGIS中搜索下载QuickMapServices插件再点击插件工具栏上带加号的图标按钮(下图已经加载过服务),选择Settings。选择Moreservices,点击Getcontributedpack。再点击插件工具栏上带加号的图标按钮,可以看到已经添加了一些默认的地图服务。按需要选择服务,加载区域矢量数......
  • Maven的下载安装配置
    Maven的下载安装配置Maven是什么Maven是基于项目对象模型(POMprojectobjectmodel),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。通俗的讲maven就是专门用于构建和管理项目的工具,他可以帮助我们去下载我们所需要jar包,帮助我们去管理项目结构,帮......
  • 数据库SQL注入攻击以及解决方案
    数据库SQL注入攻击以及解决方案--数据库SQL注入攻击selectcount(*)from表whereLoginID='lqwvje'andpwd='123'--拿上面的一个经常用的用户登入实例正常情况下是没有问题count>0即可以登入成功--用户名一但输入了数据库特殊字符如一下一段代码那就可以正常登入......