Drkcore

08 04 2011 perl Python Tweet

rcsbから結晶構造データをダウンロードするコマンドをPythonで

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;

ProductName Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )


About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021