choderalab / dispensing-errors-manuscript

IPython notebook to accompany dispensing errors manuscript
http://choderalab.org
1 stars 4 forks source link

Where do we get that the final dilution volume was 100 uL? #16

Closed sonyahanson closed 8 years ago

sonyahanson commented 8 years ago

I've been looking through these patents, and I don't find this anywhere.

The ipython notebook says this:

Our general assay configuration follows the description given in [2] (the source 
of the data used in Ekins et al.). We assume that an 8-point dilution series was 
generated for use in the assay. Suppose we start with an initial concentration
 of 10 mM in DMSO stock, and then serially dilute two fold to create final 
dilution volumes of 100 uL.

[2] Bernard Christophe Barlaam, Richard Ducray. 2,4-diamino-pyrimidine 
derivatives. US Patent WO 2009010794 A1

But I can't find where this is actually stated, and I think the patent that has the data we are actually using is US patent number 7,718,653, and not the one mentioned here.

I am looking at the pdf's already in the references directory of this repo.

Also, currently the notebook assumes the final dilution volume is 50 uL, which is how I ended up looking into this...

jchodera commented 8 years ago

But I can't find where this is actually stated, and I think the patent that has the data we are actually using is US patent number 7,718,653, and not the one mentioned here.

See the protocol described in the section beginning with "Biological Assays A) In vitro EphB4 enzyme assay" in that reference [2], which can be found here. There's a good description of the experimental configuration, though it is missing some details that I needed to infer:

jchodera commented 8 years ago

Complete protocol from that reference is below, and mentions that Greiner #784075 384-well low-volume plates (working volume 4-25 uL) were used. The acoustic assay explicitly states that 12 uL assay volumes were used. Maybe we should use these volumes?

http://www.google.com/patents/WO2009010794A1?cl=en

Biological Assays A) In vitro EphB4 enzyme assay

This assay detects inhibitors of EphB4-mediated phosphorylation of a polypeptide substrate using Alphascreen™ luminescence detection technology. Briefly, recombinant EphB4 was incubated with a biotinylated-polypeptide substrate (biotin-poly-GAT) in presence of magnesium-ATP. The reaction was stopped by addition of EDTA, together with streptavidin-coated donor beads which bind the biotin-substrate containing any phosphorylated tyrosine residues. Anti-phosphotyrosine antibodies present on acceptor beads bind to phosphorylated substrate, thus bringing the donor & acceptor beads into close proximity. Subsequent excitation of the donor beads at 680nm generated singlet oxygen species that interact with a chemiluminescer on the acceptor beads, leading to light emission at 520-620nm. The signal intensity is directly proportional to the level of substrate phosphorylation and thus inhibition is measured by a decrease in signal. Aqueous Compound Preparation:

Test compounds were prepared as 1OmM stock solutions in DMSO (Sigma- Aldrich Company Ltd, Gillingham, Dorset SP8 4XT Catalogue No.154938) and serially diluted with 5% DMSO to give a range of test concentrations at 6x the required final concentration. A 2μl aliquot of each compound dilution was transferred to appropriate wells of low volume white 384-well assay plates (Greiner, Stroudwater Business Park, Stonehouse, Gloucestershire, GLlO 3SX, Cat No. 784075) in duplicate. Each plate also contained control wells: maximum signal was created using wells containing 2μl of 5% DMSO, and minimum signal corresponding to 100% inhibition were created using wells containing 2μl of 0.5M EDTA (Sigma- Aldrich Company Ltd, Catalogue No. E7889).

Acoustic Compound Preparation:

Test compounds were prepared in 100% DMSO and dispensed in multiples of 2.5nl droplets into the target wells of the assay plate using a Labcyte Echo550 (Sunnyvale, California 94089, USA). To ensure that each well contained a total of 120nl DMSO the wells were all backfilled as required. Maximum control wells contained DMSO, minimum control wells contained 120nl of a compound at a concentration sufficient to completely inhibit enzyme activity. The test range of compounds was 10Ox the required final concentration. For the assay using aqueous prepared compounds, in addition to the compound or control, each well of the assay plate contained; lOμl of assay mix containing final buffer (1OmM Tris, lOOμM EGTA, 1OmM magnesium acetate, 4μM ATP, 500μM DTT, lmg/ml BSA), 0.25ng of recombinant active EphB4 (amino acids 563-987; Swiss-Prot Ace. No. P54760) (ProQinase GmbH, Breisacher Str. 117, D-79106 Freiburg, Germany, Catalogue No 0178-0000-3) and 5nM of the poly-GAT substrate (CisBio International, BP 84175, 30204 Bagnols/Ceze Cedex, France, Catalogue No. 6 IGATBLB). Assay plates were then incubated at room temperature for 1 hour.

For assays using compounds prepared via acoustic dispensing, the assay mix was adjusted such that the final assay volume of 12ul contained the same concentration of reagent as lOul of assay mix used when aqueous compounds were tested.

