原始数据下载专题 | gget一个综合性的生物信息查询和下载工具

gget的功能跟之前介绍的fastq-dl不一样,fastq-dl主要是下载测序的原始数据的,而gget的功能就非常丰富了:

  1. 从ensembl下载参考基因组,
  2. 获取指定基因的核苷酸或者多肽序列,
  3. 获取指定蛋白质PDB数据库的数据,
  4. 查询指定基因全部同源基因,
  5. 查询指定基因的表达量,
  6. 做核酸或者多肽序列的blast/blat搜索,
  7. 甚至可以给定一系列的基因做enrichment。

gget可以从UniProt,NCBI,UCSC,Enrichr,ARCHS4,ensembl数据库查询和交互数据。

还有更多跟医学、癌症、单细胞相关的功能可以参考官方的使用手册:

https://pachterlab.github.io/gget/

在我把gget列进这个专题的时候也没想到这个工具的功能居然这么强大。

而且这个工具现在还在活跃的维护和更新中,我在写这篇帖子时(2024-12-25),3天前还刚刚做了更新修改的。

不用担心这个工具是一个发了文章就跑路不管的一次性工具~

资源链接

  • GitHub地址:

https://github.com/pachterlab/gget

  • 文章地址:

https://academic.oup.com/bioinformatics/article/39/1/btac836/6971843

  • 官方使用手册:

https://pachterlab.github.io/gget/en/introduction.html

安装

conda或者pip都可以安装。

conda:

conda install gget 

pip

python -m pip install gget 

目前最新版是:0.29.0

安装好后可以用命令行调用,如果你使用的是Jupyter Lab / Google Colab也支持直接引入

import gget

使用

场景1:下载参考基因组文件

可以以'homo_sapiens'的形式来指定要下载的物种,也支持一些shortcuts例如:

  • 'human'
  • 'mouse'
  • 'human_grch37' (accesses the GRCh37 genome assembly)

拿yeast来做个测试,会返回一个很大的json格式的文件,如果你只想要下载地址,那就加一个-ftp就可以了。加-ftp之后得到的长这样

gget ref 'saccharomyces_cerevisiae' -ftp
17:30:14 - INFO - Fetching reference information for saccharomyces_cerevisiae from Ensembl release: 113.
http://ftp.ensembl.org/pub/release-113/gtf/saccharomyces_cerevisiae/Saccharomyces_cerevisiae.R64-1-1.113.gtf.gz
http://ftp.ensembl.org/pub/release-113/fasta/saccharomyces_cerevisiae/cdna/Saccharomyces_cerevisiae.R64-1-1.cdna.all.fa.gz
http://ftp.ensembl.org/pub/release-113/fasta/saccharomyces_cerevisiae/dna/Saccharomyces_cerevisiae.R64-1-1.dna.toplevel.fa.gz
http://ftp.ensembl.org/pub/release-113/fasta/saccharomyces_cerevisiae/cds/Saccharomyces_cerevisiae.R64-1-1.cds.all.fa.gz
http://ftp.ensembl.org/pub/release-113/fasta/saccharomyces_cerevisiae/ncrna/Saccharomyces_cerevisiae.R64-1-1.ncrna.fa.gz
http://ftp.ensembl.org/pub/release-113/fasta/saccharomyces_cerevisiae/pep/Saccharomyces_cerevisiae.R64-1-1.pep.all.fa.gz

如果要下载则要提供一个-d下载-od指定输出的文件夹

gget ref 'saccharomyces_cerevisiae' -ftp -d -od test

萌哥碎碎念:

这个功能对我而言还挺有用的,特别是很多时候冷启动一个项目,什么都没有,连要做的物种的参考基因组都没有,那就可以一行命令获得下载地址了。对我而言省去了很多的去数据库查询的步骤,好用

场景2:根据基因名称得到蛋白质序列

很多时候我需要特定的基因的DNA序列或者蛋白质序列用来做进化树,那么gget就可以很方便的提供这个功能了。

例如人类的ENSG00000130234基因,获取它的蛋白质序列:

