mir-group / pair_nequip

MIT License
41 stars 12 forks source link

❓ [QUESTION] Error while using potential in lammps. RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn #15

Open n0w0f opened 2 years ago

n0w0f commented 2 years ago

Lammps runs and terminate after sometim

terminate called after throwing an instance of 'std::runtime_error'
  what():  The following operation failed in the TorchScript interpreter.
Traceback of TorchScript, serialized code (most recent call last):
  File "code/__torch__/nequip/nn/_grad_output.py", line 34, in forward
      _6 = [torch.sum(data0[of])]
      training = self.training
      grads = torch.autograd.grad(_6, wrt_tensors, None, None, training)
              ~~~~~~~~~~~~~~~~~~~ <--- HERE
      out_field = self.out_field
      _7 = [torch.len(out_field), torch.len(grads)]

Traceback of TorchScript, original code (most recent call last):
  File "/Users/qpiai/Volta_comp/nequip/nequip/nn/_grad_output.py", line 84, in forward
        data = self.func(data)
        # Get grads
        grads = torch.autograd.grad(
                ~~~~~~~~~~~~~~~~~~~ <--- HERE
            # TODO:
            # This makes sense for scalar batch-level or batch-wise outputs, specifically because d(sum(batches))/d wrt = sum(d batch / d wrt) = d my_batch / d wrt
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Linux-cpp-lisp commented 2 years ago

Hi @n0w0f ,

can you please include more information about your setup, what you are doing, and in particular anything you are doing differently from our tutorial on Colab (which includes using LAMMPS?): https://bit.ly/mrs-nequip

Thanks.

Linux-cpp-lisp commented 2 years ago

Does your model not have forces?

n0w0f commented 2 years ago

Hi, Thanks for replying. I trained the nequip model on LiPS system, then deployed the model to lammps pair potential following the steps in the repo. Sorry, but I couldn't understand your question if my model include forces. while training the model, error on forces were also printed, I was assuming the loss function accounted for loss in forces also.

I was able to do some nvt and npt run in lammps using the nequip potential, I encountered this error while using compute msd command in lammps , that too after running for some steps. I have copied the lammps , input and full output here, _--------------------------------------------------------------------------------------------------------------------------------------------------

units real atom_style charge dimension 3 boundary p p p newton off variable temper equal 520

region box block 0 16 0 16 0 12

pair_style nequip read_data /home/aswanth/Desktop/lammpsrun/LiPS/520_msd/520k_equilibrium.data pair_coeff /home/aswanth/Desktop/nequip/deploy_models/LiPS_2500.pth Li P S

mass 1 6.941
mass 2 30.973 mass 3 32.065

set type 1 charge 0.8 set type 2 charge 1.2 set type 3 charge -1.70

timestep 1 run_style verlet variable nsteps equal 10000

group Li type 1

compute msd_Li Li msd com yes compute t Li temp

fix msd_Li Li ave/time 10 1 10 c_t c_msd_Li[4] file msd_Lidumpfile

variable twopoint_Li equal c_msd_Li[4]/6/(stepdt+1.0e-6) fix 9_Li all vector 10 c_msd_Li[4] variable fitslope_Li equal slope(f_9_Li)/6/(10dt)

thermo_style custom step temp etotal c_msd_Li[4] v_twopoint_Li v_fitslope_Li

thermo 1000

fix 2 all npt temp 520 520 100 iso 10 10 1000

dump ${temper}eqbm_dump all atom 1000 ${temper}eqbm_dump.atom

dump ${temper}eqbm_pos all custom 1000 ${temper}eqbm_positions.lammpstrj type x y z vx vy vz

run 100000

write_data ${temper}k_msd.data write_restart ${temper}k_msd.data


LAMMPS (14 Dec 2021) OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) using 1 OpenMP thread(s) per MPI task NEQUIP is using device cpu Reading data file ... triclinic box = (-38.164729 -38.105 -35.346038) to (50.542429 50.463329 46.809571) with tilt (-18.599705 -21.282631 -32.35028) 1 by 1 by 1 MPI processor grid reading atoms ... 84 atoms reading velocities ... 84 velocities read_data CPU = 0.005 seconds NequIP Coeff: type 1 is element Li NequIP Coeff: type 2 is element P NequIP Coeff: type 3 is element S Loading model from /home/aswanth/Desktop/nequip/deploy_models/LiPS_2500.pth Freezing TorchScript model... Setting atom values ... 28 settings made for charge Setting atom values ... 12 settings made for charge Setting atom values ... 44 settings made for charge 28 atoms in group Li Neighbor list info ... update every 1 steps, delay 10 steps, check yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 6 ghost atom cutoff = 6 binsize = 3, bins = 43 41 28 1 neighbor lists, perpetual/occasional/extra = 1 0 0 (1) pair nequip, perpetual attributes: full, newton off pair build: full/bin/atomonly stencil: full/bin/3d bin: standard Setting up Verlet run ... Unit style : real Current step : 0 Time step : 1 Per MPI rank memory allocation (min/avg/max) = 6.145 | 6.145 | 6.145 Mbytes Step Temp TotEng c_msd_Li[4] v_twopoint_Li v_fitslope_Li 0 452.00159 -221.92477 7.2124426e-30 1.2020738e-24 1.6666667e+18 1000 505.57336 -208.94328 69.331678 0.01155528 0.010681399 2000 602.64744 -185.91406 1151.1292 0.095927434 0.073959581 3000 478.61399 -215.31134 500.14806 0.027786003 0.083445757 terminate called after throwing an instance of 'std::runtime_error' what(): The following operation failed in the TorchScript interpreter. Traceback of TorchScript, serialized code (most recent call last): File "code/torch/nequip/nn/_grad_output.py", line 34, in forward _6 = [torch.sum(data0[of])] training = self.training grads = torch.autograd.grad(_6, wrt_tensors, None, None, training)


      out_field = self.out_field
      _7 = [torch.len(out_field), torch.len(grads)]

Traceback of TorchScript, original code (most recent call last):
  File "/Users/qpiai/Volta_comp/nequip/nequip/nn/_grad_output.py", line 84, in forward
        data = self.func(data)
        # Get grads
        grads = torch.autograd.grad(
                ~~~~~~~~~~~~~~~~~~~ <--- HERE
            # TODO:
            # This makes sense for scalar batch-level or batch-wise outputs, specifically because d(sum(batches))/d wrt = sum(d batch / d wrt) = d my_batch / d wrt
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

[1]    39619 abort (core dumped)  /home/aswanth/lammps/lammps/build/lmp_mpi -in in.LiPS
Linux-cpp-lisp commented 2 years ago

Does the same happen if you run NVE instead? pair_nequip/NequIP does not yet support stress/pressures (although we are working on this).

n0w0f commented 2 years ago

I just checked and it is running for NVE. NVT and NPT simulations are throwing this error

Linux-cpp-lisp commented 2 years ago

Hm strange.

@n0w0f can you please re-download pair_nequip (https://github.com/mir-group/pair_nequip), recompile LAMMPS, and try again? There have recently been some bugfixes in that code and I'd like to see if that fixes anything.

(There is also now a test suite you can run using LAMMPS=/path/to/lmp pytest tests/test_python_repro.py that might catch if something strange is happening with your installation.)

Linux-cpp-lisp commented 2 years ago

also @anjohan

n0w0f commented 2 years ago

I am not able to patch again , this is the error This LAMMPS installation seems to already have been patched; please check it!

Does this mean I will have to reinstall lammps also ?

anjohan commented 2 years ago

You should be able to just copy over the new versions of pair_nequip.* to lammps/src and recompile.

n0w0f commented 2 years ago

still throwing error after a few steps.

  12000    562.82347   -194.29045    1592.4506  0.088469476    0.0882611 
   13000    501.99754   -209.43966     1857.947  0.095279334  0.095544385 
   14000    527.60939   -203.14628    2165.5968   0.10312366    0.1028188 
   15000    548.95605    -197.8667    2480.3974   0.11023988   0.11015785 
terminate called after throwing an instance of 'std::runtime_error'
  what():  The following operation failed in the TorchScript interpreter.
Traceback of TorchScript, serialized code (most recent call last):
  File "code/__torch__/nequip/nn/_grad_output.py", line 34, in forward
      _6 = [torch.sum(data0[of])]
      training = self.training
      grads = torch.autograd.grad(_6, wrt_tensors, None, None, training)
              ~~~~~~~~~~~~~~~~~~~ <--- HERE
      out_field = self.out_field
      _7 = [torch.len(out_field), torch.len(grads)]

Traceback of TorchScript, original code (most recent call last):
  File "/Users/qpiai/Volta_comp/nequip/nequip/nn/_grad_output.py", line 84, in forward
        data = self.func(data)
        # Get grads
        grads = torch.autograd.grad(
                ~~~~~~~~~~~~~~~~~~~ <--- HERE
            # TODO:
            # This makes sense for scalar batch-level or batch-wise outputs, specifically because d(sum(batches))/d wrt = sum(d batch / d wrt) = d my_batch / d wrt
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

[1]    37616 abort (core dumped)  /home/aswanth/lammps/lammps/build/lmp_mpi -in in.LiPS

---------------------------------------------------------------------------------------------------------

I got the following error after running pytest

======================================= test session starts ========================================
platform linux -- Python 3.8.10, pytest-7.1.1, pluggy-1.0.0
rootdir: /home/aswanth/pair_nequip
collected 12 items                                                                                 

tests/test_python_repro.py EEEEEEEEEEEE                                                      [100%]

============================================== ERRORS ==============================================
______________________ ERROR at setup of test_repro[187382-dataset_options0] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 4.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpuoj2z_oo/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpuoj2z_oo/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[187382-dataset_options1] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 15.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpb_5_7c2m/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpb_5_7c2m/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[187382-dataset_options2] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu', 'Ag', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu2AgO4.xyz'), 'r_max': 4.9, 'run_name': 'mp-1225882'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpu9vdmpg2/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpu9vdmpg2/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[187382-dataset_options3] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 4.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmphgx0he9k/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmphgx0he9k/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[187382-dataset_options4] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 15.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp5k994va6/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp5k994va6/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[187382-dataset_options5] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu', 'Pd'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/CuPd-cubic-big.xyz'), 'r_max': 5.1, 'run_name': 'CuPd'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp3r6eljik/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp3r6eljik/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options0] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 4.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpvhlogb_w/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpvhlogb_w/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options1] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 15.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpyjn981dj/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpyjn981dj/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options2] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu', 'Ag', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu2AgO4.xyz'), 'r_max': 4.9, 'run_name': 'mp-1225882'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp36rngh29/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp36rngh29/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options3] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 4.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp1bjvmjyp/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp1bjvmjyp/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options4] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 15.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp7kag15fy/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp7kag15fy/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
______________________ ERROR at setup of test_repro[109109-dataset_options5] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu', 'Pd'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/CuPd-cubic-big.xyz'), 'r_max': 5.1, 'run_name': 'CuPd'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp6b_a5ini/config.yaml'], returncode=1, stdout=b'', stderr=b'Torch devic...ate\n    raise RuntimeError(\nRuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp6b_a5ini/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
========================================= warnings summary =========================================
../.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14: DeprecationWarning: Please use `spmatrix` from the `scipy.sparse` namespace, the `scipy.sparse.base` namespace is deprecated.
    from scipy.sparse.base import spmatrix

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe2` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe1` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================== short test summary info ======================================
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options0] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options1] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options2] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options3] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options4] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options5] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options0] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options1] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options2] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options3] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options4] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options5] - subprocess.CalledProcessE...
================================= 3 warnings, 12 errors in 26.52s ==================================
Linux-cpp-lisp commented 2 years ago

