CASMcode icon indicating copy to clipboard operation
CASMcode copied to clipboard

conflict mapping using "deformation_cost" does not work

Open damienlkj opened this issue 1 year ago • 3 comments

When updating completed calculations using casm update, I would like to deformation_cost instead of CASM's default minimum energy for conflict resolution. According to casm update --desc this is done by setting "data":{"method":"deformation_cost", "lattice_weight":0.5} in the settings.json file. However, when I tried it, this does not work. Below is the settings.json file I used for casm update -s settings.json

{
  "force" : true,
  "mapping" : {
    "cost_tol" : 0.000010000000,
    "fix_lattice" : false,
    "fix_volume" : false,
    "ideal" : false,
    "k_best" : 1,
    "lattice_weight" : 0.500000000000,
    "max_va_frac" : 0.500000000000,
    "max_vol_change" : 0.300000000000,
    "min_va_frac" : 0.000000000000,
    "primitive_only" : false,
    "robust" : false,
    "strict" : false
    },
  "data":{"method":"deformation_cost", "lattice_weight":0.5}
}

Could you please show me the right way to do this? casm format --update does not work as well.

damienlkj avatar Jun 14 '23 14:06 damienlkj

Sorry, it looks like the options documented for "data" are not actually read during ccasm update.

The default conflict resolution method should be able to be set manually by changing the "default_conflict_score":<method> parameter in the .casm/jsonDB/calctype.<calctype_name>/config_props.json file to "default_conflict_score": {"method":"deformation_cost"}.

There is also a way to change the conflict score on a per configuration basis, by setting "conflict_score":<configuration_name>:<method> in the config_props.json file.

It appears that the "lattice_cost" parameter for the deformation_cost scoring method is currently fixed at 0.5 and cannot be changed without a code fix.

bpuchala avatar Jun 26 '23 21:06 bpuchala

Thank you for your reply. I am now facing with some confusion on how the deformation_cost scoring method is calculated. Below is a snippet from update_config_conflict from the report after casm update:

  {
    "atomic_deformation_cost" : 0.000918336045,
    "best_score" : 0.000644336269,
    "energy" : -6.581730580000,
    "has_all_required_properties" : true,
    "has_any_required_properties" : true,
    "is_new_best" : false,
    "lattice_deformation_cost" : 0.001155592207,
    "properties_origin" : "/home/damien/cluster_expansion/BCC/training_data/SCEL3_1_3_1_0_0_0/1/calctype.default/properties.calc.json",
    "score" : 0.000681079883,
    "selected" : false,
    "to_configname" : "SCEL3_3_1_1_0_1_2/1"
  },
  {
    "atomic_deformation_cost" : 0.001153642224,
    "best_score" : 0.000644336269,
    "energy" : -6.584443260000,
    "has_all_required_properties" : true,
    "has_any_required_properties" : true,
    "is_new_best" : false,
    "lattice_deformation_cost" : 0.001662948179,
    "properties_origin" : "/home/damien/cluster_expansion/BCC/training_data/SCEL3_3_1_1_0_1_2/1/calctype.default/properties.calc.json",
    "score" : 0.000644336270,
    "selected" : false,
    "to_configname" : "SCEL3_3_1_1_0_1_2/1"
  },

Shouldn't the deformation_cost be the average of atomic_deformation_cost and lattice_deformation_cost (if w=0.5)? This seems to not be reflected in the score. Since the top structure has both a lower atomic_deformation_cost and lattice_deformation_cost than the bottom, I would like the top structure to be used instead of the bottom, however it is not allowing me to do so even after changing "default_conflict_score": {"method":"deformation_cost"}.

damienlkj avatar Jul 01 '23 03:07 damienlkj

Shouldn't the deformation_cost be the average of atomic_deformation_cost and lattice_deformation_cost (if w=0.5)? This seems to not be reflected in the score. Since the top structure has both a lower atomic_deformation_cost and lattice_deformation_cost than the bottom, I would like the top structure to be used instead of the bottom, however it is not allowing me to do so even after changing "default_conflict_score": {"method":"deformation_cost"}.

The lattice weight was always set to -1, which would give a score of 2*atomic_deformation_cost - lattice_deformation_cost. I have a potential fix in a new pull request if you still want to try this kind of mapping @damienlkj.

xivh avatar Sep 09 '23 22:09 xivh