gget seq --translate ENSG00000130234
18:17:27 - INFO - Requesting amino acid sequence of the canonical transcript ENST00000252519 of gene ENSG00000130234 from UniProt.
>ENST00000252519 uniprot_id: Q9BYF1 ensembl_id: ENST00000252519 gene_name: ACE2 organism: Homo sapiens sequence_length: 805
MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLASWNYNTNITEENVQNMNNAGDKWSAFLKEQSTLAQMYPLQEIQNLTVKLQLQALQQNGSSVLSEDKSKRLNTILNTMSTIYSTGKVCNPDNPQECLLLEPGLNEIMANSLDYNERLWAWESWRSEVGKQLRPLYEEYVVLKNEMARANHYEDYGDYWRGDYEVNGVDGYDYSRGQLIEDVEHTFEEIKPLYEHLHAYVRAKLMNAYPSYISPIGCLPAHLLGDMWGRFWTNLYSLTVPFGQKPNIDVTDAMVDQAWDAQRIFKEAEKFFVSVGLPNMTQGFWENSMLTDPGNVQKAVCHPTAWDLGKGDFRILMCTKVTMDDFLTAHHEMGHIQYDMAYAAQPFLLRNGANEGFHEAVGEIMSLSAATPKHLKSIGLLSPDFQEDNETEINFLLKQALTIVGTLPFTYMLEKWRWMVFKGEIPKDQWMKKWWEMKREIVGVVEPVPHDETYCDPASLFHVSNDYSFIRYYTRTLYQFQFQEALCQAAKHEGPLHKCDISNSTEAGQKLFNMLRLGKSEPWTLALENVVGAKNMNVRPLLNYFEPLFTWLKDQNKNSFVGWSTDWSPYADQSIKVRISLKSALGDKAYEWNDNEMYLFRSSVAYAMRQYFLKVKNQMILFGEEDVRVANLKPRISFNFFVTAPKNVSDIIPRTEVEKAIRMSRSRINDAFRLNDNSLEFLGIQPTLGPPNQPPVSIWLIVFGVVMGVIVVGIVILIFTGIRDRKKKNKARSGENPYASIDISKGENNPGFQNTDDVQTSF

换成yeast也是可以的,只要这个基因的名称是个ensembl的标准名称。这次要DNA序列不用翻译:

