Ejemplo n.º 1
0
    def get_clusters(self):
        clusters = []

        with open(self.filename) as file:
            data = json.load(file)
            if data["clusters"]:
                clusters_json = data["clusters"]

                for cluster_json in clusters_json:
                    cluster = Cluster()
                    cluster.set_dimensions(self.get_dimensions())

                    if cluster_json["type"]:
                        type_found = False
                        for distribution in Distribution:
                            if distribution.name == cluster_json["type"]:
                                cluster.set_distribution(Distribution[distribution.name])
                                type_found = True
                        if not type_found:
                            print("Couldn't map distribution type. Defaulting to 'gaussian'")
                    else:
                        print("Couldn't find 'type' element for cluster")

                    if cluster_json["cardinality"]:
                        cardinality = int(cluster_json["cardinality"])
                        if 0 < cardinality <= 10:
                            cluster.set_cardinality(cardinality)
                        else:
                            print("Invalid cardinality. Has to be within 1 to 10. Defaulting to 5.")
                    else:
                        print("Couldn't find 'cardinality' element for cluster")

                    if cluster_json["density"]:
                        density = int(cluster_json["density"])
                        if 0 < density <= 10:
                            cluster.set_density(density)
                        else:
                            print("Invalid density. Has to be within 1 to 10. Defaulting to 5.")
                    else:
                        print("Couldn't find 'density' element for cluster")

                    clusters.append(cluster)
            else:
                print("Couldn't find 'clusters' element in input file")

        return clusters