def cluster_analysis(self):
        from xia2.Modules.MultiCrystal import multi_crystal_analysis

        labels = self._data_manager.experiments.identifiers()
        mca = multi_crystal_analysis(self._intensities_separate[0],
                                     labels=labels,
                                     prefix=None)

        self._cc_cluster_json = mca.to_plotly_json(mca.cc_matrix,
                                                   mca.cc_linkage_matrix,
                                                   labels=labels)
        self._cc_cluster_table = mca.as_table(mca.cc_clusters)

        self._cos_angle_cluster_json = mca.to_plotly_json(
            mca.cos_angle_matrix,
            mca.cos_angle_linkage_matrix,
            labels=labels,
            matrix_type="cos_angle",
        )
        self._cos_angle_cluster_table = mca.as_table(mca.cos_angle_clusters)

        self._cosym_graphs = OrderedDict()
        self._cosym_graphs.update(
            plot_rij_histogram(mca.cosym.target.rij_matrix,
                               key="cosym_rij_histogram_sg"))
        self._cosym_graphs.update(
            plot_coords(mca.cosym.coords,
                        mca.cosym.cluster_labels,
                        key="cosym_coordinates_sg"))

        self._cluster_analysis = mca
        return self._cluster_analysis
Exemple #2
0
 def make_plots(self):
     """Generate cosym cluster analysis plot data."""
     d = OrderedDict()
     d.update(plot_rij_histogram(self.data["rij_matrix"]))
     d.update(plot_coords(self.data["coordinates"], self.data["labels"]))
     graphs = {"cosym_graphs": d}
     return graphs
Exemple #3
0
def test_plot_coords():
    coords = flex.double([0, 1, 0, 1, 1, 0, 1, 0])
    coords.reshape(flex.grid((4, 2)))
    labels = flex.int([0, 0, 1, 1])
    d = plots.plot_coords(coords, labels=labels)
    assert "cosym_coordinates" in d
    assert set(d["cosym_coordinates"]) == {"layout", "data"}
    assert d["cosym_coordinates"]["data"][0]["x"] == [0.0, 0.0]
    assert d["cosym_coordinates"]["data"][0]["y"] == [1.0, 1.0]
    assert d["cosym_coordinates"]["data"][1]["x"] == [1.0, 1.0]
    assert d["cosym_coordinates"]["data"][1]["y"] == [0.0, 0.0]
Exemple #4
0
def test_plot_coords():
    coords = np.array([0.5, 0.5, 0, 1, 0, 1, 1, 0, 1, 0]).reshape(5, 2)
    labels = np.array([-1, 0, 0, 1, 1])
    d = plots.plot_coords(coords, labels=labels)
    assert "cosym_coordinates" in d
    assert set(d["cosym_coordinates"]) == {"data", "help", "layout"}
    assert (d["cosym_coordinates"]["data"][0]["marker"]["color"] ==
            "rgb(0.000000,0.000000,0.000000)")
    assert d["cosym_coordinates"]["data"][0]["x"] == [0.5]
    assert d["cosym_coordinates"]["data"][0]["y"] == [0.5]
    assert d["cosym_coordinates"]["data"][1]["x"] == [0.0, 0.0]
    assert d["cosym_coordinates"]["data"][1]["y"] == [1.0, 1.0]
    assert d["cosym_coordinates"]["data"][2]["x"] == [1.0, 1.0]
    assert d["cosym_coordinates"]["data"][2]["y"] == [0.0, 0.0]