@n0w0f Hm... very strange, it seems to be failing on something in your nequip install before it ever gets to LAMMPS.

1) what pytorch version are you using? Are you using CUDA/GPU? 2) I've quickly made a branch: https://github.com/mir-group/pair_nequip/tree/more-informative-test-fails that should give a more helpful set of pytest error messages by passing through the errors from nequip-train; can you run the tests with that branch (no need to rebuild lammps, only changes the test file) and post the output?

Thanks.

n0w0f commented 2 years ago
  1. Version: 1.10.1 , No I am not using gpu. The nequip model was trained in cpu

  2. I have used the test in the new branch this is the output

 ~/pair_nequip | more-informative-test-fails  LAMMPS=/home/aswanth/lammps/lammps/build/lmp_mpi pytest tests/test_python_repro.py
======================================= test session starts ========================================
platform linux -- Python 3.8.10, pytest-7.1.1, pluggy-1.0.0
rootdir: /home/aswanth/pair_nequip
collected 12 items                                                                                 

tests/test_python_repro.py EEEEEEEEEEEE                                                      [100%]

============================================== ERRORS ==============================================
______________________ ERROR at setup of test_repro[187382-dataset_options0] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 4.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmptzongi69/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmptzongi69/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[187382-dataset_options1] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 15.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp2m4mr_vw/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp2m4mr_vw/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[187382-dataset_options2] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu', 'Ag', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu2AgO4.xyz'), 'r_max': 4.9, 'run_name': 'mp-1225882'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp26sfio2o/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp26sfio2o/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[187382-dataset_options3] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 4.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpzdmvd2ef/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpzdmvd2ef/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[187382-dataset_options4] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 15.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpdcjzh6ns/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpdcjzh6ns/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[187382-dataset_options5] _______________________

model_seed = 187382
dataset_options = {'chemical_symbols': ['Cu', 'Pd'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/CuPd-cubic-big.xyz'), 'r_max': 5.1, 'run_name': 'CuPd'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp_7qsh91j/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp_7qsh91j/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options0] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 4.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpzq14fstn/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpzq14fstn/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options1] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['C', 'H', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/aspirin.xyz'), 'r_max': 15.0, 'run_name': 'aspirin'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpcz8k9ty5/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpcz8k9ty5/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options2] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu', 'Ag', 'O'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu2AgO4.xyz'), 'r_max': 4.9, 'run_name': 'mp-1225882'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpk4hbk_f_/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpk4hbk_f_/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options3] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 4.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpocht3a7x/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpocht3a7x/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options4] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/Cu-cubic.xyz'), 'r_max': 15.5, 'run_name': 'Cu'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmp9a2bymza/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmp9a2bymza/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
______________________ ERROR at setup of test_repro[109109-dataset_options5] _______________________

model_seed = 109109
dataset_options = {'chemical_symbols': ['Cu', 'Pd'], 'dataset_file_name': PosixPath('/home/aswanth/pair_nequip/tests/test_data/CuPd-cubic-big.xyz'), 'r_max': 5.1, 'run_name': 'CuPd'}

    @pytest.fixture()
    def deployed_model(model_seed, dataset_options):
        with tempfile.TemporaryDirectory() as tmpdir:
            config = Config.from_file(str(TESTS_DIR / "test_data/test_repro.yaml"))
            config.update(dataset_options)
            config["seed"] = model_seed
            config["root"] = tmpdir + "/root"
            configpath = tmpdir + "/config.yaml"
            with open(configpath, "w") as f:
                yaml.dump(dict(config), f)
            # run a nequip-train command
            retcode = subprocess.run(
                ["nequip-train", configpath],
                cwd=tmpdir,
                stdout=sys.stdout,
                stderr=sys.stderr,
            )
>           retcode.check_returncode()

tests/test_python_repro.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = CompletedProcess(args=['nequip-train', '/tmp/tmpa7xx8nn2/config.yaml'], returncode=1)

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '['nequip-train', '/tmp/tmpa7xx8nn2/config.yaml']' returned non-zero exit status 1.

/usr/lib/python3.8/subprocess.py:448: CalledProcessError
-------------------------------------- Captured stderr setup ---------------------------------------
Torch device: cpu
Traceback (most recent call last):
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 232, in instantiate
    instance = builder(**positional_args, **final_optional_args)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/transforms.py", line 59, in __init__
    raise ValueError(
ValueError: Neither chemical_symbol_to_type nor type_names was provided; one or the other is required

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/aswanth/.local/bin/nequip-train", line 8, in <module>
    sys.exit(main())
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 64, in main
    trainer = fresh_start(config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/scripts/train.py", line 156, in fresh_start
    dataset = dataset_from_config(config, prefix="dataset")
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/data/_build.py", line 72, in dataset_from_config
    type_mapper, _ = instantiate(TypeMapper, prefix=prefix, optional_args=config)
  File "/home/aswanth/.local/lib/python3.8/site-packages/nequip/utils/auto_init.py", line 234, in instantiate
    raise RuntimeError(
RuntimeError: Failed to build object with prefix `dataset` using builder `TypeMapper`
========================================= warnings summary =========================================
../.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14: DeprecationWarning: Please use `spmatrix` from the `scipy.sparse` namespace, the `scipy.sparse.base` namespace is deprecated.
    from scipy.sparse.base import spmatrix

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe2` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe1` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================== short test summary info ======================================
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options0] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options1] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options2] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options3] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options4] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[187382-dataset_options5] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options0] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options1] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options2] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options3] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options4] - subprocess.CalledProcessE...
ERROR tests/test_python_repro.py::test_repro[109109-dataset_options5] - subprocess.CalledProcessE...
================================= 3 warnings, 12 errors in 26.92s ==================================

 ~/pair_nequip | more-informative-test-fails              1 err | 27s | nequip-model py | 09:40:50 
Linux-cpp-lisp commented 2 years ago

Aha, the tests depend on NequIP version at least 0.5.1, what version are you using? Ideally, please update to the latest stable version 0.5.3 and try the tests again.

n0w0f commented 2 years ago

sorry, I was using 0.5.0, I updated and ran the test. This time it was printing lot of numbers....