gget seq YLL032C
18:23:05 - INFO - Requesting nucleotide sequence of YLL032C from Ensembl.
>YLL032C chromosome:R64-1-1:XII:74270:76747:-1
ATGGATAACTTCAAAATTTACAGTACAGTTATCACAACTGCTTTTTTACAAGTTCCACACTTATACACGACAAATAGATTATGGAAGCCCATAGAAGCACCTTTTTTAGTTGAATTTCTTCAAAAAAGAATAAGCTCCAAAGAACTTAAAAACACAAAAGCAATCTGTCATATAGATCCCTCATGGGTCAATCTAAATGCTTCTTTCATTAGAGATGACATGATCTCAATAAAAGCTACCACAGATGATATGGACCTCGATGCTATTTGCAGGATTTCTTTGCCCTTACCTATGAACACAAATGATCTAACAGCAGAATTGGAAAAAATGAAACGTATACTATTGGACTTGAGTGAAAAATTCAATTTAGAACTAATCATCACCAAAGAACCAGCTTACTTCACACCAGAACAGACAGGCGAGAGCAAGGAATTATGTATTTACGTGCATGCATTAGGATTCCGATCTAATTTAATGGAATGCGAACCCCAGTTATTGGCATTTGTCGATTTAATAAAGAAGAATGGTATGACTTTGCCTCCACAACACTACATTATCGAACCTATGGAACTGAACTCATACTCTGTGCTTCCCTTATATATGGGTGTAGATATGGAAAACTTCAAACATATATCCAGAGCTTTTAAAACCAGCATTTACGCACCTTCCCTCATTACGCTGTCTAGGGATCTTAAGGCAAATCCACAAATCTTCTTCTCAGGCGCTGTCCATTCACTAAGTTTACTGGCTAGGAAAACTCTACGTGAGTCCATAAGCGTGAATTCAAAGAGTTTTTTTTATCGTCGATTGACTAATATTACCCCAGGAAAACTACTGTTTATCCGAAAATACTACCAACAAAAGGTAAACCAGTTAATTTTGAAATACCAATCGCTTATTAGAGTTACTAACGAATACATTGAATTTCAATCGATTTCCACGAACTTATTAGAAATGGTTATTAAGAACTTCACTATTCAAGTATTACATGAAATTGTAGAAGTACAGATTTCACTCAATGAAAACTGCGCAATGTCCCCGGAATTAATAATCGACAGCTTTTTCGGACACACTGGAAACCAAATTGTAGTAATAACTCCCAAAGAGGATTCCTTCAACCAATTAATAGTAGTTGGTAACCAATCTTCCACAGATGAGGCGTCCGATACTTCCATATTGCATTACTTATCTGATTTTATTATGGGCTCAAATCAAGTGATTAATCCAAACTTAAGACAGATAAAAGCCATTTTCGAGATACATCCTGATTTTGAAGACTTCATATCAGGCAAGAAAAATGGTAAATTAACACGTATAATGGAACTATCTGCTTGCTTAATTCAACTGGAAATGGAAGAGGAAGATGATAACCTTTATTTAAATTTGGTTAGTGACTCTTTCCCTGATTTCAAGGAATCATTTAAGAATGTTATAAATGAATTTCCTGCCGAAGAATCTTTCTTCATTCCTGAAGTTTGTCACAGACCGATTATAGGTACAGGTGGTTCCTTAATTCAAGCCACAATGAGAAAGCATAACGTCTTCATTCAGTTTTCCAATAGTTTCAATCTTCCACAAAATAAAATTTCTATGATCAGGTATGATAATGTGATAATTAGGTGCCCCAGGAAAAACAAAGCTAATATATGCCTAGCCAAGAATGATTTAAAACAAATTGTTCAAGAATATGATAGTTTACAATCGAAGACGCTCATTAGATTTTCTAGTGGGCAATATAGACATATTTTGCATGTTAACGGCCAAAAGAATATTATAGGACAAATCGAAAAGAACGAAAATGTTTACATAATGATACCGTTAAAAGAGCCCTTGGATGGAACATCTCAATTGAGTATACAAGGAAATGATGAGAATGCATCAAGAGCCGCTAACGAATTGGTTAATAGTGCGTTTGGTTATGAATACGAGTTCAAAATAGATCAAGAGATAGATCCCAATAAAGAATACGAATTTTATAACCTAATTGTTGTTCCATTTTTGCAAATTATGAACATAATTGTAACTTTTGAGAAGGACCTTATCACTTTTACTTTTGAAAAGGATACTAATGAGAATACTCTAACAAAAGCAATCGAATTACTATCCAATTATTTGGAAACACAAAAGACGAAAATAATATTTAAAAAAATAATTAAAAAATTTGTTCTAGGGTCTGCCTCCAGCAAGAGTAACACCAGTAATAGCAATACCAATGGCAATTTCAGATCAATGAATAATGCCAAAAGTCGTACGACCATCGATAATACCAGCCAATCAGGAGCCTCACCACAACGCCACAAAATGCCTGTTATAACGACGGTAGGAGGAGCCCAAGCCATCAAAGGATATATACCAAACACTTATTACAACGGATATGGGTATGGATACGGATATACATACGAGTACGATTATAATTATGCCAACTCTAATAAAGCTCAAACCAATAATAGGCATAAATATCAAAATGGCAGAAAATGA

场景3:获取给定基因的信息

尝试了一下gget的info和search的功能,info功能能获得给定基因的信息,例如

