Underdeterminedness of EGH Modeling

4.5. Underdeterminedness of EGH Modeling#

from molass import get_version
assert get_version() >= '0.7.0', "This tutorial requires molass version 0.7.0 or higher."
from molass_data import get_version
assert get_version() >= '0.3.0', "This tutorial requires molass_data version 0.3.0 or higher."
from molass_data import SAMPLE4
from molass.DataObjects import SecSaxsData as SSD
ssd = SSD(SAMPLE4)
trimmed_ssd = ssd.trimmed_copy()
corrected_ssd = trimmed_ssd.corrected_copy()
rgcurve = corrected_ssd.xr.compute_rgcurve()
decomposition = corrected_ssd.quick_decomposition(num_components=2)
plot1 = decomposition.plot_components(rgcurve=rgcurve) 
100%|██████████| 203/203 [00:16<00:00, 11.97it/s]
../../_images/f299948d5ae76c4f509f4017b35ea7433b17b962f342c2415c28973d94711040.png
decomposition2_1 = corrected_ssd.quick_decomposition(num_components=2, randomize=0.01, seed=1)
decomposition2_1.plot_components(rgcurve=rgcurve);
../../_images/2d70ad170d6ef12b482a22263bef0d86a42931adef697b5dd40bf72a9b5ef133.png
decomposition3 = corrected_ssd.quick_decomposition(num_components=3)
decomposition3.plot_components(rgcurve=rgcurve);
../../_images/a41b1ab102eb2c8293cb722272962639bd18a6be8ebabe9032e56e01f01177ce.png
decomposition3_1 = corrected_ssd.quick_decomposition(num_components=3, randomize=0.01, seed=1)
decomposition3_1.plot_components(rgcurve=rgcurve);
../../_images/4793f03c0aa998652d4f0f57ed237e8d785d614606b7425c44959302ca51430f.png
decomposition3_6 = corrected_ssd.quick_decomposition(num_components=3, randomize=0.01, seed=6, debug=False)
decomposition3_6.plot_components(rgcurve=rgcurve);
../../_images/ebb864455f05a307b043b7d40870c42a3b9e49e5f77b3c448680e2d1a8ec965c.png
run_global_optimization = False
if run_global_optimization:
    # Global optimization
    decomposition3_g = corrected_ssd.quick_decomposition(num_components=3, global_opt=True, sec_constraints=True)
    decomposition3_g.plot_components(rgcurve=rgcurve);
if run_global_optimization:
    import matplotlib.pyplot as plt
    for k, curve in enumerate(decomposition3_g.xr_ccurves):
        print([k], curve.params)
        plt.plot(*curve.get_xy())