import matplotlib.pyplot as plt
from molass.Local import get_local_settings
local_settings = get_local_settings()
ORIGINAL_DATA = local_settings['ORIGINAL_DATA']
print(ORIGINAL_DATA)
C:\Users\takahashi\PyTools\Data\sample_data
10.1. Trimming#
from molass.Global.Options import set_molass_options
from molass.DataObjects import SecSaxsData as SSD
set_molass_options(flowchange=True)
original_data_folder = ORIGINAL_DATA
ssd0 = SSD(original_data_folder)
ssd0.plot_3d()
plot_result0 = ssd0.plot_trimming();
plot_result0.trimming.xr_slices, plot_result0.trimming.uv_slices
((slice(30, np.int64(751), None), slice(67, 354, None)),
(slice(63, None, None), slice(135, 709, None)))
import os
import tempfile
import shutil
from importlib import reload
import molass.DataUtils.UvFileTrimming
reload(molass.DataUtils.UvFileTrimming)
from molass.DataUtils.UvFileTrimming import trim_uvfile
# Define the temporary directory name
temp_dir = os.path.join(tempfile.gettempdir(), "tutorial_data")
# Clear the directory if it already exists
if os.path.exists(temp_dir):
shutil.rmtree(temp_dir)
# Create the temporary directory
os.makedirs(temp_dir)
print(f"Temporary directory created at: {temp_dir}")
uv_filename = "SAMPLE_UV280_01.txt"
in_uvfile = os.path.join(original_data_folder, uv_filename)
trimmed_uvfile = os.path.join(temp_dir, uv_filename)
jslice = plot_result0.trimming.uv_slices[1]
trim_uvfile(in_uvfile,
(slice(None, None), jslice), # slicing only the second axis
trimmed_uvfile)
Temporary directory created at: C:\Users\TAKAHA~1\AppData\Local\Temp\tutorial_data
import os
import re
from molass.DataUtils.ZipFolder import zip_folder
from glob import glob
xr_islice = plot_result0.trimming.xr_slices[1]
start, stop = xr_islice.start, xr_islice.stop
n = 0
for k, path in enumerate(glob(original_data_folder + "/*.dat")):
if k >= start and k < stop:
basename = re.sub(r"_\d{5}_sub", "_%05d_"%n, os.path.basename(path))
target_path = os.path.join(temp_dir, basename)
shutil.copy(path, target_path)
# print([k], "copying from %s to %s" % (path, basename))
n += 1
# Define the zip file name
zip_file = os.path.join(tempfile.gettempdir(), "tutorial_data.zip")
# # Zip the temp folder to zip_file
zip_folder(temp_dir, zip_file)
print(f"Temporary directory zipped at: {zip_file}")
Temporary directory zipped at: C:\Users\TAKAHA~1\AppData\Local\Temp\tutorial_data.zip
ssd1 = SSD(temp_dir)
ssd1.plot_3d()
plot_result1 = ssd1.plot_trimming();
ssd2 = ssd0.trimmed_copy()
ssd2.plot_3d()
ssd2.plot_trimming()
<molass.PlotUtils.PlotResult.PlotResult at 0x267e0d779b0>
decomposition = ssd1.quick_decomposition(num_components=3, consistent_uv=True)
decomposition.plot_components();
C:\Program Files\Python313\Lib\site-packages\molass\PlotUtils\DecompositionPlot.py:88: RuntimeWarning: invalid value encountered in log
logy = np.log(pv[slice_])
for i, ccurve in enumerate(decomposition.xr_ccurves):
print([i], ccurve.params)
[0] [4.82429220e-02 1.15175557e+02 1.04098695e+01 4.46646480e+00]
[1] [ 1.18487582e-02 1.30900681e+02 1.04098695e+01 -1.76886830e-03]
[2] [ 2.73431106e-02 2.41337808e+02 1.10085056e+01 -4.20560775e-03]
for i, ccurve in enumerate(decomposition.uv_ccurves):
print([i], ccurve.params)
[0] [6.97357518e-02 2.29311891e+02 2.09043722e+01 8.96924233e+00]
[1] [ 3.49438631e-02 2.60889985e+02 2.09043721e+01 -3.55211764e-03]
[2] [ 1.16629085e-01 4.82662103e+02 2.21065113e+01 -8.44540744e-03]