.....
8638 -0.4728\n -0.2886 -0.9211 -1.1782\n -0.3062  1.4746  1.1887\n  0.8771 -0.3804 -0.7036\n  0.5554 -0.1623  0.3133\n -0.7714  0.1993 -0.0894\n  0.5630 -0.5241 -0.3284\n  0.6004 -0.2179 -0.2541\n  0.7306 -0.4891 -1.5890\n -0.2700  0.8889 -0.4109\n  0.2990  0.2442 -0.5059\n -1.2098 -0.7388  2.2764\n  1.9769  0.4534  0.3577\n -0.6506  0.3100 -0.3624\n -1.7507  1.9404 -0.8557\n -0.0588  0.1894  0.4042\n -0.0878  0.8495 -0.2336\n -0.4531 -0.4735 -0.4403\n  1.5831 -0.3515  0.5787\n  0.1238 -0.0064  0.4149\n -1.6956 -1.6017 -1.7824\n  0.0203 -0.5249  0.3607\n -1.1530 -0.8947  0.6988\n  0.2215 -0.3285  0.4715\n -0.2903 -0.1567 -0.0019\n  0.2675 -0.1917 -0.1920\n  0.1469 -1.5046 -0.6485\n  0.0850 -0.0146  0.2065\n -0.0595  0.4348  0.3980\n -0.8057 -0.4173 -1.0480\n  0.2795 -0.1314 -0.0180\n -0.1107  0.1014  0.2258\n  0.6237  0.6201 -1.1899\n  0.1179 -0.5681  0.3989\n  0.3878  0.1967 -0.0482\n -1.2408  0.3578 -0.7983\n -0.2781 -0.6989 -0.7122\n  1.2082  0.1226  1.6853\n  0.3184  0.2170 -0.7270\n  0.9274  0.6999 -0.5380\n  1.8214  0.1440  1.8481\n -1.3692  0.5530  0.7620\n[ CPUFloatType{256,3} ]\ntotal_energy:  4.4555\n[ CPUFloatType{1,1} ]\natomic_energy: 0.01 *\n 0.1313\n  2.5706\n  2.5735\n  0.1866\n  2.5686\n  2.5673\n  0.1415\n  2.5684\n  2.5565\n  0.1367\n  2.5499\n  2.5586\n  0.0429\n  2.5522\n  2.5457\n  0.1652\n  2.5603\n  2.5595\n  0.1370\n  2.5580\n  2.5694\n  0.0965\n  2.5544\n  2.5652\n  0.1296\n  2.5660\n  2.5602\n  0.1690\n  2.5479\n  2.5545\n  0.1641\n  2.5573\n  2.5556\n  0.1101\n  2.5586\n  2.5654\n  0.0963\n  2.5670\n  2.5616\n  0.1316\n  2.5549\n  2.5611\n  0.2060\n  2.5659\n  2.5691\n  0.1823\n  2.5478\n  2.5484\n  0.0871\n  2.5616\n  2.5720\n  0.2075\n  2.5524\n  2.5528\n  0.1419\n  2.5570\n  2.5630\n  0.0694\n  2.5499\n  2.5523\n  0.0865\n  2.5388\n  2.5547\n  0.1078\n  2.5616\n  2.5631\n  0.1130\n  2.5572\n  2.5569\n  0.0807\n  2.5471\n  2.5554\n  0.0945\n  2.5559\n  2.5621\n  0.1483\n  2.5623\n  2.5592\n  0.0876\n  2.5556\n  2.5487\n  0.1285\n  2.5376\n  2.5557\n  0.0199\n  2.5612\n  2.5530\n  0.0246\n  2.5520\n  2.5584\n  0.1509\n  2.5545\n  2.5645\n  0.1345\n  2.5554\n  2.5546\n  0.1472\n  2.5623\n  2.5603\n  0.1409\n  2.5684\n  2.5587\n  0.1446\n  2.5583\n  2.5598\n  0.1493\n  2.5546\n  2.5635\n  0.1313\n  2.5562\n  2.5609\n  0.1320\n  2.5648\n  2.5682\n  0.1347\n  2.5546\n  2.5568\n  0.0979\n  2.5557\n  2.5461\n  0.1200\n  2.5526\n  2.5646\n  0.1267\n  2.5551\n  2.5617\n  0.1470\n  2.5658\n  2.5543\n  0.1093\n  2.5547\n  2.5682\n  0.0663\n  2.5560\n  2.5585\n  0.1525\n  2.5631\n  2.5639\n  0.0843\n  2.5606\n  2.5565\n  0.1724\n  2.5550\n  2.5468\n  0.1804\n  2.5534\n  2.5437\n  0.1636\n  2.5585\n  2.5598\n  0.1514\n  2.5472\n  2.5536\n  0.1163\n  2.5557\n  2.5543\n  0.1076\n  2.5653\n  2.5628\n  0.0830\n  2.5658\n  2.5491\n  0.1422\n  2.5546\n  2.5534\n  0.1214\n  2.5534\n  2.5379\n  0.1600\n  2.5657\n  2.5609\n  0.1799\n  2.5417\n  2.5555\n  0.1420\n  2.5679\n  2.5531\n  0.1021\n  2.5583\n  2.5589\n  0.1012\n  2.5485\n  2.5669\n  0.1122\n  2.5591\n  2.5678\n  0.1596\n  2.5615\n  2.5590\n  0.1185\n  2.5464\n  2.5452\n  0.1609\n  2.5674\n  2.5723\n  0.1769\n  2.5686\n  2.5642\n  0.2257\n  2.5754\n  2.5604\n  0.0657\n  2.5611\n  2.5612\n  0.0665\n  2.5555\n  2.5335\n  0.0932\n  2.5664\n  2.5548\n  0.1968\n  2.5655\n  2.5634\n  0.0908\n  2.5718\n  2.5615\n  0.0883\n  2.5454\n  2.5598\n  0.0906\n  2.5443\n  2.5613\n  0.1611\n  2.5561\n  2.5578\n  0.0813\n  2.5345\n  2.5545\n  0.0616\n  2.5679\n  2.5477\n  0.0976\n  2.5508\n  2.5677\n  0.1795\n  2.5622\n  2.5527\n  0.1339\n  2.5555\n  2.5677\n  0.1118\n  2.5571\n  2.5610\n  0.1197\n  2.5568\n  2.5744\n  0.1638\n  2.5635\n  2.5704\n  0.1398\n  2.5756\n  2.5534\n  0.0698\n  2.5284\n  2.5382\n  0.0185\n[ CPUFloatType{256,1} ]\nPer MPI rank memory allocation (min/avg/max) = 2.736 | 2.736 | 2.736 Mbytes\nStep Time Temp PotEng c_totalatomicenergy TotEng Press S/CPU CPULeft \n       0            0            0    4.4554553    4.4554552    4.4554553            0            0            0 \nLoop time of 8.86e-07 on 1 procs for 0 steps with 256 atoms\n\n225.7% CPU use with 1 MPI tasks x 1 OpenMP threads\n\nMPI task timing breakdown:\nSection |  min time  |  avg time  |  max time  |%varavg| %total\n---------------------------------------------------------------\nPair    | 0          | 0          | 0          |   0.0 |  0.00\nNeigh   | 0          | 0          | 0          |   0.0 |  0.00\nComm    | 0          | 0          | 0          |   0.0 |  0.00\nOutput  | 0          | 0          | 0          |   0.0 |  0.00\nModify  | 0          | 0          | 0          |   0.0 |  0.00\nOther   |            | 8.86e-07   |            |       |100.00\n\nNlocal:            256 ave         256 max         256 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nNghost:           1427 ave        1427 max        1427 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nNeighs:              0 ave           0 max           0 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nFullNghs:        20170 ave       20170 max       20170 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\n\nTotal # of neighbors = 20170\nAve neighs/atom = 78.789062\nNeighbor list builds = 0\nDangerous builds not checked\n4455455.3031921386719\n4455455.1648325286806\nTotal wall time: 0:00:01\n'
========================================= warnings summary =========================================
../.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/multiclass.py:14: DeprecationWarning: Please use `spmatrix` from the `scipy.sparse` namespace, the `scipy.sparse.base` namespace is deprecated.
    from scipy.sparse.base import spmatrix

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe2` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

../.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18
  /home/aswanth/.local/lib/python3.8/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe1` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated.
    from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================== short test summary info ======================================
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options0] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options1] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options2] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options3] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options4] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[187382-dataset_options5] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options0] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options1] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options2] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options3] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options4] - ase.calculators.calculat...
FAILED tests/test_python_repro.py::test_repro[109109-dataset_options5] - ase.calculators.calculat...
============================ 12 failed, 3 warnings in 236.03s (0:03:56) ============================
Linux-cpp-lisp commented 2 years ago

hi @n0w0f can you include instead he full output of one of the failed tests, rather than the incomplete summary of all? this pytest summary unfortunately leaves out the actual errors.

(One way to do this is to run pytest with the --pdb option, which will dump you into the debugger at the first failure, at which point you can just quit with the q command.)

