最近需要下載千人基因組計劃中的中國人數據作爲參考,於是學習了下幾個下載方法。發現還是有幾個小技巧值得分享的,就記錄分享一下!我找到的主要方法有兩三個,分別是通過網頁下載,API批量下載和ftp批量下載。
1.網頁下載
這個比較簡單,也已經有很多教程,列在這裏,我就不寫了。
2.ftp或者ascp批量下載
1)下載所有的數據和位點
如果你需要所有的數據和位點,那麼ftp或者ascp批量下載是一個不錯的選擇,特別是後者,可以用完你的帶寬,節約你的時間。
比如,這個教程提供的下載命令:【直播】我的基因組55:簡單的PCA分析千人基因組的人羣分佈
#這個數據是分染色體下載的,還要合併,應該是幾十G的數據
nohup wget -c -r -nd -np -k -L -p ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502 &
在1000 Genome Project找到一個ascp下載的命令:
ascp -i bin/aspera/etc/asperaweb_id_dsa.openssh -Tr -Q -l 100M -P33001 -L- [email protected]:vol1/ftp/release/20100804/ALL.2of4intersection.20100804.genotypes.vcf.gz ./
上面這個是linux系統下的命令,如果是Windows或者Mac參見我整理的命令,見下一篇推文。這個下載的數據看日期可能不如上面一個全面,60多G的數據,在100M的速度下,估計下載時間爲兩個小時左右。
2)下載特定個體或者snp
當你需要的是特定個體,區域或者位點的時候,官網的這個命令就派上了用場。
#首先,要下載個工具,從下面這個網頁下載
https://codeload.github.com/vcftools/vcftools/legacy.zip/master
#然後解壓
unzip vcftools-vcftools-v0.1.16-16-g954e607.zip
#安裝
cd vcftools-vcftools-v0.1.16-16-g954e607
export PERL5LIB=/Users/zd200572/Downloads/vcftools-vcftools-954e607/src/perl/
./autogen.sh
#如果提示缺少autoconf安裝之(ubuntu)
sudo apt install autoconf automake libtool
./configure
make
#在這裏 -c 可以指定多個個體,逗號分隔,還可以是一個文件
#-c, --columns <string> File or comma-separated list of columns to keep in the vcf file. If file, one column per row
tabix -h ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/release/20100804/ALL.2of4intersection.20100804.genotypes.vcf.gz 17:1471000-1472000 | perl vcftools-vcftools-954e607/src/perl/vcf-subset -c HG00098 | bgzip -c /tmp/HG00098.20100804.genotypes.vcf.gz
比較遺憾,總是報錯,下載始終沒有成功。報錯如下:
[E::hts_open_format] Failed to open file ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20100804//ALL.2of4intersection.20100804.genotypes.vcf.gz
Could not read ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20100804//ALL.2of4intersection.20100804.genotypes.vcf.gz
可是文件明顯是存在的,網頁可訪問,只好暫時作罷。
參考的官方網頁地這:https://www.internationalgenome.org/faq/how-do-i-get-sub-section-vcf-file/
和https://www.internationalgenome.org/faq/can-i-get-haplotype-data-1000-genomes-individuals/
3.API批量下載
其實這個千人基因組計劃的數據庫是完全開放的,可以以匿名用戶登陸的,如果你對數據庫完全熟悉,完全可以以命令行或者圖形客戶端來查看導出,更爲高效,無奈我水平不夠,只有使用官方現成Perl API了。
Server User Password Port
mysql-db.1000genomes.org anonymous - 4272
#https://www.internationalgenome.org/public-ensembl-mysql-instance/
其實作爲一個API,它的安裝還是極其新手不友好的,各種安裝,編譯。我嘗試了下,沒有成功,好在官方提供了虛擬機鏡像,我想對於一般人,虛擬機夠用了,直接下載,導入就可以使用,有圖形界面,好操作。虛擬機的使用,官方給出了詳細教程,基本上已經是一步步的教程,很詳細,沒必要翻譯了,地址在這:
http://asia.ensembl.org/info/data/virtual_machine.html
#1.從這個地址下載虛擬機軟件
#https://www.virtualbox.org/wiki/Downloads
#2.下載虛擬機鏡像,用linux下axel 這個工具下載快點,其他多線程下載也可以,速度大概360k/s左右,下載完成要兩個多小時
axel http://ftp.ensembl.org/pub/current_virtual_machine/Ensembl99.ova
#3.按上面的地址教程導入就好了
使用API測試一下
單個數據的下載
我要下載的是千人基因組某個snp的全部樣本分型結果,官方有現成示例腳本,snp不多的話就直接下載了,多的話可以構建個循環進行,先看單個的下載。只做了一個改動,把$variation_adaptor->db->use_vcf(1);註釋去掉了。大概5分鐘一個結果,可能是數據庫龐大,需要這麼長時間,還是防止併發過多。反正速度不夠快,不過不急的話也夠用了。
perl get_genotype.pl rs123456 > rs123456.txt
#get_genotype.pl
use strict;
use warnings;
use Bio::EnsEMBL::Registry;
my $registry = 'Bio::EnsEMBL::Registry';
$registry->load_registry_from_db(
-host => 'ensembldb.ensembl.org',
-user => 'anonymous'
);
my $variation_adaptor = $registry->get_adaptor('homo_sapiens', 'variation', 'variation');
# OPTIONAL: uncomment the following line to retrieve 1000 genomes phase 3 data also
$variation_adaptor->db->use_vcf(1);
my $variation = $variation_adaptor->fetch_by_name($ARGV[0]);
my $genotypes = $variation->get_all_SampleGenotypes();
foreach my $genotype (@{$genotypes}) {
print $genotype->sample->name, "\t", $genotype->genotype_string, "\n";
}
批量下載
這裏我寫了個python小腳本,perl曾經試圖學過,沒學會。很簡單,就兩句,應該shell更高效,估計一行就好,功力不到呀。
import os
li = [ "rs9469031", "rs6141383", "rs4809957", "rs41309931", "rs36600", "rs17728461" ]
for a in li:
cmd = "perl ../test.pl %s > %s.txt" % (a, a)
os.system(cmd)
#break
好了,幾番折騰後,終於獲得了自己需要的數據,同樣的還可以獲得頻率什麼的。