原始數(shù)據(jù)下載專題 | gget一個(gè)綜合性的生物信息查詢和下載工具

gget的功能跟之前介紹的fastq-dl不一樣,fastq-dl主要是下載測序的原始數(shù)據(jù)的,而gget的功能就非常豐富了:

  1. 從ensembl下載參考基因組,
  2. 獲取指定基因的核苷酸或者多肽序列,
  3. 獲取指定蛋白質(zhì)PDB數(shù)據(jù)庫的數(shù)據(jù),
  4. 查詢指定基因全部同源基因,
  5. 查詢指定基因的表達(dá)量,
  6. 做核酸或者多肽序列的blast/blat搜索,
  7. 甚至可以給定一系列的基因做enrichment。

gget可以從UniProt,NCBI,UCSC,Enrichr,ARCHS4,ensembl數(shù)據(jù)庫查詢和交互數(shù)據(jù)。

還有更多跟醫(yī)學(xué)、癌癥、單細(xì)胞相關(guān)的功能可以參考官方的使用手冊:

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

在我把gget列進(jìn)這個(gè)專題的時(shí)候也沒想到這個(gè)工具的功能居然這么強(qiáng)大。

而且這個(gè)工具現(xiàn)在還在活躍的維護(hù)和更新中,我在寫這篇帖子時(shí)(2024-12-25),3天前還剛剛做了更新修改的。

不用擔(dān)心這個(gè)工具是一個(gè)發(fā)了文章就跑路不管的一次性工具~

資源鏈接

  • 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

安裝好后可以用命令行調(diào)用,如果你使用的是Jupyter Lab / Google Colab也支持直接引入

import gget

使用

場景1:下載參考基因組文件

可以以'homo_sapiens'的形式來指定要下載的物種,也支持一些shortcuts例如:

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

拿yeast來做個(gè)測試,會返回一個(gè)很大的json格式的文件,如果你只想要下載地址,那就加一個(gè)-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

如果要下載則要提供一個(gè)-d下載-od指定輸出的文件夾

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

萌哥碎碎念:

這個(gè)功能對我而言還挺有用的,特別是很多時(shí)候冷啟動一個(gè)項(xiàng)目,什么都沒有,連要做的物種的參考基因組都沒有,那就可以一行命令獲得下載地址了。對我而言省去了很多的去數(shù)據(jù)庫查詢的步驟,好用

場景2:根據(jù)基因名稱得到蛋白質(zhì)序列

很多時(shí)候我需要特定的基因的DNA序列或者蛋白質(zhì)序列用來做進(jìn)化樹,那么gget就可以很方便的提供這個(gè)功能了。

例如人類的ENSG00000130234基因,獲取它的蛋白質(zhì)序列:

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也是可以的,只要這個(gè)基因的名稱是個(gè)ensembl的標(biāo)準(zhǔn)名稱。這次要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": []
    }
}

可以得到一系列的信息,結(jié)合jq就可以從這里面提取到自己需要的信息啦。

gget search的功能似乎有一點(diǎn)問題,即使使用官網(wǎng)的例子也會出現(xiàn)404的問題。希望作者意識到并且修改吧。

在python里使用gget

上面提到了,如果是Jupyter Lab / Google Colab的環(huán)境里,可以直接import進(jìn)來

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

有的同學(xué)可能不會python,更喜歡R語言,沒關(guān)系!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的功能似乎已經(jīng)完全超過我一兩年前mark這個(gè)工具的時(shí)候的功能了,有點(diǎn)嘆為觀止了。
因?yàn)槲也皇亲鋈祟惏渭?xì)胞啊腫瘤啊之類的,所以舉的例子都是拋磚引玉,希望把這個(gè)軟件介紹給大家,希望能給你的生信分析減少一點(diǎn)障礙增加一些便利~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容