gget info YLL032C
{
    "YLL032C": {
        "ensembl_id": "YLL032C",
        "uniprot_id": [
            "Q07834",
            "Q03208"
        ],
        "pdb_id": null,
        "ncbi_gene_id": null,
        "species": "saccharomyces_cerevisiae",
        "assembly_name": "R64-1-1",
        "primary_gene_name": [
            null,
            null
        ],
        "ensembl_gene_name": null,
        "synonyms": [],
        "parent_gene": null,
        "protein_names": [
            "KH domain-containing protein YLL032C",
            "Uncharacterized protein YML119W"
        ],
        "ensembl_description": "Protein of unknown function; may interact with ribosomes, based on co-purification experiments; green fluorescent protein (GFP)-fusion protein localizes to the cytoplasm; YLL032C is not an essential gene [Source:SGD;Acc:S000003955]",
        "uniprot_description": "",
        "ncbi_description": null,
        "subcellular_localisation": "Cytoplasm",
        "object_type": "Gene",
        "biotype": "protein_coding",
        "canonical_transcript": "YLL032C_mRNA.",
        "seq_region_name": "XII",
        "strand": -1,
        "start": 74270,
        "end": 76747,
        "all_transcripts": [
            {
                "transcript_id": "YLL032C_mRNA",
                "transcript_biotype": "protein_coding",
                "transcript_name": null,
                "transcript_strand": -1,
                "transcript_start": 74270,
                "transcript_end": 76747
            }
        ],
        "all_exons": [],
        "all_translations": []
    }
}

可以得到一系列的信息,结合jq就可以从这里面提取到自己需要的信息啦。

gget search的功能似乎有一点问题,即使使用官网的例子也会出现404的问题。希望作者意识到并且修改吧。

在python里使用gget

上面提到了,如果是Jupyter Lab / Google Colab的环境里,可以直接import进来

import gget
gget.ref("homo_sapiens")
gget.search(["ace2", "angiotensin converting enzyme 2"], "homo_sapiens")
gget.info(["ENSG00000130234", "ENST00000252519"])
gget.seq("ENSG00000130234", translate=True)
gget.blat("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS")
gget.blast("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS")
gget.muscle(["MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS", "MSSSSWLLLSLVEVTAAQSTIEQQAKTFLDKFHEAEDLFYQSLLAS"])
gget.diamond("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS", reference="MSSSSWLLLSLVEVTAAQSTIEQQAKTFLDKFHEAEDLFYQSLLAS")
gget.enrichr(["ACE2", "AGT", "AGTR1", "ACE", "AGTRAP", "AGTR2", "ACE3P"], database="ontology", plot=True)
gget.archs4("ACE2", which="tissue")
gget.pdb("1R42", save=True)

gget.setup("elm") # setup only needs to be run once
ortho_df, regex_df = gget.elm("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS")

gget.setup("cellxgene") # setup only needs to be run once
gget.cellxgene(gene = ["ACE2", "SLC5A1"], tissue = "lung", cell_type = "mucus secreting cell")

gget.setup("alphafold") # setup only needs to be run once
gget.alphafold("MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK")

在R里使用gget

有的同学可能不会python,更喜欢R语言,没关系!gget是可以在R里使用的!

system("pip install gget")
install.packages("reticulate")
library(reticulate)
gget <- import("gget")

gget$ref("homo_sapiens")
gget$search(list("ace2", "angiotensin converting enzyme 2"), "homo_sapiens")
gget$info(list("ENSG00000130234", "ENST00000252519"))
gget$seq("ENSG00000130234", translate=TRUE)
gget$blat("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS")
gget$blast("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS")
gget$muscle(list("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS", "MSSSSWLLLSLVEVTAAQSTIEQQAKTFLDKFHEAEDLFYQSLLAS"), out="out.afa")
gget$diamond("MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLAS", reference="MSSSSWLLLSLVEVTAAQSTIEQQAKTFLDKFHEAEDLFYQSLLAS")
gget$enrichr(list("ACE2", "AGT", "AGTR1", "ACE", "AGTRAP", "AGTR2", "ACE3P"), database="ontology")
gget$archs4("ACE2", which="tissue")
gget$pdb("1R42", save=TRUE)

萌哥碎碎念

总的来讲,gget的功能似乎已经完全超过我一两年前mark这个工具的时候的功能了,有点叹为观止了。
因为我不是做人类啊单细胞啊肿瘤啊之类的,所以举的例子都是抛砖引玉,希望把这个软件介绍给大家,希望能给你的生信分析减少一点障碍增加一些便利~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容