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
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
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]
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]