def save_model(self, model):
        """
        Save the dictionary to hdf5 file
        """
        se_model = jsonpickler.dump(model)
        print(se_model)
        h5file = h5py.File(self.model_file, 'w')

        def recursive_save_model(h5file_obj, dictionary):
            for model_key, model_value in dictionary.items():
                type_name = type(model_value).__name__
                try:
                    if type_name in ['ndarray']:
                        h5file_obj.create_dataset(model_key,
                                                  (model_value.shape),
                                                  data=model_value)
                    elif type_name in ['list']:
                        if len(model_value) > 0:
                            list_obj = all(
                                isinstance(x, dict) for x in model_value)
                            if list_obj is False:
                                h5file_obj.create_dataset(
                                    model_key, data=json.dumps(model_value))
                            else:
                                for index, model_item in enumerate(
                                        model_value):
                                    model_key_item = model_key + "/" + str(
                                        index)
                                    if model_item is not None:
                                        if model_key_item in h5file_obj:
                                            recursive_save_model(
                                                model_key_item, model_item)
                                        else:
                                            group = h5file_obj.create_group(
                                                model_key_item)
                                            recursive_save_model(
                                                group, model_item)
                                    else:
                                        h5file_obj.create_dataset(
                                            model_key_item,
                                            data=json.dumps(model_item))
                        else:
                            h5file_obj.create_dataset(model_key,
                                                      data=model_value)
                    elif type_name in [
                            'int', 'int32', 'int64', 'float', 'float32',
                            'float64', 'str', 'tuple', 'bool', 'None',
                            'NoneType'
                    ]:
                        if type_name in ['None', 'NoneType']:
                            h5file_obj.create_dataset(
                                model_key, data=json.dumps(model_value))
                        else:
                            h5file_obj.create_dataset(model_key,
                                                      data=model_value)
                    elif type_name in ['dict']:
                        if model_key in h5file_obj:
                            recursive_save_model(h5file_obj[model_key],
                                                 model_value)
                        else:
                            group = h5file_obj.create_group(model_key)
                            recursive_save_model(group, model_value)
                except Exception as exp:
                    print(model_key, exp, model_value)
                    continue

        recursive_save_model(h5file, se_model)
        print("--------------")
                    try:
                        key_value = h5file_obj.get(key).value
                        model_obj[key] = json.loads(key_value)
                    except Exception as exp:
                        if type(key_value).__name__ in ['ndarray']:
                            model_obj[key] = key_value.tolist()
                        else:
                            model_obj[key] = key_value
                        continue
            return model_obj
        reconstructed_model = recursive_load_model(h5file, model_obj)
        print(reconstructed_model)
        unloaded_model = jsonpickler.load(reconstructed_model)
        return unloaded_model'''


if __name__ == "__main__":

    if len(sys.argv) != 1:
        print("Usage: python todictrecurr.py")
        exit(1)
    start_time = time.time()
    serialize_clf = SerializeClass()
    X_test, y_test, classifier = serialize_clf.serialize_class()
    se_classifier = jsonpickler.dump(classifier)
    deserialize = DeserializeClass(serialize_clf.model_file)
    de_classifier = deserialize.load_model()
    #serialize_clf.compute_prediction_score(de_classifier, X_test, y_test)
    end_time = time.time()
    print("Program finished in %s seconds" % str(end_time - start_time))