gget的功能跟之前介紹的fastq-dl不一樣,fastq-dl主要是下載測序的原始數(shù)據(jù)的,而gget的功能就非常豐富了:
- 從ensembl下載參考基因組,
- 獲取指定基因的核苷酸或者多肽序列,
- 獲取指定蛋白質(zhì)PDB數(shù)據(jù)庫的數(shù)據(jù),
- 查詢指定基因全部同源基因,
- 查詢指定基因的表達(dá)量,
- 做核酸或者多肽序列的blast/blat搜索,
- 甚至可以給定一系列的基因做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)障礙增加一些便利~