n0w0f commented 2 years ago
Processing...
Done!
b'LAMMPS (14 Dec 2021)\nOMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)\n  using 1 OpenMP thread(s) per MPI task\nReading data file ...\n  orthogonal box = (0 0 0) to (50 50 50)\n  1 by 1 by 1 MPI processor grid\n  reading atoms ...\n  21 atoms\n  read_data CPU = 0.001 seconds\nNEQUIP is using device cpu\nPairNEQUIP is in DEBUG mode, since NEQUIP_DEBUG is in env\nNequIP Coeff: type 1 is element C\nNequIP Coeff: type 2 is element H\nNequIP Coeff: type 3 is element O\nLoading model from /tmp/tmpzj4d6876/deployed.pth\nFreezing TorchScript model...\nNeighbor list info ...\n  update every 1 steps, delay 0 steps, check no\n  max neighbors/atom: 2000, page size: 100000\n  master list distance cutoff = 5\n  ghost atom cutoff = 5\n  binsize = 2.5, bins = 4 2 3\n  1 neighbor lists, perpetual/occasional/extra = 1 0 0\n  (1) pair nequip, perpetual\n      attributes: full, newton off\n      pair build: full/bin/atomonly\n      stencil: full/bin/3d\n      bin: standard\nSetting up Verlet run ...\n  Unit style    : metal\n  Current step  : 0\n  Time step     : 0.001\nNEQUIP edges: i j xi[:] xj[:] cell_shift[:] rij\n8 11 22.67101669 25.33584976 23.32103157 22.82881737 26.01215553 24.37221336 -0 0 0 1.259870591\n8 1 22.67101669 25.33584976 23.32103157 26.23059464 25.80846977 23.28733063 -0 0 0 3.590975407\n8 6 22.67101669 25.33584976 23.32103157 25.22018623 25.08693314 24.90279579 0 -0 -0 3.010350034\n8 12 22.67101669 25.33584976 23.32103157 24.40045166 25.79019928 24.8589592 -0 -0 0 2.358516457\n8 15 22.67101669 25.33584976 23.32103157 25.35006523 26.6594696 22.88024902 0 0 -0 3.020524299\n8 4 22.67101669 25.33584976 23.32103157 22.18154716 26.00863647 25.38876724 -0 -0 -0 2.228843828\n8 18 22.67101669 25.33584976 23.32103157 22.66061401 27.56680107 25.77317238 0 -0 0 3.31515312\n8 19 22.67101669 25.33584976 23.32103157 20.97101974 26.44430733 25.64046288 -0 -0 0 3.081951266\n8 20 22.67101669 25.33584976 23.32103157 22.19336128 25.86196327 26.49230576 0 0 0 3.249911686\n11 8 22.82881737 26.01215553 24.37221336 22.67101669 25.33584976 23.32103157 -0 0 0 1.259870591\n11 1 22.82881737 26.01215553 24.37221336 26.23059464 25.80846977 23.28733063 -0 0 0 3.576387233\n11 6 22.82881737 26.01215553 24.37221336 25.22018623 25.08693314 24.90279579 0 -0 -0 2.618435186\n11 12 22.82881737 26.01215553 24.37221336 24.40045166 25.79019928 24.8589592 -0 -0 0 1.660186472\n11 15 22.82881737 26.01215553 24.37221336 25.35006523 26.6594696 22.88024902 0 0 -0 3.000278477\n11 4 22.82881737 26.01215553 24.37221336 22.18154716 26.00863647 25.38876724 -0 -0 -0 1.205134766\n11 18 22.82881737 26.01215553 24.37221336 22.66061401 27.56680107 25.77317238 0 -0 0 2.099499377\n11 19 22.82881737 26.01215553 24.37221336 20.97101974 26.44430733 25.64046288 -0 -0 0 2.290550976\n11 20 22.82881737 26.01215553 24.37221336 22.19336128 25.86196327 26.49230576 0 0 0 2.218366576\n11 5 22.82881737 26.01215553 24.37221336 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.729369373\n11 9 22.82881737 26.01215553 24.37221336 24.76228333 24.24667168 27.29500771 -0 0 0 3.924021847\n11 10 22.82881737 26.01215553 24.37221336 25.4359951 24.07610512 26.54936981 0 0 0 3.909690071\n1 8 26.23059464 25.80846977 23.28733063 22.67101669 25.33584976 23.32103157 -0 0 0 3.590975407\n1 11 26.23059464 25.80846977 23.28733063 22.82881737 26.01215553 24.37221336 -0 0 0 3.576387233\n1 6 26.23059464 25.80846977 23.28733063 25.22018623 25.08693314 24.90279579 0 -0 -0 2.037465456\n1 12 26.23059464 25.80846977 23.28733063 24.40045166 25.79019928 24.8589592 -0 -0 0 2.412420612\n1 15 26.23059464 25.80846977 23.28733063 25.35006523 26.6594696 22.88024902 0 0 -0 1.290445142\n1 0 26.23059464 25.80846977 23.28733063 27.39717674 23.88387299 24.94840813 -0 0 -0 2.797170248\n1 2 26.23059464 25.80846977 23.28733063 28.13953209 24.64144707 23.61288834 -0 0 0 2.260966994\n1 3 26.23059464 25.80846977 23.28733063 27.18217278 25.19717026 22.77392197 0 -0 0 1.242087257\n1 16 26.23059464 25.80846977 23.28733063 29.03586197 24.04956055 23.62270164 0 -0 0 3.328027358\n1 17 26.23059464 25.80846977 23.28733063 27.31746864 25.31768799 22.01227379 0 0 -0 1.745834088\n1 5 26.23059464 25.80846977 23.28733063 25.90031242 24.14245033 25.36131287 -0 -0 -0 2.680691634\n1 10 26.23059464 25.80846977 23.28733063 25.4359951 24.07610512 26.54936981 0 0 0 3.778011851\n1 14 26.23059464 25.80846977 23.28733063 27.6949501 23.03316879 25.11051369 -0 0 0 3.629136039\n6 8 25.22018623 25.08693314 24.90279579 22.67101669 25.33584976 23.32103157 -0 0 0 3.010350034\n6 11 25.22018623 25.08693314 24.90279579 22.82881737 26.01215553 24.37221336 -0 0 0 2.618435186\n6 1 25.22018623 25.08693314 24.90279579 26.23059464 25.80846977 23.28733063 -0 0 0 2.037465456\n6 12 25.22018623 25.08693314 24.90279579 24.40045166 25.79019928 24.8589592 -0 -0 0 1.080958769\n6 15 25.22018623 25.08693314 24.90279579 25.35006523 26.6594696 22.88024902 0 0 -0 2.565237271\n6 0 25.22018623 25.08693314 24.90279579 27.39717674 23.88387299 24.94840813 -0 0 -0 2.48771293\n6 2 25.22018623 25.08693314 24.90279579 28.13953209 24.64144707 23.61288834 -0 0 0 3.222560004\n6 3 25.22018623 25.08693314 24.90279579 27.18217278 25.19717026 22.77392197 0 -0 0 2.897179263\n6 17 25.22018623 25.08693314 24.90279579 27.31746864 25.31768799 22.01227379 0 0 -0 3.578681555\n6 4 25.22018623 25.08693314 24.90279579 22.18154716 26.00863647 25.38876724 -0 -0 -0 3.212325784\n6 18 25.22018623 25.08693314 24.90279579 22.66061401 27.56680107 25.77317238 0 -0 0 3.668612227\n6 20 25.22018623 25.08693314 24.90279579 22.19336128 25.86196327 26.49230576 0 0 0 3.50555085\n6 5 25.22018623 25.08693314 24.90279579 25.90031242 24.14245033 25.36131287 -0 -0 -0 1.25094174\n6 7 25.22018623 25.08693314 24.90279579 26.01608467 22.63296127 26.45919991 0 -0 -0 3.012942608\n6 9 25.22018623 25.08693314 24.90279579 24.76228333 24.24667168 27.29500771 -0 0 0 2.576507986\n6 10 25.22018623 25.08693314 24.90279579 25.4359951 24.07610512 26.54936981 0 0 0 1.944107077\n6 13 25.22018623 25.08693314 24.90279579 24.7089138 23.85678864 28.14433479 -0 -0 0 3.504602065\n6 14 25.22018623 25.08693314 24.90279579 27.6949501 23.03316879 25.11051369 -0 0 0 3.222660641\n12 8 24.40045166 25.79019928 24.8589592 22.67101669 25.33584976 23.32103157 -0 0 0 2.358516457\n12 11 24.40045166 25.79019928 24.8589592 22.82881737 26.01215553 24.37221336 -0 0 0 1.660186472\n12 1 24.40045166 25.79019928 24.8589592 26.23059464 25.80846977 23.28733063 -0 0 0 2.412420612\n12 6 24.40045166 25.79019928 24.8589592 25.22018623 25.08693314 24.90279579 0 -0 -0 1.080958769\n12 15 24.40045166 25.79019928 24.8589592 25.35006523 26.6594696 22.88024902 0 0 -0 2.360656469\n12 0 24.40045166 25.79019928 24.8589592 27.39717674 23.88387299 24.94840813 -0 0 -0 3.552807396\n12 3 24.40045166 25.79019928 24.8589592 27.18217278 25.19717026 22.77392197 0 -0 0 3.526619489\n12 4 24.40045166 25.79019928 24.8589592 22.18154716 26.00863647 25.38876724 -0 -0 -0 2.291712519\n12 18 24.40045166 25.79019928 24.8589592 22.66061401 27.56680107 25.77317238 0 -0 0 2.649364527\n12 19 24.40045166 25.79019928 24.8589592 20.97101974 26.44430733 25.64046288 -0 -0 0 3.577654174\n12 20 24.40045166 25.79019928 24.8589592 22.19336128 25.86196327 26.49230576 0 0 0 2.746673301\n12 5 24.40045166 25.79019928 24.8589592 25.90031242 24.14245033 25.36131287 -0 -0 -0 2.284079254\n12 7 24.40045166 25.79019928 24.8589592 26.01608467 22.63296127 26.45919991 0 -0 -0 3.890911658\n12 9 24.40045166 25.79019928 24.8589592 24.76228333 24.24667168 27.29500771 -0 0 0 2.906497787\n12 10 24.40045166 25.79019928 24.8589592 25.4359951 24.07610512 26.54936981 0 0 0 2.62067849\n12 13 24.40045166 25.79019928 24.8589592 24.7089138 23.85678864 28.14433479 -0 -0 0 3.824515791\n15 8 25.35006523 26.6594696 22.88024902 22.67101669 25.33584976 23.32103157 -0 0 0 3.020524299\n15 11 25.35006523 26.6594696 22.88024902 22.82881737 26.01215553 24.37221336 -0 0 0 3.000278477\n15 1 25.35006523 26.6594696 22.88024902 26.23059464 25.80846977 23.28733063 -0 0 0 1.290445142\n15 6 25.35006523 26.6594696 22.88024902 25.22018623 25.08693314 24.90279579 0 -0 -0 2.565237271\n15 12 25.35006523 26.6594696 22.88024902 24.40045166 25.79019928 24.8589592 -0 -0 0 2.360656469\n15 2 25.35006523 26.6594696 22.88024902 28.13953209 24.64144707 23.61288834 -0 0 0 3.519985729\n15 3 25.35006523 26.6594696 22.88024902 27.18217278 25.19717026 22.77392197 0 -0 0 2.346539609\n15 17 25.35006523 26.6594696 22.88024902 27.31746864 25.31768799 22.01227379 0 0 -0 2.534646908\n15 5 25.35006523 26.6594696 22.88024902 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.576848104\n0 1 27.39717674 23.88387299 24.94840813 26.23059464 25.80846977 23.28733063 -0 0 0 2.797170248\n0 6 27.39717674 23.88387299 24.94840813 25.22018623 25.08693314 24.90279579 0 -0 -0 2.48771293\n0 12 27.39717674 23.88387299 24.94840813 24.40045166 25.79019928 24.8589592 -0 -0 0 3.552807396\n0 2 27.39717674 23.88387299 24.94840813 28.13953209 24.64144707 23.61288834 -0 0 0 1.705468139\n0 3 27.39717674 23.88387299 24.94840813 27.18217278 25.19717026 22.77392197 0 -0 0 2.549384479\n0 16 27.39717674 23.88387299 24.94840813 29.03586197 24.04956055 23.62270164 0 -0 0 2.114294149\n0 17 27.39717674 23.88387299 24.94840813 27.31746864 25.31768799 22.01227379 0 0 -0 3.268495829\n0 5 27.39717674 23.88387299 24.94840813 25.90031242 24.14245033 25.36131287 -0 -0 -0 1.574152149\n0 7 27.39717674 23.88387299 24.94840813 26.01608467 22.63296127 26.45919991 0 -0 -0 2.398892646\n0 9 27.39717674 23.88387299 24.94840813 24.76228333 24.24667168 27.29500771 -0 0 0 3.546945135\n0 10 27.39717674 23.88387299 24.94840813 25.4359951 24.07610512 26.54936981 0 0 0 2.538949965\n0 14 27.39717674 23.88387299 24.94840813 27.6949501 23.03316879 25.11051369 -0 0 0 0.9157754565\n2 1 28.13953209 24.64144707 23.61288834 26.23059464 25.80846977 23.28733063 -0 0 0 2.260966994\n2 6 28.13953209 24.64144707 23.61288834 25.22018623 25.08693314 24.90279579 0 -0 -0 3.222560004\n2 15 28.13953209 24.64144707 23.61288834 25.35006523 26.6594696 22.88024902 0 0 -0 3.519985729\n2 0 28.13953209 24.64144707 23.61288834 27.39717674 23.88387299 24.94840813 -0 0 -0 1.705468139\n2 3 28.13953209 24.64144707 23.61288834 27.18217278 25.19717026 22.77392197 0 -0 0 1.388966351\n2 16 28.13953209 24.64144707 23.61288834 29.03586197 24.04956055 23.62270164 0 -0 0 1.074167312\n2 17 28.13953209 24.64144707 23.61288834 27.31746864 25.31768799 22.01227379 0 0 -0 1.922253838\n2 5 28.13953209 24.64144707 23.61288834 25.90031242 24.14245033 25.36131287 -0 -0 -0 2.884456608\n2 14 28.13953209 24.64144707 23.61288834 27.6949501 23.03316879 25.11051369 -0 0 0 2.242118593\n3 1 27.18217278 25.19717026 22.77392197 26.23059464 25.80846977 23.28733063 -0 0 0 1.242087257\n3 6 27.18217278 25.19717026 22.77392197 25.22018623 25.08693314 24.90279579 0 -0 -0 2.897179263\n3 12 27.18217278 25.19717026 22.77392197 24.40045166 25.79019928 24.8589592 -0 -0 0 3.526619489\n3 15 27.18217278 25.19717026 22.77392197 25.35006523 26.6594696 22.88024902 0 0 -0 2.346539609\n3 0 27.18217278 25.19717026 22.77392197 27.39717674 23.88387299 24.94840813 -0 0 -0 2.549384479\n3 2 27.18217278 25.19717026 22.77392197 28.13953209 24.64144707 23.61288834 -0 0 0 1.388966351\n3 16 27.18217278 25.19717026 22.77392197 29.03586197 24.04956055 23.62270164 0 -0 0 2.339571866\n3 17 27.18217278 25.19717026 22.77392197 27.31746864 25.31768799 22.01227379 0 0 -0 0.7829039108\n3 5 27.18217278 25.19717026 22.77392197 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.07411639\n3 14 27.18217278 25.19717026 22.77392197 27.6949501 23.03316879 25.11051369 -0 0 0 3.22575585\n16 1 29.03586197 24.04956055 23.62270164 26.23059464 25.80846977 23.28733063 -0 0 0 3.328027358\n16 0 29.03586197 24.04956055 23.62270164 27.39717674 23.88387299 24.94840813 -0 0 -0 2.114294149\n16 2 29.03586197 24.04956055 23.62270164 28.13953209 24.64144707 23.61288834 -0 0 0 1.074167312\n16 3 29.03586197 24.04956055 23.62270164 27.18217278 25.19717026 22.77392197 0 -0 0 2.339571866\n16 17 29.03586197 24.04956055 23.62270164 27.31746864 25.31768799 22.01227379 0 0 -0 2.674790672\n16 5 29.03586197 24.04956055 23.62270164 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.586512334\n16 14 29.03586197 24.04956055 23.62270164 27.6949501 23.03316879 25.11051369 -0 0 0 2.246037229\n17 1 27.31746864 25.31768799 22.01227379 26.23059464 25.80846977 23.28733063 -0 0 0 1.745834088\n17 6 27.31746864 25.31768799 22.01227379 25.22018623 25.08693314 24.90279579 0 -0 -0 3.578681555\n17 15 27.31746864 25.31768799 22.01227379 25.35006523 26.6594696 22.88024902 0 0 -0 2.534646908\n17 0 27.31746864 25.31768799 22.01227379 27.39717674 23.88387299 24.94840813 -0 0 -0 3.268495829\n17 2 27.31746864 25.31768799 22.01227379 28.13953209 24.64144707 23.61288834 -0 0 0 1.922253838\n17 3 27.31746864 25.31768799 22.01227379 27.18217278 25.19717026 22.77392197 0 -0 0 0.7829039108\n17 16 27.31746864 25.31768799 22.01227379 29.03586197 24.04956055 23.62270164 0 -0 0 2.674790672\n17 5 27.31746864 25.31768799 22.01227379 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.821725192\n17 14 27.31746864 25.31768799 22.01227379 27.6949501 23.03316879 25.11051369 -0 0 0 3.867895926\n4 8 22.18154716 26.00863647 25.38876724 22.67101669 25.33584976 23.32103157 -0 0 0 2.228843828\n4 11 22.18154716 26.00863647 25.38876724 22.82881737 26.01215553 24.37221336 -0 0 0 1.205134766\n4 6 22.18154716 26.00863647 25.38876724 25.22018623 25.08693314 24.90279579 0 -0 -0 3.212325784\n4 12 22.18154716 26.00863647 25.38876724 24.40045166 25.79019928 24.8589592 -0 -0 0 2.291712519\n4 18 22.18154716 26.00863647 25.38876724 22.66061401 27.56680107 25.77317238 0 -0 0 1.674858839\n4 19 22.18154716 26.00863647 25.38876724 20.97101974 26.44430733 25.64046288 -0 -0 0 1.310930153\n4 20 22.18154716 26.00863647 25.38876724 22.19336128 25.86196327 26.49230576 0 0 0 1.113306615\n4 9 22.18154716 26.00863647 25.38876724 24.76228333 24.24667168 27.29500771 -0 0 0 3.660392521\n4 10 22.18154716 26.00863647 25.38876724 25.4359951 24.07610512 26.54936981 0 0 0 3.958927734\n18 8 22.66061401 27.56680107 25.77317238 22.67101669 25.33584976 23.32103157 -0 0 0 3.31515312\n18 11 22.66061401 27.56680107 25.77317238 22.82881737 26.01215553 24.37221336 -0 0 0 2.099499377\n18 6 22.66061401 27.56680107 25.77317238 25.22018623 25.08693314 24.90279579 0 -0 -0 3.668612227\n18 12 22.66061401 27.56680107 25.77317238 24.40045166 25.79019928 24.8589592 -0 -0 0 2.649364527\n18 4 22.66061401 27.56680107 25.77317238 22.18154716 26.00863647 25.38876724 -0 -0 -0 1.674858839\n18 19 22.66061401 27.56680107 25.77317238 20.97101974 26.44430733 25.64046288 -0 -0 0 2.032815174\n18 20 22.66061401 27.56680107 25.77317238 22.19336128 25.86196327 26.49230576 0 0 0 1.908388476\n19 8 20.97101974 26.44430733 25.64046288 22.67101669 25.33584976 23.32103157 -0 0 0 3.081951266\n19 11 20.97101974 26.44430733 25.64046288 22.82881737 26.01215553 24.37221336 -0 0 0 2.290550976\n19 12 20.97101974 26.44430733 25.64046288 24.40045166 25.79019928 24.8589592 -0 -0 0 3.577654174\n19 4 20.97101974 26.44430733 25.64046288 22.18154716 26.00863647 25.38876724 -0 -0 -0 1.310930153\n19 18 20.97101974 26.44430733 25.64046288 22.66061401 27.56680107 25.77317238 0 -0 0 2.032815174\n19 20 20.97101974 26.44430733 25.64046288 22.19336128 25.86196327 26.49230576 0 0 0 1.599650189\n20 8 22.19336128 25.86196327 26.49230576 22.67101669 25.33584976 23.32103157 -0 0 0 3.249911686\n20 11 22.19336128 25.86196327 26.49230576 22.82881737 26.01215553 24.37221336 -0 0 0 2.218366576\n20 6 22.19336128 25.86196327 26.49230576 25.22018623 25.08693314 24.90279579 0 -0 -0 3.50555085\n20 12 22.19336128 25.86196327 26.49230576 24.40045166 25.79019928 24.8589592 -0 -0 0 2.746673301\n20 4 22.19336128 25.86196327 26.49230576 22.18154716 26.00863647 25.38876724 -0 -0 -0 1.113306615\n20 18 22.19336128 25.86196327 26.49230576 22.66061401 27.56680107 25.77317238 0 -0 0 1.908388476\n20 19 22.19336128 25.86196327 26.49230576 20.97101974 26.44430733 25.64046288 -0 -0 0 1.599650189\n20 9 22.19336128 25.86196327 26.49230576 24.76228333 24.24667168 27.29500771 -0 0 0 3.138926006\n20 10 22.19336128 25.86196327 26.49230576 25.4359951 24.07610512 26.54936981 0 0 0 3.702326179\n20 13 22.19336128 25.86196327 26.49230576 24.7089138 23.85678864 28.14433479 -0 -0 0 3.61634276\n5 11 25.90031242 24.14245033 25.36131287 22.82881737 26.01215553 24.37221336 -0 0 0 3.729369373\n5 1 25.90031242 24.14245033 25.36131287 26.23059464 25.80846977 23.28733063 -0 0 0 2.680691634\n5 6 25.90031242 24.14245033 25.36131287 25.22018623 25.08693314 24.90279579 0 -0 -0 1.25094174\n5 12 25.90031242 24.14245033 25.36131287 24.40045166 25.79019928 24.8589592 -0 -0 0 2.284079254\n5 15 25.90031242 24.14245033 25.36131287 25.35006523 26.6594696 22.88024902 0 0 -0 3.576848104\n5 0 25.90031242 24.14245033 25.36131287 27.39717674 23.88387299 24.94840813 -0 0 -0 1.574152149\n5 2 25.90031242 24.14245033 25.36131287 28.13953209 24.64144707 23.61288834 -0 0 0 2.884456608\n5 3 25.90031242 24.14245033 25.36131287 27.18217278 25.19717026 22.77392197 0 -0 0 3.07411639\n5 16 25.90031242 24.14245033 25.36131287 29.03586197 24.04956055 23.62270164 0 -0 0 3.586512334\n5 17 25.90031242 24.14245033 25.36131287 27.31746864 25.31768799 22.01227379 0 0 -0 3.821725192\n5 7 25.90031242 24.14245033 25.36131287 26.01608467 22.63296127 26.45919991 0 -0 -0 1.870111309\n5 9 25.90031242 24.14245033 25.36131287 24.76228333 24.24667168 27.29500771 -0 0 0 2.24614151\n5 10 25.90031242 24.14245033 25.36131287 25.4359951 24.07610512 26.54936981 0 0 0 1.277291551\n5 13 25.90031242 24.14245033 25.36131287 24.7089138 23.85678864 28.14433479 -0 -0 0 3.040764856\n5 14 25.90031242 24.14245033 25.36131287 27.6949501 23.03316879 25.11051369 -0 0 0 2.124647564\n7 6 26.01608467 22.63296127 26.45919991 25.22018623 25.08693314 24.90279579 0 -0 -0 3.012942608\n7 12 26.01608467 22.63296127 26.45919991 24.40045166 25.79019928 24.8589592 -0 -0 0 3.890911658\n7 0 26.01608467 22.63296127 26.45919991 27.39717674 23.88387299 24.94840813 -0 0 -0 2.398892646\n7 5 26.01608467 22.63296127 26.45919991 25.90031242 24.14245033 25.36131287 -0 -0 -0 1.870111309\n7 9 26.01608467 22.63296127 26.45919991 24.76228333 24.24667168 27.29500771 -0 0 0 2.207863566\n7 10 26.01608467 22.63296127 26.45919991 25.4359951 24.07610512 26.54936981 0 0 0 1.557980357\n7 13 26.01608467 22.63296127 26.45919991 24.7089138 23.85678864 28.14433479 -0 -0 0 2.458889251\n7 14 26.01608467 22.63296127 26.45919991 27.6949501 23.03316879 25.11051369 -0 0 0 2.19036605\n9 11 24.76228333 24.24667168 27.29500771 22.82881737 26.01215553 24.37221336 -0 0 0 3.924021847\n9 6 24.76228333 24.24667168 27.29500771 25.22018623 25.08693314 24.90279579 0 -0 -0 2.576507986\n9 12 24.76228333 24.24667168 27.29500771 24.40045166 25.79019928 24.8589592 -0 -0 0 2.906497787\n9 0 24.76228333 24.24667168 27.29500771 27.39717674 23.88387299 24.94840813 -0 0 -0 3.546945135\n9 4 24.76228333 24.24667168 27.29500771 22.18154716 26.00863647 25.38876724 -0 -0 -0 3.660392521\n9 20 24.76228333 24.24667168 27.29500771 22.19336128 25.86196327 26.49230576 0 0 0 3.138926006\n9 5 24.76228333 24.24667168 27.29500771 25.90031242 24.14245033 25.36131287 -0 -0 -0 2.24614151\n9 7 24.76228333 24.24667168 27.29500771 26.01608467 22.63296127 26.45919991 0 -0 -0 2.207863566\n9 10 24.76228333 24.24667168 27.29500771 25.4359951 24.07610512 26.54936981 0 0 0 1.019292177\n9 13 24.76228333 24.24667168 27.29500771 24.7089138 23.85678864 28.14433479 -0 -0 0 0.9360635039\n9 14 24.76228333 24.24667168 27.29500771 27.6949501 23.03316879 25.11051369 -0 0 0 3.852938582\n10 11 25.4359951 24.07610512 26.54936981 22.82881737 26.01215553 24.37221336 -0 0 0 3.909690071\n10 1 25.4359951 24.07610512 26.54936981 26.23059464 25.80846977 23.28733063 -0 0 0 3.778011851\n10 6 25.4359951 24.07610512 26.54936981 25.22018623 25.08693314 24.90279579 0 -0 -0 1.944107077\n10 12 25.4359951 24.07610512 26.54936981 24.40045166 25.79019928 24.8589592 -0 -0 0 2.62067849\n10 0 25.4359951 24.07610512 26.54936981 27.39717674 23.88387299 24.94840813 -0 0 -0 2.538949965\n10 4 25.4359951 24.07610512 26.54936981 22.18154716 26.00863647 25.38876724 -0 -0 -0 3.958927734\n10 20 25.4359951 24.07610512 26.54936981 22.19336128 25.86196327 26.49230576 0 0 0 3.702326179\n10 5 25.4359951 24.07610512 26.54936981 25.90031242 24.14245033 25.36131287 -0 -0 -0 1.277291551\n10 7 25.4359951 24.07610512 26.54936981 26.01608467 22.63296127 26.45919991 0 -0 -0 1.557980357\n10 9 25.4359951 24.07610512 26.54936981 24.76228333 24.24667168 27.29500771 -0 0 0 1.019292177\n10 13 25.4359951 24.07610512 26.54936981 24.7089138 23.85678864 28.14433479 -0 -0 0 1.7665394\n10 14 25.4359951 24.07610512 26.54936981 27.6949501 23.03316879 25.11051369 -0 0 0 2.874177876\n13 6 24.7089138 23.85678864 28.14433479 25.22018623 25.08693314 24.90279579 0 -0 -0 3.504602065\n13 12 24.7089138 23.85678864 28.14433479 24.40045166 25.79019928 24.8589592 -0 -0 0 3.824515791\n13 20 24.7089138 23.85678864 28.14433479 22.19336128 25.86196327 26.49230576 0 0 0 3.61634276\n13 5 24.7089138 23.85678864 28.14433479 25.90031242 24.14245033 25.36131287 -0 -0 -0 3.040764856\n13 7 24.7089138 23.85678864 28.14433479 26.01608467 22.63296127 26.45919991 0 -0 -0 2.458889251\n13 9 24.7089138 23.85678864 28.14433479 24.76228333 24.24667168 27.29500771 -0 0 0 0.9360635039\n13 10 24.7089138 23.85678864 28.14433479 25.4359951 24.07610512 26.54936981 0 0 0 1.7665394\n14 1 27.6949501 23.03316879 25.11051369 26.23059464 25.80846977 23.28733063 -0 0 0 3.629136039\n14 6 27.6949501 23.03316879 25.11051369 25.22018623 25.08693314 24.90279579 0 -0 -0 3.222660641\n14 0 27.6949501 23.03316879 25.11051369 27.39717674 23.88387299 24.94840813 -0 0 -0 0.9157754565\n14 2 27.6949501 23.03316879 25.11051369 28.13953209 24.64144707 23.61288834 -0 0 0 2.242118593\n14 3 27.6949501 23.03316879 25.11051369 27.18217278 25.19717026 22.77392197 0 -0 0 3.22575585\n14 16 27.6949501 23.03316879 25.11051369 29.03586197 24.04956055 23.62270164 0 -0 0 2.246037229\n14 17 27.6949501 23.03316879 25.11051369 27.31746864 25.31768799 22.01227379 0 0 -0 3.867895926\n14 5 27.6949501 23.03316879 25.11051369 25.90031242 24.14245033 25.36131287 -0 -0 -0 2.124647564\n14 7 27.6949501 23.03316879 25.11051369 26.01608467 22.63296127 26.45919991 0 -0 -0 2.19036605\n14 9 27.6949501 23.03316879 25.11051369 24.76228333 24.24667168 27.29500771 -0 0 0 3.852938582\n14 10 27.6949501 23.03316879 25.11051369 25.4359951 24.07610512 26.54936981 0 0 0 2.874177876\nend NEQUIP edges\nNequIP model input:\npos:\n 27.3972  23.8839  24.9484\n 26.2306  25.8085  23.2873\n 28.1395  24.6414  23.6129\n 27.1822  25.1972  22.7739\n 22.1815  26.0086  25.3888\n 25.9003  24.1425  25.3613\n 25.2202  25.0869  24.9028\n 26.0161  22.6330  26.4592\n 22.6710  25.3358  23.3210\n 24.7623  24.2467  27.2950\n 25.4360  24.0761  26.5494\n 22.8288  26.0122  24.3722\n 24.4005  25.7902  24.8590\n 24.7089  23.8568  28.1443\n 27.6950  23.0332  25.1105\n 25.3501  26.6595  22.8802\n 29.0359  24.0496  23.6227\n 27.3175  25.3177  22.0123\n 22.6606  27.5668  25.7732\n 20.9710  26.4443  25.6405\n 22.1934  25.8620  26.4923\n[ CPUFloatType{21,3} ]\nedge_index:\nColumns 1 to 20  8   8   8   8   8   8   8   8   8  11  11  11  11  11  11  11  11  11  11  11\n 11   1   6  12  15   4  18  19  20   8   1   6  12  15   4  18  19  20   5   9\n\nColumns 21 to 40 11   1   1   1   1   1   1   1   1   1   1   1   1   1   6   6   6   6   6   6\n 10   8  11   6  12  15   0   2   3  16  17   5  10  14   8  11   1  12  15   0\n\nColumns 41 to 60  6   6   6   6   6   6   6   6   6   6   6   6  12  12  12  12  12  12  12  12\n  2   3  17   4  18  20   5   7   9  10  13  14   8  11   1   6  15   0   3   4\n\nColumns 61 to 80 12  12  12  12  12  12  12  12  15  15  15  15  15  15  15  15  15   0   0   0\n 18  19  20   5   7   9  10  13   8  11   1   6  12   2   3  17   5   1   6  12\n\nColumns 81 to 100  0   0   0   0   0   0   0   0   0   2   2   2   2   2   2   2   2   2   3   3\n  2   3  16  17   5   7   9  10  14   1   6  15   0   3  16  17   5  14   1   6\n\nColumns 101 to 120  3   3   3   3   3   3   3   3  16  16  16  16  16  16  16  17  17  17  17  17\n 12  15   0   2  16  17   5  14   1   0   2   3  17   5  14   1   6  15   0   2\n\nColumns 121 to 140 17  17  17  17   4   4   4   4   4   4   4   4   4  18  18  18  18  18  18  18\n  3  16   5  14   8  11   6  12  18  19  20   9  10   8  11   6  12   4  19  20\n\nColumns 141 to 160 19  19  19  19  19  19  20  20  20  20  20  20  20  20  20  20   5   5   5   5\n  8  11  12   4  18  20   8  11   6  12   4  18  19   9  10  13  11   1   6  12\n\nColumns 161 to 180  5   5   5   5   5   5   5   5   5   5   5   7   7   7   7   7   7   7   7   9\n 15   0   2   3  16  17   7   9  10  13  14   6  12   0   5   9  10  13  14  11\n\nColumns 181 to 200  9   9   9   9   9   9   9   9   9   9  10  10  10  10  10  10  10  10  10  10\n  6  12   0   4  20   5   7  10  13  14  11   1   6  12   0   4  20   5   7   9\n\nColumns 201 to 220 10  10  13  13  13  13  13  13  13  14  14  14  14  14  14  14  14  14  14  14\n 13  14   6  12  20   5   7   9  10   1   6   0   2   3  16  17   5   7   9  10\n[ CPULongType{2,220} ]\nedge_cell_shifts:\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0 -0\n-0 -0 -0\n 0 -0  0\n-0 -0  0\n 0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0 -0\n-0 -0 -0\n 0 -0  0\n-0 -0  0\n 0  0  0\n-0 -0 -0\n-0  0  0\n 0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n 0  0  0\n-0  0  0\n-0  0  0\n-0  0  0\n-0  0  0\n-0 -0  0\n 0  0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n 0 -0  0\n 0  0  0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n-0 -0  0\n-0  0  0\n-0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n 0  0 -0\n-0  0 -0\n 0 -0  0\n-0 -0 -0\n 0 -0  0\n-0 -0  0\n 0  0  0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n-0 -0  0\n-0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0  0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0  0  0\n 0 -0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n 0  0 -0\n-0  0 -0\n 0 -0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n-0  0  0\n-0  0  0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n-0  0  0\n-0  0  0\n 0 -0 -0\n 0  0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0 -0  0\n-0 -0 -0\n-0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0 -0  0\n-0 -0  0\n 0  0  0\n-0  0  0\n 0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0 -0 -0\n-0 -0  0\n 0  0  0\n-0  0  0\n-0  0  0\n-0 -0  0\n-0 -0 -0\n 0 -0  0\n 0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0 -0 -0\n 0 -0  0\n-0 -0  0\n-0  0  0\n 0  0  0\n-0 -0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0 -0  0\n 0  0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n-0 -0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0  0 -0\n-0 -0 -0\n-0  0  0\n 0  0  0\n-0 -0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0  0 -0\n-0 -0 -0\n 0  0  0\n-0 -0 -0\n 0 -0 -0\n 0  0  0\n-0 -0  0\n-0  0  0\n-0  0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n-0  0 -0\n-0 -0 -0\n 0  0  0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n-0 -0  0\n-0  0  0\n 0 -0 -0\n-0 -0  0\n 0  0  0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n-0  0  0\n 0 -0 -0\n-0  0 -0\n-0  0  0\n 0 -0  0\n 0 -0  0\n 0  0 -0\n-0 -0 -0\n 0 -0 -0\n-0  0  0\n 0  0  0\n[ CPUFloatType{220,3} ]\ncell:\n 8.0748  0.0000  0.0000\n 0.0000  4.9438  0.0000\n 0.0000  0.0000  6.1421\n[ CPUFloatType{3,3} ]\natom_types:\n 1\n 1\n 1\n 1\n 1\n 1\n 1\n 2\n 2\n 2\n 1\n 1\n 2\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n[ CPULongType{21} ]\nNequIP model output:\nforces: -0.0203  0.1260 -0.0358\n 0.0492 -0.0436  0.0122\n-0.1084  0.0611 -0.0079\n-0.0198 -0.0184  0.1239\n 0.0735 -0.0123 -0.1309\n 0.0154 -0.0367  0.0179\n 0.1261 -0.0810 -0.0042\n-0.0552  0.1053  0.0258\n-0.0152 -0.0649 -0.0851\n 0.0214 -0.0919  0.0133\n 0.0919 -0.0217 -0.0841\n 0.0025  0.0736  0.1226\n-0.1461  0.1829 -0.2121\n-0.0178 -0.0896  0.2118\n-0.0074 -0.1492  0.0681\n 0.0038  0.0437 -0.0474\n 0.0734 -0.0099 -0.0616\n 0.0399  0.0061 -0.0619\n 0.0900  0.1398 -0.0320\n-0.1019 -0.0496  0.0467\n-0.0951 -0.0696  0.1204\n[ CPUFloatType{21,3} ]\ntotal_energy: 1e+05 *\n-4.0568\n[ CPUFloatType{1,1} ]\natomic_energy: -19318.2324\n-19318.2812\n-19318.2617\n-19318.2148\n-19318.2402\n-19318.2734\n-19318.2402\n-19316.2500\n-19316.2969\n-19316.0625\n-19318.2422\n-19318.2637\n-19316.1758\n-19318.6855\n-19318.5605\n-19318.5781\n-19318.5527\n-19318.5527\n-19318.5566\n-19318.5332\n-19318.5527\n[ CPUFloatType{21,1} ]\nPer MPI rank memory allocation (min/avg/max) = 2.66 | 2.66 | 2.66 Mbytes\nStep Time Temp PotEng c_totalatomicenergy TotEng Press S/CPU CPULeft \n       0            0            0   -405677.62   -405677.61   -405677.62            0            0            0 \nLoop time of 6.6e-07 on 1 procs for 0 steps with 21 atoms\n\n303.0% CPU use with 1 MPI tasks x 1 OpenMP threads\n\nMPI task timing breakdown:\nSection |  min time  |  avg time  |  max time  |%varavg| %total\n---------------------------------------------------------------\nPair    | 0          | 0          | 0          |   0.0 |  0.00\nNeigh   | 0          | 0          | 0          |   0.0 |  0.00\nComm    | 0          | 0          | 0          |   0.0 |  0.00\nOutput  | 0          | 0          | 0          |   0.0 |  0.00\nModify  | 0          | 0          | 0          |   0.0 |  0.00\nOther   |            | 6.6e-07    |            |       |100.00\n\nNlocal:             21 ave          21 max          21 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nNghost:              0 ave           0 max           0 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nNeighs:              0 ave           0 max           0 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\nFullNghs:          298 ave         298 max         298 min\nHistogram: 1 0 0 0 0 0 0 0 0 0\n\nTotal # of neighbors = 298\nAve neighs/atom = 14.190476\nNeighbor list builds = 0\nDangerous builds not checked\n-405677625000\n-405677607421.875\nTotal wall time: 0:00:00\n'
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> captured stderr >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Torch device: cpu
Loaded data: Batch(atomic_numbers=[315, 1], batch=[315], cell=[15, 3, 3], edge_cell_shift=[3330, 3], edge_index=[2, 3330], forces=[315, 3], pbc=[15, 3], pos=[315, 3], ptr=[16], total_energy=[15, 1])
Cached processed data to disk
Successfully loaded the data set of type ASEDataset(15)...
Replace string dataset_forces_rms to 30.426132202148438
Replace string dataset_per_atom_total_energy_mean to -19318.396484375
Atomic outputs are scaled by: [H, C, O: 30.426132], shifted by [H, C, O: -19318.396484].
Replace string dataset_forces_rms to 30.426132202148438
Initially outputs are globally scaled by: 30.426132202148438, total_energy are globally shifted by None.
Successfully built the network...
Number of weights: 288
! Starting training ...

validation
# Epoch batch         loss       loss_f        f_mae       f_rmse
      0     1        0.667        0.667         18.6         24.9
      0     2         1.27         1.27         26.4         34.3
      0     3         1.04         1.04         25.3           31
      0     4         1.24         1.24         24.5         33.9
      0     5        0.775        0.775         21.6         26.8

  Initialization     #    Epoch      wal       LR       loss_f         loss        f_mae       f_rmse
! Initial Validation          0    1.434     0.01            1            1         23.3         30.4
Wall time: 1.4345340659999692
! Best model        0    1.000

training
# Epoch batch         loss       loss_f        f_mae       f_rmse
      1     1         1.27         1.27         26.4         34.3
      1     2         1.04         1.04         25.3           31
      1     3         1.24         1.24         24.5         33.9
      1     4        0.668        0.668         18.6         24.9
      1     5        0.775        0.775         21.6         26.8

validation
# Epoch batch         loss       loss_f        f_mae       f_rmse
      1     1         1.44         1.44         27.7         36.6
      1     2        0.938        0.938         22.9         29.5
      1     3         1.19         1.19         24.3         33.2
      1     4        0.933        0.933         23.3         29.4
      1     5        0.786        0.786         19.5           27

  Train      #    Epoch      wal       LR       loss_f         loss        f_mae       f_rmse
! Train               1    1.845     0.01            1            1         23.3         30.4
! Validation          1    1.845     0.01         1.06         1.06         23.5         31.3
Wall time: 1.8455994129999453
! Stop training: max epochs
Wall time: 1.8495254800000112
INFO:root:Atomic outputs are scaled by: [H, C, O: 1.000000], shifted by [H, C, O: 0.000000].
INFO:root:Compiled & optimized model.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> traceback >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

deployed_model = '/tmp/tmpzj4d6876/deployed.pth'

    def test_repro(deployed_model):
        structure: ase.Atoms
        deployed_model: str
        deployed_model, structures, config = deployed_model
        num_types = len(config["chemical_symbols"])

        calc = NequIPCalculator.from_deployed_model(
            deployed_model,
            set_global_options=True,
            species_to_type_name={s: s for s in config["chemical_symbols"]},
        )

        newline = "\n"
        periodic = all(structures[0].pbc)
        PRECISION_CONST: float = 1e6
        lmp_in = textwrap.dedent(
            f"""
            units       metal
            atom_style  atomic
            newton off
            thermo 1

            # get a box defined before pair_coeff
            {'boundary p p p' if periodic else 'boundary s s s'}

            read_data structure.data

            pair_style  nequip
            # note that ASE outputs lammps types in alphabetical order of chemical symbols
            # since we use chem symbols in this test, just put the same
            pair_coeff  * * {deployed_model} {' '.join(sorted(set(config["chemical_symbols"])))}
    {newline.join('        mass  %i 1.0' % i for i in range(1, num_types + 1))}

            neighbor    1.0 bin
            neigh_modify    delay 0 every 1 check no

            fix     1 all nve

            timestep    0.001

            compute atomicenergies all pe/atom
            compute totalatomicenergy all reduce sum c_atomicenergies

            thermo_style custom step time temp pe c_totalatomicenergy etotal press spcpu cpuremain
            run 0
            print $({PRECISION_CONST} * pe) file pe.dat
            print $({PRECISION_CONST} * c_totalatomicenergy) file totalatomicenergy.dat
            write_dump all custom output.dump id type x y z fx fy fz c_atomicenergies modify format float %20.15g
            """
        )

        # for each model,structure pair
        # build a LAMMPS input using that structure
        with tempfile.TemporaryDirectory() as tmpdir:
            # save out the LAMMPS input:
            infile_path = tmpdir + "/test_repro.in"
            with open(infile_path, "w") as f:
                f.write(lmp_in)
            # environment variables
            env = dict(os.environ)
            env["NEQUIP_DEBUG"] = "true"
            # save out the structure
            for i, structure in enumerate(structures):
                ase.io.write(
                    tmpdir + f"/structure.data",
                    structure,
                    format="lammps-data",
                )

                # run LAMMPS
                retcode = subprocess.run(
                    [env.get("LAMMPS", "lmp"), "-in", infile_path],
                    cwd=tmpdir,
                    env=env,
                    stdout=subprocess.PIPE,
                    stderr=sys.stderr,
                )
                print(retcode.stdout)
                retcode.check_returncode()

                # load debug data:
                mi = None
                lammps_stdout = iter(retcode.stdout.decode("utf-8").splitlines())
                line = next(lammps_stdout, None)
                while line is not None:
                    if line.startswith("NEQUIP edges: i j xi[:] xj[:] cell_shift[:] rij"):
                        edges = []
                        while not line.startswith("end NEQUIP edges"):
                            line = next(lammps_stdout)
                            edges.append(line)
                        edges = np.loadtxt(StringIO("\n".join(edges[:-1])))
                        mi = edges
                    elif line.startswith("cell:"):
                        cell = np.loadtxt([next(lammps_stdout) for _ in range(3)])
                        if structure.cell.orthorhombic and any(structure.pbc):
                            # only check it if ortho, since if not it gets rotated
                            assert np.allclose(cell, structure.cell)
                        break
                    line = next(lammps_stdout)
                mi = {
                    "i": mi[:, 0:1].astype(int),
                    "j": mi[:, 1:2].astype(int),
                    "xi": mi[:, 2:5],
                    "xj": mi[:, 5:8],
                    "cell_shift": mi[:, 8:11].astype(int),
                    "rij": mi[:, 11:],
                }

                # load dumped data
                lammps_result = ase.io.read(
                    tmpdir + f"/output.dump", format="lammps-dump-text"
                )
                # first, check the model INPUTS
                structure_data = AtomicData.to_AtomicDataDict(
                    AtomicData.from_ase(structure, r_max=float(config["r_max"]))
                )
                structure_data = AtomicDataDict.with_edge_vectors(
                    structure_data, with_lengths=True
                )
                lammps_edge_tuples = [
                    tuple(e)
                    for e in np.hstack(
                        (
                            mi["i"],
                            mi["j"],
                            mi["cell_shift"],
                        )
                    )
                ]
                nq_edge_tuples = [
                    tuple(e.tolist())
                    for e in torch.hstack(
                        (
                            structure_data[AtomicDataDict.EDGE_INDEX_KEY].t(),
                            structure_data[AtomicDataDict.EDGE_CELL_SHIFT_KEY].to(
                                torch.long
                            ),
                        )
                    )
                ]
                # same num edges
                assert len(lammps_edge_tuples) == len(nq_edge_tuples)
                # edge i,j,shift tuples should be unique
                assert len(set(lammps_edge_tuples)) == len(mi["i"])
                assert len(set(nq_edge_tuples)) == len(nq_edge_tuples)
                # check same number of i,j edges across both
                assert Counter(e[:2] for e in lammps_edge_tuples) == Counter(
                    e[:2] for e in nq_edge_tuples
                )
                if structure.cell.orthorhombic:
                    # triclinic cells get modified for lammps
                    # check that positions are the same
                    # 1e-4 because that's the precision LAMMPS is printing in
                    assert np.allclose(
                        mi["xi"], structure.positions[mi["i"].reshape(-1)], atol=1e-6
                    )
                    assert np.allclose(
                        mi["xj"], structure.positions[mi["j"].reshape(-1)], atol=1e-6
                    )
                # check the ij,shift tuples
                # these are NOT changed by the rigid rotate+shift LAMMPS cell transform
                assert set(lammps_edge_tuples) == set(nq_edge_tuples)
                # finally, check for each ij whether the the "sets" of edge lengths match
                nq_ijr = np.core.records.fromarrays(
                    (
                        structure_data[AtomicDataDict.EDGE_INDEX_KEY][0],
                        structure_data[AtomicDataDict.EDGE_INDEX_KEY][1],
                        structure_data[AtomicDataDict.EDGE_LENGTH_KEY],
                    ),
                    names="i,j,rij",
                )
                # we can do "set" comparisons by sorting into groups by ij,
                # and then sorting the rij _within_ each ij pair---
                # this is what `order` does for us with the record array
                nq_ijr.sort(order=["i", "j", "rij"])
                lammps_ijr = np.core.records.fromarrays(
                    (
                        mi["i"].reshape(-1),
                        mi["j"].reshape(-1),
                        mi["rij"].reshape(-1),
                    ),
                    names="i,j,rij",
                )
                lammps_ijr.sort(order=["i", "j", "rij"])
                assert np.allclose(nq_ijr["rij"], lammps_ijr["rij"])

                # --- now check the OUTPUTS ---
                structure.calc = calc

                # check output atomic quantities
                assert np.allclose(
                    structure.get_forces(),
                    lammps_result.get_forces(),
                    atol=1e-6,
                )
