code: def from_dict(cls, d):
          
          if d["normalized_angle_distance_weight"] is not None:
              nad_w = NormalizedAngleDistanceNbSetWeight.from_dict(d["normalized_angle_distance_weight"])
          else:
              nad_w = None
          return cls(additional_condition=d["additional_condition"],
                     symmetry_measure_type=d["symmetry_measure_type"],
                     dist_ang_area_weight=DistanceAngleAreaNbSetWeight.from_dict(d["dist_ang_area_weight"])
                     if d["dist_ang_area_weight"] is not None else None,
                     self_csm_weight=SelfCSMNbSetWeight.from_dict(d["self_csm_weight"])
                     if d["self_csm_weight"] is not None else None,
                     delta_csm_weight=DeltaCSMNbSetWeight.from_dict(d["delta_csm_weight"])
                     if d["delta_csm_weight"] is not None else None,
                     cn_bias_weight=CNBiasNbSetWeight.from_dict(d["cn_bias_weight"])
                     if d["cn_bias_weight"] is not None else None,
                     angle_weight=AngleNbSetWeight.from_dict(d["angle_weight"])
                     if d["angle_weight"] is not None else None,
                     normalized_angle_distance_weight=nad_w,
                     ce_estimator=d["ce_estimator"])
docs: Reconstructs the MultiWeightsChemenvStrategy object from a dict representation of the
          MultipleAbundanceChemenvStrategy object created using the as_dict method.
          :param d: dict representation of the MultiWeightsChemenvStrategy object
          :return: MultiWeightsChemenvStrategy object