Regardless of the method of compound preparation, the reaction was stopped by addition of 5μl/well stop buffer (1OmM Tris, 495mM EDTA, lmg/ml BSA) containing 0.25ng each of AlphaScreen anti-phosphoTyrosine-100 acceptor beads and streptavidin- coated donor beads (Perkin Elmer, Catalogue No 6760620M). The plates were sealed under natural lighting conditions, wrapped in aluminium foil and incubated in the dark for a further 20 hours.

The resulting assay signal was determined on the Perkin Elmer EnVision plate reader. The minimum value was subtracted from all values, and the signal plotted against compound concentration to generate IC50 data. The method used to generate the compound dilutions was recorded with the IC50 value in the database. Data from compounds prepared using acoustic dispensing were marked "Echo" and the remaining results were marked "Genesis". Compounds of the invention were tested in the in vitro EphB4 enzyme assay and the IC50 values so obtained are presented in Table A below.

sonyahanson commented 8 years ago

Thanks! Will look through this a bit more, and see if it's hard to make these changes. I don't think it's necessary we do everything completely as it is described (though of course that would be ideal), but I definitely think we should clearly state where we are are 'making assumptions' that aren't necessarily correct.

sonyahanson commented 8 years ago

Also, FYI, working my way through new notebook format: https://github.com/sonyahanson/dispensing-errors-manuscript/blob/master/notebooks/New_Format_with_Slider.ipynb

Will make pull request when it's done. Currently only works through line 31, but hoping the stuff up to there won't need too much more, so let me know what you think!

The slider bit (at the very end) doesn't work in github preview, sadly.

jchodera commented 8 years ago

I definitely think we should clearly state where we are are 'making assumptions' that aren't necessarily correct.

I had tried to do that using phrases such as "We assume that..." and "Suppose that...", but I agree it should be made crystal-clear when we diverge from the written protocol.

jchodera commented 8 years ago

This new format looks fantastic!

Cell 25 drops out with an error:


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-25-5b8432e9afc8> in <module>()
      6 echo_pIC50_CV = np.zeros([nKis], np.float64)
      7 for (i, Ki) in enumerate(Kis):
----> 8     IC50s = echo_IC50s_function(Ki)
      9     pIC50s = np.log10(IC50s)
     10     pKi = pKis[i]

<ipython-input-24-302c1f62e2b8> in echo_IC50s_function(true_Ki)
      3     IC50s = np.zeros([nreplicates], np.float64)
      4     for replicate in range(nreplicates):
----> 5         [assay_volumes, assay_compound_concentrations] = echo_assay_dispense(C0, mix_volume, backfill_volume, echo_dispense_volumes)
      6         activities = np.zeros([ndilutions], np.float64)
      7         for i in range(ndilutions):

NameError: global name 'echo_assay_dispense' is not defined

so it didn't get to the slider bit when executing from the top.

jchodera commented 8 years ago

Don't forget to check in all the graphics! Just downloading the linked .ipynb doesn't seem to carry along the figures---just the plots.

sonyahanson commented 8 years ago

As I said, anything beyond cell 31 (as numbered in the linked ipynb) doesn't work, that might be ~24 if you run it again. I don't know what 'downloading the linked .ipynb' means but all the graphics are checked in, or else they wouldn't show up on the linked github preview, does the link not work for you is this why you are downloading it?

sonyahanson commented 8 years ago

Also, you shouldn't need to run anything past

Now lets see how our estimation of enzyme activity is affected by including imprecision and inaccuracy.

to get the last two cells to work for the slider.

Though you will need to install ipywidgets.

jchodera commented 8 years ago

Whoops! Sorry, it was late. I downloaded just the notebook, rather than checking out the whole repo. The images were links, so they didn't show up in that case, but I could see them in the GitHub built-in preview.

I installed ipywidgets via conda install ipywidgets, but that's apparently not enough to pull in a version with StaticInteract:

>>> from ipywidgets import StaticInteract
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-31-5c2be545f710> in <module>()
----> 1 from ipywidgets import StaticInteract

ImportError: cannot import name StaticInteract

conda installed version 4.0.3:

>>> print ipywidgets.__version__
4.0.3

Do you have a more recent version?

sonyahanson commented 8 years ago

I have a much older version, actually. This is what it's from: https://jakevdp.github.io/blog/2013/12/05/static-interactive-widgets/ The github page says: Note that this package is no longer supported; instead, use IPython's built-in interactive tools

sonyahanson commented 8 years ago

Looks like IPython.html.widgets is the more up to date way of doing this: http://stackoverflow.com/questions/27489742/ipython-notebook-interactive-function-how-to-set-the-slider-range http://moderndata.plot.ly/widgets-in-ipython-notebook-and-plotly/

jchodera commented 8 years ago

Using the build-in IPython widgets would be awesome!

sonyahanson commented 8 years ago

This was all just kept the same.

jchodera commented 8 years ago

This was all just kept the same.

?

sonyahanson commented 8 years ago

I don't think I made any changes in the new notebook related to this issue.

jchodera commented 8 years ago

Does that mean we cab close the issue, or that I still need to fix something?