From 3ffded2befb9662e68cd23140db5a265175ec030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Wed, 21 Jan 2026 14:25:06 +0100 Subject: [PATCH 01/12] feat: script to create initial configuration --- .../ortho-terphenyl/create-initial-config.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/ortho-terphenyl/create-initial-config.py diff --git a/examples/ortho-terphenyl/create-initial-config.py b/examples/ortho-terphenyl/create-initial-config.py new file mode 100644 index 0000000..d4251e9 --- /dev/null +++ b/examples/ortho-terphenyl/create-initial-config.py @@ -0,0 +1,71 @@ +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "numpy>=2.4.1", +# ] +# /// +import itertools + +import numpy as np + +M = 1000 +N = M * 3 +number_density = 1.2 # This is per particle, not per molecule +# rho = N/V +V = N / number_density +L = V ** (1 / 3) + +sigmas = [0.9, 1, 1.1] + + +def main(output_file_name: str) -> None: + """Create a regular lattice of molecules. These planar molecules are in the x-y plane.""" + + number_in_each_direction = round(M ** (1 / 3)) + dxdydz = L / number_in_each_direction + assert number_in_each_direction**3 == M, "M is not an int to power 3" + + r_ab = (sigmas[0] + sigmas[1]) / 2 + r_ac = (sigmas[0] + sigmas[2]) / 2 + cos_alpha = np.cos(60 / 180) + sin_alpha = np.sin(60 / 180) + + f = open(output_file_name, "w") + + f.write(f"{N}\n") + f.write( + f"columns:molecule,species,position cell:{L},{L},{L},rho:{number_density}\n" + ) + + counter = 1 + for i, j, k in itertools.product( + range(number_in_each_direction), + range(number_in_each_direction), + range(number_in_each_direction), + ): + r_a = (i * dxdydz, j * dxdydz, k * dxdydz) + r_b = (i * dxdydz, j * dxdydz + r_ab, k * dxdydz) + r_c = (i * dxdydz + r_ac * cos_alpha, j * dxdydz + r_ac * sin_alpha, k * dxdydz) + + f.write(f"{counter} 1 {r_a[0]} {r_a[1]} {r_a[2]}\n") + f.write(f"{counter} 2 {r_b[0]} {r_b[1]} {r_b[2]}\n") + f.write(f"{counter} 3 {r_c[0]} {r_c[1]} {r_c[2]}\n") + + counter += 1 + + number_of_bonds = M * 3 + f.write(f"{number_of_bonds}\n") + f.write("columns:bond\n") + for i in range(M): + index_of_a = 1 + i * 3 + # AB + f.write(f"{index_of_a} {index_of_a + 1}\n") + # BC + f.write(f"{index_of_a + 1} {index_of_a + 2}\n") + # AC + f.write(f"{index_of_a} {index_of_a + 2}\n") + + +if __name__ == "__main__": + output_file_name = "inputframe.xyz" + main(output_file_name) From 1cadf05942b751564b41a3b23494aa169d9c2641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Thu, 22 Jan 2026 11:06:49 +0100 Subject: [PATCH 02/12] feat: scripts to create a configuration of a correct density --- .../create-initial-config.py | 6 +- .../params-template.toml | 82 +++++++++++++++++++ .../1-create-config-right-density/run.sh | 16 ++++ 3 files changed, 100 insertions(+), 4 deletions(-) rename examples/ortho-terphenyl/{ => 1-create-config-right-density}/create-initial-config.py (91%) create mode 100644 examples/ortho-terphenyl/1-create-config-right-density/params-template.toml create mode 100644 examples/ortho-terphenyl/1-create-config-right-density/run.sh diff --git a/examples/ortho-terphenyl/create-initial-config.py b/examples/ortho-terphenyl/1-create-config-right-density/create-initial-config.py similarity index 91% rename from examples/ortho-terphenyl/create-initial-config.py rename to examples/ortho-terphenyl/1-create-config-right-density/create-initial-config.py index d4251e9..27229ce 100644 --- a/examples/ortho-terphenyl/create-initial-config.py +++ b/examples/ortho-terphenyl/1-create-config-right-density/create-initial-config.py @@ -10,7 +10,7 @@ M = 1000 N = M * 3 -number_density = 1.2 # This is per particle, not per molecule +number_density = 0.2 # This is per particle, not per molecule # rho = N/V V = N / number_density L = V ** (1 / 3) @@ -33,9 +33,7 @@ def main(output_file_name: str) -> None: f = open(output_file_name, "w") f.write(f"{N}\n") - f.write( - f"columns:molecule,species,position cell:{L},{L},{L},rho:{number_density}\n" - ) + f.write(f"columns:molecule,species,position cell:{L},{L},{L}\n") counter = 1 for i, j, k in itertools.product( diff --git a/examples/ortho-terphenyl/1-create-config-right-density/params-template.toml b/examples/ortho-terphenyl/1-create-config-right-density/params-template.toml new file mode 100644 index 0000000..8c417ee --- /dev/null +++ b/examples/ortho-terphenyl/1-create-config-right-density/params-template.toml @@ -0,0 +1,82 @@ +[system] +config = "./inputframe.xyz" +temperature = 2.0 +density = DENSITY +list_type = "LinkedList" + +[model] + +[model."1-1"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.9 +k = 37.03703703703703 +r0 = 1.35 + +[model."1-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.95 +k = 33.24099722991689 +r0 = 1.425 + +[model."1-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.05 +k = 27.2108843537415 +r0 = 1.575 + +[model."3-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.1 +k = 24.79338842975207 +r0 = 1.65 + + + +[simulation] +type = "Metropolis" +steps = 10000 +seed = 10 +parallel = false + +[[simulation.move]] +action = "Displacement" +probability = 0.8 +policy = "SimpleGaussian" +parameters = {sigma = 0.05} + +[[simulation.move]] +action = "MoleculeFlip" +probability = 0.2 +policy = "DoubleUniform" + +[[simulation.output]] +algorithm = "StoreCallbacks" +callbacks = ["energy", "acceptance"] +scheduler_params = {linear_interval = 1} + +[[simulation.output]] +algorithm = "StoreLastFrames" +scheduler_params = {linear_interval = 10000} +fmt = "XYZ" + +[[simulation.output]] +algorithm = "PrintTimeSteps" +scheduler_params = {linear_interval = 1} diff --git a/examples/ortho-terphenyl/1-create-config-right-density/run.sh b/examples/ortho-terphenyl/1-create-config-right-density/run.sh new file mode 100644 index 0000000..b54339f --- /dev/null +++ b/examples/ortho-terphenyl/1-create-config-right-density/run.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +uv run --script create-initial-config.py + +density=0.2 + +while (( $(echo "$density < 1.2" | bc -l ) )) +do + echo "Density" $density + + sed "s/DENSITY/$density/" params-template.toml > params.toml + particlesmc params.toml + cp trajectories/1/lastframe.xyz inputframe.xyz + + density=$(echo "$density" | awk '{printf "%f", $1 * 1.1}') +done From d9e97e20217e5604f08740cde67f28414747f813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Thu, 22 Jan 2026 11:14:40 +0100 Subject: [PATCH 03/12] feat: scripts to prepare inputs for equilibration --- .../create-folders.sh | 7 ++ .../params-template.toml | 82 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh create mode 100644 examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml diff --git a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh new file mode 100644 index 0000000..4519f4e --- /dev/null +++ b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +for temperature in 3.0 2.0 1.6 1.4 1.25 1.2 1.15 1.1 1.05 1 +do + mkdir -p $temperature + sed "s/TEMPERATURE/$temperature/" params-template.toml > $temperature/params.toml +done diff --git a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml new file mode 100644 index 0000000..47d91a7 --- /dev/null +++ b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml @@ -0,0 +1,82 @@ +[system] +config = "../../1-create-config-right-density/inputframe.xyz" +temperature = TEMPERATURE +density = 1.2 +list_type = "LinkedList" + +[model] + +[model."1-1"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.9 +k = 37.03703703703703 +r0 = 1.35 + +[model."1-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.95 +k = 33.24099722991689 +r0 = 1.425 + +[model."1-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.05 +k = 27.2108843537415 +r0 = 1.575 + +[model."3-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.1 +k = 24.79338842975207 +r0 = 1.65 + + + +[simulation] +type = "Metropolis" +steps = 5000000 +seed = 10 +parallel = false + +[[simulation.move]] +action = "Displacement" +probability = 0.8 +policy = "SimpleGaussian" +parameters = {sigma = 0.05} + +[[simulation.move]] +action = "MoleculeFlip" +probability = 0.2 +policy = "DoubleUniform" + +[[simulation.output]] +algorithm = "StoreCallbacks" +callbacks = ["energy", "acceptance"] +scheduler_params = {linear_interval = 1} + +[[simulation.output]] +algorithm = "StoreLastFrames" +scheduler_params = {linear_interval = 10000} +fmt = "XYZ" + +[[simulation.output]] +algorithm = "PrintTimeSteps" +scheduler_params = {linear_interval = 1} From 60dcb217ff088ff0c8e743999f012f5cf79e215b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Thu, 22 Jan 2026 14:15:30 +0100 Subject: [PATCH 04/12] fix: update parameters --- .../2-equilibrate-at-different-temperatures/create-folders.sh | 2 +- .../params-template.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh index 4519f4e..6c28da3 100644 --- a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh +++ b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/create-folders.sh @@ -1,6 +1,6 @@ #!/bin/bash -for temperature in 3.0 2.0 1.6 1.4 1.25 1.2 1.15 1.1 1.05 1 +for temperature in 3.0 2.0 1.6 1.4 1.25 1.2 1.15 1.1 1.05 1.0 do mkdir -p $temperature sed "s/TEMPERATURE/$temperature/" params-template.toml > $temperature/params.toml diff --git a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml index 47d91a7..e374d58 100644 --- a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml +++ b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml @@ -70,7 +70,7 @@ policy = "DoubleUniform" [[simulation.output]] algorithm = "StoreCallbacks" callbacks = ["energy", "acceptance"] -scheduler_params = {linear_interval = 1} +scheduler_params = {linear_interval = 1000} [[simulation.output]] algorithm = "StoreLastFrames" @@ -79,4 +79,4 @@ fmt = "XYZ" [[simulation.output]] algorithm = "PrintTimeSteps" -scheduler_params = {linear_interval = 1} +scheduler_params = {linear_interval = 1000} From 0e119509b507ac56c45ae41673cc5cbb427877f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Fri, 23 Jan 2026 10:29:06 +0100 Subject: [PATCH 05/12] feat: use the user-provided scheduler for print steps --- src/ParticlesMC.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ParticlesMC.jl b/src/ParticlesMC.jl index 8f8dfd2..4199345 100644 --- a/src/ParticlesMC.jl +++ b/src/ParticlesMC.jl @@ -271,7 +271,7 @@ ParticlesMC implemented in Comonicon. elseif alg == "PrintTimeSteps" algorithm = ( algorithm = eval(Meta.parse(alg)), - scheduler = build_schedule(steps, burn, steps รท 10), + scheduler = sched, ) else error("Unsupported output algorithm: $alg") From 46a2ddf7175c78100d3836db499723a99fed7b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Fri, 23 Jan 2026 10:30:43 +0100 Subject: [PATCH 06/12] feat: update parameters --- .../params-template.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml index e374d58..72a2d86 100644 --- a/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml +++ b/examples/ortho-terphenyl/2-equilibrate-at-different-temperatures/params-template.toml @@ -77,6 +77,11 @@ algorithm = "StoreLastFrames" scheduler_params = {linear_interval = 10000} fmt = "XYZ" +[[simulation.output]] +algorithm = "StoreTrajectories" +scheduler_params = {linear_interval = 1000} +fmt = "XYZ" + [[simulation.output]] algorithm = "PrintTimeSteps" scheduler_params = {linear_interval = 1000} From 9a0da727aa2b2bafc23fc61a6aec03b4273c977a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Mon, 26 Jan 2026 16:42:10 +0100 Subject: [PATCH 07/12] feat: script to run production --- .../3-run-production/create-folders.sh | 7 ++ .../3-run-production/params-template.toml | 87 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 examples/ortho-terphenyl/3-run-production/create-folders.sh create mode 100644 examples/ortho-terphenyl/3-run-production/params-template.toml diff --git a/examples/ortho-terphenyl/3-run-production/create-folders.sh b/examples/ortho-terphenyl/3-run-production/create-folders.sh new file mode 100644 index 0000000..6c28da3 --- /dev/null +++ b/examples/ortho-terphenyl/3-run-production/create-folders.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +for temperature in 3.0 2.0 1.6 1.4 1.25 1.2 1.15 1.1 1.05 1.0 +do + mkdir -p $temperature + sed "s/TEMPERATURE/$temperature/" params-template.toml > $temperature/params.toml +done diff --git a/examples/ortho-terphenyl/3-run-production/params-template.toml b/examples/ortho-terphenyl/3-run-production/params-template.toml new file mode 100644 index 0000000..8dd1bb8 --- /dev/null +++ b/examples/ortho-terphenyl/3-run-production/params-template.toml @@ -0,0 +1,87 @@ +[system] +config = "../../2-equilibrate-at-different-temperatures/TEMPERATURE/trajectories/1/lastframe.xyz" +temperature = TEMPERATURE +density = 1.2 +list_type = "LinkedList" + +[model] + +[model."1-1"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.9 +k = 37.03703703703703 +r0 = 1.35 + +[model."1-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 0.95 +k = 33.24099722991689 +r0 = 1.425 + +[model."1-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-2"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.0 +k = 30.0 +r0 = 1.5 + +[model."2-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.05 +k = 27.2108843537415 +r0 = 1.575 + +[model."3-3"] +name = "GeneralKG" +epsilon = 1.0 +sigma = 1.1 +k = 24.79338842975207 +r0 = 1.65 + + + +[simulation] +type = "Metropolis" +steps = 5000000 +seed = 10 +parallel = false + +[[simulation.move]] +action = "Displacement" +probability = 0.8 +policy = "SimpleGaussian" +parameters = {sigma = 0.05} + +[[simulation.move]] +action = "MoleculeFlip" +probability = 0.2 +policy = "DoubleUniform" + +[[simulation.output]] +algorithm = "StoreCallbacks" +callbacks = ["energy", "acceptance"] +scheduler_params = {linear_interval = 1000} + +[[simulation.output]] +algorithm = "StoreLastFrames" +scheduler_params = {linear_interval = 10000} +fmt = "XYZ" + +[[simulation.output]] +algorithm = "StoreTrajectories" +scheduler_params = {linear_interval = 4096, log_base=2.0} +fmt = "XYZ" + +[[simulation.output]] +algorithm = "PrintTimeSteps" +scheduler_params = {linear_interval = 1000} From 19bfae380f4dde727c3859f6f0409c6f4385ccef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Thu, 29 Jan 2026 10:35:06 +0100 Subject: [PATCH 08/12] feat: script to compute fskt --- .../compute-observables.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py new file mode 100644 index 0000000..c71fc82 --- /dev/null +++ b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py @@ -0,0 +1,51 @@ +# /// script +# requires-python = ">=3.14" +# dependencies = [ +# "atooms-pp>=4.2.1", +# "fastparquet>=2025.12.0", +# "matplotlib>=3.10.8", +# "pandas>=3.0.0", +# ] +# /// + +from atooms.trajectory import Trajectory +import atooms.postprocessing as pp +import numpy as np +import pandas as pd + +temperatures = [3.0, 2.0, 1.6, 1.4, 1.25, 1.2, 1.15, 1.1, 1.05, 1.0] + + +def compute_fskt() -> pd.DataFrame: + print("F_s(k,t)") + df_list = [] + for T in temperatures: + print(f"T = {T}") + traj = Trajectory(f"..//3-run-production/{T}/trajectories/1/trajectory.xyz") + + cf = pp.SelfIntermediateScatteringFast(traj, nk=1, kmin=7.4, kmax=7.4) + cf.compute() + + print(f"k = {cf.grid[0][0]}") + + N = len(cf.grid[1]) + df_list.append( + pd.DataFrame( + { + "t": cf.grid[1], + cf.qualified_name: np.array(cf.values)[0], + "T": [T] * N, + } + ) + ) + + return pd.concat(df_list).reset_index(drop=True) + + +def main() -> None: + df = compute_fskt() + df.to_parquet("fskt.parquet") + + +if __name__ == "__main__": + main() From fd6d328d98aff5aa9c7b663fd7b28c3ecbaa925d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Thu, 29 Jan 2026 14:53:39 +0100 Subject: [PATCH 09/12] feat: script to plot differences. There are issues --- .../fskt.parquet | Bin 0 -> 6618 bytes .../plot-comparison.py | 47 ++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 examples/ortho-terphenyl/4-compute-correlation-functions/fskt.parquet create mode 100644 examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.parquet b/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.parquet new file mode 100644 index 0000000000000000000000000000000000000000..ca927fe708532e3c763cb6cb0a4c8344b3f46b9d GIT binary patch literal 6618 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 L-^PyoSLc5KhJ;8z literal 0 HcmV?d00001 diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py b/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py new file mode 100644 index 0000000..4580daa --- /dev/null +++ b/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py @@ -0,0 +1,47 @@ +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "fastparquet>=2025.12.0", +# "seaborn>=0.13.2", +# ] +# /// + +import pandas as pd +import seaborn as sns +import matplotlib.pyplot as plt + + +def main() -> None: + df_here = pd.read_parquet("fskt.parquet") + df_here["method"] = "ParticlesMC" + + temperatures = [3, 2, 1.6, 1.4, 1.25, 1.2, 1.15, 1.1, 1.05, 1] + assert len(temperatures) == len(df_here["T"].unique()) + df_list = [] + for T in temperatures: + df = pd.read_csv( + f"4/fsqt_flip/temp_{T}.dat", sep=" ", skiprows=1, names=["t", "F_s(k,t)"] + ) + df["T"] = T + df_list.append(df) + df_paper = pd.concat(df_list) + df_paper["method"] = "Paper" + + df_tot = pd.concat([df_here, df_paper]).reset_index(drop=True) + df_tot["Temperature"] = df_tot["T"].apply(lambda x: str(x)) + + ax = sns.lineplot( + data=df_tot, + x="t", + y="F_s(k,t)", + hue="Temperature", + style="method", + markers={"ParticlesMC": "o", "Paper": ","}, + ) + ax.set_xscale("log") + plt.savefig("fskt.png") + plt.show() + + +if __name__ == "__main__": + main() From a5b7fa721770fd1da4c779a88a6ab15eec22eaab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Fri, 30 Jan 2026 14:38:51 +0100 Subject: [PATCH 10/12] feat: pass proper arguments to postprocessing --- .../compute-observables.py | 13 +++++++++---- .../fskt.parquet | Bin 6618 -> 6061 bytes 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py index c71fc82..07b324d 100644 --- a/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py +++ b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py @@ -3,7 +3,6 @@ # dependencies = [ # "atooms-pp>=4.2.1", # "fastparquet>=2025.12.0", -# "matplotlib>=3.10.8", # "pandas>=3.0.0", # ] # /// @@ -21,9 +20,15 @@ def compute_fskt() -> pd.DataFrame: df_list = [] for T in temperatures: print(f"T = {T}") - traj = Trajectory(f"..//3-run-production/{T}/trajectories/1/trajectory.xyz") - - cf = pp.SelfIntermediateScatteringFast(traj, nk=1, kmin=7.4, kmax=7.4) + traj = Trajectory(f"../3-run-production/{T}/trajectories/1/trajectory.xyz") + + cf = pp.SelfIntermediateScatteringFast( + traj, + ksamples=1, + kmin=7.4, + kmax=7.4, + tgrid=sorted({round(x) for x in np.logspace(0, 6, num=55)}), + ) cf.compute() print(f"k = {cf.grid[0][0]}") diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.parquet b/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.parquet index ca927fe708532e3c763cb6cb0a4c8344b3f46b9d..5341d9f854751314b0f83eaa960635f5c8a3a41d 100644 GIT binary patch literal 6061 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 JR}mZa{{oR<9vJ`t literal 6618 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 L-^PyoSLc5KhJ;8z From aa07da0bb1ab6b621e6ddcfdc6b117d09b5998ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Villemot?= Date: Fri, 30 Jan 2026 16:00:40 +0100 Subject: [PATCH 11/12] docs: README --- .../4-compute-correlation-functions/fskt.png | Bin 0 -> 88689 bytes examples/ortho-terphenyl/README.md | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 examples/ortho-terphenyl/4-compute-correlation-functions/fskt.png create mode 100644 examples/ortho-terphenyl/README.md diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.png b/examples/ortho-terphenyl/4-compute-correlation-functions/fskt.png new file mode 100644 index 0000000000000000000000000000000000000000..8c48b0173271ea7e3eb7b613c83ff4638795ecf9 GIT binary patch literal 88689 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 Date: Fri, 30 Jan 2026 16:02:22 +0100 Subject: [PATCH 12/12] style: isort --- .../4-compute-correlation-functions/compute-observables.py | 2 +- .../4-compute-correlation-functions/plot-comparison.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py index 07b324d..35d4dd7 100644 --- a/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py +++ b/examples/ortho-terphenyl/4-compute-correlation-functions/compute-observables.py @@ -7,10 +7,10 @@ # ] # /// -from atooms.trajectory import Trajectory import atooms.postprocessing as pp import numpy as np import pandas as pd +from atooms.trajectory import Trajectory temperatures = [3.0, 2.0, 1.6, 1.4, 1.25, 1.2, 1.15, 1.1, 1.05, 1.0] diff --git a/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py b/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py index 4580daa..cce41f2 100644 --- a/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py +++ b/examples/ortho-terphenyl/4-compute-correlation-functions/plot-comparison.py @@ -6,9 +6,9 @@ # ] # /// +import matplotlib.pyplot as plt import pandas as pd import seaborn as sns -import matplotlib.pyplot as plt def main() -> None: