pdbgetというpdb-idを引数にとって構造データをまとめてダウンロードするコマンド使っていたんだけど、ちょっと前のサーバリプレースでPDBのミラリング環境が失われたので使えなくなってた。こういうの致命的だよなとは思うが今時はネットワークが太いので別にミラリングする必要性はあまりないのかな?でも遅いよなぁ。
とりあえず、自分用に。プロキシ使いたいのでFancyURLopener
import urllib import sys pdblist = sys.argv[1:] proxies = {'http': 'http://[hostname]:[port]/'} opener = urllib.FancyURLopener(proxies) for pdbid in pdblist: f = opener.open('http://www.rcsb.org/pdb/files/%s.pdb.gz' % pdbid.upper()) data = f.read() with open('%s.pdb.gz' % pdbid.upper(),'wb') as wf: wf.write(data)
ちなみに初代はperlで書いてあった。これいつ書いたんだろう?多分7,8年よりは前だと思うんだよなぁ。
use strict; use Net::FTP; die "usage:$0 [pdb_id] ...\n" unless @ARGV; my $ftp = Net::FTP->new("[hostname]", Debug => 0) or die "Cannot connect to [hostname]: $@"; $ftp->login("pdb",'pdb') or die "Cannot login ", $ftp->message; $ftp->binary(); for my $pdbid (@ARGV){ $pdbid =~ tr/[A-Z]/[a-z]/; my $pdbdir = substr($pdbid,1,2); my $pdbfile = "pdb" . $pdbid . ".ent.gz"; $ftp->cwd($pdbdir) or warn "Cannot change PDB directory ", $ftp->message; $ftp->get($pdbfile) or warn "$pdbfile : ", $ftp->message; $ftp->cwd('..') or warn "Cannot change PDB directory ", $ftp->message; } $ftp->quit;
Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )