diff --git a/data/json/json2yaml.py b/data/json/json2yaml.py index 6c97771bec..3be85c1898 100644 --- a/data/json/json2yaml.py +++ b/data/json/json2yaml.py @@ -19,7 +19,7 @@ def _main(): ) # get all json files in dir - jsons = [p for p in Path.cwd().glob("*.json")] + jsons = list(Path.cwd().glob("*.json")) # use the newest as autosuggestion jsons.sort(key=lambda x: x.stat().st_mtime, reverse=True) jfile = jsons[0] diff --git a/deepmd/descriptor/se_a.py b/deepmd/descriptor/se_a.py index 69252a8fe6..44b11d055f 100644 --- a/deepmd/descriptor/se_a.py +++ b/deepmd/descriptor/se_a.py @@ -1005,10 +1005,7 @@ def _filter( outputs_size = [1] + self.filter_neuron outputs_size_2 = self.n_axis_neuron all_excluded = all( - [ - (type_input, type_i) in self.exclude_types - for type_i in range(self.ntypes) - ] + (type_input, type_i) in self.exclude_types for type_i in range(self.ntypes) ) if all_excluded: # all types are excluded so result and qmat should be zeros diff --git a/deepmd/fit/dipole.py b/deepmd/fit/dipole.py index a814242bd1..259ba48ae5 100644 --- a/deepmd/fit/dipole.py +++ b/deepmd/fit/dipole.py @@ -75,7 +75,7 @@ def __init__( self.resnet_dt = resnet_dt self.sel_type = sel_type if self.sel_type is None: - self.sel_type = [ii for ii in range(self.ntypes)] + self.sel_type = list(range(self.ntypes)) self.sel_mask = np.array( [ii in self.sel_type for ii in range(self.ntypes)], dtype=bool ) diff --git a/deepmd/fit/ener.py b/deepmd/fit/ener.py index f7ed408c15..cc0c460c00 100644 --- a/deepmd/fit/ener.py +++ b/deepmd/fit/ener.py @@ -283,11 +283,11 @@ def _compute_output_stats(self, all_stat, rcond=1e-3, mixed_type=False): # In this situation, we directly use these assigned energies instead of computing stats. # This will make the loss decrease quickly assigned_atom_ener = np.array( - list(ee for ee in self.atom_ener_v if ee is not None) - ) - assigned_ener_idx = list( - (ii for ii, ee in enumerate(self.atom_ener_v) if ee is not None) + [ee for ee in self.atom_ener_v if ee is not None] ) + assigned_ener_idx = [ + ii for ii, ee in enumerate(self.atom_ener_v) if ee is not None + ] # np.dot out size: nframe sys_ener -= np.dot(sys_tynatom[:, assigned_ener_idx], assigned_atom_ener) sys_tynatom[:, assigned_ener_idx] = 0.0 diff --git a/deepmd/fit/polar.py b/deepmd/fit/polar.py index fa64e573c8..d7284c3f6a 100644 --- a/deepmd/fit/polar.py +++ b/deepmd/fit/polar.py @@ -98,7 +98,7 @@ def __init__( self.fitting_activation_fn = get_activation_func(activation_function) self.fitting_precision = get_precision(precision) if self.sel_type is None: - self.sel_type = [ii for ii in range(self.ntypes)] + self.sel_type = list(range(self.ntypes)) self.sel_mask = np.array( [ii in self.sel_type for ii in range(self.ntypes)], dtype=bool ) diff --git a/deepmd/infer/deep_dos.py b/deepmd/infer/deep_dos.py index 2f6dc83d00..d69e1edf86 100644 --- a/deepmd/infer/deep_dos.py +++ b/deepmd/infer/deep_dos.py @@ -63,29 +63,27 @@ def __init__( # add these tensors on top of what is defined by DeepTensor Class # use this in favor of dict update to move attribute from class to # instance namespace - self.tensors = dict( - { - # descrpt attrs - "t_ntypes": "descrpt_attr/ntypes:0", - "t_rcut": "descrpt_attr/rcut:0", - # fitting attrs - "t_dfparam": "fitting_attr/dfparam:0", - "t_daparam": "fitting_attr/daparam:0", - "t_numb_dos": "fitting_attr/numb_dos:0", - # model attrs - "t_tmap": "model_attr/tmap:0", - # inputs - "t_coord": "t_coord:0", - "t_type": "t_type:0", - "t_natoms": "t_natoms:0", - "t_box": "t_box:0", - "t_mesh": "t_mesh:0", - # add output tensors - "t_dos": "o_dos:0", - "t_atom_dos": "o_atom_dos:0", - "t_descriptor": "o_descriptor:0", - }, - ) + self.tensors = { + # descrpt attrs + "t_ntypes": "descrpt_attr/ntypes:0", + "t_rcut": "descrpt_attr/rcut:0", + # fitting attrs + "t_dfparam": "fitting_attr/dfparam:0", + "t_daparam": "fitting_attr/daparam:0", + "t_numb_dos": "fitting_attr/numb_dos:0", + # model attrs + "t_tmap": "model_attr/tmap:0", + # inputs + "t_coord": "t_coord:0", + "t_type": "t_type:0", + "t_natoms": "t_natoms:0", + "t_box": "t_box:0", + "t_mesh": "t_mesh:0", + # add output tensors + "t_dos": "o_dos:0", + "t_atom_dos": "o_atom_dos:0", + "t_descriptor": "o_descriptor:0", + } DeepEval.__init__( self, model_file, diff --git a/deepmd/infer/deep_pot.py b/deepmd/infer/deep_pot.py index 10fed52497..004f29b76d 100644 --- a/deepmd/infer/deep_pot.py +++ b/deepmd/infer/deep_pot.py @@ -78,31 +78,29 @@ def __init__( # add these tensors on top of what is defined by DeepTensor Class # use this in favor of dict update to move attribute from class to # instance namespace - self.tensors = dict( - { - # descrpt attrs - "t_ntypes": "descrpt_attr/ntypes:0", - "t_rcut": "descrpt_attr/rcut:0", - # fitting attrs - "t_dfparam": "fitting_attr/dfparam:0", - "t_daparam": "fitting_attr/daparam:0", - # model attrs - "t_tmap": "model_attr/tmap:0", - # inputs - "t_coord": "t_coord:0", - "t_type": "t_type:0", - "t_natoms": "t_natoms:0", - "t_box": "t_box:0", - "t_mesh": "t_mesh:0", - # add output tensors - "t_energy": "o_energy:0", - "t_force": "o_force:0", - "t_virial": "o_virial:0", - "t_ae": "o_atom_energy:0", - "t_av": "o_atom_virial:0", - "t_descriptor": "o_descriptor:0", - }, - ) + self.tensors = { + # descrpt attrs + "t_ntypes": "descrpt_attr/ntypes:0", + "t_rcut": "descrpt_attr/rcut:0", + # fitting attrs + "t_dfparam": "fitting_attr/dfparam:0", + "t_daparam": "fitting_attr/daparam:0", + # model attrs + "t_tmap": "model_attr/tmap:0", + # inputs + "t_coord": "t_coord:0", + "t_type": "t_type:0", + "t_natoms": "t_natoms:0", + "t_box": "t_box:0", + "t_mesh": "t_mesh:0", + # add output tensors + "t_energy": "o_energy:0", + "t_force": "o_force:0", + "t_virial": "o_virial:0", + "t_ae": "o_atom_energy:0", + "t_av": "o_atom_virial:0", + "t_descriptor": "o_descriptor:0", + } DeepEval.__init__( self, model_file, diff --git a/deepmd/train/trainer.py b/deepmd/train/trainer.py index a191d267aa..fc1291a139 100644 --- a/deepmd/train/trainer.py +++ b/deepmd/train/trainer.py @@ -1200,4 +1200,4 @@ def get_data_dict(self, batch_list: List[np.ndarray]) -> Dict[str, np.ndarray]: Dict[str, np.ndarray] The dict of the loaded data. """ - return {kk: vv for kk, vv in zip(self.data_keys, batch_list)} + return dict(zip(self.data_keys, batch_list)) diff --git a/deepmd/utils/multi_init.py b/deepmd/utils/multi_init.py index d5496b47ea..e061013c56 100644 --- a/deepmd/utils/multi_init.py +++ b/deepmd/utils/multi_init.py @@ -66,9 +66,9 @@ def replace_model_params_with_frz_multi_model( # Change model configurations pretrained_fitting_keys = sorted( - list(pretrained_jdata["model"]["fitting_net_dict"].keys()) + pretrained_jdata["model"]["fitting_net_dict"].keys() ) - cur_fitting_keys = sorted(list(jdata["model"]["fitting_net_dict"].keys())) + cur_fitting_keys = sorted(jdata["model"]["fitting_net_dict"].keys()) newly_added_fittings = set(cur_fitting_keys) - set(pretrained_fitting_keys) reused_fittings = set(cur_fitting_keys) - newly_added_fittings log.info("Change the model configurations according to the pretrained one...") diff --git a/deepmd/utils/path.py b/deepmd/utils/path.py index 454eed3d2b..41db9ce7a9 100644 --- a/deepmd/utils/path.py +++ b/deepmd/utils/path.py @@ -173,7 +173,7 @@ def glob(self, pattern: str) -> List["DPPath"]: """ # currently DPOSPath will only derivative DPOSPath # TODO: discuss if we want to mix DPOSPath and DPH5Path? - return list([type(self)(p) for p in self.path.glob(pattern)]) + return [type(self)(p) for p in self.path.glob(pattern)] def rglob(self, pattern: str) -> List["DPPath"]: """This is like calling :meth:`DPPath.glob()` with `**/` added in front @@ -189,7 +189,7 @@ def rglob(self, pattern: str) -> List["DPPath"]: List[DPPath] list of paths """ - return list([type(self)(p) for p in self.path.rglob(pattern)]) + return [type(self)(p) for p in self.path.rglob(pattern)] def is_file(self) -> bool: """Check if self is file.""" @@ -290,12 +290,10 @@ def glob(self, pattern: str) -> List["DPPath"]: """ # got paths starts with current path first, which is faster subpaths = [ii for ii in self._keys if ii.startswith(self.name)] - return list( - [ - type(self)(f"{self.root_path}#{pp}") - for pp in globfilter(subpaths, self._connect_path(pattern)) - ] - ) + return [ + type(self)(f"{self.root_path}#{pp}") + for pp in globfilter(subpaths, self._connect_path(pattern)) + ] def rglob(self, pattern: str) -> List["DPPath"]: """This is like calling :meth:`DPPath.glob()` with `**/` added in front diff --git a/deepmd/utils/tabulate.py b/deepmd/utils/tabulate.py index aa842178f7..a31bc7b7f7 100644 --- a/deepmd/utils/tabulate.py +++ b/deepmd/utils/tabulate.py @@ -705,9 +705,7 @@ def _all_excluded(self, ii: int) -> bool: bool if type ii excluds all types """ - return all( - [(ii, type_i) in self.exclude_types for type_i in range(self.ntypes)] - ) + return all((ii, type_i) in self.exclude_types for type_i in range(self.ntypes)) def _get_table_size(self): table_size = 0 diff --git a/deepmd/utils/type_embed.py b/deepmd/utils/type_embed.py index a2c747c248..31bd63e405 100644 --- a/deepmd/utils/type_embed.py +++ b/deepmd/utils/type_embed.py @@ -128,7 +128,7 @@ def build( embedded_types The computational graph for embedded types """ - types = tf.convert_to_tensor([ii for ii in range(ntypes)], dtype=tf.int32) + types = tf.convert_to_tensor(list(range(ntypes)), dtype=tf.int32) ebd_type = tf.cast( tf.one_hot(tf.cast(types, dtype=tf.int32), int(ntypes)), self.filter_precision, diff --git a/pyproject.toml b/pyproject.toml index e00dde9f56..12d14d589f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -129,6 +129,7 @@ select = [ "F", # pyflakes "D", # pydocstyle "UP", # pyupgrade + "C4", # flake8-comprehensions ] ignore = [ "E501", # line too long diff --git a/source/install/build_tf.py b/source/install/build_tf.py index 7dfa8f4ffb..efa7efda8d 100755 --- a/source/install/build_tf.py +++ b/source/install/build_tf.py @@ -351,16 +351,14 @@ def include_patterns(*include_patterns): """ def _ignore_patterns(path, names): - keep = set( - name for pattern in include_patterns for name in filter(names, pattern) - ) - removed_dir = any([x.startswith("_") for x in path.split(os.path.sep)]) - ignore = set( + keep = {name for pattern in include_patterns for name in filter(names, pattern)} + removed_dir = any(x.startswith("_") for x in path.split(os.path.sep)) + ignore = { name for name in names if (name not in keep or removed_dir) and not os.path.isdir(os.path.join(path, name)) - ) + } return ignore return _ignore_patterns diff --git a/source/tests/test_argument_parser.py b/source/tests/test_argument_parser.py index e48a2da24b..21e75193fb 100644 --- a/source/tests/test_argument_parser.py +++ b/source/tests/test_argument_parser.py @@ -87,7 +87,7 @@ def attr_and_type_check( test_value : bool whether to test for value match """ - mapping = {**{"command": dict(type=str, value=command)}, **mapping} + mapping = {**{"command": {"type": str, "value": command}}, **mapping} for argument, test_data in mapping.items(): # get expected type @@ -206,8 +206,8 @@ def test_wrong_command(self): def test_parser_log(self): """Check if logging associated attributes are present in specified parsers.""" ARGS = { - "--log-level": dict(type=int, value="INFO", expected=20), - "--log-path": dict(type=(str, type(None)), value="LOGFILE"), + "--log-level": {"type": int, "value": "INFO", "expected": 20}, + "--log-path": {"type": (str, type(None)), "value": "LOGFILE"}, } for parser in ( @@ -220,7 +220,7 @@ def test_parser_log(self): "model-devi", ): if parser in ("train",): - args = {**{"INPUT": dict(type=str, value="INFILE")}, **ARGS} + args = {**{"INPUT": {"type": str, "value": "INFILE"}}, **ARGS} else: args = ARGS @@ -228,11 +228,11 @@ def test_parser_log(self): def test_parser_mpi(self): """Check if mpi-log attribute is present in specified parsers.""" - ARGS = {"--mpi-log": dict(type=str, value="master")} + ARGS = {"--mpi-log": {"type": str, "value": "master"}} for parser in ("train", "compress"): if parser in ("train"): - args = {**{"INPUT": dict(type=str, value="INFILE")}, **ARGS} + args = {**{"INPUT": {"type": str, "value": "INFILE"}}, **ARGS} else: args = ARGS self.run_test(command=parser, mapping=args) @@ -240,9 +240,9 @@ def test_parser_mpi(self): def test_parser_transfer(self): """Test transfer subparser.""" ARGS = { - "--raw-model": dict(type=str, value="INFILE.PB"), - "--old-model": dict(type=str, value="OUTFILE.PB"), - "--output": dict(type=str, value="OUTPUT"), + "--raw-model": {"type": str, "value": "INFILE.PB"}, + "--old-model": {"type": str, "value": "OUTFILE.PB"}, + "--output": {"type": str, "value": "OUTPUT"}, } self.run_test(command="transfer", mapping=ARGS) @@ -250,9 +250,9 @@ def test_parser_transfer(self): def test_parser_train_init_model(self): """Test train init-model subparser.""" ARGS = { - "INPUT": dict(type=str, value="INFILE"), - "--init-model": dict(type=(str, type(None)), value="SYSTEM_DIR"), - "--output": dict(type=str, value="OUTPUT"), + "INPUT": {"type": str, "value": "INFILE"}, + "--init-model": {"type": (str, type(None)), "value": "SYSTEM_DIR"}, + "--output": {"type": str, "value": "OUTPUT"}, } self.run_test(command="train", mapping=ARGS) @@ -260,9 +260,9 @@ def test_parser_train_init_model(self): def test_parser_train_restart(self): """Test train restart subparser.""" ARGS = { - "INPUT": dict(type=str, value="INFILE"), - "--restart": dict(type=(str, type(None)), value="RESTART"), - "--output": dict(type=str, value="OUTPUT"), + "INPUT": {"type": str, "value": "INFILE"}, + "--restart": {"type": (str, type(None)), "value": "RESTART"}, + "--output": {"type": str, "value": "OUTPUT"}, } self.run_test(command="train", mapping=ARGS) @@ -270,9 +270,9 @@ def test_parser_train_restart(self): def test_parser_train_init_frz_model(self): """Test train init-frz-model subparser.""" ARGS = { - "INPUT": dict(type=str, value="INFILE"), - "--init-frz-model": dict(type=(str, type(None)), value="INIT_FRZ_MODEL"), - "--output": dict(type=str, value="OUTPUT"), + "INPUT": {"type": str, "value": "INFILE"}, + "--init-frz-model": {"type": (str, type(None)), "value": "INIT_FRZ_MODEL"}, + "--output": {"type": str, "value": "OUTPUT"}, } self.run_test(command="train", mapping=ARGS) @@ -280,9 +280,9 @@ def test_parser_train_init_frz_model(self): def test_parser_train_finetune(self): """Test train finetune subparser.""" ARGS = { - "INPUT": dict(type=str, value="INFILE"), - "--finetune": dict(type=(str, type(None)), value="FINETUNE"), - "--output": dict(type=str, value="OUTPUT"), + "INPUT": {"type": str, "value": "INFILE"}, + "--finetune": {"type": (str, type(None)), "value": "FINETUNE"}, + "--output": {"type": str, "value": "OUTPUT"}, } self.run_test(command="train", mapping=ARGS) @@ -290,10 +290,10 @@ def test_parser_train_finetune(self): def test_parser_train_wrong_subcommand(self): """Test train with multiple subparsers.""" ARGS = { - "INPUT": dict(type=str, value="INFILE"), - "--init-model": dict(type=(str, type(None)), value="SYSTEM_DIR"), - "--restart": dict(type=(str, type(None)), value="RESTART"), - "--output": dict(type=str, value="OUTPUT"), + "INPUT": {"type": str, "value": "INFILE"}, + "--init-model": {"type": (str, type(None)), "value": "SYSTEM_DIR"}, + "--restart": {"type": (str, type(None)), "value": "RESTART"}, + "--output": {"type": str, "value": "OUTPUT"}, } with self.assertRaises(SystemExit): self.run_test(command="train", mapping=ARGS) @@ -301,9 +301,9 @@ def test_parser_train_wrong_subcommand(self): def test_parser_freeze(self): """Test freeze subparser.""" ARGS = { - "--checkpoint-folder": dict(type=str, value="FOLDER"), - "--output": dict(type=str, value="FROZEN.PB"), - "--node-names": dict(type=(str, type(None)), value="NODES"), + "--checkpoint-folder": {"type": str, "value": "FOLDER"}, + "--output": {"type": str, "value": "FROZEN.PB"}, + "--node-names": {"type": (str, type(None)), "value": "NODES"}, } self.run_test(command="freeze", mapping=ARGS) @@ -311,13 +311,13 @@ def test_parser_freeze(self): def test_parser_test(self): """Test test subparser.""" ARGS = { - "--model": dict(type=str, value="MODEL.PB"), - "--system": dict(type=str, value="SYSTEM_DIR"), - "--set-prefix": dict(type=str, value="SET_PREFIX"), - "--numb-test": dict(type=int, value=1), - "--rand-seed": dict(type=(int, type(None)), value=12321), - "--detail-file": dict(type=(str, type(None)), value="TARGET.FILE"), - "--atomic": dict(type=bool), + "--model": {"type": str, "value": "MODEL.PB"}, + "--system": {"type": str, "value": "SYSTEM_DIR"}, + "--set-prefix": {"type": str, "value": "SET_PREFIX"}, + "--numb-test": {"type": int, "value": 1}, + "--rand-seed": {"type": (int, type(None)), "value": 12321}, + "--detail-file": {"type": (str, type(None)), "value": "TARGET.FILE"}, + "--atomic": {"type": bool}, } self.run_test(command="test", mapping=ARGS) @@ -325,11 +325,11 @@ def test_parser_test(self): def test_parser_compress(self): """Test compress subparser.""" ARGS = { - "--output": dict(type=str, value="OUTFILE"), - "--extrapolate": dict(type=int, value=5), - "--step": dict(type=float, value=0.1), - "--frequency": dict(type=int, value=-1), - "--checkpoint-folder": dict(type=str, value="."), + "--output": {"type": str, "value": "OUTFILE"}, + "--extrapolate": {"type": int, "value": 5}, + "--step": {"type": float, "value": 0.1}, + "--frequency": {"type": int, "value": -1}, + "--checkpoint-folder": {"type": str, "value": "."}, } self.run_test(command="compress", mapping=ARGS) @@ -337,7 +337,7 @@ def test_parser_compress(self): def test_parser_doc(self): """Test doc subparser.""" ARGS = { - "--out-type": dict(type=str, value="rst"), + "--out-type": {"type": str, "value": "rst"}, } self.run_test(command="doc-train-input", mapping=ARGS) @@ -345,15 +345,15 @@ def test_parser_doc(self): def test_parser_model_devi(self): """Test model-devi subparser.""" ARGS = { - "--models": dict( - type=list, - value="GRAPH.000.pb GRAPH.001.pb", - expected=["GRAPH.000.pb", "GRAPH.001.pb"], - ), - "--system": dict(type=str, value="SYSTEM_DIR"), - "--set-prefix": dict(type=str, value="SET_PREFIX"), - "--output": dict(type=str, value="OUTFILE"), - "--frequency": dict(type=int, value=1), + "--models": { + "type": list, + "value": "GRAPH.000.pb GRAPH.001.pb", + "expected": ["GRAPH.000.pb", "GRAPH.001.pb"], + }, + "--system": {"type": str, "value": "SYSTEM_DIR"}, + "--set-prefix": {"type": str, "value": "SET_PREFIX"}, + "--output": {"type": str, "value": "OUTFILE"}, + "--frequency": {"type": int, "value": 1}, } self.run_test(command="model-devi", mapping=ARGS) diff --git a/source/tests/test_gen_stat_data.py b/source/tests/test_gen_stat_data.py index eac279a3a4..f87d755c22 100644 --- a/source/tests/test_gen_stat_data.py +++ b/source/tests/test_gen_stat_data.py @@ -28,7 +28,7 @@ def gen_sys(nframes, atom_types): data["forces"] = np.random.random([nframes, natoms, 3]) data["cells"] = np.random.random([nframes, 9]) data["energies"] = np.random.random([nframes, 1]) - types = list(set(list(atom_types))) + types = list(set(atom_types)) types.sort() data["atom_names"] = [] data["atom_numbs"] = []