>               assert np.allclose(
                    structure.get_potential_energies(),
                    lammps_result.arrays["c_atomicenergies"].reshape(-1),
                    atol=2e-7,
                )

tests/test_python_repro.py:299: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../.local/lib/python3.8/site-packages/ase/atoms.py:753: in get_potential_energies
    return self._calc.get_potential_energies(self)
../.local/lib/python3.8/site-packages/ase/calculators/abc.py:20: in get_potential_energies
    return self.get_property('energies', atoms)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nequip.ase.nequip_calculator.NequIPCalculator object at 0x7f37f5737f70>, name = 'energies'
atoms = Atoms(symbols='C7O3C2OH8', pbc=False, cell=[50.0, 50.0, 50.0], calculator=NequIPCalculator(...))
allow_calculation = True

    def get_property(self, name, atoms=None, allow_calculation=True):
        if name not in self.implemented_properties:
>           raise PropertyNotImplementedError('{} property not implemented'
                                              .format(name))
E           ase.calculators.calculator.PropertyNotImplementedError: energies property not implemented

../.local/lib/python3.8/site-packages/ase/calculators/calculator.py:724: PropertyNotImplementedError
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

>>>>>>>>>>>>>>>>>>>>>>>>>>>> PDB post_mortem (IO-capturing turned off) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> /home/aswanth/.local/lib/python3.8/site-packages/ase/calculators/calculator.py(724)get_property()
-> raise PropertyNotImplementedError('{} property not implemented'
Linux-cpp-lisp commented 2 years ago

I'm sorry @n0w0f, my mistake: the test — NOT the plugin itself — requires the updated calculator from the unreleased NequIP 0.5.4 (the develop branch).

That said, this output is enough to say that the failure with an error does not happen in LAMMPS in the test (the failure happens after the LAMMPS call)...

Do your NVT simulations still throw this error?

lucamurg00 commented 1 year ago

Is there any update to this problem. I am having similar issues and would like to know if solve

Linux-cpp-lisp commented 1 year ago

@lucamurg00 can you file a new issue with your exactly errors? Thanks.

lucamurg00 commented 1 year ago

I found my error. I was using real units in lammps instead of metal which matched training data. I had not realized the nequip does not do unit conversion. The system works now. Thanks

Linux-cpp-lisp commented 1 year ago

Glad to hear--- but that mistake should not give these error messages... what messages did you get @lucamurg00 ?