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:04<00:00, 44.01it/s]
../../_images/3e368c4047c9e0551376a46697356691437d598c4ad317f9678f2370898fac01.png
decomposition2_1 = corrected_ssd.quick_decomposition(num_components=2, randomize=0.01, seed=1)
decomposition2_1.plot_components(rgcurve=rgcurve);
../../_images/f19fd3f8ce227a3239910417c96399ebcafd9a44e1987d33786092e29f4d8169.png
decomposition3 = corrected_ssd.quick_decomposition(num_components=3)
decomposition3.plot_components(rgcurve=rgcurve);
../../_images/08c2194eb9dc0ecbf08a8bf39a75777b80282bac471b39f1e7e7188ad29b8436.png
decomposition3_1 = corrected_ssd.quick_decomposition(num_components=3, randomize=0.01, seed=1)
decomposition3_1.plot_components(rgcurve=rgcurve);
../../_images/3d425cabe8206fc6fbdb8d8adbf7a1d2ce79552ead31ce3cabeae393024aa609.png
decomposition3_6 = corrected_ssd.quick_decomposition(num_components=3, randomize=0.01, seed=6, debug=False)
decomposition3_6.plot_components(rgcurve=rgcurve);
../../_images/6f848b210d4d6581ae55954b0f93e468ce153804c5badc127d8fde239e57e88f.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())