def convert_per_cluster_data(clusters):
    per_cluster_data_output = {"distributions": [], "country_names": []}
    per_cluster_data_output_interp = {"distributions": [], "country_names": []}

    for _, cluster in clusters.items():
        display_name = cluster['display_name']
        build_name = cluster['build_name']

        distribution = []
        with open(os.path.join(cluster_tables_path, f"{build_name}_data.json"),
                  "r") as f:
            json_input = json.load(f)

            for (country, cluster_data) in json_input.items():
                per_cluster_data_output["country_names"] = \
                    sorted(list(set([country] + per_cluster_data_output["country_names"])))
                cluster_data_interp = interpolate_per_cluster_data(
                    cluster_data)
                update_per_cluster_distribution(cluster_data_interp, country,
                                                distribution)

        per_cluster_data_output["distributions"].append({
            'cluster':
            display_name,
            'distribution':
            distribution
        })

    return per_cluster_data_output, per_cluster_data_output_interp
예제 #2
0
def convert_per_cluster_data(clusters):
    per_cluster_data_output = {"distributions": [], "country_names": []}
    per_cluster_data_output_interp = {"distributions": [], "country_names": []}

    for _, cluster in clusters.items():
        if cluster["type"] == "do_not_display":
            continue

        display_name = cluster["display_name"]
        build_name = cluster["build_name"]

        distribution = []
        with open(os.path.join(cluster_tables_path, f"{build_name}_data.json"),
                  "r") as f:
            json_input = json.load(f)

            for (country, cluster_data) in json_input.items():
                per_cluster_data_output["country_names"] = sorted(
                    list(
                        set([country] +
                            per_cluster_data_output["country_names"])))
                cluster_data_interp = interpolate_per_cluster_data(
                    cluster_data)
                update_per_cluster_distribution(cluster_data_interp, country,
                                                distribution)

        distribution.sort(key=lambda d: d['week'])
        per_cluster_data_output["distributions"].append({
            "cluster":
            display_name,
            "distribution":
            distribution
        })

    return per_cluster_data_output, per_cluster_data_output_interp
    with open(os.path.join(output_path, "perCountryData.json"), "w") as fh:
        json.dump(per_country_data_output, fh, indent=2, sort_keys=True)

    params = {
        "min_date": min_date,
        "max_date": max_date,
    }
    with open(os.path.join(output_path, "params.json"), "w") as fh:
        json.dump(params, fh, indent=2, sort_keys=True)

    per_cluster_data_output, per_cluster_data_output_interp = convert_per_cluster_data(
        clusters)
    with open(os.path.join(output_path, "perClusterData.json"), "w") as fh:
        json.dump(per_cluster_data_output, fh, indent=2, sort_keys=True)

    clusters = [cluster for _, cluster in clusters.items()]
    with open(os.path.join(output_path, "clusters.json"), "w") as fh:
        json.dump({'clusters': clusters}, fh, indent=2, sort_keys=True)

    mutation_comparison_output = convert_mutation_comparison(
        mutation_comparison)
    with open(os.path.join(output_path, "mutationComparison.json"), "w") as fh:
        json.dump(mutation_comparison_output, fh, indent=2, sort_keys=True)

    with open(os.path.join(output_path, "countryStyles.json"), "w") as fh:
        json.dump(country_styles_all, fh, indent=2, sort_keys=True)

    copyfile(
        os.path.join(cluster_tables_path, 'perVariant_countries_toPlot.json'),
        os.path.join(output_path, "countriesToPlot.json"))
예제 #4
0
def filter_clusters(clusters):
    return {
        k: cluster
        for k, cluster in clusters.items() if should_include(cluster)
    }