From 80949ca6008fd91c2702a6b69e7bb66015a545c3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 7 Jan 2026 10:17:53 +0000 Subject: [PATCH] Fix portability and execution errors in interface_builder - Remove hardcoded absolute paths in `interface_builder.py` and LAMMPS scripts. - Update `setup.py` to include missing dependencies `lammps-logfile` and `pandas`. - Use `os.makedirs` for safer directory creation. - Add `--oversubscribe` option to `mpirun` calls to support varied environments. - Fix API usage errors in example scripts (`generate_amorphous_system.py`, `test_quartz.py`). - Add `.gitignore` to exclude build artifacts and temporary files. --- .gitignore | 12 ++++++++++++ examples/generate_amorphous_system.py | 8 ++++++-- examples/test_quartz.py | 2 +- .../__pycache__/__init__.cpython-311.pyc | Bin 265 -> 0 bytes .../interface_builder.cpython-311.pyc | Bin 61127 -> 0 bytes interface_builder/interface_builder.py | 16 ++++++++++------ .../script/in.passivated_thermalized | 8 ++++---- setup.py | 4 +++- 8 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 .gitignore delete mode 100644 interface_builder/__pycache__/__init__.cpython-311.pyc delete mode 100644 interface_builder/__pycache__/interface_builder.cpython-311.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f66300 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +__pycache__/ +*.pyc +*.egg-info/ +log.lammps +log_*.lammps +*.data +*.dump +amorphous_*/ +quartz*/ +heatofimmersion*/ +Q4*/ +seed.txt diff --git a/examples/generate_amorphous_system.py b/examples/generate_amorphous_system.py index 5964f3a..3c84f05 100644 --- a/examples/generate_amorphous_system.py +++ b/examples/generate_amorphous_system.py @@ -1,15 +1,19 @@ from interface_builder import Silica +import os # Generate 10 sample of silica surface! for indx in range(2): # prepare the surface + output_folder = f'amorphous_{indx}' + os.makedirs(output_folder, exist_ok=True) + silica_params = { 'lx' : 4, 'ly' : 4, 'lz' : 4, 'vacuum' : 30, 'filename' : 'silica_amorphous.data', - 'output_folder' : f'amorphous_{indx}', + 'output_folder' : output_folder, 'input_folder' : 'test', 'sio2_potential' : './data/SiO2.vashishta', 'sio2_h2o_potential' : "./data/SiOH2O_199_16_adjusted.vashishta", @@ -19,7 +23,7 @@ # initilize the silica system silica = Silica(**silica_params) - silica_file = silica.build_amorphous(16, "lmp", run=True) + silica_file = silica.build_amorphous(mpirun_n=16, lmp_exec="lmp", run=True) # silica_surface = silica.resize_z(silica_file, 90, "silica_surface.data") # silica_annealed = silica.anneal(silica_surface, mpirun_n=16, lmp_exec="lmp", run=True) diff --git a/examples/test_quartz.py b/examples/test_quartz.py index 2c8de95..6debe8c 100644 --- a/examples/test_quartz.py +++ b/examples/test_quartz.py @@ -32,7 +32,7 @@ passivated_silica = silica_thermalize for _ in range(3): passivated_silica = silica.passivate(passivated_silica , T, 'passivated_quartz.data', - thickness=5, mpirun_n=16, lmp_exec='lmp_usc', run=False) + water_thickness=5, mpirun_n=16, lmp_exec='lmp_usc', run=False) silica_passivated_thermalize = silica.thermalize_passivated(passivated_silica, time=50, temp=300, output_filename= "silica_passivated_thermalize.data", diff --git a/interface_builder/__pycache__/__init__.cpython-311.pyc b/interface_builder/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 88628fc7e8e88c589395e97214c796c53911b69a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 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 D#bFEq diff --git a/interface_builder/interface_builder.py b/interface_builder/interface_builder.py index baa65f6..5373079 100644 --- a/interface_builder/interface_builder.py +++ b/interface_builder/interface_builder.py @@ -73,7 +73,8 @@ def __init__( self.sio2_h2o_potential = sio2_h2o_potential # create the output directory - os.system(f'mkdir {output_folder}') + if output_folder: + os.makedirs(output_folder, exist_ok=True) if lx is None and ly is None and lz is None: # copy the input file into the working directory shutil.copyfile( @@ -459,9 +460,6 @@ def set_silanol( 'potential_filename': self.sio2_h2o_potential, 'output_folder': self.output_folder } - lmp_exec = os.path.join( - "/home/users/anthonca/silica-water-interface_sandbox/interface_builder/interface_builder/lmp_exec/", - "lmp") if run: script_path = os.path.join(script_dir, 'script', 'in.set_silanol') self.execute_lammps( @@ -542,7 +540,8 @@ def execute_lammps( mpirun_n=4, lmp_exec='lmp', script=None, - slurm=False): + slurm=False, + oversubscribe=True): '''Execute a LAMMPS simulation with the given arguments. This method executes a LAMMPS simulation using the specified LAMMPS executable and input script, along with additional arguments provided in the lmps_args dictionary. @@ -556,6 +555,8 @@ def execute_lammps( :type script: str or None :param slurm: (Optional) If True, run the simulation using Slurm on a HPC cluster. Default is False. :type slurm: bool + :param oversubscribe: (Optional) If True, run mpirun with --oversubscribe. Default is True. + :type oversubscribe: bool :return: None ''' @@ -573,8 +574,11 @@ def execute_lammps( **lmps_args) sim.run(computer=computer) else: + mpi_args = f"-n {mpirun_n}" + if oversubscribe: + mpi_args += " --oversubscribe" os.system( - f"mpirun -n {mpirun_n} {lmp_exec} -in {script} {lmps_args_list}") + f"mpirun {mpi_args} {lmp_exec} -in {script} {lmps_args_list}") def add_water( self, diff --git a/interface_builder/script/in.passivated_thermalized b/interface_builder/script/in.passivated_thermalized index 94ddd1a..5a49abc 100644 --- a/interface_builder/script/in.passivated_thermalized +++ b/interface_builder/script/in.passivated_thermalized @@ -2,10 +2,10 @@ units metal boundary p p p atom_style atomic -read_data /Users/anthonca/Documents/PhD/silica-water-sim/contact_angle-amorphous/data/new_set/passivation/data/WCA_system_clean/system2_87SiOH_6436.data +read_data ${input_filename} pair_style usc -pair_coeff * * ./data/SiOH2O_nm_0_0.vashishta H O Si +pair_coeff * * ${potential_filename} H O Si pair_modify coord 2 3 2.0 0.3 pair_modify coord 2 1 1.4 0.3 mass 1 1.00794 @@ -27,7 +27,7 @@ variable thermalising_time equal 5 # ps variable thermalising_steps equal ${thermalising_time}/${dt} fix 1 all nvt temp 300 300 $(100*dt) -dump silica all custom 100 ./data/silica-passivated.dump id type x y z +dump silica all custom 100 ${output_folder}/silica-passivated.dump id type x y z log log_passivated-thermalized.lammps thermo_style custom step time temp etotal spcpu cpuremain @@ -36,4 +36,4 @@ thermo 10 timestep ${dt} run ${thermalising_steps} -write_data ./data/passivated-system2_thermalized.data +write_data ${output_filename} diff --git a/setup.py b/setup.py index 1fe5554..907820e 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,9 @@ packages=find_packages(), install_requires=[ "numpy", - "molecular-builder" + "molecular-builder", + "lammps-logfile", + "pandas" ], classifiers=[ "Programming Language :: Python :: 3.9",