choderalab / assaytools

Modeling and Bayesian analysis of fluorescence and absorbance assays.
http://assaytools.readthedocs.org
GNU Lesser General Public License v2.1
18 stars 11 forks source link

Create storage object for analyses #56

Open sonyahanson opened 8 years ago

sonyahanson commented 8 years ago

Started working on a way of storing the results, most useful for tracking different ways of analyzing the same dataset. So far this is what I've come up with: a dictionary of inputs that gets combined with a dictionary of outputs that gets stored as a csv file.

inputs = {
    'data_file'     :  'p38_singlet1_20160420_153238.xml',
    'Lstated'       :  np.array([20.0e-6,14.0e-6,9.82e-6,6.88e-6,4.82e-6,3.38e-6,2.37e-6,1.66e-6,1.16e-6,0.815e-6,0.571e-6,0.4e-6,0.28e-6,0.196e-6,0.138e-6,0.0964e-6,0.0676e-6,0.0474e-6,0.0320e-6,0.0240e-6,0.0160e-6,0.0120e-6,0.008e-6,0.00001e-6], np.float64), # ligand concentration, M
    'ligand_order'  :  ['BOS_w_backfill','BSI_w_backfill','ERL_w_backfill','GEF_w_backfill','BOS_no_backfill','BSI_no_backfill','ERL_no_backfill','GEF_no_backfill'],
    'protein'       :  'p38',
    'Pstated'       :  0.5e-6 * np.ones([24],np.float64), # protein concentration, M
    'assay_volume'  :  50e-6, # assay volume, L
    'well_area'     :  0.1369, # well area, cm^2 for 4ti-0203 [http://4ti.co.uk/files/3113/4217/2464/4ti-0201.pdf]
    }

outputs = {
        'analysis'        : 'pymcmodels',
        'outfiles'        : 'DeltaG_%s.npy, DeltaG_trace_%s.npy' %(rows_to_analyze, rows_to_analyze),
        'rows_to_analyze' : rows_to_analyze,
        'section'         : section,
        'DeltaG'          : "DeltaG = %.1f +- %.1f kT" % (DeltaG, dDeltaG),
        'Kd'              :  Kd_summary,
        'datetime'        : datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
    }

This is a rough start so more input on what to include and what format would be ideal is much appreciated.

Currently this is created and run by a quick_model function that takes in the inputs dictionary and rows_to_analyze = 'BSI_w_backfill' and section = '280_480_TOP_120' makes a few figures and spits out the results.

So far this just spits out a csv file for each analysis rather than just appending to a database.

sonyahanson commented 7 years ago

This is currently implemented using json files in quickmodel.py using a pre-defined inputs.py in the same directory. I think this is working nicely, but up for other suggestions on how to make this better or what to make sure to include.

jchodera commented 7 years ago

Do we really want to store this as a CSV file? Why not just pickle the results?

jchodera commented 7 years ago

Oh! Just saw the original post was from June, and that you're using JSON files now. Cool!

jchodera commented 7 years ago

For inputs, what about taking some inspiration from the assaytools example and storing information like the ligand stock IDs and which rows of the plate you're considering?