CASMcode
CASMcode copied to clipboard
conflict mapping using "deformation_cost" does not work
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.
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.
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"}
.
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.