Ipynb idioms

From DISI
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

These are idioms for iPython Notebooks, also generally python.

top of every ipynb

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import requests
import urllib

set up to use ZINC API

(hint ask john for credentials)

urlroot = 'http://zinc15.docking.org'
format = 'txt'

execute a command, with optional limits

R = requests.get(cmd + '?count=10000')
lines = list(R.iter_lines())
print len(lines)
print R.text

setup

from rdkit.Chem.Draw import IPythonConsole
import rdkit.Chem.Draw as D
import rdkit.Chem as C
import rdkit.Chem.Descriptors as CD
from rdkit.Chem import SmilesMolSupplier

activate zinc api

import zinc.api
api=zinc.api.make_api()

Display mols

path = '/nfs/home/jji/ipynb/data/test.smi'
mols = SmilesMolSupplier(path, titleLine=False)
D.MolsToGridImage( mols, legends=[m.GetProp('_Name') for m in mols])

drill down on mol

s1 =api.substances.get(110341849)
[(ci.supplier_code,ci.catalog.name) for ci in s1.catalog_items]

stuff about sets

from sets import Set

https://docs.python.org/2/library/sets.html

employees = engineers | programmers | managers           # union
engineering_management = engineers & managers            # intersection
fulltime_management = managers - engineers - programmers # difference
engineers.add('Marvin')                                  # add element


working with results

cmd3 = urlroot + '/' + table1 + '/txt:best_purchasable,best_catalog/substance.sub_id={0}'
cmd4 = urlroot + '/' + table1 + '/txt:best_purchasable,best_catalog/substance.sub_id in {0}'
def getPurchasability(sub_id):
   R1 = requests.get(cmd3.format(sub_id))
   purch,cat = R1.text.splitlines()[1].split('\t')
   return int(purch),cat
def getPurchasability2(*sub_ids):
   R1 = requests.get(cmd4.format(','.join(map(str, sub_ids))))
   data_lines = [line.split('\t') for line in R1.text.splitlines()[1:]]
   print data_lines
   return [(int(purch), cat) for purch, cat in data_lines]
def to_sub_id(zinc_id):
   return int(zinc_id.lower().replace('zinc', ))