如何下载一个物种的全部EST序列 | NCBI | 表达序列标签

EST:表达序列标签,expressed sequence tags 。

顾名思义,很好理解,就是表达出来的序列,即从基因组DNA上表达出来的RNA,但是我们没法测序RNA,所以我们最终测的是表达序列的cDNA片段。

“标签”:就是指这些序列可能比较短,但是可以用来标定一个物种。

常见下载方式有两种:

1. NCBI Web下载

https://www.ncbi.nlm.nih.gov/dbEST/

打开,搜索你要的物种,比如 Camellia ,可以看到结果EST (50287)。

Web下载几个还行,想要批量下载就有点费力了,ncbi反爬虫,也不好爬。

2. NCBI ftp下载

ftp://ftp.ncbi.nih.gov/repository/dbEST/

直接wget就可以批量下载了。

1
2
3
4
5
for one in `seq 1 81`
do
echo $one
wget ftp://ftp.ncbi.nih.gov/repository/dbEST/dbEST.reports.000000.${one}.gz
done  

下载后的文件格式是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
IDENTIFIERS
 
dbEST Id:       5
EST name:       EST00006
GenBank Acc:    M61958
GDB Dsegment:   D0S2525E
 
CLONE INFO
Clone Id:       HHCSB86
Source:         ATCC
Id in host:     77063
DNA type:       cDNA
 
PRIMERS
Sequencing:     M13 Forward
PolyA Tail:     Unknown
 
SEQUENCE
                TGCACAACCAAGTTTTGTGACTACGGGAAGGCTCCCGGGGCAGAGGAGTACGCTCAACAA
                GATGTGTTAAAGAAATCTTACTCCAAGGCCTTCACGCTGACCATCTCTGCCCTCTTTGTG
                ACACCCAAGACGACTGGGGCCCNGGTGGAGTTAAGCGAGCAGCAACTNCAGTTGTNGCCG
                AGTGATGTGGACAAGCTGTCACCCACTGACA
 
Entry Created:  May 26 1992
Last Updated:   Dec 18 2012
 
PUTATIVE ID     Assigned by submitter
                2',3'-cyclic nucleotide phoshodiesterase
 
LIBRARY
Id:             LIBEST_000004
Lib Name:       LIBEST_000004 Hippocampus, Stratagene (cat. #936205)
Organism:       Homo sapiens
Vector:         lambdaZAP-II
Description:    Female, 2 years; oligo-dT + random primed cDNA synthesis;

信息是挺全面的,自己想要哪个物种就只能自己提取了。

提取成FASTA的脚本我就不贴了(效率很重要,因为文件很大)。

 最后我还是自己写了个脚本,biopython实在是太慢了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import gzip
inf = gzip.open("dbEST.reports.000000.49.gz","rb")
raw_id = ""
seq = ""
 
for line in inf:
    if line.stratswith("GenBank Acc"):
        id = line.split(":")[1].strip()
    if line.stratswith("SEQUENCE"):
        seq = ""
        while True:
            rline = inf.readline()
            seq+=rline.strip()
            if not line.stratswith(" "):
                break
    if line.stratswith("Organism"):
        organism = line.split(":")[1].strip()
        if organism.startswith("Camellia"):
            print(">"+id+"   "+organism, seq, sep="\n")

  

我的脚本可以用,但是不一定很快。

我用awk试了很久,没有成功。

 

2018年3月16日  

posted @   Life·Intelligence  阅读(2861)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
TOP
点击右上角即可分享
微信分享提示