From 4fb202b4120817c765c7aaf12f38cd228dcecc8d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 23 Aug 2024 09:58:24 -0400 Subject: [PATCH 001/177] fix(plots): use vector field basis in shared time uncertainty plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index a00bb9086..a20f1ff87 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -91,7 +91,8 @@ def plot_shared_time_uncertainty( ax[0].hist(cell_time_std / cell_time_mean, bins=100) ax[0].set_title("histogram of shared time CoV") ax_st = scv.pl.scatter( - adata, + adata=adata, + basis=vector_field_basis, c="shared_time_mean", ax=ax[1], show=False, @@ -100,7 +101,8 @@ def plot_shared_time_uncertainty( colorbar=True, ) ax_cv = scv.pl.scatter( - adata, + adata=adata, + basis=vector_field_basis, c="shared_time_std", ax=ax[2], show=False, From 81aef5d5a40f27e96eae40176a882cb340b61294 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 23 Aug 2024 16:32:59 -0400 Subject: [PATCH 002/177] fix(utils): add array-based type class aliases Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index be041ff2d..f182c7737 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -21,9 +21,10 @@ import yaml from anndata._core.anndata import AnnData from beartype import beartype -from beartype.typing import Callable, Dict, List, Tuple +from beartype.typing import Callable, Dict, List, Tuple, TypeAlias from einops import EinopsError, reduce from jaxtyping import ArrayLike +from scipy import sparse from scvi.data import synthetic_iid from pyrovelocity.io.compressedpickle import CompressedPickle @@ -57,6 +58,10 @@ logger = configure_logging(__name__) +SPMatrix: TypeAlias = sparse.spmatrix +NDArray: TypeAlias = np.ndarray +NDArrayOrSPMatrix: TypeAlias = NDArray | SPMatrix + def mae(pred_counts, true_counts): """ From 9292cdd989afe635623c2ab3fb75468c0af558b8 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 23 Aug 2024 16:33:34 -0400 Subject: [PATCH 003/177] fix(utils): remove unused comments Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index f182c7737..c80403f7a 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -30,13 +30,6 @@ from pyrovelocity.io.compressedpickle import CompressedPickle from pyrovelocity.logging import configure_logging -# import torch -# from scipy.sparse import issparse -# from sklearn.decomposition import PCA -# from torch.nn.functional import relu -# from pyrovelocity.models._transcription_dynamics import inv -# from pyrovelocity.models import mrna_dynamics - __all__ = [ "anndata_counts_to_df", "attributes", From 04b8e7d3ac6967f125feb05ab0fd35f6b63845b7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 23 Aug 2024 16:34:52 -0400 Subject: [PATCH 004/177] feat(utils): include size and category information in data string representation Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 57 +++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index c80403f7a..6d92d8098 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -308,6 +308,7 @@ def print_anndata( @beartype def anndata_string( anndata_obj: AnnData, + max_categories: int = 10, ) -> str: """ Print a formatted representation of an AnnData object. @@ -328,21 +329,61 @@ def anndata_string( >>> import pandas as pd >>> np.random.seed(42) >>> X = np.random.randn(10, 5) - >>> obs = pd.DataFrame({"clusters_coarse": np.random.randint(0, 2, 10), - ... "clusters": np.random.randint(0, 2, 10), - ... "S_score": np.random.rand(10), - ... "G2M_score": np.random.rand(10)}) + >>> obs = pd.DataFrame( + ... {"clusters_coarse": np.random.randint(0, 3, 10), + ... "clusters": pd.Categorical(["A", "B", "A", "C", "B", "C", "A", "B", "C", "A"]), + ... "condition": pd.Categorical(["control", "treatment", "control", "treatment", "control", + ... "treatment", "control", "treatment", "control", "treatment"]), + ... "S_score": np.random.rand(10), + ... "G2M_score": np.random.rand(10) + ... }) >>> var = pd.DataFrame({"gene_name": [f"gene_{i}" for i in range(5)]}) >>> adata = AnnData(X, obs=obs, var=var) + >>> adata.uns['small_array'] = np.array([1, 2, 3]) + >>> adata.uns['sparse_matrix'] = sparse.csr_matrix(([1, 2, 3], ([0, 1, 2], [1, 2, 0])), shape=(3, 3)) + >>> adata.uns['dictionary'] = {'key1': 'value1', 'key2': 'value2'} + >>> adata.uns['dataframe'] = pd.DataFrame({'A': np.random.rand(10), 'B': np.random.rand(10)}) >>> print_anndata(adata) # doctest: +NORMALIZE_WHITESPACE """ assert isinstance( anndata_obj, AnnData ), "Input object must be of type AnnData." - def format_elements(elements): - formatted = "\n".join([f" {elem}," for elem in elements]) - return formatted + @beartype + def format_elements(elements, prop_name: str) -> str: + formatted = [] + for elem in elements: + elem_str = f" {elem}," + if prop_name in ["obs", "var"]: + df = getattr(anndata_obj, prop_name) + elem_type = df[elem].dtype + elem_str += f" {elem_type}," + if pd.api.types.is_categorical_dtype(df[elem]): + num_categories = len(df[elem].cat.categories) + elem_str += f" {num_categories}," + if num_categories < max_categories: + categories = ", ".join( + map(str, df[elem].cat.categories) + ) + elem_str += f" [{categories}]," + else: + num_distinct = df[elem].nunique() + elem_str += f" {num_distinct}," + elif prop_name in ["uns", "obsm", "varm", "layers", "obsp", "varp"]: + obj = getattr(anndata_obj, prop_name)[elem] + if isinstance(obj, NDArrayOrSPMatrix): + obj_type = type(obj).__name__ + obj_shape = " x ".join(map(str, obj.shape)) + elem_str += f" {obj_type}, {obj_shape}," + elif isinstance(obj, pd.DataFrame): + obj_type = type(obj).__name__ + obj_shape = " x ".join(map(str, obj.shape)) + elem_str += f" {obj_type}, {obj_shape}," + else: + obj_type = type(obj).__name__ + elem_str += f" {obj_type}," + formatted.append(elem_str) + return "\n".join(formatted) anndata_string = [ f"\nAnnData object with n_obs × n_vars = {anndata_obj.n_obs} × {anndata_obj.n_vars}" @@ -362,7 +403,7 @@ def format_elements(elements): for prop_name, elements in properties.items(): if len(elements) > 0: anndata_string.append( - f" {prop_name}:\n{format_elements(elements)}" + f" {prop_name}:\n{format_elements(elements, prop_name)}" ) return "\n".join(anndata_string) From ee3ae34fd5bd8d00d80a6fb1ce25450abba3fa34 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 01:20:24 -0400 Subject: [PATCH 005/177] feat(plots): draft lineage fate correlation plot Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 258 ++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 src/pyrovelocity/plots/_lineage_fate_correlation.py diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py new file mode 100644 index 000000000..c1e368534 --- /dev/null +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -0,0 +1,258 @@ +from pathlib import Path + +import numpy as np +import pandas as pd +import scvelo as scv +import seaborn as sns +from anndata import AnnData +from beartype.typing import Dict +from matplotlib.axes import Axes +from matplotlib.figure import Figure +from scipy.spatial import distance +from scipy.stats import spearmanr + +from pyrovelocity.io.compressedpickle import CompressedPickle +from pyrovelocity.logging import configure_logging +from pyrovelocity.plots import ( + align_trajectory_diff, + get_clone_trajectory, + get_posterior_sample_angle_uncertainty, + plot_posterior_time, + plot_vector_field_uncertain, +) + +__all__ = ["plot_lineage_fate_correlation"] + +logger = configure_logging(__name__) + + +def plot_lineage_fate_correlation( + posterior_samples_path: str | Path, + adata_pyrovelocity: str | Path, + adata_scvelo: str | Path, + adata_cospar: AnnData, + ax: Axes, + fig: Figure, + state_color_dict: Dict, + ylabel: str = "Unipotent Monocyte lineage", + dotsize: int = 3, + scale: float = 0.35, + arrow: float = 3.5, +): + posterior_samples = CompressedPickle.load(posterior_samples_path) + embed_mean = posterior_samples["vector_field_posterior_mean"] + + adata_scvelo = scv.read(adata_scvelo) + adata_pyrovelocity = scv.read(adata_pyrovelocity) + adata_input_clone = get_clone_trajectory(adata_scvelo) + adata_input_clone.obsm["clone_vector_emb"][ + np.isnan(adata_input_clone.obsm["clone_vector_emb"]) + ] = 0 + density = 0.35 + diff = align_trajectory_diff( + [adata_input_clone, adata_scvelo, adata_scvelo], + [ + adata_input_clone.obsm["clone_vector_emb"], + adata_scvelo.obsm["velocity_emb"], + embed_mean, + ], + embed="emb", + density=density, + ) + scvelo_cos = pd.DataFrame(diff).apply( + lambda x: 1 - distance.cosine(x[2:4], x[4:6]), axis=1 + ) + pyro_cos = pd.DataFrame(diff).apply( + lambda x: 1 - distance.cosine(x[2:4], x[6:8]), axis=1 + ) + scvelo_cos_mean = scvelo_cos.mean() + pyro_cos_mean = pyro_cos.mean() + print(scvelo_cos_mean, pyro_cos_mean) + + res = pd.DataFrame( + { + "X": adata_pyrovelocity.obsm["X_emb"][:, 0], + "Y": adata_pyrovelocity.obsm["X_emb"][:, 1], + "celltype": adata_pyrovelocity.obs.state_info, + } + ) + sns.scatterplot( + data=res, + x="X", + y="Y", + hue="celltype", + palette=state_color_dict, + ax=ax[0], + s=dotsize, + alpha=0.90, + linewidth=0, + legend=False, + ) + ax[0].set_title("Cell types", fontsize=7) + ax[0].set_ylabel(ylabel, fontsize=7) + scv.pl.velocity_embedding_grid( + adata_input_clone, + scale=scale, + autoscale=True, + show=False, + s=dotsize, + density=density, + arrow_size=arrow, + linewidth=1, + vkey="clone_vector", + basis="emb", + ax=ax[1], + title="Clonal progression", + color="gray", + arrow_color="black", + fontsize=7, + ) + + scv.pl.velocity_embedding_grid( + adata_scvelo, + show=False, + s=dotsize, + density=density, + scale=scale, + autoscale=True, + arrow_size=arrow, + linewidth=1, + basis="emb", + ax=ax[2], + title="Scvelo", + fontsize=7, + color="gray", + arrow_color="black", + ) + ax[2].set_title( + "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=7 + ) + cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() + cell_time_std = posterior_samples["cell_time"].std(0).flatten() + cell_time_cov = cell_time_std / cell_time_mean + print(cell_time_cov) + + plot_vector_field_uncertain( + adata_pyrovelocity, + embed_mean, + cell_time_cov, + ax=ax[3], + cbar=True, + fig=fig, + basis="emb", + scale=scale, + p_mass_min=1, + density=density, + arrow_size=arrow, + only_grid=False, + autoscale=True, + uncertain_measure="shared time", + cmap="winter", + ) + ax[3].set_title( + "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + ) + + cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] + cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) + cell_magnitudes_std = cell_magnitudes.std(axis=-2) + cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean + print(cell_magnitudes_cov) + + plot_vector_field_uncertain( + adata_pyrovelocity, + embed_mean, + cell_magnitudes_cov, + ax=ax[4], + cbar=True, + fig=fig, + basis="emb", + scale=scale, + p_mass_min=1, + density=density, + arrow_size=arrow, + only_grid=False, + autoscale=True, + uncertain_measure="base magnitude", + cmap="summer", + ) + ax[4].set_title( + "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + ) + + pca_angles = posterior_samples["pca_embeds_angle"] + pca_cell_angles = pca_angles / np.pi * 180 + pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) + print(pca_angles_std) + + plot_vector_field_uncertain( + adata_pyrovelocity, + embed_mean, + pca_angles_std, + ax=ax[5], + cbar=True, + fig=fig, + basis="emb", + scale=scale, + p_mass_min=1, + density=density, + arrow_size=arrow, + only_grid=False, + autoscale=True, + uncertain_measure="base magnitude", + cmap="inferno", + cmax=360, + ) + ax[5].set_title( + "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + ) + + scv.pl.scatter( + adata_cospar[adata_pyrovelocity.obs_names.str.replace(r"-\d", ""), :], + basis="emb", + fontsize=7, + color="fate_potency", + cmap="inferno_r", + show=False, + ax=ax[6], + s=dotsize, + ) + ax[6].set_title("Clonal fate potency", fontsize=7) + gold = adata_cospar[ + adata_pyrovelocity.obs_names.str.replace(r"-\d", ""), : + ].obs.fate_potency + select = ~np.isnan(gold) + scv.pl.scatter( + adata_scvelo, + c="latent_time", + basis="emb", + s=dotsize, + cmap="inferno", + ax=ax[7], + show=False, + fontsize=7, + ) + ax[7].set_title( + "Scvelo latent time\ncorrelation: %.2f" + % spearmanr(-gold[select], adata_scvelo.obs.latent_time.values[select])[ + 0 + ], + fontsize=7, + ) + plot_posterior_time( + posterior_samples, + adata_pyrovelocity, + ax=ax[8], + basis="emb", + fig=fig, + addition=False, + position="right", + ) + ax[8].set_title( + "Pyro-Velocity shared time\ncorrelation: %.2f" + % spearmanr( + -gold[select], + posterior_samples["cell_time"].mean(0).flatten()[select], + )[0], + fontsize=7, + ) From 8fc0d94f2fecb9112a7d020b906a1c09dd82a22e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 11:51:37 -0400 Subject: [PATCH 006/177] refactor(plots): rename vector field uncertainty plot function Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 14 ++++++++------ src/pyrovelocity/plots/_vector_fields.py | 11 +++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index c1e368534..09918670d 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -13,13 +13,15 @@ from pyrovelocity.io.compressedpickle import CompressedPickle from pyrovelocity.logging import configure_logging -from pyrovelocity.plots import ( +from pyrovelocity.plots._time import plot_posterior_time +from pyrovelocity.plots._trajectory import ( align_trajectory_diff, get_clone_trajectory, +) +from pyrovelocity.plots._uncertainty import ( get_posterior_sample_angle_uncertainty, - plot_posterior_time, - plot_vector_field_uncertain, ) +from pyrovelocity.plots._vector_fields import plot_vector_field_uncertainty __all__ = ["plot_lineage_fate_correlation"] @@ -132,7 +134,7 @@ def plot_lineage_fate_correlation( cell_time_cov = cell_time_std / cell_time_mean print(cell_time_cov) - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata_pyrovelocity, embed_mean, cell_time_cov, @@ -159,7 +161,7 @@ def plot_lineage_fate_correlation( cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean print(cell_magnitudes_cov) - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata_pyrovelocity, embed_mean, cell_magnitudes_cov, @@ -185,7 +187,7 @@ def plot_lineage_fate_correlation( pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) print(pca_angles_std) - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata_pyrovelocity, embed_mean, pca_angles_std, diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 3f53deb02..502866ae3 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -20,13 +20,12 @@ get_posterior_sample_angle_uncertainty, ) - logger = configure_logging(__name__) __all__ = [ "plot_vector_field_summary", - "plot_vector_field_uncertain", + "plot_vector_field_uncertainty", "plot_mean_vector_field", "plot_arrow_examples", ] @@ -131,7 +130,7 @@ def plot_vector_field_summary( cell_time_std = posterior_time.std(0).flatten() cell_time_cov = cell_time_std / cell_time_mean - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata, embed_mean, cell_time_std, @@ -153,7 +152,7 @@ def plot_vector_field_summary( cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) cell_magnitudes_std = cell_magnitudes.std(axis=-2) cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata, embed_mean, cell_magnitudes_cov, @@ -172,7 +171,7 @@ def plot_vector_field_summary( cmax=None, ) - plot_vector_field_uncertain( + plot_vector_field_uncertainty( adata, embed_mean, pca_angles_std, @@ -202,7 +201,7 @@ def plot_vector_field_summary( return fig -def plot_vector_field_uncertain( +def plot_vector_field_uncertainty( adata, embed_mean, embeds_radian_or_magnitude, From 4843c4b7ae6d0616c43aa5b0bd5f090d63aa3035 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 11:53:20 -0400 Subject: [PATCH 007/177] fix(plots): enable type-checking of plot lineage fate correlation Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_lineage_fate_correlation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 09918670d..695316705 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -5,6 +5,7 @@ import scvelo as scv import seaborn as sns from anndata import AnnData +from beartype import beartype from beartype.typing import Dict from matplotlib.axes import Axes from matplotlib.figure import Figure @@ -28,6 +29,7 @@ logger = configure_logging(__name__) +@beartype def plot_lineage_fate_correlation( posterior_samples_path: str | Path, adata_pyrovelocity: str | Path, From 601e0c8f54cfbc9243e509256b356ccdd985d931 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 11:55:43 -0400 Subject: [PATCH 008/177] fix(plots): export lineage fate correlation plot from plots package Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pyrovelocity/plots/__init__.py b/src/pyrovelocity/plots/__init__.py index 71358b98c..0097166dc 100644 --- a/src/pyrovelocity/plots/__init__.py +++ b/src/pyrovelocity/plots/__init__.py @@ -7,6 +7,9 @@ ) from pyrovelocity.plots._experimental import plot_t0_selection from pyrovelocity.plots._genes import plot_gene_ranking +from pyrovelocity.plots._lineage_fate_correlation import ( + plot_lineage_fate_correlation, +) from pyrovelocity.plots._parameters import ( plot_parameter_posterior_distributions, ) @@ -34,6 +37,7 @@ "plot_deterministic_simulation_phase_portrait", "plot_deterministic_simulation_trajectories", "plot_gene_ranking", + "plot_lineage_fate_correlation", "plot_parameter_posterior_distributions", "plot_posterior_time", "plot_shared_time_uncertainty", From 86e54f0804aab9fe54f4b9fc2246645f1ca65655 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 14:32:58 -0400 Subject: [PATCH 009/177] fix(io): serialize `np.bool_` to `bool` Signed-off-by: Cameron Smith --- src/pyrovelocity/io/serialization.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyrovelocity/io/serialization.py b/src/pyrovelocity/io/serialization.py index b8dfd04ad..3fbd32a06 100644 --- a/src/pyrovelocity/io/serialization.py +++ b/src/pyrovelocity/io/serialization.py @@ -225,6 +225,8 @@ def default(self, obj): return obj.to_dict(orient="list") if isinstance(obj, pd.Series): return obj.to_dict() + elif isinstance(obj, np.bool_): + return bool(obj) return super().default(obj) From 3d1316cea39cb187267db845b26284a6a77190c3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 14:42:09 -0400 Subject: [PATCH 010/177] refactor(tasks): migrate data subset functionality to io package Signed-off-by: Cameron Smith --- src/pyrovelocity/io/subset_data.py | 243 ++++++++++++++++++ src/pyrovelocity/tasks/data.py | 82 +----- src/pyrovelocity/tests/io/test_subset_data.py | 65 +++++ src/pyrovelocity/tests/tasks/test_data.py | 52 ---- 4 files changed, 310 insertions(+), 132 deletions(-) create mode 100644 src/pyrovelocity/io/subset_data.py create mode 100644 src/pyrovelocity/tests/io/test_subset_data.py diff --git a/src/pyrovelocity/io/subset_data.py b/src/pyrovelocity/io/subset_data.py new file mode 100644 index 000000000..c3cc3b798 --- /dev/null +++ b/src/pyrovelocity/io/subset_data.py @@ -0,0 +1,243 @@ +from pathlib import Path +from typing import Optional, Tuple + +import numpy as np +import scanpy as sc +from anndata import AnnData +from beartype import beartype +from scipy.sparse import csr_matrix + +from pyrovelocity.logging import configure_logging +from pyrovelocity.utils import print_anndata + +__all__ = [ + "subset_anndata", + "subset_vars", + "subset_randomly", + "subset_by_lineage_timepoints", + "update_uns_attributes", + "save_subset_to_file", +] + +logger = configure_logging(__name__) + + +@beartype +def subset_anndata( + file_path: Optional[str | Path] = None, + adata: Optional[AnnData] = None, + n_obs: int = 100, + n_vars: Optional[int] = None, + save_subset: bool = False, + output_path: Optional[str | Path] = None, + use_lineage_timepoints: bool = False, +) -> Tuple[AnnData, Optional[str | Path]]: + """ + Randomly sample observations from a dataset given by file path or AnnData object. + If use_lineage_timepoints is True, it splits the observations equally between two timepoints. + + Args: + file_path (str): Path to a .h5ad file containing a dataset. Takes precedence over adata. + adata (AnnData): AnnData object. If None, file_path must be provided. + n_obs (int): Number of observations to sample. Defaults to 100. + n_vars (Optional[int]): Number of variables to subset. If None, all variables are kept. + save_subset (bool): If True, save the subset to a file. Defaults to False. + output_path (str): Path to save the subset. Defaults to None. + use_lineage_timepoints (bool): If True, split observations equally between two timepoints. Defaults to False. + + Raises: + ValueError: If neither file_path nor adata is provided. + + Returns: + Tuple[AnnData, Optional[str | Path]]: Subset of the dataset and the output path if saved. + + Examples: + >>> # xdoctest: +SKIP + >>> data_path = download_dataset(data_set_name="pancreas") + >>> adata = subset_anndata(file_path=data_path, n_obs=100, save_subset=True) + >>> print_anndata(adata) + >>> print_attributes(adata) + ... + >>> # use_lineage_timepoints=True + >>> from pyrovelocity.io.datasets import larry_cospar + >>> from pyrovelocity.io.serialization import save_anndata_to_json + >>> adata_cospar = larry_cospar() + >>> adata_cospar_subset, outpath = subset_anndata( + ... adata=adata_cospar, + ... n_obs=4, + ... n_vars=2, + ... use_lineage_timepoints=True, + ... ) + >>> save_anndata_to_json(adata_cospar_subset, "adata_cospar_subset.json") + """ + if file_path is not None: + file_path = Path(file_path) + adata = sc.read(file_path, cache=True) + if adata is None: + raise ValueError("Either file_path or adata must be provided") + + logger.info("constructing data subset") + print_anndata(adata) + + if n_vars is not None: + adata = subset_vars(adata, n_vars) + + if use_lineage_timepoints: + adata_subset = subset_by_lineage_timepoints(adata, n_obs) + else: + adata_subset = subset_randomly(adata, n_obs) + + adata_subset.obs_names_make_unique() + adata_subset.var_names_make_unique() + + if save_subset: + output_path = save_subset_to_file( + adata_subset, file_path, output_path, n_obs + ) + + print_anndata(adata_subset) + return adata_subset.copy(), output_path + + +@beartype +def subset_vars(adata: AnnData, n_vars: int) -> AnnData: + """Subset variables of the AnnData object.""" + if n_vars > adata.n_vars: + logger.warning( + f"n_vars ({n_vars}) is greater than the number of variables in the dataset ({adata.n_vars})" + ) + n_vars = adata.n_vars + selected_vars_indices = np.random.choice( + adata.n_vars, n_vars, replace=False + ) + logger.info(f"selected {n_vars} vars from {adata.n_vars}") + return adata[:, selected_vars_indices] + + +def subset_randomly(adata: AnnData, n_obs: int) -> AnnData: + """Randomly subset observations of the AnnData object.""" + if n_obs > adata.n_obs: + logger.warning( + f"n_obs ({n_obs}) is greater than the number of observations in the dataset ({adata.n_obs})" + ) + n_obs = adata.n_obs + selected_obs_indices = np.random.choice(adata.n_obs, n_obs, replace=False) + logger.info(f"selected {n_obs} obs from {adata.n_obs}") + return adata[selected_obs_indices] + + +@beartype +def subset_by_lineage_timepoints( + adata: AnnData, + n_obs: int, + n_subset_pcs=5, +) -> AnnData: + """Subset observations equally between two lineage timepoints. + + Examples: + >>> # xdoctest: +SKIP + >>> data_path = download_dataset(data_set_name="pancreas") + >>> adata, _ = subset_anndata(file_path=data_path, n_obs=100, save_subset=True) + >>> adata_subset = subset_by_lineage_timepoints(adata, n_obs=10) + >>> print_anndata(adata + """ + required_keys = ["clonal_cell_id_t1", "clonal_cell_id_t2"] + if not all(key in adata.uns for key in required_keys): + raise ValueError( + f"AnnData object is missing one or more required uns keys: {required_keys}" + ) + + n_obs_per_timepoint = n_obs // 2 + t1_available = len(adata.uns["clonal_cell_id_t1"]) + t2_available = len(adata.uns["clonal_cell_id_t2"]) + + if n_obs_per_timepoint > min(t1_available, t2_available): + n_obs_per_timepoint = min(t1_available, t2_available) + logger.warning( + f"Requested number of observations per timepoint ({n_obs // 2}) " + f"exceeds available observations. Using {n_obs_per_timepoint} per timepoint." + ) + + t1_indices = np.random.choice( + adata.uns["clonal_cell_id_t1"], n_obs_per_timepoint, replace=False + ) + t2_indices = np.random.choice( + adata.uns["clonal_cell_id_t2"], n_obs_per_timepoint, replace=False + ) + selected_obs_indices = np.concatenate([t1_indices, t2_indices]) + + logger.info( + f"selected {n_obs_per_timepoint} obs from each timepoint, total {len(selected_obs_indices)} obs" + ) + adata_subset = adata[selected_obs_indices].copy() + update_uns_attributes(adata_subset, adata, t1_indices, t2_indices) + adata_subset.obsm["X_clone"] = np.eye(adata_subset.n_obs) + adata_subset.obsm["X_pca"] = adata_subset.obsm["X_pca"][:, :n_subset_pcs] + adata_subset.varm["PCs"] = adata_subset.varm["PCs"][:, :n_subset_pcs] + adata_subset.uns["pca"]["variance"] = adata_subset.uns["pca"]["variance"][ + :n_subset_pcs + ] + adata_subset.uns["pca"]["variance_ratio"] = adata_subset.uns["pca"][ + "variance_ratio" + ][:n_subset_pcs] + return adata_subset + + +@beartype +def update_uns_attributes( + adata_subset: AnnData, + adata: AnnData, + t1_indices: np.ndarray, + t2_indices: np.ndarray, +): + """Update uns attributes in the subsetted AnnData object.""" + adata_subset.uns["clonal_cell_id_t1"] = np.arange(len(t1_indices)) + adata_subset.uns["clonal_cell_id_t2"] = np.arange( + len(t1_indices), len(t1_indices) + len(t2_indices) + ) + adata_subset.uns["Tmap_cell_id_t1"] = adata_subset.uns["clonal_cell_id_t1"] + adata_subset.uns["Tmap_cell_id_t2"] = adata_subset.uns["clonal_cell_id_t2"] + + for key in ["intraclone_transition_map", "transition_map"]: + if key in adata.uns: + original_map = adata.uns[key] + new_map = csr_matrix((len(t1_indices), len(t2_indices))) + + t1_mapping = {orig: new for new, orig in enumerate(t1_indices)} + t2_mapping = {orig: new for new, orig in enumerate(t2_indices)} + + rows, cols = original_map.nonzero() + for row, col in zip(rows, cols): + if row in t1_mapping and col in t2_mapping: + new_row = t1_mapping[row] + new_col = t2_mapping[col] + new_map[new_row, new_col] = original_map[row, col] + + adata_subset.uns[key] = new_map.toarray() + + for key in adata.uns: + if key not in adata_subset.uns: + adata_subset.uns[key] = adata.uns[key] + adata_subset.uns["sp_idx"] = np.ones(adata_subset.shape[0]).astype(bool) + + +@beartype +def save_subset_to_file( + adata_subset: AnnData, + file_path: Optional[Path], + output_path: Optional[str | Path], + n_obs: int, +) -> Path: + """Save the subsetted AnnData object to a file.""" + if output_path is None and file_path is not None: + output_path = file_path.parent / Path( + f"{file_path.stem}_{n_obs}obs{file_path.suffix}" + ) + if output_path is None: + raise ValueError( + "output_path must be provided if save_subset is True and file_path is None" + ) + output_path = Path(output_path) + adata_subset.write(output_path) + logger.info(f"saved {n_obs} obs subset: {output_path}") + return output_path diff --git a/src/pyrovelocity/tasks/data.py b/src/pyrovelocity/tasks/data.py index 20a598508..327194ab0 100644 --- a/src/pyrovelocity/tasks/data.py +++ b/src/pyrovelocity/tasks/data.py @@ -4,8 +4,6 @@ from typing import Optional, Tuple from urllib.parse import unquote -import anndata -import numpy as np import requests import scanpy as sc import validators @@ -13,10 +11,11 @@ from beartype import beartype import pyrovelocity.io.datasets +from pyrovelocity.io.subset_data import subset_anndata from pyrovelocity.logging import configure_logging from pyrovelocity.utils import generate_sample_data, print_anndata -__all__ = ["download_dataset", "load_anndata_from_path", "subset_anndata"] +__all__ = ["download_dataset", "load_anndata_from_path"] logger = configure_logging(__name__) @@ -249,83 +248,6 @@ def _validate_url_and_file(url: str) -> Tuple[bool, str]: return False, f"Error occurred: {e}" -@beartype -def subset_anndata( - file_path: Optional[str | Path] = None, - adata: Optional[anndata._core.anndata.AnnData] = None, - n_obs: int = 100, - n_vars: Optional[int] = None, - save_subset: bool = False, - output_path: Optional[str | Path] = None, -) -> Tuple[anndata._core.anndata.AnnData, str | Path | None]: - """ - Randomly sample observations from a dataset given by file path or AnnData object. - - Args: - file_path (str): Path to a .h5ad file containing a dataset. Takes precedence over adata. - adata (AnnData): AnnData object. If None, file_path must be provided. - n_obs (int): Number of observations to sample. Defaults to 100. - save_subset (bool): If True, save the subset to a file. Defaults to False. - output_path (str): Path to save the subset. Defaults to None. - - Raises: - ValueError: If neither file_path nor adata is provided. - - Returns: - AnnData: Subset of the dataset. - - Examples: - >>> data_path = download_dataset(data_set_name="pancreas") # xdoctest: +SKIP - >>> adata = subset(file_path=data_path, n_obs=100, save_subset=True) # xdoctest: +SKIP - >>> print_anndata(adata) # xdoctest: +SKIP - >>> print_attributes(adata) # xdoctest: +SKIP - """ - if file_path is not None: - file_path = Path(file_path) - adata = sc.read(file_path, cache=True) - if adata is None: - raise ValueError("Either file_path or adata must be provided") - - if n_obs > adata.n_obs: - logger.warning( - f"n_obs ({n_obs}) is greater than the number of observations in the dataset ({adata.n_obs})" - ) - n_obs = adata.n_obs - logger.info("constructing data subset") - print_anndata(adata) - - if n_vars is not None: - if n_vars > adata.n_vars: - logger.warning( - f"n_vars ({n_vars}) is greater than the number of variables in the dataset ({adata.n_vars})" - ) - n_vars = adata.n_vars - selected_vars_indices = np.random.choice(adata.n_vars, n_vars) - logger.info(f"selected {n_vars} vars from {adata.n_vars}") - adata = adata[:, selected_vars_indices] - - selected_obs_indices = np.random.choice(adata.n_obs, n_obs) - logger.info(f"selected {n_obs} obs from {adata.n_obs}") - adata = adata[selected_obs_indices] - adata.obs_names_make_unique() - adata.var_names_make_unique() - - if save_subset: - if output_path is None and file_path is not None: - output_path = file_path.parent / Path( - file_path.stem + f"_{n_obs}obs" + file_path.suffix - ) - if output_path is None: - raise ValueError( - "output_path must be provided if save_subset is True and file_path is None" - ) - adata.write(output_path) - logger.info(f"saved {n_obs} obs subset: {output_path}") - - print_anndata(adata) - return adata.copy(), output_path - - @beartype def load_anndata_from_path(adata_path: str | Path) -> AnnData: adata_path = Path(adata_path) diff --git a/src/pyrovelocity/tests/io/test_subset_data.py b/src/pyrovelocity/tests/io/test_subset_data.py new file mode 100644 index 000000000..49ed91f37 --- /dev/null +++ b/src/pyrovelocity/tests/io/test_subset_data.py @@ -0,0 +1,65 @@ +"""Tests for `pyrovelocity.io.subset_data` module.""" +from pathlib import Path + +import pytest + +from pyrovelocity.io.subset_data import ( + subset_anndata, +) + + +def test_subset_data_module(): + from pyrovelocity.io import subset_data + + print(subset_data.__file__) + + +def test_subset_from_adata(default_sample_data): + """Test deriving a data subset from an AnnData object.""" + n_obs = 50 + n_vars = 10 + subset_adata, _ = subset_anndata( + adata=default_sample_data, n_obs=n_obs, n_vars=n_vars + ) + assert subset_adata.n_obs == n_obs + assert subset_adata.n_vars == n_vars + + +def test_subset_from_file(default_sample_data_file): + """Test deriving a data subset from a file.""" + n_obs = 50 + subset_adata, _ = subset_anndata( + file_path=default_sample_data_file, n_obs=n_obs + ) + assert subset_adata.n_obs == n_obs + + +def test_invalid_input(): + """Test handling of invalid inputs.""" + with pytest.raises(ValueError): + subset_anndata() # No AnnData object or file path provided + + +def test_save_subset(default_sample_data, tmp_path): + """Test saving the subset to a file.""" + n_obs = 50 + output_file = tmp_path / "subset_adata.h5ad" + _, output_path = subset_anndata( + adata=default_sample_data, + n_obs=n_obs, + save_subset=True, + output_path=output_file, + ) + assert output_path == output_file + assert Path(output_file).exists() + + +def test_subset_specific_n_obs_vars(default_sample_data): + """Test deriving a data subset with specific n_obs and n_vars.""" + n_obs = 50 + n_vars = 10 + subset_adata, _ = subset_anndata( + adata=default_sample_data, n_obs=n_obs, n_vars=n_vars + ) + assert subset_adata.n_obs == n_obs + assert subset_adata.n_vars == n_vars diff --git a/src/pyrovelocity/tests/tasks/test_data.py b/src/pyrovelocity/tests/tasks/test_data.py index 262de7f10..abf4d9bce 100644 --- a/src/pyrovelocity/tests/tasks/test_data.py +++ b/src/pyrovelocity/tests/tasks/test_data.py @@ -9,7 +9,6 @@ _validate_url_and_file, download_dataset, load_anndata_from_path, - subset_anndata, ) @@ -149,57 +148,6 @@ def test_validate_invalid_url_format(): assert "Invalid URL format" in message -def test_subset_from_adata(default_sample_data): - """Test deriving a data subset from an AnnData object.""" - n_obs = 50 - n_vars = 10 - subset_adata, _ = subset_anndata( - adata=default_sample_data, n_obs=n_obs, n_vars=n_vars - ) - assert subset_adata.n_obs == n_obs - assert subset_adata.n_vars == n_vars - - -def test_subset_from_file(default_sample_data_file): - """Test deriving a data subset from a file.""" - n_obs = 50 - subset_adata, _ = subset_anndata( - file_path=default_sample_data_file, n_obs=n_obs - ) - assert subset_adata.n_obs == n_obs - - -def test_invalid_input(): - """Test handling of invalid inputs.""" - with pytest.raises(ValueError): - subset_anndata() # No AnnData object or file path provided - - -def test_save_subset(default_sample_data, tmp_path): - """Test saving the subset to a file.""" - n_obs = 50 - output_file = tmp_path / "subset_adata.h5ad" - _, output_path = subset_anndata( - adata=default_sample_data, - n_obs=n_obs, - save_subset=True, - output_path=output_file, - ) - assert output_path == output_file - assert Path(output_file).exists() - - -def test_subset_specific_n_obs_vars(default_sample_data): - """Test deriving a data subset with specific n_obs and n_vars.""" - n_obs = 50 - n_vars = 10 - subset_adata, _ = subset_anndata( - adata=default_sample_data, n_obs=n_obs, n_vars=n_vars - ) - assert subset_adata.n_obs == n_obs - assert subset_adata.n_vars == n_vars - - def test_load_valid_h5ad_file(default_sample_data_file): """Test loading from a valid .h5ad file.""" adata = load_anndata_from_path(default_sample_data_file) From 0adac2054bb360031ae7cbc3f43ec76d3a00452e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 15:55:17 -0400 Subject: [PATCH 011/177] refactor(tasks): move load data function to utils Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/data.py | 21 +++------------------ src/pyrovelocity/tasks/preprocess.py | 7 +++++-- src/pyrovelocity/tasks/train.py | 3 +-- src/pyrovelocity/tests/tasks/test_data.py | 2 +- src/pyrovelocity/utils.py | 18 ++++++++++++++++++ 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/pyrovelocity/tasks/data.py b/src/pyrovelocity/tasks/data.py index 327194ab0..b547493bd 100644 --- a/src/pyrovelocity/tasks/data.py +++ b/src/pyrovelocity/tasks/data.py @@ -7,7 +7,6 @@ import requests import scanpy as sc import validators -from anndata._core.anndata import AnnData from beartype import beartype import pyrovelocity.io.datasets @@ -15,7 +14,9 @@ from pyrovelocity.logging import configure_logging from pyrovelocity.utils import generate_sample_data, print_anndata -__all__ = ["download_dataset", "load_anndata_from_path"] +__all__ = [ + "download_dataset", +] logger = configure_logging(__name__) @@ -246,19 +247,3 @@ def _validate_url_and_file(url: str) -> Tuple[bool, str]: ) except requests.RequestException as e: return False, f"Error occurred: {e}" - - -@beartype -def load_anndata_from_path(adata_path: str | Path) -> AnnData: - adata_path = Path(adata_path) - if adata_path.suffix not in {".h5ad", ".loom"}: - raise ValueError( - f"The input file {adata_path}\n" - "must be either a .h5ad or .loom file." - ) - if os.path.isfile(adata_path) and os.access(adata_path, os.R_OK): - logger.info(f"Reading input file: {adata_path}") - adata = sc.read(filename=adata_path, cache=True) - return adata - else: - raise ValueError(f"Cannot read input file: {adata_path}") diff --git a/src/pyrovelocity/tasks/preprocess.py b/src/pyrovelocity/tasks/preprocess.py index 45a11762b..0660c61ca 100644 --- a/src/pyrovelocity/tasks/preprocess.py +++ b/src/pyrovelocity/tasks/preprocess.py @@ -19,8 +19,11 @@ from pyrovelocity.plots._count_histograms import ( plot_spliced_unspliced_histogram, ) -from pyrovelocity.tasks.data import load_anndata_from_path -from pyrovelocity.utils import ensure_numpy_array, print_anndata +from pyrovelocity.utils import ( + ensure_numpy_array, + load_anndata_from_path, + print_anndata, +) __all__ = [ "assign_colors", diff --git a/src/pyrovelocity/tasks/train.py b/src/pyrovelocity/tasks/train.py index 0e69e694e..19f465e7c 100644 --- a/src/pyrovelocity/tasks/train.py +++ b/src/pyrovelocity/tasks/train.py @@ -18,8 +18,7 @@ from pyrovelocity.io.compressedpickle import CompressedPickle from pyrovelocity.logging import configure_logging from pyrovelocity.models import PyroVelocity -from pyrovelocity.tasks.data import load_anndata_from_path -from pyrovelocity.utils import print_anndata +from pyrovelocity.utils import load_anndata_from_path, print_anndata logger = configure_logging(__name__) diff --git a/src/pyrovelocity/tests/tasks/test_data.py b/src/pyrovelocity/tests/tasks/test_data.py index abf4d9bce..5b1c49e71 100644 --- a/src/pyrovelocity/tests/tasks/test_data.py +++ b/src/pyrovelocity/tests/tasks/test_data.py @@ -8,8 +8,8 @@ from pyrovelocity.tasks.data import ( _validate_url_and_file, download_dataset, - load_anndata_from_path, ) +from pyrovelocity.utils import load_anndata_from_path def test_load_data_module(): diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index 6d92d8098..b390aee2e 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -16,6 +16,7 @@ import pandas as pd import rich.syntax import rich.tree +import scanpy as sc import scvelo as scv import seaborn as sns import yaml @@ -38,6 +39,7 @@ "generate_public_api", "generate_sample_data", "internal_help", + "load_anndata_from_path", "mae", "mae_evaluate", "pretty_log_dict", @@ -642,6 +644,22 @@ def internal_help(obj: Callable | ModuleType): print("\n".join(processed_lines)) +@beartype +def load_anndata_from_path(adata_path: str | Path) -> AnnData: + adata_path = Path(adata_path) + if adata_path.suffix not in {".h5ad", ".loom"}: + raise ValueError( + f"The input file {adata_path}\n" + "must be either a .h5ad or .loom file." + ) + if os.path.isfile(adata_path) and os.access(adata_path, os.R_OK): + logger.info(f"Reading input file: {adata_path}") + adata = sc.read(filename=adata_path, cache=True) + return adata + else: + raise ValueError(f"Cannot read input file: {adata_path}") + + # TODO: remove unused functions # def log(x): # """ From 7ede4bc9cb4e3002834d502cf092587803dcdafb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 24 Aug 2024 23:34:45 -0400 Subject: [PATCH 012/177] feat(utils): add function to compute file hashes Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/test_utils.py | 49 +++++++++++++++++++++++++++- src/pyrovelocity/utils.py | 17 ++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/tests/test_utils.py b/src/pyrovelocity/tests/test_utils.py index ef2c1dc81..43d2e5880 100644 --- a/src/pyrovelocity/tests/test_utils.py +++ b/src/pyrovelocity/tests/test_utils.py @@ -1,5 +1,8 @@ """Tests for `pyrovelocity.utils` module.""" +import hashlib +from pathlib import Path + import hypothesis import numpy as np import pytest @@ -7,7 +10,7 @@ from hypothesis import given from hypothesis import strategies as st -from pyrovelocity.utils import generate_sample_data +from pyrovelocity.utils import generate_sample_data, hash_file def test_load_utils(): @@ -112,3 +115,47 @@ def test_generate_sample_data_invalid_noise_model(): match="noise_model must be one of 'iid', 'gillespie', 'normal'", ): generate_sample_data(noise_model="wishful thinking") + + +def create_file_with_content(path: Path, content: str): + path.write_text(content) + return path + + +def calculate_sha256(content: str): + return hashlib.sha256(content.encode()).hexdigest() + + +@pytest.fixture +def sample_files(tmp_path): + files = { + "empty": create_file_with_content(tmp_path / "empty.txt", ""), + "small": create_file_with_content(tmp_path / "small.txt", "test file"), + "medium": create_file_with_content( + tmp_path / "medium.txt", "A" * 10000 + ), + "large": create_file_with_content( + tmp_path / "large.txt", "B" * 1000000 + ), + } + return files + + +def test_hash_file(sample_files): + for file_type, file_path in sample_files.items(): + content = file_path.read_text() + expected_hash = calculate_sha256(content) + assert ( + hash_file(file_path) == expected_hash + ), f"Hash mismatch for {file_type} file" + + +def test_hash_file_nonexistent_file(tmp_path): + non_existent_file = tmp_path / "nonexistent.txt" + with pytest.raises(FileNotFoundError): + hash_file(non_existent_file) + + +def test_hash_file_directory(tmp_path): + with pytest.raises(IsADirectoryError): + hash_file(tmp_path) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index b390aee2e..9d9d45d84 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -1,5 +1,6 @@ import contextlib import difflib +import hashlib import importlib import inspect import io @@ -38,6 +39,7 @@ "filter_startswith_dict", "generate_public_api", "generate_sample_data", + "hash_file", "internal_help", "load_anndata_from_path", "mae", @@ -660,6 +662,21 @@ def load_anndata_from_path(adata_path: str | Path) -> AnnData: raise ValueError(f"Cannot read input file: {adata_path}") +@beartype +def hash_file( + file_path: str | Path, + chunk_size: int = 8192, +): + sha256_hash = hashlib.sha256() + file_path = Path(file_path) + + with file_path.open("rb") as f: + for byte_block in iter(lambda: f.read(chunk_size), b""): + sha256_hash.update(byte_block) + + return sha256_hash.hexdigest() + + # TODO: remove unused functions # def log(x): # """ From 7f438b31f104f24a2df6550a746b65cd744a393e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 01:37:11 -0400 Subject: [PATCH 013/177] fix(plots): type-check get clone trajectory function Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_trajectory.py | 30 +++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/pyrovelocity/plots/_trajectory.py b/src/pyrovelocity/plots/_trajectory.py index 0fc163478..ef9ddabc3 100644 --- a/src/pyrovelocity/plots/_trajectory.py +++ b/src/pyrovelocity/plots/_trajectory.py @@ -1,15 +1,19 @@ -import anndata import numpy as np +from anndata import AnnData +from beartype import beartype +from beartype.typing import List, Optional from scipy.sparse import issparse +@beartype def get_clone_trajectory( - adata, - average_start_point=True, - global_traj=True, - times=[2, 4, 6], - clone_num=None, -): + adata: AnnData, + # clone_adata: AnnData, + average_start_point: bool = True, + global_traj: bool = True, + times: List[int] = [2, 4, 6], + clone_num: Optional[int] = None, +) -> AnnData: if not average_start_point: adata.obsm["clone_vector_emb"] = np.zeros((adata.shape[0], 2)) @@ -73,7 +77,7 @@ def get_clone_trajectory( and time6.shape[0] > 0 ): continue - adata_new = anndata.AnnData( + adata_new = AnnData( np.vstack( [ adata_w[time2].X.toarray().mean(axis=0), @@ -149,7 +153,7 @@ def get_clone_trajectory( ] ) centroids.append(adata_new) - clone_new = anndata.AnnData( + clone_new = AnnData( np.vstack( [ clone_adata_w[time2].X.toarray().mean(axis=0), @@ -179,7 +183,7 @@ def get_clone_trajectory( if clone_num is None: clone_num = adata.obsm["X_clone"].shape[1] for j in range(clone_num): - print(j) + # print(j) adata.obs["clonei"] = 0 # print('----------aa------') if issparse(adata.obsm["X_clone"]): @@ -230,7 +234,7 @@ def get_clone_trajectory( consecutive == 0 ): # Must be consecutive time points # print('centroid:', consecutive, times_index) - adata_new = anndata.AnnData( + adata_new = AnnData( np.vstack( [ np.array( @@ -321,7 +325,7 @@ def get_clone_trajectory( time6 = np.where( (adata.obs.time == 6) & (adata.obs.clonei == 1) )[0] - adata_new = anndata.AnnData( + adata_new = AnnData( np.vstack( [ adata[time2].X.toarray().mean(axis=0), @@ -398,7 +402,7 @@ def get_clone_trajectory( ) # print(adata_new.obsm['velocity_umap']) - clone_new = anndata.AnnData( + clone_new = AnnData( np.vstack( [ clone_adata[time2].X.toarray().mean(axis=0), From 34cfd15795f3e57d3e39460cb9f85558275bdac5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 01:39:12 -0400 Subject: [PATCH 014/177] fix(plots): use pandas regex str replacement in lineage fate correlation Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 116 +++++++++++++++--- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 695316705..2d0e6b654 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -23,6 +23,7 @@ get_posterior_sample_angle_uncertainty, ) from pyrovelocity.plots._vector_fields import plot_vector_field_uncertainty +from pyrovelocity.utils import load_anndata_from_path __all__ = ["plot_lineage_fate_correlation"] @@ -31,23 +32,81 @@ @beartype def plot_lineage_fate_correlation( - posterior_samples_path: str | Path, - adata_pyrovelocity: str | Path, - adata_scvelo: str | Path, - adata_cospar: AnnData, - ax: Axes, + posterior_samples_path: str | Path | AnnData, + adata_pyrovelocity: str | Path | AnnData, + adata_scvelo: str | Path | AnnData, + adata_cospar: str | Path | AnnData, + ax: Axes | np.ndarray, fig: Figure, - state_color_dict: Dict, + # state_color_dict: Dict, ylabel: str = "Unipotent Monocyte lineage", dotsize: int = 3, scale: float = 0.35, arrow: float = 3.5, ): + """ + Plot lineage fate correlation with shared latent time estimates. + + Args: + posterior_samples_path (str | Path): Path to the posterior samples. + adata_pyrovelocity (str | Path): Path to the Pyro-Velocity AnnData object. + adata_scvelo (str | Path): Path to the scVelo AnnData object. + adata_cospar (AnnData): AnnData object with COSPAR results. + ax (Axes): Matplotlib axes. + fig (Figure): Matplotlib figure. + state_color_dict (Dict): Dictionary with cell state colors. + ylabel (str, optional): Label for y axis. Defaults to "Unipotent Monocyte lineage". + dotsize (int, optional): Size of plotted points. Defaults to 3. + scale (float, optional): Plot scale. Defaults to 0.35. + arrow (float, optional): Arrow size. Defaults to 3.5. + + Examples: + >>> # xdoctest: +SKIP + >>> import matplotlib.pyplot as plt + >>> import scanpy as sc + >>> from pyrovelocity.io.datasets import larry_cospar, larry_mono + >>> from pyrovelocity.utils import load_anndata_from_path + >>> from pyrovelocity.plots import plot_lineage_fate_correlation + ... + >>> fig, ax = plt.subplots(1, 9) + >>> fig.set_size_inches(17, 2.75) + >>> fig.subplots_adjust( + ... hspace=0.4, wspace=0.2, left=0.01, right=0.99, top=0.95, bottom=0.3 + >>> ) + ... + >>> data_set_name = "larry_mono" + >>> model_name = "model2" + >>> data_set_model_pairing = f"{data_set_name}_{model_name}" + >>> model_path = f"models/{data_set_model_pairing}" + ... + >>> adata_pyrovelocity = load_anndata_from_path(f"{model_path}/postprocessed.h5ad") + >>> # color_dict = dict( + ... # zip( + ... # adata_pyrovelocity.obs.state_info.cat.categories, + ... # adata_pyrovelocity.uns["state_info_colors"], + ... # ) + ... # ) + >>> adata_dynamical = load_anndata_from_path(f"data/processed/larry_mono_processed.h5ad") + >>> adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + >>> plot_lineage_fate_correlation( + ... posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", + ... adata_pyrovelocity=adata_pyrovelocity, + ... adata_scvelo=adata_dynamical, + ... adata_cospar=adata_cospar, + ... ax=ax, + ... fig=fig, + ... ) + """ posterior_samples = CompressedPickle.load(posterior_samples_path) embed_mean = posterior_samples["vector_field_posterior_mean"] - adata_scvelo = scv.read(adata_scvelo) - adata_pyrovelocity = scv.read(adata_pyrovelocity) + if isinstance(adata_pyrovelocity, str | Path): + adata_pyrovelocity = load_anndata_from_path(adata_pyrovelocity) + if isinstance(adata_scvelo, str | Path): + adata_scvelo = load_anndata_from_path(adata_scvelo) + if isinstance(adata_cospar, str | Path): + adata_cospar = load_anndata_from_path(adata_cospar) + adata_input_clone = get_clone_trajectory(adata_scvelo) adata_input_clone.obsm["clone_vector_emb"][ np.isnan(adata_input_clone.obsm["clone_vector_emb"]) @@ -85,7 +144,7 @@ def plot_lineage_fate_correlation( x="X", y="Y", hue="celltype", - palette=state_color_dict, + # palette=state_color_dict, ax=ax[0], s=dotsize, alpha=0.90, @@ -211,21 +270,31 @@ def plot_lineage_fate_correlation( "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 ) + # The obs names in adata_pyrovelocity have a "-N" suffix that + # is not present in the adata_cospar obs Index. + patched_adata_pyrovelocity_obs_names = ( + adata_pyrovelocity.obs_names.str.replace( + r"-\d", + "", + regex=True, + ) + ) + adata_cospar_obs_subset = adata_cospar[ + patched_adata_pyrovelocity_obs_names, : + ] scv.pl.scatter( - adata_cospar[adata_pyrovelocity.obs_names.str.replace(r"-\d", ""), :], + adata=adata_cospar_obs_subset, basis="emb", fontsize=7, - color="fate_potency", + color="fate_potency_transition_map", cmap="inferno_r", show=False, ax=ax[6], s=dotsize, ) ax[6].set_title("Clonal fate potency", fontsize=7) - gold = adata_cospar[ - adata_pyrovelocity.obs_names.str.replace(r"-\d", ""), : - ].obs.fate_potency - select = ~np.isnan(gold) + gold_standard = adata_cospar_obs_subset.obs.fate_potency_transition_map + select = ~np.isnan(gold_standard) scv.pl.scatter( adata_scvelo, c="latent_time", @@ -238,9 +307,9 @@ def plot_lineage_fate_correlation( ) ax[7].set_title( "Scvelo latent time\ncorrelation: %.2f" - % spearmanr(-gold[select], adata_scvelo.obs.latent_time.values[select])[ - 0 - ], + % spearmanr( + -gold_standard[select], adata_scvelo.obs.latent_time.values[select] + )[0], fontsize=7, ) plot_posterior_time( @@ -255,8 +324,17 @@ def plot_lineage_fate_correlation( ax[8].set_title( "Pyro-Velocity shared time\ncorrelation: %.2f" % spearmanr( - -gold[select], + -gold_standard[select], posterior_samples["cell_time"].mean(0).flatten()[select], )[0], fontsize=7, ) + + for ext in ["", ".png"]: + fig.savefig( + f"lineage_fate_correlation.pdf{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + ) From b7eadc44391becd7d40d510bbadf88fb27d62b66 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 14:29:23 -0400 Subject: [PATCH 015/177] refactor(plots): archive unused code from get clone trajectory Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_trajectory.py | 893 ++++++++++++++------------ 1 file changed, 490 insertions(+), 403 deletions(-) diff --git a/src/pyrovelocity/plots/_trajectory.py b/src/pyrovelocity/plots/_trajectory.py index ef9ddabc3..f706ed5f4 100644 --- a/src/pyrovelocity/plots/_trajectory.py +++ b/src/pyrovelocity/plots/_trajectory.py @@ -8,420 +8,88 @@ @beartype def get_clone_trajectory( adata: AnnData, - # clone_adata: AnnData, average_start_point: bool = True, - global_traj: bool = True, times: List[int] = [2, 4, 6], clone_num: Optional[int] = None, ) -> AnnData: if not average_start_point: adata.obsm["clone_vector_emb"] = np.zeros((adata.shape[0], 2)) - adatas = [] - clones = [] centroids = [] - cen_clones = [] - print(adata.shape) adata.obs["clones"] = 0 - if "noWell" in adata.obs.columns: - for w in adata.obs.Well.unique(): - adata_w = adata[adata.obs.Well == w] - clone_adata_w = clone_adata[clone_adata.obs.Well == w] - for j in range(clone_adata_w.shape[1]): - adata_w.obs["clonei"] = 0 - # belongs to same clone - adata_w.obs.loc[ - clone_adata_w[:, j].X.toarray()[:, 0] >= 1, "clonei" - ] = 1 - - if not average_start_point: - for i in np.where( - (adata_w.obs.time == 2) & (adata_w.obs.clonei == 1) - )[0]: - next_time = np.where( - (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) - )[0] - adata_w.obsm["velocity_umap"][i] = ( - adata_w.obsm["X_umap"][next_time].mean(axis=0) - - adata_w.obsm["X_umap"][i] - ) - for i in np.where( - (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) - )[0]: - next_time = np.where( - (adata_w.obs.time == 6) & (adata_w.obs.clonei == 1) - )[0] - adata_w.obsm["velocity_umap"][i] = ( - adata_w.obsm["X_umap"][next_time].mean(axis=0) - - adata_w.obsm["X_umap"][i] - ) - else: - time2 = np.where( - (adata_w.obs.time == 2) & (adata_w.obs.clonei == 1) - )[0] - time4 = np.where( - (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) - )[0] - time6 = np.where( - (adata_w.obs.time == 6) & (adata_w.obs.clonei == 1) - )[0] - if ( - time2.shape[0] == 0 - and time4.shape[0] == 0 - and time6.shape[0] == 0 - ): - continue - if ( - time2.shape[0] > 0 - and time4.shape[0] == 0 - and time6.shape[0] > 0 - ): - continue - adata_new = AnnData( - np.vstack( - [ - adata_w[time2].X.toarray().mean(axis=0), - adata_w[time4].X.toarray().mean(axis=0), - adata_w[time6].X.toarray().mean(axis=0), - ] - ), - layers={ - "spliced": np.vstack( - [ - adata_w[time2] - .layers["spliced"] - .toarray() - .mean(axis=0), - adata_w[time4] - .layers["spliced"] - .toarray() - .mean(axis=0), - adata_w[time6] - .layers["spliced"] - .toarray() - .mean(axis=0), - ] - ), - "unspliced": np.vstack( - [ - adata_w[time2] - .layers["unspliced"] - .toarray() - .mean(axis=0), - adata_w[time4] - .layers["unspliced"] - .toarray() - .mean(axis=0), - adata_w[time6] - .layers["unspliced"] - .toarray() - .mean(axis=0), - ] - ), - }, - var=adata_w.var, - ) - - adata_new.obs.loc[:, "time"] = [2, 4, 6] - adata_new.obs.loc[:, "Cell type annotation"] = "Centroid" - print(adata_w[time6].obs.clonetype.unique()) - print(adata_w[time6].obs) - - adata_new.obs.loc[:, "clonetype"] = ( - adata_w[time6].obs.clonetype.unique() - ) # use cell fate from last time point - adata_new.obs.loc[:, "clones"] = int(j) - if "Well" in adata_w[time6].obs.columns: - adata_new.obs.loc[:, "Well"] = adata_w[ - time6 - ].obs.Well.unique() - - adata_new.obsm["X_umap"] = np.vstack( - [ - adata_w[time2].obsm["X_umap"].mean(axis=0), - adata_w[time4].obsm["X_umap"].mean(axis=0), - adata_w[time6].obsm["X_umap"].mean(axis=0), - ] - ) - adata_new.obsm["velocity_umap"] = np.vstack( - [ - adata_w.obsm["X_umap"][time4].mean(axis=0) - - adata_w.obsm["X_umap"][time2].mean(axis=0), - adata_w.obsm["X_umap"][time6].mean(axis=0) - - adata_w.obsm["X_umap"][time4].mean(axis=0), - np.zeros(2), - ] - ) - centroids.append(adata_new) - clone_new = AnnData( - np.vstack( - [ - clone_adata_w[time2].X.toarray().mean(axis=0), - clone_adata_w[time4].X.toarray().mean(axis=0), - clone_adata_w[time6].X.toarray().mean(axis=0), - ] - ), - obs=adata_new.obs, - ) - clone_new.var_names = clone_adata.var_names - clone_new.var = clone_adata.var - # print(clone_new.shape) - cen_clones.append(clone_new) - - adata_new = adata_w.concatenate( - centroids[0].concatenate(centroids[1:]), join="outer" - ) - clone_new = clone_adata_w.concatenate( - cen_clones[0].concatenate(cen_clones[1:]), join="outer" + + if clone_num is None: + clone_num = adata.obsm["X_clone"].shape[1] + for j in range(clone_num): + adata.obs["clonei"] = 0 + + if issparse(adata.obsm["X_clone"]): + adata.obs.loc[ + adata.obsm["X_clone"].toarray()[:, j] >= 1, "clonei" + ] = 1 + else: + adata.obs.loc[adata.obsm["X_clone"][:, j] >= 1, "clonei"] = 1 + + times_index = [] + for t in times: + times_index.append( + np.where((adata.obs.time_info == t) & (adata.obs.clonei == 1))[ + 0 + ] ) - adatas.append(adata_new) - clones.append(clone_new) - return adatas[0].concatenate(adatas[1]), clones[0].concatenate( - clones[1] - ) - else: - if clone_num is None: - clone_num = adata.obsm["X_clone"].shape[1] - for j in range(clone_num): - # print(j) - adata.obs["clonei"] = 0 - # print('----------aa------') - if issparse(adata.obsm["X_clone"]): - adata.obs.loc[ - adata.obsm["X_clone"].toarray()[:, j] >= 1, "clonei" - ] = 1 - else: - adata.obs.loc[adata.obsm["X_clone"][:, j] >= 1, "clonei"] = 1 - # print('----------bb------') - - if not average_start_point: - for i in np.where( - (adata.obs.time == 2) & (adata.obs.clonei == 1) - )[0]: - next_time = np.where( - (adata.obs.time == 4) & (adata.obs.clonei == 1) - )[0] - adata.obsm["velocity_umap"][i] = ( - adata.obsm["X_umap"][next_time].mean(axis=0) - - adata.obsm["X_umap"][i] - ) - for i in np.where( - (adata.obs.time == 4) & (adata.obs.clonei == 1) - )[0]: - next_time = np.where( - (adata.obs.time == 6) & (adata.obs.clonei == 1) - )[0] - adata.obsm["velocity_umap"][i] = ( - adata.obsm["X_umap"][next_time].mean(axis=0) - - adata.obsm["X_umap"][i] - ) - else: - if global_traj: - times_index = [] - for t in times: - times_index.append( - np.where( - (adata.obs.time_info == t) - & (adata.obs.clonei == 1) - )[0] - ) - - consecutive_flag = np.array( - [int(time.shape[0] > 0) for time in times_index] - ) - consecutive = np.diff(consecutive_flag) - if np.sum(consecutive_flag == 1) >= 2 and np.any( - consecutive == 0 - ): # Must be consecutive time points - # print('centroid:', consecutive, times_index) - adata_new = AnnData( - np.vstack( - [ - np.array( - adata[time].X.mean(axis=0) - ).squeeze() - for time in times_index - if time.shape[0] > 0 - ] - ), - # layers={ - # "spliced": np.vstack( - # [ - # np.array( - # adata[time] - # .layers["spliced"] - # .mean(axis=0) - # ) - # for time in times_index - # if time.shape[0] > 0 - # ] - # ), - # "unspliced": np.vstack( - # [ - # np.array( - # adata[time] - # .layers["unspliced"] - # .mean(axis=0) - # ) - # for time in times_index - # if time.shape[0] > 0 - # ] - # ), - # }, - var=adata.var, - ) - # print('----------cc------') - adata.obs.iloc[ - np.hstack( - [ - time - for time in times_index - if time.shape[0] > 0 - ] - ), - adata.obs.columns.get_loc("clones"), - ] = int(j) - adata_new.obs.loc[:, "time"] = [ - t - for t, time in zip([2, 4, 6], times_index) - if time.shape[0] > 0 - ] - adata_new.obs.loc[:, "clones"] = int(j) - adata_new.obs.loc[:, "state_info"] = "Centroid" - adata_new.obsm["X_emb"] = np.vstack( - [ - adata[time].obsm["X_emb"].mean(axis=0) - for time in times_index - if time.shape[0] > 0 - ] - ) - # print('----------dd------') - - # print(adata_new.shape) - # print(adata_new.obsm['X_umap']) - adata_new.obsm["clone_vector_emb"] = np.vstack( - [ - adata_new.obsm["X_emb"][i + 1] - - adata_new.obsm["X_emb"][i] - for i in range( - adata_new.obsm["X_emb"].shape[0] - 1 - ) - ] - + [np.zeros(2)] - ) - # print('----------ee------') - # print(adata_new.obsm['clone_vector_emb']) - else: - # print('pass-------') - continue - - else: - time2 = np.where( - (adata.obs.time == t) & (adata.obs.clonei == 1) - )[0] - time4 = np.where( - (adata.obs.time == 4) & (adata.obs.clonei == 1) - )[0] - time6 = np.where( - (adata.obs.time == 6) & (adata.obs.clonei == 1) - )[0] - adata_new = AnnData( - np.vstack( - [ - adata[time2].X.toarray().mean(axis=0), - adata[time4].X.toarray().mean(axis=0), - adata[time6].X.toarray().mean(axis=0), - ] - ), - layers={ - "spliced": np.vstack( - [ - adata[time2] - .layers["spliced"] - .toarray() - .mean(axis=0), - adata[time4] - .layers["spliced"] - .toarray() - .mean(axis=0), - adata[time6] - .layers["spliced"] - .toarray() - .mean(axis=0), - ] - ), - "unspliced": np.vstack( - [ - adata[time2] - .layers["unspliced"] - .toarray() - .mean(axis=0), - adata[time4] - .layers["unspliced"] - .toarray() - .mean(axis=0), - adata[time6] - .layers["unspliced"] - .toarray() - .mean(axis=0), - ] - ), - }, - var=adata.var, - ) - - print(adata_new.X.sum(axis=1)) - adata_new.obs.loc[:, "time"] = [2, 4, 6] - adata_new.obs.loc[:, "Cell type annotation"] = "Centroid" - if not global_traj: - adata_new.obs.loc[:, "clonetype"] = ( - adata[time6].obs.clonetype.unique() - ) # use cell fate from last time point - adata_new.obs.loc[:, "clones"] = j - - if "noWell" in adata[time6].obs.columns: - adata_new.obs.loc[:, "Well"] = adata[ - time6 - ].obs.Well.unique() - - adata_new.obsm["X_umap"] = np.vstack( - [ - adata[time2].obsm["X_umap"].mean(axis=0), - adata[time4].obsm["X_umap"].mean(axis=0), - adata[time6].obsm["X_umap"].mean(axis=0), - ] - ) - adata_new.obsm["velocity_umap"] = np.vstack( - [ - adata.obsm["X_umap"][time4].mean(axis=0) - - adata.obsm["X_umap"][time2].mean(axis=0), - adata.obsm["X_umap"][time6].mean(axis=0) - - adata.obsm["X_umap"][time4].mean(axis=0), - np.zeros(2), - ] - ) - - # print(adata_new.obsm['velocity_umap']) - clone_new = AnnData( - np.vstack( - [ - clone_adata[time2].X.toarray().mean(axis=0), - clone_adata[time4].X.toarray().mean(axis=0), - clone_adata[time6].X.toarray().mean(axis=0), - ] - ), - obs=adata_new.obs, - ) - clone_new.var_names = clone_adata.var_names - clone_new.var = clone_adata.var - cen_clones.append(clone_new) - centroids.append(adata_new) - print(adata.shape) - print(len(centroids)) - adata_new = adata.concatenate( - centroids[0].concatenate(centroids[1:]), join="outer" + + consecutive_flag = np.array( + [int(time.shape[0] > 0) for time in times_index] ) - return adata_new + consecutive = np.diff(consecutive_flag) + + if np.sum(consecutive_flag == 1) >= 2 and np.any(consecutive == 0): + adata_new = AnnData( + np.vstack( + [ + np.array(adata[time].X.mean(axis=0)).squeeze() + for time in times_index + if time.shape[0] > 0 + ] + ), + var=adata.var, + ) + + adata.obs.iloc[ + np.hstack([time for time in times_index if time.shape[0] > 0]), + adata.obs.columns.get_loc("clones"), + ] = int(j) + adata_new.obs.loc[:, "time"] = [ + t + for t, time in zip([2, 4, 6], times_index) + if time.shape[0] > 0 + ] + adata_new.obs.loc[:, "clones"] = int(j) + adata_new.obs.loc[:, "state_info"] = "Centroid" + adata_new.obsm["X_emb"] = np.vstack( + [ + adata[time].obsm["X_emb"].mean(axis=0) + for time in times_index + if time.shape[0] > 0 + ] + ) + + adata_new.obsm["clone_vector_emb"] = np.vstack( + [ + adata_new.obsm["X_emb"][i + 1] - adata_new.obsm["X_emb"][i] + for i in range(adata_new.obsm["X_emb"].shape[0] - 1) + ] + + [np.zeros(2)] + ) + else: + continue + + centroids.append(adata_new) + + adata_new = adata.concatenate( + centroids[0].concatenate(centroids[1:]), join="outer" + ) + return adata_new def align_trajectory_diff( @@ -491,3 +159,422 @@ def align_trajectory_diff( print(results.shape) length_filter = np.sqrt((results[:, 2:4] ** 2).sum(1)) > length_cutoff return results[length_filter] + + +# TODO: remove unused code +# def get_clone_trajectory2( +# adata: AnnData, +# # clone_adata: AnnData, +# average_start_point: bool = True, +# global_traj: bool = True, +# times: List[int] = [2, 4, 6], +# clone_num: Optional[int] = None, +# ) -> AnnData: +# if not average_start_point: +# adata.obsm["clone_vector_emb"] = np.zeros((adata.shape[0], 2)) + +# adatas = [] +# clones = [] +# centroids = [] +# cen_clones = [] +# print(adata.shape) +# adata.obs["clones"] = 0 +# if "noWell" in adata.obs.columns: +# for w in adata.obs.Well.unique(): +# adata_w = adata[adata.obs.Well == w] +# clone_adata_w = clone_adata[clone_adata.obs.Well == w] +# for j in range(clone_adata_w.shape[1]): +# adata_w.obs["clonei"] = 0 +# # belongs to same clone +# adata_w.obs.loc[ +# clone_adata_w[:, j].X.toarray()[:, 0] >= 1, "clonei" +# ] = 1 + +# if not average_start_point: +# for i in np.where( +# (adata_w.obs.time == 2) & (adata_w.obs.clonei == 1) +# )[0]: +# next_time = np.where( +# (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) +# )[0] +# adata_w.obsm["velocity_umap"][i] = ( +# adata_w.obsm["X_umap"][next_time].mean(axis=0) +# - adata_w.obsm["X_umap"][i] +# ) +# for i in np.where( +# (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) +# )[0]: +# next_time = np.where( +# (adata_w.obs.time == 6) & (adata_w.obs.clonei == 1) +# )[0] +# adata_w.obsm["velocity_umap"][i] = ( +# adata_w.obsm["X_umap"][next_time].mean(axis=0) +# - adata_w.obsm["X_umap"][i] +# ) +# else: +# time2 = np.where( +# (adata_w.obs.time == 2) & (adata_w.obs.clonei == 1) +# )[0] +# time4 = np.where( +# (adata_w.obs.time == 4) & (adata_w.obs.clonei == 1) +# )[0] +# time6 = np.where( +# (adata_w.obs.time == 6) & (adata_w.obs.clonei == 1) +# )[0] +# if ( +# time2.shape[0] == 0 +# and time4.shape[0] == 0 +# and time6.shape[0] == 0 +# ): +# continue +# if ( +# time2.shape[0] > 0 +# and time4.shape[0] == 0 +# and time6.shape[0] > 0 +# ): +# continue +# adata_new = AnnData( +# np.vstack( +# [ +# adata_w[time2].X.toarray().mean(axis=0), +# adata_w[time4].X.toarray().mean(axis=0), +# adata_w[time6].X.toarray().mean(axis=0), +# ] +# ), +# layers={ +# "spliced": np.vstack( +# [ +# adata_w[time2] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# adata_w[time4] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# adata_w[time6] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# ] +# ), +# "unspliced": np.vstack( +# [ +# adata_w[time2] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# adata_w[time4] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# adata_w[time6] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# ] +# ), +# }, +# var=adata_w.var, +# ) + +# adata_new.obs.loc[:, "time"] = [2, 4, 6] +# adata_new.obs.loc[:, "Cell type annotation"] = "Centroid" +# print(adata_w[time6].obs.clonetype.unique()) +# print(adata_w[time6].obs) + +# adata_new.obs.loc[:, "clonetype"] = ( +# adata_w[time6].obs.clonetype.unique() +# ) # use cell fate from last time point +# adata_new.obs.loc[:, "clones"] = int(j) +# if "Well" in adata_w[time6].obs.columns: +# adata_new.obs.loc[:, "Well"] = adata_w[ +# time6 +# ].obs.Well.unique() + +# adata_new.obsm["X_umap"] = np.vstack( +# [ +# adata_w[time2].obsm["X_umap"].mean(axis=0), +# adata_w[time4].obsm["X_umap"].mean(axis=0), +# adata_w[time6].obsm["X_umap"].mean(axis=0), +# ] +# ) +# adata_new.obsm["velocity_umap"] = np.vstack( +# [ +# adata_w.obsm["X_umap"][time4].mean(axis=0) +# - adata_w.obsm["X_umap"][time2].mean(axis=0), +# adata_w.obsm["X_umap"][time6].mean(axis=0) +# - adata_w.obsm["X_umap"][time4].mean(axis=0), +# np.zeros(2), +# ] +# ) +# centroids.append(adata_new) +# clone_new = AnnData( +# np.vstack( +# [ +# clone_adata_w[time2].X.toarray().mean(axis=0), +# clone_adata_w[time4].X.toarray().mean(axis=0), +# clone_adata_w[time6].X.toarray().mean(axis=0), +# ] +# ), +# obs=adata_new.obs, +# ) +# clone_new.var_names = clone_adata.var_names +# clone_new.var = clone_adata.var +# # print(clone_new.shape) +# cen_clones.append(clone_new) + +# adata_new = adata_w.concatenate( +# centroids[0].concatenate(centroids[1:]), join="outer" +# ) +# clone_new = clone_adata_w.concatenate( +# cen_clones[0].concatenate(cen_clones[1:]), join="outer" +# ) +# adatas.append(adata_new) +# clones.append(clone_new) +# return adatas[0].concatenate(adatas[1]), clones[0].concatenate( +# clones[1] +# ) +# else: +# if clone_num is None: +# clone_num = adata.obsm["X_clone"].shape[1] +# for j in range(clone_num): +# # print(j) +# adata.obs["clonei"] = 0 +# # print('----------aa------') +# if issparse(adata.obsm["X_clone"]): +# adata.obs.loc[ +# adata.obsm["X_clone"].toarray()[:, j] >= 1, "clonei" +# ] = 1 +# else: +# adata.obs.loc[adata.obsm["X_clone"][:, j] >= 1, "clonei"] = 1 +# # print('----------bb------') + +# if not average_start_point: +# for i in np.where( +# (adata.obs.time == 2) & (adata.obs.clonei == 1) +# )[0]: +# next_time = np.where( +# (adata.obs.time == 4) & (adata.obs.clonei == 1) +# )[0] +# adata.obsm["velocity_umap"][i] = ( +# adata.obsm["X_umap"][next_time].mean(axis=0) +# - adata.obsm["X_umap"][i] +# ) +# for i in np.where( +# (adata.obs.time == 4) & (adata.obs.clonei == 1) +# )[0]: +# next_time = np.where( +# (adata.obs.time == 6) & (adata.obs.clonei == 1) +# )[0] +# adata.obsm["velocity_umap"][i] = ( +# adata.obsm["X_umap"][next_time].mean(axis=0) +# - adata.obsm["X_umap"][i] +# ) +# else: +# if global_traj: +# times_index = [] +# for t in times: +# times_index.append( +# np.where( +# (adata.obs.time_info == t) +# & (adata.obs.clonei == 1) +# )[0] +# ) + +# consecutive_flag = np.array( +# [int(time.shape[0] > 0) for time in times_index] +# ) +# consecutive = np.diff(consecutive_flag) +# if np.sum(consecutive_flag == 1) >= 2 and np.any( +# consecutive == 0 +# ): # Must be consecutive time points +# # print('centroid:', consecutive, times_index) +# adata_new = AnnData( +# np.vstack( +# [ +# np.array( +# adata[time].X.mean(axis=0) +# ).squeeze() +# for time in times_index +# if time.shape[0] > 0 +# ] +# ), +# # layers={ +# # "spliced": np.vstack( +# # [ +# # np.array( +# # adata[time] +# # .layers["spliced"] +# # .mean(axis=0) +# # ) +# # for time in times_index +# # if time.shape[0] > 0 +# # ] +# # ), +# # "unspliced": np.vstack( +# # [ +# # np.array( +# # adata[time] +# # .layers["unspliced"] +# # .mean(axis=0) +# # ) +# # for time in times_index +# # if time.shape[0] > 0 +# # ] +# # ), +# # }, +# var=adata.var, +# ) +# # print('----------cc------') +# adata.obs.iloc[ +# np.hstack( +# [ +# time +# for time in times_index +# if time.shape[0] > 0 +# ] +# ), +# adata.obs.columns.get_loc("clones"), +# ] = int(j) +# adata_new.obs.loc[:, "time"] = [ +# t +# for t, time in zip([2, 4, 6], times_index) +# if time.shape[0] > 0 +# ] +# adata_new.obs.loc[:, "clones"] = int(j) +# adata_new.obs.loc[:, "state_info"] = "Centroid" +# adata_new.obsm["X_emb"] = np.vstack( +# [ +# adata[time].obsm["X_emb"].mean(axis=0) +# for time in times_index +# if time.shape[0] > 0 +# ] +# ) +# # print('----------dd------') + +# # print(adata_new.shape) +# # print(adata_new.obsm['X_umap']) +# adata_new.obsm["clone_vector_emb"] = np.vstack( +# [ +# adata_new.obsm["X_emb"][i + 1] +# - adata_new.obsm["X_emb"][i] +# for i in range( +# adata_new.obsm["X_emb"].shape[0] - 1 +# ) +# ] +# + [np.zeros(2)] +# ) +# # print('----------ee------') +# # print(adata_new.obsm['clone_vector_emb']) +# else: +# # print('pass-------') +# continue + +# else: +# time2 = np.where( +# (adata.obs.time == t) & (adata.obs.clonei == 1) +# )[0] +# time4 = np.where( +# (adata.obs.time == 4) & (adata.obs.clonei == 1) +# )[0] +# time6 = np.where( +# (adata.obs.time == 6) & (adata.obs.clonei == 1) +# )[0] +# adata_new = AnnData( +# np.vstack( +# [ +# adata[time2].X.toarray().mean(axis=0), +# adata[time4].X.toarray().mean(axis=0), +# adata[time6].X.toarray().mean(axis=0), +# ] +# ), +# layers={ +# "spliced": np.vstack( +# [ +# adata[time2] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# adata[time4] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# adata[time6] +# .layers["spliced"] +# .toarray() +# .mean(axis=0), +# ] +# ), +# "unspliced": np.vstack( +# [ +# adata[time2] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# adata[time4] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# adata[time6] +# .layers["unspliced"] +# .toarray() +# .mean(axis=0), +# ] +# ), +# }, +# var=adata.var, +# ) + +# print(adata_new.X.sum(axis=1)) +# adata_new.obs.loc[:, "time"] = [2, 4, 6] +# adata_new.obs.loc[:, "Cell type annotation"] = "Centroid" +# if not global_traj: +# adata_new.obs.loc[:, "clonetype"] = ( +# adata[time6].obs.clonetype.unique() +# ) # use cell fate from last time point +# adata_new.obs.loc[:, "clones"] = j + +# if "noWell" in adata[time6].obs.columns: +# adata_new.obs.loc[:, "Well"] = adata[ +# time6 +# ].obs.Well.unique() + +# adata_new.obsm["X_umap"] = np.vstack( +# [ +# adata[time2].obsm["X_umap"].mean(axis=0), +# adata[time4].obsm["X_umap"].mean(axis=0), +# adata[time6].obsm["X_umap"].mean(axis=0), +# ] +# ) +# adata_new.obsm["velocity_umap"] = np.vstack( +# [ +# adata.obsm["X_umap"][time4].mean(axis=0) +# - adata.obsm["X_umap"][time2].mean(axis=0), +# adata.obsm["X_umap"][time6].mean(axis=0) +# - adata.obsm["X_umap"][time4].mean(axis=0), +# np.zeros(2), +# ] +# ) + +# # print(adata_new.obsm['velocity_umap']) +# clone_new = AnnData( +# np.vstack( +# [ +# clone_adata[time2].X.toarray().mean(axis=0), +# clone_adata[time4].X.toarray().mean(axis=0), +# clone_adata[time6].X.toarray().mean(axis=0), +# ] +# ), +# obs=adata_new.obs, +# ) +# clone_new.var_names = clone_adata.var_names +# clone_new.var = clone_adata.var +# cen_clones.append(clone_new) +# centroids.append(adata_new) +# print(adata.shape) +# print(len(centroids)) +# adata_new = adata.concatenate( +# centroids[0].concatenate(centroids[1:]), join="outer" +# ) +# return adata_new From 76226395af61b45c8251a7b16b079a8dcceff401 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 17:12:54 -0400 Subject: [PATCH 016/177] feat(styles): add module for explicit specification of colors Signed-off-by: Cameron Smith --- src/pyrovelocity/styles/colors.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/pyrovelocity/styles/colors.py diff --git a/src/pyrovelocity/styles/colors.py b/src/pyrovelocity/styles/colors.py new file mode 100644 index 000000000..ad269f17c --- /dev/null +++ b/src/pyrovelocity/styles/colors.py @@ -0,0 +1,24 @@ +from dataclasses import asdict, dataclass + +from beartype import beartype + +__all__ = ["LARRY_CELL_TYPE_COLORS"] + + +@beartype +@dataclass(frozen=True) +class LarryCellTypeColors: + Baso: str = "#1f77b4" # Dark blue + Ccr7_DC: str = "#ff7f0e" # Orange + Eos: str = "#2ca02c" # Green + Erythroid: str = "#d62728" # Red + Lymphoid: str = "#9467bd" # Purple + Mast: str = "#8c564b" # Brown + Meg: str = "#e377c2" # Pink + Monocyte: str = "#bcbd22" # Olive + Neutrophil: str = "#17becf" # Teal + Undifferentiated: str = "#aec7e8" # Light blue + pDC: str = "#ffbb78" # Light orange + + +LARRY_CELL_TYPE_COLORS = asdict(LarryCellTypeColors()) From 155a131e38fa5daf450f281da891719be5c073e3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 17:36:32 -0400 Subject: [PATCH 017/177] fix(plots): parameterize posterior time color map Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index a20f1ff87..acb90d9f0 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -27,6 +27,7 @@ def plot_posterior_time( basis="umap", addition=True, position="left", + cmap="cividis", s=3, ): if addition: @@ -51,7 +52,7 @@ def plot_posterior_time( s=s, alpha=0.4, c=adata.obs["cell_time"], - cmap="cividis", + cmap=cmap, linewidth=0, ) set_colorbar(im, ax, labelsize=5, fig=fig, position=position) From 81c5edfd1c1d323d667050a3fae3e7e4be2fc2b9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 17:38:15 -0400 Subject: [PATCH 018/177] nit(plots): update comments Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 502866ae3..467c9a179 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -313,21 +313,24 @@ def plot_vector_field_uncertainty( ax.set_title(f"Averaged\n {uncertain_measure} uncertainty ", fontsize=7) ax.axis("off") if cbar: + # from mpl_toolkits.axes_grid1 import make_axes_locatable # divider = make_axes_locatable(ax) - # cax = divider.append_axes('bottom', size='5%', pad=0.1) + # cax = divider.append_axes("bottom", size="5%", pad=0.1) # cbar = fig.colorbar(im, cax=cax, orientation="horizontal", shrink=0.6) - ### cbar.ax.set_xticks([0, 180, 360], [0, 180, 360]) - ##fig.colorbar(im, ax=ax, shrink=0.6, location='bottom') + ## cbar.ax.set_xticks([0, 180, 360], [0, 180, 360]) + ## fig.colorbar(im, ax=ax, shrink=0.6, location='bottom') + pos = ax.get_position() - cbar_ax = fig.add_axes( - [pos.x0 + 0.05, pos.y0 - 0.02, pos.width * 0.6, pos.height / 17] + cax = fig.add_axes( + [pos.x0 + 0.05, pos.y0 - 0.04, pos.width * 0.6, pos.height / 17] ) + cbar = fig.colorbar( - im, cax=cbar_ax, orientation="horizontal" + im, cax=cax, orientation="horizontal" ) # fraction=0.046, pad=0.04 cbar.ax.tick_params(axis="x", labelsize=5.5) cbar.ax.locator = MaxNLocator(nbins=2, integer=True) - # cbar.ax.set_xlabel(f"{uncertain_measure} uncertainty", fontsize=7) + # cbar.ax.set_xlabel(f"{uncertain_measure} uncertainty", fontsize=7) def plot_mean_vector_field( From f45f308019d813c8a3c9641ea693dd3d105f4436 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 17:39:18 -0400 Subject: [PATCH 019/177] fix(plots): include time and angle uncertainty Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 108 +++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 2d0e6b654..56d62bdbf 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -38,11 +38,12 @@ def plot_lineage_fate_correlation( adata_cospar: str | Path | AnnData, ax: Axes | np.ndarray, fig: Figure, - # state_color_dict: Dict, - ylabel: str = "Unipotent Monocyte lineage", + state_color_dict: Dict, + ylabel: str = "Monocyte lineage", dotsize: int = 3, scale: float = 0.35, arrow: float = 3.5, + lineage_fate_correlation_path: str | Path = "lineage_fate_correlation.pdf", ): """ Plot lineage fate correlation with shared latent time estimates. @@ -136,23 +137,26 @@ def plot_lineage_fate_correlation( { "X": adata_pyrovelocity.obsm["X_emb"][:, 0], "Y": adata_pyrovelocity.obsm["X_emb"][:, 1], - "celltype": adata_pyrovelocity.obs.state_info, + "cell_type": adata_pyrovelocity.obs.state_info, } ) sns.scatterplot( - data=res, x="X", y="Y", - hue="celltype", - # palette=state_color_dict, - ax=ax[0], - s=dotsize, + data=res, alpha=0.90, + s=dotsize, linewidth=0, + edgecolor="none", + hue="cell_type", + palette=state_color_dict, + ax=ax[0], legend=False, ) + ax[0].axis("off") ax[0].set_title("Cell types", fontsize=7) ax[0].set_ylabel(ylabel, fontsize=7) + scv.pl.velocity_embedding_grid( adata_input_clone, scale=scale, @@ -198,50 +202,49 @@ def plot_lineage_fate_correlation( plot_vector_field_uncertainty( adata_pyrovelocity, embed_mean, - cell_time_cov, + cell_time_std, ax=ax[3], cbar=True, fig=fig, basis="emb", scale=scale, + arrow_size=arrow, p_mass_min=1, + autoscale=True, density=density, - arrow_size=arrow, only_grid=False, - autoscale=True, uncertain_measure="shared time", cmap="winter", + cmax=None, ) - ax[3].set_title( - "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 - ) + ax[3].set_title("Shared time uncertainty", fontsize=7) - cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] - cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) - cell_magnitudes_std = cell_magnitudes.std(axis=-2) - cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean - print(cell_magnitudes_cov) + # cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] + # cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) + # cell_magnitudes_std = cell_magnitudes.std(axis=-2) + # cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean + # print(cell_magnitudes_cov) - plot_vector_field_uncertainty( - adata_pyrovelocity, - embed_mean, - cell_magnitudes_cov, - ax=ax[4], - cbar=True, - fig=fig, - basis="emb", - scale=scale, - p_mass_min=1, - density=density, - arrow_size=arrow, - only_grid=False, - autoscale=True, - uncertain_measure="base magnitude", - cmap="summer", - ) - ax[4].set_title( - "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 - ) + # plot_vector_field_uncertainty( + # adata_pyrovelocity, + # embed_mean, + # cell_magnitudes_cov, + # ax=ax[4], + # cbar=True, + # fig=fig, + # basis="emb", + # scale=scale, + # p_mass_min=1, + # density=density, + # arrow_size=arrow, + # only_grid=False, + # autoscale=True, + # uncertain_measure="base magnitude", + # cmap="summer", + # ) + # ax[4].set_title( + # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + # ) pca_angles = posterior_samples["pca_embeds_angle"] pca_cell_angles = pca_angles / np.pi * 180 @@ -252,21 +255,21 @@ def plot_lineage_fate_correlation( adata_pyrovelocity, embed_mean, pca_angles_std, - ax=ax[5], + ax=ax[4], cbar=True, fig=fig, basis="emb", scale=scale, + arrow_size=arrow, p_mass_min=1, + autoscale=True, density=density, - arrow_size=arrow, only_grid=False, - autoscale=True, - uncertain_measure="base magnitude", + uncertain_measure="PCA angle", cmap="inferno", - cmax=360, + cmax=None, ) - ax[5].set_title( + ax[4].set_title( "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 ) @@ -289,10 +292,10 @@ def plot_lineage_fate_correlation( color="fate_potency_transition_map", cmap="inferno_r", show=False, - ax=ax[6], + ax=ax[5], s=dotsize, ) - ax[6].set_title("Clonal fate potency", fontsize=7) + ax[5].set_title("Clonal fate potency", fontsize=7) gold_standard = adata_cospar_obs_subset.obs.fate_potency_transition_map select = ~np.isnan(gold_standard) scv.pl.scatter( @@ -301,11 +304,11 @@ def plot_lineage_fate_correlation( basis="emb", s=dotsize, cmap="inferno", - ax=ax[7], + ax=ax[6], show=False, fontsize=7, ) - ax[7].set_title( + ax[6].set_title( "Scvelo latent time\ncorrelation: %.2f" % spearmanr( -gold_standard[select], adata_scvelo.obs.latent_time.values[select] @@ -315,13 +318,14 @@ def plot_lineage_fate_correlation( plot_posterior_time( posterior_samples, adata_pyrovelocity, - ax=ax[8], + ax=ax[7], basis="emb", fig=fig, addition=False, position="right", + cmap="inferno", ) - ax[8].set_title( + ax[7].set_title( "Pyro-Velocity shared time\ncorrelation: %.2f" % spearmanr( -gold_standard[select], @@ -332,7 +336,7 @@ def plot_lineage_fate_correlation( for ext in ["", ".png"]: fig.savefig( - f"lineage_fate_correlation.pdf{ext}", + fname=f"{lineage_fate_correlation_path}{ext}", facecolor=fig.get_facecolor(), bbox_inches="tight", edgecolor="none", From d07e96121216f261c2030f8344ef20c82cdf309f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 17:40:28 -0400 Subject: [PATCH 020/177] feat(tasks): draft time fate correlation task Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/pyrovelocity/tasks/time_fate_correlation.py diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py new file mode 100644 index 000000000..91bd62f26 --- /dev/null +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -0,0 +1,49 @@ +from pathlib import Path + +import matplotlib.pyplot as plt + +from pyrovelocity.logging import configure_logging +from pyrovelocity.plots import plot_lineage_fate_correlation +from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS +from pyrovelocity.utils import load_anndata_from_path + +logger = configure_logging(__name__) + + +def estimate_time_lineage_fate_correlation( + reports_path: str | Path = "reports", +): + data_set_name = "larry_mono" + model_name = "model2" + data_set_model_pairing = f"{data_set_name}_{model_name}" + model_path = f"models/{data_set_model_pairing}" + adata_pyrovelocity = load_anndata_from_path( + f"{model_path}/postprocessed.h5ad" + ) + larry_mono_plot_path = ( + Path(reports_path) / "larry_mono_time_fate_correlation.pdf" + ) + adata_dynamical = load_anndata_from_path( + f"data/processed/larry_mono_processed.h5ad" + ) + adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + + fig = plt.figure( + figsize=(17, 2.75), + constrained_layout=False, + ) + fig.subplots_adjust( + hspace=0.4, wspace=0.2, left=0.01, right=0.99, top=0.95, bottom=0.3 + ) + ax = fig.subplots(1, 8) + + plot_lineage_fate_correlation( + posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", + adata_pyrovelocity=adata_pyrovelocity, + adata_scvelo=adata_dynamical, + adata_cospar=adata_cospar, + ax=ax, + fig=fig, + state_color_dict=LARRY_CELL_TYPE_COLORS, + lineage_fate_correlation_path=larry_mono_plot_path, + ) From ff63d318736abe16da7efd935a9865cbc4a1280d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 25 Aug 2024 18:10:12 -0400 Subject: [PATCH 021/177] fix(plots): disable transparency in lineage fate correlation Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_lineage_fate_correlation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 56d62bdbf..4ffc68712 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -341,4 +341,5 @@ def plot_lineage_fate_correlation( bbox_inches="tight", edgecolor="none", dpi=300, + transparent=False, ) From 7a55e69af59f59a225fc23deb6db7df778a7be68 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 00:43:06 -0400 Subject: [PATCH 022/177] feat(workflows): add demo flag automatically set all flags to demo mode Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/constants.py | 59 ++++++++++++++++--------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/pyrovelocity/workflows/constants.py b/src/pyrovelocity/workflows/constants.py index 83dcd8a6c..86f1e3993 100644 --- a/src/pyrovelocity/workflows/constants.py +++ b/src/pyrovelocity/workflows/constants.py @@ -10,24 +10,49 @@ load_dotenv() -# Extract a subset of observations and variables from each -# data set for testing purposes prior to model training when True. +# Demo mode switches to the following settings: +# +# PYROVELOCITY_TESTING_FLAG=True +# PYROVELOCITY_DATA_SUBSET=True +# PYROVELOCITY_UPLOAD_RESULTS=False +# PYROVELOCITY_OVERWRITE_CACHE=True +# # Defaults to False if not set. -PYROVELOCITY_TESTING_FLAG = str_to_bool( - os.getenv("PYROVELOCITY_TESTING_FLAG", "False") +PYROVELOCITY_DEMO_FLAG = str_to_bool( + os.getenv("PYROVELOCITY_DEMO_FLAG", "False") ) -# Uses only a subset of the list of supported data sets when True. -# Defaults to False if not set. -PYROVELOCITY_DATA_SUBSET = str_to_bool( - os.getenv("PYROVELOCITY_DATA_SUBSET", "False") -) +if PYROVELOCITY_DEMO_FLAG: + PYROVELOCITY_TESTING_FLAG = True + PYROVELOCITY_DATA_SUBSET = True + PYROVELOCITY_UPLOAD_RESULTS = False + PYROVELOCITY_OVERWRITE_CACHE = True +else: + # Extract a subset of observations and variables from each + # data set for testing purposes prior to model training when True. + # Defaults to False if not set. + PYROVELOCITY_TESTING_FLAG = str_to_bool( + os.getenv("PYROVELOCITY_TESTING_FLAG", "False") + ) -# Overwrite the cache of processed data sets when True. -# Defaults to False if not set. -PYROVELOCITY_OVERWRITE_CACHE = str_to_bool( - os.getenv("PYROVELOCITY_OVERWRITE_CACHE", "False") -) + # Uses only a subset of the list of supported data sets when True. + # Defaults to False if not set. + PYROVELOCITY_DATA_SUBSET = str_to_bool( + os.getenv("PYROVELOCITY_DATA_SUBSET", "False") + ) + + # Overwrite the cache of processed data sets when True. + # Defaults to False if not set. + PYROVELOCITY_OVERWRITE_CACHE = str_to_bool( + os.getenv("PYROVELOCITY_OVERWRITE_CACHE", "False") + ) + + # Upload summary results of the workflow to human-readable + # object storage path when True. + # Defaults to True if not set. + PYROVELOCITY_UPLOAD_RESULTS = str_to_bool( + os.getenv("PYROVELOCITY_UPLOAD_RESULTS", "True") + ) # Use the cache of processed data sets when True. # Defaults to True if not set. @@ -35,12 +60,6 @@ os.getenv("PYROVELOCITY_CACHE_FLAG", "True") ) -# Upload summary results of the workflow to human-readable -# object storage path when True. -# Defaults to True if not set. -PYROVELOCITY_UPLOAD_RESULTS = str_to_bool( - os.getenv("PYROVELOCITY_UPLOAD_RESULTS", "True") -) logger.info( f"\nPYROVELOCITY_TESTING_FLAG: {PYROVELOCITY_TESTING_FLAG}\n" From f3cf7aaa56c42469d9eef491ecfd85edbeff0f05 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 01:44:28 -0400 Subject: [PATCH 023/177] fix(plots): make posterior time titles and colorbar optional Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 35 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index acb90d9f0..70675b874 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -29,6 +29,8 @@ def plot_posterior_time( position="left", cmap="cividis", s=3, + show_colorbar=True, + show_titles=True, ): if addition: sns.set_style("white") @@ -38,7 +40,8 @@ def plot_posterior_time( plt.hist(posterior_samples["cell_time"].mean(0), bins=100, label="test") plt.xlabel("mean of cell time") plt.ylabel("frequency") - plt.title("Histogram of cell time posterior samples") + if show_titles: + plt.title("Histogram of cell time posterior samples") plt.legend() pos_mean_time = posterior_samples["cell_time"].mean(0) adata.obs["cell_time"] = pos_mean_time / pos_mean_time.max() @@ -55,21 +58,23 @@ def plot_posterior_time( cmap=cmap, linewidth=0, ) - set_colorbar(im, ax, labelsize=5, fig=fig, position=position) + if show_colorbar: + set_colorbar(im, ax, labelsize=5, fig=fig, position=position) ax.axis("off") - if "cytotrace" in adata.obs.columns: - ax.set_title( - "Pyro-Velocity shared time\ncorrelation with Cytotrace: %.2f" - % ( - spearmanr( - adata.obs["cell_time"].values, - 1 - adata.obs.cytotrace.values, - )[0] - ), - fontsize=7, - ) - else: - ax.set_title("Pyro-Velocity shared time\n", fontsize=7) + if show_titles: + if "cytotrace" in adata.obs.columns: + ax.set_title( + "Pyro-Velocity shared time\ncorrelation with Cytotrace: %.2f" + % ( + spearmanr( + adata.obs["cell_time"].values, + 1 - adata.obs.cytotrace.values, + )[0] + ), + fontsize=7, + ) + else: + ax.set_title("Pyro-Velocity shared time\n", fontsize=7) @beartype From 7683f2ec340c11cbe095f354180468c3d11dca44 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 01:46:21 -0400 Subject: [PATCH 024/177] fix(plots): reorder angle uncertainty of lineage fate correlation Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 215 +++++++++++------- 1 file changed, 130 insertions(+), 85 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 4ffc68712..c44a16441 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -44,6 +44,9 @@ def plot_lineage_fate_correlation( scale: float = 0.35, arrow: float = 3.5, lineage_fate_correlation_path: str | Path = "lineage_fate_correlation.pdf", + save_plot: bool = True, + show_colorbars: bool = False, + show_titles: bool = False, ): """ Plot lineage fate correlation with shared latent time estimates. @@ -154,7 +157,10 @@ def plot_lineage_fate_correlation( legend=False, ) ax[0].axis("off") - ax[0].set_title("Cell types", fontsize=7) + if show_titles: + ax[0].set_title("Cell types", fontsize=7) + else: + ax[0].set_title("", fontsize=7) ax[0].set_ylabel(ylabel, fontsize=7) scv.pl.velocity_embedding_grid( @@ -169,7 +175,7 @@ def plot_lineage_fate_correlation( vkey="clone_vector", basis="emb", ax=ax[1], - title="Clonal progression", + title="Clonal progression" if show_titles else "", color="gray", arrow_color="black", fontsize=7, @@ -186,65 +192,37 @@ def plot_lineage_fate_correlation( linewidth=1, basis="emb", ax=ax[2], - title="Scvelo", + title="", fontsize=7, color="gray", arrow_color="black", ) - ax[2].set_title( - "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=7 - ) - cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() - cell_time_std = posterior_samples["cell_time"].std(0).flatten() - cell_time_cov = cell_time_std / cell_time_mean - print(cell_time_cov) + if show_titles: + ax[2].set_title( + "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=7 + ) - plot_vector_field_uncertainty( - adata_pyrovelocity, - embed_mean, - cell_time_std, - ax=ax[3], - cbar=True, - fig=fig, + scv.pl.velocity_embedding_grid( + adata=adata_pyrovelocity, basis="emb", + vkey="velocity_pyro", + show=False, + s=dotsize, + density=density, scale=scale, - arrow_size=arrow, - p_mass_min=1, autoscale=True, - density=density, - only_grid=False, - uncertain_measure="shared time", - cmap="winter", - cmax=None, + arrow_size=arrow, + linewidth=1, + ax=ax[3], + title="", + fontsize=7, + color="gray", + arrow_color="black", ) - ax[3].set_title("Shared time uncertainty", fontsize=7) - - # cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] - # cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) - # cell_magnitudes_std = cell_magnitudes.std(axis=-2) - # cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean - # print(cell_magnitudes_cov) - - # plot_vector_field_uncertainty( - # adata_pyrovelocity, - # embed_mean, - # cell_magnitudes_cov, - # ax=ax[4], - # cbar=True, - # fig=fig, - # basis="emb", - # scale=scale, - # p_mass_min=1, - # density=density, - # arrow_size=arrow, - # only_grid=False, - # autoscale=True, - # uncertain_measure="base magnitude", - # cmap="summer", - # ) - # ax[4].set_title( - # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 - # ) + if show_titles: + ax[3].set_title( + "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + ) pca_angles = posterior_samples["pca_embeds_angle"] pca_cell_angles = pca_angles / np.pi * 180 @@ -256,7 +234,7 @@ def plot_lineage_fate_correlation( embed_mean, pca_angles_std, ax=ax[4], - cbar=True, + cbar=show_colorbars, fig=fig, basis="emb", scale=scale, @@ -266,12 +244,13 @@ def plot_lineage_fate_correlation( density=density, only_grid=False, uncertain_measure="PCA angle", - cmap="inferno", + cmap="winter", cmax=None, + color_vector_field_by_measure=False, + show_titles=show_titles, ) - ax[4].set_title( - "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 - ) + if show_titles: + ax[4].set_title("Pyro-Velocity angle uncertainty", fontsize=7) # The obs names in adata_pyrovelocity have a "-N" suffix that # is not present in the adata_cospar obs Index. @@ -285,6 +264,7 @@ def plot_lineage_fate_correlation( adata_cospar_obs_subset = adata_cospar[ patched_adata_pyrovelocity_obs_names, : ] + scatter_dotsize_factor = 3 scv.pl.scatter( adata=adata_cospar_obs_subset, basis="emb", @@ -293,28 +273,36 @@ def plot_lineage_fate_correlation( cmap="inferno_r", show=False, ax=ax[5], - s=dotsize, + s=dotsize * scatter_dotsize_factor, + colorbar=show_colorbars, + title="", ) - ax[5].set_title("Clonal fate potency", fontsize=7) + if show_titles: + ax[5].set_title("Clonal fate potency", fontsize=7) gold_standard = adata_cospar_obs_subset.obs.fate_potency_transition_map select = ~np.isnan(gold_standard) scv.pl.scatter( - adata_scvelo, + adata=adata_scvelo, c="latent_time", basis="emb", - s=dotsize, + s=dotsize * scatter_dotsize_factor, cmap="inferno", ax=ax[6], show=False, fontsize=7, + colorbar=show_colorbars, + title="", ) - ax[6].set_title( - "Scvelo latent time\ncorrelation: %.2f" - % spearmanr( - -gold_standard[select], adata_scvelo.obs.latent_time.values[select] - )[0], - fontsize=7, - ) + if show_titles: + ax[6].set_title( + "Scvelo latent time\ncorrelation: %.2f" + % spearmanr( + -gold_standard[select], + adata_scvelo.obs.latent_time.values[select], + )[0], + fontsize=7, + ) + plot_posterior_time( posterior_samples, adata_pyrovelocity, @@ -324,22 +312,79 @@ def plot_lineage_fate_correlation( addition=False, position="right", cmap="inferno", + s=dotsize, + show_colorbar=show_colorbars, + show_titles=show_titles, ) - ax[7].set_title( - "Pyro-Velocity shared time\ncorrelation: %.2f" - % spearmanr( - -gold_standard[select], - posterior_samples["cell_time"].mean(0).flatten()[select], - )[0], - fontsize=7, - ) - - for ext in ["", ".png"]: - fig.savefig( - fname=f"{lineage_fate_correlation_path}{ext}", - facecolor=fig.get_facecolor(), - bbox_inches="tight", - edgecolor="none", - dpi=300, - transparent=False, + if show_titles: + ax[7].set_title( + "Pyro-Velocity shared time\ncorrelation: %.2f" + % spearmanr( + -gold_standard[select], + posterior_samples["cell_time"].mean(0).flatten()[select], + )[0], + fontsize=7, ) + + if save_plot: + for ext in ["", ".png"]: + fig.savefig( + fname=f"{lineage_fate_correlation_path}{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + transparent=False, + ) + + # cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() + # cell_time_std = posterior_samples["cell_time"].std(0).flatten() + # cell_time_cov = cell_time_std / cell_time_mean + # print(cell_time_cov) + + # plot_vector_field_uncertainty( + # adata_pyrovelocity, + # embed_mean, + # cell_time_std, + # ax=ax[3], + # cbar=True, + # fig=fig, + # basis="emb", + # scale=scale, + # arrow_size=arrow, + # p_mass_min=1, + # autoscale=True, + # density=density, + # only_grid=False, + # uncertain_measure="shared time", + # cmap="winter", + # cmax=None, + # ) + # ax[3].set_title("Shared time uncertainty", fontsize=7) + + # cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] + # cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) + # cell_magnitudes_std = cell_magnitudes.std(axis=-2) + # cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean + # print(cell_magnitudes_cov) + + # plot_vector_field_uncertainty( + # adata_pyrovelocity, + # embed_mean, + # cell_magnitudes_cov, + # ax=ax[4], + # cbar=True, + # fig=fig, + # basis="emb", + # scale=scale, + # p_mass_min=1, + # density=density, + # arrow_size=arrow, + # only_grid=False, + # autoscale=True, + # uncertain_measure="base magnitude", + # cmap="summer", + # ) + # ax[4].set_title( + # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + # ) From 3e301b7d7aad6381cfbdcdfa8b3f2cad9e0b8303 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 01:47:16 -0400 Subject: [PATCH 025/177] fix(tasks): map time fate correlation over all data set configurations Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 109 +++++++++++++----- 1 file changed, 79 insertions(+), 30 deletions(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index 91bd62f26..313cc214a 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -6,6 +6,12 @@ from pyrovelocity.plots import plot_lineage_fate_correlation from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import load_anndata_from_path +from pyrovelocity.workflows.main_configuration import ( + larry_configuration, + larry_mono_configuration, + larry_multilineage_configuration, + larry_neu_configuration, +) logger = configure_logging(__name__) @@ -13,37 +19,80 @@ def estimate_time_lineage_fate_correlation( reports_path: str | Path = "reports", ): - data_set_name = "larry_mono" - model_name = "model2" - data_set_model_pairing = f"{data_set_name}_{model_name}" - model_path = f"models/{data_set_model_pairing}" - adata_pyrovelocity = load_anndata_from_path( - f"{model_path}/postprocessed.h5ad" - ) - larry_mono_plot_path = ( - Path(reports_path) / "larry_mono_time_fate_correlation.pdf" - ) - adata_dynamical = load_anndata_from_path( - f"data/processed/larry_mono_processed.h5ad" - ) - adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + configurations = [ + larry_mono_configuration, + larry_neu_configuration, + larry_multilineage_configuration, + larry_configuration, + ] + n_rows = len(configurations) + n_cols = 8 + width = 12 + height = width * (n_rows / n_cols) fig = plt.figure( - figsize=(17, 2.75), - constrained_layout=False, - ) - fig.subplots_adjust( - hspace=0.4, wspace=0.2, left=0.01, right=0.99, top=0.95, bottom=0.3 + figsize=(width, height), + constrained_layout=True, ) - ax = fig.subplots(1, 8) - - plot_lineage_fate_correlation( - posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", - adata_pyrovelocity=adata_pyrovelocity, - adata_scvelo=adata_dynamical, - adata_cospar=adata_cospar, - ax=ax, - fig=fig, - state_color_dict=LARRY_CELL_TYPE_COLORS, - lineage_fate_correlation_path=larry_mono_plot_path, + all_axes = fig.subplots(len(configurations), 8) + for ax in all_axes.flat: + ax.set_aspect("equal", adjustable="box") + # fig.subplots_adjust( + # left=0.01, + # bottom=0.3, + # # bottom=0.1, + # right=0.99, + # top=0.95, + # # top=0.15, + # hspace=0.4, + # # hspace=0.2, + # wspace=0.2, + # ) + + model_name = "model2" + adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + + for i, config in enumerate(configurations): + data_set_name = config.download_dataset.data_set_name + data_set_model_pairing = f"{data_set_name}_{model_name}" + model_path = f"models/{data_set_model_pairing}" + + adata_pyrovelocity = load_anndata_from_path( + f"{model_path}/postprocessed.h5ad" + ) + plot_path = ( + Path(reports_path) / f"{data_set_name}_time_fate_correlation.pdf" + ) + adata_dynamical = load_anndata_from_path( + f"data/processed/{data_set_name}_processed.h5ad" + ) + + axes = all_axes[i] if len(configurations) > 1 else all_axes + + plot_lineage_fate_correlation( + posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", + adata_pyrovelocity=adata_pyrovelocity, + adata_scvelo=adata_dynamical, + adata_cospar=adata_cospar, + ax=axes, + fig=fig, + state_color_dict=LARRY_CELL_TYPE_COLORS, + lineage_fate_correlation_path=plot_path, + ylabel=f"{data_set_name}", + show_titles=True if i == 0 else False, + show_colorbars=True if i == (len(configurations) - 1) else False, + ) + + combined_plot_path = ( + Path(reports_path) / "combined_time_fate_correlation.pdf" ) + for ext in ["", ".png"]: + fig.savefig( + fname=f"{combined_plot_path}{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + transparent=False, + ) + plt.close(fig) From 4f5d517cca440ce1d98dc591f067110197912802 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 01:54:14 -0400 Subject: [PATCH 026/177] fix(plots): allow scaled measures as well as vector fields Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 144 +++++++++++++---------- 1 file changed, 82 insertions(+), 62 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 467c9a179..6cd592779 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -219,29 +219,19 @@ def plot_vector_field_uncertainty( uncertain_measure="angle", cmap="winter", cmax=0.305, + color_vector_field_by_measure=False, + dot_size=1, + show_titles: bool = True, ): - if cmap == "inferno": - colormap = cm.inferno - elif cmap == "summer": - colormap = cm.summer - else: - colormap = cm.winter - - # print(adata.shape) - # print(embeds_radian_or_magnitude.shape) - if uncertain_measure == "angle": adata.obs["uncertain"] = get_posterior_sample_angle_uncertainty( embeds_radian_or_magnitude / np.pi * 180 ) + elif uncertain_measure in ["base magnitude", "shared time", "PCA angle"]: + adata.obs["uncertain"] = embeds_radian_or_magnitude else: adata.obs["uncertain"] = embeds_radian_or_magnitude.std(axis=0) - if uncertain_measure in ["base magnitude", "shared time", "PCA angle"]: - adata.obs["uncertain"] = embeds_radian_or_magnitude - - dot_size = 1 - # plt.rcParams["image.cmap"] = "winter" if ax is None: ax = fig.subplots(1, 2) if isinstance(ax, list) and len(ax) == 2: @@ -263,57 +253,87 @@ def plot_vector_field_uncertainty( edgecolors="face", ) ax[0].axis("off") - ax[0].set_title( - f"Single-cell\n {uncertain_measure} uncertainty ", fontsize=7 - ) + if show_titles: + ax[0].set_title( + f"Single-cell\n {uncertain_measure} uncertainty ", + fontsize=7, + ) ax = ax[1] - X_grid, V_grid, uncertain = project_grid_points( - adata.obsm[f"X_{basis}"], - embed_mean, - adata.obs["uncertain"].values, - p_mass_min=p_mass_min, - autoscale=autoscale, - density=density, - ) + if color_vector_field_by_measure: + X_grid, V_grid, uncertain = project_grid_points( + adata.obsm[f"X_{basis}"], + embed_mean, + adata.obs["uncertain"].values, + p_mass_min=p_mass_min, + autoscale=autoscale, + density=density, + ) - # scale = None - hl, hw, hal = default_arrow(arrow_size) - quiver_kwargs = {"angles": "xy", "scale_units": "xy"} - # quiver_kwargs = {"angles": "xy", "scale_units": "width"} - quiver_kwargs.update({"width": 0.001, "headlength": hl / 2}) - quiver_kwargs.update({"headwidth": hw / 2, "headaxislength": hal / 2}) - quiver_kwargs.update({"linewidth": 1, "zorder": 3}) - norm = Normalize() - norm.autoscale(uncertain) - ax.scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=1, - linewidth=0, - color="gray", - alpha=0.22, - ) - im = ax.quiver( - X_grid[:, 0], - X_grid[:, 1], - V_grid[:, 0], - V_grid[:, 1], - uncertain, - norm=None, - cmap=cmap, - edgecolors="face", - scale=scale, - clim=( - np.percentile(uncertain, 5), - np.percentile(uncertain, 95) if cmax is None else cmax, - ), - **quiver_kwargs, - ) - ax.set_title(f"Averaged\n {uncertain_measure} uncertainty ", fontsize=7) - ax.axis("off") + hl, hw, hal = default_arrow(arrow_size) + quiver_kwargs = {"angles": "xy", "scale_units": "xy"} + quiver_kwargs.update({"width": 0.001, "headlength": hl / 2}) + quiver_kwargs.update({"headwidth": hw / 2, "headaxislength": hal / 2}) + quiver_kwargs.update({"linewidth": 1, "zorder": 3}) + norm = Normalize() + norm.autoscale(uncertain) + ax.scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=1, + linewidth=0, + color="gray", + alpha=0.22, + ) + im = ax.quiver( + X_grid[:, 0], + X_grid[:, 1], + V_grid[:, 0], + V_grid[:, 1], + uncertain, + norm=None, + cmap=cmap, + edgecolors="face", + scale=scale, + clim=( + np.percentile(uncertain, 5), + np.percentile(uncertain, 95) if cmax is None else cmax, + ), + **quiver_kwargs, + ) + if show_titles: + ax.set_title( + f"Averaged\n {uncertain_measure} uncertainty ", fontsize=7 + ) + ax.axis("off") + else: + order = np.argsort(adata.obs["uncertain"].values) + ordered_uncertainty_measure = adata.obs["uncertain"].values[order] + im = ax.scatter( + adata.obsm[f"X_{basis}"][:, 0][order], + adata.obsm[f"X_{basis}"][:, 1][order], + # c=colormap(norm(adata.obs["uncertain"].values[order])), + c=ordered_uncertainty_measure, + cmap=cmap, + norm=None, + vmin=0 + if "angle" in uncertain_measure + else np.percentile(ordered_uncertainty_measure, 5), + vmax=360 + if "angle" in uncertain_measure + else np.percentile(ordered_uncertainty_measure, 95), + s=dot_size, + linewidth=1, + edgecolors="face", + ) + ax.axis("off") + if show_titles: + ax.set_title( + f"Single-cell\n {uncertain_measure} uncertainty ", fontsize=7 + ) if cbar: # from mpl_toolkits.axes_grid1 import make_axes_locatable + # divider = make_axes_locatable(ax) # cax = divider.append_axes("bottom", size="5%", pad=0.1) # cbar = fig.colorbar(im, cax=cax, orientation="horizontal", shrink=0.6) @@ -322,7 +342,7 @@ def plot_vector_field_uncertainty( pos = ax.get_position() cax = fig.add_axes( - [pos.x0 + 0.05, pos.y0 - 0.04, pos.width * 0.6, pos.height / 17] + [pos.x0 + 0.05, pos.y0 - 0.05, pos.width * 0.6, pos.height / 17] ) cbar = fig.colorbar( From febd9a83fd34b883821208a5aa98aaa10b69e289 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 14:56:59 -0400 Subject: [PATCH 027/177] fix(styles): enable unicode in latex Signed-off-by: Cameron Smith --- src/pyrovelocity/styles/common.mplstyle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/styles/common.mplstyle b/src/pyrovelocity/styles/common.mplstyle index 09fefec64..0485bbaa1 100644 --- a/src/pyrovelocity/styles/common.mplstyle +++ b/src/pyrovelocity/styles/common.mplstyle @@ -59,4 +59,5 @@ mathtext.fontset : cm # Use LaTeX for math formatting text.usetex : True -text.latex.preamble : \usepackage{amsmath} \usepackage{amssymb} +text.latex.preamble : \usepackage{amsmath} \usepackage{amssymb} \usepackage[utf8]{inputenc} \usepackage{textcomp} +text.latex.unicode : True From e682a6303670189d44db7aa56d09f9245e9fc279 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 14:58:02 -0400 Subject: [PATCH 028/177] feat(styles): add function to set matplotlib style globally - check if latex is in path - TODO: the latex distribution requires standard packages that may only be able to be checked via tlmgr Signed-off-by: Cameron Smith --- src/pyrovelocity/styles/__init__.py | 5 +++ src/pyrovelocity/styles/configure.py | 48 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/pyrovelocity/styles/configure.py diff --git a/src/pyrovelocity/styles/__init__.py b/src/pyrovelocity/styles/__init__.py index e69de29bb..564314c38 100644 --- a/src/pyrovelocity/styles/__init__.py +++ b/src/pyrovelocity/styles/__init__.py @@ -0,0 +1,5 @@ +from pyrovelocity.styles.configure import configure_matplotlib_style + +__all__ = [ + "configure_matplotlib_style", +] diff --git a/src/pyrovelocity/styles/configure.py b/src/pyrovelocity/styles/configure.py new file mode 100644 index 000000000..d12027062 --- /dev/null +++ b/src/pyrovelocity/styles/configure.py @@ -0,0 +1,48 @@ +import shutil + +import matplotlib as mpl +import matplotlib.pyplot as plt +from beartype import beartype +from beartype.typing import Any, Dict + +__all__ = [ + "configure_matplotlib_style", +] + + +@beartype +def configure_matplotlib_style( + override_defaults: Dict[str, Any] = {}, +): + """ + Configure the global matplotlib style. + + Accepts a dictionary to override default rcParams set in the + `common.mplstyle` file. + + For example, to override the default figure size, use: + + ``` + { + # Example: Set a global figure size + "figure.figsize": (8, 6), + # Add more global settings as needed + }, + ``` + + Args: + override_defaults (Dict[str, Any], optional): + Dictionary to update default rcParams. Defaults to {}. + """ + plt.style.use("pyrovelocity.styles.common") + + if not shutil.which("latex"): + mpl.rcParams.update( + { + "text.usetex": False, + } + ) + + mpl.rcParams.update( + override_defaults, + ) From c83153e70768c46a646c7111278437c51452069f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 14:58:48 -0400 Subject: [PATCH 029/177] fix(plots): update lineage fate correlation titles and font size Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 135 ++++++++++++++---- 1 file changed, 106 insertions(+), 29 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index c44a16441..248aa721d 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -1,5 +1,6 @@ from pathlib import Path +import matplotlib import numpy as np import pandas as pd import scvelo as scv @@ -47,6 +48,8 @@ def plot_lineage_fate_correlation( save_plot: bool = True, show_colorbars: bool = False, show_titles: bool = False, + default_fontsize: int = 7, + default_title_padding: int = 2, ): """ Plot lineage fate correlation with shared latent time estimates. @@ -158,13 +161,21 @@ def plot_lineage_fate_correlation( ) ax[0].axis("off") if show_titles: - ax[0].set_title("Cell types", fontsize=7) + ax[0].set_title( + "Cell types", + fontsize=default_fontsize, + pad=default_title_padding, + ) else: - ax[0].set_title("", fontsize=7) - ax[0].set_ylabel(ylabel, fontsize=7) + ax[0].set_title( + "", + fontsize=default_fontsize, + pad=default_title_padding, + ) + ax[0].set_ylabel(ylabel, fontsize=default_fontsize) scv.pl.velocity_embedding_grid( - adata_input_clone, + adata=adata_input_clone, scale=scale, autoscale=True, show=False, @@ -175,14 +186,21 @@ def plot_lineage_fate_correlation( vkey="clone_vector", basis="emb", ax=ax[1], - title="Clonal progression" if show_titles else "", + title="", color="gray", arrow_color="black", - fontsize=7, + fontsize=default_fontsize, ) + ax[1].axis("off") + if show_titles: + ax[1].set_title( + "Clonal progression", + fontsize=default_fontsize, + pad=default_title_padding, + ) scv.pl.velocity_embedding_grid( - adata_scvelo, + adata=adata_scvelo, show=False, s=dotsize, density=density, @@ -193,13 +211,24 @@ def plot_lineage_fate_correlation( basis="emb", ax=ax[2], title="", - fontsize=7, + fontsize=default_fontsize, color="gray", arrow_color="black", ) + ax[2].axis("off") if show_titles: ax[2].set_title( - "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=7 + # "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=default_fontsize + f"scVelo ({scvelo_cos_mean:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, + ) + else: + ax[2].set_title( + # f"" + f"({scvelo_cos_mean:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, ) scv.pl.velocity_embedding_grid( @@ -215,13 +244,26 @@ def plot_lineage_fate_correlation( linewidth=1, ax=ax[3], title="", - fontsize=7, + fontsize=default_fontsize, color="gray", arrow_color="black", ) + ax[3].axis("off") if show_titles: ax[3].set_title( - "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=default_fontsize + rf"Pyro\thinspace-Velocity ({pyro_cos_mean:.2f})" + if matplotlib.rcParams["text.usetex"] + else f"Pyro\u2009-Velocity ({pyro_cos_mean:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, + ) + else: + ax[3].set_title( + # f"" + f"({pyro_cos_mean:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, ) pca_angles = posterior_samples["pca_embeds_angle"] @@ -250,7 +292,13 @@ def plot_lineage_fate_correlation( show_titles=show_titles, ) if show_titles: - ax[4].set_title("Pyro-Velocity angle uncertainty", fontsize=7) + ax[4].set_title( + r"Pyro\thinspace-Velocity angle $\sigma$" + if matplotlib.rcParams["text.usetex"] + else "Pyro\u2009-Velocity angle σ", + fontsize=default_fontsize, + pad=default_title_padding, + ) # The obs names in adata_pyrovelocity have a "-N" suffix that # is not present in the adata_cospar obs Index. @@ -268,7 +316,7 @@ def plot_lineage_fate_correlation( scv.pl.scatter( adata=adata_cospar_obs_subset, basis="emb", - fontsize=7, + fontsize=default_fontsize, color="fate_potency_transition_map", cmap="inferno_r", show=False, @@ -277,10 +325,20 @@ def plot_lineage_fate_correlation( colorbar=show_colorbars, title="", ) + ax[5].axis("off") if show_titles: - ax[5].set_title("Clonal fate potency", fontsize=7) + # ax[5].set_title("Clonal fate potency", fontsize=default_fontsize) + ax[5].set_title( + "Fate potency", + fontsize=default_fontsize, + pad=default_title_padding, + ) gold_standard = adata_cospar_obs_subset.obs.fate_potency_transition_map select = ~np.isnan(gold_standard) + scvelo_latent_time_correlation = spearmanr( + -gold_standard[select], + adata_scvelo.obs.latent_time.values[select], + )[0] scv.pl.scatter( adata=adata_scvelo, c="latent_time", @@ -289,20 +347,31 @@ def plot_lineage_fate_correlation( cmap="inferno", ax=ax[6], show=False, - fontsize=7, + fontsize=default_fontsize, colorbar=show_colorbars, title="", ) + ax[6].axis("off") if show_titles: ax[6].set_title( - "Scvelo latent time\ncorrelation: %.2f" - % spearmanr( - -gold_standard[select], - adata_scvelo.obs.latent_time.values[select], - )[0], - fontsize=7, + # f"scVelo latent time\ncorrelation: {scvelo_latent_time_correlation:.2f}" + # f"scVelo latent time ({scvelo_latent_time_correlation:.2f})", + f"scVelo time ({scvelo_latent_time_correlation:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, + ) + else: + ax[6].set_title( + # f"scVelo latent time\ncorrelation: {scvelo_latent_time_correlation:.2f}" + f"({scvelo_latent_time_correlation:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, ) + pyrovelocity_shared_time_correlation = spearmanr( + -gold_standard[select], + posterior_samples["cell_time"].mean(0).flatten()[select], + )[0] plot_posterior_time( posterior_samples, adata_pyrovelocity, @@ -318,12 +387,20 @@ def plot_lineage_fate_correlation( ) if show_titles: ax[7].set_title( - "Pyro-Velocity shared time\ncorrelation: %.2f" - % spearmanr( - -gold_standard[select], - posterior_samples["cell_time"].mean(0).flatten()[select], - )[0], - fontsize=7, + # f"Pyro-Velocity shared time\ncorrelation: {pyrovelocity_shared_time_correlation:.2f}" + # f"Pyro-Velocity shared time ({pyrovelocity_shared_time_correlation:.2f})", + rf"Pyro\thinspace-Velocity time ({pyrovelocity_shared_time_correlation:.2f})" + if matplotlib.rcParams["text.usetex"] + else f"Pyro\u2009-Velocity time ({pyrovelocity_shared_time_correlation:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, + ) + else: + ax[7].set_title( + # f"" + f"({pyrovelocity_shared_time_correlation:.2f})", + fontsize=default_fontsize, + pad=default_title_padding, ) if save_plot: @@ -360,7 +437,7 @@ def plot_lineage_fate_correlation( # cmap="winter", # cmax=None, # ) - # ax[3].set_title("Shared time uncertainty", fontsize=7) + # ax[3].set_title("Shared time uncertainty", fontsize=default_fontsize) # cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] # cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) @@ -386,5 +463,5 @@ def plot_lineage_fate_correlation( # cmap="summer", # ) # ax[4].set_title( - # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=7 + # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=default_fontsize # ) From 9b8e3a94cc460ce85e4402edb01c987e790a6b3e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 26 Aug 2024 14:59:28 -0400 Subject: [PATCH 030/177] fix(tasks): update time lineage fate correlation layout parameters Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 60 +++++++++++++------ 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index 313cc214a..d1c9fc442 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -1,9 +1,11 @@ from pathlib import Path +import matplotlib import matplotlib.pyplot as plt from pyrovelocity.logging import configure_logging from pyrovelocity.plots import plot_lineage_fate_correlation +from pyrovelocity.styles import configure_matplotlib_style from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import load_anndata_from_path from pyrovelocity.workflows.main_configuration import ( @@ -15,9 +17,12 @@ logger = configure_logging(__name__) +configure_matplotlib_style() + def estimate_time_lineage_fate_correlation( reports_path: str | Path = "reports", + model_identifier: str = "model2", ): configurations = [ larry_mono_configuration, @@ -34,27 +39,20 @@ def estimate_time_lineage_fate_correlation( figsize=(width, height), constrained_layout=True, ) - all_axes = fig.subplots(len(configurations), 8) - for ax in all_axes.flat: - ax.set_aspect("equal", adjustable="box") - # fig.subplots_adjust( - # left=0.01, - # bottom=0.3, - # # bottom=0.1, - # right=0.99, - # top=0.95, - # # top=0.15, - # hspace=0.4, - # # hspace=0.2, - # wspace=0.2, - # ) - - model_name = "model2" + all_axes = fig.subplots( + len(configurations), + 8, + gridspec_kw={ + "hspace": 0.01, + "wspace": 0.1, + }, + ) + adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") for i, config in enumerate(configurations): data_set_name = config.download_dataset.data_set_name - data_set_model_pairing = f"{data_set_name}_{model_name}" + data_set_model_pairing = f"{data_set_name}_{model_identifier}" model_path = f"models/{data_set_model_pairing}" adata_pyrovelocity = load_anndata_from_path( @@ -79,12 +77,21 @@ def estimate_time_lineage_fate_correlation( state_color_dict=LARRY_CELL_TYPE_COLORS, lineage_fate_correlation_path=plot_path, ylabel=f"{data_set_name}", + # show_titles=True, + show_colorbars=False, show_titles=True if i == 0 else False, - show_colorbars=True if i == (len(configurations) - 1) else False, + # show_colorbars=True + # if i == (len(configurations) - 1) + # else False, + default_fontsize=10 if matplotlib.rcParams["text.usetex"] else 9, ) + for ax in all_axes.flat: + ax.set_aspect("equal", adjustable="box") + combined_plot_path = ( - Path(reports_path) / "combined_time_fate_correlation.pdf" + Path(reports_path) + / f"combined_time_fate_correlation_{model_identifier}.pdf" ) for ext in ["", ".png"]: fig.savefig( @@ -96,3 +103,18 @@ def estimate_time_lineage_fate_correlation( transparent=False, ) plt.close(fig) + + +# Manual adjustment of the layout +# +# fig.subplots_adjust( +# left=0.01, +# bottom=0.3, +# # bottom=0.1, +# right=0.99, +# top=0.95, +# # top=0.15, +# hspace=0.4, +# # hspace=0.2, +# wspace=0.2, +# ) From 5f3bcba3b69921512d028848ab3b0f75adbd5268 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:17:29 -0400 Subject: [PATCH 031/177] fix(bazel): add mplstyle as data Signed-off-by: Cameron Smith --- src/pyrovelocity/BUILD.bazel | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/BUILD.bazel b/src/pyrovelocity/BUILD.bazel index 6a9120e68..fc3f13bfe 100644 --- a/src/pyrovelocity/BUILD.bazel +++ b/src/pyrovelocity/BUILD.bazel @@ -14,7 +14,9 @@ load("//bazel:python.bzl", "py_test_module_list", "xdoctest") xdoctest( files = glob( - include = ["**/*.py"], + include = [ + "**/*.py", + ], exclude = [ "workflows/**", "tests/**", @@ -81,9 +83,12 @@ py_test_module_list( py_library( name = "pyrovelocity", srcs = glob( - ["**/*.py"], + [ + "**/*.py", + ], exclude = ["tests/**/*.py"], ), + data = ["styles/common.mplstyle"], visibility = [ "//src/pyrovelocity:__pkg__", "//src/pyrovelocity:__subpackages__", From 74ec198f48fce19c0b47ce87ae5f7c79cd23b665 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:24:26 -0400 Subject: [PATCH 032/177] fix(summarize): use constant cell type colors Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index af9d0750e..bbda015e4 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -20,6 +20,7 @@ posterior_curve, rainbowplot, ) +from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import ( save_anndata_counts_to_dataframe, save_parameter_posterior_mean_dataframe, @@ -229,6 +230,9 @@ def summarize_dataset( vector_field_basis=vector_field_basis, plot_name=vector_field_summary_plot, cell_state=cell_state, + state_color_dict=LARRY_CELL_TYPE_COLORS + if "larry" in data_model + else None, ) # shared time plot @@ -238,8 +242,8 @@ def summarize_dataset( logger.info(f"Generating figure: {shared_time_plot}") plot_shared_time_uncertainty( - posterior_samples=posterior_samples, adata=adata, + posterior_samples=posterior_samples, vector_field_basis=vector_field_basis, shared_time_plot=shared_time_plot, ) From 03889bac3a34dd3a5758bb746c77b8e1b03cbaa6 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:25:38 -0400 Subject: [PATCH 033/177] fix(plots): accept `List[Axes]` input type Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_lineage_fate_correlation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 248aa721d..43e969f38 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -7,7 +7,7 @@ import seaborn as sns from anndata import AnnData from beartype import beartype -from beartype.typing import Dict +from beartype.typing import Dict, List from matplotlib.axes import Axes from matplotlib.figure import Figure from scipy.spatial import distance @@ -37,7 +37,7 @@ def plot_lineage_fate_correlation( adata_pyrovelocity: str | Path | AnnData, adata_scvelo: str | Path | AnnData, adata_cospar: str | Path | AnnData, - ax: Axes | np.ndarray, + ax: List[Axes] | np.ndarray, fig: Figure, state_color_dict: Dict, ylabel: str = "Monocyte lineage", From d8d277dba55403d6582d111207be8dd08724d76b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:26:44 -0400 Subject: [PATCH 034/177] fix(plots): add legend data to cell type plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_lineage_fate_correlation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index 43e969f38..f35ca9eea 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -157,8 +157,9 @@ def plot_lineage_fate_correlation( hue="cell_type", palette=state_color_dict, ax=ax[0], - legend=False, + legend="brief", ) + ax[0].get_legend().remove() ax[0].axis("off") if show_titles: ax[0].set_title( From fde8e62b28f03e3990c1ec80fa841f10fab8ce2e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:28:29 -0400 Subject: [PATCH 035/177] fix(tasks): add row labels and external legend Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 111 ++++++++++++------ 1 file changed, 74 insertions(+), 37 deletions(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index d1c9fc442..5879e6fb7 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -33,23 +33,21 @@ def estimate_time_lineage_fate_correlation( n_rows = len(configurations) n_cols = 8 - width = 12 - height = width * (n_rows / n_cols) - fig = plt.figure( - figsize=(width, height), - constrained_layout=True, - ) - all_axes = fig.subplots( - len(configurations), - 8, - gridspec_kw={ - "hspace": 0.01, - "wspace": 0.1, - }, + width = 14 + height = width * (n_rows / n_cols) + 1 + + fig = plt.figure(figsize=(width, height)) + + gs = fig.add_gridspec( + n_rows + 1, + n_cols + 1, + width_ratios=[0.02] + [1] * n_cols, + height_ratios=[1] * n_rows + [0.2], ) adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + all_axes = [] for i, config in enumerate(configurations): data_set_name = config.download_dataset.data_set_name data_set_model_pairing = f"{data_set_name}_{model_identifier}" @@ -65,7 +63,8 @@ def estimate_time_lineage_fate_correlation( f"data/processed/{data_set_name}_processed.h5ad" ) - axes = all_axes[i] if len(configurations) > 1 else all_axes + axes = [fig.add_subplot(gs[i, j + 1]) for j in range(n_cols)] + all_axes.append(axes) plot_lineage_fate_correlation( posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", @@ -76,18 +75,71 @@ def estimate_time_lineage_fate_correlation( fig=fig, state_color_dict=LARRY_CELL_TYPE_COLORS, lineage_fate_correlation_path=plot_path, - ylabel=f"{data_set_name}", - # show_titles=True, - show_colorbars=False, + ylabel="", show_titles=True if i == 0 else False, - # show_colorbars=True - # if i == (len(configurations) - 1) - # else False, + show_colorbars=False, default_fontsize=10 if matplotlib.rcParams["text.usetex"] else 9, ) - for ax in all_axes.flat: - ax.set_aspect("equal", adjustable="box") + for row_axes in all_axes: + for ax in row_axes: + ax.set_aspect("equal", adjustable="box") + + row_labels = ["a", "b", "c", "d"] + vertical_texts = [ + "Monocytes", + "Neutrophils", + "Multilineage", + "All lineages", + ] + + for i, (label, vtext) in enumerate(zip(row_labels, vertical_texts)): + label_ax = fig.add_subplot(gs[i, 0]) + label_ax.axis("off") + + label_ax.text( + 0.5, + 1, + rf"\textbf{{{label}}}" + if matplotlib.rcParams["text.usetex"] + else f"{label}", + fontweight="bold", + fontsize=12, + ha="center", + va="top", + ) + + label_ax.text( + 0.5, + 0.5, + vtext, + rotation=90, + fontsize=12, + ha="center", + va="center", + ) + + legend_ax = fig.add_subplot(gs[-1, 1:3]) + legend_ax.axis("off") + + handles, labels = all_axes[-1][0].get_legend_handles_labels() + legend_ax.legend( + handles=handles, + labels=labels, + loc="lower left", + bbox_to_anchor=(0.00, -0.2), + ncol=5, + fancybox=True, + prop={"size": 12}, + fontsize=12, + frameon=False, + markerscale=4, + ) + + fig.tight_layout() + fig.subplots_adjust( + left=0.05, right=0.98, top=0.98, bottom=0.08, wspace=0.1, hspace=0.2 + ) combined_plot_path = ( Path(reports_path) @@ -103,18 +155,3 @@ def estimate_time_lineage_fate_correlation( transparent=False, ) plt.close(fig) - - -# Manual adjustment of the layout -# -# fig.subplots_adjust( -# left=0.01, -# bottom=0.3, -# # bottom=0.1, -# right=0.99, -# top=0.95, -# # top=0.15, -# hspace=0.4, -# # hspace=0.2, -# wspace=0.2, -# ) From e900db0f4ad3b05f25ca05a44831ccc856da9d41 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 02:48:56 -0400 Subject: [PATCH 036/177] fix(plots): update vector field summary interface Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 58 +++++++++++++++++------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 6cd592779..5fd1855c2 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -1,6 +1,6 @@ from os import PathLike -from typing import Dict +import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd @@ -8,6 +8,7 @@ import seaborn as sns from anndata import AnnData from beartype import beartype +from beartype.typing import Dict, Optional from matplotlib import cm from matplotlib.colors import Normalize from matplotlib.figure import FigureBase @@ -38,6 +39,9 @@ def plot_vector_field_summary( vector_field_basis: str, plot_name: PathLike | str, cell_state: str = "cell_type", + state_color_dict: Optional[Dict[str, str]] = None, + default_fontsize: int = 7, + default_title_padding: int = 2, ) -> FigureBase: # posterior_vector_field = posterior_samples["vector_field_posterior_samples"] posterior_time = posterior_samples["cell_time"] @@ -47,7 +51,6 @@ def plot_vector_field_summary( embed_mean = posterior_samples["vector_field_posterior_mean"] dot_size = 3.5 - font_size = 6.5 scale = 0.35 scale_high = 7.8 scale_low = 7.8 @@ -71,25 +74,31 @@ def plot_vector_field_summary( sns.scatterplot( x="X1", y="X2", + hue="cell_type", + s=dot_size, + palette=state_color_dict, data=ress, alpha=0.9, - s=dot_size, linewidth=0, edgecolor="none", - hue="cell_type", ax=ax[0], legend="brief", ) ax[0].axis("off") - ax[0].set_title("Cell types\n", fontsize=font_size) + ax[0].set_title( + "Cell types", + fontsize=default_fontsize, + pad=default_title_padding, + ) ax[0].legend( loc="lower left", - bbox_to_anchor=(0.5, -0.48), + bbox_to_anchor=(0.2, -0.4), ncol=5, fancybox=True, - prop={"size": font_size}, - fontsize=font_size, + prop={"size": default_fontsize}, + fontsize=default_fontsize, frameon=False, + markerscale=3, ) kwargs = dict( color="gray", @@ -106,22 +115,32 @@ def plot_vector_field_summary( scv.pl.velocity_embedding_grid( adata, basis=vector_field_basis, - fontsize=font_size, + fontsize=default_fontsize, ax=ax[1], title="", **kwargs, ) - ax[1].set_title("Scvelo\n", fontsize=7) + ax[1].set_title( + "scVelo", + fontsize=default_fontsize, + pad=default_title_padding, + ) scv.pl.velocity_embedding_grid( adata, - fontsize=font_size, + fontsize=default_fontsize, basis=vector_field_basis, title="", ax=ax[2], vkey="velocity_pyro", **kwargs, ) - ax[2].set_title("Pyro-Velocity\n", fontsize=7) + ax[2].set_title( + rf"Pyro\thinspace-Velocity" + if matplotlib.rcParams["text.usetex"] + else f"Pyro\u2009-Velocity", + fontsize=default_fontsize, + pad=default_title_padding, + ) pca_cell_angles = pca_embeds_angle / np.pi * 180 # degree pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) @@ -222,6 +241,7 @@ def plot_vector_field_uncertainty( color_vector_field_by_measure=False, dot_size=1, show_titles: bool = True, + default_fontsize: int = 7, ): if uncertain_measure == "angle": adata.obs["uncertain"] = get_posterior_sample_angle_uncertainty( @@ -255,8 +275,9 @@ def plot_vector_field_uncertainty( ax[0].axis("off") if show_titles: ax[0].set_title( - f"Single-cell\n {uncertain_measure} uncertainty ", - fontsize=7, + # f"Single-cell\n {uncertain_measure} uncertainty ", + f"{uncertain_measure} uncertainty", + fontsize=default_fontsize, ) ax = ax[1] @@ -303,7 +324,8 @@ def plot_vector_field_uncertainty( ) if show_titles: ax.set_title( - f"Averaged\n {uncertain_measure} uncertainty ", fontsize=7 + f"Averaged\n {uncertain_measure} uncertainty ", + fontsize=default_fontsize, ) ax.axis("off") else: @@ -329,7 +351,9 @@ def plot_vector_field_uncertainty( ax.axis("off") if show_titles: ax.set_title( - f"Single-cell\n {uncertain_measure} uncertainty ", fontsize=7 + # f"Single-cell\n {uncertain_measure} uncertainty ", fontsize=default_fontsize + f"{uncertain_measure} uncertainty", + fontsize=default_fontsize, ) if cbar: # from mpl_toolkits.axes_grid1 import make_axes_locatable @@ -350,7 +374,7 @@ def plot_vector_field_uncertainty( ) # fraction=0.046, pad=0.04 cbar.ax.tick_params(axis="x", labelsize=5.5) cbar.ax.locator = MaxNLocator(nbins=2, integer=True) - # cbar.ax.set_xlabel(f"{uncertain_measure} uncertainty", fontsize=7) + # cbar.ax.set_xlabel(f"{uncertain_measure} uncertainty", fontsize=default_fontsize) def plot_mean_vector_field( From 68a82d1508b318a7c01f8e6ffc9544de80fe1c13 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 12:02:17 -0400 Subject: [PATCH 037/177] fix(tasks): update time lineage fate correlation legend spacing Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/time_fate_correlation.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index 5879e6fb7..0a54d7737 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -127,13 +127,15 @@ def estimate_time_lineage_fate_correlation( handles=handles, labels=labels, loc="lower left", - bbox_to_anchor=(0.00, -0.2), + bbox_to_anchor=(-0.1, -0.2), ncol=5, fancybox=True, prop={"size": 12}, fontsize=12, frameon=False, markerscale=4, + columnspacing=0.7, + handletextpad=0.1, ) fig.tight_layout() From 321dfca8ee5b2ac47af0d1958290fec581ba47de Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:00:19 -0400 Subject: [PATCH 038/177] fix(plots): reduce likelihood of mutation by copying mutated input Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_trajectory.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pyrovelocity/plots/_trajectory.py b/src/pyrovelocity/plots/_trajectory.py index f706ed5f4..7be71cfec 100644 --- a/src/pyrovelocity/plots/_trajectory.py +++ b/src/pyrovelocity/plots/_trajectory.py @@ -12,6 +12,7 @@ def get_clone_trajectory( times: List[int] = [2, 4, 6], clone_num: Optional[int] = None, ) -> AnnData: + adata = adata.copy() if not average_start_point: adata.obsm["clone_vector_emb"] = np.zeros((adata.shape[0], 2)) From 0845faba208c8e9fde01f3469b74d7bce610d9b5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:01:24 -0400 Subject: [PATCH 039/177] fix(plots): automatically increment axis indices in lineage fate correlation Signed-off-by: Cameron Smith --- .../plots/_lineage_fate_correlation.py | 176 +++++++++++------- 1 file changed, 112 insertions(+), 64 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index f35ca9eea..af5b60c80 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -7,7 +7,7 @@ import seaborn as sns from anndata import AnnData from beartype import beartype -from beartype.typing import Dict, List +from beartype.typing import Dict, List, Tuple from matplotlib.axes import Axes from matplotlib.figure import Figure from scipy.spatial import distance @@ -37,7 +37,7 @@ def plot_lineage_fate_correlation( adata_pyrovelocity: str | Path | AnnData, adata_scvelo: str | Path | AnnData, adata_cospar: str | Path | AnnData, - ax: List[Axes] | np.ndarray, + all_axes: List[Axes] | np.ndarray, fig: Figure, state_color_dict: Dict, ylabel: str = "Monocyte lineage", @@ -50,7 +50,8 @@ def plot_lineage_fate_correlation( show_titles: bool = False, default_fontsize: int = 7, default_title_padding: int = 2, -): + include_uncertainty_measures: bool = False, +) -> List[Axes] | np.ndarray: """ Plot lineage fate correlation with shared latent time estimates. @@ -137,7 +138,15 @@ def plot_lineage_fate_correlation( ) scvelo_cos_mean = scvelo_cos.mean() pyro_cos_mean = pyro_cos.mean() - print(scvelo_cos_mean, pyro_cos_mean) + logger.info( + f"\nscVelo cosine similarity: {scvelo_cos_mean:.2f}\n" + f"Pyro-Velocity cosine similarity: {pyro_cos_mean:.2f}\n\n" + ) + + current_axis_index = 0 + + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) res = pd.DataFrame( { @@ -156,25 +165,27 @@ def plot_lineage_fate_correlation( edgecolor="none", hue="cell_type", palette=state_color_dict, - ax=ax[0], + ax=ax, legend="brief", ) - ax[0].get_legend().remove() - ax[0].axis("off") + ax.get_legend().remove() + ax.axis("off") if show_titles: - ax[0].set_title( + ax.set_title( "Cell types", fontsize=default_fontsize, pad=default_title_padding, ) else: - ax[0].set_title( + ax.set_title( "", fontsize=default_fontsize, pad=default_title_padding, ) - ax[0].set_ylabel(ylabel, fontsize=default_fontsize) + ax.set_ylabel(ylabel, fontsize=default_fontsize) + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) scv.pl.velocity_embedding_grid( adata=adata_input_clone, scale=scale, @@ -186,20 +197,22 @@ def plot_lineage_fate_correlation( linewidth=1, vkey="clone_vector", basis="emb", - ax=ax[1], + ax=ax, title="", color="gray", arrow_color="black", fontsize=default_fontsize, ) - ax[1].axis("off") + ax.axis("off") if show_titles: - ax[1].set_title( + ax.set_title( "Clonal progression", fontsize=default_fontsize, pad=default_title_padding, ) + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) scv.pl.velocity_embedding_grid( adata=adata_scvelo, show=False, @@ -210,28 +223,30 @@ def plot_lineage_fate_correlation( arrow_size=arrow, linewidth=1, basis="emb", - ax=ax[2], + ax=ax, title="", fontsize=default_fontsize, color="gray", arrow_color="black", ) - ax[2].axis("off") + ax.axis("off") if show_titles: - ax[2].set_title( + ax.set_title( # "scVelo cosine similarity: %.2f" % scvelo_cos_mean, fontsize=default_fontsize f"scVelo ({scvelo_cos_mean:.2f})", fontsize=default_fontsize, pad=default_title_padding, ) else: - ax[2].set_title( + ax.set_title( # f"" f"({scvelo_cos_mean:.2f})", fontsize=default_fontsize, pad=default_title_padding, ) + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) scv.pl.velocity_embedding_grid( adata=adata_pyrovelocity, basis="emb", @@ -243,15 +258,15 @@ def plot_lineage_fate_correlation( autoscale=True, arrow_size=arrow, linewidth=1, - ax=ax[3], + ax=ax, title="", fontsize=default_fontsize, color="gray", arrow_color="black", ) - ax[3].axis("off") + ax.axis("off") if show_titles: - ax[3].set_title( + ax.set_title( # "Pyro-Velocity cosine similarity: %.2f" % pyro_cos_mean, fontsize=default_fontsize rf"Pyro\thinspace-Velocity ({pyro_cos_mean:.2f})" if matplotlib.rcParams["text.usetex"] @@ -260,46 +275,52 @@ def plot_lineage_fate_correlation( pad=default_title_padding, ) else: - ax[3].set_title( + ax.set_title( # f"" f"({pyro_cos_mean:.2f})", fontsize=default_fontsize, pad=default_title_padding, ) - pca_angles = posterior_samples["pca_embeds_angle"] - pca_cell_angles = pca_angles / np.pi * 180 - pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) - print(pca_angles_std) + if include_uncertainty_measures: + pca_angles = posterior_samples["pca_embeds_angle"] + pca_cell_angles = pca_angles / np.pi * 180 + pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) + logger.info( + f"\nPCA angle uncertainty: {pca_angles_std.mean():.2f}" + f"± {pca_angles_std.std():.2f}\n\n" + ) - plot_vector_field_uncertainty( - adata_pyrovelocity, - embed_mean, - pca_angles_std, - ax=ax[4], - cbar=show_colorbars, - fig=fig, - basis="emb", - scale=scale, - arrow_size=arrow, - p_mass_min=1, - autoscale=True, - density=density, - only_grid=False, - uncertain_measure="PCA angle", - cmap="winter", - cmax=None, - color_vector_field_by_measure=False, - show_titles=show_titles, - ) - if show_titles: - ax[4].set_title( - r"Pyro\thinspace-Velocity angle $\sigma$" - if matplotlib.rcParams["text.usetex"] - else "Pyro\u2009-Velocity angle σ", - fontsize=default_fontsize, - pad=default_title_padding, + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) + plot_vector_field_uncertainty( + adata_pyrovelocity, + embed_mean, + pca_angles_std, + ax=ax, + cbar=show_colorbars, + fig=fig, + basis="emb", + scale=scale, + arrow_size=arrow, + p_mass_min=1, + autoscale=True, + density=density, + only_grid=False, + uncertain_measure="PCA angle", + cmap="winter", + cmax=None, + color_vector_field_by_measure=False, + show_titles=show_titles, ) + if show_titles: + ax.set_title( + r"Pyro\thinspace-Velocity angle $\sigma$" + if matplotlib.rcParams["text.usetex"] + else "Pyro\u2009-Velocity angle σ", + fontsize=default_fontsize, + pad=default_title_padding, + ) # The obs names in adata_pyrovelocity have a "-N" suffix that # is not present in the adata_cospar obs Index. @@ -314,6 +335,8 @@ def plot_lineage_fate_correlation( patched_adata_pyrovelocity_obs_names, : ] scatter_dotsize_factor = 3 + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) scv.pl.scatter( adata=adata_cospar_obs_subset, basis="emb", @@ -321,15 +344,15 @@ def plot_lineage_fate_correlation( color="fate_potency_transition_map", cmap="inferno_r", show=False, - ax=ax[5], + ax=ax, s=dotsize * scatter_dotsize_factor, colorbar=show_colorbars, title="", ) - ax[5].axis("off") + ax.axis("off") if show_titles: - # ax[5].set_title("Clonal fate potency", fontsize=default_fontsize) - ax[5].set_title( + # ax.set_title("Clonal fate potency", fontsize=default_fontsize) + ax.set_title( "Fate potency", fontsize=default_fontsize, pad=default_title_padding, @@ -340,21 +363,24 @@ def plot_lineage_fate_correlation( -gold_standard[select], adata_scvelo.obs.latent_time.values[select], )[0] + + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) scv.pl.scatter( adata=adata_scvelo, c="latent_time", basis="emb", s=dotsize * scatter_dotsize_factor, cmap="inferno", - ax=ax[6], + ax=ax, show=False, fontsize=default_fontsize, colorbar=show_colorbars, title="", ) - ax[6].axis("off") + ax.axis("off") if show_titles: - ax[6].set_title( + ax.set_title( # f"scVelo latent time\ncorrelation: {scvelo_latent_time_correlation:.2f}" # f"scVelo latent time ({scvelo_latent_time_correlation:.2f})", f"scVelo time ({scvelo_latent_time_correlation:.2f})", @@ -362,7 +388,7 @@ def plot_lineage_fate_correlation( pad=default_title_padding, ) else: - ax[6].set_title( + ax.set_title( # f"scVelo latent time\ncorrelation: {scvelo_latent_time_correlation:.2f}" f"({scvelo_latent_time_correlation:.2f})", fontsize=default_fontsize, @@ -373,21 +399,23 @@ def plot_lineage_fate_correlation( -gold_standard[select], posterior_samples["cell_time"].mean(0).flatten()[select], )[0] + # SHIFT AXIS INDEX + ax, current_axis_index = get_next_axis(all_axes, current_axis_index) plot_posterior_time( posterior_samples, adata_pyrovelocity, - ax=ax[7], + ax=ax, basis="emb", fig=fig, addition=False, position="right", - cmap="inferno", + cmap="winter", s=dotsize, show_colorbar=show_colorbars, show_titles=show_titles, ) if show_titles: - ax[7].set_title( + ax.set_title( # f"Pyro-Velocity shared time\ncorrelation: {pyrovelocity_shared_time_correlation:.2f}" # f"Pyro-Velocity shared time ({pyrovelocity_shared_time_correlation:.2f})", rf"Pyro\thinspace-Velocity time ({pyrovelocity_shared_time_correlation:.2f})" @@ -397,7 +425,7 @@ def plot_lineage_fate_correlation( pad=default_title_padding, ) else: - ax[7].set_title( + ax.set_title( # f"" f"({pyrovelocity_shared_time_correlation:.2f})", fontsize=default_fontsize, @@ -415,6 +443,26 @@ def plot_lineage_fate_correlation( transparent=False, ) + return all_axes + + +@beartype +def get_next_axis( + axes: List[Axes] | np.ndarray, + current_index: int = 0, +) -> Tuple[Axes, int]: + return axes[current_index], current_index + 1 + + # import ipdb + + # ipdb.set_trace() + # colorbar_axes = [ + # ax[5].images[0], + # ax[6].collections[0], + # ax[7].collections[0], + # ] + # return colorbar_axes + # cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() # cell_time_std = posterior_samples["cell_time"].std(0).flatten() # cell_time_cov = cell_time_std / cell_time_mean From 0aa0db1086654deea416df0908578e03898d02d5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:02:47 -0400 Subject: [PATCH 040/177] fix(plots): parameterize transparency of posterior time Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index 70675b874..462520d75 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -31,6 +31,7 @@ def plot_posterior_time( s=3, show_colorbar=True, show_titles=True, + alpha=1, ): if addition: sns.set_style("white") @@ -53,7 +54,7 @@ def plot_posterior_time( adata.obsm[f"X_{basis}"][:, 0], adata.obsm[f"X_{basis}"][:, 1], s=s, - alpha=0.4, + alpha=alpha, c=adata.obs["cell_time"], cmap=cmap, linewidth=0, @@ -79,8 +80,8 @@ def plot_posterior_time( @beartype def plot_shared_time_uncertainty( - posterior_samples: Dict[str, np.ndarray], adata: AnnData, + posterior_samples: Dict[str, np.ndarray], vector_field_basis: str, shared_time_plot: PathLike | str, ) -> FigureBase: @@ -102,7 +103,7 @@ def plot_shared_time_uncertainty( c="shared_time_mean", ax=ax[1], show=False, - cmap="inferno", + cmap="winter", fontsize=12, colorbar=True, ) From 6bfb6fbba7383f1e1eb05da66390cc8371fd672b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:03:39 -0400 Subject: [PATCH 041/177] fix(tasks): include column-level colorbars in gridspec Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index 0a54d7737..223eb958e 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -2,6 +2,7 @@ import matplotlib import matplotlib.pyplot as plt +from matplotlib.ticker import MaxNLocator from pyrovelocity.logging import configure_logging from pyrovelocity.plots import plot_lineage_fate_correlation @@ -32,7 +33,7 @@ def estimate_time_lineage_fate_correlation( ] n_rows = len(configurations) - n_cols = 8 + n_cols = 7 width = 14 height = width * (n_rows / n_cols) + 1 @@ -71,7 +72,7 @@ def estimate_time_lineage_fate_correlation( adata_pyrovelocity=adata_pyrovelocity, adata_scvelo=adata_dynamical, adata_cospar=adata_cospar, - ax=axes, + all_axes=axes, fig=fig, state_color_dict=LARRY_CELL_TYPE_COLORS, lineage_fate_correlation_path=plot_path, @@ -143,6 +144,31 @@ def estimate_time_lineage_fate_correlation( left=0.05, right=0.98, top=0.98, bottom=0.08, wspace=0.1, hspace=0.2 ) + add_colorbar_axes = all_axes[-1][-3:] + add_colorbar_artists = [ax.collections[0] for ax in add_colorbar_axes] + cbar_axes = [] + for i, im in enumerate(add_colorbar_artists): + cbar_ax = fig.add_subplot(gs[-1, -3 + i]) + cbar = fig.colorbar(im, cax=cbar_ax, orientation="horizontal") + cbar.locator = MaxNLocator(nbins=2) + cbar.update_ticks() + cbar_ax.xaxis.set_ticks_position("bottom") + cbar_ax.xaxis.set_label_position("bottom") + cbar_axes.append(cbar_ax) + + for i, cbar_ax in enumerate(cbar_axes): + ax_pos = add_colorbar_axes[i].get_position() + cbar_width = ax_pos.width * 0.7 + cbar_height = 0.015 + cbar_ax.set_position( + [ + ax_pos.x0 + (ax_pos.width - cbar_width), + 0.12, + cbar_width, + cbar_height, + ] + ) + combined_plot_path = ( Path(reports_path) / f"combined_time_fate_correlation_{model_identifier}.pdf" From 93a1fae92cbf6c25dcf2dadb39776b4cf2a42867 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:04:25 -0400 Subject: [PATCH 042/177] deps(pyproject): add ipdb to test group Signed-off-by: Cameron Smith --- poetry.lock | 17 ++++++++++++++++- pyproject.toml | 5 +++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 59535a35e..e04fa7d98 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3083,6 +3083,21 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "ipdb" +version = "0.13.13" +description = "IPython-enabled pdb" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4"}, + {file = "ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726"}, +] + +[package.dependencies] +decorator = {version = "*", markers = "python_version >= \"3.11\""} +ipython = {version = ">=7.31.1", markers = "python_version >= \"3.11\""} + [[package]] name = "ipykernel" version = "6.28.0" @@ -9369,4 +9384,4 @@ workflows = ["dataclasses-json", "dulwich", "flytekit", "google-api-python-clien [metadata] lock-version = "2.0" python-versions = ">=3.11, <3.13" -content-hash = "6515b417ac411b998d0da76e7e48dd3cfe992e991736061e2db358568d373bd5" +content-hash = "48cf45aea2b3d2d0c65eb8842a4b706666695821c20ca8dc2ff1162e42a2dfc6" diff --git a/pyproject.toml b/pyproject.toml index 9ebc4a46e..14a4172f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -136,6 +136,7 @@ google-api-python-client = { version = ">=2.79.0", optional = true } hydra-core = { version = ">=1.3.2", optional = true } hydra-zen = { version = ">=0.12.1", optional = true } hypothesis = { version = ">=6.71.0", optional = true } +ipdb = { version = ">=0.13.13", optional = true } ipython = { version = ">=8.11.0", optional = true } ipywidgets = { version = ">=8.0.0", optional = true } # isort = { version = ">=5.10.1", optional = true } @@ -218,6 +219,7 @@ optional = true [tool.poetry.group.test.dependencies] coverage = { version = ">=6.2", extras = ["toml"] } hypothesis = ">=6.72.1" +ipdb = ">=0.13.13" ipython = ">=8.11.0" # poethepoet = ">=0.19.0" pygments = ">=2.15.0" @@ -423,6 +425,9 @@ log_level = "INFO" # We exclude markers associated with slow tests by default # but run them in CI with the make target `test-cov-xml` # which overrides this behavior. +# Add these options to enable the ipdb debugger: +# --pdb +# --pdbcls=IPython.terminal.debugger:Pdb addopts = """ -m "not slow and not pyensembl" -rA From 81f557fcda3218214bc253b7ac267b26466cdbdf Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 27 Aug 2024 17:04:42 -0400 Subject: [PATCH 043/177] chore(bazel): sync lock Signed-off-by: Cameron Smith --- MODULE.bazel.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index d0717c9ad..40b9a7fa6 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -585,7 +585,7 @@ "@@rules_python~//python/extensions:pip.bzl%pip": { "os:osx,arch:aarch64": { "bzlTransitiveDigest": "Jt+duCAKrnU5xF3PFiPS7QkYjrCdUhqdPafeYppB9kE=", - "usagesDigest": "Z4dCjRhz/8yHQAyENSJZ2Zl0ejUdFftcgby1j0p9iOc=", + "usagesDigest": "+mPt+51LDygYXlUADj8qBGMURsoM8IkmXKMInJSe3j0=", "recordedFileInputs": { "@@//requirements-bazel.txt": "67857422abb923ffa1f9a8f3203cb46cc8fc8917ed1308ebde70ca06c93ffb3b" }, @@ -12730,7 +12730,7 @@ "@@rules_python~//python/extensions:python.bzl%python": { "general": { "bzlTransitiveDigest": "oBPNwJABN+p6JSbMsW8KKLF4oq8ao8WyZfH4DbDfSlQ=", - "usagesDigest": "ACNUWsQXrnB8+KRLWeGigAW5SiBdkL9G7elMltNDNlI=", + "usagesDigest": "BDif4V0L8PiD6HjjVru23tQ+ww6vYTpaKrnJR7zWy4A=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": { From 978c2d002ab806697ba2ff0edd30e9ed8fdfba99 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 02:51:22 -0400 Subject: [PATCH 044/177] fix(plots): remove redundant data input from lineage fate correlation Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_lineage_fate_correlation.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_lineage_fate_correlation.py b/src/pyrovelocity/plots/_lineage_fate_correlation.py index af5b60c80..2a2e646a6 100644 --- a/src/pyrovelocity/plots/_lineage_fate_correlation.py +++ b/src/pyrovelocity/plots/_lineage_fate_correlation.py @@ -35,7 +35,6 @@ def plot_lineage_fate_correlation( posterior_samples_path: str | Path | AnnData, adata_pyrovelocity: str | Path | AnnData, - adata_scvelo: str | Path | AnnData, adata_cospar: str | Path | AnnData, all_axes: List[Axes] | np.ndarray, fig: Figure, @@ -110,11 +109,10 @@ def plot_lineage_fate_correlation( if isinstance(adata_pyrovelocity, str | Path): adata_pyrovelocity = load_anndata_from_path(adata_pyrovelocity) - if isinstance(adata_scvelo, str | Path): - adata_scvelo = load_anndata_from_path(adata_scvelo) if isinstance(adata_cospar, str | Path): adata_cospar = load_anndata_from_path(adata_cospar) + adata_scvelo = adata_pyrovelocity.copy() adata_input_clone = get_clone_trajectory(adata_scvelo) adata_input_clone.obsm["clone_vector_emb"][ np.isnan(adata_input_clone.obsm["clone_vector_emb"]) From f738c7b7dd177ceac1229faa42ceae4ab38520b0 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 02:56:55 -0400 Subject: [PATCH 045/177] fix(tasks): refactor time fate correlation and note redundancy with workflow task Signed-off-by: Cameron Smith --- .../tasks/time_fate_correlation.py | 152 ++++++++++++------ 1 file changed, 106 insertions(+), 46 deletions(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index 223eb958e..f4140c54e 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -2,36 +2,51 @@ import matplotlib import matplotlib.pyplot as plt +from beartype import beartype +from beartype.typing import List, Tuple +from matplotlib.axes import Axes +from matplotlib.figure import Figure +from matplotlib.gridspec import GridSpec from matplotlib.ticker import MaxNLocator +from pyrovelocity.io.datasets import larry_cospar from pyrovelocity.logging import configure_logging from pyrovelocity.plots import plot_lineage_fate_correlation from pyrovelocity.styles import configure_matplotlib_style from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import load_anndata_from_path from pyrovelocity.workflows.main_configuration import ( + WorkflowConfiguration, larry_configuration, larry_mono_configuration, larry_multilineage_configuration, larry_neu_configuration, ) +__all__ = [ + "configure_time_lineage_fate_plot", +] + logger = configure_logging(__name__) configure_matplotlib_style() +@beartype def estimate_time_lineage_fate_correlation( reports_path: str | Path = "reports", model_identifier: str = "model2", -): - configurations = [ + configurations: List[WorkflowConfiguration] = [ larry_mono_configuration, larry_neu_configuration, larry_multilineage_configuration, larry_configuration, - ] - + ], +) -> Path: + """ + This function is a duplicate of the `combine_time_lineage_fate_correlation` + task function and will be removed in a future release. + """ n_rows = len(configurations) n_cols = 7 width = 14 @@ -46,7 +61,7 @@ def estimate_time_lineage_fate_correlation( height_ratios=[1] * n_rows + [0.2], ) - adata_cospar = load_anndata_from_path(f"data/external/larry_cospar.h5ad") + adata_cospar = larry_cospar() all_axes = [] for i, config in enumerate(configurations): @@ -57,47 +72,91 @@ def estimate_time_lineage_fate_correlation( adata_pyrovelocity = load_anndata_from_path( f"{model_path}/postprocessed.h5ad" ) + posterior_samples_path = f"{model_path}/pyrovelocity.pkl.zst" plot_path = ( - Path(reports_path) / f"{data_set_name}_time_fate_correlation.pdf" - ) - adata_dynamical = load_anndata_from_path( - f"data/processed/{data_set_name}_processed.h5ad" + Path(reports_path) + / f"time_fate_correlation_{data_set_model_pairing}.pdf" ) axes = [fig.add_subplot(gs[i, j + 1]) for j in range(n_cols)] all_axes.append(axes) plot_lineage_fate_correlation( - posterior_samples_path=f"{model_path}/pyrovelocity.pkl.zst", + posterior_samples_path=posterior_samples_path, adata_pyrovelocity=adata_pyrovelocity, - adata_scvelo=adata_dynamical, adata_cospar=adata_cospar, all_axes=axes, fig=fig, state_color_dict=LARRY_CELL_TYPE_COLORS, lineage_fate_correlation_path=plot_path, + save_plot=False, ylabel="", show_titles=True if i == 0 else False, show_colorbars=False, - default_fontsize=10 if matplotlib.rcParams["text.usetex"] else 9, + default_fontsize=12 if matplotlib.rcParams["text.usetex"] else 9, ) + return configure_time_lineage_fate_plot( + fig=fig, + gs=gs, + all_axes=all_axes, + row_labels=["a", "b", "c", "d"], + vertical_texts=[ + "Monocytes", + "Neutrophils", + "Multilineage", + "All lineages", + ], + reports_path=Path(reports_path), + model_identifier=model_identifier, + ) + + +@beartype +def configure_time_lineage_fate_plot( + fig: Figure, + gs: GridSpec, + all_axes: List[List[Axes]], + row_labels: List[str], + vertical_texts: List[str], + reports_path: Path, + model_identifier: str, +) -> Path: + """ + Finalize the time lineage fate correlation plot by adding labels, legends, and colorbars. + + Args: + fig: The main figure object. + gs: The GridSpec object used for the subplot layout. + all_axes: A list of lists containing all subplot Axes objects. + row_labels: Labels for each row (e.g., "a", "b", "c", "d"). + vertical_texts: Vertical text labels for each row. + reports_path: Path to save the final plot. + model_identifier: Identifier for the model used. + + Returns: + Path: The path where the final plot is saved. + """ + _set_axes_aspect(all_axes) + _add_row_labels(fig, gs, row_labels, vertical_texts) + _add_legend(fig, gs, all_axes) + _adjust_layout(fig) + _add_colorbars(fig, gs, all_axes) + return _save_plot(fig, reports_path, model_identifier) + + +def _set_axes_aspect(all_axes: List[List[Axes]]) -> None: for row_axes in all_axes: for ax in row_axes: ax.set_aspect("equal", adjustable="box") - row_labels = ["a", "b", "c", "d"] - vertical_texts = [ - "Monocytes", - "Neutrophils", - "Multilineage", - "All lineages", - ] +def _add_row_labels( + fig: Figure, gs: GridSpec, row_labels: List[str], vertical_texts: List[str] +) -> None: for i, (label, vtext) in enumerate(zip(row_labels, vertical_texts)): label_ax = fig.add_subplot(gs[i, 0]) label_ax.axis("off") - label_ax.text( 0.5, 1, @@ -109,20 +168,14 @@ def estimate_time_lineage_fate_correlation( ha="center", va="top", ) - label_ax.text( - 0.5, - 0.5, - vtext, - rotation=90, - fontsize=12, - ha="center", - va="center", + 0.5, 0.5, vtext, rotation=90, fontsize=12, ha="center", va="center" ) + +def _add_legend(fig: Figure, gs: GridSpec, all_axes: List[List[Axes]]) -> None: legend_ax = fig.add_subplot(gs[-1, 1:3]) legend_ax.axis("off") - handles, labels = all_axes[-1][0].get_legend_handles_labels() legend_ax.legend( handles=handles, @@ -139,14 +192,19 @@ def estimate_time_lineage_fate_correlation( handletextpad=0.1, ) + +def _adjust_layout(fig: Figure) -> None: fig.tight_layout() fig.subplots_adjust( left=0.05, right=0.98, top=0.98, bottom=0.08, wspace=0.1, hspace=0.2 ) + +def _add_colorbars( + fig: Figure, gs: GridSpec, all_axes: List[List[Axes]] +) -> None: add_colorbar_axes = all_axes[-1][-3:] add_colorbar_artists = [ax.collections[0] for ax in add_colorbar_axes] - cbar_axes = [] for i, im in enumerate(add_colorbar_artists): cbar_ax = fig.add_subplot(gs[-1, -3 + i]) cbar = fig.colorbar(im, cax=cbar_ax, orientation="horizontal") @@ -154,24 +212,25 @@ def estimate_time_lineage_fate_correlation( cbar.update_ticks() cbar_ax.xaxis.set_ticks_position("bottom") cbar_ax.xaxis.set_label_position("bottom") - cbar_axes.append(cbar_ax) - - for i, cbar_ax in enumerate(cbar_axes): - ax_pos = add_colorbar_axes[i].get_position() - cbar_width = ax_pos.width * 0.7 - cbar_height = 0.015 - cbar_ax.set_position( - [ - ax_pos.x0 + (ax_pos.width - cbar_width), - 0.12, - cbar_width, - cbar_height, - ] - ) + _adjust_colorbar_position(cbar_ax, add_colorbar_axes[i]) + + +def _adjust_colorbar_position(cbar_ax: Axes, ref_ax: Axes) -> None: + ax_pos = ref_ax.get_position() + cbar_width = ax_pos.width * 0.6 + cbar_height = 0.01 + cbar_ax.set_position( + [ax_pos.x0 + (ax_pos.width - cbar_width), 0.12, cbar_width, cbar_height] + ) + +def _save_plot( + fig: Figure, + reports_path: Path, + model_identifier: str, +) -> Path: combined_plot_path = ( - Path(reports_path) - / f"combined_time_fate_correlation_{model_identifier}.pdf" + reports_path / f"combined_time_fate_correlation_{model_identifier}.pdf" ) for ext in ["", ".png"]: fig.savefig( @@ -183,3 +242,4 @@ def estimate_time_lineage_fate_correlation( transparent=False, ) plt.close(fig) + return combined_plot_path From c32f530bfd8363c266b34396f4af9330211e74fb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 02:57:36 -0400 Subject: [PATCH 046/177] fix(workflows): add posterior samples and postprocessed data to summarize outputs class Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_configuration.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pyrovelocity/workflows/main_configuration.py b/src/pyrovelocity/workflows/main_configuration.py index 82c3d2a9c..b7c69d24a 100644 --- a/src/pyrovelocity/workflows/main_configuration.py +++ b/src/pyrovelocity/workflows/main_configuration.py @@ -203,6 +203,7 @@ class PostprocessOutputs(DataClassJSONMixin): @dataclass class SummarizeOutputs(DataClassJSONMixin): + data_model: str data_model_reports: FlyteDirectory dataframe: FlyteFile run_metrics_path: FlyteFile @@ -210,6 +211,8 @@ class SummarizeOutputs(DataClassJSONMixin): loss_plot_path: FlyteFile loss_csv_path: FlyteFile combined_metrics_path: FlyteFile + pyrovelocity_data: FlyteFile + postprocessed_data: FlyteFile @dataclass From e5a69c47f7ed0bf187fe40bfed9dea0d06c2f223 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 03:07:28 -0400 Subject: [PATCH 047/177] feat(workflows): add task to generate time lineage fate correlation analysis Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 212 +++++++++++++++++--- 1 file changed, 182 insertions(+), 30 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index ad0d21d3f..1522f2370 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -3,11 +3,13 @@ from datetime import timedelta from pathlib import Path +import matplotlib from beartype.typing import List from flytekit import Resources, current_context, dynamic, task from flytekit.extras.accelerators import T4, GPUAccelerator from flytekit.types.directory import FlyteDirectory from flytekit.types.file import FlyteFile +from matplotlib import pyplot as plt from returns.result import Failure, Success from pyrovelocity.interfaces import ( @@ -19,6 +21,7 @@ copy_files_to_directory, create_tarball_from_filtered_dir, ) +from pyrovelocity.io.datasets import larry_cospar from pyrovelocity.io.gcs import upload_file_concurrently from pyrovelocity.io.json import ( add_duration_to_run_info, @@ -27,10 +30,17 @@ load_json, ) from pyrovelocity.logging import configure_logging +from pyrovelocity.plots import ( + plot_lineage_fate_correlation, +) +from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.tasks.data import download_dataset from pyrovelocity.tasks.postprocess import postprocess_dataset from pyrovelocity.tasks.preprocess import preprocess_dataset from pyrovelocity.tasks.summarize import summarize_dataset +from pyrovelocity.tasks.time_fate_correlation import ( + configure_time_lineage_fate_plot, +) from pyrovelocity.tasks.train import train_dataset from pyrovelocity.workflows.constants import ( PYROVELOCITY_CACHE_FLAG, @@ -82,6 +92,7 @@ POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.0" UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.4" +LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.4" COMBINE_METRICS_CACHE_VERSION = f"{CACHE_VERSION}.4" DEFAULT_ACCELERATOR_TYPE: GPUAccelerator = T4 @@ -314,6 +325,7 @@ def summarize_data( ) return SummarizeOutputs( + data_model=str(training_outputs.data_model), data_model_reports=FlyteDirectory(path=str(data_model_reports_path)), dataframe=FlyteFile(path=str(dataframe_path)), run_metrics_path=FlyteFile(path=str(metrics_path)), @@ -321,6 +333,8 @@ def summarize_data( loss_plot_path=FlyteFile(path=str(loss_plot_path)), loss_csv_path=FlyteFile(path=str(loss_csv_path)), combined_metrics_path=FlyteFile(path=str(combined_metrics_path)), + pyrovelocity_data=FlyteFile(path=str(pyrovelocity_data_path)), + postprocessed_data=FlyteFile(path=str(postprocessed_data_path)), ) @@ -433,10 +447,9 @@ def map_model_configurations_over_data_set( train_model_configuration_2, ] - model_outputs: list[TrainingOutputs] = [] - dataset_summaries: list[SummarizeOutputs] = [] + model_outputs: list[SummarizeOutputs] = [] for train_model_configuration in train_model_configurations: - model_output = train_model( + training_output = train_model( preprocess_outputs=processed_outputs, train_model_configuration=train_model_configuration, ).with_overrides( @@ -444,21 +457,20 @@ def map_model_configurations_over_data_set( limits=Resources(**asdict(train_model_resource_limits)), accelerator=GPUAccelerator(accelerator_type), ) - model_outputs.append(model_output) - postprocessing_outputs = postprocess_data( + postprocessing_output = postprocess_data( preprocess_data_args=preprocess_data_args, - training_outputs=model_output, + training_outputs=training_output, postprocess_configuration=postprocess_configuration, ).with_overrides( requests=Resources(**asdict(postprocessing_resource_requests)), limits=Resources(**asdict(postprocessing_resource_limits)), ) - dataset_summary = summarize_data( + summarize_output = summarize_data( preprocess_data_args=preprocess_data_args, - postprocessing_outputs=postprocessing_outputs, - training_outputs=model_output, + postprocessing_outputs=postprocessing_output, + training_outputs=training_output, ).with_overrides( requests=Resources(**asdict(summarizing_resource_requests)), limits=Resources(**asdict(summarizing_resource_limits)), @@ -466,13 +478,136 @@ def map_model_configurations_over_data_set( if upload_results: upload_summary( - summarize_outputs=dataset_summary, - training_outputs=model_output, + training_outputs=training_output, + summarize_outputs=summarize_output, ) - dataset_summaries.append(dataset_summary) + model_outputs.append(summarize_output) - return dataset_summaries + return model_outputs + + +@task( + cache=PYROVELOCITY_CACHE_FLAG, + cache_version=LINEAGE_FATE_CORRELATION_CACHE_VERSION, + retries=3, + interruptible=False, + timeout=timedelta(minutes=120), + requests=Resources(cpu="8", mem="30Gi", ephemeral_storage="100Gi"), + limits=Resources(cpu="16", mem="100Gi", ephemeral_storage="500Gi"), + enable_deck=False, +) +def combine_time_lineage_fate_correlation( + results: List[List[SummarizeOutputs]], +) -> List[FlyteFile]: + print(results) + model_ordered_results = list(map(list, zip(*results))) + print(model_ordered_results) + time_lineage_fate_correlation_plots = [] + + for model_results in model_ordered_results: + print(model_results) + n_rows = len(model_results) + n_cols = 7 + width = 14 + height = width * (n_rows / n_cols) + 1 + + fig = plt.figure(figsize=(width, height)) + + gs = fig.add_gridspec( + n_rows + 1, + n_cols + 1, + width_ratios=[0.02] + [1] * n_cols, + height_ratios=[1] * n_rows + [0.2], + ) + + adata_cospar = larry_cospar() + + all_axes = [] + for i, model_output in enumerate(model_results): + data_set_model_pairing = model_output.data_model + + postprocessed_data_path = model_output.postprocessed_data.download() + + posterior_samples_path = model_output.pyrovelocity_data.download() + + plot_path = Path( + f"time_fate_correlation_{data_set_model_pairing}.pdf" + ) + + axes = [fig.add_subplot(gs[i, j + 1]) for j in range(n_cols)] + all_axes.append(axes) + + plot_lineage_fate_correlation( + posterior_samples_path=posterior_samples_path, + adata_pyrovelocity=postprocessed_data_path, + adata_cospar=adata_cospar, + all_axes=axes, + fig=fig, + state_color_dict=LARRY_CELL_TYPE_COLORS, + lineage_fate_correlation_path=plot_path, + save_plot=False, + ylabel="", + show_titles=True if i == 0 else False, + show_colorbars=False, + default_fontsize=12 + if matplotlib.rcParams["text.usetex"] + else 9, + ) + + time_lineage_fate_correlation_plot = configure_time_lineage_fate_plot( + fig=fig, + gs=gs, + all_axes=all_axes, + row_labels=[ + "a", + "b", + "c", + "d", + ][:n_rows], + vertical_texts=[ + "Monocytes", + "Neutrophils", + "Multilineage", + "All lineages", + ][:n_rows], + reports_path=Path("."), + model_identifier=data_set_model_pairing, + ) + + time_lineage_fate_correlation_plots.append( + time_lineage_fate_correlation_plot + ) + + ctx = current_context() + execution_id = ctx.execution_id.name + + attempted_upload_results = [] + + for file in time_lineage_fate_correlation_plots: + upload_result = upload_file_concurrently( + bucket_name=f"pyrovelocity/reports/{execution_id}", + source_filename=file, + destination_blob_name=str(file), + ) + attempted_upload_results.append(upload_result) + + if all(isinstance(result, Success) for result in attempted_upload_results): + logger.info("\nAll time lineage fate correlation uploads successful.") + else: + logger.error( + "\nOne or more time lineage fate correlation uploads failed." + ) + failed_uploads = [ + str(file) + for file, result in zip( + time_lineage_fate_correlation_plots, attempted_upload_results + ) + if isinstance(result, Failure) + ] + logger.info(f"Failed uploads: {', '.join(failed_uploads)}") + + return [FlyteFile(path=str(x)) for x in time_lineage_fate_correlation_plots] @task( @@ -532,7 +667,7 @@ def combine_all_metrics( html_metrics_file, md_metrics_file, ] - upload_results = [] + attempted_upload_results = [] for file in files_to_upload: upload_result = upload_file_concurrently( @@ -540,9 +675,9 @@ def combine_all_metrics( source_filename=file, destination_blob_name=str(file), ) - upload_results.append(upload_result) + attempted_upload_results.append(upload_result) - if all(isinstance(result, Success) for result in upload_results): + if all(isinstance(result, Success) for result in attempted_upload_results): print("\nAll uploads successful.") return CombinedMetricsOutputs( json_metrics=FlyteFile(path=str(json_metrics_file)), @@ -554,7 +689,7 @@ def combine_all_metrics( print("\nOne or more uploads failed.") failed_uploads = [ str(file) - for file, result in zip(files_to_upload, upload_results) + for file, result in zip(files_to_upload, attempted_upload_results) if isinstance(result, Failure) ] print(f"Failed uploads: {', '.join(failed_uploads)}") @@ -585,25 +720,37 @@ def training_workflow( Conditionally executes configurations based on the value of PYROVELOCITY_DATA_SUBSET. """ results = [] + + stationary_configurations = [ + (pbmc5k_configuration, "pbmc5k"), + (pbmc10k_configuration, "pbmc10k"), + (pbmc68k_configuration, "pbmc68k"), + ] + + developmental_configurations = [ + (bonemarrow_configuration, "bonemarrow"), + (pancreas_configuration, "pancreas"), + (pons_configuration, "pons"), + ] + + lineage_traced_results = [] + lineage_traced_configurations = [ + (larry_mono_configuration, "larry_mono"), + (larry_neu_configuration, "larry_neu"), + (larry_multilineage_configuration, "larry_multilineage"), + (larry_configuration, "larry"), + ] + configurations = [ (simulated_configuration, "simulated"), ] if not PYROVELOCITY_DATA_SUBSET: - configurations += [ - (pancreas_configuration, "pancreas"), - (bonemarrow_configuration, "bonemarrow"), - (pbmc5k_configuration, "pbmc5k"), - (pbmc10k_configuration, "pbmc10k"), - (pbmc68k_configuration, "pbmc68k"), - (pons_configuration, "pons"), - (larry_configuration, "larry"), - (larry_neu_configuration, "larry_neu"), - (larry_mono_configuration, "larry_mono"), - (larry_multilineage_configuration, "larry_multilineage"), - ] + configurations += stationary_configurations + configurations += developmental_configurations + configurations += lineage_traced_configurations - for config, _ in configurations: + for config, data_set_name in configurations: result = map_model_configurations_over_data_set( download_dataset_args=config.download_dataset, preprocess_data_args=config.preprocess_data, @@ -619,10 +766,15 @@ def training_workflow( accelerator_type=config.accelerator_type, upload_results=config.upload_results, ) + if "larry" in data_set_name: + lineage_traced_results.append(result) results.append(result) combine_all_metrics(results=results) + if len(lineage_traced_results) > 0: + combine_time_lineage_fate_correlation(results=lineage_traced_results) + return results From c77d8780e49037f12530eb5208887e9aa479f414 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 03:09:14 -0400 Subject: [PATCH 048/177] chore(workflows): bump summarize cache to `2024.8.15.1` Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 1522f2370..d958e7cba 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -90,10 +90,10 @@ PREPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" TRAIN_CACHE_VERSION = f"{CACHE_VERSION}.0" POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" -SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.0" -UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.4" -LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.4" -COMBINE_METRICS_CACHE_VERSION = f"{CACHE_VERSION}.4" +SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.1" +UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.5" +LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.5" +COMBINE_METRICS_CACHE_VERSION = f"{CACHE_VERSION}.5" DEFAULT_ACCELERATOR_TYPE: GPUAccelerator = T4 From 5c8d858190b89c68e09088ae93506c0a824fef01 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:01:41 -0400 Subject: [PATCH 049/177] feat(io): add function to generate and save separate and combined metrics tables Signed-off-by: Cameron Smith --- src/pyrovelocity/io/json.py | 423 ++++++++++++++++++++++++++---------- 1 file changed, 313 insertions(+), 110 deletions(-) diff --git a/src/pyrovelocity/io/json.py b/src/pyrovelocity/io/json.py index 638f72420..7b4992132 100644 --- a/src/pyrovelocity/io/json.py +++ b/src/pyrovelocity/io/json.py @@ -7,7 +7,7 @@ import pandas as pd from beartype import beartype -from beartype.typing import Any, Dict, Tuple +from beartype.typing import Any, Dict, List, Tuple from returns.result import Failure, Result, Success from rich.console import Console from rich.table import Table @@ -18,6 +18,7 @@ "combine_json_files", "add_duration_to_run_info", "generate_tables", + "generate_and_save_metric_tables", ] @@ -221,18 +222,22 @@ def add_duration_to_run_info( @beartype -def generate_tables(json_data: Dict[str, Any]) -> Tuple[str, str, str, Table]: +def generate_metric_tables( + json_data: Dict[str, Any], separate: bool = False +) -> Tuple[Dict[str, Dict[str, str] | str], Dict[str, Table]]: """ - Generate LaTeX, HTML, and rich tables from the provided JSON data. + Generate LaTeX, HTML, and Markdown tables for ELBO and MAE metrics from the provided JSON data. + + This function can generate either combined tables (ELBO and MAE together) or separate tables for each metric. Args: - json_data (Dict[str, Any]): - The JSON data containing metrics for different datasets and models. + json_data (Dict[str, Any]): The JSON data containing metrics for different datasets and models. + separate (bool): If True, generate separate tables for ELBO and MAE. If False, generate combined tables. Default is False. Returns: - Tuple[str, str, Table]: - A tuple containing the LaTeX table string, HTML table string, - and rich Table object. + Tuple[Dict[str, str], Dict[str, Table]]: A tuple containing two dictionaries: + 1. A dictionary with keys 'latex', 'html', and 'markdown', each containing the respective table strings. + 2. A dictionary with rich Table objects. Examples: >>> json_data = { @@ -241,141 +246,339 @@ def generate_tables(json_data: Dict[str, Any]) -> Tuple[str, str, str, Table]: ... "pancreas_model1-789": {"run_name": "pancreas_model1-789", "-ELBO": -8.234, "MAE": 0.987}, ... "pancreas_model2-012": {"run_name": "pancreas_model2-012", "-ELBO": -8.123, "MAE": 0.998} ... } - >>> latex, html, markdown, rich_table = generate_tables(json_data) + >>> table_strings, rich_tables = generate_metric_tables(json_data) + >>> separate_table_strings, separate_rich_tables = generate_metric_tables(json_data, separate=True) """ + dataset_metrics = process_json_data(json_data) + + if separate: + return generate_separate_tables(dataset_metrics) + else: + return generate_combined_tables(dataset_metrics) + +def process_json_data( + json_data: Dict[str, Any] +) -> Dict[str, Dict[str, Dict[str, float]]]: dataset_metrics = defaultdict(lambda: defaultdict(dict)) for run_name, metrics in json_data.items(): match = re.match(r"(\w+)_(model\d+)-", run_name) if match: dataset, model = match.groups() - dataset_metrics[dataset][model]["-ELBO"] = metrics.get( + dataset = dataset.replace("_", " ") + if "simulated" in dataset.lower(): + continue + dataset_metrics[dataset][model]["ELBO"] = metrics.get( "-ELBO", "N/A" ) dataset_metrics[dataset][model]["MAE"] = metrics.get("MAE", "N/A") + return dataset_metrics + +def generate_combined_tables( + dataset_metrics: Dict[str, Dict[str, Dict[str, float]]] +) -> Tuple[Dict[str, str], Dict[str, Table]]: data = [] for dataset, models in dataset_metrics.items(): row = {"Dataset": dataset} for model in ["model1", "model2"]: + formatted_model = format_model_name(model) if model in models: - row[f"{model.capitalize()} -ELBO"] = models[model].get( - "-ELBO", "N/A" - ) - row[f"{model.capitalize()} MAE"] = models[model].get( - "MAE", "N/A" + row[f"{formatted_model} ELBO"] = models[model].get( + "ELBO", "N/A" ) + row[f"{formatted_model} MAE"] = models[model].get("MAE", "N/A") else: - row[f"{model.capitalize()} -ELBO"] = "N/A" - row[f"{model.capitalize()} MAE"] = "N/A" + row[f"{formatted_model} ELBO"] = "N/A" + row[f"{formatted_model} MAE"] = "N/A" data.append(row) df = pd.DataFrame(data) - df.columns = pd.MultiIndex.from_tuples( - [ - ("Dataset", ""), - ("Model 1", "-ELBO"), - ("Model 1", "MAE"), - ("Model 2", "-ELBO"), - ("Model 2", "MAE"), - ] - ) + latex_table = generate_latex_table(df) + html_table = generate_html_table(df) + markdown_table = generate_markdown_table(df) + rich_table = generate_rich_table(df) + + console = Console() + console.print(rich_table) - latex_table = df.to_latex( - index=False, - multicolumn=True, - multicolumn_format="c", - column_format="l|cc|cc", + return { + "latex": latex_table, + "html": html_table, + "markdown": markdown_table, + }, {"combined": rich_table} + + +def format_model_name(model: str) -> str: + return f"Model {model[-1]}" + + +def generate_separate_tables( + dataset_metrics: Dict[str, Dict[str, Dict[str, float]]] +) -> Tuple[Dict[str, Dict[str, str]], Dict[str, Table]]: + data_elbo, data_mae = [], [] + for dataset, models in dataset_metrics.items(): + row_elbo = {"Dataset": dataset} + row_mae = {"Dataset": dataset} + for model in ["model1", "model2"]: + formatted_model = format_model_name(model) + if model in models: + row_elbo[formatted_model] = models[model].get("ELBO", "N/A") + row_mae[formatted_model] = models[model].get("MAE", "N/A") + else: + row_elbo[formatted_model] = "N/A" + row_mae[formatted_model] = "N/A" + data_elbo.append(row_elbo) + data_mae.append(row_mae) + + df_elbo = pd.DataFrame(data_elbo) + df_mae = pd.DataFrame(data_mae) + + latex_elbo = generate_latex_table(df_elbo, separate=True) + latex_mae = generate_latex_table(df_mae, separate=True) + html_elbo = generate_html_table(df_elbo, separate=True) + html_mae = generate_html_table(df_mae, separate=True) + markdown_elbo = generate_markdown_table(df_elbo, separate=True) + markdown_mae = generate_markdown_table(df_mae, separate=True) + rich_table_elbo = generate_rich_table( + df_elbo, title="ELBO Comparison", separate=True + ) + rich_table_mae = generate_rich_table( + df_mae, title="MAE Comparison", separate=True ) - latex_table = latex_table.replace("\\midrule", "\\midrule\n\\cline{2-5}") - - html_table = """ - - - - - - - - - - - - - - - - - {rows} - -
DatasetModel 1Model 2
-ELBOMAE-ELBOMAE
+ + console = Console() + console.print(rich_table_elbo) + console.print(rich_table_mae) + + return { + "latex": {"ELBO": latex_elbo, "MAE": latex_mae}, + "html": {"ELBO": html_elbo, "MAE": html_mae}, + "markdown": {"ELBO": markdown_elbo, "MAE": markdown_mae}, + }, {"ELBO": rich_table_elbo, "MAE": rich_table_mae} + + +def wrap_latex_table(table_content: str) -> str: """ + Wrap the LaTeX table content in a complete LaTeX document structure. - rows = "" - for _, row in df.iterrows(): - rows += f""" - - {row[("Dataset", "")]} - {row[("Model 1", "-ELBO")]:.4f} - {row[("Model 1", "MAE")]:.4f} - {row[("Model 2", "-ELBO")]:.4f} - {row[("Model 2", "MAE")]:.4f} - + Args: + table_content (str): The LaTeX table content generated by df.to_latex() + + Returns: + str: The complete LaTeX document including the table + """ + latex_document = r""" +\documentclass[border=2pt]{standalone} +\usepackage{booktabs} + +\begin{document} + +%s +\end{document} +""" + return latex_document % table_content + + +def generate_latex_table(df: pd.DataFrame, separate: bool = False) -> str: + if separate: + table_content = df.to_latex(index=False, column_format="l|cc") + else: + table_content = df.to_latex(index=False, column_format="l|cc|cc") + # return wrap_latex_table(table_content) + return table_content + + +def generate_html_table(df: pd.DataFrame, separate: bool = False) -> str: + if separate: + header = """ + + + + + + + + + + """ + else: + header = """ +
DatasetModel 1Model 2
+ + + + + + + + + + + + + + + """ - html_table = html_table.format(rows=rows) + body = generate_html_rows(df, separate) + footer = """ + +
DatasetModel 1Model 2
ELBOMAEELBOMAE
+ """ + return header + body + footer - markdown_table = ( - "| Dataset | Model 1 | | Model 2 | |\n" - ) - markdown_table += ( - "|-----------|-----------|----------|-----------|----------|\n" - ) - markdown_table += ( - "| | -ELBO | MAE | -ELBO | MAE |\n" - ) - for _, row in df.iterrows(): - markdown_table += ( - f"| {row['Dataset', '']} " - f"| {row['Model 1', '-ELBO']:.4f} | {row['Model 1', 'MAE']:.4f} " - f"| {row['Model 2', '-ELBO']:.4f} | {row['Model 2', 'MAE']:.4f} |\n" - ) - rich_table = Table(title="Model Comparison") +def generate_markdown_table(df: pd.DataFrame, separate: bool = False) -> str: + if separate: + header = "| Dataset | Model 1 | Model 2 |\n|-----------|---------|----------|\n" + else: + header = "| Dataset | Model 1 ELBO | Model 1 MAE | Model 2 ELBO | Model 2 MAE |\n|-----------|--------------|-------------|--------------|-------------|\n" + + body = generate_markdown_rows(df, separate) + return header + body + + +def generate_rich_table( + df: pd.DataFrame, title: str = "Model Comparison", separate: bool = False +) -> Table: + rich_table = Table(title=title) rich_table.add_column("Dataset", style="cyan", no_wrap=True) - rich_table.add_column("Model 1", style="magenta", no_wrap=True) - rich_table.add_column("", style="magenta", no_wrap=True) - rich_table.add_column("Model 2", style="green", no_wrap=True) - rich_table.add_column("", style="green", no_wrap=True) - rich_table.add_row("", "-ELBO", "MAE", "-ELBO", "MAE") + if separate: + rich_table.add_column("Model 1", style="magenta") + rich_table.add_column("Model 2", style="green") + for _, row in df.iterrows(): + rich_table.add_row( + row["Dataset"], + format_value(row["Model 1"]), + format_value(row["Model 2"]), + ) + else: + rich_table.add_column("Model 1 ELBO", style="magenta") + rich_table.add_column("Model 1 MAE", style="magenta") + rich_table.add_column("Model 2 ELBO", style="green") + rich_table.add_column("Model 2 MAE", style="green") + for _, row in df.iterrows(): + rich_table.add_row( + row["Dataset"], + format_value(row["Model 1 ELBO"]), + format_value(row["Model 1 MAE"]), + format_value(row["Model 2 ELBO"]), + format_value(row["Model 2 MAE"]), + ) + return rich_table + +def generate_html_rows(df: pd.DataFrame, separate: bool = False) -> str: + rows = "" + for _, row in df.iterrows(): + if separate: + rows += f""" + + {row['Dataset']} + {format_value(row['Model 1'])} + {format_value(row['Model 2'])} + + """ + else: + rows += f""" + + {row['Dataset']} + {format_value(row['Model 1 ELBO'])} + {format_value(row['Model 1 MAE'])} + {format_value(row['Model 2 ELBO'])} + {format_value(row['Model 2 MAE'])} + + """ + return rows + + +def generate_markdown_rows(df: pd.DataFrame, separate: bool = False) -> str: + rows = "" for _, row in df.iterrows(): - rich_table.add_row( - row[("Dataset", "")], - f"{row[('Model 1', '-ELBO')]:.4f}" - if isinstance(row[("Model 1", "-ELBO")], float) - else str(row[("Model 1", "-ELBO")]), - f"{row[('Model 1', 'MAE')]:.4f}" - if isinstance(row[("Model 1", "MAE")], float) - else str(row[("Model 1", "MAE")]), - f"{row[('Model 2', '-ELBO')]:.4f}" - if isinstance(row[("Model 2", "-ELBO")], float) - else str(row[("Model 2", "-ELBO")]), - f"{row[('Model 2', 'MAE')]:.4f}" - if isinstance(row[("Model 2", "MAE")], float) - else str(row[("Model 2", "MAE")]), - ) + if separate: + rows += f"| {row['Dataset']} | {format_value(row['Model 1'])} | {format_value(row['Model 2'])} |\n" + else: + rows += f"| {row['Dataset']} | {format_value(row['Model 1 ELBO'])} | {format_value(row['Model 1 MAE'])} | {format_value(row['Model 2 ELBO'])} | {format_value(row['Model 2 MAE'])} |\n" + return rows - console = Console() - console.print(latex_table) - console.print(html_table) - console.print(markdown_table) - console.print(rich_table) - return ( - latex_table, - html_table, - markdown_table, - rich_table, +def format_value(value: Any) -> str: + return f"{value:.4f}" if isinstance(value, float) else str(value) + + +@beartype +def generate_and_save_metric_tables( + json_data: Dict[str, Any], + output_dir: Path = Path("reports"), +) -> List[Path]: + """ + Generate and save tables for ELBO, MAE, and combined metrics in LaTeX, HTML, and Markdown formats. + + This function uses the `generate_metric_tables` function to create both separate and combined tables + for different metrics and formats, then saves them to files in the specified output directory. + + Args: + json_data (Dict[str, Any]): The input JSON data containing metrics for different datasets and models. + output_dir (Path): The directory where the output files will be saved. + + Returns: + None + + Raises: + IOError: If there's an error writing to the output files. + + Example: + >>> json_data = { + ... "simulated_model1-123": {"run_name": "simulated_model1-123", "-ELBO": -7.339, "MAE": 1.094}, + ... "simulated_model2-456": {"run_name": "simulated_model2-456", "-ELBO": -7.512, "MAE": 1.123}, + ... "pancreas_model1-789": {"run_name": "pancreas_model1-789", "-ELBO": -8.234, "MAE": 0.987}, + ... "pancreas_model2-012": {"run_name": "pancreas_model2-012", "-ELBO": -8.123, "MAE": 0.998} + ... } + >>> output_dir = Path("output") + >>> generate_and_save_metric_tables(json_data, output_dir) + """ + output_dir.mkdir(parents=True, exist_ok=True) + + json_file = output_dir / "input_metrics.json" + with json_file.open("w") as f: + json.dump(json_data, f, indent=2) + + separate_table_strings, _ = generate_metric_tables(json_data, separate=True) + + combined_table_strings, _ = generate_metric_tables( + json_data, separate=False ) + + files_to_save = { + "combined_table.html": combined_table_strings["html"], + "combined_table.tex": wrap_latex_table( + combined_table_strings["latex"], + ), + "combined_table.md": combined_table_strings["markdown"], + "elbo_table.html": separate_table_strings["html"]["ELBO"], + "elbo_table.tex": wrap_latex_table( + separate_table_strings["latex"]["ELBO"], + ), + "elbo_table.md": separate_table_strings["markdown"]["ELBO"], + "mae_table.html": separate_table_strings["html"]["MAE"], + "mae_table.tex": wrap_latex_table( + separate_table_strings["latex"]["MAE"], + ), + "mae_table.md": separate_table_strings["markdown"]["MAE"], + } + + output_file_paths = [json_file] + for file_name, content in files_to_save.items(): + file_path = output_dir / file_name + try: + with file_path.open("w") as f: + f.write(content) + output_file_paths.append(file_path) + except IOError as e: + raise IOError(f"Error writing to file {file_path}: {e}") + + print(f"All tables have been generated and saved in {output_dir}") + return output_file_paths From bd510323eb277475e397975e75b1b52cebc2cd9a Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:17:44 -0400 Subject: [PATCH 050/177] fix(workflows): include png in time lineage fate correlation plot uploads Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index d958e7cba..24e5ce5b8 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -585,12 +585,13 @@ def combine_time_lineage_fate_correlation( attempted_upload_results = [] for file in time_lineage_fate_correlation_plots: - upload_result = upload_file_concurrently( - bucket_name=f"pyrovelocity/reports/{execution_id}", - source_filename=file, - destination_blob_name=str(file), - ) - attempted_upload_results.append(upload_result) + for ext in ["", ".png"]: + upload_result = upload_file_concurrently( + bucket_name=f"pyrovelocity/reports/{execution_id}", + source_filename=f"{file}{ext}", + destination_blob_name=f"{file}{ext}", + ) + attempted_upload_results.append(upload_result) if all(isinstance(result, Success) for result in attempted_upload_results): logger.info("\nAll time lineage fate correlation uploads successful.") From c41896009cd293b50bfb08abb96722e234ce6283 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:23:04 -0400 Subject: [PATCH 051/177] fix(workflows): include individual metric tables in CombinedMetricsOutputs Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_configuration.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pyrovelocity/workflows/main_configuration.py b/src/pyrovelocity/workflows/main_configuration.py index b7c69d24a..92b361eea 100644 --- a/src/pyrovelocity/workflows/main_configuration.py +++ b/src/pyrovelocity/workflows/main_configuration.py @@ -217,10 +217,16 @@ class SummarizeOutputs(DataClassJSONMixin): @dataclass class CombinedMetricsOutputs(DataClassJSONMixin): - json_metrics: FlyteFile - latex_metrics: FlyteFile - html_metrics: FlyteFile - md_metrics: FlyteFile + metrics_json: FlyteFile + metrics_latex: FlyteFile + metrics_html: FlyteFile + metrics_md: FlyteFile + elbo_latex: FlyteFile + elbo_html: FlyteFile + elbo_md: FlyteFile + mae_latex: FlyteFile + mae_html: FlyteFile + mae_md: FlyteFile simulated_dataset_args = DownloadDatasetInterface( From e43baffa41cb1f1c2c0c3b84f0d6683d8395c67f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:23:47 -0400 Subject: [PATCH 052/177] fix(workflows): use helper function to generate and save metrics tables Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 53 ++++++++++----------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 24e5ce5b8..c48baf390 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -26,7 +26,7 @@ from pyrovelocity.io.json import ( add_duration_to_run_info, combine_json_files, - generate_tables, + generate_and_save_metric_tables, load_json, ) from pyrovelocity.logging import configure_logging @@ -643,31 +643,14 @@ def combine_all_metrics( with json_metrics_file.open("w") as f: json.dump(combined_metrics, f, indent=2) - latex_table, html_table, markdown_table, _ = generate_tables( - combined_metrics + files_to_upload = generate_and_save_metric_tables( + json_data=combined_metrics, + output_dir=Path("."), ) - latex_metrics_file = Path("combined_metrics_table.tex") - with latex_metrics_file.open("w") as f: - f.write(latex_table) - - html_metrics_file = Path("combined_metrics_table.html") - with html_metrics_file.open("w") as f: - f.write(html_table) - - md_metrics_file = Path("combined_metrics_table.md") - with md_metrics_file.open("w") as f: - f.write(markdown_table) - ctx = current_context() execution_id = ctx.execution_id.name - files_to_upload = [ - json_metrics_file, - latex_metrics_file, - html_metrics_file, - md_metrics_file, - ] attempted_upload_results = [] for file in files_to_upload: @@ -681,10 +664,16 @@ def combine_all_metrics( if all(isinstance(result, Success) for result in attempted_upload_results): print("\nAll uploads successful.") return CombinedMetricsOutputs( - json_metrics=FlyteFile(path=str(json_metrics_file)), - latex_metrics=FlyteFile(path=str(latex_metrics_file)), - html_metrics=FlyteFile(path=str(html_metrics_file)), - md_metrics=FlyteFile(path=str(md_metrics_file)), + metrics_json=FlyteFile(path=str(files_to_upload[0])), + metrics_html=FlyteFile(path=str(files_to_upload[1])), + metrics_latex=FlyteFile(path=str(files_to_upload[2])), + metrics_md=FlyteFile(path=str(files_to_upload[3])), + elbo_html=FlyteFile(path=str(files_to_upload[4])), + elbo_latex=FlyteFile(path=str(files_to_upload[5])), + elbo_md=FlyteFile(path=str(files_to_upload[6])), + mae_html=FlyteFile(path=str(files_to_upload[7])), + mae_latex=FlyteFile(path=str(files_to_upload[8])), + mae_md=FlyteFile(path=str(files_to_upload[9])), ) else: print("\nOne or more uploads failed.") @@ -695,10 +684,16 @@ def combine_all_metrics( ] print(f"Failed uploads: {', '.join(failed_uploads)}") return CombinedMetricsOutputs( - json_metrics=FlyteFile(path=""), - latex_metrics=FlyteFile(path=""), - html_metrics=FlyteFile(path=""), - md_metrics=FlyteFile(path=""), + metrics_json=FlyteFile(path=""), + metrics_latex=FlyteFile(path=""), + metrics_html=FlyteFile(path=""), + metrics_md=FlyteFile(path=""), + elbo_html=FlyteFile(path=""), + elbo_latex=FlyteFile(path=""), + elbo_md=FlyteFile(path=""), + mae_html=FlyteFile(path=""), + mae_latex=FlyteFile(path=""), + mae_md=FlyteFile(path=""), ) From 62803f0e2a005f376eea50b35f885e98d699e072 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:25:39 -0400 Subject: [PATCH 053/177] refactor(io): rename json module to metrics Signed-off-by: Cameron Smith --- src/pyrovelocity/io/{json.py => metrics.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/pyrovelocity/io/{json.py => metrics.py} (100%) diff --git a/src/pyrovelocity/io/json.py b/src/pyrovelocity/io/metrics.py similarity index 100% rename from src/pyrovelocity/io/json.py rename to src/pyrovelocity/io/metrics.py From 260af1f232dca3ec49fd14ecc4369982b309db7b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 13:29:06 -0400 Subject: [PATCH 054/177] fix(io): default to sans serif in table tex wrapper Signed-off-by: Cameron Smith --- src/pyrovelocity/io/metrics.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pyrovelocity/io/metrics.py b/src/pyrovelocity/io/metrics.py index 7b4992132..cafc00576 100644 --- a/src/pyrovelocity/io/metrics.py +++ b/src/pyrovelocity/io/metrics.py @@ -372,6 +372,7 @@ def wrap_latex_table(table_content: str) -> str: latex_document = r""" \documentclass[border=2pt]{standalone} \usepackage{booktabs} +\renewcommand{\familydefault}{\sfdefault} \begin{document} From 186ef1ec846047bbe4cc81bc4b4edd5439a072cc Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 15:15:17 -0400 Subject: [PATCH 055/177] feat(plots): add functions to render graphical model sketches Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/models.py | 275 +++++++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 src/pyrovelocity/plots/models.py diff --git a/src/pyrovelocity/plots/models.py b/src/pyrovelocity/plots/models.py new file mode 100644 index 000000000..8c07bb22a --- /dev/null +++ b/src/pyrovelocity/plots/models.py @@ -0,0 +1,275 @@ +from pathlib import Path + +import daft +import matplotlib.pyplot as plt + +__all__ = [ + "variable_initial_condition_model_plate_diagram", + "variable_initial_condition_multiple_timepoints_model_plate_diagram", +] + + +def variable_initial_condition_model_plate_diagram( + output_path: str + | Path = "variable_initial_condition_model_plate_diagram.pdf", +): + plt.rcParams["font.family"] = "serif" + plt.rcParams["font.size"] = 16 + plt.rcParams["text.usetex"] = True + + pgm = daft.PGM(line_width=1.2) + + optional_color = "#ff6a14" + optional_color_params = {"ec": optional_color} + + # hyperparameters + pgm.add_node( + "mu_init", + r"$\mu_{0}$", + 0.5, + 6, + fixed=True, + plot_params=optional_color_params | {"fc": optional_color}, + ) + pgm.add_node( + "sigma_init", + r"$\sigma_{0}^2$", + 1.5, + 6, + fixed=True, + plot_params=optional_color_params | {"fc": optional_color}, + ) + pgm.add_node("mu_theta", r"$\mu_{\theta}$", 2.5, 6, fixed=True) + pgm.add_node("sigma_theta", r"$\sigma_{\theta}^2$", 3.5, 6, fixed=True) + pgm.add_node("mu_sigma", r"$\mu_{\sigma}$", 4.5, 6, fixed=True) + pgm.add_node("sigma_sigma", r"$\sigma_{\sigma}^2$", 5.5, 6, fixed=True) + + # latent variables for gene-specific parameters + pgm.add_node( + "us_0i", + r"$(u,s)_{0i}$", + 1, + 5, + fontsize=7, + scale=1.0, + plot_params=optional_color_params, + ) + pgm.add_node("t_0i", r"$t_{0i}$", 2, 5, plot_params=optional_color_params) + pgm.add_node("theta_i", r"$\theta_i$", 3, 5) + pgm.add_node("sigma_ui", r"$\sigma_{ui}$", 4, 5) + pgm.add_node("sigma_si", r"$\sigma_{si}$", 5, 5) + + # latent variables for cell-specific outcomes + pgm.add_node( + "u_ij", + r"$u_{ij}$", + 2, + 4, + scale=1.0, + shape="rectangle", + ) + pgm.add_node( + "s_ij", + r"$s_{ij}$", + 4, + 4, + scale=1.0, + shape="rectangle", + ) + + # observed data + pgm.add_node("t_j", r"$t_j$", 6.0, 3.25) + pgm.add_node( + "u_obs_ij", + r"$\hat{u}_{ij}$", + 2, + 2.5, + scale=1.0, + observed=True, + ) + pgm.add_node( + "s_obs_ij", + r"$\hat{s}_{ij}$", + 4, + 2.5, + scale=1.0, + observed=True, + ) + + # edges + edge_params = {"head_length": 0.3, "head_width": 0.25, "lw": 0.7} + optional_color_params.update({"fc": optional_color}) + optional_color_params.update(edge_params) + pgm.add_edge("mu_init", "us_0i", plot_params=optional_color_params) + pgm.add_edge("sigma_init", "us_0i", plot_params=optional_color_params) + pgm.add_edge("mu_init", "t_0i", plot_params=optional_color_params) + pgm.add_edge("sigma_init", "t_0i", plot_params=optional_color_params) + pgm.add_edge("mu_theta", "theta_i", plot_params=edge_params) + pgm.add_edge("sigma_theta", "theta_i", plot_params=edge_params) + pgm.add_edge("mu_sigma", "sigma_ui", plot_params=edge_params) + pgm.add_edge("sigma_sigma", "sigma_ui", plot_params=edge_params) + pgm.add_edge("mu_sigma", "sigma_si", plot_params=edge_params) + pgm.add_edge("sigma_sigma", "sigma_si", plot_params=edge_params) + + pgm.add_edge("us_0i", "u_ij", plot_params=optional_color_params) + pgm.add_edge("t_0i", "u_ij", plot_params=optional_color_params) + pgm.add_edge("us_0i", "s_ij", plot_params=optional_color_params) + pgm.add_edge("t_0i", "s_ij", plot_params=optional_color_params) + pgm.add_edge("theta_i", "s_ij", plot_params=edge_params) + pgm.add_edge("theta_i", "u_ij", plot_params=edge_params) + + pgm.add_edge("u_ij", "u_obs_ij", plot_params=edge_params) + pgm.add_edge("s_ij", "s_obs_ij", plot_params=edge_params) + pgm.add_edge("sigma_ui", "u_obs_ij", plot_params=edge_params) + pgm.add_edge("sigma_si", "s_obs_ij", plot_params=edge_params) + + pgm.add_edge("t_j", "u_ij", plot_params=edge_params) + pgm.add_edge("t_j", "s_ij", plot_params=edge_params) + + # plates + pgm.add_plate( + [0.5, 1.2, 5, 4.4], + label=r"Genes $i \in \{1, \ldots, G\}$", + shift=-0.1, + fontsize=12, + ) + pgm.add_plate( + [1.0, 1.8, 5.5, 2.75], + label=r"Cells $j \in \{1, \ldots, N\}$", + shift=-0.1, + fontsize=12, + ) + + pgm.render() + + for ext in ["", ".png"]: + pgm.savefig( + f"{output_path}{ext}", + bbox_inches="tight", + edgecolor="none", + dpi=300, + transparent=False, + ) + + +def variable_initial_condition_multiple_timepoints_model_plate_diagram( + output_path: str + | Path = "variable_initial_condition_multiple_timepoints_model_plate_diagram.pdf", +): + plt.rcParams["font.family"] = "serif" + plt.rcParams["font.size"] = 16 + plt.rcParams["text.usetex"] = True + + pgm = daft.PGM(line_width=1.2) + + # hyperparameters + pgm.add_node("mu_init", r"$\mu_{0}$", 0.5, 6, fixed=True) + pgm.add_node("sigma_init", r"$\sigma_{0}^2$", 1.5, 6, fixed=True) + pgm.add_node("mu_theta", r"$\mu_{\theta}$", 2.5, 6, fixed=True) + pgm.add_node("sigma_theta", r"$\sigma_{\theta}^2$", 3.5, 6, fixed=True) + pgm.add_node("mu_sigma", r"$\mu_{\sigma}$", 4.5, 6, fixed=True) + pgm.add_node("sigma_sigma", r"$\sigma_{\sigma}^2$", 5.5, 6, fixed=True) + + # latent variables for gene-specific parameters + # pgm.add_node("us_0i", r"$\mathbf{x}_{0i}$", 1, 5, scale=1.0) + pgm.add_node("us_0i", r"$(u,s)_{0i}$", 1, 5, fontsize=7, scale=1.0) + pgm.add_node("t_0i", r"$t_{0i}$", 2, 5) + pgm.add_node("theta_i", r"$\theta_i$", 3, 5) + pgm.add_node("sigma_ui", r"$\sigma_{ui}$", 4, 5) + pgm.add_node("sigma_si", r"$\sigma_{si}$", 5, 5) + + # latent variables for cell-specific outcomes + pgm.add_node( + "u_ij", + r"${u}^k_{ij}$", + 2, + 3.8, + scale=1.0, + shape="rectangle", + ) + pgm.add_node( + "s_ij", + r"${s}^k_{ij}$", + 4, + 3.8, + scale=1.0, + shape="rectangle", + ) + + # observed data + pgm.add_node("t_j", r"${t}^k_j$", 5.9, 3.1) + pgm.add_node( + "u_obs_ij", + r"$\hat{u}{}^{k}_{ij}$", + 2, + 2.4, + scale=1.0, + observed=True, + ) + pgm.add_node( + "s_obs_ij", + r"$\hat{s}{}^{k}_{ij}$", + 4, + 2.4, + scale=1.0, + observed=True, + ) + + # edges + edge_params = {"head_length": 0.3, "head_width": 0.25, "lw": 0.7} + pgm.add_edge("mu_init", "us_0i", plot_params=edge_params) + pgm.add_edge("sigma_init", "us_0i", plot_params=edge_params) + pgm.add_edge("mu_init", "t_0i", plot_params=edge_params) + pgm.add_edge("sigma_init", "t_0i", plot_params=edge_params) + pgm.add_edge("mu_theta", "theta_i", plot_params=edge_params) + pgm.add_edge("sigma_theta", "theta_i", plot_params=edge_params) + pgm.add_edge("mu_sigma", "sigma_ui", plot_params=edge_params) + pgm.add_edge("sigma_sigma", "sigma_ui", plot_params=edge_params) + pgm.add_edge("mu_sigma", "sigma_si", plot_params=edge_params) + pgm.add_edge("sigma_sigma", "sigma_si", plot_params=edge_params) + + pgm.add_edge("us_0i", "u_ij", plot_params=edge_params) + pgm.add_edge("t_0i", "u_ij", plot_params=edge_params) + pgm.add_edge("us_0i", "s_ij", plot_params=edge_params) + pgm.add_edge("t_0i", "s_ij", plot_params=edge_params) + pgm.add_edge("theta_i", "s_ij", plot_params=edge_params) + pgm.add_edge("theta_i", "u_ij", plot_params=edge_params) + + pgm.add_edge("u_ij", "u_obs_ij", plot_params=edge_params) + pgm.add_edge("s_ij", "s_obs_ij", plot_params=edge_params) + pgm.add_edge("sigma_ui", "u_obs_ij", plot_params=edge_params) + pgm.add_edge("sigma_si", "s_obs_ij", plot_params=edge_params) + + pgm.add_edge("t_j", "u_ij", plot_params=edge_params) + pgm.add_edge("t_j", "s_ij", plot_params=edge_params) + + # plates + pgm.add_plate( + [0.4, 1.0, 5, 4.5], + label=r"$i \in \{1, \ldots, G\}$", + shift=-0.1, + fontsize=12, + ) + pgm.add_plate( + [0.8, 1.4, 5.9, 3.2], + label=r"$j \in \{1, \ldots, N\}$", + shift=-0.1, + fontsize=12, + ) + pgm.add_plate( + [1.2, 1.8, 5.2, 2.5], + label=r"$k \in \{1, \ldots, K_j\}$", + shift=-0.1, + fontsize=12, + ) + + pgm.render() + + for ext in ["", ".png"]: + pgm.savefig( + f"{output_path}{ext}", + bbox_inches="tight", + edgecolor="none", + dpi=300, + transparent=False, + ) From 39f28afa6060fbf5bfbef4344252de71109c1e19 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 15:15:47 -0400 Subject: [PATCH 056/177] fix(workflows): io.json -> io.metrics Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index c48baf390..3e06d03e8 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -23,7 +23,7 @@ ) from pyrovelocity.io.datasets import larry_cospar from pyrovelocity.io.gcs import upload_file_concurrently -from pyrovelocity.io.json import ( +from pyrovelocity.io.metrics import ( add_duration_to_run_info, combine_json_files, generate_and_save_metric_tables, From cd00e8ad7b2555e09d4aca4c64c956f8b6df2dc5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:12:01 -0400 Subject: [PATCH 057/177] feat(io): log dataset hash on load Signed-off-by: Cameron Smith --- src/pyrovelocity/io/datasets.py | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/pyrovelocity/io/datasets.py b/src/pyrovelocity/io/datasets.py index 39418a254..96f8aac75 100644 --- a/src/pyrovelocity/io/datasets.py +++ b/src/pyrovelocity/io/datasets.py @@ -5,6 +5,29 @@ import scvelo as scv from beartype import beartype +from pyrovelocity.logging import configure_logging +from pyrovelocity.utils import hash_file + +__all__ = [ + "pbmc5k", + "pbmc10k", + "pons", + "larry", + "larry_neu", + "larry_mono", + "larry_cospar", + "larry_cytotrace", + "larry_dynamical", + "larry_tips", + "larry_multilineage", + "pancreas", + "bonemarrow", + "pbmc68k", +] + + +logger = configure_logging(__name__) + @beartype def pbmc5k( @@ -20,6 +43,7 @@ def pbmc5k( """ url = "https://storage.googleapis.com/pyrovelocity/data/pbmc5k.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -37,6 +61,7 @@ def pbmc10k( """ url = "https://storage.googleapis.com/pyrovelocity/data/pbmc10k.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -55,6 +80,7 @@ def pons( """ url = "https://storage.googleapis.com/pyrovelocity/data/oligo_lite.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -73,6 +99,7 @@ def larry( """ url = "https://figshare.com/ndownloader/files/37028569" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -95,6 +122,7 @@ def larry_neu( adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) adata = adata[adata.obs.state_info != "Centroid", :] adata.write(file_path) + _log_hash(file_path) return adata @@ -116,6 +144,7 @@ def larry_mono( adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) adata = adata[adata.obs.state_info != "Centroid", :] adata.write(file_path) + _log_hash(file_path) return adata @@ -133,6 +162,7 @@ def larry_cospar( """ url = "https://storage.googleapis.com/pyrovelocity/data/larry_cospar.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -152,6 +182,7 @@ def larry_cytotrace( "https://storage.googleapis.com/pyrovelocity/data/larry_cytotrace.h5ad" ) adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -171,6 +202,7 @@ def larry_dynamical( "https://storage.googleapis.com/pyrovelocity/data/larry_dynamical.h5ad" ) adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + _log_hash(file_path) return adata @@ -190,6 +222,7 @@ def larry_tips( adata = adata[adata.obs["time_info"] == 6.0] adata = adata[adata.obs["state_info"] != "Undifferentiated"] adata.write(file_path) + _log_hash(file_path) return adata @@ -209,6 +242,7 @@ def larry_multilineage( adata_larry_neu = larry_neu() adata = adata_larry_mono.concatenate(adata_larry_neu) adata.write(file_path) + _log_hash(file_path) return adata @@ -231,6 +265,7 @@ def pancreas( Returns `AnnData` object """ adata = scv.datasets.pancreas(file_path=file_path) + _log_hash(file_path) return adata @@ -253,6 +288,7 @@ def bonemarrow( Returns `AnnData` object """ adata = scv.datasets.bonemarrow(file_path=file_path) + _log_hash(file_path) return adata @@ -278,4 +314,15 @@ def pbmc68k( scv.pp.remove_duplicate_cells(adata) adata.obsm["X_tsne"][:, 0] *= -1 adata.write(file_path) + _log_hash(file_path) return adata + + +@beartype +def _log_hash(file_path: str | Path) -> str: + adata_hash = hash_file(file_path=file_path) + logger.info( + f"\nSuccessfully read or created file: {file_path}\n" + f"SHA-256 hash: {adata_hash}\n" + ) + return adata_hash From cd5643527154c26fca87ca08e47896c5f7ee62a7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:12:21 -0400 Subject: [PATCH 058/177] fix(utils): log data hash on load Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index 9d9d45d84..7accd205c 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -657,6 +657,11 @@ def load_anndata_from_path(adata_path: str | Path) -> AnnData: if os.path.isfile(adata_path) and os.access(adata_path, os.R_OK): logger.info(f"Reading input file: {adata_path}") adata = sc.read(filename=adata_path, cache=True) + adata_hash = hash_file(adata_path) + logger.info( + f"\nSuccessfully read input file: {adata_path}\n" + f"SHA-256 hash: {adata_hash}" + ) return adata else: raise ValueError(f"Cannot read input file: {adata_path}") From 6ef6954e561310708827128b078a70eb0e050e03 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:26:05 -0400 Subject: [PATCH 059/177] refactor(utils): move hash function to io Signed-off-by: Cameron Smith --- src/pyrovelocity/io/hash.py | 19 +++++++++++++++++++ src/pyrovelocity/utils.py | 18 +----------------- 2 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 src/pyrovelocity/io/hash.py diff --git a/src/pyrovelocity/io/hash.py b/src/pyrovelocity/io/hash.py new file mode 100644 index 000000000..144173f57 --- /dev/null +++ b/src/pyrovelocity/io/hash.py @@ -0,0 +1,19 @@ +import hashlib +from pathlib import Path + +from beartype import beartype + + +@beartype +def hash_file( + file_path: str | Path, + chunk_size: int = 8192, +): + sha256_hash = hashlib.sha256() + file_path = Path(file_path) + + with file_path.open("rb") as f: + for byte_block in iter(lambda: f.read(chunk_size), b""): + sha256_hash.update(byte_block) + + return sha256_hash.hexdigest() diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index 7accd205c..eac4fe1a4 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -1,6 +1,5 @@ import contextlib import difflib -import hashlib import importlib import inspect import io @@ -30,6 +29,7 @@ from scvi.data import synthetic_iid from pyrovelocity.io.compressedpickle import CompressedPickle +from pyrovelocity.io.hash import hash_file from pyrovelocity.logging import configure_logging __all__ = [ @@ -39,7 +39,6 @@ "filter_startswith_dict", "generate_public_api", "generate_sample_data", - "hash_file", "internal_help", "load_anndata_from_path", "mae", @@ -667,21 +666,6 @@ def load_anndata_from_path(adata_path: str | Path) -> AnnData: raise ValueError(f"Cannot read input file: {adata_path}") -@beartype -def hash_file( - file_path: str | Path, - chunk_size: int = 8192, -): - sha256_hash = hashlib.sha256() - file_path = Path(file_path) - - with file_path.open("rb") as f: - for byte_block in iter(lambda: f.read(chunk_size), b""): - sha256_hash.update(byte_block) - - return sha256_hash.hexdigest() - - # TODO: remove unused functions # def log(x): # """ From 941653e43d5f1b731d33016f25f1d0bb97aa53ea Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:26:35 -0400 Subject: [PATCH 060/177] refactor(datasets): update hash file import Signed-off-by: Cameron Smith --- src/pyrovelocity/io/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/io/datasets.py b/src/pyrovelocity/io/datasets.py index 96f8aac75..ea9990d0c 100644 --- a/src/pyrovelocity/io/datasets.py +++ b/src/pyrovelocity/io/datasets.py @@ -5,8 +5,8 @@ import scvelo as scv from beartype import beartype +from pyrovelocity.io.hash import hash_file from pyrovelocity.logging import configure_logging -from pyrovelocity.utils import hash_file __all__ = [ "pbmc5k", From 5a0c6603c6b7057356ec539214d202958e41fda9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:28:23 -0400 Subject: [PATCH 061/177] fix(io): log data hash on pickle save/load Signed-off-by: Cameron Smith --- src/pyrovelocity/io/compressedpickle.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pyrovelocity/io/compressedpickle.py b/src/pyrovelocity/io/compressedpickle.py index f9684c975..678e2c145 100644 --- a/src/pyrovelocity/io/compressedpickle.py +++ b/src/pyrovelocity/io/compressedpickle.py @@ -13,6 +13,7 @@ ZstdDecompressor, ) +from pyrovelocity.io.hash import hash_file from pyrovelocity.io.sparsity import densify_arrays, sparsify_arrays from pyrovelocity.logging import configure_logging @@ -118,6 +119,7 @@ def save( with compression_context.stream_writer(f) as compressor: pickle.dump(obj, compressor) + _log_hash(file_path) return file_path @staticmethod @@ -161,4 +163,15 @@ def load( It cannot be automatically densified. """ ) + _log_hash(file_path) return obj + + +@beartype +def _log_hash(file_path: str | Path) -> str: + file_hash = hash_file(file_path=file_path) + logger.info( + f"\nSuccessfully read or created file: {file_path}\n" + f"SHA-256 hash: {file_hash}\n" + ) + return file_hash From cbac59e760132c1ecaecd39c5b6b0d24c7e1dc66 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 20:33:55 -0400 Subject: [PATCH 062/177] refactor(utils): move hash file tests to separate module Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/io/test_hash.py | 50 ++++++++++++++++++++++++++ src/pyrovelocity/tests/test_utils.py | 49 +------------------------ 2 files changed, 51 insertions(+), 48 deletions(-) create mode 100644 src/pyrovelocity/tests/io/test_hash.py diff --git a/src/pyrovelocity/tests/io/test_hash.py b/src/pyrovelocity/tests/io/test_hash.py new file mode 100644 index 000000000..79fb844db --- /dev/null +++ b/src/pyrovelocity/tests/io/test_hash.py @@ -0,0 +1,50 @@ +import hashlib +from pathlib import Path + +import pytest + +from pyrovelocity.io.hash import hash_file + + +def create_file_with_content(path: Path, content: str): + path.write_text(content) + return path + + +def calculate_sha256(content: str): + return hashlib.sha256(content.encode()).hexdigest() + + +@pytest.fixture +def sample_files(tmp_path): + files = { + "empty": create_file_with_content(tmp_path / "empty.txt", ""), + "small": create_file_with_content(tmp_path / "small.txt", "test file"), + "medium": create_file_with_content( + tmp_path / "medium.txt", "A" * 10000 + ), + "large": create_file_with_content( + tmp_path / "large.txt", "B" * 1000000 + ), + } + return files + + +def test_hash_file(sample_files): + for file_type, file_path in sample_files.items(): + content = file_path.read_text() + expected_hash = calculate_sha256(content) + assert ( + hash_file(file_path) == expected_hash + ), f"Hash mismatch for {file_type} file" + + +def test_hash_file_nonexistent_file(tmp_path): + non_existent_file = tmp_path / "nonexistent.txt" + with pytest.raises(FileNotFoundError): + hash_file(non_existent_file) + + +def test_hash_file_directory(tmp_path): + with pytest.raises(IsADirectoryError): + hash_file(tmp_path) diff --git a/src/pyrovelocity/tests/test_utils.py b/src/pyrovelocity/tests/test_utils.py index 43d2e5880..ef2c1dc81 100644 --- a/src/pyrovelocity/tests/test_utils.py +++ b/src/pyrovelocity/tests/test_utils.py @@ -1,8 +1,5 @@ """Tests for `pyrovelocity.utils` module.""" -import hashlib -from pathlib import Path - import hypothesis import numpy as np import pytest @@ -10,7 +7,7 @@ from hypothesis import given from hypothesis import strategies as st -from pyrovelocity.utils import generate_sample_data, hash_file +from pyrovelocity.utils import generate_sample_data def test_load_utils(): @@ -115,47 +112,3 @@ def test_generate_sample_data_invalid_noise_model(): match="noise_model must be one of 'iid', 'gillespie', 'normal'", ): generate_sample_data(noise_model="wishful thinking") - - -def create_file_with_content(path: Path, content: str): - path.write_text(content) - return path - - -def calculate_sha256(content: str): - return hashlib.sha256(content.encode()).hexdigest() - - -@pytest.fixture -def sample_files(tmp_path): - files = { - "empty": create_file_with_content(tmp_path / "empty.txt", ""), - "small": create_file_with_content(tmp_path / "small.txt", "test file"), - "medium": create_file_with_content( - tmp_path / "medium.txt", "A" * 10000 - ), - "large": create_file_with_content( - tmp_path / "large.txt", "B" * 1000000 - ), - } - return files - - -def test_hash_file(sample_files): - for file_type, file_path in sample_files.items(): - content = file_path.read_text() - expected_hash = calculate_sha256(content) - assert ( - hash_file(file_path) == expected_hash - ), f"Hash mismatch for {file_type} file" - - -def test_hash_file_nonexistent_file(tmp_path): - non_existent_file = tmp_path / "nonexistent.txt" - with pytest.raises(FileNotFoundError): - hash_file(non_existent_file) - - -def test_hash_file_directory(tmp_path): - with pytest.raises(IsADirectoryError): - hash_file(tmp_path) From dc77b0d3c9918c82e2e8bac751d54677cc4e417f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 23:06:09 -0400 Subject: [PATCH 063/177] fix(styles): remove unused mplstyle key Signed-off-by: Cameron Smith --- src/pyrovelocity/styles/common.mplstyle | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pyrovelocity/styles/common.mplstyle b/src/pyrovelocity/styles/common.mplstyle index 0485bbaa1..823cb0721 100644 --- a/src/pyrovelocity/styles/common.mplstyle +++ b/src/pyrovelocity/styles/common.mplstyle @@ -60,4 +60,3 @@ mathtext.fontset : cm # Use LaTeX for math formatting text.usetex : True text.latex.preamble : \usepackage{amsmath} \usepackage{amssymb} \usepackage[utf8]{inputenc} \usepackage{textcomp} -text.latex.unicode : True From 5e57d40df94a8967b29e15a4b08f92ba039c17e7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 28 Aug 2024 23:43:11 -0400 Subject: [PATCH 064/177] fix(plots): filter invalid adjustText warning Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index bc0202020..e31f71aa2 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Dict, List, Optional, Tuple +import adjustText import matplotlib.pyplot as plt import numpy as np import seaborn as sns @@ -22,6 +23,17 @@ logger = configure_logging(__name__) +ajusttext_warn = adjustText.logger.warn + + +def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): + if "Looks like you are using an old matplotlib version" not in message: + ajusttext_warn(message, *args, **kwargs) + + +adjustText.logger.warn = filter_adjusttext_matplotlib_warn + + @beartype def plot_gene_ranking( posterior_samples: List[Dict[str, ndarray]], From a9b559bd6cdae6b1711d009f551b15218380618e Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 29 Aug 2024 01:11:31 -0400 Subject: [PATCH 065/177] fix(tasks): set 4 columns for time fate correlation legend Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/time_fate_correlation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/tasks/time_fate_correlation.py b/src/pyrovelocity/tasks/time_fate_correlation.py index f4140c54e..20b4cd2cd 100644 --- a/src/pyrovelocity/tasks/time_fate_correlation.py +++ b/src/pyrovelocity/tasks/time_fate_correlation.py @@ -182,7 +182,7 @@ def _add_legend(fig: Figure, gs: GridSpec, all_axes: List[List[Axes]]) -> None: labels=labels, loc="lower left", bbox_to_anchor=(-0.1, -0.2), - ncol=5, + ncol=4, fancybox=True, prop={"size": 12}, fontsize=12, From 8986fc6f1f3b7751a21fa1eb7a13b82f51a1e9db Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 29 Aug 2024 01:12:12 -0400 Subject: [PATCH 066/177] fix(plots): update vector field summary plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 532 ++++++++++++++--------- 1 file changed, 321 insertions(+), 211 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 5fd1855c2..28e61f70a 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -8,8 +8,8 @@ import seaborn as sns from anndata import AnnData from beartype import beartype -from beartype.typing import Dict, Optional -from matplotlib import cm +from beartype.typing import Dict, List, Optional, Tuple +from matplotlib.axes import Axes from matplotlib.colors import Normalize from matplotlib.figure import FigureBase from matplotlib.ticker import MaxNLocator @@ -17,20 +17,43 @@ from pyrovelocity.analysis.analyze import compute_mean_vector_field from pyrovelocity.logging import configure_logging +from pyrovelocity.plots._time import plot_posterior_time from pyrovelocity.plots._uncertainty import ( get_posterior_sample_angle_uncertainty, ) - -logger = configure_logging(__name__) - +from pyrovelocity.styles import configure_matplotlib_style __all__ = [ "plot_vector_field_summary", "plot_vector_field_uncertainty", "plot_mean_vector_field", - "plot_arrow_examples", ] +logger = configure_logging(__name__) + +configure_matplotlib_style() + + +@beartype +def create_vector_field_summary_layout( + fig_width: int | float = 12, + fig_height: int | float = 2.5, +) -> Tuple[FigureBase, List[Axes], List[Axes]]: + fig = plt.figure(figsize=(fig_width, fig_height)) + gs = fig.add_gridspec( + 2, + 6, + width_ratios=[1] * 6, + height_ratios=[6, 1], + ) + + main_axes = [fig.add_subplot(gs[0, i]) for i in range(6)] + bottom_axes = [fig.add_subplot(gs[1, i]) for i in range(6)] + for ax in bottom_axes: + ax.axis("off") + + return fig, main_axes, bottom_axes + @beartype def plot_vector_field_summary( @@ -40,23 +63,23 @@ def plot_vector_field_summary( plot_name: PathLike | str, cell_state: str = "cell_type", state_color_dict: Optional[Dict[str, str]] = None, - default_fontsize: int = 7, + default_fontsize: int = 12 if matplotlib.rcParams["text.usetex"] else 9, default_title_padding: int = 2, + dotsize: int | float = 3, + scale: float = 0.35, + arrow_size: float = 3.6, + density: float = 0.4, ) -> FigureBase: - # posterior_vector_field = posterior_samples["vector_field_posterior_samples"] posterior_time = posterior_samples["cell_time"] - cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] pca_embeds_angle = posterior_samples["pca_embeds_angle"] - # embed_radians = posterior_samples["embeds_angle"] embed_mean = posterior_samples["vector_field_posterior_mean"] - dot_size = 3.5 - scale = 0.35 - scale_high = 7.8 - scale_low = 7.8 + ( + fig, + ax, + bottom_axes, + ) = create_vector_field_summary_layout() - arrow = 3.6 - density = 0.4 ress = pd.DataFrame( { "cell_type": adata.obs[cell_state].values, @@ -64,18 +87,12 @@ def plot_vector_field_summary( "X2": adata.obsm[f"X_{vector_field_basis}"][:, 1], } ) - fig = plt.figure(figsize=(9.6, 2), constrained_layout=False) - fig.subplots_adjust( - hspace=0.2, wspace=0.1, left=0.01, right=0.99, top=0.99, bottom=0.45 - ) - ax = fig.subplots(1, 6) - pos = ax[0].get_position() sns.scatterplot( x="X1", y="X2", hue="cell_type", - s=dot_size, + s=dotsize, palette=state_color_dict, data=ress, alpha=0.9, @@ -84,25 +101,22 @@ def plot_vector_field_summary( ax=ax[0], legend="brief", ) + ax[0].get_legend().remove() ax[0].axis("off") ax[0].set_title( "Cell types", fontsize=default_fontsize, pad=default_title_padding, ) - ax[0].legend( - loc="lower left", - bbox_to_anchor=(0.2, -0.4), - ncol=5, - fancybox=True, - prop={"size": default_fontsize}, + + scv.pl.velocity_embedding_grid( + adata, + basis=vector_field_basis, fontsize=default_fontsize, - frameon=False, - markerscale=3, - ) - kwargs = dict( + ax=ax[1], + title="", color="gray", - s=dot_size, + s=dotsize, show=False, alpha=0.25, min_mass=3.5, @@ -112,14 +126,7 @@ def plot_vector_field_summary( arrow_size=3, linewidth=1, ) - scv.pl.velocity_embedding_grid( - adata, - basis=vector_field_basis, - fontsize=default_fontsize, - ax=ax[1], - title="", - **kwargs, - ) + ax[1].axis("off") ax[1].set_title( "scVelo", fontsize=default_fontsize, @@ -132,8 +139,18 @@ def plot_vector_field_summary( title="", ax=ax[2], vkey="velocity_pyro", - **kwargs, + color="gray", + s=dotsize, + show=False, + alpha=0.25, + min_mass=3.5, + scale=scale, + frameon=False, + density=density, + arrow_size=3, + linewidth=1, ) + ax[2].axis("off") ax[2].set_title( rf"Pyro\thinspace-Velocity" if matplotlib.rcParams["text.usetex"] @@ -142,23 +159,43 @@ def plot_vector_field_summary( pad=default_title_padding, ) - pca_cell_angles = pca_embeds_angle / np.pi * 180 # degree + plot_posterior_time( + posterior_samples, + adata, + ax=ax[3], + basis=vector_field_basis, + fig=fig, + addition=False, + position="right", + cmap="winter", + s=dotsize, + show_colorbar=False, + show_titles=False, + alpha=1, + ) + ax[3].set_title( + "shared time", + fontsize=default_fontsize, + pad=default_title_padding, + ) + + pca_cell_angles = pca_embeds_angle / np.pi * 180 pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) - cell_time_mean = posterior_time.mean(0).flatten() + # cell_time_mean = posterior_time.mean(0).flatten() cell_time_std = posterior_time.std(0).flatten() - cell_time_cov = cell_time_std / cell_time_mean + # cell_time_cov = cell_time_std / cell_time_mean plot_vector_field_uncertainty( adata, embed_mean, cell_time_std, - ax=ax[3], - cbar=True, + ax=ax[4], + cbar=False, fig=fig, basis=vector_field_basis, scale=scale, - arrow_size=arrow, + arrow_size=arrow_size, p_mass_min=1, autoscale=True, density=density, @@ -166,28 +203,14 @@ def plot_vector_field_summary( uncertain_measure="shared time", cmap="winter", cmax=None, + show_titles=False, ) - - cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) - cell_magnitudes_std = cell_magnitudes.std(axis=-2) - cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean - plot_vector_field_uncertainty( - adata, - embed_mean, - cell_magnitudes_cov, - ax=ax[4], - cbar=True, - fig=fig, - basis=vector_field_basis, - scale=scale, - arrow_size=arrow, - p_mass_min=1, - autoscale=True, - density=density, - only_grid=False, - uncertain_measure="base magnitude", - cmap="summer", - cmax=None, + ax[4].set_title( + r"shared time $\sigma$" + if matplotlib.rcParams["text.usetex"] + else "shared time σ", + fontsize=default_fontsize, + pad=default_title_padding, ) plot_vector_field_uncertainty( @@ -195,11 +218,11 @@ def plot_vector_field_summary( embed_mean, pca_angles_std, ax=ax[5], - cbar=True, + cbar=False, fig=fig, basis=vector_field_basis, scale=scale, - arrow_size=arrow, + arrow_size=arrow_size, p_mass_min=1, autoscale=True, density=density, @@ -207,7 +230,61 @@ def plot_vector_field_summary( uncertain_measure="PCA angle", cmap="inferno", cmax=None, + show_titles=False, ) + ax[5].set_title( + r"PCA angle $\sigma$" + if matplotlib.rcParams["text.usetex"] + else "PCA angle σ", + fontsize=default_fontsize, + pad=default_title_padding, + ) + + handles, labels = ax[0].get_legend_handles_labels() + bottom_axes[0].legend( + handles=handles, + labels=labels, + loc="lower left", + bbox_to_anchor=(-0.1, -0.2), + ncol=4, + frameon=False, + fancybox=True, + markerscale=4, + columnspacing=0.7, + handletextpad=0.1, + ) + + for axi in ax: + axi.set_aspect("equal", adjustable="box") + + fig.tight_layout() + fig.subplots_adjust( + left=0.05, right=0.98, top=0.98, bottom=0.08, wspace=0.1, hspace=0.2 + ) + + for axi, cax in zip(ax[3:], bottom_axes[3:]): + cax.axis("on") + cbar = fig.colorbar( + mappable=axi.collections[0], + cax=cax, + orientation="horizontal", + ) + cbar.locator = MaxNLocator(nbins=2) + cbar.update_ticks() + ax_pos = axi.get_position() + cbar_width = ax_pos.width * 0.6 + cbar_height = 0.05 + cax.xaxis.set_ticks_position("bottom") + cax.xaxis.set_label_position("bottom") + cax.set_position( + [ + ax_pos.x0 + (ax_pos.width - cbar_width), + 0.25, + cbar_width, + cbar_height, + ] + ) + for ext in ["", ".png"]: fig.savefig( f"{plot_name}{ext}", @@ -475,142 +552,175 @@ def project_grid_points( ) -def plot_arrow_examples( - adata, - v_maps, - embeds_radian, - embed_mean, - ax=None, - fig=None, - cbar=True, - basis="umap", - n_sample=30, - scale=0.0021, - alpha=0.02, - index=19, - index2=0, - scale2=0.04, - num_certain=3, - num_total=4, - p_mass_min=1.0, - density=0.3, - arrow_size=4, - customize_uncertain=None, -): - X_grid, V_grid, uncertain = project_grid_points( - adata.obsm[f"X_{basis}"], - v_maps, - get_posterior_sample_angle_uncertainty(embeds_radian / np.pi * 180) - if customize_uncertain is None - else customize_uncertain, - p_mass_min=p_mass_min, - density=density, - ) - # print(X_grid.shape, V_grid.shape, uncertain.shape) - norm = Normalize() - norm.autoscale(uncertain) - colormap = cm.inferno - - indexes = np.argsort(uncertain)[::-1][ - index : (index + num_total - num_certain) - ] - hl, hw, hal = default_arrow(arrow_size) - # print(hl, hw, hal) - quiver_kwargs = {"angles": "xy", "scale_units": "xy"} - # quiver_kwargs = {"angles": "xy", "scale_units": "width"} - quiver_kwargs = {"width": 0.002, "zorder": 0} - quiver_kwargs.update({"headlength": hl / 2}) - quiver_kwargs.update({"headwidth": hw / 2, "headaxislength": hal / 2}) - - ax.scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=1, - linewidth=0, - color="gray", - alpha=alpha, - ) - - # normalize arrow size the constant - V_grid[:, 0] = V_grid[:, 0] / np.sqrt(V_grid[:, 0] ** 2 + V_grid[:, 1] ** 2) - V_grid[:, 1] = V_grid[:, 1] / np.sqrt(V_grid[:, 1] ** 2 + V_grid[:, 1] ** 2) - - for i in range(n_sample): - for j in indexes: - # ax.quiver( - # X_grid[j, 0], - # X_grid[j, 1], - # embed_mean[j, 0], - # embed_mean[j, 1], - # ec='black', - # scale=scale, - # color=colormap(norm(uncertain))[j], - # **quiver_kwargs, - # ) - ax.quiver( - X_grid[j, 0], - X_grid[j, 1], - V_grid[j][0][i], - V_grid[j][1][i], - ec="face", - norm=Normalize(vmin=0, vmax=360), - scale=scale, - color=colormap(norm(uncertain))[j], - linewidth=0, - alpha=0.3, - **quiver_kwargs, - ) - ax.quiver( - X_grid[j, 0], - X_grid[j, 1], - V_grid[j][0].mean(), - V_grid[j][1].mean(), - ec="black", - alpha=1, - norm=Normalize(vmin=0, vmax=360), - scale=scale, - linewidth=0, - color=colormap(norm(uncertain))[j], - **quiver_kwargs, - ) - indexes = np.argsort(uncertain)[index2 : (index2 + num_certain)] - for i in range(n_sample): - for j in indexes: - # ax.quiver( - # X_grid[j, 0], - # X_grid[j, 1], - # embed_mean[j, 0], - # embed_mean[j, 1], - # ec='black', - # scale=scale, - # color=colormap(norm(uncertain))[j], - # **quiver_kwargs, - # ) - ax.quiver( - X_grid[j, 0], - X_grid[j, 1], - V_grid[j][0][i], - V_grid[j][1][i], - # ec=colormap(norm(uncertain))[j], - ec="face", - scale=scale2, - alpha=0.3, - linewidth=0, - color=colormap(norm(uncertain))[j], - norm=Normalize(vmin=0, vmax=360), - **quiver_kwargs, - ) - ax.quiver( - X_grid[j, 0], - X_grid[j, 1], - V_grid[j][0].mean(), - V_grid[j][1].mean(), - ec="black", - alpha=1, - linewidth=0, - norm=Normalize(vmin=0, vmax=360), - scale=scale2, - color=colormap(norm(uncertain))[j], - **quiver_kwargs, - ) - ax.axis("off") +# TODO: remove unused code +# cell_magnitudes = posterior_samples["original_spaces_embeds_magnitude"] +# cell_magnitudes_mean = cell_magnitudes.mean(axis=-2) +# cell_magnitudes_std = cell_magnitudes.std(axis=-2) +# cell_magnitudes_cov = cell_magnitudes_std / cell_magnitudes_mean +# plot_vector_field_uncertainty( +# adata, +# embed_mean, +# cell_magnitudes_cov, +# ax=ax[4], +# cbar=False, +# fig=fig, +# basis=vector_field_basis, +# scale=scale, +# arrow_size=arrow_size, +# p_mass_min=1, +# autoscale=True, +# density=density, +# only_grid=False, +# uncertain_measure="base magnitude", +# cmap="summer", +# cmax=None, +# show_titles=False, +# ) +# ax[4].set_title( +# r"base magnitude $\sigma$" +# if matplotlib.rcParams["text.usetex"] +# else "base magnitude σ", +# fontsize=default_fontsize, +# pad=default_title_padding, +# ) + + +# def plot_arrow_examples( +# adata, +# v_maps, +# embeds_radian, +# embed_mean, +# ax=None, +# fig=None, +# cbar=True, +# basis="umap", +# n_sample=30, +# scale=0.0021, +# alpha=0.02, +# index=19, +# index2=0, +# scale2=0.04, +# num_certain=3, +# num_total=4, +# p_mass_min=1.0, +# density=0.3, +# arrow_size=4, +# customize_uncertain=None, +# ): +# X_grid, V_grid, uncertain = project_grid_points( +# adata.obsm[f"X_{basis}"], +# v_maps, +# get_posterior_sample_angle_uncertainty(embeds_radian / np.pi * 180) +# if customize_uncertain is None +# else customize_uncertain, +# p_mass_min=p_mass_min, +# density=density, +# ) +# # print(X_grid.shape, V_grid.shape, uncertain.shape) +# norm = Normalize() +# norm.autoscale(uncertain) +# colormap = cm.inferno + +# indexes = np.argsort(uncertain)[::-1][ +# index : (index + num_total - num_certain) +# ] +# hl, hw, hal = default_arrow(arrow_size) +# # print(hl, hw, hal) +# quiver_kwargs = {"angles": "xy", "scale_units": "xy"} +# # quiver_kwargs = {"angles": "xy", "scale_units": "width"} +# quiver_kwargs = {"width": 0.002, "zorder": 0} +# quiver_kwargs.update({"headlength": hl / 2}) +# quiver_kwargs.update({"headwidth": hw / 2, "headaxislength": hal / 2}) + +# ax.scatter( +# adata.obsm[f"X_{basis}"][:, 0], +# adata.obsm[f"X_{basis}"][:, 1], +# s=1, +# linewidth=0, +# color="gray", +# alpha=alpha, +# ) + +# # normalize arrow size the constant +# V_grid[:, 0] = V_grid[:, 0] / np.sqrt(V_grid[:, 0] ** 2 + V_grid[:, 1] ** 2) +# V_grid[:, 1] = V_grid[:, 1] / np.sqrt(V_grid[:, 1] ** 2 + V_grid[:, 1] ** 2) + +# for i in range(n_sample): +# for j in indexes: +# # ax.quiver( +# # X_grid[j, 0], +# # X_grid[j, 1], +# # embed_mean[j, 0], +# # embed_mean[j, 1], +# # ec='black', +# # scale=scale, +# # color=colormap(norm(uncertain))[j], +# # **quiver_kwargs, +# # ) +# ax.quiver( +# X_grid[j, 0], +# X_grid[j, 1], +# V_grid[j][0][i], +# V_grid[j][1][i], +# ec="face", +# norm=Normalize(vmin=0, vmax=360), +# scale=scale, +# color=colormap(norm(uncertain))[j], +# linewidth=0, +# alpha=0.3, +# **quiver_kwargs, +# ) +# ax.quiver( +# X_grid[j, 0], +# X_grid[j, 1], +# V_grid[j][0].mean(), +# V_grid[j][1].mean(), +# ec="black", +# alpha=1, +# norm=Normalize(vmin=0, vmax=360), +# scale=scale, +# linewidth=0, +# color=colormap(norm(uncertain))[j], +# **quiver_kwargs, +# ) +# indexes = np.argsort(uncertain)[index2 : (index2 + num_certain)] +# for i in range(n_sample): +# for j in indexes: +# # ax.quiver( +# # X_grid[j, 0], +# # X_grid[j, 1], +# # embed_mean[j, 0], +# # embed_mean[j, 1], +# # ec='black', +# # scale=scale, +# # color=colormap(norm(uncertain))[j], +# # **quiver_kwargs, +# # ) +# ax.quiver( +# X_grid[j, 0], +# X_grid[j, 1], +# V_grid[j][0][i], +# V_grid[j][1][i], +# # ec=colormap(norm(uncertain))[j], +# ec="face", +# scale=scale2, +# alpha=0.3, +# linewidth=0, +# color=colormap(norm(uncertain))[j], +# norm=Normalize(vmin=0, vmax=360), +# **quiver_kwargs, +# ) +# ax.quiver( +# X_grid[j, 0], +# X_grid[j, 1], +# V_grid[j][0].mean(), +# V_grid[j][1].mean(), +# ec="black", +# alpha=1, +# linewidth=0, +# norm=Normalize(vmin=0, vmax=360), +# scale=scale2, +# color=colormap(norm(uncertain))[j], +# **quiver_kwargs, +# ) +# ax.axis("off") From 508ee806cf4507fbe92736a65d6165520f33b8c7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 29 Aug 2024 01:25:16 -0400 Subject: [PATCH 067/177] fix(plots): filter invalid adjustText warning if logger is available Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index e31f71aa2..6be979dba 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -23,15 +23,14 @@ logger = configure_logging(__name__) -ajusttext_warn = adjustText.logger.warn +if hasattr(adjustText, "logger"): + ajusttext_warn = adjustText.logger.warn + def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): + if "Looks like you are using an old matplotlib version" not in message: + ajusttext_warn(message, *args, **kwargs) -def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): - if "Looks like you are using an old matplotlib version" not in message: - ajusttext_warn(message, *args, **kwargs) - - -adjustText.logger.warn = filter_adjusttext_matplotlib_warn + adjustText.logger.warn = filter_adjusttext_matplotlib_warn @beartype From 94797891ded3d81e10c54457fecad2324265f5d8 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 00:56:03 -0400 Subject: [PATCH 068/177] test(plots): add modular layout function Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/layout.py | 113 +++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/pyrovelocity/plots/layout.py diff --git a/src/pyrovelocity/plots/layout.py b/src/pyrovelocity/plots/layout.py new file mode 100644 index 000000000..79f18ce62 --- /dev/null +++ b/src/pyrovelocity/plots/layout.py @@ -0,0 +1,113 @@ +import matplotlib.pyplot as plt +from matplotlib.axes import Axes +from matplotlib.figure import FigureBase +from matplotlib.gridspec import GridSpec + +from pyrovelocity.styles import configure_matplotlib_style + +configure_matplotlib_style() + +__all__ = ["example_plot"] + + +def example_plot(): + """ + Create an example plot with a custom layout. + + Each subplot in the gridspec grid may be labeled with a panel label + whose location is given in Figure-level coordinates. + """ + fig = plt.figure(figsize=(8.5 - 1, (11 - 1) * 0.9)) + + gs = GridSpec( + figure=fig, + nrows=3, + height_ratios=[0.1, 0.3, 0.6], + ncols=3, + width_ratios=[0.5, 0.25, 0.25], + ) + + ax1 = fig.add_subplot(gs[0, :]) + ax1.set_title("First Row") + + ax2 = fig.add_subplot(gs[1, 0]) + ax2.set_title("Second Row, Left") + ax2.set_aspect("equal", adjustable="box") + + ax3 = fig.add_subplot(gs[1, 1]) + ax3.set_title("Second Row, Right 1") + + ax4 = fig.add_subplot(gs[1, 2]) + ax4.set_title("Second Row, Right 2") + + ax5 = fig.add_subplot(gs[2, :]) + ax5.set_title("Third Row") + + plt.tight_layout() + + add_panel_label(fig, "a", -0.015, 1.00) + add_panel_label(fig, "b", -0.015, 0.87) + add_panel_label(fig, "c", 0.45, 0.87) + add_panel_label(fig, "d", 0.72, 0.87) + add_panel_label(fig, "e", -0.015, 0.58) + + plt.savefig("example_plot_layout.pdf", format="pdf") + + +def add_panel_label( + fig: FigureBase, + label: str, + x: float, + y: float, + fontsize: int = 14, + fontweight: str = "bold", + va: str = "top", + ha: str = "left", +): + """ + Add a panel label to the figure using global figure coordinates. + + Args: + fig: matplotlib figure object + label: string, the label to add (e.g., 'a', 'b', 'c') + x: float, x-coordinate in figure coordinates (0-1) + y: float, y-coordinate in figure coordinates (0-1) + fontsize: int, font size for the label + fontweight: str, font weight for the label + va: str, vertical alignment for the label + ha: str, horizontal alignment for the label + """ + fig.text( + x=x, + y=y, + s=label, + fontsize=fontsize, + fontweight=fontweight, + va=va, + ha=ha, + ) + + +def add_axis_label( + ax: Axes, + label: str, + x: float = -0.1, + y: float = 1.1, + fontsize: int = 14, + fontweight: str = "bold", + va: str = "top", + ha: str = "right", +): + """ + Add a label to the given axes. + """ + ax.text( + x=x, + y=y, + s=label, + transform=ax.transAxes, + fontsize=fontsize, + fontweight=fontweight, + va=va, + ha=ha, + ) From daf77163e4d898be21b22ec700e7b22c90ff35b9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 14:49:21 -0400 Subject: [PATCH 069/177] fix(io): use dill to support pickling matplotlib objects Signed-off-by: Cameron Smith --- src/pyrovelocity/io/compressedpickle.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pyrovelocity/io/compressedpickle.py b/src/pyrovelocity/io/compressedpickle.py index 678e2c145..310ce6862 100644 --- a/src/pyrovelocity/io/compressedpickle.py +++ b/src/pyrovelocity/io/compressedpickle.py @@ -1,8 +1,8 @@ import os -import pickle from os import PathLike from pathlib import Path +import dill as pickle import numpy as np from beartype import beartype from beartype.typing import Any, Dict @@ -119,7 +119,7 @@ def save( with compression_context.stream_writer(f) as compressor: pickle.dump(obj, compressor) - _log_hash(file_path) + _log_hash(file_path=file_path, mode="saved") return file_path @staticmethod @@ -163,15 +163,15 @@ def load( It cannot be automatically densified. """ ) - _log_hash(file_path) + _log_hash(file_path=file_path, mode="loaded") return obj @beartype -def _log_hash(file_path: str | Path) -> str: +def _log_hash(file_path: str | Path, mode: str = "loaded or saved") -> str: file_hash = hash_file(file_path=file_path) logger.info( - f"\nSuccessfully read or created file: {file_path}\n" + f"\nSuccessfully {mode} file: {file_path}\n" f"SHA-256 hash: {file_hash}\n" ) return file_hash From 061b795e05173c99eab8cf1f88421e52ad782712 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 14:59:34 -0400 Subject: [PATCH 070/177] test(scripts): add h5 scripts Signed-off-by: Cameron Smith --- scripts/h5/h5.py | 202 ++++++++++++++++++++++++++++++++++++++++++ scripts/h5/test_h5.py | 129 +++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) create mode 100644 scripts/h5/h5.py create mode 100644 scripts/h5/test_h5.py diff --git a/scripts/h5/h5.py b/scripts/h5/h5.py new file mode 100644 index 000000000..2076d1d5f --- /dev/null +++ b/scripts/h5/h5.py @@ -0,0 +1,202 @@ +import weakref +from pathlib import Path + +import h5py +import hdf5plugin +import numpy as np +import pandas as pd +from beartype import beartype +from beartype.typing import Any, Dict, Tuple + +from pyrovelocity.io.hash import hash_file +from pyrovelocity.logging import configure_logging + +__all__ = ["save_to_h5", "load_from_h5"] + +logger = configure_logging(__name__) + + +@beartype +def save_to_h5( + data: Dict[str, Any], + filename: str | Path, +) -> Tuple[Path, str]: + with h5py.File(filename, "w") as f: + for key, value in data.items(): + if isinstance(value, np.ndarray): + f.create_dataset( + key, + data=value, + **hdf5plugin.Blosc2( + cname="zstd", + clevel=3, + filters=hdf5plugin.Blosc2.SHUFFLE, + ), + ) + elif isinstance(value, pd.DataFrame): + group = f.create_group(key) + for column in value.columns: + group.create_dataset( + column, + data=value[column].values, + **hdf5plugin.Blosc2( + cname="zstd", + clevel=3, + filters=hdf5plugin.Blosc2.SHUFFLE, + ), + ) + group.attrs["columns"] = value.columns.tolist() + group.attrs["index"] = value.index.tolist() + elif isinstance(value, list): + f.create_dataset( + key, + data=np.array(value, dtype=h5py.special_dtype(vlen=str)), + **hdf5plugin.Blosc2( + cname="zstd", + clevel=3, + filters=hdf5plugin.Blosc2.SHUFFLE, + ), + ) + else: + logger.warning( + f"Skipping {key}: unsupported type {type(value)}" + ) + file_hash = _log_hash(filename, mode="saved") + return Path(filename), file_hash + + +class LazyArray: + def __init__(self, dataset): + self.dataset = dataset + + def __getitem__(self, key): + return np.array(self.dataset[key]) + + @property + def shape(self): + return self.dataset.shape + + @property + def dtype(self): + return self.dataset.dtype + + def __getattr__(self, name): + if name.startswith("_"): + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) + return getattr(self.dataset, name) + + +class LazyDataFrame: + def __init__(self, group): + self.group = group + self.columns = list(self.group.attrs["columns"]) + self.index = list(self.group.attrs["index"]) + + def __getitem__(self, key): + if isinstance(key, str): + return LazyArray(self.group[key]) + else: + df = pd.DataFrame( + {col: self.group[col][()] for col in self.columns} + ) + df.index = self.index + return df[key] + + @property + def shape(self): + return (len(self.index), len(self.columns)) + + def head(self, n=5): + df = pd.DataFrame({col: self.group[col][:n] for col in self.columns}) + df.index = self.index[:n] + return df + + def __getattr__(self, name): + if name.startswith("_"): + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) + if name in self.columns: + return LazyArray(self.group[name]) + return getattr(pd.DataFrame, name) + + +class H5Accessor: + def __init__(self, filename): + self._filename = filename + self._file = None + self._open_file() + self._finalizer = weakref.finalize(self, self._close_file) + + def _open_file(self): + if self._file is None or not self._file.id: + self._file = h5py.File(self._filename, "r") + + def _close_file(self): + if self._file is not None and self._file.id: + self._file.close() + + def __getattr__(self, name): + if name.startswith("_"): + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) + + try: + self._open_file() + if name not in self._file: + raise AttributeError(f"No such attribute: {name}") + + item = self._file[name] + if isinstance(item, h5py.Dataset): + if item.dtype.kind == "S": + return item[()].astype(str).tolist() + else: + return LazyArray(item) + elif isinstance(item, h5py.Group): + if "columns" in item.attrs: + return LazyDataFrame(item) + else: + return { + key: self.__getattr__(f"{name}/{key}") + for key in item.keys() + } + else: + return item + except Exception as e: + if not name.startswith("_"): + print(f"Error accessing {name}: {str(e)}") + return None + + def __dir__(self): + try: + self._open_file() + return list(self._file.keys()) + except Exception as e: + print(f"Error listing attributes: {str(e)}") + return [] + + def close(self): + self._close_file() + + def __repr__(self): + return f"H5Accessor(filename='{self._filename}')" + + +@beartype +def load_from_h5(filename: str | Path) -> H5Accessor: + accessor = H5Accessor(filename) + _log_hash(filename, mode="loaded") + return accessor + + +@beartype +def _log_hash(file_path: str | Path, mode: str = "loaded or saved") -> str: + file_hash = hash_file(file_path=file_path) + logger.info( + f"\nSuccessfully {mode} file: {file_path}\n" + f"SHA-256 hash: {file_hash}\n" + ) + return file_hash diff --git a/scripts/h5/test_h5.py b/scripts/h5/test_h5.py new file mode 100644 index 000000000..106a50a46 --- /dev/null +++ b/scripts/h5/test_h5.py @@ -0,0 +1,129 @@ +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest + +from pyrovelocity.io.h5 import H5Accessor, load_from_h5, save_to_h5, hash_file + + +@pytest.fixture +def sample_data(): + return { + "array": np.array([1, 2, 3, 4, 5]), + "dataframe": pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}), + "list": ["a", "b", "c"], + "nested": { + "nested_array": np.array([6, 7, 8, 9, 10]), + "nested_df": pd.DataFrame({"C": [7, 8, 9], "D": [10, 11, 12]}), + }, + } + + +def test_save_and_load_h5(tmp_path, sample_data): + file_path = tmp_path / "test.h5" + + saved_path, file_hash = save_to_h5(sample_data, file_path) + assert saved_path == file_path + assert isinstance(file_hash, str) + assert file_path.exists() + + loaded_data = load_from_h5(file_path) + assert isinstance(loaded_data, H5Accessor) + + np.testing.assert_array_equal(loaded_data.array[:], sample_data["array"]) + + pd.testing.assert_frame_equal( + loaded_data.dataframe[:], sample_data["dataframe"] + ) + + assert loaded_data.list == sample_data["list"] + + np.testing.assert_array_equal( + loaded_data.nested["nested_array"][:], + sample_data["nested"]["nested_array"], + ) + pd.testing.assert_frame_equal( + loaded_data.nested["nested_df"][:], sample_data["nested"]["nested_df"] + ) + + +def test_lazy_loading(tmp_path, sample_data): + file_path = tmp_path / "test_lazy.h5" + save_to_h5(sample_data, file_path) + loaded_data = load_from_h5(file_path) + + assert isinstance(loaded_data.array, loaded_data.array.__class__) + assert loaded_data.array.shape == sample_data["array"].shape + assert loaded_data.array.dtype == sample_data["array"].dtype + + assert isinstance(loaded_data.dataframe, loaded_data.dataframe.__class__) + assert loaded_data.dataframe.shape == sample_data["dataframe"].shape + assert all( + loaded_data.dataframe.columns == sample_data["dataframe"].columns + ) + + +def test_h5_accessor_methods(tmp_path, sample_data): + file_path = tmp_path / "test_accessor.h5" + save_to_h5(sample_data, file_path) + accessor = load_from_h5(file_path) + + assert set(dir(accessor)) == set(sample_data.keys()) + + assert repr(accessor) == f"H5Accessor(filename='{file_path}')" + + accessor.close() + with pytest.raises(Exception): + accessor.array[:] + + +def test_unsupported_type_warning(tmp_path): + unsupported_data = {"unsupported": set([1, 2, 3])} + file_path = tmp_path / "test_unsupported.h5" + + with pytest.warns( + UserWarning, match="Skipping unsupported: unsupported type" + ): + save_to_h5(unsupported_data, file_path) + + +def test_nonexistent_attribute(tmp_path, sample_data): + file_path = tmp_path / "test_nonexistent.h5" + save_to_h5(sample_data, file_path) + loaded_data = load_from_h5(file_path) + + with pytest.raises(AttributeError, match="No such attribute: nonexistent"): + loaded_data.nonexistent + + +def test_dataframe_operations(tmp_path, sample_data): + file_path = tmp_path / "test_df_ops.h5" + save_to_h5(sample_data, file_path) + loaded_data = load_from_h5(file_path) + + assert loaded_data.dataframe.head().equals(sample_data["dataframe"].head()) + + np.testing.assert_array_equal( + loaded_data.dataframe.A[:], sample_data["dataframe"]["A"] + ) + + +def test_file_hash_consistency(tmp_path, sample_data): + file_path = tmp_path / "test_hash.h5" + + _, save_hash = save_to_h5(sample_data, file_path) + + load_from_h5(file_path) + + assert save_hash == hash_file(file_path) + + +@pytest.mark.parametrize("file_path", ["test.h5", Path("test.h5")]) +def test_path_types(tmp_path, sample_data, file_path): + full_path = tmp_path / file_path + saved_path, _ = save_to_h5(sample_data, full_path) + assert saved_path == full_path + + loaded_data = load_from_h5(full_path) + assert isinstance(loaded_data, H5Accessor) From cb2bbbef23505a22bdcaa0c220d9b83c36c8820b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 15:00:16 -0400 Subject: [PATCH 071/177] fix(deps): explicitly lower bound dill Signed-off-by: Cameron Smith --- poetry.lock | 2 +- pyproject.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index e04fa7d98..a4ac3a2e5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -9384,4 +9384,4 @@ workflows = ["dataclasses-json", "dulwich", "flytekit", "google-api-python-clien [metadata] lock-version = "2.0" python-versions = ">=3.11, <3.13" -content-hash = "48cf45aea2b3d2d0c65eb8842a4b706666695821c20ca8dc2ff1162e42a2dfc6" +content-hash = "7137c10254e563d55f0aedbeb9c26173ebaea36600633ddba9d8db8ec6a5971f" diff --git a/pyproject.toml b/pyproject.toml index 14a4172f5..bebb0a1fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ click = ">=8.1.7" colorlog = ">=6.7.0" daft = ">=0.1.2" diffrax = ">=0.5.0" +dill = ">=0.3.8" diskcache = ">=5.6.1" duckdb = ">=1.0.0" einops = ">=0.7.0" @@ -60,6 +61,7 @@ fsspec = ">=2024.3.0" greenlet = ">=3.0.3" httpx = ">=0.27.0" h5py = ">=3.9.0" +# hdf5plugin = ">=4.4.0" ibis-framework = { extras = ["duckdb"], version = ">=9.2.0" } jax = ">=0.4.23" jaxlib = ">=0.4.23" From 74254cee6397d312b534955e9760f66c841f71a5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 15:01:42 -0400 Subject: [PATCH 072/177] feat(plots): serialize figure layout and its panels separately Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/layout.py | 248 ++++++++++++++++++++++++++++--- 1 file changed, 228 insertions(+), 20 deletions(-) diff --git a/src/pyrovelocity/plots/layout.py b/src/pyrovelocity/plots/layout.py index 79f18ce62..f46a41bdf 100644 --- a/src/pyrovelocity/plots/layout.py +++ b/src/pyrovelocity/plots/layout.py @@ -1,57 +1,265 @@ +from pathlib import Path + +import dill import matplotlib.pyplot as plt +from beartype.typing import Dict, List, Optional, Tuple from matplotlib.axes import Axes from matplotlib.figure import FigureBase from matplotlib.gridspec import GridSpec +from pyrovelocity.io.compressedpickle import CompressedPickle from pyrovelocity.styles import configure_matplotlib_style configure_matplotlib_style() -__all__ = ["example_plot"] +__all__ = [ + "plot_main", + "plot_subfigures", +] + + +def create_main_figure( + width: float, + height: float, + layout: Dict[str, List[float]], +) -> Tuple[FigureBase, Dict[str, Axes]]: + """Create the main figure with all subplots.""" + fig = plt.figure(figsize=(width, height)) + gs = GridSpec( + figure=fig, + nrows=len(layout["height_ratios"]), + ncols=len(layout["width_ratios"]), + height_ratios=layout["height_ratios"], + width_ratios=layout["width_ratios"], + ) + + axes = {} + axes["ax1"] = fig.add_subplot(gs[0, :]) + axes["ax2"] = fig.add_subplot(gs[1, 0]) + axes["ax3"] = fig.add_subplot(gs[1, 1]) + axes["ax4"] = fig.add_subplot(gs[1, 2]) + axes["ax5"] = fig.add_subplot(gs[2, :]) + + for key, ax in axes.items(): + ax.set_label(key) + + return fig, axes + + +def extract_subfigures( + buffer: Optional[bytes] = None, + axes_to_keep: List[str] = [], + main_fig: Optional[FigureBase] = None, + figure_file_path: Optional[str | Path] = None, +) -> FigureBase: + """ + Extract a subset of axes from the main figure using dill for serialization. + + Args: + main_fig: The main Figure object + axes_to_keep: List of axes keys to keep in the new figure + + Returns: + A new Figure object with only the specified axes + """ + + if buffer: + subfig = dill.loads(buffer) + elif main_fig: + buffer = dill.dumps(main_fig) + subfig = dill.loads(buffer) + else: + raise ValueError("Either buffer or main_fig must be provided.") + + for text in subfig.texts[:]: + subfig.texts.remove(text) + + axes_to_remove = [ + ax for ax in subfig.axes if ax.get_label() not in axes_to_keep + ] + + for ax in axes_to_remove: + subfig.delaxes(ax) + + if figure_file_path: + with Path(figure_file_path).open("wb") as f: + dill.dump(subfig, f) + + return subfig + + +def plot_main( + figure_file_path: Path | str = "main_figure.dill.zst", +) -> FigureBase: + """Create an example plot with a custom layout and demonstrate subplot extraction.""" + width = 8.5 - 1 + height = (11 - 1) * 0.9 + layout = { + "height_ratios": [0.1, 0.3, 0.6], + "width_ratios": [0.5, 0.25, 0.25], + } + + fig, axes = create_main_figure(width, height, layout) + + plot_wide_row(axes["ax1"]) + plot_small_cell(axes["ax2"]) + plot_narrow_column(axes["ax3"]) + plot_narrow_column(axes["ax4"]) + plot_large_cell(axes["ax5"]) + + fig.tight_layout() + + x_col1 = -0.015 + y_row2 = 0.87 + add_panel_label(fig, "a", x_col1, 1.00) + add_panel_label(fig, "b", x_col1, y_row2) + add_panel_label(fig, "c", 0.45, y_row2) + add_panel_label(fig, "d", 0.72, y_row2) + add_panel_label(fig, "e", x_col1, 0.57) + + fig.savefig("example_plot_layout.pdf", format="pdf") + CompressedPickle.save(figure_file_path, fig) + return fig -def example_plot(): + +def plot_subfigures(figure_file_path: Path | str = "main_figure.dill.zst"): + fig = CompressedPickle.load(figure_file_path) + buffer = dill.dumps(fig) + + subfig1 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1"]) + subfig1.savefig("extracted_ax1.pdf", format="pdf") + + subfig23 = extract_subfigures(buffer=buffer, axes_to_keep=["ax2", "ax3"]) + subfig23.savefig("extracted_ax2_ax3.pdf", format="pdf") + + subfig34 = extract_subfigures(buffer=buffer, axes_to_keep=["ax3", "ax4"]) + subfig34.savefig("extracted_ax3_ax4.pdf", format="pdf") + + subfig15 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1", "ax5"]) + subfig15.savefig("extracted_ax1_ax5.pdf", format="pdf") + + subfig5 = extract_subfigures(buffer=buffer, axes_to_keep=["ax5"]) + subfig5.savefig("extracted_ax5.pdf", format="pdf") + + +def example_plot_manual(): """ Create an example plot with a custom layout. Each subplot in the gridspec grid may be labeled with a panel label whose location is given in Figure-level coordinates. """ - fig = plt.figure(figsize=(8.5 - 1, (11 - 1) * 0.9)) + n_rows = 3 + n_cols = 3 + width = 8.5 - 1 + height = (11 - 1) * 0.9 + row_1_fraction = 0.1 + row_2_fraction = 0.3 + row_3_fraction = 0.6 + col_1_fraction = 0.5 + col_2_fraction = 0.25 + col_3_fraction = 0.25 + + fig = plt.figure(figsize=(width, height)) gs = GridSpec( figure=fig, - nrows=3, - height_ratios=[0.1, 0.3, 0.6], - ncols=3, - width_ratios=[0.5, 0.25, 0.25], + nrows=n_rows, + height_ratios=[ + row_1_fraction, + row_2_fraction, + row_3_fraction, + ], + ncols=n_cols, + width_ratios=[ + col_1_fraction, + col_2_fraction, + col_3_fraction, + ], + ) + + fig_1 = plt.figure( + figsize=( + (col_2_fraction + col_3_fraction) * width, + (row_2_fraction) * height, + ) + ) + gs_1 = GridSpec( + figure=fig, + nrows=1, + height_ratios=[row_2_fraction], + ncols=2, + width_ratios=[ + col_2_fraction, + col_3_fraction, + ], ) ax1 = fig.add_subplot(gs[0, :]) - ax1.set_title("First Row") + plot_wide_row(ax1) + fig2 = plt.figure() + ax = fig2.add_subplot(111) + plot_wide_row(ax) ax2 = fig.add_subplot(gs[1, 0]) - ax2.set_title("Second Row, Left") - ax2.set_aspect("equal", adjustable="box") + plot_small_cell(ax2) ax3 = fig.add_subplot(gs[1, 1]) - ax3.set_title("Second Row, Right 1") + plot_narrow_column(ax3) + ax3_1 = fig_1.add_subplot(gs_1[0, 0]) + plot_narrow_column(ax3_1) ax4 = fig.add_subplot(gs[1, 2]) - ax4.set_title("Second Row, Right 2") + plot_narrow_column(ax4) + ax4_1 = fig_1.add_subplot(gs_1[0, 1]) + plot_narrow_column(ax4_1) ax5 = fig.add_subplot(gs[2, :]) - ax5.set_title("Third Row") + plot_large_cell(ax5) + + fig.tight_layout() + fig_1.tight_layout() + + x_col1 = -0.015 + y_row2 = 0.87 + add_panel_label(fig, "a", x_col1, 1.00) + add_panel_label(fig, "b", x_col1, y_row2) + add_panel_label(fig, "c", 0.45, y_row2) + add_panel_label(fig, "d", 0.72, y_row2) + add_panel_label(fig, "e", x_col1, 0.57) - plt.tight_layout() + fig.savefig("example_plot_layout.pdf", format="pdf") + fig_1.savefig("example_plot_layout_1.pdf", format="pdf") - add_panel_label(fig, "a", -0.015, 1.00) - add_panel_label(fig, "b", -0.015, 0.87) - add_panel_label(fig, "c", 0.45, 0.87) - add_panel_label(fig, "d", 0.72, 0.87) - add_panel_label(fig, "e", -0.015, 0.58) - plt.savefig("example_plot_layout.pdf", format="pdf") +def plot_wide_row( + ax: Axes, + title: str = "Wide Row", +): + ax.set_title(title) + + +def plot_small_cell( + ax: Axes, + title: str = "Small Cell", +): + ax.set_title(title) + ax.set_aspect("equal", adjustable="box") + + +def plot_narrow_column( + ax: Axes, + title: str = "Narrow Column", +): + ax.set_title(title) + + +def plot_large_cell( + ax: Axes, + title: str = "Large Cell", +): + ax.set_title(title) def add_panel_label( From 7db10743145cdcd5cf417d1c8146ced2ec636c7a Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 17:34:06 -0400 Subject: [PATCH 073/177] fix(plots): show mean and CV histograms in shared time uncertainty Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 60 ++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index 462520d75..c5aea3955 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -86,17 +86,36 @@ def plot_shared_time_uncertainty( shared_time_plot: PathLike | str, ) -> FigureBase: cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() - cell_time_std = posterior_samples["cell_time"].std(0).flatten() + cell_time_mean_max = cell_time_mean.max() + cell_times = posterior_samples["cell_time"] / cell_time_mean_max + cell_time_mean = cell_times.mean(0).flatten() + cell_time_std = cell_times.std(0).flatten() + cell_time_cv = cell_time_std / cell_time_mean adata.obs["shared_time_std"] = cell_time_std adata.obs["shared_time_mean"] = cell_time_mean + adata.obs["shared_time_cv"] = cell_time_cv + + cv_string = ( + r"shared time $\left.\sigma \right/ \mu$" + if matplotlib.rcParams["text.usetex"] + else "shared time σ/μ" + ) + mean_string = ( + r"shared time $\mu$" + if matplotlib.rcParams["text.usetex"] + else "shared time μ" + ) set_font_size(7) - fig, ax = plt.subplots(1, 3) - fig.set_size_inches(10, 3) + fig, ax = plt.subplots(2, 2) + fig.set_size_inches(6, 6) ax = ax.flatten() - ax[0].hist(cell_time_std / cell_time_mean, bins=100) - ax[0].set_title("histogram of shared time CoV") + ax[0].hist(cell_time_mean, bins=100) + ax[0].set_title(mean_string) + ax[2].hist(cell_time_cv, bins=100) + ax[2].set_title(cv_string) + ax_st = scv.pl.scatter( adata=adata, basis=vector_field_basis, @@ -107,28 +126,31 @@ def plot_shared_time_uncertainty( fontsize=12, colorbar=True, ) + ax[1].axis("off") + ax_st.set_title(mean_string) + ax_cv = scv.pl.scatter( adata=adata, basis=vector_field_basis, - c="shared_time_std", - ax=ax[2], + c="shared_time_cv", + ax=ax[3], show=False, cmap="winter", fontsize=12, colorbar=True, - title="shared time standard deviation", - ) - ax_cv.set_xlabel("density estimate over 90th %") - select = adata.obs["shared_time_std"] > np.quantile( - adata.obs["shared_time_std"], 0.9 - ) - sns.kdeplot( - x=adata.obsm[f"X_{vector_field_basis}"][:, 0][select], - y=adata.obsm[f"X_{vector_field_basis}"][:, 1][select], - ax=ax[2], - levels=3, - fill=False, ) + ax[3].axis("off") + ax_cv.set_title(cv_string) + # select = adata.obs["shared_time_cv"] > np.quantile( + # adata.obs["shared_time_cv"], 0.9 + # ) + # sns.kdeplot( + # x=adata.obsm[f"X_{vector_field_basis}"][:, 0][select], + # y=adata.obsm[f"X_{vector_field_basis}"][:, 1][select], + # ax=ax[2], + # levels=3, + # fill=False, + # ) fig.tight_layout() for ext in ["", ".png"]: fig.savefig( From 46c28c5df6df2523d5f60c6e46c7a6bec6ad5d7a Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 21:59:53 -0400 Subject: [PATCH 074/177] fix(plots): use gridspec for shared time uncertainty plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 93 ++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 19 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index c5aea3955..339f77acc 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -8,7 +8,10 @@ import seaborn as sns from anndata import AnnData from beartype import beartype -from matplotlib.figure import FigureBase +from beartype.typing import Optional +from matplotlib.axes import Axes +from matplotlib.figure import Figure, FigureBase +from matplotlib.ticker import MaxNLocator from scipy.stats import spearmanr from pyrovelocity.plots._common import set_colorbar, set_font_size @@ -84,6 +87,9 @@ def plot_shared_time_uncertainty( posterior_samples: Dict[str, np.ndarray], vector_field_basis: str, shared_time_plot: PathLike | str, + dotsize: Optional[int] = None, + default_font_size: int = 12, + duplicate_title: bool = False, ) -> FigureBase: cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() cell_time_mean_max = cell_time_mean.max() @@ -106,41 +112,55 @@ def plot_shared_time_uncertainty( else "shared time μ" ) - set_font_size(7) - fig, ax = plt.subplots(2, 2) - fig.set_size_inches(6, 6) - ax = ax.flatten() + fig = plt.figure(figsize=(6, 6)) + gs = fig.add_gridspec( + nrows=3, + ncols=2, + width_ratios=[0.5, 0.5], + height_ratios=[0.45, 0.45, 0.05], + ) + + ax1 = fig.add_subplot(gs[0, 0]) + ax1.hist(cell_time_mean, bins=100) + ax1.set_title(mean_string) - ax[0].hist(cell_time_mean, bins=100) - ax[0].set_title(mean_string) - ax[2].hist(cell_time_cv, bins=100) - ax[2].set_title(cv_string) + ax2 = fig.add_subplot(gs[0, 1]) + ax2.hist(cell_time_cv, bins=100) + ax2.set_title(cv_string) + ax3 = fig.add_subplot(gs[1, 0]) ax_st = scv.pl.scatter( adata=adata, basis=vector_field_basis, c="shared_time_mean", - ax=ax[1], + ax=ax3, show=False, cmap="winter", - fontsize=12, - colorbar=True, + fontsize=default_font_size, + colorbar=False, + s=dotsize, + title="", ) - ax[1].axis("off") - ax_st.set_title(mean_string) + ax3.axis("off") + if duplicate_title: + ax_st.set_title(mean_string) + ax4 = fig.add_subplot(gs[1, 1]) ax_cv = scv.pl.scatter( adata=adata, basis=vector_field_basis, c="shared_time_cv", - ax=ax[3], + ax=ax4, show=False, cmap="winter", - fontsize=12, - colorbar=True, + fontsize=default_font_size, + colorbar=False, + s=dotsize, + title="", ) - ax[3].axis("off") - ax_cv.set_title(cv_string) + ax4.axis("off") + if duplicate_title: + ax_cv.set_title(cv_string) # select = adata.obs["shared_time_cv"] > np.quantile( # adata.obs["shared_time_cv"], 0.9 # ) @@ -151,7 +171,15 @@ def plot_shared_time_uncertainty( # levels=3, # fill=False, # ) + # for ax in [ax1, ax2, ax3, ax4]: + # ax.set_aspect("equal", adjustable="box") fig.tight_layout() + + cbar_ax3 = fig.add_subplot(gs[2, 0]) + _add_colorbar(fig=fig, ax=ax3, cbar_ax=cbar_ax3) + cbar_ax4 = fig.add_subplot(gs[2, 1]) + _add_colorbar(fig=fig, ax=ax4, cbar_ax=cbar_ax4) + for ext in ["", ".png"]: fig.savefig( f"{shared_time_plot}{ext}", @@ -164,3 +192,30 @@ def plot_shared_time_uncertainty( plt.close(fig) return fig + + +@beartype +def _add_colorbar( + fig: Figure, + ax: Axes, + cbar_ax: Axes, + cbar_width_fraction: float = 0.6, + cbar_height: float = 0.02, +) -> Axes: + im = ax.collections[0] + cbar = fig.colorbar(mappable=im, cax=cbar_ax, orientation="horizontal") + cbar.locator = MaxNLocator(nbins=2) + cbar.update_ticks() + cbar_ax.xaxis.set_ticks_position("bottom") + cbar_ax.xaxis.set_label_position("bottom") + ax3_pos = ax.get_position() + cbar_width = ax3_pos.width * cbar_width_fraction + cbar_ax.set_position( + [ + ax3_pos.x0 + (ax3_pos.width - cbar_width), + ax3_pos.y0 - cbar_height, + cbar_width, + cbar_height, + ] + ) + return cbar_ax From 9529dd7ec6553deecef38405aba4f247a853f7eb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 22:23:06 -0400 Subject: [PATCH 075/177] fix(plots): default to CV in vector field plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 29 +++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 28e61f70a..9a0876c51 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -182,14 +182,17 @@ def plot_vector_field_summary( pca_cell_angles = pca_embeds_angle / np.pi * 180 pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) - # cell_time_mean = posterior_time.mean(0).flatten() - cell_time_std = posterior_time.std(0).flatten() - # cell_time_cov = cell_time_std / cell_time_mean + cell_time_mean = posterior_time.mean(0).flatten() + cell_time_mean_max = cell_time_mean.max() + cell_times = posterior_time / cell_time_mean_max + cell_time_mean = cell_times.mean(0).flatten() + cell_time_std = cell_times.std(0).flatten() + cell_time_cov = cell_time_std / cell_time_mean plot_vector_field_uncertainty( adata, embed_mean, - cell_time_std, + cell_time_cov, ax=ax[4], cbar=False, fig=fig, @@ -206,9 +209,9 @@ def plot_vector_field_summary( show_titles=False, ) ax[4].set_title( - r"shared time $\sigma$" + r"shared time $\left.\sigma \right/ \mu$" if matplotlib.rcParams["text.usetex"] - else "shared time σ", + else "shared time σ/μ", fontsize=default_fontsize, pad=default_title_padding, ) @@ -417,10 +420,12 @@ def plot_vector_field_uncertainty( norm=None, vmin=0 if "angle" in uncertain_measure - else np.percentile(ordered_uncertainty_measure, 5), + # else np.percentile(ordered_uncertainty_measure, 0.1), + else min(ordered_uncertainty_measure), vmax=360 if "angle" in uncertain_measure - else np.percentile(ordered_uncertainty_measure, 95), + # else np.percentile(ordered_uncertainty_measure, 99.9), + else max(ordered_uncertainty_measure), s=dot_size, linewidth=1, edgecolors="face", @@ -433,14 +438,6 @@ def plot_vector_field_uncertainty( fontsize=default_fontsize, ) if cbar: - # from mpl_toolkits.axes_grid1 import make_axes_locatable - - # divider = make_axes_locatable(ax) - # cax = divider.append_axes("bottom", size="5%", pad=0.1) - # cbar = fig.colorbar(im, cax=cax, orientation="horizontal", shrink=0.6) - ## cbar.ax.set_xticks([0, 180, 360], [0, 180, 360]) - ## fig.colorbar(im, ax=ax, shrink=0.6, location='bottom') - pos = ax.get_position() cax = fig.add_axes( [pos.x0 + 0.05, pos.y0 - 0.05, pos.width * 0.6, pos.height / 17] From b33d7b40cf71c2d97b267d6688232b1de1084c37 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 30 Aug 2024 22:36:48 -0400 Subject: [PATCH 076/177] fix(io): change sparsification notice from warning to debug level Signed-off-by: Cameron Smith --- src/pyrovelocity/io/compressedpickle.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/io/compressedpickle.py b/src/pyrovelocity/io/compressedpickle.py index 310ce6862..a8dfd6315 100644 --- a/src/pyrovelocity/io/compressedpickle.py +++ b/src/pyrovelocity/io/compressedpickle.py @@ -100,7 +100,7 @@ def save( density_threshold=density_threshold, ) else: - logger.warning( + logger.debug( """ The object is not a dictionary of numpy arrays or COO objects. It cannot be automatically sparsified. @@ -157,7 +157,7 @@ def load( ): obj = densify_arrays(obj) else: - logger.warning( + logger.debug( """ The object is not a dictionary of numpy arrays or COO objects. It cannot be automatically densified. From 2049cd8426357f5e44b7c69dcc82802e7c3c8d60 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 31 Aug 2024 16:45:46 -0400 Subject: [PATCH 077/177] feat(plots): set base for report Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/report.py | 321 +++++++++++++++++++++++++++++++ 1 file changed, 321 insertions(+) create mode 100644 src/pyrovelocity/plots/report.py diff --git a/src/pyrovelocity/plots/report.py b/src/pyrovelocity/plots/report.py new file mode 100644 index 000000000..f46a41bdf --- /dev/null +++ b/src/pyrovelocity/plots/report.py @@ -0,0 +1,321 @@ +from pathlib import Path + +import dill +import matplotlib.pyplot as plt +from beartype.typing import Dict, List, Optional, Tuple +from matplotlib.axes import Axes +from matplotlib.figure import FigureBase +from matplotlib.gridspec import GridSpec + +from pyrovelocity.io.compressedpickle import CompressedPickle +from pyrovelocity.styles import configure_matplotlib_style + +configure_matplotlib_style() + +__all__ = [ + "plot_main", + "plot_subfigures", +] + + +def create_main_figure( + width: float, + height: float, + layout: Dict[str, List[float]], +) -> Tuple[FigureBase, Dict[str, Axes]]: + """Create the main figure with all subplots.""" + fig = plt.figure(figsize=(width, height)) + gs = GridSpec( + figure=fig, + nrows=len(layout["height_ratios"]), + ncols=len(layout["width_ratios"]), + height_ratios=layout["height_ratios"], + width_ratios=layout["width_ratios"], + ) + + axes = {} + axes["ax1"] = fig.add_subplot(gs[0, :]) + axes["ax2"] = fig.add_subplot(gs[1, 0]) + axes["ax3"] = fig.add_subplot(gs[1, 1]) + axes["ax4"] = fig.add_subplot(gs[1, 2]) + axes["ax5"] = fig.add_subplot(gs[2, :]) + + for key, ax in axes.items(): + ax.set_label(key) + + return fig, axes + + +def extract_subfigures( + buffer: Optional[bytes] = None, + axes_to_keep: List[str] = [], + main_fig: Optional[FigureBase] = None, + figure_file_path: Optional[str | Path] = None, +) -> FigureBase: + """ + Extract a subset of axes from the main figure using dill for serialization. + + Args: + main_fig: The main Figure object + axes_to_keep: List of axes keys to keep in the new figure + + Returns: + A new Figure object with only the specified axes + """ + + if buffer: + subfig = dill.loads(buffer) + elif main_fig: + buffer = dill.dumps(main_fig) + subfig = dill.loads(buffer) + else: + raise ValueError("Either buffer or main_fig must be provided.") + + for text in subfig.texts[:]: + subfig.texts.remove(text) + + axes_to_remove = [ + ax for ax in subfig.axes if ax.get_label() not in axes_to_keep + ] + + for ax in axes_to_remove: + subfig.delaxes(ax) + + if figure_file_path: + with Path(figure_file_path).open("wb") as f: + dill.dump(subfig, f) + + return subfig + + +def plot_main( + figure_file_path: Path | str = "main_figure.dill.zst", +) -> FigureBase: + """Create an example plot with a custom layout and demonstrate subplot extraction.""" + width = 8.5 - 1 + height = (11 - 1) * 0.9 + layout = { + "height_ratios": [0.1, 0.3, 0.6], + "width_ratios": [0.5, 0.25, 0.25], + } + + fig, axes = create_main_figure(width, height, layout) + + plot_wide_row(axes["ax1"]) + plot_small_cell(axes["ax2"]) + plot_narrow_column(axes["ax3"]) + plot_narrow_column(axes["ax4"]) + plot_large_cell(axes["ax5"]) + + fig.tight_layout() + + x_col1 = -0.015 + y_row2 = 0.87 + add_panel_label(fig, "a", x_col1, 1.00) + add_panel_label(fig, "b", x_col1, y_row2) + add_panel_label(fig, "c", 0.45, y_row2) + add_panel_label(fig, "d", 0.72, y_row2) + add_panel_label(fig, "e", x_col1, 0.57) + + fig.savefig("example_plot_layout.pdf", format="pdf") + CompressedPickle.save(figure_file_path, fig) + + return fig + + +def plot_subfigures(figure_file_path: Path | str = "main_figure.dill.zst"): + fig = CompressedPickle.load(figure_file_path) + buffer = dill.dumps(fig) + + subfig1 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1"]) + subfig1.savefig("extracted_ax1.pdf", format="pdf") + + subfig23 = extract_subfigures(buffer=buffer, axes_to_keep=["ax2", "ax3"]) + subfig23.savefig("extracted_ax2_ax3.pdf", format="pdf") + + subfig34 = extract_subfigures(buffer=buffer, axes_to_keep=["ax3", "ax4"]) + subfig34.savefig("extracted_ax3_ax4.pdf", format="pdf") + + subfig15 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1", "ax5"]) + subfig15.savefig("extracted_ax1_ax5.pdf", format="pdf") + + subfig5 = extract_subfigures(buffer=buffer, axes_to_keep=["ax5"]) + subfig5.savefig("extracted_ax5.pdf", format="pdf") + + +def example_plot_manual(): + """ + Create an example plot with a custom layout. + + Each subplot in the gridspec grid may be labeled with a panel label + whose location is given in Figure-level coordinates. + """ + n_rows = 3 + n_cols = 3 + width = 8.5 - 1 + height = (11 - 1) * 0.9 + row_1_fraction = 0.1 + row_2_fraction = 0.3 + row_3_fraction = 0.6 + + col_1_fraction = 0.5 + col_2_fraction = 0.25 + col_3_fraction = 0.25 + + fig = plt.figure(figsize=(width, height)) + gs = GridSpec( + figure=fig, + nrows=n_rows, + height_ratios=[ + row_1_fraction, + row_2_fraction, + row_3_fraction, + ], + ncols=n_cols, + width_ratios=[ + col_1_fraction, + col_2_fraction, + col_3_fraction, + ], + ) + + fig_1 = plt.figure( + figsize=( + (col_2_fraction + col_3_fraction) * width, + (row_2_fraction) * height, + ) + ) + gs_1 = GridSpec( + figure=fig, + nrows=1, + height_ratios=[row_2_fraction], + ncols=2, + width_ratios=[ + col_2_fraction, + col_3_fraction, + ], + ) + + ax1 = fig.add_subplot(gs[0, :]) + plot_wide_row(ax1) + fig2 = plt.figure() + ax = fig2.add_subplot(111) + plot_wide_row(ax) + + ax2 = fig.add_subplot(gs[1, 0]) + plot_small_cell(ax2) + + ax3 = fig.add_subplot(gs[1, 1]) + plot_narrow_column(ax3) + ax3_1 = fig_1.add_subplot(gs_1[0, 0]) + plot_narrow_column(ax3_1) + + ax4 = fig.add_subplot(gs[1, 2]) + plot_narrow_column(ax4) + ax4_1 = fig_1.add_subplot(gs_1[0, 1]) + plot_narrow_column(ax4_1) + + ax5 = fig.add_subplot(gs[2, :]) + plot_large_cell(ax5) + + fig.tight_layout() + fig_1.tight_layout() + + x_col1 = -0.015 + y_row2 = 0.87 + add_panel_label(fig, "a", x_col1, 1.00) + add_panel_label(fig, "b", x_col1, y_row2) + add_panel_label(fig, "c", 0.45, y_row2) + add_panel_label(fig, "d", 0.72, y_row2) + add_panel_label(fig, "e", x_col1, 0.57) + + fig.savefig("example_plot_layout.pdf", format="pdf") + fig_1.savefig("example_plot_layout_1.pdf", format="pdf") + + +def plot_wide_row( + ax: Axes, + title: str = "Wide Row", +): + ax.set_title(title) + + +def plot_small_cell( + ax: Axes, + title: str = "Small Cell", +): + ax.set_title(title) + ax.set_aspect("equal", adjustable="box") + + +def plot_narrow_column( + ax: Axes, + title: str = "Narrow Column", +): + ax.set_title(title) + + +def plot_large_cell( + ax: Axes, + title: str = "Large Cell", +): + ax.set_title(title) + + +def add_panel_label( + fig: FigureBase, + label: str, + x: float, + y: float, + fontsize: int = 14, + fontweight: str = "bold", + va: str = "top", + ha: str = "left", +): + """ + Add a panel label to the figure using global figure coordinates. + + Args: + fig: matplotlib figure object + label: string, the label to add (e.g., 'a', 'b', 'c') + x: float, x-coordinate in figure coordinates (0-1) + y: float, y-coordinate in figure coordinates (0-1) + fontsize: int, font size for the label + fontweight: str, font weight for the label + va: str, vertical alignment for the label + ha: str, horizontal alignment for the label + """ + fig.text( + x=x, + y=y, + s=label, + fontsize=fontsize, + fontweight=fontweight, + va=va, + ha=ha, + ) + + +def add_axis_label( + ax: Axes, + label: str, + x: float = -0.1, + y: float = 1.1, + fontsize: int = 14, + fontweight: str = "bold", + va: str = "top", + ha: str = "right", +): + """ + Add a label to the given axes. + """ + ax.text( + x=x, + y=y, + s=label, + transform=ax.transAxes, + fontsize=fontsize, + fontweight=fontweight, + va=va, + ha=ha, + ) From 2dc941445a8ad5e3e565f0df84009013e736c1d0 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 31 Aug 2024 23:56:42 -0400 Subject: [PATCH 078/177] fix(models): include std of predictive samples in posterior dict Signed-off-by: Cameron Smith --- src/pyrovelocity/models/_velocity.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyrovelocity/models/_velocity.py b/src/pyrovelocity/models/_velocity.py index 4022bc246..8ef6c9d0e 100644 --- a/src/pyrovelocity/models/_velocity.py +++ b/src/pyrovelocity/models/_velocity.py @@ -526,6 +526,8 @@ def compute_statistics_from_posterior_samples( posterior_samples["embeds_angle"] = embeds_radian posterior_samples["ut_mean"] = posterior_samples["ut"].mean(0).squeeze() posterior_samples["st_mean"] = posterior_samples["st"].mean(0).squeeze() + posterior_samples["ut_std"] = posterior_samples["ut"].std(0).squeeze() + posterior_samples["st_std"] = posterior_samples["st"].std(0).squeeze() ( pca_vector_field_posterior_samples, From 1972b79a0e96f227881116c5d8fa2fa0cc66b5c9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 1 Sep 2024 00:55:01 -0400 Subject: [PATCH 079/177] fix(plots): allow setting axis-level label for colorbars Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_common.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_common.py b/src/pyrovelocity/plots/_common.py index 2ecb5dc0c..d8c39e5a3 100644 --- a/src/pyrovelocity/plots/_common.py +++ b/src/pyrovelocity/plots/_common.py @@ -5,7 +5,6 @@ from pyrovelocity.logging import configure_logging - __all__ = ["set_colorbar", "set_font_size"] logger = configure_logging(__name__) @@ -23,6 +22,7 @@ def set_colorbar( fig=None, position="right", rainbow=False, + axes_label=None, ): if position == "right" and (not rainbow): cax = inset_axes(ax, width="2%", height="30%", loc=4, borderpad=0) @@ -31,6 +31,8 @@ def set_colorbar( divider = make_axes_locatable(ax) cax = divider.append_axes(position, size="8%", pad=0.08) cb = fig.colorbar(smp, cax=cax, orientation=orientation, shrink=0.4) + if axes_label: + cax.set_label(axes_label) cb.ax.tick_params(labelsize=labelsize) From c2efd4fe571515933e005112052122935607be0d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 1 Sep 2024 11:50:23 -0400 Subject: [PATCH 080/177] fix(analysis): remove unused list wrappers Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 64 ++++++++++++++-------- src/pyrovelocity/models/_velocity.py | 2 +- src/pyrovelocity/plots/_genes.py | 16 ++++-- src/pyrovelocity/plots/_summary.py | 4 +- src/pyrovelocity/tasks/summarize.py | 4 +- src/pyrovelocity/tests/plots/test_genes.py | 8 +-- 6 files changed, 59 insertions(+), 39 deletions(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index 8eb596e8f..13bc6f20f 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -140,43 +140,59 @@ def compute_mean_vector_field( @beartype def compute_volcano_data( - posterior_samples: List[Dict[str, ndarray]], - adata: List[AnnData], + # posterior_samples: List[Dict[str, ndarray]], + posterior_samples: Dict[str, ndarray], + # adata: List[AnnData], + adata: AnnData, time_correlation_with: str = "s", selected_genes: Optional[List[str]] = None, negative: bool = False, ) -> Tuple[pd.DataFrame, List[str]]: - assert isinstance(posterior_samples, (tuple, list)) - assert isinstance(adata, (tuple, list)) - assert "s" in posterior_samples[0] - assert "alpha" in posterior_samples[0] + # assert isinstance(posterior_samples, (tuple, list)) + # assert isinstance(adata, (tuple, list)) + assert "s" in posterior_samples + assert "alpha" in posterior_samples maes_list = [] cors = [] genes = [] - labels = [] - switching = [] - for p, ad, label in zip(posterior_samples, adata, ["train", "valid"]): - print(label) - for sample in range(p["alpha"].shape[0]): - maes_list.append( - mae_per_gene( - p["s"][sample].squeeze(), - ensure_numpy_array(ad.layers["raw_spliced"]), - ) - ) - df_genes_cors = compute_similarity2( - p[time_correlation_with][sample].squeeze(), - p["cell_time"][sample].squeeze().reshape(-1, 1), + # labels = [] + # switching = [] + + for sample in range(posterior_samples["alpha"].shape[0]): + maes_list.append( + mae_per_gene( + posterior_samples["s"][sample].squeeze(), + ensure_numpy_array(adata.layers["raw_spliced"]), ) - cors.append(df_genes_cors[0]) - genes.append(ad.var_names.values) - labels.append([f"Poisson_{label}"] * len(ad.var_names.values)) + ) + df_genes_cors = compute_similarity2( + posterior_samples[time_correlation_with][sample].squeeze(), + posterior_samples["cell_time"][sample].squeeze().reshape(-1, 1), + ) + cors.append(df_genes_cors[0]) + genes.append(adata.var_names.values) + # labels.append([f"Poisson_{label}"] * len(adata.var_names.values)) + # for p, ad, label in zip(posterior_samples, adata, ["train", "valid"]): + # for sample in range(p["alpha"].shape[0]): + # maes_list.append( + # mae_per_gene( + # p["s"][sample].squeeze(), + # ensure_numpy_array(ad.layers["raw_spliced"]), + # ) + # ) + # df_genes_cors = compute_similarity2( + # p[time_correlation_with][sample].squeeze(), + # p["cell_time"][sample].squeeze().reshape(-1, 1), + # ) + # cors.append(df_genes_cors[0]) + # genes.append(ad.var_names.values) + # labels.append([f"Poisson_{label}"] * len(ad.var_names.values)) volcano_data = pd.DataFrame( { "mean_mae": np.hstack(maes_list), - "label": np.hstack(labels), + # "label": np.hstack(labels), "time_correlation": np.hstack(cors), "genes": np.hstack(genes), } diff --git a/src/pyrovelocity/models/_velocity.py b/src/pyrovelocity/models/_velocity.py index 8ef6c9d0e..e6346023e 100644 --- a/src/pyrovelocity/models/_velocity.py +++ b/src/pyrovelocity/models/_velocity.py @@ -503,7 +503,7 @@ def compute_statistics_from_posterior_samples( ] gene_ranking, genes = compute_volcano_data( - [posterior_samples], [adata], time_correlation_with="st" + posterior_samples, adata, time_correlation_with="st" ) gene_ranking = ( gene_ranking.sort_values("mean_mae", ascending=False) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index 6be979dba..fdec782eb 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -11,6 +11,7 @@ from matplotlib import gridspec from matplotlib.axes import Axes from matplotlib.figure import FigureBase +from matplotlib.gridspec import GridSpec from matplotlib.patches import ArrowStyle, ConnectionStyle from numpy import ndarray from pandas import DataFrame @@ -35,9 +36,12 @@ def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): @beartype def plot_gene_ranking( - posterior_samples: List[Dict[str, ndarray]], - adata: List[AnnData], + # posterior_samples: List[Dict[str, ndarray]], + posterior_samples: Dict[str, ndarray], + # adata: List[AnnData], + adata: AnnData, ax: Optional[Axes] = None, + gs: Optional[GridSpec] = None, time_correlation_with: str = "s", selected_genes: Optional[List[str]] = None, assemble: bool = False, @@ -49,9 +53,9 @@ def plot_gene_ranking( if selected_genes is not None: assert isinstance(selected_genes, (tuple, list)) assert isinstance(selected_genes[0], str) - volcano_data = posterior_samples[0]["gene_ranking"] + volcano_data = posterior_samples["gene_ranking"] genes = selected_genes - elif "u" in posterior_samples[0]: + elif "u" in posterior_samples: volcano_data, genes = compute_volcano_data( posterior_samples, adata, @@ -60,8 +64,8 @@ def plot_gene_ranking( negative, ) else: - volcano_data = posterior_samples[0]["gene_ranking"] - genes = posterior_samples[0]["genes"] + volcano_data = posterior_samples["gene_ranking"] + genes = posterior_samples["genes"] adjust_text_compatible = is_adjust_text_compatible() fig = None diff --git a/src/pyrovelocity/plots/_summary.py b/src/pyrovelocity/plots/_summary.py index e597f02ef..346a37798 100644 --- a/src/pyrovelocity/plots/_summary.py +++ b/src/pyrovelocity/plots/_summary.py @@ -42,8 +42,8 @@ def plot_gene_selection_summary( ) volcano_data, _ = plot_gene_ranking( - posterior_samples=[posterior_samples], - adata=[adata], + posterior_samples=posterior_samples, + adata=adata, ax=ax[1], time_correlation_with="st", selected_genes=selected_genes, diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index bbda015e4..7b22c8e29 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -280,8 +280,8 @@ def summarize_dataset( logger.info(f"Generating figure: {volcano_plot}") volcano_data, fig = plot_gene_ranking( - posterior_samples=[posterior_samples], - adata=[adata], + posterior_samples=posterior_samples, + adata=adata, selected_genes=putative_marker_genes, time_correlation_with="st", show_marginal_histograms=True, diff --git a/src/pyrovelocity/tests/plots/test_genes.py b/src/pyrovelocity/tests/plots/test_genes.py index dd9962626..a56b7e1ef 100644 --- a/src/pyrovelocity/tests/plots/test_genes.py +++ b/src/pyrovelocity/tests/plots/test_genes.py @@ -12,8 +12,8 @@ def test_model2_plot_gene_ranking( data_model2_reports_path, ): plot_gene_ranking( - posterior_samples=[posterior_samples_model2], - adata=[postprocessed_model2_data], + posterior_samples=posterior_samples_model2, + adata=postprocessed_model2_data, selected_genes=putative_model2_marker_genes, time_correlation_with="st", show_marginal_histograms=True, @@ -31,8 +31,8 @@ def test_model1_plot_gene_ranking( data_model1_reports_path, ): plot_gene_ranking( - posterior_samples=[posterior_samples_model1], - adata=[postprocessed_model1_data], + posterior_samples=posterior_samples_model1, + adata=postprocessed_model1_data, selected_genes=putative_model1_marker_genes, time_correlation_with="st", show_marginal_histograms=True, From d5bcbe162e3d69eb3aa9350f6b73e5f518da405d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 3 Sep 2024 14:26:15 -0400 Subject: [PATCH 081/177] feat(plots): support SubplotSpec for plot_gene_ranking Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 101 ++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 22 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index fdec782eb..db3443cc0 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -2,16 +2,16 @@ from typing import Dict, List, Optional, Tuple import adjustText +import matplotlib import matplotlib.pyplot as plt import numpy as np import seaborn as sns from adjustText import adjust_text from anndata import AnnData from beartype import beartype -from matplotlib import gridspec from matplotlib.axes import Axes from matplotlib.figure import FigureBase -from matplotlib.gridspec import GridSpec +from matplotlib.gridspec import GridSpec, SubplotSpec from matplotlib.patches import ArrowStyle, ConnectionStyle from numpy import ndarray from pandas import DataFrame @@ -36,19 +36,21 @@ def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): @beartype def plot_gene_ranking( - # posterior_samples: List[Dict[str, ndarray]], posterior_samples: Dict[str, ndarray], - # adata: List[AnnData], adata: AnnData, + fig: Optional[FigureBase] = None, ax: Optional[Axes] = None, - gs: Optional[GridSpec] = None, + gs: Optional[GridSpec | SubplotSpec] = None, time_correlation_with: str = "s", selected_genes: Optional[List[str]] = None, + rainbow_genes: List[str] = [""], assemble: bool = False, negative: bool = False, show_marginal_histograms: bool = False, save_volcano_plot: bool = False, volcano_plot_path: str | Path = "volcano.pdf", + defaultfontsize=7, + show_xy_labels: bool = False, ) -> Tuple[DataFrame, Optional[FigureBase]]: if selected_genes is not None: assert isinstance(selected_genes, (tuple, list)) @@ -68,11 +70,13 @@ def plot_gene_ranking( genes = posterior_samples["genes"] adjust_text_compatible = is_adjust_text_compatible() - fig = None - defaultfontsize = 7 defaultdotsize = 3 - plot_title = "Pyro-Velocity genes" + plot_title = ( + r"$-$MAE vs $\rho(\hat{s},t)$" + if matplotlib.rcParams["text.usetex"] + else "-MAE vs ρ(s,t)" + ) if show_marginal_histograms: time_corr_hist, time_corr_bins = np.histogram( @@ -82,13 +86,27 @@ def plot_gene_ranking( volcano_data["mean_mae"], bins="auto", density=False ) - fig = plt.figure(figsize=(10, 10)) - gs = gridspec.GridSpec( - 3, 3, width_ratios=[2, 2, 1], height_ratios=[1, 2, 2] - ) - ax_scatter = plt.subplot(gs[1:, :2]) - ax_hist_x = plt.subplot(gs[0, :2]) - ax_hist_y = plt.subplot(gs[1:, 2]) + if gs is None: + fig = plt.figure(figsize=(10, 10)) + gsi = GridSpec( + nrows=3, + ncols=3, + width_ratios=[2, 2, 1], + height_ratios=[1, 2, 2], + ) + else: + gsi = gs.subgridspec( + nrows=3, + ncols=3, + width_ratios=[2, 2, 1], + height_ratios=[1, 2, 2], + ) + ax_scatter = plt.subplot(gsi[1:, :2]) + ax_scatter.set_label("gene_selection") + ax_hist_x = plt.subplot(gsi[0, :2]) + ax_hist_x.set_label("gene_selection") + ax_hist_y = plt.subplot(gsi[1:, 2]) + ax_hist_y.set_label("gene_selection") # time histogram ax_hist_x.bar( @@ -112,7 +130,38 @@ def plot_gene_ranking( defaultdotsize = 12 plot_title = "" ax = ax_scatter + else: + if gs is not None: + gsi = gs.subgridspec( + nrows=2, + ncols=1, + height_ratios=[0.05, 1], + hspace=0.05, + wspace=0.0, + ) + title_ax = fig.add_subplot(gsi[0, :]) + title_ax.axis("off") + title_ax.set_xticklabels([]) + title_ax.set_label("gene_selection") + title_ax.text( + 0.5, + 0.5, + plot_title, + ha="center", + va="center", + fontsize=defaultfontsize + 1, + fontweight="bold", + transform=title_ax.transAxes, + ) + ax = fig.add_subplot(gsi[1, :]) + ax.set_label("gene_selection") + elif ax is None: + fig, ax = plt.subplots(figsize=(10, 10)) + ax.set_label("gene_selection") + else: + ax.set_label("gene_selection") + ax.set_label("gene_selection") sns.scatterplot( x="time_correlation", y="mean_mae", @@ -141,22 +190,30 @@ def plot_gene_ranking( ax.set_xlim(x_min - x_range, x_max + x_range) ax.set_ylim(y_min - y_range, y_max + y_range) - ax.set_title(plot_title, fontsize=defaultfontsize) - ax.set_xlabel( - "shared time correlation\nwith spliced expression", - fontsize=defaultfontsize, - ) - ax.set_ylabel("negative mean\nabsolute error", fontsize=defaultfontsize) + ax.set_xlabel("") + ax.set_ylabel("") + if show_xy_labels: + ax.set_xlabel( + "shared time correlation\nwith spliced expression", + fontsize=defaultfontsize, + ) + ax.set_ylabel("negative mean\nabsolute error", fontsize=defaultfontsize) + else: + ax.set_yticklabels([]) sns.despine() ax.tick_params(labelsize=defaultfontsize - 1) + ax.tick_params(axis="x", top=False, which="both") + ax.tick_params(axis="y", right=False, which="both") texts = [] + light_orange = "#ffb343" + dark_orange = "#ff6a14" for i, g in enumerate(genes): ax.scatter( volcano_data.loc[g, :].time_correlation, volcano_data.loc[g, :].mean_mae, s=15, - color="red", + color=dark_orange if g in rainbow_genes else light_orange, marker="*", ) new_text = ax.text( From 989c19b060fba72b46fb542422ded444927ba844 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 3 Sep 2024 14:26:51 -0400 Subject: [PATCH 082/177] feat(plots): support SubplotSpec for plot_parameter_posteriors Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 150 ++++++++++++++++++++------ 1 file changed, 118 insertions(+), 32 deletions(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index 9de3e5fbf..2c2b3069b 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -1,13 +1,16 @@ from os import PathLike from typing import Dict, List +import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns from anndata import AnnData from beartype import beartype +from beartype.typing import Optional from matplotlib.figure import FigureBase +from matplotlib.gridspec import SubplotSpec from pyrovelocity.logging import configure_logging @@ -16,29 +19,88 @@ logger = configure_logging(__name__) +@beartype +def tex_or_plain( + tex_str: str, + plain_str: str, +) -> str: + """ + Returns the TeX-formatted string if text.usetex is True, + otherwise returns the plain string. + """ + return tex_str if matplotlib.rcParams["text.usetex"] else plain_str + + +DEFAULT_PARAMETER_LABEL_MAPPINGS = { + "alpha": tex_or_plain(r"$\alpha$", "α"), + "beta": tex_or_plain(r"$\beta$", "β"), + "gamma": tex_or_plain(r"$\gamma$", "γ"), + "u_offset": tex_or_plain(r"$u_0$", "u₀"), + "s_offset": tex_or_plain(r"$s_0$", "s₀"), + "t0": tex_or_plain(r"$t_0$", "t₀"), +} + + @beartype def plot_parameter_posterior_distributions( posterior_samples: Dict[str, np.ndarray], adata: AnnData, geneset: List[str], - parameter_uncertainty_plot: PathLike | str, - parameter_names: List[str] = [ - "alpha", - "beta", - "gamma", - "u_offset", - "s_offset", - "t0", - ], -) -> FigureBase: + parameter_names: List[str] + | Dict[str, str] = DEFAULT_PARAMETER_LABEL_MAPPINGS, + fig: Optional[FigureBase] = None, + gs: Optional[SubplotSpec] = None, + save_plot: bool = False, + parameter_uncertainty_plot: PathLike | str = "parameter_uncertainty.pdf", + default_fontsize: int = 7, +) -> Optional[FigureBase]: + if isinstance(parameter_names, list): + parameter_names = {param: param for param in parameter_names} + parameters = [ parameter - for parameter in parameter_names + for parameter in parameter_names.keys() if parameter in posterior_samples.keys() ] - fig, ax = plt.subplots(len(parameters), 1) - fig.set_size_inches(18, len(parameters) * 4) + main_title = r"Density estimates from $\log$-posterior samples" + if len(parameters) > 3: + nrows = (len(parameters) + 1) // 2 + ncols = 2 + else: + nrows = len(parameters) + ncols = 1 + if gs is None: + fig, ax = plt.subplots(len(parameters), 1) + fig.set_size_inches(18, len(parameters) * 4) + else: + sgs = gs.subgridspec( + nrows=nrows + 1, + ncols=ncols, + height_ratios=[0.1] + [1] * nrows, + ) + title_ax = fig.add_subplot(sgs[0, :]) + title_ax.axis("off") + title_ax.set_label("parameter_posteriors") + title_ax.text( + 0.5, + 0.5, + main_title, + ha="center", + va="center", + fontsize=default_fontsize + 1, + fontweight="bold", + transform=title_ax.transAxes, + ) + for index, parameter in enumerate(parameters): + if gs is not None: + col = index // nrows + row = index % nrows + 1 # +1 because the first row is for the title + ax1 = fig.add_subplot(sgs[row, col]) + else: + row = index + ax1 = ax[index] + ax1.set_label("parameter_posteriors") df = pd.DataFrame( np.log( posterior_samples[parameter].squeeze()[ @@ -47,7 +109,6 @@ def plot_parameter_posterior_distributions( ), columns=adata.var_names[np.isin(adata.var_names, list(geneset))], ) - # df = df.apply(lambda x: x - x.mean()) df_long = df.melt(var_name="index", value_name="value") logger.debug(df_long.head()) df_long["index"] = pd.Categorical( @@ -67,26 +128,51 @@ def plot_parameter_posterior_distributions( else: pass - ax1 = sns.violinplot( + dark_orange = "#ff6a14" + sns.violinplot( x="index", y="value", + color=dark_orange, + linewidth=0, data=df_long, - ax=ax[index], - ) - ax1.set_xticklabels(ax1.get_xticklabels(), rotation=30, ha="right") - ax1.set_ylabel(parameter) - ax1.set_xlabel("") - - fig.subplots_adjust( - hspace=0.4, wspace=0.45, left=0.08, right=0.95, top=0.9, bottom=0.15 - ) - for ext in ["", ".png"]: - fig.savefig( - f"{parameter_uncertainty_plot}{ext}", - facecolor=fig.get_facecolor(), - bbox_inches="tight", - edgecolor="none", - dpi=300, + ax=ax1, + inner="box", + inner_kws=dict( + box_width=1.5, + whis_width=0.75, + color=".8", + ), ) - plt.close(fig) + + ax1.tick_params(axis="both", which="major", labelsize=default_fontsize) + ax1.tick_params(axis="x", which="minor", bottom=False, top=False) + + if row < nrows: + ax1.set_xticklabels([]) + ax1.set_xlabel("") + else: + ax1.set_xlabel("") + truncated_labels = [ + label.get_text()[:7] for label in ax1.get_xticklabels() + ] + ax1.set_xticklabels( + labels=truncated_labels, + rotation=0, + ha="center", + fontdict={"fontsize": 5}, + ) + + ax1.set_ylabel(parameter_names[parameter], fontsize=default_fontsize) + + if save_plot and fig is not None: + fig.tight_layout() + for ext in ["", ".png"]: + fig.savefig( + f"{parameter_uncertainty_plot}{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + ) + plt.close(fig) return fig From 3685fd826e5b2abd6b41823d567afd6341a47c9f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 3 Sep 2024 14:31:36 -0400 Subject: [PATCH 083/177] feat(plots): support SubplotSpec for plot_vector_field_summary Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 184 +++++++++++++---------- 1 file changed, 105 insertions(+), 79 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 9a0876c51..ee3b8c871 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -12,6 +12,7 @@ from matplotlib.axes import Axes from matplotlib.colors import Normalize from matplotlib.figure import FigureBase +from matplotlib.gridspec import SubplotSpec from matplotlib.ticker import MaxNLocator from scvelo.plotting.velocity_embedding_grid import default_arrow @@ -36,23 +37,41 @@ @beartype def create_vector_field_summary_layout( - fig_width: int | float = 12, - fig_height: int | float = 2.5, -) -> Tuple[FigureBase, List[Axes], List[Axes]]: - fig = plt.figure(figsize=(fig_width, fig_height)) - gs = fig.add_gridspec( - 2, - 6, - width_ratios=[1] * 6, - height_ratios=[6, 1], - ) - - main_axes = [fig.add_subplot(gs[0, i]) for i in range(6)] - bottom_axes = [fig.add_subplot(gs[1, i]) for i in range(6)] - for ax in bottom_axes: - ax.axis("off") + fig: Optional[FigureBase] = None, + gs: Optional[SubplotSpec] = None, + fig_width: int | float = 7.5, + fig_height: int | float = 1.08, +) -> Tuple[FigureBase, List[Axes], Axes, List[Axes]]: + if fig is None: + fig = plt.figure( + figsize=(fig_width, fig_height), + ) + if gs is None: + gsi = fig.add_gridspec( + nrows=2, + ncols=6, + width_ratios=[1] * 6, + height_ratios=[10, 1], + wspace=0.1, + hspace=0.0, + ) + else: + gsi = gs.subgridspec( + nrows=2, + ncols=6, + width_ratios=[1] * 6, + height_ratios=[10, 1], + wspace=0.1, + hspace=0.0, + ) + main_axes = [fig.add_subplot(gsi[0, i]) for i in range(6)] + legend_axes = fig.add_subplot(gsi[1, :3]) + colorbar_axes = [fig.add_subplot(gsi[1, i]) for i in range(3, 6)] + all_axes = main_axes + [legend_axes] + colorbar_axes + for ax in all_axes: + ax.set_label("vector_field") - return fig, main_axes, bottom_axes + return fig, main_axes, legend_axes, colorbar_axes @beartype @@ -60,15 +79,19 @@ def plot_vector_field_summary( adata: AnnData, posterior_samples: Dict[str, np.ndarray], vector_field_basis: str, - plot_name: PathLike | str, + plot_name: Optional[PathLike | str] = None, cell_state: str = "cell_type", state_color_dict: Optional[Dict[str, str]] = None, - default_fontsize: int = 12 if matplotlib.rcParams["text.usetex"] else 9, + fig: Optional[FigureBase] = None, + gs: Optional[SubplotSpec] = None, + default_fontsize: int = 7 if matplotlib.rcParams["text.usetex"] else 6, default_title_padding: int = 2, - dotsize: int | float = 3, + dotsize: int | float = 1, scale: float = 0.35, - arrow_size: float = 3.6, + arrow_size: float = 3, density: float = 0.4, + save_fig: bool = False, + linewidth: float = 0.5, ) -> FigureBase: posterior_time = posterior_samples["cell_time"] pca_embeds_angle = posterior_samples["pca_embeds_angle"] @@ -77,8 +100,9 @@ def plot_vector_field_summary( ( fig, ax, - bottom_axes, - ) = create_vector_field_summary_layout() + legend_axes, + colorbar_axes, + ) = create_vector_field_summary_layout(fig=fig, gs=gs) ress = pd.DataFrame( { @@ -102,6 +126,8 @@ def plot_vector_field_summary( legend="brief", ) ax[0].get_legend().remove() + ax[0].set_xticklabels([]) + ax[0].set_xlabel("") ax[0].axis("off") ax[0].set_title( "Cell types", @@ -123,9 +149,11 @@ def plot_vector_field_summary( scale=scale, frameon=False, density=density, - arrow_size=3, - linewidth=1, + arrow_size=arrow_size, + linewidth=linewidth, ) + ax[1].set_xticklabels([]) + ax[1].set_xlabel("") ax[1].axis("off") ax[1].set_title( "scVelo", @@ -147,9 +175,11 @@ def plot_vector_field_summary( scale=scale, frameon=False, density=density, - arrow_size=3, - linewidth=1, + arrow_size=arrow_size, + linewidth=linewidth, ) + ax[2].set_xticklabels([]) + ax[2].set_xlabel("") ax[2].axis("off") ax[2].set_title( rf"Pyro\thinspace-Velocity" @@ -174,7 +204,9 @@ def plot_vector_field_summary( alpha=1, ) ax[3].set_title( - "shared time", + r"shared time $\hat{\mu}(t)$" + if matplotlib.rcParams["text.usetex"] + else "shared time μ", fontsize=default_fontsize, pad=default_title_padding, ) @@ -209,7 +241,7 @@ def plot_vector_field_summary( show_titles=False, ) ax[4].set_title( - r"shared time $\left.\sigma \right/ \mu$" + r"shared time $\left.\hat{\sigma}(t) \right/ \hat{\mu}(t)$" if matplotlib.rcParams["text.usetex"] else "shared time σ/μ", fontsize=default_fontsize, @@ -236,7 +268,7 @@ def plot_vector_field_summary( show_titles=False, ) ax[5].set_title( - r"PCA angle $\sigma$" + r"PCA angle $\hat{\sigma}$" if matplotlib.rcParams["text.usetex"] else "PCA angle σ", fontsize=default_fontsize, @@ -244,28 +276,28 @@ def plot_vector_field_summary( ) handles, labels = ax[0].get_legend_handles_labels() - bottom_axes[0].legend( + legend_axes.legend( handles=handles, labels=labels, - loc="lower left", - bbox_to_anchor=(-0.1, -0.2), - ncol=4, + loc="upper left", + bbox_to_anchor=(-0.05, 2.0), + # bbox_transform=bottom_axes[0].transAxes, + bbox_transform=legend_axes.transAxes, + ncol=5, frameon=False, fancybox=True, - markerscale=4, - columnspacing=0.7, - handletextpad=0.1, + markerscale=3, + columnspacing=0.05, + handletextpad=-0.5, + fontsize=default_fontsize * 0.9, ) + legend_axes.axis("off") for axi in ax: axi.set_aspect("equal", adjustable="box") - fig.tight_layout() - fig.subplots_adjust( - left=0.05, right=0.98, top=0.98, bottom=0.08, wspace=0.1, hspace=0.2 - ) - - for axi, cax in zip(ax[3:], bottom_axes[3:]): + for axi, cax in zip(ax[3:], colorbar_axes): + ax_pos = axi.get_position() cax.axis("on") cbar = fig.colorbar( mappable=axi.collections[0], @@ -274,29 +306,33 @@ def plot_vector_field_summary( ) cbar.locator = MaxNLocator(nbins=2) cbar.update_ticks() - ax_pos = axi.get_position() - cbar_width = ax_pos.width * 0.6 - cbar_height = 0.05 cax.xaxis.set_ticks_position("bottom") cax.xaxis.set_label_position("bottom") - cax.set_position( - [ - ax_pos.x0 + (ax_pos.width - cbar_width), - 0.25, - cbar_width, - cbar_height, - ] - ) - - for ext in ["", ".png"]: - fig.savefig( - f"{plot_name}{ext}", - facecolor=fig.get_facecolor(), - bbox_inches="tight", - edgecolor="none", - dpi=300, - ) - plt.close(fig) + cax.xaxis.set_tick_params(labelsize=default_fontsize * 0.8) + # TODO: support colorbar with width specified as a fraction of the axis width + # cbar_width = ax_pos.width * 0.6 + # cbar_height = ax_pos.height * 0.10 + # cax.set_position( + # [ + # ax_pos.x0 + (ax_pos.width - cbar_width), + # ax_pos.y0 - cbar_height * 1.05, + # cbar_width, + # cbar_height, + # ] + # ) + + if save_fig: + fig.tight_layout() + + for ext in ["", ".png"]: + fig.savefig( + f"{plot_name}{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + ) + plt.close(fig) return fig @@ -319,7 +355,7 @@ def plot_vector_field_uncertainty( cmap="winter", cmax=0.305, color_vector_field_by_measure=False, - dot_size=1, + dotsize=1, show_titles: bool = True, default_fontsize: int = 7, ): @@ -336,21 +372,18 @@ def plot_vector_field_uncertainty( ax = fig.subplots(1, 2) if isinstance(ax, list) and len(ax) == 2: if not only_grid: - # norm = Normalize() - # norm.autoscale(adata.obs["uncertain"]) order = np.argsort(adata.obs["uncertain"].values) im = ax[0].scatter( adata.obsm[f"X_{basis}"][:, 0][order], adata.obsm[f"X_{basis}"][:, 1][order], - # c=colormap(norm(adata.obs["uncertain"].values[order])), c=adata.obs["uncertain"].values[order], cmap=cmap, norm=None, vmin=np.percentile(uncertain, 5), vmax=np.percentile(uncertain, 95), - s=dot_size, + s=dotsize, linewidth=1, - edgecolors="face", + edgecolors="none", ) ax[0].axis("off") if show_titles: @@ -414,7 +447,6 @@ def plot_vector_field_uncertainty( im = ax.scatter( adata.obsm[f"X_{basis}"][:, 0][order], adata.obsm[f"X_{basis}"][:, 1][order], - # c=colormap(norm(adata.obs["uncertain"].values[order])), c=ordered_uncertainty_measure, cmap=cmap, norm=None, @@ -426,9 +458,9 @@ def plot_vector_field_uncertainty( if "angle" in uncertain_measure # else np.percentile(ordered_uncertainty_measure, 99.9), else max(ordered_uncertainty_measure), - s=dot_size, + s=dotsize, linewidth=1, - edgecolors="face", + edgecolors="none", ) ax.axis("off") if show_titles: @@ -446,7 +478,7 @@ def plot_vector_field_uncertainty( cbar = fig.colorbar( im, cax=cax, orientation="horizontal" ) # fraction=0.046, pad=0.04 - cbar.ax.tick_params(axis="x", labelsize=5.5) + cbar.ax.tick_params(axis="x", labelsize=default_fontsize * 0.8) cbar.ax.locator = MaxNLocator(nbins=2, integer=True) # cbar.ax.set_xlabel(f"{uncertain_measure} uncertainty", fontsize=default_fontsize) @@ -485,7 +517,6 @@ def plot_mean_vector_field( return adata.obsm[f"velocity_pyro_{basis}"] -# def project_grid_points(emb, velocity_emb, uncertain=None, p_mass_min=3.5, density=0.3): def project_grid_points( emb, velocity_emb, @@ -505,8 +536,6 @@ def project_grid_points( for dim_i in range(2): m, M = np.min(emb[:, dim_i]), np.max(emb[:, dim_i]) - # m = m - .025 * np.abs(M - m) - # M = M + .025 * np.abs(M - m) m = m - 0.01 * np.abs(M - m) M = M + 0.01 * np.abs(M - m) gr = np.linspace(m, M, int(grid_num)) @@ -516,8 +545,6 @@ def project_grid_points( X_grid = np.vstack([i.flat for i in meshes_tuple]).T n_neighbors = int(emb.shape[0] / 50) - # print(n_neighbors) - # nn = NearestNeighbors(n_neighbors=30, n_jobs=-1) nn = NearestNeighbors(n_neighbors=n_neighbors, n_jobs=-1) nn.fit(emb) dists, neighs = nn.kneighbors(X_grid) @@ -532,7 +559,6 @@ def project_grid_points( V_grid = (velocity_emb[:, :2][neighs] * weight[:, :, None, None]).sum( 1 ) / np.maximum(1, p_mass)[:, None, None] - # print(V_grid.shape) p_mass_min *= np.percentile(p_mass, 99) / 100 if autoscale: From e0c9466ed9b67a0b0c643ec25032121361c8dfa2 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 14:30:43 -0400 Subject: [PATCH 084/177] fix(plots): use pure text title for plot gene ranking Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index db3443cc0..63f7b9480 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -73,9 +73,10 @@ def plot_gene_ranking( defaultdotsize = 3 plot_title = ( - r"$-$MAE vs $\rho(\hat{s},t)$" - if matplotlib.rcParams["text.usetex"] - else "-MAE vs ρ(s,t)" + r"Mean absolute error vs spliced correlation with shared time" + # r"$-$MAE vs $\rho(\hat{s},t)$" + # if matplotlib.rcParams["text.usetex"] + # else "-MAE vs ρ(s,t)" ) if show_marginal_histograms: From daabaee1778d1181fe90fed03b6f870666dca248 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 14:31:59 -0400 Subject: [PATCH 085/177] fix(plots): update major log tick labels for parameter posteriors Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 46 +++++++++++++++++++++------ 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index 2c2b3069b..501b88d0f 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -9,6 +9,7 @@ from anndata import AnnData from beartype import beartype from beartype.typing import Optional +from matplotlib import ticker from matplotlib.figure import FigureBase from matplotlib.gridspec import SubplotSpec @@ -41,6 +42,17 @@ def tex_or_plain( } +def construct_log_string(x, base): + if x <= 0: + return "0" + # print(x) + log_val = int(np.round(np.log(x) / np.log(base))) + if base == np.e: + return rf"$e^{{{log_val}}}$" + else: + return rf"${base}^{{{log_val}}}$" + + @beartype def plot_parameter_posterior_distributions( posterior_samples: Dict[str, np.ndarray], @@ -53,6 +65,7 @@ def plot_parameter_posterior_distributions( save_plot: bool = False, parameter_uncertainty_plot: PathLike | str = "parameter_uncertainty.pdf", default_fontsize: int = 7, + log_base=10, ) -> Optional[FigureBase]: if isinstance(parameter_names, list): parameter_names = {param: param for param in parameter_names} @@ -62,11 +75,14 @@ def plot_parameter_posterior_distributions( for parameter in parameter_names.keys() if parameter in posterior_samples.keys() ] - main_title = r"Density estimates from $\log$-posterior samples" - if len(parameters) > 3: + main_title = ( + r"Parameter density estimates from $\log_{10}$-posterior samples" + ) + if "s_offset" in parameters: nrows = (len(parameters) + 1) // 2 ncols = 2 else: + "t0" in parameters and parameters.remove("t0") nrows = len(parameters) ncols = 1 if gs is None: @@ -77,6 +93,8 @@ def plot_parameter_posterior_distributions( nrows=nrows + 1, ncols=ncols, height_ratios=[0.1] + [1] * nrows, + # hspace=0.0, + # wspace=0.0, ) title_ax = fig.add_subplot(sgs[0, :]) title_ax.axis("off") @@ -102,11 +120,11 @@ def plot_parameter_posterior_distributions( ax1 = ax[index] ax1.set_label("parameter_posteriors") df = pd.DataFrame( - np.log( - posterior_samples[parameter].squeeze()[ - :, np.isin(adata.var_names, list(geneset)) - ], - ), + # np.log( + posterior_samples[parameter].squeeze()[ + :, np.isin(adata.var_names, list(geneset)) + ], + # ), columns=adata.var_names[np.isin(adata.var_names, list(geneset))], ) df_long = df.melt(var_name="index", value_name="value") @@ -142,9 +160,19 @@ def plot_parameter_posterior_distributions( whis_width=0.75, color=".8", ), + log_scale=log_base, + ) + ax1.yaxis.set_major_formatter( + ticker.FuncFormatter(lambda x, _: construct_log_string(x, log_base)) + ) + ax1.yaxis.set_tick_params(labelsize=default_fontsize) + ax1.yaxis.set_minor_locator( + ticker.LogLocator(base=log_base, subs="all", numticks=20) + ) + ax1.yaxis.set_minor_formatter(ticker.NullFormatter()) + ax1.tick_params( + axis="both", which="major", labelsize=default_fontsize - 3 ) - - ax1.tick_params(axis="both", which="major", labelsize=default_fontsize) ax1.tick_params(axis="x", which="minor", bottom=False, top=False) if row < nrows: From 13e3afda929a2858f8c47a371207d72d6ab72bad Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 14:33:17 -0400 Subject: [PATCH 086/177] fix(plots): force min-max colorbar tick labels for bounded variables Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 111 ++++++++++++++--------- 1 file changed, 70 insertions(+), 41 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index ee3b8c871..e992cdd30 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -85,13 +85,14 @@ def plot_vector_field_summary( fig: Optional[FigureBase] = None, gs: Optional[SubplotSpec] = None, default_fontsize: int = 7 if matplotlib.rcParams["text.usetex"] else 6, - default_title_padding: int = 2, + default_title_padding: int = 5, dotsize: int | float = 1, scale: float = 0.35, arrow_size: float = 3, density: float = 0.4, save_fig: bool = False, linewidth: float = 0.5, + title_background_color: str = "#F0F0F0", ) -> FigureBase: posterior_time = posterior_samples["cell_time"] pca_embeds_angle = posterior_samples["pca_embeds_angle"] @@ -187,12 +188,44 @@ def plot_vector_field_summary( else f"Pyro\u2009-Velocity", fontsize=default_fontsize, pad=default_title_padding, + backgroundcolor=title_background_color, + ) + + pca_cell_angles = pca_embeds_angle / np.pi * 180 + pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) + + plot_vector_field_uncertainty( + adata=adata, + embed_mean=embed_mean, + embeds_radian_or_magnitude=pca_angles_std, + ax=ax[3], + cbar=False, + fig=fig, + basis=vector_field_basis, + scale=scale, + arrow_size=arrow_size, + p_mass_min=1, + autoscale=True, + density=density, + only_grid=False, + uncertain_measure="PCA angle", + cmap="inferno", + cmax=None, + show_titles=False, + ) + ax[3].set_title( + r"PCA angle uncertainty" + if matplotlib.rcParams["text.usetex"] + else "PCA angle σ", + fontsize=default_fontsize, + pad=default_title_padding, + backgroundcolor=title_background_color, ) plot_posterior_time( posterior_samples, adata, - ax=ax[3], + ax=ax[4], basis=vector_field_basis, fig=fig, addition=False, @@ -203,17 +236,16 @@ def plot_vector_field_summary( show_titles=False, alpha=1, ) - ax[3].set_title( - r"shared time $\hat{\mu}(t)$" + ax[4].set_title( + r"Shared time mean" + # r"shared time $\hat{\mu}(t)$" if matplotlib.rcParams["text.usetex"] - else "shared time μ", + else "Shared time μ", fontsize=default_fontsize, pad=default_title_padding, + backgroundcolor=title_background_color, ) - pca_cell_angles = pca_embeds_angle / np.pi * 180 - pca_angles_std = get_posterior_sample_angle_uncertainty(pca_cell_angles) - cell_time_mean = posterior_time.mean(0).flatten() cell_time_mean_max = cell_time_mean.max() cell_times = posterior_time / cell_time_mean_max @@ -225,7 +257,7 @@ def plot_vector_field_summary( adata, embed_mean, cell_time_cov, - ax=ax[4], + ax=ax[5], cbar=False, fig=fig, basis=vector_field_basis, @@ -240,39 +272,13 @@ def plot_vector_field_summary( cmax=None, show_titles=False, ) - ax[4].set_title( - r"shared time $\left.\hat{\sigma}(t) \right/ \hat{\mu}(t)$" - if matplotlib.rcParams["text.usetex"] - else "shared time σ/μ", - fontsize=default_fontsize, - pad=default_title_padding, - ) - - plot_vector_field_uncertainty( - adata, - embed_mean, - pca_angles_std, - ax=ax[5], - cbar=False, - fig=fig, - basis=vector_field_basis, - scale=scale, - arrow_size=arrow_size, - p_mass_min=1, - autoscale=True, - density=density, - only_grid=False, - uncertain_measure="PCA angle", - cmap="inferno", - cmax=None, - show_titles=False, - ) ax[5].set_title( - r"PCA angle $\hat{\sigma}$" + r"Shared time uncertainty" if matplotlib.rcParams["text.usetex"] - else "PCA angle σ", + else "shared time σ/μ", fontsize=default_fontsize, pad=default_title_padding, + backgroundcolor=title_background_color, ) handles, labels = ax[0].get_legend_handles_labels() @@ -296,7 +302,22 @@ def plot_vector_field_summary( for axi in ax: axi.set_aspect("equal", adjustable="box") - for axi, cax in zip(ax[3:], colorbar_axes): + colorbar_labels = [ + r"$\hat{\sigma}$", + r"$\mu(t)$", + r"$\left.\hat{\sigma}(t) \right/ \hat{\mu}(t)$", + ] + colorbar_ticks = [ + [0, 360], + [0, 1], + [], + ] + for axi, cax, clabel, cticks in zip( + ax[3:], + colorbar_axes, + colorbar_labels, + colorbar_ticks, + ): ax_pos = axi.get_position() cax.axis("on") cbar = fig.colorbar( @@ -304,11 +325,19 @@ def plot_vector_field_summary( cax=cax, orientation="horizontal", ) - cbar.locator = MaxNLocator(nbins=2) - cbar.update_ticks() + + if len(cticks) > 0: + vmin, vmax = axi.collections[0].get_clim() + cbar.set_ticks([vmin, vmax]) + cbar.set_ticklabels([rf"{cticks[0]}", rf"{cticks[1]}"]) + else: + cbar.locator = MaxNLocator(nbins=3) + cbar.update_ticks() + cax.xaxis.set_ticks_position("bottom") cax.xaxis.set_label_position("bottom") cax.xaxis.set_tick_params(labelsize=default_fontsize * 0.8) + # cbar.set_label(label=clabel, fontsize=default_fontsize, labelpad=0) # TODO: support colorbar with width specified as a fraction of the axis width # cbar_width = ax_pos.width * 0.6 # cbar_height = ax_pos.height * 0.10 From f205304f952b826ffe2ab9610ebeec494b553245 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 14:34:52 -0400 Subject: [PATCH 087/177] feat(plots): support SubplotSpec for rainbowplot - temporarily use independent function `rainbowplot_module` for testing purposes Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 456 ++++++++++++++++++++++++++++- 1 file changed, 442 insertions(+), 14 deletions(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index fe6cfc303..062ea4324 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Dict, List, Optional +import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd @@ -8,9 +9,13 @@ import seaborn as sns from anndata import AnnData from beartype import beartype +from beartype.typing import Any, Tuple from matplotlib import ticker +from matplotlib.axes import Axes from matplotlib.figure import Figure, FigureBase +from matplotlib.gridspec import GridSpec, SubplotSpec from numpy import ndarray +from numpy.typing import NDArray from pandas import DataFrame, Index from pyrovelocity.plots._common import set_colorbar, set_font_size @@ -19,6 +24,425 @@ __all__ = ["rainbowplot", "us_rainbowplot"] +def rainbowplot_module( + volcano_data: pd.DataFrame, + adata: AnnData, + posterior_samples: Dict[str, NDArray[Any]], + fig: Optional[Figure] = None, + ax: Optional[Axes] = None, + gs: Optional[SubplotSpec] = None, + genes: Optional[List[str]] = None, + data: List[str] = ["st", "ut"], + cell_state: str = "clusters", + basis: str = "umap", + num_genes: int = 5, + add_line: bool = True, + negative_correlation: bool = False, + state_info_colors: bool = False, + save_plot: bool = False, + show_data: bool = True, + rainbow_plot_path: str = "rainbow.pdf", + dotsize: int = 1, +) -> Tuple[Figure, Dict[str, Axes]]: + set_font_size(7) + + if genes is None: + genes = get_genes(volcano_data, num_genes, negative_correlation) + number_of_genes = len(genes) + + if gs is None: + fig, axes_dict = create_rainbow_figure(number_of_genes, show_data) + else: + axes_dict = create_rainbow_axes(gs, number_of_genes, show_data) + + if state_info_colors: + colors = setup_state_info_colors(adata, cell_state) + else: + colors = setup_colors(adata, cell_state) + + st, ut = get_posterior_samples_mean(data, posterior_samples) + if "st_std" in posterior_samples: + st_std = posterior_samples["st_std"] + else: + st_std = None + + for n, gene in enumerate(genes): + ress = get_data(gene, st, ut, adata, cell_state, posterior_samples) + plot_gene_data_module(axes_dict, n, ress, colors, add_line, show_data) + plot_gene_on_embedding( + axes_dict=axes_dict, + n=n, + adata=adata, + st=st, + gene=gene, + basis=basis, + show_data=show_data, + st_std=st_std, + dotsize=dotsize, + ) + set_labels_module(axes_dict, n, gene, number_of_genes, ress) + + # sns.despine() + _set_axes_aspect(axes_dict) + fig.tight_layout() + + if save_plot: + for ext in ["", ".png"]: + fig.savefig( + f"{rainbow_plot_path}{ext}", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + ) + + return fig, axes_dict + + +def create_rainbow_figure( + number_of_genes: int, + show_data: bool, + st_std: bool = False, +) -> Tuple[Figure, Dict[str, Axes]]: + subplot_height = 0.9 + horizontal_panels = 5 if show_data else 4 + subplot_width = 1.5 * subplot_height * horizontal_panels + + fig = plt.figure(figsize=(subplot_width, subplot_height * number_of_genes)) + gs = GridSpec(number_of_genes, horizontal_panels, figure=fig) + + axes_dict = {} + for n in range(number_of_genes): + axes_dict[f"phase_{n}"] = fig.add_subplot(gs[n, 0]) + axes_dict[f"dynamics_{n}"] = fig.add_subplot(gs[n, 1]) + axes_dict[f"predictive_{n}"] = fig.add_subplot(gs[n, 2]) + if show_data: + axes_dict[f"data_{n}"] = fig.add_subplot(gs[n, 3]) + if st_std: + axes_dict[f"cv_{n}"] = fig.add_subplot(gs[n, 4]) + + return fig, axes_dict + + +def create_rainbow_axes( + # fig: Figure, + # ax: Axes, + gs_top: SubplotSpec, + number_of_genes: int, + show_data: bool, +) -> Dict[str, Axes]: + # gs = GridSpec( + # number_of_genes, + # 4 if show_data else 3, + # figure=fig, + # # subplot_spec=ax, + # ) + n_cols = 6 if show_data else 5 + boundary_column_width = 0.001 + gene_label_column_width = 0.21 + gs = gs_top.subgridspec( + nrows=number_of_genes, + ncols=n_cols + 2, + # figure=fig, + # subplot_spec=ax, + # width_ratios=[0.1] + [0.21] + [1] * (n_cols - 1) + [0.1], + width_ratios=[ + boundary_column_width, + gene_label_column_width, + *([1] * (n_cols - 1)), + boundary_column_width, + ], + height_ratios=[1] * number_of_genes, + wspace=0.2, + hspace=0.2, + ) + axs = gs.subplots() + + axes_dict = {} + plot_label = "rainbow" + for n in range(number_of_genes): + # axes_dict[f"phase_{n}"] = fig.add_subplot(gs[n, 0]) + # axes_dict[f"dynamics_{n}"] = fig.add_subplot(gs[n, 1]) + # axes_dict[f"predictive_{n}"] = fig.add_subplot(gs[n, 2]) + # if show_data: + # axes_dict[f"data_{n}"] = fig.add_subplot(gs[n, 3]) + axs[n, 0].set_label("buffer_column_left") + axs[n, 0].axis("off") + axes_dict[f"gene_{n}"] = axs[n, 1] + axs[n, 1].set_label(plot_label) + axs[n, 1].axis("off") + axes_dict[f"phase_{n}"] = axs[n, 2] + axs[n, 2].set_label(plot_label) + axes_dict[f"dynamics_{n}"] = axs[n, 3] + axs[n, 3].set_label(plot_label) + axes_dict[f"predictive_{n}"] = axs[n, 4] + axs[n, 4].set_label(plot_label) + if show_data: + axes_dict[f"data_{n}"] = axs[n, 5] + axs[n, 5].set_label(plot_label) + axes_dict[f"cv_{n}"] = axs[n, 6] + axs[n, 6].set_label(plot_label) + axs[n, -1].set_label("buffer_column_right") + axs[n, -1].axis("off") + + return axes_dict + + +def plot_gene_data_module( + axes_dict: Dict[str, Axes], + n: int, + ress: pd.DataFrame, + colors: Dict, + add_line: bool, + show_data: bool, +): + scatterplot(axes_dict[f"phase_{n}"], ress, colors) + plot_gene(axes_dict[f"dynamics_{n}"], ress, colors, add_line) + + +def plot_gene_on_embedding( + axes_dict: Dict[str, Axes], + n: int, + adata: AnnData, + st: NDArray[Any], + gene: str, + basis: str, + show_data: bool, + st_std: Optional[NDArray[Any]] = None, + dotsize: int = 1, +): + (index,) = np.where(adata.var_names == gene) + im = axes_dict[f"predictive_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=st[:, index].flatten(), + cmap="cividis", + edgecolors="none", + ) + set_colorbar( + im, + axes_dict[f"predictive_{n}"], + labelsize=5, + fig=axes_dict[f"predictive_{n}"].figure, + rainbow=True, + axes_label="rainbow", + ) + axes_dict[f"predictive_{n}"].axis("off") + + if st_std is not None: + im = axes_dict[f"cv_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=st_std[:, index].flatten() / st[:, index].flatten(), + cmap="cividis", + edgecolors="none", + ) + set_colorbar( + im, + axes_dict[f"cv_{n}"], + labelsize=5, + fig=axes_dict[f"cv_{n}"].figure, + rainbow=True, + axes_label="rainbow", + ) + axes_dict[f"cv_{n}"].axis("off") + + if show_data: + im = axes_dict[f"data_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=ensure_numpy_array(adata[:, index].X).flatten(), + cmap="cividis", + edgecolors="none", + ) + set_colorbar( + im, + axes_dict[f"data_{n}"], + labelsize=5, + fig=axes_dict[f"data_{n}"].figure, + rainbow=True, + axes_label="rainbow", + ) + axes_dict[f"data_{n}"].axis("off") + + +def set_labels_module( + axes_dict: Dict[str, Axes], + n: int, + gene: str, + number_of_genes: int, + ress: pd.DataFrame, + default_font_size: int | float = 7, + small_labelpad: int | float = 0.7, + title_background_color: str = "#F0F0F0", +): + if n == 0: + axes_dict[f"phase_{n}"].set_title( + # label=r"Predictive ($\hat{\mu}(\hat{s}), \hat{\mu}(\hat{u}))$" + # if matplotlib.rcParams["text.usetex"] + # else "Predictive samples (μ(s), μ(u))", + label=r"$(u, s)$ phase space", + fontsize=default_font_size + 1, + ) + axes_dict[f"dynamics_{n}"].set_title( + # label=r"Predictive ($ \hat{\mu}(t), \hat{\mu}(\hat{s}))$" + # if matplotlib.rcParams["text.usetex"] + # else "Predictive samples (μ(t), μ(s))", + label="Spliced dynamics", + fontsize=default_font_size + 1, + ) + axes_dict[f"predictive_{n}"].set_title( + # label=r"Predictive $\hat{\mu}(\hat{s})$" + # if matplotlib.rcParams["text.usetex"] + # else "Predictive samples μ(s)", + label="Predictive spliced", + fontsize=default_font_size + 1, + backgroundcolor=title_background_color, + ) + axes_dict[f"cv_{n}"].set_title( + # label=r"Predictive $\left.\hat{\sigma}(\hat{s}) \right/ \hat{\mu}(\hat{s})$" + # if matplotlib.rcParams["text.usetex"] + # else "Predictive samples σ/μ(s)", + label=r"Predictive uncertainty", + fontsize=default_font_size + 1, + backgroundcolor=title_background_color, + ) + if f"data_{n}" in axes_dict: + axes_dict[f"data_{n}"].set_title( + # label=r"$\log \hat{s}$" + # if matplotlib.rcParams["text.usetex"] + # else "log observed s", + label=r"Observed $\log_{e}$ spliced" + if matplotlib.rcParams["text.usetex"] + else "Observed log spliced", + fontsize=default_font_size + 1, + ) + + if n == number_of_genes - 1: + axes_dict[f"dynamics_{n}"].set_xlabel( + xlabel=r"shared time, $\hat{\mu}(t)$", + loc="left", + labelpad=small_labelpad, + fontsize=default_font_size, + ) + axes_dict[f"dynamics_{n}"].set_ylabel( + ylabel=r"spliced, $\hat{\mu}(s)$", + loc="bottom", + labelpad=small_labelpad, + fontsize=default_font_size, + ) + axes_dict[f"dynamics_{n}"].yaxis.set_label_position("right") + axes_dict[f"phase_{n}"].set_xlabel( + xlabel=r"spliced, $\hat{\mu}(s)$", + loc="left", + labelpad=small_labelpad, + fontsize=default_font_size, + ) + axes_dict[f"phase_{n}"].set_ylabel( + ylabel=r"unspliced, $\hat{\mu}(u)$", + loc="bottom", + labelpad=small_labelpad, + fontsize=default_font_size, + ) + axes_dict[f"phase_{n}"].yaxis.set_label_position("right") + else: + axes_dict[f"dynamics_{n}"].set_xlabel("") + axes_dict[f"phase_{n}"].set_xlabel("") + axes_dict[f"dynamics_{n}"].set_ylabel("") + axes_dict[f"phase_{n}"].set_ylabel("") + + axes_dict[f"gene_{n}"].text( + x=0.0, + y=0.5, + s=gene[:7], + fontsize=8, + weight="normal", + rotation=0, + va="center", + ha="center", + # transform=axes_dict[f"phase_{n}"].transAxes, + ) + # axes_dict[f"phase_{n}"].set_title(gene, fontsize=7) + # axes_dict[f"phase_{n}"].text( + # x=-0.4, + # y=0.5, + # s=gene, + # fontsize=8, + # weight="normal", + # rotation=90, + # va="center", + # ha="right", + # transform=axes_dict[f"phase_{n}"].transAxes, + # ) + + set_axis_limits_and_ticks( + ax_dynamics=axes_dict[f"dynamics_{n}"], + ax_phase=axes_dict[f"phase_{n}"], + ress=ress, + default_font_size=default_font_size, + ) + + +def set_axis_limits_and_ticks(ax_dynamics, ax_phase, ress, default_font_size=7): + major_tick_labels_scale_factor = 0.6 + x_ticks = [0, np.power(10, get_closest_pow_of_10(ress["spliced"].max()))] + y_ticks = [0, np.power(10, get_closest_pow_of_10(ress["unspliced"].max()))] + ax_phase.set_xticks(x_ticks) + ax_phase.set_yticks(y_ticks) + ax_phase.get_xaxis().set_major_formatter( + ticker.FuncFormatter( + lambda x, pos: "" if pos == 0 else construct_log_string(x) + ) + ) + ax_phase.get_yaxis().set_major_formatter( + ticker.FuncFormatter(lambda x, _: construct_log_string(x)) + ) + ax_phase.tick_params( + axis="both", + which="major", + labelsize=default_font_size * major_tick_labels_scale_factor, + ) + + x_ticks = [0, 1] + y_ticks = [0, np.power(10, get_closest_pow_of_10(ress["spliced"].max()))] + ax_dynamics.set_xticks(x_ticks) + ax_dynamics.set_yticks(y_ticks) + ax_dynamics.get_xaxis().set_major_formatter( + ticker.FuncFormatter(lambda x, pos: "" if pos == 0 else x) + ) + ax_dynamics.get_yaxis().set_major_formatter( + ticker.FuncFormatter(lambda x, _: construct_log_string(x)) + ) + ax_dynamics.tick_params( + axis="both", + which="major", + labelsize=default_font_size * major_tick_labels_scale_factor, + ) + + +def _set_axes_aspect(all_axes: Dict[str, Axes]) -> None: + for k, ax in all_axes.items(): + if "predictive" in k or "data" in k or "cv" in k: + ax.set_aspect("equal", adjustable="box") + else: + x_min, x_max = ax.get_xlim() + y_min, y_max = ax.get_ylim() + + x_range = x_max - x_min + y_range = y_max - y_min + + square_aspect_fraction = 0.65 + + ax.set_aspect( + aspect=(x_range / y_range) * square_aspect_fraction, + adjustable="box", + ) + + +# TODO: merge with rainbowplot_module @beartype def rainbowplot( volcano_data: DataFrame, @@ -32,10 +456,11 @@ def rainbowplot( num_genes: int = 5, add_line: bool = True, negative_correlation: bool = False, - scvelo_colors: bool = False, + state_info_colors: bool = False, save_plot: bool = False, show_data: bool = True, rainbow_plot_path: str | Path = "rainbow.pdf", + default_font_size: int = 7, ) -> FigureBase: set_font_size(7) @@ -62,8 +487,8 @@ def rainbowplot( else: ax = fig.subplots(number_of_genes, horizontal_panels) - if scvelo_colors: - colors = setup_scvelo_colors(adata, cell_state) + if state_info_colors: + colors = setup_state_info_colors(adata, cell_state) else: colors = setup_colors(adata, cell_state) @@ -78,11 +503,11 @@ def rainbowplot( ax4 = ax[n, 3] if n == 0: - ax1.set_title("Predictive dynamics", fontsize=7) - ax2.set_title("Phase portrait", fontsize=7) - ax3.set_title("Predictive spliced", fontsize=7) + ax1.set_title("Predictive dynamics", fontsize=default_font_size) + ax2.set_title("Phase portrait", fontsize=default_font_size) + ax3.set_title("Predictive spliced", fontsize=default_font_size) if show_data: - ax4.set_title("Log spliced data", fontsize=7) + ax4.set_title("Log spliced data", fontsize=default_font_size) plot_gene(ax1, ress, colors, add_line) scatterplot(ax2, ress, colors) @@ -93,6 +518,7 @@ def rainbowplot( s=3, c=st[:, index].flatten(), cmap="cividis", + edgecolors="none", ) set_colorbar(im, ax3, labelsize=5, fig=fig, rainbow=True) ax3.axis("off") @@ -103,6 +529,7 @@ def rainbowplot( s=3, c=ensure_numpy_array(adata.X[:, index]).flatten(), cmap="cividis", + edgecolors="none", ) set_colorbar(im, ax4, labelsize=5, fig=fig, rainbow=True) ax4.axis("off") @@ -127,7 +554,7 @@ def rainbowplot( return fig -def set_subfigure_titles(ax, n): +def set_subfigure_titles(ax, n, default_font_size): if n == 0: ax[0].set_title("Rainbow plot", fontsize=7) ax[1].set_title("Phase portrait", fontsize=7) @@ -146,10 +573,11 @@ def scatter_gene(ax, adata, st, gene, basis): s=3, c=st[:, index].flatten(), cmap="cividis", + edgecolors="none", ) -def adjust_subfigure(subfig): +def adjust_subfigure(subfig, default_font_size): subfig[0].subplots_adjust( hspace=0.8, wspace=1.4, left=0.32, right=0.94, top=0.92, bottom=0.12 ) @@ -192,7 +620,7 @@ def get_genes( ) -def setup_scvelo_colors(adata, cell_state, basis): +def setup_state_info_colors(adata, cell_state, basis): scv.pl.scatter( adata, basis=basis, @@ -217,7 +645,7 @@ def setup_colors(adata, cell_state): ) -def get_posterior_samples_mean(data, posterior_samples): +def get_posterior_samples_mean(data, posterior_samples) -> NDArray[Any]: if (data[0] in posterior_samples) and (data[1] in posterior_samples): st = posterior_samples[data[0]].mean(0).squeeze() ut = posterior_samples[data[1]].mean(0).squeeze() @@ -267,7 +695,7 @@ def plot_gene(ax1, ress, colors, add_line): ) -def set_labels(ax1, ax2, ax3, gene, ngenes, ress, n): +def set_labels(ax1, ax2, ax3, gene, ngenes, ress, n, default_font_size=7): if n == 0: ax3.set_title("Predictive spliced", fontsize=7) if n == ngenes - 1: @@ -326,7 +754,7 @@ def construct_log_string(x): return rf"{str_val}" -def scatterplot(ax2, ress, colors): +def scatterplot(ax, ress, colors): sns.scatterplot( x="spliced", y="unspliced", @@ -336,7 +764,7 @@ def scatterplot(ax2, ress, colors): edgecolor="none", hue="cell_type", palette=colors, - ax=ax2, + ax=ax, marker="o", legend=False, s=3, From 7b9f22a6adac235adf07147509647edcebd0d1f3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 14:37:11 -0400 Subject: [PATCH 088/177] refactor(plots): extract report subgrid plots Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/report.py | 154 +++++++++++++++++++------------ 1 file changed, 95 insertions(+), 59 deletions(-) diff --git a/src/pyrovelocity/plots/report.py b/src/pyrovelocity/plots/report.py index f46a41bdf..2cd2e4e52 100644 --- a/src/pyrovelocity/plots/report.py +++ b/src/pyrovelocity/plots/report.py @@ -6,12 +6,40 @@ from matplotlib.axes import Axes from matplotlib.figure import FigureBase from matplotlib.gridspec import GridSpec +from pandas import DataFrame +from pyrovelocity.analysis.analyze import top_mae_genes from pyrovelocity.io.compressedpickle import CompressedPickle +from pyrovelocity.plots._genes import plot_gene_ranking +from pyrovelocity.plots._parameters import ( + plot_parameter_posterior_distributions, +) +from pyrovelocity.plots._rainbow import rainbowplot_module as rainbowplot +from pyrovelocity.plots._vector_fields import plot_vector_field_summary from pyrovelocity.styles import configure_matplotlib_style +from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS +from pyrovelocity.utils import load_anndata_from_path configure_matplotlib_style() +adata = load_anndata_from_path("models/larry_model2/postprocessed.h5ad") +posterior_samples = CompressedPickle.load( + "models/larry_model2/pyrovelocity.pkl.zst" +) +volcano_data: DataFrame = posterior_samples["gene_ranking"] +vector_field_basis = "emb" +cell_state = "state_info" + +putative_marker_genes = top_mae_genes( + volcano_data=volcano_data, + mae_top_percentile=3, + min_genes_per_bin=3, +) +rainbow_genes = putative_marker_genes[:6] +rainbow_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] +putative_marker_genes = list(set(putative_marker_genes + rainbow_genes)) + + __all__ = [ "plot_main", "plot_subfigures", @@ -34,16 +62,11 @@ def create_main_figure( ) axes = {} - axes["ax1"] = fig.add_subplot(gs[0, :]) - axes["ax2"] = fig.add_subplot(gs[1, 0]) - axes["ax3"] = fig.add_subplot(gs[1, 1]) - axes["ax4"] = fig.add_subplot(gs[1, 2]) - axes["ax5"] = fig.add_subplot(gs[2, :]) for key, ax in axes.items(): ax.set_label(key) - return fig, axes + return fig, axes, gs def extract_subfigures( @@ -95,29 +118,61 @@ def plot_main( width = 8.5 - 1 height = (11 - 1) * 0.9 layout = { - "height_ratios": [0.1, 0.3, 0.6], + "height_ratios": [0.12, 0.28, 0.6], "width_ratios": [0.5, 0.25, 0.25], } - fig, axes = create_main_figure(width, height, layout) + fig, axes, gs = create_main_figure(width, height, layout) + plot_vector_field_summary( + adata=adata, + posterior_samples=posterior_samples, + vector_field_basis="emb", + cell_state="state_info", + state_color_dict=LARRY_CELL_TYPE_COLORS, + fig=fig, + gs=gs[0, :], + default_fontsize=7, + ) - plot_wide_row(axes["ax1"]) - plot_small_cell(axes["ax2"]) - plot_narrow_column(axes["ax3"]) - plot_narrow_column(axes["ax4"]) - plot_large_cell(axes["ax5"]) + plot_gene_ranking( + posterior_samples=posterior_samples, + adata=adata, + fig=fig, + gs=gs[1, 0], + selected_genes=putative_marker_genes, + rainbow_genes=rainbow_genes, + time_correlation_with="st", + show_marginal_histograms=False, + ) + plot_parameter_posterior_distributions( + posterior_samples=posterior_samples, + adata=adata, + geneset=rainbow_genes, + fig=fig, + gs=gs[1, 1:], + ) + rainbowplot( + volcano_data=volcano_data, + adata=adata, + posterior_samples=posterior_samples, + genes=rainbow_genes, + data=["st", "ut"], + basis=vector_field_basis, + cell_state=cell_state, + fig=fig, + gs=gs[2, :], + ) fig.tight_layout() - x_col1 = -0.015 - y_row2 = 0.87 + x_col1 = -0.005 + y_row2 = 0.84 add_panel_label(fig, "a", x_col1, 1.00) add_panel_label(fig, "b", x_col1, y_row2) - add_panel_label(fig, "c", 0.45, y_row2) - add_panel_label(fig, "d", 0.72, y_row2) - add_panel_label(fig, "e", x_col1, 0.57) + add_panel_label(fig, "c", 0.47, y_row2) + add_panel_label(fig, "d", x_col1, 0.57) - fig.savefig("example_plot_layout.pdf", format="pdf") + fig.savefig("example_plot_report.pdf", format="pdf") CompressedPickle.save(figure_file_path, fig) return fig @@ -127,20 +182,30 @@ def plot_subfigures(figure_file_path: Path | str = "main_figure.dill.zst"): fig = CompressedPickle.load(figure_file_path) buffer = dill.dumps(fig) - subfig1 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1"]) - subfig1.savefig("extracted_ax1.pdf", format="pdf") - - subfig23 = extract_subfigures(buffer=buffer, axes_to_keep=["ax2", "ax3"]) - subfig23.savefig("extracted_ax2_ax3.pdf", format="pdf") + subfig_parameter_posteriors = extract_subfigures( + buffer=buffer, + axes_to_keep=["vector_field"], + ) + subfig_parameter_posteriors.savefig( + "extracted_vector_field_summary.pdf", format="pdf" + ) - subfig34 = extract_subfigures(buffer=buffer, axes_to_keep=["ax3", "ax4"]) - subfig34.savefig("extracted_ax3_ax4.pdf", format="pdf") + subfig_parameter_posteriors = extract_subfigures( + buffer=buffer, + axes_to_keep=["parameter_posteriors"], + ) + subfig_parameter_posteriors.savefig( + "extracted_parameter_posteriors.pdf", format="pdf" + ) - subfig15 = extract_subfigures(buffer=buffer, axes_to_keep=["ax1", "ax5"]) - subfig15.savefig("extracted_ax1_ax5.pdf", format="pdf") + subfig_gene_selection = extract_subfigures( + buffer=buffer, + axes_to_keep=["gene_selection"], + ) + subfig_gene_selection.savefig("extracted_gene_selection.pdf", format="pdf") - subfig5 = extract_subfigures(buffer=buffer, axes_to_keep=["ax5"]) - subfig5.savefig("extracted_ax5.pdf", format="pdf") + subfig_rainbow = extract_subfigures(buffer=buffer, axes_to_keep=["rainbow"]) + subfig_rainbow.savefig("extracted_rainbow.pdf", format="pdf") def example_plot_manual(): @@ -233,35 +298,6 @@ def example_plot_manual(): fig_1.savefig("example_plot_layout_1.pdf", format="pdf") -def plot_wide_row( - ax: Axes, - title: str = "Wide Row", -): - ax.set_title(title) - - -def plot_small_cell( - ax: Axes, - title: str = "Small Cell", -): - ax.set_title(title) - ax.set_aspect("equal", adjustable="box") - - -def plot_narrow_column( - ax: Axes, - title: str = "Narrow Column", -): - ax.set_title(title) - - -def plot_large_cell( - ax: Axes, - title: str = "Large Cell", -): - ax.set_title(title) - - def add_panel_label( fig: FigureBase, label: str, From 03eea7072adfe81b6d4d7125340f825f3d22c5f1 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 23:29:47 -0400 Subject: [PATCH 089/177] fix(plots): parametrize rainbow plot default fontsize Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index 062ea4324..5415be76e 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -43,8 +43,9 @@ def rainbowplot_module( show_data: bool = True, rainbow_plot_path: str = "rainbow.pdf", dotsize: int = 1, + default_fontsize: int = 7, ) -> Tuple[Figure, Dict[str, Axes]]: - set_font_size(7) + set_font_size(default_fontsize) if genes is None: genes = get_genes(volcano_data, num_genes, negative_correlation) From c5a284df49faa3055b9005be24f521bf3ad1ad02 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 23:31:19 -0400 Subject: [PATCH 090/177] fix(plots): organize reporting function for use in summarization task Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/report.py | 298 ++++++++++++++----------------- 1 file changed, 137 insertions(+), 161 deletions(-) diff --git a/src/pyrovelocity/plots/report.py b/src/pyrovelocity/plots/report.py index 2cd2e4e52..bf3dfcdce 100644 --- a/src/pyrovelocity/plots/report.py +++ b/src/pyrovelocity/plots/report.py @@ -2,10 +2,12 @@ import dill import matplotlib.pyplot as plt -from beartype.typing import Dict, List, Optional, Tuple +from anndata import AnnData +from beartype.typing import Any, Dict, List, Optional, Tuple from matplotlib.axes import Axes from matplotlib.figure import FigureBase from matplotlib.gridspec import GridSpec +from numpy.typing import NDArray from pandas import DataFrame from pyrovelocity.analysis.analyze import top_mae_genes @@ -22,27 +24,9 @@ configure_matplotlib_style() -adata = load_anndata_from_path("models/larry_model2/postprocessed.h5ad") -posterior_samples = CompressedPickle.load( - "models/larry_model2/pyrovelocity.pkl.zst" -) -volcano_data: DataFrame = posterior_samples["gene_ranking"] -vector_field_basis = "emb" -cell_state = "state_info" - -putative_marker_genes = top_mae_genes( - volcano_data=volcano_data, - mae_top_percentile=3, - min_genes_per_bin=3, -) -rainbow_genes = putative_marker_genes[:6] -rainbow_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] -putative_marker_genes = list(set(putative_marker_genes + rainbow_genes)) - - __all__ = [ - "plot_main", - "plot_subfigures", + "plot_report", + "save_subfigures", ] @@ -69,52 +53,71 @@ def create_main_figure( return fig, axes, gs -def extract_subfigures( - buffer: Optional[bytes] = None, - axes_to_keep: List[str] = [], - main_fig: Optional[FigureBase] = None, - figure_file_path: Optional[str | Path] = None, +def plot_report( + adata: AnnData, + posterior_samples: Dict[str, NDArray[Any]], + volcano_data: DataFrame, + putative_marker_genes: List[str], + rainbow_genes: List[str], + figure_file_path: Path | str = "example_report_figure.dill.zst", + vector_field_basis: str = "emb", + cell_state: str = "state_info", + report_file_path: Path | str = "example_plot_report.pdf", ) -> FigureBase: """ - Extract a subset of axes from the main figure using dill for serialization. + Plot a report figure with multiple subplots and serialize the Figure object. Args: - main_fig: The main Figure object - axes_to_keep: List of axes keys to keep in the new figure + figure_file_path (Path | str, optional): + Figure object file. Defaults to "example_report_figure.dill.zst". + adata (AnnData, optional): + AnnData object. Defaults to adata. + posterior_samples (Dict[str, NDArray[Any]], optional): + Posterior samples dictionary. Defaults to posterior_samples. + volcano_data (DataFrame, optional): + Volcano data DataFrame. Defaults to volcano_data. + vector_field_basis (str, optional): + Vector field basis identifier. Defaults to "emb". + cell_state (str, optional): + Cell state identifier. Defaults to "state_info". + putative_marker_genes (List[str], optional): + List of putative marker genes. Defaults to putative_marker_genes. + rainbow_genes (List[str], optional): + List of genes to be included in report figure. Defaults to rainbow_genes. + report_file_path (Path | str, optional): + File to save report figure. Defaults to "example_plot_report.pdf". Returns: - A new Figure object with only the specified axes + FigureBase: Figure object containing the report figure. + + Examples: + >>> # xdoctest: +SKIP + >>> adata = load_anndata_from_path("models/larry_model2/postprocessed.h5ad") + >>> posterior_samples = CompressedPickle.load( + ... "models/larry_model2/pyrovelocity.pkl.zst" + ... ) + >>> volcano_data: DataFrame = posterior_samples["gene_ranking"] + >>> vector_field_basis = "emb" + >>> cell_state = "state_info" + >>> putative_marker_genes = top_mae_genes( + ... volcano_data=volcano_data, + ... mae_top_percentile=3, + ... min_genes_per_bin=3, + ... ) + >>> rainbow_genes = putative_marker_genes[:6] + >>> rainbow_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] + >>> putative_marker_genes = list(set(putative_marker_genes + rainbow_genes)) + >>> plot_report( + ... adata=adata, + ... posterior_samples=posterior_samples, + ... volcano_data=volcano_data, + ... putative_marker_genes=putative_marker_genes, + ... rainbow_genes=rainbow_genes, + ... vector_field_basis=vector_field_basis, + ... cell_state=cell_state, + ... report_file_path="example_plot_report.pdf", + ... ) """ - - if buffer: - subfig = dill.loads(buffer) - elif main_fig: - buffer = dill.dumps(main_fig) - subfig = dill.loads(buffer) - else: - raise ValueError("Either buffer or main_fig must be provided.") - - for text in subfig.texts[:]: - subfig.texts.remove(text) - - axes_to_remove = [ - ax for ax in subfig.axes if ax.get_label() not in axes_to_keep - ] - - for ax in axes_to_remove: - subfig.delaxes(ax) - - if figure_file_path: - with Path(figure_file_path).open("wb") as f: - dill.dump(subfig, f) - - return subfig - - -def plot_main( - figure_file_path: Path | str = "main_figure.dill.zst", -) -> FigureBase: - """Create an example plot with a custom layout and demonstrate subplot extraction.""" width = 8.5 - 1 height = (11 - 1) * 0.9 layout = { @@ -144,6 +147,7 @@ def plot_main( time_correlation_with="st", show_marginal_histograms=False, ) + plot_parameter_posterior_distributions( posterior_samples=posterior_samples, adata=adata, @@ -151,6 +155,7 @@ def plot_main( fig=fig, gs=gs[1, 1:], ) + rainbowplot( volcano_data=volcano_data, adata=adata, @@ -172,131 +177,102 @@ def plot_main( add_panel_label(fig, "c", 0.47, y_row2) add_panel_label(fig, "d", x_col1, 0.57) - fig.savefig("example_plot_report.pdf", format="pdf") + fig.savefig(report_file_path, format="pdf") CompressedPickle.save(figure_file_path, fig) return fig -def plot_subfigures(figure_file_path: Path | str = "main_figure.dill.zst"): +def extract_subfigures( + buffer: Optional[bytes] = None, + axes_to_keep: List[str] = [], + main_fig: Optional[FigureBase] = None, + figure_file_path: Optional[str | Path] = None, +) -> FigureBase: + """ + Extract a subset of axes from the main figure using dill for serialization. + + Args: + main_fig: The main Figure object + axes_to_keep: List of axes keys to keep in the new figure + + Returns: + A new Figure object with only the specified axes + """ + + if buffer: + subfig = dill.loads(buffer) + elif main_fig: + buffer = dill.dumps(main_fig) + subfig = dill.loads(buffer) + else: + raise ValueError("Either buffer or main_fig must be provided.") + + for text in subfig.texts[:]: + subfig.texts.remove(text) + + axes_to_remove = [ + ax for ax in subfig.axes if ax.get_label() not in axes_to_keep + ] + + for ax in axes_to_remove: + subfig.delaxes(ax) + + if figure_file_path: + with Path(figure_file_path).open("wb") as f: + dill.dump(subfig, f) + + return subfig + + +def save_subfigures( + figure_file_path: Path | str = "main_figure.dill.zst", + vector_field_summary_file_path: Path + | str = "extracted_vector_field_summary.pdf", + gene_selection_file_path: Path | str = "extracted_gene_selection.pdf", + parameter_posteriors_file_path: Path + | str = "extracted_parameter_posteriors.pdf", + rainbow_file_path: Path | str = "extracted_rainbow.pdf", +): fig = CompressedPickle.load(figure_file_path) buffer = dill.dumps(fig) - subfig_parameter_posteriors = extract_subfigures( + subfig_vector_field_summary = extract_subfigures( buffer=buffer, axes_to_keep=["vector_field"], ) - subfig_parameter_posteriors.savefig( - "extracted_vector_field_summary.pdf", format="pdf" + subfig_vector_field_summary.savefig( + fname=vector_field_summary_file_path, + format="pdf", ) - subfig_parameter_posteriors = extract_subfigures( + subfig_gene_selection = extract_subfigures( buffer=buffer, - axes_to_keep=["parameter_posteriors"], + axes_to_keep=["gene_selection"], ) - subfig_parameter_posteriors.savefig( - "extracted_parameter_posteriors.pdf", format="pdf" + subfig_gene_selection.savefig( + fname=gene_selection_file_path, + format="pdf", ) - subfig_gene_selection = extract_subfigures( + subfig_parameter_posteriors = extract_subfigures( buffer=buffer, - axes_to_keep=["gene_selection"], + axes_to_keep=["parameter_posteriors"], ) - subfig_gene_selection.savefig("extracted_gene_selection.pdf", format="pdf") - - subfig_rainbow = extract_subfigures(buffer=buffer, axes_to_keep=["rainbow"]) - subfig_rainbow.savefig("extracted_rainbow.pdf", format="pdf") - - -def example_plot_manual(): - """ - Create an example plot with a custom layout. - - Each subplot in the gridspec grid may be labeled with a panel label - whose location is given in Figure-level coordinates. - """ - n_rows = 3 - n_cols = 3 - width = 8.5 - 1 - height = (11 - 1) * 0.9 - row_1_fraction = 0.1 - row_2_fraction = 0.3 - row_3_fraction = 0.6 - - col_1_fraction = 0.5 - col_2_fraction = 0.25 - col_3_fraction = 0.25 - - fig = plt.figure(figsize=(width, height)) - gs = GridSpec( - figure=fig, - nrows=n_rows, - height_ratios=[ - row_1_fraction, - row_2_fraction, - row_3_fraction, - ], - ncols=n_cols, - width_ratios=[ - col_1_fraction, - col_2_fraction, - col_3_fraction, - ], + subfig_parameter_posteriors.savefig( + fname=parameter_posteriors_file_path, + format="pdf", ) - fig_1 = plt.figure( - figsize=( - (col_2_fraction + col_3_fraction) * width, - (row_2_fraction) * height, - ) + subfig_rainbow = extract_subfigures( + buffer=buffer, + axes_to_keep=["rainbow"], ) - gs_1 = GridSpec( - figure=fig, - nrows=1, - height_ratios=[row_2_fraction], - ncols=2, - width_ratios=[ - col_2_fraction, - col_3_fraction, - ], + subfig_rainbow.savefig( + fname=rainbow_file_path, + format="pdf", ) - ax1 = fig.add_subplot(gs[0, :]) - plot_wide_row(ax1) - fig2 = plt.figure() - ax = fig2.add_subplot(111) - plot_wide_row(ax) - - ax2 = fig.add_subplot(gs[1, 0]) - plot_small_cell(ax2) - - ax3 = fig.add_subplot(gs[1, 1]) - plot_narrow_column(ax3) - ax3_1 = fig_1.add_subplot(gs_1[0, 0]) - plot_narrow_column(ax3_1) - - ax4 = fig.add_subplot(gs[1, 2]) - plot_narrow_column(ax4) - ax4_1 = fig_1.add_subplot(gs_1[0, 1]) - plot_narrow_column(ax4_1) - - ax5 = fig.add_subplot(gs[2, :]) - plot_large_cell(ax5) - - fig.tight_layout() - fig_1.tight_layout() - - x_col1 = -0.015 - y_row2 = 0.87 - add_panel_label(fig, "a", x_col1, 1.00) - add_panel_label(fig, "b", x_col1, y_row2) - add_panel_label(fig, "c", 0.45, y_row2) - add_panel_label(fig, "d", 0.72, y_row2) - add_panel_label(fig, "e", x_col1, 0.57) - - fig.savefig("example_plot_layout.pdf", format="pdf") - fig_1.savefig("example_plot_layout_1.pdf", format="pdf") - def add_panel_label( fig: FigureBase, From 21543d5c208305c0302ae1ff23552066a43f10ff Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 4 Sep 2024 23:31:58 -0400 Subject: [PATCH 091/177] fix(tasks): reorganize summarize in preparation for integration of reporting module Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 76 ++++++++++++++--------------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index 7b22c8e29..e38dc078e 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -144,10 +144,7 @@ def summarize_dataset( phase_portraits_exist = ( len(os.listdir(posterior_phase_portraits_path)) > 0 ) - if ( - all(os.path.isfile(f) for f in output_filenames) - and phase_portraits_exist - ): + if all(os.path.isfile(f) for f in output_filenames): logger.info( "\n\t" + "\n\t".join(str(f) for f in output_filenames) @@ -187,7 +184,7 @@ def summarize_dataset( logger.info(f"Generating figure: {violin_clusters_log}") for fig_name in [violin_clusters_lin, violin_clusters_log]: cluster_violin_plots( - data_model, + data_model=data_model, adata=adata, posterior_samples=posterior_samples, cluster_key=cell_state, @@ -197,6 +194,24 @@ def summarize_dataset( fig_name=fig_name, ) + # phase portraint predictive plots + if phase_portraits_exist: + logger.info( + f"\nFiles exist in posterior phase portraits path:\n" + f"{posterior_phase_portraits_path}\n" + f"Remove this directory or all its files if you want to regenerate them.\n\n" + ) + else: + logger.info("Generating posterior predictive phase portrait plots") + posterior_curve( + adata=adata, + posterior_samples=posterior_samples, + gene_set=putative_marker_genes, + data_model=data_model, + model_path=model_path, + output_directory=posterior_phase_portraits_path, + ) + # ################## # save dataframes # ################## @@ -248,6 +263,7 @@ def summarize_dataset( shared_time_plot=shared_time_plot, ) + # extract putative marker genes logger.info(f"Searching for marker genes") putative_marker_genes = top_mae_genes( volcano_data=volcano_data, @@ -255,31 +271,13 @@ def summarize_dataset( min_genes_per_bin=3, ) - # phase portraint predictive plots - if phase_portraits_exist: - logger.info( - f"\nFiles exist in posterior phase portraits path:\n" - f"{posterior_phase_portraits_path}\n" - f"Remove this directory or all its files if you want to regenerate them.\n\n" - ) - else: - logger.info("Generating posterior predictive phase portrait plots") - posterior_curve( - adata=adata, - posterior_samples=posterior_samples, - gene_set=putative_marker_genes, - data_model=data_model, - model_path=model_path, - output_directory=posterior_phase_portraits_path, - ) - # volcano plot if os.path.isfile(volcano_plot): logger.info(f"{volcano_plot} exists") else: logger.info(f"Generating figure: {volcano_plot}") - volcano_data, fig = plot_gene_ranking( + plot_gene_ranking( posterior_samples=posterior_samples, adata=adata, selected_genes=putative_marker_genes, @@ -289,21 +287,6 @@ def summarize_dataset( volcano_plot_path=volcano_plot, ) - # gene selection summary plot - if os.path.isfile(gene_selection_summary_plot): - logger.info(f"{gene_selection_summary_plot} exists") - else: - logger.info(f"Generating figure: {gene_selection_summary_plot}") - plot_gene_selection_summary( - adata=adata, - posterior_samples=posterior_samples, - basis=vector_field_basis, - cell_state=cell_state, - plot_name=gene_selection_summary_plot, - selected_genes=putative_marker_genes, - show_marginal_histograms=False, - ) - # parameter uncertainty plot if os.path.isfile(parameter_uncertainty_plot): logger.info(f"{parameter_uncertainty_plot} exists") @@ -333,6 +316,21 @@ def summarize_dataset( rainbow_plot_path=gene_selection_rainbow_plot, ) + # gene selection summary plot + if os.path.isfile(gene_selection_summary_plot): + logger.info(f"{gene_selection_summary_plot} exists") + else: + logger.info(f"Generating figure: {gene_selection_summary_plot}") + plot_gene_selection_summary( + adata=adata, + posterior_samples=posterior_samples, + basis=vector_field_basis, + cell_state=cell_state, + plot_name=gene_selection_summary_plot, + selected_genes=putative_marker_genes, + show_marginal_histograms=False, + ) + # mean vector field plot if os.path.isfile(vector_field_plot): logger.info(f"{vector_field_plot} exists") From 8755cde6af7672d9fbcf53fdb0ad5e4505ac164c Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 22:12:28 -0400 Subject: [PATCH 092/177] feat(workflows): add selected genes configuration to data sets Signed-off-by: Cameron Smith --- .../workflows/main_configuration.py | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/src/pyrovelocity/workflows/main_configuration.py b/src/pyrovelocity/workflows/main_configuration.py index 92b361eea..ca7209d2a 100644 --- a/src/pyrovelocity/workflows/main_configuration.py +++ b/src/pyrovelocity/workflows/main_configuration.py @@ -158,6 +158,11 @@ class PostprocessConfiguration(DataClassJSONMixin): ) +@dataclass +class SummarizeConfiguration(DataClassJSONMixin): + selected_genes: list[str] = field(default_factory=lambda: [""]) + + @dataclass class WorkflowConfiguration(DataClassJSONMixin): download_dataset: DownloadDatasetInterface @@ -165,6 +170,7 @@ class WorkflowConfiguration(DataClassJSONMixin): training_configuration_1: PyroVelocityTrainInterface training_configuration_2: PyroVelocityTrainInterface postprocess_configuration: PostprocessConfiguration + summarize_configuration: SummarizeConfiguration training_resources_requests: ResourcesJSON training_resources_limits: ResourcesJSON postprocessing_resources_requests: ResourcesJSON @@ -259,12 +265,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): simulated_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +simulated_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "150", + "366", + "1853", + "1157", + "804", + "360", + ] +) simulated_configuration = WorkflowConfiguration( download_dataset=simulated_dataset_args, preprocess_data=simulated_preprocess_data_args, training_configuration_1=simulated_train_model1_args, training_configuration_2=simulated_train_model2_args, postprocess_configuration=simulated_postprocess_configuration, + summary_configuration=simulated_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=default_resource_requests, @@ -300,12 +317,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): pancreas_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +pancreas_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "Cpe", + "Ins2", + "Cck", + "Ttr", + "Krt7", + "Spp1", + ] +) pancreas_configuration = WorkflowConfiguration( download_dataset=pancreas_dataset_args, preprocess_data=pancreas_preprocess_data_args, training_configuration_1=pancreas_train_model1_args, training_configuration_2=pancreas_train_model2_args, postprocess_configuration=pancreas_postprocess_configuration, + summarize_configuration=pancreas_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -341,12 +369,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): bonemarrow_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +bonemarrow_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "ELANE", + "HDAC7", + "CITED2", + "SLC40A1", + "VPREB1", + "MYB", + ] +) bonemarrow_configuration = WorkflowConfiguration( download_dataset=bonemarrow_dataset_args, preprocess_data=bonemarrow_preprocess_data_args, training_configuration_1=bonemarrow_train_model1_args, training_configuration_2=bonemarrow_train_model2_args, postprocess_configuration=bonemarrow_postprocess_configuration, + summarize_configuration=bonemarrow_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -383,12 +422,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): pbmc5k_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +pbmc5k_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "LYZ", + "S100A9", + "IGHM", + "HLA-DQA1", + "MS4A1", + "IL32", + ] +) pbmc5k_configuration = WorkflowConfiguration( download_dataset=pbmc5k_dataset_args, preprocess_data=pbmc5k_preprocess_data_args, training_configuration_1=pbmc5k_train_model1_args, training_configuration_2=pbmc5k_train_model2_args, postprocess_configuration=pbmc5k_postprocess_configuration, + summarize_configuration=pbmc5k_summary_configuration, training_resources_requests=large_training_resource_requests, training_resources_limits=large_training_resource_limits, postprocessing_resources_requests=large_resource_requests, @@ -425,12 +475,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): pbmc10k_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +pbmc10k_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "LYZ", + "S100A9", + "IGHM", + "HLA-DQA1", + "MS4A1", + "IL32", + ] +) pbmc10k_configuration = WorkflowConfiguration( download_dataset=pbmc10k_dataset_args, preprocess_data=pbmc10k_preprocess_data_args, training_configuration_1=pbmc10k_train_model1_args, training_configuration_2=pbmc10k_train_model2_args, postprocess_configuration=pbmc10k_postprocess_configuration, + summarize_configuration=pbmc10k_summary_configuration, training_resources_requests=large_training_resource_requests, training_resources_limits=large_training_resource_limits, postprocessing_resources_requests=large_resource_requests, @@ -469,12 +530,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): pbmc68k_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +pbmc68k_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "TPT1", + "EEF1A1", + "LTB", + "GNLY", + "TMSB4X", + "FTL", + ] +) pbmc68k_configuration = WorkflowConfiguration( download_dataset=pbmc68k_dataset_args, preprocess_data=pbmc68k_preprocess_data_args, training_configuration_1=pbmc68k_train_model1_args, training_configuration_2=pbmc68k_train_model2_args, postprocess_configuration=pbmc68k_postprocess_configuration, + summarize_configuration=pbmc68k_summary_configuration, training_resources_requests=large_training_resource_requests, training_resources_limits=large_training_resource_limits, postprocessing_resources_requests=large_resource_requests, @@ -511,12 +583,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): pons_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +pons_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "Mag", + "Cldn11", + "Cntn1", + "Marcks", + "Tubb4a", + "Mbp", + ] +) pons_configuration = WorkflowConfiguration( download_dataset=pons_dataset_args, preprocess_data=pons_preprocess_data_args, training_configuration_1=pons_train_model1_args, training_configuration_2=pons_train_model2_args, postprocess_configuration=pons_postprocess_configuration, + summarize_configuration=pons_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -553,12 +636,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): larry_neu_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +larry_neu_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "S100a8", + "S100a9", + "Ngp", + "Lilrb4", + "Mpp1", + "Srgn", + ] +) larry_neu_configuration = WorkflowConfiguration( download_dataset=larry_neu_dataset_args, preprocess_data=larry_neu_preprocess_data_args, training_configuration_1=larry_neu_train_model1_args, training_configuration_2=larry_neu_train_model2_args, postprocess_configuration=larry_neu_postprocess_configuration, + summarize_configuration=larry_neu_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -595,12 +689,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): larry_mono_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +larry_mono_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "Vim", + "Fcer1g", + "Fth1", + "Ctsc", + "Itm2b", + "Sell", + ] +) larry_mono_configuration = WorkflowConfiguration( download_dataset=larry_mono_dataset_args, preprocess_data=larry_mono_preprocess_data_args, training_configuration_1=larry_mono_train_model1_args, training_configuration_2=larry_mono_train_model2_args, postprocess_configuration=larry_mono_postprocess_configuration, + summarize_configuration=larry_mono_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -637,12 +742,23 @@ class CombinedMetricsOutputs(DataClassJSONMixin): larry_multilineage_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +larry_multilineage_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "Itgb2", + "S100a9", + "Fcer1g", + "Lilrb4", + "Vim", + "Serbp1", + ] +) larry_multilineage_configuration = WorkflowConfiguration( download_dataset=larry_multilineage_dataset_args, preprocess_data=larry_multilineage_preprocess_data_args, training_configuration_1=larry_multilineage_train_model1_args, training_configuration_2=larry_multilineage_train_model2_args, postprocess_configuration=larry_multilineage_postprocess_configuration, + summarize_configuration=larry_multilineage_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=medium_resource_requests, @@ -681,6 +797,16 @@ class CombinedMetricsOutputs(DataClassJSONMixin): larry_postprocess_configuration = PostprocessConfiguration( number_posterior_samples=NUMBER_POSTERIOR_SAMPLES, ) +larry_summary_configuration = SummarizeConfiguration( + selected_genes=[ + "Itgb2", + "S100a8", + "Lyz2", + "Fcer1g", + "Csf2rb", + "Ms4a3", + ] +) larry_accelerator_type = "nvidia-tesla-a100" larry_configuration = WorkflowConfiguration( download_dataset=larry_dataset_args, @@ -688,6 +814,7 @@ class CombinedMetricsOutputs(DataClassJSONMixin): training_configuration_1=larry_train_model1_args, training_configuration_2=larry_train_model2_args, postprocess_configuration=larry_postprocess_configuration, + summarize_configuration=larry_summary_configuration, training_resources_requests=extra_large_training_resource_requests, training_resources_limits=extra_large_training_resource_limits, postprocessing_resources_requests=large_resource_requests, From 8f857693a9ac09e9c36b03bce4b88e339a960069 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 22:56:11 -0400 Subject: [PATCH 093/177] fix(plots): move reporting function imports to docstring Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/report.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/plots/report.py b/src/pyrovelocity/plots/report.py index bf3dfcdce..3ea1e8f9a 100644 --- a/src/pyrovelocity/plots/report.py +++ b/src/pyrovelocity/plots/report.py @@ -10,7 +10,6 @@ from numpy.typing import NDArray from pandas import DataFrame -from pyrovelocity.analysis.analyze import top_mae_genes from pyrovelocity.io.compressedpickle import CompressedPickle from pyrovelocity.plots._genes import plot_gene_ranking from pyrovelocity.plots._parameters import ( @@ -20,7 +19,6 @@ from pyrovelocity.plots._vector_fields import plot_vector_field_summary from pyrovelocity.styles import configure_matplotlib_style from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS -from pyrovelocity.utils import load_anndata_from_path configure_matplotlib_style() @@ -92,6 +90,10 @@ def plot_report( Examples: >>> # xdoctest: +SKIP + >>> from pyrovelocity.analysis.analyze import top_mae_genes + >>> from pyrovelocity.plots import plot_report + >>> from pyrovelocity.utils import load_anndata_from_path + ... >>> adata = load_anndata_from_path("models/larry_model2/postprocessed.h5ad") >>> posterior_samples = CompressedPickle.load( ... "models/larry_model2/pyrovelocity.pkl.zst" @@ -107,6 +109,7 @@ def plot_report( >>> rainbow_genes = putative_marker_genes[:6] >>> rainbow_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] >>> putative_marker_genes = list(set(putative_marker_genes + rainbow_genes)) + ... >>> plot_report( ... adata=adata, ... posterior_samples=posterior_samples, From 27d1c2c0d51174e357602586e210b2bebe5b41e0 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 22:58:23 -0400 Subject: [PATCH 094/177] refactor(plots): import reporting functions through plots package Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/__init__.py | 3 +++ src/pyrovelocity/plots/{report.py => _report.py} | 0 2 files changed, 3 insertions(+) rename src/pyrovelocity/plots/{report.py => _report.py} (100%) diff --git a/src/pyrovelocity/plots/__init__.py b/src/pyrovelocity/plots/__init__.py index 0097166dc..4021a376b 100644 --- a/src/pyrovelocity/plots/__init__.py +++ b/src/pyrovelocity/plots/__init__.py @@ -18,6 +18,7 @@ posterior_curve, ) from pyrovelocity.plots._rainbow import rainbowplot +from pyrovelocity.plots._report import plot_report, save_subfigures from pyrovelocity.plots._summary import plot_gene_selection_summary from pyrovelocity.plots._time import ( plot_posterior_time, @@ -40,6 +41,7 @@ "plot_lineage_fate_correlation", "plot_parameter_posterior_distributions", "plot_posterior_time", + "plot_report", "plot_shared_time_uncertainty", "plot_spliced_unspliced_histogram", "plot_state_uncertainty", @@ -48,4 +50,5 @@ "rainbowplot", "plot_vector_field_summary", "plot_gene_selection_summary", + "save_subfigures", ] diff --git a/src/pyrovelocity/plots/report.py b/src/pyrovelocity/plots/_report.py similarity index 100% rename from src/pyrovelocity/plots/report.py rename to src/pyrovelocity/plots/_report.py From bfb45992ec807cdf0fb36bbe57cf701e80137b61 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 22:59:28 -0400 Subject: [PATCH 095/177] fix(tasks): import reporting functions in summarize task Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index e38dc078e..008474816 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -15,10 +15,12 @@ plot_gene_ranking, plot_gene_selection_summary, plot_parameter_posterior_distributions, + plot_report, plot_shared_time_uncertainty, plot_vector_field_summary, posterior_curve, rainbowplot, + save_subfigures, ) from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import ( From 2b14a7ed6f4b9a04808f7c991b7b562da7a75837 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 23:10:04 -0400 Subject: [PATCH 096/177] refactor(plots): rename selected genes variable Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index 63f7b9480..a237d5e01 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -42,8 +42,8 @@ def plot_gene_ranking( ax: Optional[Axes] = None, gs: Optional[GridSpec | SubplotSpec] = None, time_correlation_with: str = "s", - selected_genes: Optional[List[str]] = None, - rainbow_genes: List[str] = [""], + putative_marker_genes: Optional[List[str]] = None, + selected_genes: List[str] = [""], assemble: bool = False, negative: bool = False, show_marginal_histograms: bool = False, @@ -52,17 +52,17 @@ def plot_gene_ranking( defaultfontsize=7, show_xy_labels: bool = False, ) -> Tuple[DataFrame, Optional[FigureBase]]: - if selected_genes is not None: - assert isinstance(selected_genes, (tuple, list)) - assert isinstance(selected_genes[0], str) + if putative_marker_genes is not None: + assert isinstance(putative_marker_genes, (tuple, list)) + assert isinstance(putative_marker_genes[0], str) volcano_data = posterior_samples["gene_ranking"] - genes = selected_genes + genes = putative_marker_genes elif "u" in posterior_samples: volcano_data, genes = compute_volcano_data( posterior_samples, adata, time_correlation_with, - selected_genes, + putative_marker_genes, negative, ) else: @@ -214,7 +214,7 @@ def plot_gene_ranking( volcano_data.loc[g, :].time_correlation, volcano_data.loc[g, :].mean_mae, s=15, - color=dark_orange if g in rainbow_genes else light_orange, + color=dark_orange if g in selected_genes else light_orange, marker="*", ) new_text = ax.text( From 44789898b5d0160bb6478ff61769ac6e497de73b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 5 Sep 2024 23:10:20 -0400 Subject: [PATCH 097/177] refactor(plots): rename selected genes variable in report Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 3ea1e8f9a..2b9e0f6ea 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -56,7 +56,7 @@ def plot_report( posterior_samples: Dict[str, NDArray[Any]], volcano_data: DataFrame, putative_marker_genes: List[str], - rainbow_genes: List[str], + selected_genes: List[str], figure_file_path: Path | str = "example_report_figure.dill.zst", vector_field_basis: str = "emb", cell_state: str = "state_info", @@ -80,8 +80,8 @@ def plot_report( Cell state identifier. Defaults to "state_info". putative_marker_genes (List[str], optional): List of putative marker genes. Defaults to putative_marker_genes. - rainbow_genes (List[str], optional): - List of genes to be included in report figure. Defaults to rainbow_genes. + selected_genes (List[str], optional): + List of genes to be included in report figure. Defaults to selected_genes. report_file_path (Path | str, optional): File to save report figure. Defaults to "example_plot_report.pdf". @@ -106,16 +106,16 @@ def plot_report( ... mae_top_percentile=3, ... min_genes_per_bin=3, ... ) - >>> rainbow_genes = putative_marker_genes[:6] - >>> rainbow_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] - >>> putative_marker_genes = list(set(putative_marker_genes + rainbow_genes)) + >>> selected_genes = putative_marker_genes[:6] + >>> selected_genes = ["Cyp11a1", "Csf2rb", "Osbpl8", "Lgals1", "Cmtm7", "Runx1"] + >>> putative_marker_genes = list(set(putative_marker_genes + selected_genes)) ... >>> plot_report( ... adata=adata, ... posterior_samples=posterior_samples, ... volcano_data=volcano_data, ... putative_marker_genes=putative_marker_genes, - ... rainbow_genes=rainbow_genes, + ... selected_genes=selected_genes, ... vector_field_basis=vector_field_basis, ... cell_state=cell_state, ... report_file_path="example_plot_report.pdf", @@ -145,8 +145,8 @@ def plot_report( adata=adata, fig=fig, gs=gs[1, 0], - selected_genes=putative_marker_genes, - rainbow_genes=rainbow_genes, + putative_marker_genes=putative_marker_genes, + selected_genes=selected_genes, time_correlation_with="st", show_marginal_histograms=False, ) @@ -154,7 +154,7 @@ def plot_report( plot_parameter_posterior_distributions( posterior_samples=posterior_samples, adata=adata, - geneset=rainbow_genes, + geneset=selected_genes, fig=fig, gs=gs[1, 1:], ) @@ -163,7 +163,7 @@ def plot_report( volcano_data=volcano_data, adata=adata, posterior_samples=posterior_samples, - genes=rainbow_genes, + genes=selected_genes, data=["st", "ut"], basis=vector_field_basis, cell_state=cell_state, From 8a93aa6a8a4b6769b1041c88d8f300812444879f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 00:54:52 -0400 Subject: [PATCH 098/177] fix(plots): disable text axes in self-generated figure Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index 5415be76e..b5448f809 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -103,24 +103,36 @@ def rainbowplot_module( def create_rainbow_figure( number_of_genes: int, show_data: bool, - st_std: bool = False, + st_std: bool = True, ) -> Tuple[Figure, Dict[str, Axes]]: subplot_height = 0.9 - horizontal_panels = 5 if show_data else 4 + horizontal_panels = 6 if show_data else 5 subplot_width = 1.5 * subplot_height * horizontal_panels fig = plt.figure(figsize=(subplot_width, subplot_height * number_of_genes)) - gs = GridSpec(number_of_genes, horizontal_panels, figure=fig) + gs = GridSpec( + nrows=number_of_genes, + ncols=horizontal_panels, + figure=fig, + width_ratios=[ + 0.21, + [1] * (horizontal_panels - 1), + ], + wspace=0.2, + hspace=0.2, + ) axes_dict = {} for n in range(number_of_genes): - axes_dict[f"phase_{n}"] = fig.add_subplot(gs[n, 0]) - axes_dict[f"dynamics_{n}"] = fig.add_subplot(gs[n, 1]) - axes_dict[f"predictive_{n}"] = fig.add_subplot(gs[n, 2]) + axes_dict[f"gene_{n}"] = fig.add_subplot(gs[n, 0]) + axes_dict[f"gene_{n}"].axis("off") + axes_dict[f"phase_{n}"] = fig.add_subplot(gs[n, 1]) + axes_dict[f"dynamics_{n}"] = fig.add_subplot(gs[n, 2]) + axes_dict[f"predictive_{n}"] = fig.add_subplot(gs[n, 3]) if show_data: - axes_dict[f"data_{n}"] = fig.add_subplot(gs[n, 3]) + axes_dict[f"data_{n}"] = fig.add_subplot(gs[n, 4]) if st_std: - axes_dict[f"cv_{n}"] = fig.add_subplot(gs[n, 4]) + axes_dict[f"cv_{n}"] = fig.add_subplot(gs[n, 5]) return fig, axes_dict From b467baf5eea6754b225b8f0ca62730e2f3afb6a2 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 00:55:40 -0400 Subject: [PATCH 099/177] nit(plots): reorder report arguments and produce png output Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 2b9e0f6ea..207100784 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -57,10 +57,10 @@ def plot_report( volcano_data: DataFrame, putative_marker_genes: List[str], selected_genes: List[str], - figure_file_path: Path | str = "example_report_figure.dill.zst", vector_field_basis: str = "emb", cell_state: str = "state_info", report_file_path: Path | str = "example_plot_report.pdf", + figure_file_path: Path | str = "example_report_figure.dill.zst", ) -> FigureBase: """ Plot a report figure with multiple subplots and serialize the Figure object. @@ -128,6 +128,24 @@ def plot_report( "width_ratios": [0.5, 0.25, 0.25], } + selected_genes_in_adata = list( + set(selected_genes).intersection(adata.var.index) + ) + + while len(selected_genes_in_adata) < 6: + for gene in putative_marker_genes: + if gene not in selected_genes_in_adata and gene in adata.var.index: + selected_genes_in_adata.append(gene) + if len(selected_genes_in_adata) == 6: + break + + extended_putative_marker_genes = list( + set(putative_marker_genes + selected_genes_in_adata) + ) + + selected_genes = selected_genes_in_adata + putative_marker_genes = extended_putative_marker_genes + fig, axes, gs = create_main_figure(width, height, layout) plot_vector_field_summary( adata=adata, @@ -181,6 +199,7 @@ def plot_report( add_panel_label(fig, "d", x_col1, 0.57) fig.savefig(report_file_path, format="pdf") + fig.savefig(f"{report_file_path}.png", format="png") CompressedPickle.save(figure_file_path, fig) return fig From 2808a981ef54beb9eb0a1df0ed38f634bbaf1095 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 00:57:09 -0400 Subject: [PATCH 100/177] fix(tasks): use report instead of plot gene summary Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index 008474816..7348b90c6 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -19,9 +19,9 @@ plot_shared_time_uncertainty, plot_vector_field_summary, posterior_curve, - rainbowplot, save_subfigures, ) +from pyrovelocity.plots._rainbow import rainbowplot_module as rainbowplot from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS from pyrovelocity.utils import ( save_anndata_counts_to_dataframe, @@ -44,6 +44,7 @@ def summarize_dataset( vector_field_basis: str, reports_path: str | Path = "reports", enable_experimental_plots: bool = False, + selected_genes: list[str] = [""], ) -> Tuple[Path, Path]: """ Construct summary plots for each data set and model. @@ -287,6 +288,7 @@ def summarize_dataset( show_marginal_histograms=True, save_volcano_plot=True, volcano_plot_path=volcano_plot, + show_xy_labels=True, ) # parameter uncertainty plot @@ -323,14 +325,17 @@ def summarize_dataset( logger.info(f"{gene_selection_summary_plot} exists") else: logger.info(f"Generating figure: {gene_selection_summary_plot}") - plot_gene_selection_summary( + + plot_report( adata=adata, posterior_samples=posterior_samples, - basis=vector_field_basis, + volcano_data=volcano_data, + putative_marker_genes=putative_marker_genes, + selected_genes=selected_genes, + vector_field_basis=vector_field_basis, cell_state=cell_state, - plot_name=gene_selection_summary_plot, - selected_genes=putative_marker_genes, - show_marginal_histograms=False, + report_file_path=gene_selection_summary_plot, + figure_file_path=f"{gene_selection_summary_plot}.dill.zst", ) # mean vector field plot From bbafdfd7ec279c7b62b41fb74354a1e802cd883b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 00:57:34 -0400 Subject: [PATCH 101/177] fix(workflows): use correct WorkflowConfiguration field name Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/workflows/main_configuration.py b/src/pyrovelocity/workflows/main_configuration.py index ca7209d2a..1353d992c 100644 --- a/src/pyrovelocity/workflows/main_configuration.py +++ b/src/pyrovelocity/workflows/main_configuration.py @@ -281,7 +281,7 @@ class CombinedMetricsOutputs(DataClassJSONMixin): training_configuration_1=simulated_train_model1_args, training_configuration_2=simulated_train_model2_args, postprocess_configuration=simulated_postprocess_configuration, - summary_configuration=simulated_summary_configuration, + summarize_configuration=simulated_summary_configuration, training_resources_requests=default_training_resource_requests, training_resources_limits=default_training_resource_limits, postprocessing_resources_requests=default_resource_requests, From 46d4df1663a13f41b6b264dfd320ce599db3433d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 00:59:13 -0400 Subject: [PATCH 102/177] fix(workflows): use SummarizeConfiguration to access selected genes Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 3e06d03e8..9a1aa9871 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -52,6 +52,7 @@ PostprocessOutputs, PreprocessOutputs, ResourcesJSON, + SummarizeConfiguration, SummarizeOutputs, TrainingOutputs, WorkflowConfiguration, @@ -263,6 +264,7 @@ def summarize_data( preprocess_data_args: PreprocessDataInterface, postprocessing_outputs: PostprocessOutputs, training_outputs: TrainingOutputs, + summarize_configuration: SummarizeConfiguration, ) -> SummarizeOutputs: model_path = training_outputs.model_path.download() pyrovelocity_data_path = postprocessing_outputs.pyrovelocity_data.download() @@ -288,6 +290,7 @@ def summarize_data( postprocessed_data_path=postprocessed_data_path, cell_state=preprocess_data_args.cell_state, vector_field_basis=preprocess_data_args.vector_field_basis, + selected_genes=summarize_configuration.selected_genes, ) print( f"\ndata_model_reports_path: {data_model_reports_path}\n", @@ -397,6 +400,7 @@ def map_model_configurations_over_data_set( train_model_configuration_1: PyroVelocityTrainInterface = PyroVelocityTrainInterface(), train_model_configuration_2: PyroVelocityTrainInterface = PyroVelocityTrainInterface(), postprocess_configuration: PostprocessConfiguration = PostprocessConfiguration(), + summarize_configuration: SummarizeConfiguration = SummarizeConfiguration(), train_model_resource_requests: ResourcesJSON = default_training_resource_requests, train_model_resource_limits: ResourcesJSON = default_training_resource_limits, postprocessing_resource_requests: ResourcesJSON = default_resource_requests, @@ -471,6 +475,7 @@ def map_model_configurations_over_data_set( preprocess_data_args=preprocess_data_args, postprocessing_outputs=postprocessing_output, training_outputs=training_output, + summarize_configuration=summarize_configuration, ).with_overrides( requests=Resources(**asdict(summarizing_resource_requests)), limits=Resources(**asdict(summarizing_resource_limits)), @@ -753,6 +758,7 @@ def training_workflow( train_model_configuration_1=config.training_configuration_1, train_model_configuration_2=config.training_configuration_2, postprocess_configuration=config.postprocess_configuration, + summarize_configuration=config.summarize_configuration, train_model_resource_requests=config.training_resources_requests, train_model_resource_limits=config.training_resources_limits, postprocessing_resource_requests=config.postprocessing_resources_requests, From b602d2be5e1457d8af4cdbff568b47d735b49993 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 01:01:18 -0400 Subject: [PATCH 103/177] chore(workflows): bump postprocess cache `2024.8.15.1` Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 9a1aa9871..632b56d7f 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -90,9 +90,9 @@ DOWNLOAD_CACHE_VERSION = f"{CACHE_VERSION}.0" PREPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" TRAIN_CACHE_VERSION = f"{CACHE_VERSION}.0" -POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" -SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.1" -UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.5" +POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.1" +SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.2" +UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.6" LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.5" COMBINE_METRICS_CACHE_VERSION = f"{CACHE_VERSION}.5" DEFAULT_ACCELERATOR_TYPE: GPUAccelerator = T4 @@ -743,7 +743,11 @@ def training_workflow( ] configurations = [ - (simulated_configuration, "simulated"), + (larry_mono_configuration, "larry_mono"), + (larry_neu_configuration, "larry_neu"), + (larry_multilineage_configuration, "larry_multilineage"), + (larry_configuration, "larry"), + # (simulated_configuration, "simulated"), ] if not PYROVELOCITY_DATA_SUBSET: From 40b57d2af591d85cf09ef36b9fc5fd8080d06765 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 01:21:21 -0400 Subject: [PATCH 104/177] fix(plots): unpack width ratios in rainbow plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index b5448f809..8a9265fe8 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -116,7 +116,7 @@ def create_rainbow_figure( figure=fig, width_ratios=[ 0.21, - [1] * (horizontal_panels - 1), + *([1] * (horizontal_panels - 1)), ], wspace=0.2, hspace=0.2, From 5aab2a59d175fc0fc82b5de303e329d73a3fba56 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 01:39:50 -0400 Subject: [PATCH 105/177] fix(plots): parameterize state color dictionary Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 207100784..6754960e4 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -59,6 +59,7 @@ def plot_report( selected_genes: List[str], vector_field_basis: str = "emb", cell_state: str = "state_info", + state_color_dict: Optional[Dict[str, str]] = None, report_file_path: Path | str = "example_plot_report.pdf", figure_file_path: Path | str = "example_report_figure.dill.zst", ) -> FigureBase: @@ -118,6 +119,7 @@ def plot_report( ... selected_genes=selected_genes, ... vector_field_basis=vector_field_basis, ... cell_state=cell_state, + ... state_color_dict=LARRY_CELL_TYPE_COLORS, ... report_file_path="example_plot_report.pdf", ... ) """ @@ -150,9 +152,9 @@ def plot_report( plot_vector_field_summary( adata=adata, posterior_samples=posterior_samples, - vector_field_basis="emb", - cell_state="state_info", - state_color_dict=LARRY_CELL_TYPE_COLORS, + vector_field_basis=vector_field_basis, + cell_state=cell_state, + state_color_dict=state_color_dict, fig=fig, gs=gs[0, :], default_fontsize=7, From e5b9719a489b78403ccd69700a59dfe7d71f17ee Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 01:40:07 -0400 Subject: [PATCH 106/177] fix(tasks): use parameterized state color dictionary Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index 7348b90c6..9052b37b4 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -334,6 +334,9 @@ def summarize_dataset( selected_genes=selected_genes, vector_field_basis=vector_field_basis, cell_state=cell_state, + state_color_dict=LARRY_CELL_TYPE_COLORS + if "larry" in data_model + else None, report_file_path=gene_selection_summary_plot, figure_file_path=f"{gene_selection_summary_plot}.dill.zst", ) From 9ef2a766ff00d1185ea794e160ac7ecefa273072 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 01:41:56 -0400 Subject: [PATCH 107/177] fix(workflows): reset configurations Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 632b56d7f..570db4df9 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -743,11 +743,7 @@ def training_workflow( ] configurations = [ - (larry_mono_configuration, "larry_mono"), - (larry_neu_configuration, "larry_neu"), - (larry_multilineage_configuration, "larry_multilineage"), - (larry_configuration, "larry"), - # (simulated_configuration, "simulated"), + (simulated_configuration, "simulated"), ] if not PYROVELOCITY_DATA_SUBSET: From 021766096a0287dfc0f38fc2067fa1605f34220d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 09:46:59 -0400 Subject: [PATCH 108/177] fix(models): retain gene ranking data for all genes Signed-off-by: Cameron Smith --- src/pyrovelocity/models/_velocity.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pyrovelocity/models/_velocity.py b/src/pyrovelocity/models/_velocity.py index e6346023e..b806c06b3 100644 --- a/src/pyrovelocity/models/_velocity.py +++ b/src/pyrovelocity/models/_velocity.py @@ -505,11 +505,9 @@ def compute_statistics_from_posterior_samples( gene_ranking, genes = compute_volcano_data( posterior_samples, adata, time_correlation_with="st" ) - gene_ranking = ( - gene_ranking.sort_values("mean_mae", ascending=False) - .head(300) - .sort_values("time_correlation", ascending=False) - ) + gene_ranking = gene_ranking.sort_values( + "mean_mae", ascending=False + ).sort_values("time_correlation", ascending=False) posterior_samples["gene_ranking"] = gene_ranking posterior_samples[ "original_spaces_embeds_magnitude" From 0267bc465f77b88f8d58d51c58c6e3882e7bfed0 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 09:47:53 -0400 Subject: [PATCH 109/177] chore(workflows): bump postprocess cache `2024.8.15.2` Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 570db4df9..ee6d70aa8 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -90,7 +90,7 @@ DOWNLOAD_CACHE_VERSION = f"{CACHE_VERSION}.0" PREPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" TRAIN_CACHE_VERSION = f"{CACHE_VERSION}.0" -POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.1" +POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.2" SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.2" UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.6" LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.5" From 4b5a75b5a650d3943ca7e254b39f890bada0f879 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 10:37:33 -0400 Subject: [PATCH 110/177] feat(io): check and log error for mismatching data download hashes Signed-off-by: Cameron Smith --- src/pyrovelocity/io/datasets.py | 95 ++++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 18 deletions(-) diff --git a/src/pyrovelocity/io/datasets.py b/src/pyrovelocity/io/datasets.py index ea9990d0c..03dd70af2 100644 --- a/src/pyrovelocity/io/datasets.py +++ b/src/pyrovelocity/io/datasets.py @@ -1,3 +1,4 @@ +import os from pathlib import Path import anndata @@ -43,7 +44,10 @@ def pbmc5k( """ url = "https://storage.googleapis.com/pyrovelocity/data/pbmc5k.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "349028bdf7992f5b196a3c4efd7a83cebdf0624d3d42a712628967dad608ad35" + ) + _check_hash(file_path, expected_hash) return adata @@ -61,7 +65,10 @@ def pbmc10k( """ url = "https://storage.googleapis.com/pyrovelocity/data/pbmc10k.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "267d1d2710251a68413fcb82fa03f9bcfe8fe33a6bae05117603da983ebe2c5b" + ) + _check_hash(file_path, expected_hash) return adata @@ -80,7 +87,10 @@ def pons( """ url = "https://storage.googleapis.com/pyrovelocity/data/oligo_lite.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "d3a3286a6f33c307aca20bcbb127abb6ac52dbf6c968ee24df6ed9584b857de0" + ) + _check_hash(file_path, expected_hash) return adata @@ -99,7 +109,10 @@ def larry( """ url = "https://figshare.com/ndownloader/files/37028569" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "7f567427f591e85678580ebaa8b1e59aae51e9be63864a68ef9e905a0cbe8575" + ) + _check_hash(file_path, expected_hash) return adata @@ -122,7 +135,10 @@ def larry_neu( adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) adata = adata[adata.obs.state_info != "Centroid", :] adata.write(file_path) - _log_hash(file_path) + expected_hash = ( + "384784699c10e192677c006bb407aaedbdf3e3c66f1ca1f4d8d1284ddf8fa436" + ) + _check_hash(file_path, expected_hash) return adata @@ -144,7 +160,10 @@ def larry_mono( adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) adata = adata[adata.obs.state_info != "Centroid", :] adata.write(file_path) - _log_hash(file_path) + expected_hash = ( + "75e59aa7f0d47d2d013dc7444f89a858363110ba32d7a576ac3dc819cac0afa8" + ) + _check_hash(file_path, expected_hash) return adata @@ -162,7 +181,10 @@ def larry_cospar( """ url = "https://storage.googleapis.com/pyrovelocity/data/larry_cospar.h5ad" adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "cdf2ff25c4e3222122beeff2da65539ba7541f4426547f4622813874fd9be070" + ) + _check_hash(file_path, expected_hash) return adata @@ -182,7 +204,10 @@ def larry_cytotrace( "https://storage.googleapis.com/pyrovelocity/data/larry_cytotrace.h5ad" ) adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "fdaa99408f93c52d993cd47bf7997f5c01f7cb88be1824864075c67afb04b625" + ) + _check_hash(file_path, expected_hash) return adata @@ -202,7 +227,10 @@ def larry_dynamical( "https://storage.googleapis.com/pyrovelocity/data/larry_dynamical.h5ad" ) adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - _log_hash(file_path) + expected_hash = ( + "d3808463203f3d0a8fd1eb76ac723d8e6ab939223eb528434c3e38926a460863" + ) + _check_hash(file_path, expected_hash) return adata @@ -222,7 +250,10 @@ def larry_tips( adata = adata[adata.obs["time_info"] == 6.0] adata = adata[adata.obs["state_info"] != "Undifferentiated"] adata.write(file_path) - _log_hash(file_path) + expected_hash = ( + "e04e9d0b82651d170c93aaa9a1a0f764c91a986d8ae97d9401b4ee6c496f492c" + ) + _check_hash(file_path, expected_hash) return adata @@ -242,7 +273,10 @@ def larry_multilineage( adata_larry_neu = larry_neu() adata = adata_larry_mono.concatenate(adata_larry_neu) adata.write(file_path) - _log_hash(file_path) + expected_hash = ( + "9add35ae4f736aa5e11d076eadb3b1d842dbc88102047f029bd7fa0929f46be0" + ) + _check_hash(file_path, expected_hash) return adata @@ -265,7 +299,10 @@ def pancreas( Returns `AnnData` object """ adata = scv.datasets.pancreas(file_path=file_path) - _log_hash(file_path) + expected_hash = ( + "9e3e459eca00ba06b496ec80def32941b5b2889918720e3e7aa6ffb811fbe7c6" + ) + _check_hash(file_path, expected_hash) return adata @@ -288,7 +325,10 @@ def bonemarrow( Returns `AnnData` object """ adata = scv.datasets.bonemarrow(file_path=file_path) - _log_hash(file_path) + expected_hash = ( + "12222efe4a9dd5916fa279860a2a4fdec383bd2e0db0249a1cd18c549c4a4c2c" + ) + _check_hash(file_path, expected_hash) return adata @@ -310,14 +350,33 @@ def pbmc68k( Returns: Returns `AnnData` object """ - adata = scv.datasets.pbmc68k(file_path=file_path) - scv.pp.remove_duplicate_cells(adata) - adata.obsm["X_tsne"][:, 0] *= -1 - adata.write(file_path) - _log_hash(file_path) + if os.path.isfile(file_path): + adata = scv.datasets.pbmc68k(file_path=file_path) + else: + adata = scv.datasets.pbmc68k(file_path=file_path) + scv.pp.remove_duplicate_cells(adata) + adata.obsm["X_tsne"][:, 0] *= -1 + adata.write(file_path) + expected_hash = ( + "c6ce6ca3dac3b97012d12c7a5e5ec1953bbd2ad5535538b0ef549f54d9276f0b" + ) + _check_hash(file_path, expected_hash) return adata +@beartype +def _check_hash(file_path: str | Path, expected_hash: str) -> None: + actual_hash = _log_hash(file_path) + if actual_hash != expected_hash: + logger.error( + f"\nHash mismatch for {file_path}.\n" + f"Expected: {expected_hash}\n" + f"Actual: {actual_hash}" + ) + else: + logger.info(f"\nHash check passed: {file_path}") + + @beartype def _log_hash(file_path: str | Path) -> str: adata_hash = hash_file(file_path=file_path) From b0d0e76acc63ca690eea9b886dc837722e4b0e56 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:10:19 -0400 Subject: [PATCH 111/177] fix(analysis): add max genes per bin argument to top_mae_genes Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index 13bc6f20f..e0ae1657f 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -336,6 +336,7 @@ def top_mae_genes( volcano_data: pd.DataFrame, mae_top_percentile: int | float = 10.0, min_genes_per_bin: int = 2, + max_genes_per_bin: Optional[int] = None, ) -> List[str]: """ Identify top genes based on Mean Absolute Error (MAE) percentile, excluding ribosomal genes, @@ -345,6 +346,7 @@ def top_mae_genes( volcano_data (pd.DataFrame): DataFrame containing MAE and time correlation mae_top_percentile (float): Percentile threshold for selecting top MAE genes (0-100) min_genes_per_bin (int): Minimum number of genes to select from each bin + max_genes_per_bin (Optional[int]): Maximum number of genes to select from each bin Returns: List[str]: List of gene indices from volcano_data, sorted by time correlation. @@ -353,6 +355,10 @@ def top_mae_genes( raise ValueError("mae_top_percentile must be between 0 and 100") if min_genes_per_bin < 0: raise ValueError("min_genes_per_bin must be non-negative") + if max_genes_per_bin is not None and max_genes_per_bin < min_genes_per_bin: + raise ValueError( + "max_genes_per_bin must be greater than or equal to min_genes_per_bin" + ) filtered_data = volcano_data[ ~volcano_data.index.str.contains(("^Rpl|^Rps"), case=False) @@ -381,6 +387,13 @@ def top_mae_genes( if len(top_genes_in_bin) < min_genes_per_bin: top_genes_in_bin = bin_data.nlargest(min_genes_per_bin, "mean_mae") + elif ( + max_genes_per_bin is not None + and len(top_genes_in_bin) > max_genes_per_bin + ): + top_genes_in_bin = top_genes_in_bin.nlargest( + max_genes_per_bin, "mean_mae" + ) selected_genes.append(top_genes_in_bin) @@ -394,7 +407,8 @@ def top_mae_genes( logger.info( f"\nSelected {len(gene_indices)} genes based on top {mae_top_percentile}% MAE " - f"from 8 time correlation bins, with a minimum of {min_genes_per_bin} genes per bin, " + f"from 8 time correlation bins, with a minimum of {min_genes_per_bin} genes per bin" + f"{f' and a maximum of {max_genes_per_bin} genes per bin' if max_genes_per_bin else ''}, " f"sorted by time correlation:\n\n" f" {gene_indices}\n\n" ) From 1952b43a69d70ccfee80c3258799c07dbc5de510 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:11:13 -0400 Subject: [PATCH 112/177] fix(tasks): set top mae genes max genes per bin to 5 Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index 9052b37b4..401773501 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -272,6 +272,7 @@ def summarize_dataset( volcano_data=volcano_data, mae_top_percentile=3, min_genes_per_bin=3, + max_genes_per_bin=5, ) # volcano plot From a77f19e216fb0024118dbea5aef746a583b4513b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:11:42 -0400 Subject: [PATCH 113/177] fix(workflows): upload figure object files Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index ee6d70aa8..87f813ffe 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -372,6 +372,7 @@ def upload_summary( ".json", ".pdf", ".png", + ".dill.zst", ), ) From 917ee7f66589182ea82331de85d9147832463dba Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:15:11 -0400 Subject: [PATCH 114/177] fix(plots): use black box plots Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index 501b88d0f..7ce5833a7 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -158,7 +158,7 @@ def plot_parameter_posterior_distributions( inner_kws=dict( box_width=1.5, whis_width=0.75, - color=".8", + color="1", ), log_scale=log_base, ) From 890244b3f8e4a113fd44d0c818ac1ab130812fb3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:17:47 -0400 Subject: [PATCH 115/177] fix(analysis): parameterize top mae genes gene filter Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index e0ae1657f..d06db3fb5 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -337,6 +337,7 @@ def top_mae_genes( mae_top_percentile: int | float = 10.0, min_genes_per_bin: int = 2, max_genes_per_bin: Optional[int] = None, + gene_name_filter: str = "^Act|^Rpl|^Rps", ) -> List[str]: """ Identify top genes based on Mean Absolute Error (MAE) percentile, excluding ribosomal genes, @@ -361,7 +362,7 @@ def top_mae_genes( ) filtered_data = volcano_data[ - ~volcano_data.index.str.contains(("^Rpl|^Rps"), case=False) + ~volcano_data.index.str.contains((gene_name_filter), case=False) ] filtered_data["time_corr_bin"] = pd.cut( From 4cd2ac755d9fa68d6b2e71b8bcbf93e31aeed88f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:27:37 -0400 Subject: [PATCH 116/177] fix(plots): retain order of selected genes in report Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 6754960e4..fedb1202a 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -130,20 +130,26 @@ def plot_report( "width_ratios": [0.5, 0.25, 0.25], } - selected_genes_in_adata = list( - set(selected_genes).intersection(adata.var.index) - ) + selected_genes_in_adata = [ + gene for gene in selected_genes if gene in adata.var.index + ] - while len(selected_genes_in_adata) < 6: - for gene in putative_marker_genes: - if gene not in selected_genes_in_adata and gene in adata.var.index: - selected_genes_in_adata.append(gene) - if len(selected_genes_in_adata) == 6: - break + additional_genes = [ + gene + for gene in putative_marker_genes + if gene not in selected_genes_in_adata and gene in adata.var.index + ] - extended_putative_marker_genes = list( - set(putative_marker_genes + selected_genes_in_adata) - ) + while len(selected_genes_in_adata) < 6 and additional_genes: + selected_genes_in_adata.append(additional_genes.pop(0)) + + extended_putative_marker_genes = selected_genes_in_adata.copy() + for gene in putative_marker_genes: + if ( + gene not in extended_putative_marker_genes + and gene in adata.var.index + ): + extended_putative_marker_genes.append(gene) selected_genes = selected_genes_in_adata putative_marker_genes = extended_putative_marker_genes From 73352bf5273072510d083d717776a093a1754bd9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 11:58:36 -0400 Subject: [PATCH 117/177] fix(tasks): update vector field summary parameters Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index 401773501..cf5c1a788 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -4,7 +4,9 @@ import matplotlib.pyplot as plt import scvelo as scv +from anndata import AnnData from beartype import beartype +from beartype.typing import List from pandas import DataFrame from pyrovelocity.analysis.analyze import top_mae_genes @@ -284,7 +286,8 @@ def summarize_dataset( plot_gene_ranking( posterior_samples=posterior_samples, adata=adata, - selected_genes=putative_marker_genes, + putative_marker_genes=putative_marker_genes, + selected_genes=selected_genes, time_correlation_with="st", show_marginal_histograms=True, save_volcano_plot=True, @@ -301,6 +304,7 @@ def summarize_dataset( posterior_samples=posterior_samples, adata=adata, geneset=putative_marker_genes, + save_plot=True, parameter_uncertainty_plot=parameter_uncertainty_plot, ) @@ -348,6 +352,7 @@ def summarize_dataset( else: logger.info(f"Generating figure: {vector_field_plot}") fig, ax = plt.subplots() + ax.axis("off") scv.pl.velocity_embedding_grid( adata, @@ -355,7 +360,8 @@ def summarize_dataset( color=cell_state, title="", vkey="velocity_pyro", - linewidth=1, + s=1, + linewidth=0.5, ax=ax, show=False, legend_loc="right margin", From 86536534f5ea0f0294bb0bf0798a9b8647037bd2 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 14:54:29 -0400 Subject: [PATCH 118/177] feat(io): check data download hashes before and after download preprocessing Signed-off-by: Cameron Smith --- src/pyrovelocity/io/datasets.py | 45 +++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/pyrovelocity/io/datasets.py b/src/pyrovelocity/io/datasets.py index 03dd70af2..a42a176eb 100644 --- a/src/pyrovelocity/io/datasets.py +++ b/src/pyrovelocity/io/datasets.py @@ -132,9 +132,18 @@ def larry_neu( Returns `AnnData` object """ url = "https://figshare.com/ndownloader/files/37028575" - adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - adata = adata[adata.obs.state_info != "Centroid", :] - adata.write(file_path) + + if os.path.isfile(file_path): + adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + else: + adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + premodification_hash = ( + "ae4113834a1318168c92715887173d27bf88c57ccbd715e69481b13cf2539b92" + ) + _check_hash(file_path, premodification_hash) + adata = adata[adata.obs.state_info != "Centroid", :] + adata.write(file_path) + expected_hash = ( "384784699c10e192677c006bb407aaedbdf3e3c66f1ca1f4d8d1284ddf8fa436" ) @@ -157,9 +166,18 @@ def larry_mono( Returns `AnnData` object """ url = "https://figshare.com/ndownloader/files/37028572" - adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) - adata = adata[adata.obs.state_info != "Centroid", :] - adata.write(file_path) + + if os.path.isfile(file_path): + adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + else: + adata = sc.read(file_path, backup_url=url, sparse=True, cache=True) + premodification_hash = ( + "b880b7f72f0ccc8b11ca63c53d340983a6d478e214d4960a529d6e02a9ccd597" + ) + _check_hash(file_path, premodification_hash) + adata = adata[adata.obs.state_info != "Centroid", :] + adata.write(file_path) + expected_hash = ( "75e59aa7f0d47d2d013dc7444f89a858363110ba32d7a576ac3dc819cac0afa8" ) @@ -269,10 +287,13 @@ def larry_multilineage( Returns: Returns `AnnData` object """ - adata_larry_mono = larry_mono() - adata_larry_neu = larry_neu() - adata = adata_larry_mono.concatenate(adata_larry_neu) - adata.write(file_path) + if os.path.isfile(file_path): + adata = sc.read(file_path, sparse=True, cache=True) + else: + adata_larry_mono = larry_mono() + adata_larry_neu = larry_neu() + adata = adata_larry_mono.concatenate(adata_larry_neu) + adata.write(file_path) expected_hash = ( "9add35ae4f736aa5e11d076eadb3b1d842dbc88102047f029bd7fa0929f46be0" ) @@ -354,6 +375,10 @@ def pbmc68k( adata = scv.datasets.pbmc68k(file_path=file_path) else: adata = scv.datasets.pbmc68k(file_path=file_path) + premodification_hash = ( + "c93b1ccad909b6a41539a57975737bd946ea1becce066c250aca129d8dfa26fb" + ) + _check_hash(file_path, premodification_hash) scv.pp.remove_duplicate_cells(adata) adata.obsm["X_tsne"][:, 0] *= -1 adata.write(file_path) From dfe987fca30fae242cdda5192fd2deb42634f008 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 6 Sep 2024 22:29:08 -0400 Subject: [PATCH 119/177] fix(plots): default parameter posteriors to box plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 49 +++++++++++++++++++-------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index 7ce5833a7..6279f5a9d 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -66,6 +66,7 @@ def plot_parameter_posterior_distributions( parameter_uncertainty_plot: PathLike | str = "parameter_uncertainty.pdf", default_fontsize: int = 7, log_base=10, + boxplot: bool = True, ) -> Optional[FigureBase]: if isinstance(parameter_names, list): parameter_names = {param: param for param in parameter_names} @@ -147,21 +148,39 @@ def plot_parameter_posterior_distributions( pass dark_orange = "#ff6a14" - sns.violinplot( - x="index", - y="value", - color=dark_orange, - linewidth=0, - data=df_long, - ax=ax1, - inner="box", - inner_kws=dict( - box_width=1.5, - whis_width=0.75, - color="1", - ), - log_scale=log_base, - ) + light_orange = "#ffb343" + if boxplot: + sns.boxenplot( + data=df_long, + x="index", + y="value", + color=dark_orange, + linecolor=light_orange, + linewidth=0, + ax=ax1, + width_method="exponential", + k_depth="full", + showfliers=False, + log_scale=log_base, + ) + else: + sns.violinplot( + x="index", + y="value", + color=dark_orange, + linewidth=0, + data=df_long, + ax=ax1, + inner="box", + inner_kws=dict( + # box_width=1.5, + # whis_width=0.75, + box_width=3.5, + whis_width=1.75, + color="0", + ), + log_scale=log_base, + ) ax1.yaxis.set_major_formatter( ticker.FuncFormatter(lambda x, _: construct_log_string(x, log_base)) ) From 320cb9a6baa5583a5955c38a52cc780fc41d69e3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:18:41 -0400 Subject: [PATCH 120/177] fix(plots): disable default box plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index 6279f5a9d..c2147ab10 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -66,7 +66,7 @@ def plot_parameter_posterior_distributions( parameter_uncertainty_plot: PathLike | str = "parameter_uncertainty.pdf", default_fontsize: int = 7, log_base=10, - boxplot: bool = True, + boxplot: bool = False, ) -> Optional[FigureBase]: if isinstance(parameter_names, list): parameter_names = {param: param for param in parameter_names} @@ -173,8 +173,6 @@ def plot_parameter_posterior_distributions( ax=ax1, inner="box", inner_kws=dict( - # box_width=1.5, - # whis_width=0.75, box_width=3.5, whis_width=1.75, color="0", From 63115c953ab3f1c71f1987ddbb0b4cfabae7b0cf Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:19:26 -0400 Subject: [PATCH 121/177] feat(utils): add function to compute the quartile coefficient of dispersion Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index eac4fe1a4..b3f047368 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -48,6 +48,7 @@ "print_anndata", "print_attributes", "print_config_tree", + "quartile_coefficient_of_dispersion", "save_anndata_counts_to_dataframe", "str_to_bool", ] @@ -666,6 +667,13 @@ def load_anndata_from_path(adata_path: str | Path) -> AnnData: raise ValueError(f"Cannot read input file: {adata_path}") +@beartype +def quartile_coefficient_of_dispersion(data: NDArray) -> NDArray: + q1 = np.percentile(data, 25, axis=0) + q3 = np.percentile(data, 75, axis=0) + return (q3 - q1) / (q3 + q1) + + # TODO: remove unused functions # def log(x): # """ From a90e18214e02b10130096b7575cc4507341fbd44 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:21:40 -0400 Subject: [PATCH 122/177] fix(plots): use quartile coefficient of dispersion to quantify temporal uncertainty Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index e992cdd30..f4abcabd7 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -23,6 +23,7 @@ get_posterior_sample_angle_uncertainty, ) from pyrovelocity.styles import configure_matplotlib_style +from pyrovelocity.utils import quartile_coefficient_of_dispersion __all__ = [ "plot_vector_field_summary", @@ -249,14 +250,16 @@ def plot_vector_field_summary( cell_time_mean = posterior_time.mean(0).flatten() cell_time_mean_max = cell_time_mean.max() cell_times = posterior_time / cell_time_mean_max - cell_time_mean = cell_times.mean(0).flatten() - cell_time_std = cell_times.std(0).flatten() - cell_time_cov = cell_time_std / cell_time_mean + # cell_time_mean = cell_times.mean(0).flatten() + # cell_time_std = cell_times.std(0).flatten() + # cell_time_cov = cell_time_std / cell_time_mean + cell_time_qcd = quartile_coefficient_of_dispersion(cell_times).flatten() plot_vector_field_uncertainty( - adata, - embed_mean, - cell_time_cov, + adata=adata, + embed_mean=embed_mean, + # embeds_radian_or_magnitude=cell_time_cov, + embeds_radian_or_magnitude=cell_time_qcd, ax=ax[5], cbar=False, fig=fig, From 02457d7e2c81513790b6dec65a4dbac10c1ec751 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:22:11 -0400 Subject: [PATCH 123/177] fix(report): update docstring Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index fedb1202a..8d8034f90 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -94,12 +94,14 @@ def plot_report( >>> from pyrovelocity.analysis.analyze import top_mae_genes >>> from pyrovelocity.plots import plot_report >>> from pyrovelocity.utils import load_anndata_from_path + >>> from pyrovelocity.io.compressedpickle import CompressedPickle + >>> from pyrovelocity.styles.colors import LARRY_CELL_TYPE_COLORS ... >>> adata = load_anndata_from_path("models/larry_model2/postprocessed.h5ad") >>> posterior_samples = CompressedPickle.load( ... "models/larry_model2/pyrovelocity.pkl.zst" ... ) - >>> volcano_data: DataFrame = posterior_samples["gene_ranking"] + >>> volcano_data = posterior_samples["gene_ranking"] >>> vector_field_basis = "emb" >>> cell_state = "state_info" >>> putative_marker_genes = top_mae_genes( From 388cdb5ecb8114ab69881ba842981ac6e30515ba Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:22:34 -0400 Subject: [PATCH 124/177] fix(plots): update report dpi Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 8d8034f90..39af6fa9b 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -209,7 +209,15 @@ def plot_report( add_panel_label(fig, "d", x_col1, 0.57) fig.savefig(report_file_path, format="pdf") - fig.savefig(f"{report_file_path}.png", format="png") + fig.savefig( + f"{report_file_path}.png", + facecolor=fig.get_facecolor(), + bbox_inches="tight", + edgecolor="none", + dpi=300, + format="png", + ) + CompressedPickle.save(figure_file_path, fig) return fig From e875f2ef8b182ef7304532b05e1aa1a94ea16934 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 01:23:20 -0400 Subject: [PATCH 125/177] fix(plots): set vector field uncertainty default plot type to hexbin Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 55 ++++++++++++++++-------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index f4abcabd7..0de0b7637 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -390,6 +390,7 @@ def plot_vector_field_uncertainty( dotsize=1, show_titles: bool = True, default_fontsize: int = 7, + plot_individual_obs: bool = False, ): if uncertain_measure == "angle": adata.obs["uncertain"] = get_posterior_sample_angle_uncertainty( @@ -476,24 +477,42 @@ def plot_vector_field_uncertainty( else: order = np.argsort(adata.obs["uncertain"].values) ordered_uncertainty_measure = adata.obs["uncertain"].values[order] - im = ax.scatter( - adata.obsm[f"X_{basis}"][:, 0][order], - adata.obsm[f"X_{basis}"][:, 1][order], - c=ordered_uncertainty_measure, - cmap=cmap, - norm=None, - vmin=0 - if "angle" in uncertain_measure - # else np.percentile(ordered_uncertainty_measure, 0.1), - else min(ordered_uncertainty_measure), - vmax=360 - if "angle" in uncertain_measure - # else np.percentile(ordered_uncertainty_measure, 99.9), - else max(ordered_uncertainty_measure), - s=dotsize, - linewidth=1, - edgecolors="none", - ) + if plot_individual_obs: + im = ax.scatter( + adata.obsm[f"X_{basis}"][:, 0][order], + adata.obsm[f"X_{basis}"][:, 1][order], + c=ordered_uncertainty_measure, + cmap=cmap, + norm=None, + vmin=0 + if "angle" in uncertain_measure + # else np.percentile(ordered_uncertainty_measure, 0.1), + else min(ordered_uncertainty_measure), + vmax=360 + if "angle" in uncertain_measure + # else np.percentile(ordered_uncertainty_measure, 99.9), + else max(ordered_uncertainty_measure), + s=dotsize, + linewidth=1, + edgecolors="none", + ) + else: + im = ax.hexbin( + adata.obsm[f"X_{basis}"][:, 0][order], + adata.obsm[f"X_{basis}"][:, 1][order], + C=ordered_uncertainty_measure, + gridsize=100, + cmap=cmap, + vmin=0 + if "angle" in uncertain_measure + else min(ordered_uncertainty_measure), + vmax=360 + if "angle" in uncertain_measure + else max(ordered_uncertainty_measure), + linewidths=0, + edgecolors="none", + ) + ax.axis("off") if show_titles: ax.set_title( From 6fcb630af5ec94695f5f5cb8156650f83d25abf2 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 10:27:43 -0400 Subject: [PATCH 126/177] fix(plots): set posterior time default plot type to hexbin Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index 339f77acc..66d09d18f 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -35,6 +35,7 @@ def plot_posterior_time( show_colorbar=True, show_titles=True, alpha=1, + plot_individual_obs=False, ): if addition: sns.set_style("white") @@ -53,15 +54,28 @@ def plot_posterior_time( if ax is None: fig, ax = plt.subplots(1, 1) fig.set_size_inches(2.36, 2) - im = ax.scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=s, - alpha=alpha, - c=adata.obs["cell_time"], - cmap=cmap, - linewidth=0, - ) + if plot_individual_obs: + im = ax.scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=s, + alpha=alpha, + c=adata.obs["cell_time"], + cmap=cmap, + linewidth=0, + ) + else: + im = ax.hexbin( + x=adata.obsm[f"X_{basis}"][:, 0], + y=adata.obsm[f"X_{basis}"][:, 1], + C=adata.obs["cell_time"], + gridsize=100, + cmap=cmap, + alpha=alpha, + linewidths=0, + edgecolors="none", + reduce_C_function=np.mean, # This will average cell_time values in each hexagon + ) if show_colorbar: set_colorbar(im, ax, labelsize=5, fig=fig, position=position) ax.axis("off") From 9f6e601e9bf4d86a1857902764d78c72e9cdb0fd Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 11:04:54 -0400 Subject: [PATCH 127/177] fix(tasks): set min mae percentile from candidate dataframe length Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/summarize.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/tasks/summarize.py b/src/pyrovelocity/tasks/summarize.py index cf5c1a788..b2164879b 100644 --- a/src/pyrovelocity/tasks/summarize.py +++ b/src/pyrovelocity/tasks/summarize.py @@ -272,9 +272,9 @@ def summarize_dataset( logger.info(f"Searching for marker genes") putative_marker_genes = top_mae_genes( volcano_data=volcano_data, - mae_top_percentile=3, + mae_top_percentile=100 * 24 / len(volcano_data), min_genes_per_bin=3, - max_genes_per_bin=5, + max_genes_per_bin=4, ) # volcano plot From 0913328674958c96565ff52481756196686a90b8 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 11:07:46 -0400 Subject: [PATCH 128/177] fix(plots): increase box plot width Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index c2147ab10..a12c29707 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -173,7 +173,7 @@ def plot_parameter_posterior_distributions( ax=ax1, inner="box", inner_kws=dict( - box_width=3.5, + box_width=10, whis_width=1.75, color="0", ), From 1e2b244480511f9833067b9268898ee641a8fd92 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 11:32:23 -0400 Subject: [PATCH 129/177] fix(plots): add parameter to truncate high error genes by percentile Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index a237d5e01..275969b5e 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -2,9 +2,9 @@ from typing import Dict, List, Optional, Tuple import adjustText -import matplotlib import matplotlib.pyplot as plt import numpy as np +import pandas import seaborn as sns from adjustText import adjust_text from anndata import AnnData @@ -51,6 +51,7 @@ def plot_gene_ranking( volcano_plot_path: str | Path = "volcano.pdf", defaultfontsize=7, show_xy_labels: bool = False, + truncate_lower_mae_percentile: float = 0, ) -> Tuple[DataFrame, Optional[FigureBase]]: if putative_marker_genes is not None: assert isinstance(putative_marker_genes, (tuple, list)) @@ -69,6 +70,30 @@ def plot_gene_ranking( volcano_data = posterior_samples["gene_ranking"] genes = posterior_samples["genes"] + if truncate_lower_mae_percentile > 0: + genes_to_preserve = set(putative_marker_genes or []) | set( + selected_genes + ) + + preserved_genes_data = volcano_data[ + volcano_data.index.isin(genes_to_preserve) + ] + other_genes_data = volcano_data[ + ~volcano_data.index.isin(genes_to_preserve) + ] + + mae_threshold = np.percentile( + other_genes_data["mean_mae"], + truncate_lower_mae_percentile, + ) + filtered_other_genes = other_genes_data[ + other_genes_data["mean_mae"] >= mae_threshold + ] + + volcano_data = pandas.concat( + [preserved_genes_data, filtered_other_genes] + ) + adjust_text_compatible = is_adjust_text_compatible() defaultdotsize = 3 From b5a99ac115b6adb78a06c7442ef00c447ed71bf5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 7 Sep 2024 11:32:55 -0400 Subject: [PATCH 130/177] fix(plots): set rainbow default plot type to hexbin Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 87 +++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 24 deletions(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index 8a9265fe8..bf3d642e1 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -223,16 +223,31 @@ def plot_gene_on_embedding( show_data: bool, st_std: Optional[NDArray[Any]] = None, dotsize: int = 1, + plot_individual_obs: bool = False, + gridsize: int = 100, ): (index,) = np.where(adata.var_names == gene) - im = axes_dict[f"predictive_{n}"].scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=dotsize, - c=st[:, index].flatten(), - cmap="cividis", - edgecolors="none", - ) + + if plot_individual_obs: + im = axes_dict[f"predictive_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=st[:, index].flatten(), + cmap="cividis", + edgecolors="none", + ) + else: + im = axes_dict[f"predictive_{n}"].hexbin( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + C=st[:, index].flatten(), + gridsize=gridsize, + cmap="cividis", + edgecolors="none", + reduce_C_function=np.mean, + ) + set_colorbar( im, axes_dict[f"predictive_{n}"], @@ -244,14 +259,26 @@ def plot_gene_on_embedding( axes_dict[f"predictive_{n}"].axis("off") if st_std is not None: - im = axes_dict[f"cv_{n}"].scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=dotsize, - c=st_std[:, index].flatten() / st[:, index].flatten(), - cmap="cividis", - edgecolors="none", - ) + if plot_individual_obs: + im = axes_dict[f"cv_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=st_std[:, index].flatten() / st[:, index].flatten(), + cmap="cividis", + edgecolors="none", + ) + else: + im = axes_dict[f"cv_{n}"].hexbin( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + C=st_std[:, index].flatten() / st[:, index].flatten(), + gridsize=gridsize, + cmap="cividis", + edgecolors="none", + reduce_C_function=np.mean, + ) + set_colorbar( im, axes_dict[f"cv_{n}"], @@ -263,14 +290,26 @@ def plot_gene_on_embedding( axes_dict[f"cv_{n}"].axis("off") if show_data: - im = axes_dict[f"data_{n}"].scatter( - adata.obsm[f"X_{basis}"][:, 0], - adata.obsm[f"X_{basis}"][:, 1], - s=dotsize, - c=ensure_numpy_array(adata[:, index].X).flatten(), - cmap="cividis", - edgecolors="none", - ) + if plot_individual_obs: + im = axes_dict[f"data_{n}"].scatter( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + s=dotsize, + c=ensure_numpy_array(adata[:, index].X).flatten(), + cmap="cividis", + edgecolors="none", + ) + else: + im = axes_dict[f"data_{n}"].hexbin( + adata.obsm[f"X_{basis}"][:, 0], + adata.obsm[f"X_{basis}"][:, 1], + C=ensure_numpy_array(adata[:, index].X).flatten(), + gridsize=gridsize, + cmap="cividis", + edgecolors="none", + reduce_C_function=np.mean, + ) + set_colorbar( im, axes_dict[f"data_{n}"], From 5d1118fba0ed6ff04d1a8a587db5a1dd0fba25f0 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 8 Sep 2024 23:35:02 -0400 Subject: [PATCH 131/177] chore(workflows): bump summarize cache to `2024.8.15.3` Signed-off-by: Cameron Smith --- src/pyrovelocity/workflows/main_workflow.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pyrovelocity/workflows/main_workflow.py b/src/pyrovelocity/workflows/main_workflow.py index 87f813ffe..187df3f4f 100644 --- a/src/pyrovelocity/workflows/main_workflow.py +++ b/src/pyrovelocity/workflows/main_workflow.py @@ -91,8 +91,8 @@ PREPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.0" TRAIN_CACHE_VERSION = f"{CACHE_VERSION}.0" POSTPROCESS_CACHE_VERSION = f"{CACHE_VERSION}.2" -SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.2" -UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.6" +SUMMARIZE_CACHE_VERSION = f"{CACHE_VERSION}.3" +UPLOAD_CACHE_VERSION = f"{CACHE_VERSION}.7" LINEAGE_FATE_CORRELATION_CACHE_VERSION = f"{CACHE_VERSION}.5" COMBINE_METRICS_CACHE_VERSION = f"{CACHE_VERSION}.5" DEFAULT_ACCELERATOR_TYPE: GPUAccelerator = T4 @@ -730,9 +730,9 @@ def training_workflow( ] developmental_configurations = [ - (bonemarrow_configuration, "bonemarrow"), + # (bonemarrow_configuration, "bonemarrow"), (pancreas_configuration, "pancreas"), - (pons_configuration, "pons"), + # (pons_configuration, "pons"), ] lineage_traced_results = [] @@ -744,13 +744,13 @@ def training_workflow( ] configurations = [ - (simulated_configuration, "simulated"), + # (simulated_configuration, "simulated"), ] if not PYROVELOCITY_DATA_SUBSET: - configurations += stationary_configurations + # configurations += stationary_configurations configurations += developmental_configurations - configurations += lineage_traced_configurations + # configurations += lineage_traced_configurations for config, data_set_name in configurations: result = map_model_configurations_over_data_set( From ca31986fa52088473f978090c3e5fa8ade36abe9 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 10 Sep 2024 00:05:15 -0400 Subject: [PATCH 132/177] nit(models): default to kwargs Signed-off-by: Cameron Smith --- src/pyrovelocity/models/_velocity_model.py | 198 +++++++++++++-------- 1 file changed, 119 insertions(+), 79 deletions(-) diff --git a/src/pyrovelocity/models/_velocity_model.py b/src/pyrovelocity/models/_velocity_model.py index 63ca3fd8a..0250ca7dc 100644 --- a/src/pyrovelocity/models/_velocity_model.py +++ b/src/pyrovelocity/models/_velocity_model.py @@ -1,28 +1,19 @@ -from typing import Optional -from typing import Tuple -from typing import Union +from typing import Optional, Tuple, Union import pyro import torch from beartype import beartype -from jaxtyping import Float -from jaxtyping import jaxtyped +from jaxtyping import Float, jaxtyped from pyro import poutine -from pyro.distributions import Bernoulli -from pyro.distributions import LogNormal -from pyro.distributions import Normal -from pyro.distributions import Poisson -from pyro.nn import PyroModule -from pyro.nn import PyroSample +from pyro.distributions import Bernoulli, LogNormal, Normal, Poisson +from pyro.nn import PyroModule, PyroSample from pyro.primitives import plate from scvi.nn import Decoder -from torch.nn.functional import relu -from torch.nn.functional import softplus +from torch.nn.functional import relu, softplus from pyrovelocity.logging import configure_logging from pyrovelocity.models._transcription_dynamics import mrna_dynamics - logger = configure_logging(__name__) RNAInputType = Union[ @@ -83,9 +74,11 @@ def __init__( Args: num_cells (int): number of cells. num_genes (int): number of genes. - likelihood (str, optional): Type of likelihood to use. Defaults to "Poisson". + likelihood (str, optional): + Type of likelihood to use. Defaults to "Poisson". plate_size (int, optional): Number of plates. Defaults to 2. - correct_library_size (Union[bool, str], optional): Flag to control normalization by library size. Defaults to True. + correct_library_size (Union[bool, str], optional): + Flag to control normalization by library size. Defaults to True. """ logger.info("Initializing LogNormalModel") assert num_cells > 0 and num_genes > 0 @@ -130,7 +123,7 @@ def create_plates( Create cell and gene plates for the model. note that usage in pyro.infer.autoguide.AutoGuideList requires the set of arguments be equivalent to the model's forward method. See - https://github.com/pyro-ppl/pyro/blob/670e9cb57003b52aea02deeb1316a42db3e1de1f/pyro/infer/autoguide/guides.py#L60-L63. + https://github.com/pyro-ppl/pyro/blob/1.9.1/pyro/infer/autoguide/guides.py#L60-L63 Args: u_obs (Optional[torch.Tensor], optional): _description_. Defaults to None. @@ -244,19 +237,31 @@ def get_likelihood( Args: ut (torch.Tensor): Tensor representing unspliced transcripts. st (torch.Tensor): Tensor representing spliced transcripts. - u_log_library (Optional[torch.Tensor], optional): Log library tensor for unspliced transcripts. Defaults to None. - s_log_library (Optional[torch.Tensor], optional): Log library tensor for spliced transcripts. Defaults to None. - u_scale (Optional[torch.Tensor], optional): Scale tensor for unspliced transcripts. Defaults to None. - s_scale (Optional[torch.Tensor], optional): Scale tensor for spliced transcripts. Defaults to None. - u_read_depth (Optional[torch.Tensor], optional): Read depth tensor for unspliced transcripts. Defaults to None. - s_read_depth (Optional[torch.Tensor], optional): Read depth tensor for spliced transcripts. Defaults to None. - u_cell_size_coef (Optional[Any], optional): Cell size coefficient for unspliced transcripts. Defaults to None. - ut_coef (Optional[Any], optional): Coefficient for unspliced transcripts. Defaults to None. - s_cell_size_coef (Optional[Any], optional): Cell size coefficient for spliced transcripts. Defaults to None. - st_coef (Optional[Any], optional): Coefficient for spliced transcripts. Defaults to None. + u_log_library (Optional[torch.Tensor], optional): + Log library tensor for unspliced transcripts. Defaults to None. + s_log_library (Optional[torch.Tensor], optional): + Log library tensor for spliced transcripts. Defaults to None. + u_scale (Optional[torch.Tensor], optional): + Scale tensor for unspliced transcripts. Defaults to None. + s_scale (Optional[torch.Tensor], optional): + Scale tensor for spliced transcripts. Defaults to None. + u_read_depth (Optional[torch.Tensor], optional): + Read depth tensor for unspliced transcripts. Defaults to None. + s_read_depth (Optional[torch.Tensor], optional): + Read depth tensor for spliced transcripts. Defaults to None. + u_cell_size_coef (Optional[Any], optional): + Cell size coefficient for unspliced transcripts. Defaults to None. + ut_coef (Optional[Any], optional): + Coefficient for unspliced transcripts. Defaults to None. + s_cell_size_coef (Optional[Any], optional): + Cell size coefficient for spliced transcripts. Defaults to None. + st_coef (Optional[Any], optional): + Coefficient for spliced transcripts. Defaults to None. Returns: - Tuple[Poisson, Poisson]: A tuple of Poisson distributions for unspliced and spliced transcripts, respectively. + Tuple[Poisson, Poisson]: + A tuple of Poisson distributions for unspliced and spliced transcripts, + respectively. Example: >>> import torch @@ -271,7 +276,12 @@ def get_likelihood( >>> st = torch.rand(num_cells, num_genes) >>> u_read_depth = torch.rand(num_cells, 1) >>> s_read_depth = torch.rand(num_cells, 1) - >>> u_dist, s_dist = model.get_likelihood(ut, st, u_read_depth=u_read_depth, s_read_depth=s_read_depth) + >>> u_dist, s_dist = model.get_likelihood( + ... ut, + ... st, + ... u_read_depth=u_read_depth, + ... s_read_depth=s_read_depth, + ... ) >>> logger.info(f"u_dist: {u_dist}") >>> logger.info(f"s_dist: {s_dist}") >>> assert isinstance(u_dist, torch.distributions.Poisson) @@ -283,7 +293,6 @@ def get_likelihood( "member of a sum type over supported distributions" ) raise NotImplementedError(likelihood_not_implemented_msg) - if self.correct_library_size: ut = relu(ut) + self.one * 1e-6 st = relu(st) + self.one * 1e-6 @@ -409,7 +418,6 @@ def __init__( self.decoder = Decoder(1, self.num_genes, n_layers=2) self.enumeration = "parallel" - # self.set_enumeration_strategy() def sample_cell_gene_state(self, t, switching): return ( @@ -476,12 +484,16 @@ def get_rna( u0 (torch.Tensor): Unspliced RNA initial expression. s0 (torch.Tensor): Spliced RNA initial expression. t0 (torch.Tensor): Initial cell time. - switching (Optional[torch.Tensor], optional): Switching time. Default is None. - u_inf (Optional[torch.Tensor], optional): Unspliced RNA expression at switching time. Default is None. - s_inf (Optional[torch.Tensor], optional): Spliced RNA expression at switching time. Default is None. + switching (Optional[torch.Tensor], optional): + Switching time. Default is None. + u_inf (Optional[torch.Tensor], optional): + Unspliced RNA expression at switching time. Default is None. + s_inf (Optional[torch.Tensor], optional): + Spliced RNA expression at switching time. Default is None. Returns: - Tuple[torch.Tensor, torch.Tensor]: The unspliced (u) and spliced (s) RNA expression levels. + Tuple[torch.Tensor, torch.Tensor]: + The unspliced (u) and spliced (s) RNA expression levels. Examples: @@ -524,14 +536,24 @@ def get_rna( >>> logger.info(f"u: {u}") >>> logger.info(f"s: {s}") """ - state = self.sample_cell_gene_state(t, switching) + state = self.sample_cell_gene_state( + t=t, + switching=switching, + ) alpha_off = self.zero u0_vec = torch.where(state, u0, u_inf) s0_vec = torch.where(state, s0, s_inf) alpha_vec = torch.where(state, alpha, alpha_off) tau = softplus(torch.where(state, t - t0, t - switching)) - ut, st = mrna_dynamics(tau, u0_vec, s0_vec, alpha_vec, beta, gamma) + ut, st = mrna_dynamics( + tau=tau, + u0=u0_vec, + s0=s0_vec, + alpha=alpha_vec, + beta=beta, + gamma=gamma, + ) ut = ut * u_scale / s_scale return ut, st @@ -555,20 +577,33 @@ def forward( (s) RNA expression levels given the observations and model parameters. Args: - u_obs (Optional[torch.Tensor], optional): Observed unspliced RNA expression. Default is None. - s_obs (Optional[torch.Tensor], optional): Observed spliced RNA expression. Default is None. - u_log_library (Optional[torch.Tensor], optional): Log-transformed library size for unspliced RNA. Default is None. - s_log_library (Optional[torch.Tensor], optional): Log-transformed library size for spliced RNA. Default is None. - u_log_library_loc (Optional[torch.Tensor], optional): Mean of log-transformed library size for unspliced RNA. Default is None. - s_log_library_loc (Optional[torch.Tensor], optional): Mean of log-transformed library size for spliced RNA. Default is None. - u_log_library_scale (Optional[torch.Tensor], optional): Scale of log-transformed library size for unspliced RNA. Default is None. - s_log_library_scale (Optional[torch.Tensor], optional): Scale of log-transformed library size for spliced RNA. Default is None. - ind_x (Optional[torch.Tensor], optional): Indices for the cells. Default is None. - cell_state (Optional[torch.Tensor], optional): Cell state information. Default is None. - time_info (Optional[torch.Tensor], optional): Time information for the cells. Default is None. + u_obs (Optional[torch.Tensor], optional): + Observed unspliced RNA expression. Default is None. + s_obs (Optional[torch.Tensor], optional): + Observed spliced RNA expression. Default is None. + u_log_library (Optional[torch.Tensor], optional): + Log-transformed library size for unspliced RNA. Default is None. + s_log_library (Optional[torch.Tensor], optional): + Log-transformed library size for spliced RNA. Default is None. + u_log_library_loc (Optional[torch.Tensor], optional): + Mean of log-transformed library size for unspliced RNA. Default is None. + s_log_library_loc (Optional[torch.Tensor], optional): + Mean of log-transformed library size for spliced RNA. Default is None. + u_log_library_scale (Optional[torch.Tensor], optional): + Scale of log-transformed library size for unspliced RNA. + Default is None. + s_log_library_scale (Optional[torch.Tensor], optional): + Scale of log-transformed library size for spliced RNA. Default is None. + ind_x (Optional[torch.Tensor], optional): + Indices for the cells. Default is None. + cell_state (Optional[torch.Tensor], optional): + Cell state information. Default is None. + time_info (Optional[torch.Tensor], optional): + Time information for the cells. Default is None. Returns: - Tuple[torch.Tensor, torch.Tensor]: The unspliced (u) and spliced (s) RNA expression levels. + Tuple[torch.Tensor, torch.Tensor]: + The unspliced (u) and spliced (s) RNA expression levels. Examples: >>> import torch @@ -613,17 +648,17 @@ def forward( [ 0., 0., 7., 4.]])) """ cell_plate, gene_plate = self.create_plates( - u_obs, - s_obs, - u_log_library, - s_log_library, - u_log_library_loc, - s_log_library_loc, - u_log_library_scale, - s_log_library_scale, - ind_x, - cell_state, - time_info, + u_obs=u_obs, + s_obs=s_obs, + u_log_library=u_log_library, + s_log_library=s_log_library, + u_log_library_loc=u_log_library_loc, + s_log_library_loc=s_log_library_loc, + u_log_library_scale=u_log_library_scale, + s_log_library_scale=s_log_library_scale, + ind_x=ind_x, + cell_state=cell_state, + time_info=time_info, ) with gene_plate, poutine.mask(mask=self.include_prior): @@ -644,7 +679,12 @@ def forward( dt_switching = self.dt_switching u_inf, s_inf = mrna_dynamics( - dt_switching, u0, s0, alpha, beta, gamma + tau=dt_switching, + u0=u0, + s0=s0, + alpha=alpha, + beta=beta, + gamma=gamma, ) u_inf = pyro.deterministic("u_inf", u_inf, event_dim=0) s_inf = pyro.deterministic("s_inf", s_inf, event_dim=0) @@ -668,26 +708,26 @@ def forward( ) with gene_plate: ut, st = self.get_rna( - u_scale, - s_scale, - alpha, - beta, - gamma, - t, - u0, - s0, - t0, - switching, - u_inf, - s_inf, + u_scale=u_scale, + s_scale=s_scale, + alpha=alpha, + beta=beta, + gamma=gamma, + t=t, + u0=u0, + s0=s0, + t0=t0, + switching=switching, + u_inf=u_inf, + s_inf=s_inf, ) u_dist, s_dist = self.get_likelihood( - ut, - st, - u_log_library, - s_log_library, - u_scale, - s_scale, + ut=ut, + st=st, + u_log_library=u_log_library, + s_log_library=s_log_library, + u_scale=u_scale, + s_scale=s_scale, u_read_depth=u_read_depth, s_read_depth=s_read_depth, u_cell_size_coef=u_cell_size_coef, From 7844204ebe26e01d5c0933ff7b0c1c6512379b71 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 16:46:31 -0400 Subject: [PATCH 133/177] test(models): exercise guide_type and add_offset parameters of the VelocityModel class Signed-off-by: Cameron Smith --- .../tests/models/test_velocity_model.py | 60 ++++++++++++++++++- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/src/pyrovelocity/tests/models/test_velocity_model.py b/src/pyrovelocity/tests/models/test_velocity_model.py index 1804fb2e8..7bb2dbcb9 100644 --- a/src/pyrovelocity/tests/models/test_velocity_model.py +++ b/src/pyrovelocity/tests/models/test_velocity_model.py @@ -5,8 +5,10 @@ from pyro.distributions import Poisson from pyro.nn import PyroModule -from pyrovelocity.models._velocity_model import LogNormalModel -from pyrovelocity.models._velocity_model import VelocityModelAuto +from pyrovelocity.models._velocity_model import ( + LogNormalModel, + VelocityModelAuto, +) def test_load__velocity_model(): @@ -76,7 +78,7 @@ def velocity_model_auto(self): decoder_on=False, add_offset=False, correct_library_size=True, - guide_type="velocity", + guide_type="auto", cell_specific_kinetics=None, kinetics_num=None, ) @@ -96,6 +98,38 @@ def test_inherited_create_plates(self, velocity_model_auto): assert cell_plate.size == 3 assert gene_plate.size == 4 + def test_get_rna(self, velocity_model_auto): + u_scale = torch.rand(4) + s_scale = torch.rand(4) + alpha = torch.rand(4) + beta = torch.rand(4) + gamma = torch.rand(4) + t = torch.rand(3, 1) + u0 = torch.zeros(4) + s0 = torch.zeros(4) + t0 = torch.zeros(4) + switching = torch.rand(4) + u_inf = torch.rand(4) + s_inf = torch.rand(4) + + u, s = velocity_model_auto.get_rna( + u_scale, + s_scale, + alpha, + beta, + gamma, + t, + u0, + s0, + t0, + switching, + u_inf, + s_inf, + ) + + assert u.shape == (3, 4) + assert s.shape == (3, 4) + def test_forward_method(self, velocity_model_auto): """Test the forward method""" u_obs = torch.rand(3, 4) @@ -122,3 +156,23 @@ def test_forward_method(self, velocity_model_auto): assert u.shape == (3, 4) assert s.shape == (3, 4) + + @pytest.mark.parametrize("add_offset", [True, False]) + def test_add_offset(self, add_offset): + model = VelocityModelAuto( + num_cells=100, + num_genes=50, + likelihood="Poisson", + add_offset=add_offset, + ) + assert model.add_offset == add_offset + + @pytest.mark.parametrize("guide_type", ["auto", "auto_t0_constraint"]) + def test_guide_type(self, guide_type): + model = VelocityModelAuto( + num_cells=100, + num_genes=50, + likelihood="Poisson", + guide_type=guide_type, + ) + assert model.guide_type == guide_type From 50d49702d309f3f3ff56a5c4c110b1ce8733d96c Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 20:54:16 -0400 Subject: [PATCH 134/177] test(models): remove unused model parameters Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/models/test_velocity_model.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/pyrovelocity/tests/models/test_velocity_model.py b/src/pyrovelocity/tests/models/test_velocity_model.py index 7bb2dbcb9..6d5620cf2 100644 --- a/src/pyrovelocity/tests/models/test_velocity_model.py +++ b/src/pyrovelocity/tests/models/test_velocity_model.py @@ -136,8 +136,6 @@ def test_forward_method(self, velocity_model_auto): s_obs = torch.rand(3, 4) u_log_library = torch.tensor([[3.7377], [4.0254], [2.7081]]) s_log_library = torch.tensor([[3.6376], [3.9512], [2.3979]]) - u_log_library_loc = torch.tensor([[3.4904], [3.4904], [3.4904]]) - s_log_library_loc = torch.tensor([[3.3289], [3.3289], [3.3289]]) u_log_library_scale = torch.tensor([[0.6926], [0.6926], [0.6926]]) s_log_library_scale = torch.tensor([[0.8214], [0.8214], [0.8214]]) ind_x = torch.tensor([2, 0, 1]) @@ -147,8 +145,6 @@ def test_forward_method(self, velocity_model_auto): s_obs=s_obs, u_log_library=u_log_library, s_log_library=s_log_library, - u_log_library_loc=u_log_library_loc, - s_log_library_loc=s_log_library_loc, u_log_library_scale=u_log_library_scale, s_log_library_scale=s_log_library_scale, ind_x=ind_x, From b18e12051864d114a0ad4c5ecb6a35cdb31cbd8a Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 20:54:25 -0400 Subject: [PATCH 135/177] refactor(models): remove unused parameters from velocity_model Signed-off-by: Cameron Smith --- src/pyrovelocity/models/_velocity_model.py | 70 +--------------------- 1 file changed, 2 insertions(+), 68 deletions(-) diff --git a/src/pyrovelocity/models/_velocity_model.py b/src/pyrovelocity/models/_velocity_model.py index 0250ca7dc..9b20d8a28 100644 --- a/src/pyrovelocity/models/_velocity_model.py +++ b/src/pyrovelocity/models/_velocity_model.py @@ -107,17 +107,7 @@ def __repr__(self) -> str: @beartype def create_plates( self, - u_obs: Optional[torch.Tensor] = None, - s_obs: Optional[torch.Tensor] = None, - u_log_library: Optional[torch.Tensor] = None, - s_log_library: Optional[torch.Tensor] = None, - u_log_library_loc: Optional[torch.Tensor] = None, - s_log_library_loc: Optional[torch.Tensor] = None, - u_log_library_scale: Optional[torch.Tensor] = None, - s_log_library_scale: Optional[torch.Tensor] = None, ind_x: Optional[torch.Tensor] = None, - cell_state: Optional[torch.Tensor] = None, - time_info: Optional[torch.Tensor] = None, ) -> Tuple[plate, plate]: """ Create cell and gene plates for the model. note that usage in @@ -126,17 +116,7 @@ def create_plates( https://github.com/pyro-ppl/pyro/blob/1.9.1/pyro/infer/autoguide/guides.py#L60-L63 Args: - u_obs (Optional[torch.Tensor], optional): _description_. Defaults to None. - s_obs (Optional[torch.Tensor], optional): _description_. Defaults to None. - u_log_library (Optional[torch.Tensor], optional): _description_. Defaults to None. - s_log_library (Optional[torch.Tensor], optional): _description_. Defaults to None. - u_log_library_loc (Optional[torch.Tensor], optional): _description_. Defaults to None. - s_log_library_loc (Optional[torch.Tensor], optional): _description_. Defaults to None. - u_log_library_scale (Optional[torch.Tensor], optional): _description_. Defaults to None. - s_log_library_scale (Optional[torch.Tensor], optional): _description_. Defaults to None. ind_x (Optional[torch.Tensor], optional): _description_. Defaults to None. - cell_state (Optional[torch.Tensor], optional): _description_. Defaults to None. - time_info (Optional[torch.Tensor], optional): _description_. Defaults to None. Returns: Tuple[plate, plate]: _description_ @@ -220,16 +200,8 @@ def get_likelihood( self, ut: torch.Tensor, st: torch.Tensor, - u_log_library: Optional[torch.Tensor] = None, - s_log_library: Optional[torch.Tensor] = None, - u_scale: Optional[torch.Tensor] = None, - s_scale: Optional[torch.Tensor] = None, u_read_depth: Optional[torch.Tensor] = None, s_read_depth: Optional[torch.Tensor] = None, - u_cell_size_coef: None = None, - ut_coef: None = None, - s_cell_size_coef: None = None, - st_coef: None = None, ) -> Tuple[Poisson, Poisson]: """ Compute the likelihood of the given count data. @@ -564,13 +536,9 @@ def forward( s_obs: torch.Tensor, u_log_library: Optional[torch.Tensor] = None, s_log_library: Optional[torch.Tensor] = None, - u_log_library_loc: Optional[torch.Tensor] = None, - s_log_library_loc: Optional[torch.Tensor] = None, u_log_library_scale: Optional[torch.Tensor] = None, s_log_library_scale: Optional[torch.Tensor] = None, ind_x: Optional[torch.Tensor] = None, - cell_state: Optional[torch.Tensor] = None, - time_info: Optional[torch.Tensor] = None, ) -> Tuple[torch.Tensor, torch.Tensor]: """ Defines the forward model, which computes the unspliced (u) and spliced @@ -585,10 +553,6 @@ def forward( Log-transformed library size for unspliced RNA. Default is None. s_log_library (Optional[torch.Tensor], optional): Log-transformed library size for spliced RNA. Default is None. - u_log_library_loc (Optional[torch.Tensor], optional): - Mean of log-transformed library size for unspliced RNA. Default is None. - s_log_library_loc (Optional[torch.Tensor], optional): - Mean of log-transformed library size for spliced RNA. Default is None. u_log_library_scale (Optional[torch.Tensor], optional): Scale of log-transformed library size for unspliced RNA. Default is None. @@ -596,10 +560,6 @@ def forward( Scale of log-transformed library size for spliced RNA. Default is None. ind_x (Optional[torch.Tensor], optional): Indices for the cells. Default is None. - cell_state (Optional[torch.Tensor], optional): - Cell state information. Default is None. - time_info (Optional[torch.Tensor], optional): - Time information for the cells. Default is None. Returns: Tuple[torch.Tensor, torch.Tensor]: @@ -622,8 +582,6 @@ def forward( >>> ) >>> u_log_library=torch.tensor([[3.7377], [4.0254], [2.7081]], device="cpu") >>> s_log_library=torch.tensor([[3.6376], [3.9512], [2.3979]], device="cpu") - >>> u_log_library_loc=torch.tensor([[3.4904], [3.4904], [3.4904]], device="cpu") - >>> s_log_library_loc=torch.tensor([[3.3289], [3.3289], [3.3289]], device="cpu") >>> u_log_library_scale=torch.tensor([[0.6926], [0.6926], [0.6926]], device="cpu") >>> s_log_library_scale=torch.tensor([[0.8214], [0.8214], [0.8214]], device="cpu") >>> ind_x=torch.tensor([2, 0, 1], device="cpu") @@ -633,8 +591,6 @@ def forward( >>> s_obs, >>> u_log_library, >>> s_log_library, - >>> u_log_library_loc, - >>> s_log_library_loc, >>> u_log_library_scale, >>> s_log_library_scale, >>> ind_x, @@ -647,24 +603,12 @@ def forward( [11., 29., 10., 2.], [ 0., 0., 7., 4.]])) """ - cell_plate, gene_plate = self.create_plates( - u_obs=u_obs, - s_obs=s_obs, - u_log_library=u_log_library, - s_log_library=s_log_library, - u_log_library_loc=u_log_library_loc, - s_log_library_loc=s_log_library_loc, - u_log_library_scale=u_log_library_scale, - s_log_library_scale=s_log_library_scale, - ind_x=ind_x, - cell_state=cell_state, - time_info=time_info, - ) + cell_plate, gene_plate = self.create_plates(ind_x=ind_x) with gene_plate, poutine.mask(mask=self.include_prior): alpha = self.alpha - gamma = self.gamma beta = self.beta + gamma = self.gamma if self.add_offset: u0 = pyro.sample("u_offset", LogNormal(self.zero, self.one)) @@ -698,8 +642,6 @@ def forward( LogNormal(self.zero, self.one).mask(self.include_prior), ) - with cell_plate: - u_cell_size_coef = ut_coef = s_cell_size_coef = st_coef = None u_read_depth = pyro.sample( "u_read_depth", LogNormal(u_log_library, u_log_library_scale) ) @@ -724,16 +666,8 @@ def forward( u_dist, s_dist = self.get_likelihood( ut=ut, st=st, - u_log_library=u_log_library, - s_log_library=s_log_library, - u_scale=u_scale, - s_scale=s_scale, u_read_depth=u_read_depth, s_read_depth=s_read_depth, - u_cell_size_coef=u_cell_size_coef, - ut_coef=ut_coef, - s_cell_size_coef=s_cell_size_coef, - st_coef=st_coef, ) u = pyro.sample("u", u_dist, obs=u_obs) s = pyro.sample("s", s_dist, obs=s_obs) From 439d33f07e911dcb7fabebbfef0dde0b01ddcbeb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 21:28:41 -0400 Subject: [PATCH 136/177] Revert "refactor(models): remove unused parameters from velocity_model" This reverts commit b18e12051864d114a0ad4c5ecb6a35cdb31cbd8a. --- src/pyrovelocity/models/_velocity_model.py | 70 +++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/models/_velocity_model.py b/src/pyrovelocity/models/_velocity_model.py index 9b20d8a28..0250ca7dc 100644 --- a/src/pyrovelocity/models/_velocity_model.py +++ b/src/pyrovelocity/models/_velocity_model.py @@ -107,7 +107,17 @@ def __repr__(self) -> str: @beartype def create_plates( self, + u_obs: Optional[torch.Tensor] = None, + s_obs: Optional[torch.Tensor] = None, + u_log_library: Optional[torch.Tensor] = None, + s_log_library: Optional[torch.Tensor] = None, + u_log_library_loc: Optional[torch.Tensor] = None, + s_log_library_loc: Optional[torch.Tensor] = None, + u_log_library_scale: Optional[torch.Tensor] = None, + s_log_library_scale: Optional[torch.Tensor] = None, ind_x: Optional[torch.Tensor] = None, + cell_state: Optional[torch.Tensor] = None, + time_info: Optional[torch.Tensor] = None, ) -> Tuple[plate, plate]: """ Create cell and gene plates for the model. note that usage in @@ -116,7 +126,17 @@ def create_plates( https://github.com/pyro-ppl/pyro/blob/1.9.1/pyro/infer/autoguide/guides.py#L60-L63 Args: + u_obs (Optional[torch.Tensor], optional): _description_. Defaults to None. + s_obs (Optional[torch.Tensor], optional): _description_. Defaults to None. + u_log_library (Optional[torch.Tensor], optional): _description_. Defaults to None. + s_log_library (Optional[torch.Tensor], optional): _description_. Defaults to None. + u_log_library_loc (Optional[torch.Tensor], optional): _description_. Defaults to None. + s_log_library_loc (Optional[torch.Tensor], optional): _description_. Defaults to None. + u_log_library_scale (Optional[torch.Tensor], optional): _description_. Defaults to None. + s_log_library_scale (Optional[torch.Tensor], optional): _description_. Defaults to None. ind_x (Optional[torch.Tensor], optional): _description_. Defaults to None. + cell_state (Optional[torch.Tensor], optional): _description_. Defaults to None. + time_info (Optional[torch.Tensor], optional): _description_. Defaults to None. Returns: Tuple[plate, plate]: _description_ @@ -200,8 +220,16 @@ def get_likelihood( self, ut: torch.Tensor, st: torch.Tensor, + u_log_library: Optional[torch.Tensor] = None, + s_log_library: Optional[torch.Tensor] = None, + u_scale: Optional[torch.Tensor] = None, + s_scale: Optional[torch.Tensor] = None, u_read_depth: Optional[torch.Tensor] = None, s_read_depth: Optional[torch.Tensor] = None, + u_cell_size_coef: None = None, + ut_coef: None = None, + s_cell_size_coef: None = None, + st_coef: None = None, ) -> Tuple[Poisson, Poisson]: """ Compute the likelihood of the given count data. @@ -536,9 +564,13 @@ def forward( s_obs: torch.Tensor, u_log_library: Optional[torch.Tensor] = None, s_log_library: Optional[torch.Tensor] = None, + u_log_library_loc: Optional[torch.Tensor] = None, + s_log_library_loc: Optional[torch.Tensor] = None, u_log_library_scale: Optional[torch.Tensor] = None, s_log_library_scale: Optional[torch.Tensor] = None, ind_x: Optional[torch.Tensor] = None, + cell_state: Optional[torch.Tensor] = None, + time_info: Optional[torch.Tensor] = None, ) -> Tuple[torch.Tensor, torch.Tensor]: """ Defines the forward model, which computes the unspliced (u) and spliced @@ -553,6 +585,10 @@ def forward( Log-transformed library size for unspliced RNA. Default is None. s_log_library (Optional[torch.Tensor], optional): Log-transformed library size for spliced RNA. Default is None. + u_log_library_loc (Optional[torch.Tensor], optional): + Mean of log-transformed library size for unspliced RNA. Default is None. + s_log_library_loc (Optional[torch.Tensor], optional): + Mean of log-transformed library size for spliced RNA. Default is None. u_log_library_scale (Optional[torch.Tensor], optional): Scale of log-transformed library size for unspliced RNA. Default is None. @@ -560,6 +596,10 @@ def forward( Scale of log-transformed library size for spliced RNA. Default is None. ind_x (Optional[torch.Tensor], optional): Indices for the cells. Default is None. + cell_state (Optional[torch.Tensor], optional): + Cell state information. Default is None. + time_info (Optional[torch.Tensor], optional): + Time information for the cells. Default is None. Returns: Tuple[torch.Tensor, torch.Tensor]: @@ -582,6 +622,8 @@ def forward( >>> ) >>> u_log_library=torch.tensor([[3.7377], [4.0254], [2.7081]], device="cpu") >>> s_log_library=torch.tensor([[3.6376], [3.9512], [2.3979]], device="cpu") + >>> u_log_library_loc=torch.tensor([[3.4904], [3.4904], [3.4904]], device="cpu") + >>> s_log_library_loc=torch.tensor([[3.3289], [3.3289], [3.3289]], device="cpu") >>> u_log_library_scale=torch.tensor([[0.6926], [0.6926], [0.6926]], device="cpu") >>> s_log_library_scale=torch.tensor([[0.8214], [0.8214], [0.8214]], device="cpu") >>> ind_x=torch.tensor([2, 0, 1], device="cpu") @@ -591,6 +633,8 @@ def forward( >>> s_obs, >>> u_log_library, >>> s_log_library, + >>> u_log_library_loc, + >>> s_log_library_loc, >>> u_log_library_scale, >>> s_log_library_scale, >>> ind_x, @@ -603,12 +647,24 @@ def forward( [11., 29., 10., 2.], [ 0., 0., 7., 4.]])) """ - cell_plate, gene_plate = self.create_plates(ind_x=ind_x) + cell_plate, gene_plate = self.create_plates( + u_obs=u_obs, + s_obs=s_obs, + u_log_library=u_log_library, + s_log_library=s_log_library, + u_log_library_loc=u_log_library_loc, + s_log_library_loc=s_log_library_loc, + u_log_library_scale=u_log_library_scale, + s_log_library_scale=s_log_library_scale, + ind_x=ind_x, + cell_state=cell_state, + time_info=time_info, + ) with gene_plate, poutine.mask(mask=self.include_prior): alpha = self.alpha - beta = self.beta gamma = self.gamma + beta = self.beta if self.add_offset: u0 = pyro.sample("u_offset", LogNormal(self.zero, self.one)) @@ -642,6 +698,8 @@ def forward( LogNormal(self.zero, self.one).mask(self.include_prior), ) + with cell_plate: + u_cell_size_coef = ut_coef = s_cell_size_coef = st_coef = None u_read_depth = pyro.sample( "u_read_depth", LogNormal(u_log_library, u_log_library_scale) ) @@ -666,8 +724,16 @@ def forward( u_dist, s_dist = self.get_likelihood( ut=ut, st=st, + u_log_library=u_log_library, + s_log_library=s_log_library, + u_scale=u_scale, + s_scale=s_scale, u_read_depth=u_read_depth, s_read_depth=s_read_depth, + u_cell_size_coef=u_cell_size_coef, + ut_coef=ut_coef, + s_cell_size_coef=s_cell_size_coef, + st_coef=st_coef, ) u = pyro.sample("u", u_dist, obs=u_obs) s = pyro.sample("s", s_dist, obs=s_obs) From 1bb5b24888ecfec5a4ef252634da38215cf96e26 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 21:29:19 -0400 Subject: [PATCH 137/177] Revert "test(models): remove unused model parameters" This reverts commit 50d49702d309f3f3ff56a5c4c110b1ce8733d96c. --- src/pyrovelocity/tests/models/test_velocity_model.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pyrovelocity/tests/models/test_velocity_model.py b/src/pyrovelocity/tests/models/test_velocity_model.py index 6d5620cf2..7bb2dbcb9 100644 --- a/src/pyrovelocity/tests/models/test_velocity_model.py +++ b/src/pyrovelocity/tests/models/test_velocity_model.py @@ -136,6 +136,8 @@ def test_forward_method(self, velocity_model_auto): s_obs = torch.rand(3, 4) u_log_library = torch.tensor([[3.7377], [4.0254], [2.7081]]) s_log_library = torch.tensor([[3.6376], [3.9512], [2.3979]]) + u_log_library_loc = torch.tensor([[3.4904], [3.4904], [3.4904]]) + s_log_library_loc = torch.tensor([[3.3289], [3.3289], [3.3289]]) u_log_library_scale = torch.tensor([[0.6926], [0.6926], [0.6926]]) s_log_library_scale = torch.tensor([[0.8214], [0.8214], [0.8214]]) ind_x = torch.tensor([2, 0, 1]) @@ -145,6 +147,8 @@ def test_forward_method(self, velocity_model_auto): s_obs=s_obs, u_log_library=u_log_library, s_log_library=s_log_library, + u_log_library_loc=u_log_library_loc, + s_log_library_loc=s_log_library_loc, u_log_library_scale=u_log_library_scale, s_log_library_scale=s_log_library_scale, ind_x=ind_x, From 4684551726935b0455bf1480cd3c21b0cc2d8a28 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Thu, 12 Sep 2024 21:30:00 -0400 Subject: [PATCH 138/177] fix(models): mark apparently unused sample sites Signed-off-by: Cameron Smith --- src/pyrovelocity/models/_velocity_model.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/pyrovelocity/models/_velocity_model.py b/src/pyrovelocity/models/_velocity_model.py index 0250ca7dc..ddc74acb2 100644 --- a/src/pyrovelocity/models/_velocity_model.py +++ b/src/pyrovelocity/models/_velocity_model.py @@ -167,10 +167,12 @@ def u_scale(self): def s_scale(self): return self._pyrosample_helper(0.1) + # TODO: remove unused @PyroSample def u_inf(self): return self._pyrosample_helper(0.1) + # TODO: remove unused @PyroSample def s_inf(self): return self._pyrosample_helper(0.1) @@ -179,14 +181,17 @@ def s_inf(self): def dt_switching(self): return self._pyrosample_helper(1.0) + # TODO: remove unused @PyroSample def gene_offset(self): return Normal(self.zero, self.one) + # TODO: remove unused @PyroSample def t_scale(self): return Normal(self.zero, self.one * 0.1) + # TODO: remove unused @PyroSample def latent_time(self): if self.shared_time & self.plate_size == 2: @@ -198,6 +203,7 @@ def latent_time(self): .to_event(1) ) + # TODO: remove unused @PyroSample def cell_time(self): if self.plate_size == 2 and self.shared_time: @@ -208,12 +214,13 @@ def cell_time(self): def _pyrosample_helper(self, scale: float): if self.plate_size == 2: return LogNormal(self.zero, self.one * scale) - return ( - LogNormal(self.zero, self.one * 0.1) - .expand((self.num_genes,)) - .to_event(1) - .mask(False) - ) + else: + return ( + LogNormal(self.zero, self.one * 0.1) + .expand((self.num_genes,)) + .to_event(1) + .mask(False) + ) @beartype def get_likelihood( From 9bfa14952606a992bb1dd7411ade7d3a1b19a1e8 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 13 Sep 2024 13:29:51 -0400 Subject: [PATCH 139/177] fix(plots): include median in parameter plots Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_parameters.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/plots/_parameters.py b/src/pyrovelocity/plots/_parameters.py index a12c29707..9e82cdf82 100644 --- a/src/pyrovelocity/plots/_parameters.py +++ b/src/pyrovelocity/plots/_parameters.py @@ -149,6 +149,11 @@ def plot_parameter_posterior_distributions( dark_orange = "#ff6a14" light_orange = "#ffb343" + df_long_medians = df_long.groupby("index")["value"].median() + for i, median in enumerate(df_long_medians): + ax1.hlines( + median, i - 0.4, i + 0.4, color=dark_orange, linewidth=1.5 + ) if boxplot: sns.boxenplot( data=df_long, @@ -173,8 +178,8 @@ def plot_parameter_posterior_distributions( ax=ax1, inner="box", inner_kws=dict( - box_width=10, - whis_width=1.75, + box_width=1.5, + whis_width=0.75, color="0", ), log_scale=log_base, From e47275574fdb95e25a1c26b4a74ccab590626fe8 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 13 Sep 2024 16:23:18 -0400 Subject: [PATCH 140/177] refactor(plots): move setup_colors to utils Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_rainbow.py | 28 +++++++++++++++++----------- src/pyrovelocity/utils.py | 15 +++++++++++++++ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/pyrovelocity/plots/_rainbow.py b/src/pyrovelocity/plots/_rainbow.py index bf3d642e1..97e5bc24c 100644 --- a/src/pyrovelocity/plots/_rainbow.py +++ b/src/pyrovelocity/plots/_rainbow.py @@ -19,7 +19,7 @@ from pandas import DataFrame, Index from pyrovelocity.plots._common import set_colorbar, set_font_size -from pyrovelocity.utils import ensure_numpy_array +from pyrovelocity.utils import ensure_numpy_array, setup_colors __all__ = ["rainbowplot", "us_rainbowplot"] @@ -57,7 +57,7 @@ def rainbowplot_module( axes_dict = create_rainbow_axes(gs, number_of_genes, show_data) if state_info_colors: - colors = setup_state_info_colors(adata, cell_state) + colors = setup_state_info_colors(adata, cell_state, basis) else: colors = setup_colors(adata, cell_state) @@ -672,7 +672,12 @@ def get_genes( ) -def setup_state_info_colors(adata, cell_state, basis): +@beartype +def setup_state_info_colors( + adata: AnnData, + cell_state: str, + basis: str, +): scv.pl.scatter( adata, basis=basis, @@ -687,14 +692,15 @@ def setup_state_info_colors(adata, cell_state, basis): ) -def setup_colors(adata, cell_state): - clusters = adata.obs.loc[:, cell_state] - return dict( - zip( - clusters.cat.categories, - sns.color_palette("deep", clusters.cat.categories.shape[0]), - ) - ) +# TODO: remove following refactor to utils +# def setup_colors(adata, cell_state): +# clusters = adata.obs.loc[:, cell_state] +# return dict( +# zip( +# clusters.cat.categories, +# sns.color_palette("deep", clusters.cat.categories.shape[0]), +# ) +# ) def get_posterior_samples_mean(data, posterior_samples) -> NDArray[Any]: diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index b3f047368..743498f26 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -674,6 +674,21 @@ def quartile_coefficient_of_dispersion(data: NDArray) -> NDArray: return (q3 - q1) / (q3 + q1) +@beartype +def setup_colors( + adata: AnnData, + cell_state: str, +) -> Dict[str, Tuple[float, float, float]]: + clusters = adata.obs.loc[:, cell_state] + color_dict = dict( + zip( + clusters.cat.categories, + sns.color_palette("deep", clusters.cat.categories.shape[0]), + ) + ) + return color_dict + + # TODO: remove unused functions # def log(x): # """ From fd6c652e4b45c18ce9e5d85ee5ec747125c8c9ba Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 13 Sep 2024 16:24:37 -0400 Subject: [PATCH 141/177] fix(plots): use QCD instead of CV in shared time histogram Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_time.py | 100 +++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 33 deletions(-) diff --git a/src/pyrovelocity/plots/_time.py b/src/pyrovelocity/plots/_time.py index 66d09d18f..50e5f1be2 100644 --- a/src/pyrovelocity/plots/_time.py +++ b/src/pyrovelocity/plots/_time.py @@ -15,6 +15,7 @@ from scipy.stats import spearmanr from pyrovelocity.plots._common import set_colorbar, set_font_size +from pyrovelocity.utils import quartile_coefficient_of_dispersion __all__ = [ "plot_posterior_time", @@ -104,6 +105,7 @@ def plot_shared_time_uncertainty( dotsize: Optional[int] = None, default_font_size: int = 12, duplicate_title: bool = False, + plot_individual_obs: bool = False, ) -> FigureBase: cell_time_mean = posterior_samples["cell_time"].mean(0).flatten() cell_time_mean_max = cell_time_mean.max() @@ -111,20 +113,23 @@ def plot_shared_time_uncertainty( cell_time_mean = cell_times.mean(0).flatten() cell_time_std = cell_times.std(0).flatten() cell_time_cv = cell_time_std / cell_time_mean + cell_time_qcd = quartile_coefficient_of_dispersion(cell_times).flatten() adata.obs["shared_time_std"] = cell_time_std adata.obs["shared_time_mean"] = cell_time_mean adata.obs["shared_time_cv"] = cell_time_cv + adata.obs["shared_time_qcd"] = cell_time_qcd - cv_string = ( - r"shared time $\left.\sigma \right/ \mu$" - if matplotlib.rcParams["text.usetex"] - else "shared time σ/μ" - ) mean_string = ( r"shared time $\mu$" if matplotlib.rcParams["text.usetex"] else "shared time μ" ) + cv_string = ( + r"shared time $\left.\sigma \right/ \mu$" + if matplotlib.rcParams["text.usetex"] + else "shared time σ/μ" + ) + qcd_string = f"shared time QCD" fig = plt.figure(figsize=(6, 6)) gs = fig.add_gridspec( @@ -139,42 +144,71 @@ def plot_shared_time_uncertainty( ax1.set_title(mean_string) ax2 = fig.add_subplot(gs[0, 1]) - ax2.hist(cell_time_cv, bins=100) - ax2.set_title(cv_string) + ax2.hist(cell_time_qcd, bins=100) + ax2.set_title(qcd_string) ax3 = fig.add_subplot(gs[1, 0]) - ax_st = scv.pl.scatter( - adata=adata, - basis=vector_field_basis, - c="shared_time_mean", - ax=ax3, - show=False, - cmap="winter", - fontsize=default_font_size, - colorbar=False, - s=dotsize, - title="", - ) + if plot_individual_obs: + scv.pl.scatter( + adata=adata, + basis=vector_field_basis, + c="shared_time_mean", + ax=ax3, + show=False, + cmap="winter", + fontsize=default_font_size, + colorbar=False, + s=dotsize, + title="", + ) + else: + im3 = ax3.hexbin( + x=adata.obsm[f"X_{vector_field_basis}"][:, 0], + y=adata.obsm[f"X_{vector_field_basis}"][:, 1], + C=adata.obs["shared_time_mean"], + gridsize=100, + cmap="winter", + linewidths=0, + edgecolors="none", + vmin=min(cell_time_mean), + vmax=max(cell_time_mean), + reduce_C_function=np.mean, + ) ax3.axis("off") if duplicate_title: - ax_st.set_title(mean_string) + ax3.set_title(mean_string) ax4 = fig.add_subplot(gs[1, 1]) - ax_cv = scv.pl.scatter( - adata=adata, - basis=vector_field_basis, - c="shared_time_cv", - ax=ax4, - show=False, - cmap="winter", - fontsize=default_font_size, - colorbar=False, - s=dotsize, - title="", - ) + if plot_individual_obs: + scv.pl.scatter( + adata=adata, + basis=vector_field_basis, + c="shared_time_cv", + ax=ax4, + show=False, + cmap="winter", + fontsize=default_font_size, + colorbar=False, + s=dotsize, + title="", + ) + else: + im4 = ax4.hexbin( + x=adata.obsm[f"X_{vector_field_basis}"][:, 0], + y=adata.obsm[f"X_{vector_field_basis}"][:, 1], + # C=adata.obs["shared_time_cv"], + C=adata.obs["shared_time_qcd"], + gridsize=100, + cmap="winter", + linewidths=0, + edgecolors="none", + vmin=min(cell_time_qcd), + vmax=max(cell_time_qcd), + reduce_C_function=np.mean, + ) ax4.axis("off") if duplicate_title: - ax_cv.set_title(cv_string) + ax4.set_title(qcd_string) # select = adata.obs["shared_time_cv"] > np.quantile( # adata.obs["shared_time_cv"], 0.9 # ) From 76ffc3f85d926aabcfbeab95ca6e78499ee28a1b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 13 Sep 2024 16:25:12 -0400 Subject: [PATCH 142/177] fix(plots): synchronize vector field color map with rainbowplots Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 0de0b7637..1373d5677 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -8,7 +8,7 @@ import seaborn as sns from anndata import AnnData from beartype import beartype -from beartype.typing import Dict, List, Optional, Tuple +from beartype.typing import Any, Dict, List, Optional, Tuple from matplotlib.axes import Axes from matplotlib.colors import Normalize from matplotlib.figure import FigureBase @@ -23,7 +23,7 @@ get_posterior_sample_angle_uncertainty, ) from pyrovelocity.styles import configure_matplotlib_style -from pyrovelocity.utils import quartile_coefficient_of_dispersion +from pyrovelocity.utils import quartile_coefficient_of_dispersion, setup_colors __all__ = [ "plot_vector_field_summary", @@ -82,7 +82,7 @@ def plot_vector_field_summary( vector_field_basis: str, plot_name: Optional[PathLike | str] = None, cell_state: str = "cell_type", - state_color_dict: Optional[Dict[str, str]] = None, + state_color_dict: Optional[Dict[str, Any]] = None, fig: Optional[FigureBase] = None, gs: Optional[SubplotSpec] = None, default_fontsize: int = 7 if matplotlib.rcParams["text.usetex"] else 6, @@ -114,6 +114,9 @@ def plot_vector_field_summary( } ) + if state_color_dict is None: + state_color_dict = setup_colors(adata, cell_state) + sns.scatterplot( x="X1", y="X2", From 1d71472f0cd19148456f1832b971bb9fbb5223f5 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Fri, 13 Sep 2024 16:26:09 -0400 Subject: [PATCH 143/177] fix(plots): pass boxplot flag to parameter posteriors Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_report.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/plots/_report.py b/src/pyrovelocity/plots/_report.py index 39af6fa9b..74a08178f 100644 --- a/src/pyrovelocity/plots/_report.py +++ b/src/pyrovelocity/plots/_report.py @@ -57,9 +57,10 @@ def plot_report( volcano_data: DataFrame, putative_marker_genes: List[str], selected_genes: List[str], - vector_field_basis: str = "emb", - cell_state: str = "state_info", + vector_field_basis: str = "umap", + cell_state: str = "clusters", state_color_dict: Optional[Dict[str, str]] = None, + boxplot: bool = False, report_file_path: Path | str = "example_plot_report.pdf", figure_file_path: Path | str = "example_report_figure.dill.zst", ) -> FigureBase: @@ -185,6 +186,7 @@ def plot_report( geneset=selected_genes, fig=fig, gs=gs[1, 1:], + boxplot=boxplot, ) rainbowplot( From e6b5343e320665679b483f57a0c6ac12dad4615c Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 14 Sep 2024 00:01:18 -0400 Subject: [PATCH 144/177] feat(plots): use mae percentile in gene ranking plot Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 98 ++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index 275969b5e..85ce9cba5 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -3,17 +3,19 @@ import adjustText import matplotlib.pyplot as plt +import matplotlib.ticker as ticker import numpy as np import pandas import seaborn as sns from adjustText import adjust_text from anndata import AnnData from beartype import beartype +from beartype.typing import Any, Callable from matplotlib.axes import Axes from matplotlib.figure import FigureBase from matplotlib.gridspec import GridSpec, SubplotSpec from matplotlib.patches import ArrowStyle, ConnectionStyle -from numpy import ndarray +from numpy.typing import NDArray from pandas import DataFrame from pyrovelocity.analysis.analyze import compute_volcano_data @@ -36,11 +38,11 @@ def filter_adjusttext_matplotlib_warn(message, *args, **kwargs): @beartype def plot_gene_ranking( - posterior_samples: Dict[str, ndarray], + posterior_samples: Dict[str, NDArray[Any] | DataFrame], adata: AnnData, fig: Optional[FigureBase] = None, ax: Optional[Axes] = None, - gs: Optional[GridSpec | SubplotSpec] = None, + gs: Optional[SubplotSpec] = None, time_correlation_with: str = "s", putative_marker_genes: Optional[List[str]] = None, selected_genes: List[str] = [""], @@ -51,12 +53,10 @@ def plot_gene_ranking( volcano_plot_path: str | Path = "volcano.pdf", defaultfontsize=7, show_xy_labels: bool = False, - truncate_lower_mae_percentile: float = 0, + truncate_lower_mae_percentile: float = 0.0, ) -> Tuple[DataFrame, Optional[FigureBase]]: if putative_marker_genes is not None: - assert isinstance(putative_marker_genes, (tuple, list)) - assert isinstance(putative_marker_genes[0], str) - volcano_data = posterior_samples["gene_ranking"] + volcano_data: DataFrame = posterior_samples["gene_ranking"] genes = putative_marker_genes elif "u" in posterior_samples: volcano_data, genes = compute_volcano_data( @@ -67,33 +67,16 @@ def plot_gene_ranking( negative, ) else: - volcano_data = posterior_samples["gene_ranking"] + volcano_data: DataFrame = posterior_samples["gene_ranking"] genes = posterior_samples["genes"] - if truncate_lower_mae_percentile > 0: - genes_to_preserve = set(putative_marker_genes or []) | set( - selected_genes - ) - - preserved_genes_data = volcano_data[ - volcano_data.index.isin(genes_to_preserve) - ] - other_genes_data = volcano_data[ - ~volcano_data.index.isin(genes_to_preserve) - ] - - mae_threshold = np.percentile( - other_genes_data["mean_mae"], - truncate_lower_mae_percentile, - ) - filtered_other_genes = other_genes_data[ - other_genes_data["mean_mae"] >= mae_threshold - ] - - volcano_data = pandas.concat( - [preserved_genes_data, filtered_other_genes] - ) - + volcano_data["percentile"] = volcano_data["mean_mae"].rank( + pct=True, ascending=False + ) + volcano_data["inverted_percentile"] = 1 - volcano_data["percentile"] + volcano_mask = ( + volcano_data["inverted_percentile"] >= truncate_lower_mae_percentile + ) adjust_text_compatible = is_adjust_text_compatible() defaultdotsize = 3 @@ -109,7 +92,10 @@ def plot_gene_ranking( volcano_data["time_correlation"], bins="auto", density=False ) mean_mae_hist, mean_mae_bins = np.histogram( - volcano_data["mean_mae"], bins="auto", density=False + # a=volcano_data["mean_mae"], + a=volcano_data[volcano_mask]["inverted_percentile"], + bins="auto", + density=False, ) if gs is None: @@ -190,9 +176,10 @@ def plot_gene_ranking( ax.set_label("gene_selection") sns.scatterplot( x="time_correlation", - y="mean_mae", + # y="mean_mae", + y="inverted_percentile", hue="selected genes", - data=volcano_data, + data=volcano_data[volcano_mask], s=defaultdotsize, linewidth=0, ax=ax, @@ -204,10 +191,11 @@ def plot_gene_ranking( volcano_data["time_correlation"].min(), volcano_data["time_correlation"].max(), ) - y_min, y_max = ( - volcano_data["mean_mae"].min(), - volcano_data["mean_mae"].max(), - ) + # y_min, y_max = ( + # volcano_data["mean_mae"].min(), + # volcano_data["mean_mae"].max(), + # ) + y_min, y_max = truncate_lower_mae_percentile, 1.0 padding = 0.1 x_range = (x_max - x_min) * padding @@ -220,12 +208,21 @@ def plot_gene_ranking( ax.set_ylabel("") if show_xy_labels: ax.set_xlabel( - "shared time correlation\nwith spliced expression", + "shared time correlation with spliced expression", fontsize=defaultfontsize, ) - ax.set_ylabel("negative mean\nabsolute error", fontsize=defaultfontsize) + # ax.set_ylabel("negative mean\nabsolute error", fontsize=defaultfontsize) + ax.set_ylabel( + "mean absolute error percentile", fontsize=defaultfontsize + ) else: - ax.set_yticklabels([]) + # ax.set_yticklabels([], fontsize=defaultfontsize) + ax.yaxis.set_major_formatter( + ticker.FuncFormatter( + percentile_formatter(truncate_lower_mae_percentile) + ) + ) + ax.tick_params(axis="y", direction="in", pad=-12) sns.despine() ax.tick_params(labelsize=defaultfontsize - 1) ax.tick_params(axis="x", top=False, which="both") @@ -237,14 +234,14 @@ def plot_gene_ranking( for i, g in enumerate(genes): ax.scatter( volcano_data.loc[g, :].time_correlation, - volcano_data.loc[g, :].mean_mae, + volcano_data.loc[g, :].inverted_percentile, s=15, color=dark_orange if g in selected_genes else light_orange, marker="*", ) new_text = ax.text( volcano_data.loc[g, :].time_correlation, - volcano_data.loc[g, :].mean_mae, + volcano_data.loc[g, :].inverted_percentile, g, fontsize=defaultfontsize - 1, color="black", @@ -289,6 +286,19 @@ def plot_gene_ranking( return volcano_data, fig +@beartype +def percentile_formatter( + lower_percentile: float, upper_percentile: float = 1.0 +) -> Callable: + def custom_formatter(x, pos): + if abs(x - lower_percentile) < 1e-6 or abs(x - upper_percentile) < 1e-6: + return f"{round(abs(1-x),2):.1f}" + else: + return "" + + return custom_formatter + + def is_adjust_text_compatible(): """Check if the current backend supports adjust_text.""" try: From 8af8450d368f715ec0bc73e36f93326906f6a196 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sat, 14 Sep 2024 00:23:19 -0400 Subject: [PATCH 145/177] fix(analysis): update compute volcano data interface types Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index d06db3fb5..07c692d36 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -9,7 +9,10 @@ from anndata import AnnData from astropy.stats import rayleightest from beartype import beartype +from beartype.typing import Any from numpy import ndarray +from numpy.typing import NDArray +from pandas import DataFrame from sklearn.pipeline import Pipeline from pyrovelocity.analysis.cytotrace import compute_similarity2 @@ -141,7 +144,7 @@ def compute_mean_vector_field( @beartype def compute_volcano_data( # posterior_samples: List[Dict[str, ndarray]], - posterior_samples: Dict[str, ndarray], + posterior_samples: Dict[str, NDArray[Any] | DataFrame], # adata: List[AnnData], adata: AnnData, time_correlation_with: str = "s", From 24c3f275052c9ff580121e5b1f8bd07da979be59 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Sun, 15 Sep 2024 00:09:38 -0400 Subject: [PATCH 146/177] fix(utils): include type in dictionary log Signed-off-by: Cameron Smith --- src/pyrovelocity/utils.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/pyrovelocity/utils.py b/src/pyrovelocity/utils.py index 743498f26..5f06fc409 100644 --- a/src/pyrovelocity/utils.py +++ b/src/pyrovelocity/utils.py @@ -177,18 +177,13 @@ def print_attributes(obj): def pretty_log_dict(d: dict) -> str: dict_as_string = "\n" for key, value in d.items(): - # key_colored = colored(key, "green") key_colored = key if isinstance(value, ArrayLike): value_colored = f"{value.shape} {value.dtype}" else: value_lines = str(value).split("\n") - value_colored = "\n".join( - # colored(line, "white") for line in value_lines - line - for line in value_lines - ) - dict_as_string += f"{key_colored}:\n{value_colored}\n" + value_colored = "\n".join(line for line in value_lines) + dict_as_string += f"{key_colored}:\n{type(value)}\n{value_colored}\n\n" return dict_as_string From c0a0d27e81f310695a71048cc701a8f48f342f3b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 16 Sep 2024 02:29:49 -0400 Subject: [PATCH 147/177] fix(plots): make mae scale default for gene ranking Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 57 ++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index 85ce9cba5..e0c577074 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -92,8 +92,8 @@ def plot_gene_ranking( volcano_data["time_correlation"], bins="auto", density=False ) mean_mae_hist, mean_mae_bins = np.histogram( - # a=volcano_data["mean_mae"], - a=volcano_data[volcano_mask]["inverted_percentile"], + a=volcano_data["mean_mae"], + # a=volcano_data[volcano_mask]["inverted_percentile"], bins="auto", density=False, ) @@ -176,8 +176,8 @@ def plot_gene_ranking( ax.set_label("gene_selection") sns.scatterplot( x="time_correlation", - # y="mean_mae", - y="inverted_percentile", + y="mean_mae", + # y="inverted_percentile", hue="selected genes", data=volcano_data[volcano_mask], s=defaultdotsize, @@ -191,11 +191,11 @@ def plot_gene_ranking( volcano_data["time_correlation"].min(), volcano_data["time_correlation"].max(), ) - # y_min, y_max = ( - # volcano_data["mean_mae"].min(), - # volcano_data["mean_mae"].max(), - # ) - y_min, y_max = truncate_lower_mae_percentile, 1.0 + y_min, y_max = ( + volcano_data["mean_mae"].min(), + volcano_data["mean_mae"].max(), + ) + # y_min, y_max = truncate_lower_mae_percentile, 1.0 padding = 0.1 x_range = (x_max - x_min) * padding @@ -206,27 +206,34 @@ def plot_gene_ranking( ax.set_xlabel("") ax.set_ylabel("") + + ax.tick_params(labelsize=defaultfontsize - 1) + ax.tick_params(axis="x", top=False, which="both") + ax.tick_params(axis="y", right=False, which="both") + if show_xy_labels: ax.set_xlabel( "shared time correlation with spliced expression", fontsize=defaultfontsize, ) - # ax.set_ylabel("negative mean\nabsolute error", fontsize=defaultfontsize) - ax.set_ylabel( - "mean absolute error percentile", fontsize=defaultfontsize - ) + ax.set_ylabel("negative mean absolute error", fontsize=defaultfontsize) + # ax.set_ylabel( + # "mean absolute error percentile", fontsize=defaultfontsize + # ) else: - # ax.set_yticklabels([], fontsize=defaultfontsize) - ax.yaxis.set_major_formatter( - ticker.FuncFormatter( - percentile_formatter(truncate_lower_mae_percentile) - ) + yticks = ax.get_yticks() + logger.info( + f"\nyticks: {yticks}\n", ) - ax.tick_params(axis="y", direction="in", pad=-12) + ax.set_yticklabels([], fontsize=defaultfontsize) + ax.tick_params(axis="y", direction="in", pad=-20, labelsize=4) + # ax.yaxis.set_major_formatter( + # ticker.FuncFormatter( + # percentile_formatter(truncate_lower_mae_percentile) + # ) + # ) + sns.despine() - ax.tick_params(labelsize=defaultfontsize - 1) - ax.tick_params(axis="x", top=False, which="both") - ax.tick_params(axis="y", right=False, which="both") texts = [] light_orange = "#ffb343" @@ -234,14 +241,16 @@ def plot_gene_ranking( for i, g in enumerate(genes): ax.scatter( volcano_data.loc[g, :].time_correlation, - volcano_data.loc[g, :].inverted_percentile, + # volcano_data.loc[g, :].inverted_percentile, + volcano_data.loc[g, :].mean_mae, s=15, color=dark_orange if g in selected_genes else light_orange, marker="*", ) new_text = ax.text( volcano_data.loc[g, :].time_correlation, - volcano_data.loc[g, :].inverted_percentile, + # volcano_data.loc[g, :].inverted_percentile, + volcano_data.loc[g, :].mean_mae, g, fontsize=defaultfontsize - 1, color="black", From 44cd705f5e2f79e997f0a4d0186f4df48297ae01 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 16 Sep 2024 13:10:26 -0400 Subject: [PATCH 148/177] fix(plots): remove unused comment from posterior predictive extrapolation Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_predictive.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/pyrovelocity/plots/_predictive.py b/src/pyrovelocity/plots/_predictive.py index 7ad0adef8..5b331e8d9 100644 --- a/src/pyrovelocity/plots/_predictive.py +++ b/src/pyrovelocity/plots/_predictive.py @@ -321,19 +321,6 @@ def extrapolate_prediction_sample_predictive( u_log_library_scale = tensor_dict["u_lib_size_scale"] s_log_library_scale = tensor_dict["s_lib_size_scale"] ind_x = tensor_dict["ind_x"].long().squeeze() - # dummy_obs = ( - # torch.tensor(u_obs).to("cuda:0"), - # torch.tensor(s_obs).to("cuda:0"), - # torch.tensor(u_log_library).to("cuda:0"), - # torch.tensor(s_log_library).to("cuda:0"), - # torch.tensor(u_log_library_mean).to("cuda:0"), - # torch.tensor(s_log_library_mean).to("cuda:0"), - # torch.tensor(u_log_library_scale).to("cuda:0"), - # torch.tensor(s_log_library_scale).to("cuda:0"), - # torch.tensor(ind_x).to("cuda:0"), - # None, - # None, - # ) dummy_obs = ( torch.tensor(u_obs), torch.tensor(s_obs), From 8174ff9ae2ef813bd82b939ea2a7d332276ea99c Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 16 Sep 2024 13:12:07 -0400 Subject: [PATCH 149/177] fix(plots): remove additional unused comments from posterior predictive extrapolation Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_predictive.py | 36 --------------------------- 1 file changed, 36 deletions(-) diff --git a/src/pyrovelocity/plots/_predictive.py b/src/pyrovelocity/plots/_predictive.py index 5b331e8d9..3e5f32494 100644 --- a/src/pyrovelocity/plots/_predictive.py +++ b/src/pyrovelocity/plots/_predictive.py @@ -60,7 +60,6 @@ def posterior_curve( output_fig_objects = [] for figi, gene in enumerate(gene_set): (index,) = np.where(adata.var_names == gene) - # print(adata.shape, index, posterior_samples["st_mean"].shape) fig, ax = plt.subplots(3, 4) fig.set_size_inches(15, 10) @@ -90,7 +89,6 @@ def posterior_curve( grid_cell_time.mean(0).flatten() < t0_sample ] = 0 grid_cell_colors = colors[grid_mask_t0_sample] - # print(grid_time_samples_st.shape) im = ax[sample].scatter( posterior_samples["st_mean"][:, index[0]], @@ -163,13 +161,6 @@ def posterior_curve( :, index[0] ].flatten() - ##u0 = posterior_samples['u_offset'][sample][:, index[0]].flatten() - ##s0 = posterior_samples['s_offset'][sample][:, index[0]].flatten() - ##u_inf = posterior_samples['u_inf'][sample][:, index[0]].flatten() - ##s_inf = posterior_samples['s_inf'][sample][:, index[0]].flatten() - ##switching = posterior_samples['switching'][sample][:, index[0]].flatten() - ##dt_switching = posterior_samples['dt_switching'][sample][:, index[0]].flatten() - ax[sample + 4].scatter( t0_sample, u0 * uscale, @@ -219,20 +210,6 @@ def posterior_curve( linewidth=0.5, c="black", ) - # ax[sample].plot(grid_time_samples_st[sample][:, index[0]], - # grid_time_samples_ut[sample][:, index[0]], - # linestyle="--", linewidth=3, color='g') - # if sample == 0: - # print(gene, u0 * uscale, s0) - # print(gene, u_inf * uscale, s_inf) - # print( - # t0_sample, - # dt_switching_sample, - # cell_time_sample_min, - # cell_time_sample_max, - # (cell_time_sample <= t0_sample).sum(), - # ) - # print(cell_time_sample.shape) switching = t0_sample + dt_switching_sample state0 = (cell_gene_state_grid == 0) & ( @@ -311,7 +288,6 @@ def extrapolate_prediction_sample_predictive( posterior_samples_list = [] for tensor_dict in scdl: - # print("--------------------") u_obs = tensor_dict["U"] s_obs = tensor_dict["X"] u_log_library = tensor_dict["u_lib_size"] @@ -396,7 +372,6 @@ def extrapolate_prediction_sample_predictive( axis=-3, ) ) - # ).to("cuda:0") posterior_samples_new_tmp = Predictive( pyro.poutine.uncondition( @@ -408,7 +383,6 @@ def extrapolate_prediction_sample_predictive( posterior_samples_new_tmp[key] = posterior_samples[key] posterior_samples_list.append(posterior_samples_new_tmp) - # print(len(posterior_samples_list)) posterior_samples_new = {} for key in posterior_samples_list[0].keys(): if posterior_samples_list[0][key].shape[-2] == 1: @@ -417,12 +391,6 @@ def extrapolate_prediction_sample_predictive( posterior_samples_new[key] = torch.concat( [element[key] for element in posterior_samples_list], axis=-2 ) - # posterior_samples_new = model.generate_posterior_samples( - # adata=adata, batch_size=512, num_samples=8 - # ) - - # for key in posterior_samples_new.keys(): - # print(posterior_samples_new[key].shape) grid_time_samples_ut = posterior_samples_new["ut"] grid_time_samples_st = posterior_samples_new["st"] @@ -443,10 +411,6 @@ def extrapolate_prediction_sample_predictive( grid_time_samples_uscale = np.ones(grid_time_samples_uinf.shape) grid_time_samples_state = posterior_samples_new["cell_gene_state"] - # print(grid_time_samples_state.shape) - # print(grid_time_samples_uscale.shape) - # print(grid_time_samples_ut.shape) - # print(grid_time_samples_st.shape) if isinstance(grid_time_samples_state, np.ndarray): return ( grid_time_samples_ut, From 0ac2cdfc277a33a8ef5624243ab72cdaef7f5d73 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 01:27:07 -0400 Subject: [PATCH 150/177] fix(analysis): update mae_per_gene function and add docstring Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 77 ++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index 07c692d36..189e8efbe 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -327,11 +327,78 @@ def vector_field_uncertainty( return v_map_all, embeds_radian, fdri -def mae_per_gene(pred_counts: ndarray, true_counts: ndarray) -> ndarray: - """Computes mean average error between counts and predicted probabilities.""" - error = np.abs(true_counts - pred_counts).sum(-2) - total = np.clip(true_counts.sum(-2), 1, np.inf) - return -np.array(error / total) +@beartype +def mae_per_gene( + pred_counts: NDArray[np.number], + true_counts: NDArray[np.number], +) -> NDArray[np.number]: + """ + Computes mean absolute error (MAE) between predictive samples and true counts. + + The function returns the negative of the normalized MAE for + consistency with the convention that higher values should indicate + better performance in visualizations. + + TODO: convert to jax + + ```python + import jax.numpy as jnp + from jaxtyping import Array, Num, jaxtyped + + @jaxtyped(typechecker=beartype) + def mae_per_gene( + pred_counts: Num[Array, "obs vars"], + true_counts: Num[Array, "obs vars"], + ) -> Num[Array, "vars"]: + pass + ``` + + Args: + pred_counts (NDArray[np.number]): Predicted counts for all observations. + true_counts (NDArray[np.number]): Observed counts for all observations. + + Returns: + NDArray[np.number]: Negative mean absolute error for each gene. + + Example: + >>> import numpy as np + >>> from pyrovelocity.analysis.analyze import mae_per_gene + >>> true_counts = np.array( + ... [ + ... [1, 2, 3], + ... [1, 2, 3], + ... [1, 2, 3], + ... [1, 2, 3], + ... ] + ... ) + >>> pred_counts = np.array( + ... [ + ... [1.1, 2.2, 3.3], + ... [1.1, 2.2, 3.3], + ... [1.1, 2.2, 3.3], + ... [1.1, 2.2, 3.3], + ... ] + ... ) + >>> mae_per_gene(pred_counts, true_counts) + array([-0.1, -0.1, -0.1]) + >>> true_counts = np.array( + ... [ + ... [10, 15], + ... [20, 25], + ... ] + ... ) + >>> pred_counts = np.array( + ... [ + ... [12, 14], + ... [18, 26], + ... ] + ... ) + >>> mae_per_gene(pred_counts, true_counts) + array([-0.133..., -0.05... ]) + """ + total_true_counts = np.maximum(true_counts.sum(axis=0), 1) + mae = np.abs(true_counts - pred_counts).sum(axis=0) / total_true_counts + return -mae @beartype From d62db2fa19725da296d995c71ea0c94b39745d54 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 01:27:59 -0400 Subject: [PATCH 151/177] fix(analysis): remove unused comments from compute_volcano_data Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index 189e8efbe..33f1b8235 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -143,24 +143,18 @@ def compute_mean_vector_field( @beartype def compute_volcano_data( - # posterior_samples: List[Dict[str, ndarray]], posterior_samples: Dict[str, NDArray[Any] | DataFrame], - # adata: List[AnnData], adata: AnnData, time_correlation_with: str = "s", selected_genes: Optional[List[str]] = None, negative: bool = False, ) -> Tuple[pd.DataFrame, List[str]]: - # assert isinstance(posterior_samples, (tuple, list)) - # assert isinstance(adata, (tuple, list)) assert "s" in posterior_samples assert "alpha" in posterior_samples maes_list = [] cors = [] genes = [] - # labels = [] - # switching = [] for sample in range(posterior_samples["alpha"].shape[0]): maes_list.append( @@ -175,27 +169,10 @@ def compute_volcano_data( ) cors.append(df_genes_cors[0]) genes.append(adata.var_names.values) - # labels.append([f"Poisson_{label}"] * len(adata.var_names.values)) - # for p, ad, label in zip(posterior_samples, adata, ["train", "valid"]): - # for sample in range(p["alpha"].shape[0]): - # maes_list.append( - # mae_per_gene( - # p["s"][sample].squeeze(), - # ensure_numpy_array(ad.layers["raw_spliced"]), - # ) - # ) - # df_genes_cors = compute_similarity2( - # p[time_correlation_with][sample].squeeze(), - # p["cell_time"][sample].squeeze().reshape(-1, 1), - # ) - # cors.append(df_genes_cors[0]) - # genes.append(ad.var_names.values) - # labels.append([f"Poisson_{label}"] * len(ad.var_names.values)) volcano_data = pd.DataFrame( { "mean_mae": np.hstack(maes_list), - # "label": np.hstack(labels), "time_correlation": np.hstack(cors), "genes": np.hstack(genes), } From c2ede448d705b9dac4ac495d71f364785ad7eebc Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 01:30:28 -0400 Subject: [PATCH 152/177] fix(plots): optionally force recomputation of volcano data Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_genes.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pyrovelocity/plots/_genes.py b/src/pyrovelocity/plots/_genes.py index e0c577074..e3de4ffab 100644 --- a/src/pyrovelocity/plots/_genes.py +++ b/src/pyrovelocity/plots/_genes.py @@ -54,17 +54,18 @@ def plot_gene_ranking( defaultfontsize=7, show_xy_labels: bool = False, truncate_lower_mae_percentile: float = 0.0, + recompute_volcano_data: bool = False, ) -> Tuple[DataFrame, Optional[FigureBase]]: if putative_marker_genes is not None: volcano_data: DataFrame = posterior_samples["gene_ranking"] genes = putative_marker_genes - elif "u" in posterior_samples: + elif "u" in posterior_samples or recompute_volcano_data: volcano_data, genes = compute_volcano_data( - posterior_samples, - adata, - time_correlation_with, - putative_marker_genes, - negative, + posterior_samples=posterior_samples, + adata=adata, + time_correlation_with=time_correlation_with, + selected_genes=putative_marker_genes, + negative=negative, ) else: volcano_data: DataFrame = posterior_samples["gene_ranking"] From f31d116919f9892fb91542a33635555946ed4554 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 01:35:46 -0400 Subject: [PATCH 153/177] fix(plots): parameterize inclusion of complete angular scale Signed-off-by: Cameron Smith --- src/pyrovelocity/plots/_vector_fields.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pyrovelocity/plots/_vector_fields.py b/src/pyrovelocity/plots/_vector_fields.py index 1373d5677..125988a19 100644 --- a/src/pyrovelocity/plots/_vector_fields.py +++ b/src/pyrovelocity/plots/_vector_fields.py @@ -94,6 +94,7 @@ def plot_vector_field_summary( save_fig: bool = False, linewidth: float = 0.5, title_background_color: str = "#F0F0F0", + force_complete_angular_scale: bool = False, ) -> FigureBase: posterior_time = posterior_samples["cell_time"] pca_embeds_angle = posterior_samples["pca_embeds_angle"] @@ -216,6 +217,7 @@ def plot_vector_field_summary( cmap="inferno", cmax=None, show_titles=False, + force_complete_angular_scale=force_complete_angular_scale, ) ax[3].set_title( r"PCA angle uncertainty" @@ -314,7 +316,7 @@ def plot_vector_field_summary( r"$\left.\hat{\sigma}(t) \right/ \hat{\mu}(t)$", ] colorbar_ticks = [ - [0, 360], + [0, 360] if force_complete_angular_scale else [], [0, 1], [], ] @@ -394,6 +396,7 @@ def plot_vector_field_uncertainty( show_titles: bool = True, default_fontsize: int = 7, plot_individual_obs: bool = False, + force_complete_angular_scale: bool = False, ): if uncertain_measure == "angle": adata.obs["uncertain"] = get_posterior_sample_angle_uncertainty( @@ -489,11 +492,9 @@ def plot_vector_field_uncertainty( norm=None, vmin=0 if "angle" in uncertain_measure - # else np.percentile(ordered_uncertainty_measure, 0.1), else min(ordered_uncertainty_measure), vmax=360 - if "angle" in uncertain_measure - # else np.percentile(ordered_uncertainty_measure, 99.9), + if force_complete_angular_scale else max(ordered_uncertainty_measure), s=dotsize, linewidth=1, @@ -510,7 +511,7 @@ def plot_vector_field_uncertainty( if "angle" in uncertain_measure else min(ordered_uncertainty_measure), vmax=360 - if "angle" in uncertain_measure + if force_complete_angular_scale else max(ordered_uncertainty_measure), linewidths=0, edgecolors="none", From 46ad2b531d76e44d82d6d348c195ee13ccbefe2d Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 12:13:28 -0400 Subject: [PATCH 154/177] fix(analysis): add shadow support for jax arrays Signed-off-by: Cameron Smith --- src/pyrovelocity/analysis/analyze.py | 69 ++++++++++++++++++---------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/src/pyrovelocity/analysis/analyze.py b/src/pyrovelocity/analysis/analyze.py index 33f1b8235..049302f3c 100644 --- a/src/pyrovelocity/analysis/analyze.py +++ b/src/pyrovelocity/analysis/analyze.py @@ -10,6 +10,7 @@ from astropy.stats import rayleightest from beartype import beartype from beartype.typing import Any +from jaxtyping import Array, Num, jaxtyped from numpy import ndarray from numpy.typing import NDArray from pandas import DataFrame @@ -304,11 +305,11 @@ def vector_field_uncertainty( return v_map_all, embeds_radian, fdri -@beartype +@jaxtyped(typechecker=beartype) def mae_per_gene( - pred_counts: NDArray[np.number], - true_counts: NDArray[np.number], -) -> NDArray[np.number]: + pred_counts: NDArray[np.number] | Num[Array, "obs vars"], + true_counts: NDArray[np.number] | Num[Array, "obs vars"], +) -> NDArray[np.number] | Num[Array, "vars"]: """ Computes mean absolute error (MAE) between predictive samples and true counts. @@ -316,7 +317,7 @@ def mae_per_gene( consistency with the convention that higher values should indicate better performance in visualizations. - TODO: convert to jax + TODO: use jax and deprecate numpy ```python import jax.numpy as jnp @@ -331,16 +332,21 @@ def mae_per_gene( ``` Args: - pred_counts (NDArray[np.number]): Predicted counts for all observations. - true_counts (NDArray[np.number]): Observed counts for all observations. + pred_counts (NDArray[np.number] | Num[Array, "obs vars"]): + Predicted counts for all observations. + true_counts (NDArray[np.number] | Num[Array, "obs vars"]): + Observed counts for all observations. Returns: - NDArray[np.number]: Negative mean absolute error for each gene. + NDArray[np.number] | Num[Array, "vars"]: Negative mean absolute error for each gene. Example: - >>> import numpy as np >>> from pyrovelocity.analysis.analyze import mae_per_gene - >>> true_counts = np.array( + >>> import numpy as np + >>> xp = np + >>> # import jax.numpy as jnp + >>> # xp = jnp + >>> true_counts = xp.array( ... [ ... [1, 2, 3], ... [1, 2, 3], @@ -348,7 +354,7 @@ def mae_per_gene( ... [1, 2, 3], ... ] ... ) - >>> pred_counts = np.array( + >>> pred_counts = xp.array( ... [ ... [1.1, 2.2, 3.3], ... [1.1, 2.2, 3.3], @@ -356,26 +362,41 @@ def mae_per_gene( ... [1.1, 2.2, 3.3], ... ] ... ) - >>> mae_per_gene(pred_counts, true_counts) - array([-0.1, -0.1, -0.1]) - >>> true_counts = np.array( + >>> mae = mae_per_gene(pred_counts, true_counts) + >>> print(mae) + >>> result = xp.allclose( + ... mae, xp.array([-0.1, -0.1, -0.1]), rtol=1e-2, atol=1e-2 + ... ) + >>> print(result.item() if hasattr(result, 'item') else result) + True + >>> true_counts = xp.array( ... [ - ... [10, 15], - ... [20, 25], + ... [10, 15, 0], + ... [20, 25, 0], ... ] ... ) - >>> pred_counts = np.array( + >>> pred_counts = xp.array( ... [ - ... [12, 14], - ... [18, 26], + ... [12, 14, 0], + ... [18, 26, 0], ... ] ... ) - >>> mae_per_gene(pred_counts, true_counts) - array([-0.133..., -0.05... ]) + >>> mae = mae_per_gene(pred_counts, true_counts) + >>> print(mae) + >>> result = xp.allclose( + ... mae, xp.array([-0.133, -0.05, -0.]), rtol=1e-2, atol=1e-2 + ... ) + >>> print(result.item() if hasattr(result, 'item') else result) + True """ - total_true_counts = np.maximum(true_counts.sum(axis=0), 1) - mae = np.abs(true_counts - pred_counts).sum(axis=0) / total_true_counts - return -mae + xp = np + mean_true_counts = xp.mean(true_counts, axis=0) + absolute_errors = xp.abs(true_counts - pred_counts) + mae = xp.mean(absolute_errors, axis=0) + + normalized_mae = xp.nan_to_num(mae / mean_true_counts, nan=0.0, posinf=0.0) + + return -normalized_mae @beartype From 40a01254e97d5e671f01e7126c3e532773183c96 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 12:21:04 -0400 Subject: [PATCH 155/177] test(analysis): add basic tests for mae_per_gene Signed-off-by: Cameron Smith --- .../tests/analysis/test_analyze.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/pyrovelocity/tests/analysis/test_analyze.py b/src/pyrovelocity/tests/analysis/test_analyze.py index ef6238b56..a1e2446f8 100644 --- a/src/pyrovelocity/tests/analysis/test_analyze.py +++ b/src/pyrovelocity/tests/analysis/test_analyze.py @@ -1,9 +1,11 @@ from typing import List +import numpy as np import pandas as pd import pytest from pyrovelocity.analysis.analyze import ( + mae_per_gene, pareto_frontier_genes, top_mae_genes, ) @@ -53,6 +55,48 @@ def sample_volcano_data_with_ribosomal() -> pd.DataFrame: ) +@pytest.mark.parametrize("xp", [np]) +def test_mae_per_gene_basic(xp): + true_counts = xp.array( + [ + [1, 2, 3], + [1, 2, 3], + [1, 2, 3], + [1, 2, 3], + ] + ) + pred_counts = xp.array( + [ + [1.1, 2.2, 3.3], + [1.1, 2.2, 3.3], + [1.1, 2.2, 3.3], + [1.1, 2.2, 3.3], + ] + ) + mae = mae_per_gene(pred_counts, true_counts) + assert xp.allclose(mae, xp.array([-0.1, -0.1, -0.1]), rtol=1e-2, atol=1e-2) + + +@pytest.mark.parametrize("xp", [np]) +def test_mae_per_gene_zero_counts(xp): + true_counts = xp.array( + [ + [10, 15, 0], + [20, 25, 0], + ] + ) + pred_counts = xp.array( + [ + [12, 14, 0], + [18, 26, 0], + ] + ) + mae = mae_per_gene(pred_counts, true_counts) + assert xp.allclose( + mae, xp.array([-0.133, -0.05, -0.0]), rtol=1e-2, atol=1e-2 + ) + + def test_pareto_frontier_genes_basic(sample_volcano_data): result = pareto_frontier_genes( sample_volcano_data, num_genes=3, max_iters=1000 From 3986cd4e85c161500d8679d8cc7a792f308ef9c7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 18:04:08 -0400 Subject: [PATCH 156/177] feat(tests): add function to generate fixture data Signed-off-by: Cameron Smith --- .../fixtures/generate_anndata_fixtures.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py diff --git a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py new file mode 100644 index 000000000..1ef2cb21e --- /dev/null +++ b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py @@ -0,0 +1,80 @@ +""" +Execute this script to generate test fixture data: + +python src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py + +This script should not be executed by pytest. +It is used to generate test fixture data. +""" + +from pathlib import Path + +from anndata import AnnData + +from pyrovelocity.io.datasets import pancreas +from pyrovelocity.io.serialization import ( + save_anndata_to_json, +) +from pyrovelocity.tasks.preprocess import preprocess_dataset +from pyrovelocity.utils import configure_logging, print_anndata +from pyrovelocity.workflows.main_configuration import ( + pancreas_summary_configuration, +) + +__all__ = ["generate_pancreas_fixture_data"] + +logger = configure_logging(__name__) + + +def generate_pancreas_fixture_data( + output_path: str + | Path = "src/pyrovelocity/tests/data/preprocessed_pancreas.json", + n_obs: int = 50, + n_vars: int = 7, +) -> Path: + """ + Generate a test fixture for the pancreas dataset. + + Args: + output_path: Path to save the JSON fixture. + n_obs: Number of observations to keep. + n_vars: Number of variables to keep. + """ + output_path = Path(output_path) + + adata: AnnData = pancreas() + + adata, _, _ = preprocess_dataset( + data_set_name="pancreas", + adata=adata, + use_obs_subset=True, + n_obs_subset=n_obs, + use_vars_subset=True, + n_vars_subset=n_vars, + process_cytotrace=True, + ) + + selected_genes = pancreas_summary_configuration.selected_genes + selected_genes_in_adata = [ + gene for gene in selected_genes if gene in adata.var_names + ] + if len(selected_genes_in_adata) < len(selected_genes): + logger.warning( + f"Warning: Some selected genes are not in the downsampled data:", + f"{set(selected_genes) - set(selected_genes_in_adata)}", + ) + + genes_to_keep = list( + set(adata.var_names[:n_vars].tolist() + selected_genes_in_adata) + ) + adata = adata[:, genes_to_keep] + + print_anndata(adata) + save_anndata_to_json(adata, output_path) + + logger.info(f"Test fixture saved to {output_path}") + return output_path + + +if __name__ == "__main__": + generate_pancreas_fixture_data() From a7ec817a35e9c350fdf35fbeca9d5e28414f9633 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 18:18:32 -0400 Subject: [PATCH 157/177] feat(tests): test ability to load and log data string diff with serialized Signed-off-by: Cameron Smith --- .../fixtures/generate_anndata_fixtures.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py index 1ef2cb21e..b32016982 100644 --- a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py +++ b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py @@ -13,10 +13,16 @@ from pyrovelocity.io.datasets import pancreas from pyrovelocity.io.serialization import ( + load_anndata_from_json, save_anndata_to_json, ) from pyrovelocity.tasks.preprocess import preprocess_dataset -from pyrovelocity.utils import configure_logging, print_anndata +from pyrovelocity.utils import ( + anndata_string, + configure_logging, + print_anndata, + print_string_diff, +) from pyrovelocity.workflows.main_configuration import ( pancreas_summary_configuration, ) @@ -68,11 +74,27 @@ def generate_pancreas_fixture_data( set(adata.var_names[:n_vars].tolist() + selected_genes_in_adata) ) adata = adata[:, genes_to_keep] + preprocessed_anndata_string = anndata_string(adata) print_anndata(adata) save_anndata_to_json(adata, output_path) logger.info(f"Test fixture saved to {output_path}") + + try: + logger.info("Attempting to load the serialized AnnData object...") + loaded_adata = load_anndata_from_json(output_path) + loaded_anndata_string = anndata_string(loaded_adata) + logger.info("Successfully loaded the serialized AnnData object.") + print_string_diff( + text1=preprocessed_anndata_string, + text2=loaded_anndata_string, + diff_title="Preprocessed vs Loaded AnnData", + ) + print_anndata(loaded_adata) + except Exception as e: + logger.error(f"Error loading serialized AnnData object: {str(e)}") + return output_path From 6d376d9eb600eccabb3a42a150d52c5472d34c8a Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 18:19:02 -0400 Subject: [PATCH 158/177] fix(tests): add serialization test for uns dict with nested numpy array Signed-off-by: Cameron Smith --- .../tests/io/test_serialization.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/pyrovelocity/tests/io/test_serialization.py b/src/pyrovelocity/tests/io/test_serialization.py index 90d6265bc..f2ac4d42f 100644 --- a/src/pyrovelocity/tests/io/test_serialization.py +++ b/src/pyrovelocity/tests/io/test_serialization.py @@ -125,6 +125,25 @@ def test_serialize_deserialize_with_complex_uns(): ) +def test_serialize_deserialize_with_nested_numpy_array_in_uns(sample_adata): + adata = sample_adata.copy() + adata.uns["numpy_array"] = np.array([1, 2, 3]) + adata.uns["nested_dict"] = {"array": np.array([4, 5, 6])} + + serialized = serialize_anndata(adata) + deserialized = deserialize_anndata(serialized) + + assert isinstance(deserialized.uns["numpy_array"], np.ndarray) + assert np.array_equal( + adata.uns["numpy_array"], deserialized.uns["numpy_array"] + ) + assert isinstance(deserialized.uns["nested_dict"]["array"], np.ndarray) + assert np.array_equal( + adata.uns["nested_dict"]["array"], + deserialized.uns["nested_dict"]["array"], + ) + + def test_load_anndata_from_nonexistent_file(): with pytest.raises(FileNotFoundError): load_anndata_from_json("nonexistent_file.json") From 0c71a689ed49c07866c23a2e72be6b9df3112162 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 18:22:13 -0400 Subject: [PATCH 159/177] feat(tests): add preprocessed pancreas 50x13 fixture data Signed-off-by: Cameron Smith --- .../data/preprocessed_pancreas_50_13.json | 2178 +++++++++++++++++ 1 file changed, 2178 insertions(+) create mode 100644 src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json diff --git a/src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json b/src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json new file mode 100644 index 000000000..6c30b6f0c --- /dev/null +++ b/src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json @@ -0,0 +1,2178 @@ +{ + "shape": [50, 13], + "obs": { + "index": [ + "CAGCATAGTTGCGCAC", + "ACACCCTAGGACAGCT", + "CTAGTGAGTTTGGCGC", + "TGTGGTACAGTCGATT", + "CAAGGCCTCTCAACTT", + "CGGGTCAGTCACTGGC", + "AACTGGTTCTTACCGC", + "AAACGGGTCAGCTCTC", + "AGATTGCGTCTGGAGA", + "AACCATGGTTGAACTC", + "GTTTCTAGTGCTTCTC", + "TTTGGTTAGACAGGCT", + "TCCCGATCAGTCAGCC", + "ATTCTACGTTTAGGAA", + "GATTCAGGTCCGACGT", + "ACTGATGCATCAGTAC", + "TAGCCGGTCAATCACG", + "CTACACCGTCGCCATG", + "CCTACACCAGCGAACA", + "GCTGCTTTCTGGTGTA", + "TGCTACCAGTTTCCTT", + "ACGAGCCCACCTTGTC", + "GCATGATAGGATGGTC", + "AAGACCTTCTGACCTC", + "AGCAGCCGTCGCATCG", + "GCAATCAGTGTTAAGA", + "CTGGTCTAGGTGATTA", + "AGGGTGAGTGCGAAAC", + "CGGTTAATCTCGTTTA", + "GAGTCCGCATAAGACA", + "CAAGTTGTCTAACTGG", + "AAGACCTAGTAAGTAC", + "GTAACGTGTGCCTGCA", + "AGGCCGTGTGAAATCA", + "GGCGTGTTCAGCTTAG", + "ACGATGTAGAGTGAGA", + "GACGTTATCGGAGCAA", + "CGCGGTACAAACGCGA", + "ATCCGAACACGGTAGA", + "AGAGTGGCACCTCGGA", + "CGACTTCGTGTGGTTT", + "CAGCCGAAGTAGGTGC", + "GACCAATGTAAGAGAG", + "CTAGCCTGTGCGATAG", + "CACCACTGTCGGCTCA", + "GCACATAAGTATCTCG", + "CCGGGATGTGTCAATC", + "AGCTCTCTCCTGCTTG", + "GCGGGTTCAAGTAATG", + "TGTGTTTTCATTCACT" + ], + "clusters_coarse": [ + "Endocrine", + "Ngn3 high EP", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Ductal", + "Ngn3 low EP", + "Ductal", + "Pre-endocrine", + "Endocrine", + "Endocrine", + "Ngn3 low EP", + "Endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Endocrine", + "Ductal", + "Ductal", + "Ngn3 low EP", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Ngn3 high EP", + "Pre-endocrine", + "Endocrine", + "Endocrine", + "Ductal", + "Pre-endocrine", + "Pre-endocrine", + "Endocrine", + "Ngn3 high EP", + "Ductal", + "Endocrine", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Ductal", + "Pre-endocrine", + "Endocrine", + "Ductal", + "Endocrine", + "Ductal", + "Ductal", + "Ductal", + "Ngn3 high EP", + "Ngn3 high EP", + "Endocrine", + "Endocrine" + ], + "clusters": [ + "Beta", + "Ngn3 high EP", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Ductal", + "Ngn3 low EP", + "Ductal", + "Pre-endocrine", + "Beta", + "Alpha", + "Ngn3 low EP", + "Beta", + "Pre-endocrine", + "Ngn3 high EP", + "Beta", + "Ductal", + "Ductal", + "Ngn3 low EP", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Ngn3 high EP", + "Pre-endocrine", + "Epsilon", + "Epsilon", + "Ductal", + "Pre-endocrine", + "Pre-endocrine", + "Alpha", + "Ngn3 high EP", + "Ductal", + "Alpha", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Ductal", + "Pre-endocrine", + "Alpha", + "Ductal", + "Alpha", + "Ductal", + "Ductal", + "Ductal", + "Ngn3 high EP", + "Ngn3 high EP", + "Alpha", + "Alpha" + ], + "S_score": [ + -0.22630095481872559, -0.20675146579742432, -0.3353894054889679, + -0.09509168565273285, -0.10973085463047028, 0.3364957869052887, + -0.03788253664970398, -0.12347911298274994, 0.5614822506904602, + -0.24560028314590454, -0.16220076382160187, -0.1486142873764038, + 0.03927233815193176, -0.24019774794578552, -0.1068091094493866, + -0.03278049826622009, -0.2822374701499939, 0.07667481899261475, + 0.004554927349090576, 0.090004563331604, -0.27468299865722656, + -0.0788775384426117, -0.16026689112186432, -0.0910664051771164, + -0.11147382855415344, -0.17557771503925323, -0.03733953833580017, + -0.26399070024490356, -0.2112804651260376, -0.215547576546669, + -0.10604114830493927, -0.15694434940814972, -0.1162041425704956, + -0.11791162192821503, -0.18583017587661743, 0.03647613525390625, + -0.24028140306472778, -0.0828862339258194, 0.1513555645942688, + -0.14206331968307495, -0.2458702027797699, 0.01110944151878357, + -0.1184825748205185, -0.1375492513179779, -0.02013486623764038, + -0.13548269867897034, -0.1461016684770584, -0.09621983766555786, + -0.16584078967571259, -0.14329449832439423 + ], + "G2M_score": [ + -0.19608090817928314, -0.174663245677948, -0.16875243186950684, + -0.19221362471580505, -0.2849780023097992, 0.5493474006652832, + -0.22771470248699188, -0.2298336774110794, 0.36178526282310486, + -0.2080020010471344, -0.23812207579612732, -0.2842731475830078, + 0.940440833568573, -0.19113689661026, -0.18721112608909607, + -0.14182895421981812, -0.2715652585029602, 0.629919171333313, + -0.1587229073047638, -0.24558581411838531, -0.23010151088237762, + -0.23789678514003754, 0.3399551808834076, -0.27084171772003174, + -0.2641700804233551, -0.23901616036891937, -0.23635409772396088, + -0.20217551290988922, -0.21176986396312714, -0.13667170703411102, + -0.19004984200000763, -0.2838878035545349, -0.24859781563282013, + 1.0052828788757324, -0.19458886981010437, -0.18634459376335144, + -0.24196723103523254, -0.1780945062637329, -0.16956689953804016, + -0.3152511715888977, -0.3334091305732727, 0.8408318758010864, + -0.27892571687698364, -0.22221140563488007, 0.6608805656433105, + -0.2942494750022888, -0.1348460614681244, -0.29876279830932617, + -0.20470497012138367, -0.1721334308385849 + ], + "n_genes_by_counts": [ + 2458, 2485, 1870, 1855, 2147, 3473, 2993, 2282, 2720, 1938, 2427, 1923, + 3601, 2620, 2076, 2049, 2798, 4168, 2580, 2836, 2203, 2238, 2048, 2471, + 2075, 2211, 2135, 2645, 2558, 2282, 2139, 1870, 2056, 3031, 2245, 2638, + 2269, 2147, 2856, 1949, 2111, 3886, 2502, 2417, 3944, 2519, 2507, 2105, + 2550, 2195 + ], + "total_counts": [ + 5939.0, 6336.0, 4165.0, 3900.0, 4991.0, 11642.0, 8449.0, 5892.0, 8451.0, + 3884.0, 6482.0, 4398.0, 11730.0, 6881.0, 4338.0, 4871.0, 8990.0, 16732.0, + 7142.0, 7944.0, 4854.0, 5523.0, 5101.0, 6633.0, 4858.0, 5158.0, 4592.0, + 7024.0, 7300.0, 5331.0, 5258.0, 3643.0, 5013.0, 9120.0, 5026.0, 7383.0, + 5457.0, 4937.0, 8494.0, 4509.0, 4661.0, 14375.0, 6186.0, 5885.0, 17153.0, + 6682.0, 6771.0, 5628.0, 5790.0, 4749.0 + ], + "total_counts_mt": [ + 35.0, 44.0, 31.0, 28.0, 17.0, 90.0, 56.0, 57.0, 59.0, 30.0, 58.0, 63.0, + 94.0, 41.0, 42.0, 35.0, 46.0, 120.0, 35.0, 51.0, 32.0, 40.0, 32.0, 59.0, + 40.0, 44.0, 20.0, 45.0, 38.0, 22.0, 35.0, 16.0, 37.0, 104.0, 42.0, 41.0, + 47.0, 41.0, 42.0, 30.0, 48.0, 67.0, 93.0, 46.0, 87.0, 35.0, 59.0, 30.0, + 29.0, 22.0 + ], + "pct_counts_mt": [ + 0.5893248319625854, 0.694444477558136, 0.7442977428436279, + 0.7179486751556396, 0.34061309695243835, 0.773063063621521, + 0.6628003716468811, 0.9674134850502014, 0.6981422305107117, + 0.7723996043205261, 0.8947855830192566, 1.4324692487716675, + 0.8013640642166138, 0.5958436131477356, 0.9681881666183472, + 0.7185382843017578, 0.5116796493530273, 0.7171885967254639, + 0.4900588095188141, 0.6419939398765564, 0.6592500805854797, + 0.7242440581321716, 0.6273279786109924, 0.8894919157028198, + 0.823384165763855, 0.853043794631958, 0.4355400800704956, + 0.6406605839729309, 0.5205479264259338, 0.4126805365085602, + 0.665652334690094, 0.43919846415519714, 0.7380810379981995, + 1.1403508186340332, 0.835654616355896, 0.5553297996520996, + 0.8612791299819946, 0.8304638862609863, 0.4944666624069214, + 0.665336012840271, 1.0298219919204712, 0.4660869538784027, + 1.5033947229385376, 0.7816482186317444, 0.5071998834609985, + 0.5237953066825867, 0.8713631629943848, 0.5330490469932556, + 0.5008635520935059, 0.4632554054260254 + ], + "total_counts_ribo": [ + 858.0, 1371.0, 869.0, 1073.0, 899.0, 3104.0, 2079.0, 1578.0, 2760.0, + 645.0, 914.0, 766.0, 2753.0, 1034.0, 791.0, 1124.0, 1407.0, 4296.0, + 2070.0, 2172.0, 882.0, 1281.0, 1081.0, 1884.0, 1069.0, 1108.0, 597.0, + 1067.0, 1940.0, 1027.0, 1245.0, 639.0, 1387.0, 2220.0, 814.0, 2103.0, + 1015.0, 1230.0, 2445.0, 894.0, 671.0, 3549.0, 931.0, 1247.0, 4693.0, + 1729.0, 1577.0, 1129.0, 607.0, 797.0 + ], + "pct_counts_ribo": [ + 14.446876525878906, 21.63825798034668, 20.86434555053711, + 27.512821197509766, 18.012422561645508, 26.662084579467773, + 24.606462478637695, 26.78207778930664, 32.65885543823242, + 16.606592178344727, 14.1005859375, 17.417007446289062, 23.469736099243164, + 15.026885032653809, 18.234209060668945, 23.07534408569336, + 15.65072250366211, 25.67535400390625, 28.983476638793945, + 27.341388702392578, 18.17057991027832, 23.19391632080078, + 21.191923141479492, 28.4034366607666, 22.004940032958984, + 21.48119354248047, 13.000871658325195, 15.190773963928223, + 26.575342178344727, 19.264678955078125, 23.678203582763672, + 17.540489196777344, 27.668062210083008, 24.342103958129883, + 16.195781707763672, 28.484355926513672, 18.599964141845703, + 24.913915634155273, 28.78502655029297, 19.82701301574707, + 14.396052360534668, 24.688695907592773, 15.050113677978516, + 21.189464569091797, 27.35964584350586, 25.875484466552734, + 23.290502548217773, 20.060413360595703, 10.483592987060547, + 16.782480239868164 + ] + }, + "var": { + "index": [ + "Mrpl15", + "Gm37323", + "Sox17", + "Ttr", + "Gm37381", + "Spp1", + "Cpe", + "Rp1-1", + "Ins2", + "Cck", + "Xkr4", + "Krt7", + "Rp1" + ], + "highly_variable_genes": [ + "False", + NaN, + NaN, + "True", + NaN, + "True", + "True", + NaN, + "True", + "True", + "False", + "True", + NaN + ], + "mt": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "ribo": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "n_cells_by_counts": [4, 0, 0, 47, 0, 26, 29, 0, 4, 25, 0, 47, 0], + "mean_counts": [ + 0.07999999821186066, 0.0, 0.0, 14.960000038146973, 0.0, + 27.420000076293945, 3.700000047683716, 0.0, 4.599999904632568, + 7.179999828338623, 0.0, 5.380000114440918, 0.0 + ], + "pct_dropout_by_counts": [ + 92.0, 100.0, 100.0, 6.000000000000005, 100.0, 48.0, 42.00000000000001, + 100.0, 92.0, 50.0, 100.0, 6.000000000000005, 100.0 + ], + "total_counts": [ + 4.0, 0.0, 0.0, 748.0, 0.0, 1371.0, 185.0, 0.0, 230.0, 359.0, 0.0, 269.0, + 0.0 + ] + }, + "X": [ + [1.0, 0.0, 0.0, 51.0, 0.0, 0.0, 9.0, 0.0, 10.0, 2.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 29.0, 0.0, 8.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 18.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 22.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 38.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0], + [1.0, 0.0, 0.0, 16.0, 0.0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 19.0, 0.0, 105.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 27.0, 0.0, 15.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 10.0, 0.0, 114.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 38.0, 0.0, 0.0, 8.0, 0.0, 0.0, 1.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 12.0, 0.0, 58.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 28.0, 0.0, 0.0, 13.0, 0.0, 40.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 14.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 62.0, 0.0, 8.0, 0.0], + [0.0, 0.0, 0.0, 53.0, 0.0, 0.0, 19.0, 0.0, 66.0, 23.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 144.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 10.0, 0.0, 76.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 29.0, 0.0, 123.0, 1.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 7.0, 0.0, 0.0, 1.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 88.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 37.0, 0.0, 17.0, 0.0], + [0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 7.0, 0.0, 0.0, 6.0, 0.0, 9.0, 0.0], + [0.0, 0.0, 0.0, 56.0, 0.0, 0.0, 11.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 1.0, 0.0, 0.0, 22.0, 0.0, 16.0, 0.0], + [0.0, 0.0, 0.0, 15.0, 0.0, 90.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 29.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 14.0, 0.0, 17.0, 0.0], + [0.0, 0.0, 0.0, 18.0, 0.0, 0.0, 12.0, 0.0, 0.0, 7.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 12.0, 0.0, 63.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 46.0, 1.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 23.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 33.0, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 3.0, 0.0, 0.0, 33.0, 0.0, 12.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 13.0, 0.0, 73.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 0.0, 4.0, 0.0, 0.0, 16.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 24.0, 0.0, 2.0, 13.0, 0.0, 0.0, 7.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [0.0, 0.0, 0.0, 46.0, 0.0, 0.0, 18.0, 0.0, 0.0, 14.0, 0.0, 4.0, 0.0], + [1.0, 0.0, 0.0, 6.0, 0.0, 52.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [1.0, 0.0, 0.0, 2.0, 0.0, 48.0, 0.0, 0.0, 0.0, 1.0, 0.0, 9.0, 0.0], + [0.0, 0.0, 0.0, 14.0, 0.0, 94.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0, 0.0, 13.0, 0.0], + [0.0, 0.0, 0.0, 41.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] + ], + "layers": { + "spliced": [ + [1.0, 0.0, 0.0, 51.0, 0.0, 0.0, 9.0, 0.0, 10.0, 2.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 29.0, 0.0, 8.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 18.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 22.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 38.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0], + [1.0, 0.0, 0.0, 16.0, 0.0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 19.0, 0.0, 105.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 27.0, 0.0, 15.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 10.0, 0.0, 114.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 38.0, 0.0, 0.0, 8.0, 0.0, 0.0, 1.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 12.0, 0.0, 58.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 28.0, 0.0, 0.0, 13.0, 0.0, 40.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 14.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 62.0, 0.0, 8.0, 0.0], + [0.0, 0.0, 0.0, 53.0, 0.0, 0.0, 19.0, 0.0, 66.0, 23.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 144.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 10.0, 0.0, 76.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0], + [0.0, 0.0, 0.0, 29.0, 0.0, 123.0, 1.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 7.0, 0.0, 0.0, 1.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 88.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 37.0, 0.0, 17.0, 0.0], + [0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 7.0, 0.0, 0.0, 6.0, 0.0, 9.0, 0.0], + [0.0, 0.0, 0.0, 56.0, 0.0, 0.0, 11.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 1.0, 0.0, 0.0, 22.0, 0.0, 16.0, 0.0], + [0.0, 0.0, 0.0, 15.0, 0.0, 90.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 29.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 14.0, 0.0, 17.0, 0.0], + [0.0, 0.0, 0.0, 18.0, 0.0, 0.0, 12.0, 0.0, 0.0, 7.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 12.0, 0.0, 63.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 46.0, 1.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 23.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 33.0, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 3.0, 0.0, 0.0, 33.0, 0.0, 12.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 13.0, 0.0, 73.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [0.0, 0.0, 0.0, 6.0, 0.0, 0.0, 4.0, 0.0, 0.0, 16.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 24.0, 0.0, 2.0, 13.0, 0.0, 0.0, 7.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [0.0, 0.0, 0.0, 46.0, 0.0, 0.0, 18.0, 0.0, 0.0, 14.0, 0.0, 4.0, 0.0], + [1.0, 0.0, 0.0, 6.0, 0.0, 52.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [1.0, 0.0, 0.0, 2.0, 0.0, 48.0, 0.0, 0.0, 0.0, 1.0, 0.0, 9.0, 0.0], + [0.0, 0.0, 0.0, 14.0, 0.0, 94.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0], + [0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0, 0.0, 13.0, 0.0], + [0.0, 0.0, 0.0, 41.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 0.0, 7.0, 0.0], + [0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] + ], + "unspliced": [ + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 58.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 411.0, 0.0, 2.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 148.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 308.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ] + }, + "obsm": { + "X_pca": [ + [ + -12.67694091796875, 16.050153732299805, -4.886131286621094, + -8.112574577331543, -0.4821016192436218, 0.9434891939163208, + 1.9388906955718994, -7.55872917175293, -1.1813182830810547, + -1.1952476501464844, -2.1152379512786865, 8.407798767089844, + 0.3598034381866455, -1.504271388053894, -1.3153653144836426, + 0.9910584092140198, 1.3741455078125, 0.856572687625885, + -1.6871535778045654, 1.574852705001831, -1.1193745136260986, + -0.037940360605716705, 0.19866393506526947, -0.2483372837305069, + -0.6143119931221008, 0.7075918912887573, -0.3047146499156952, + 1.7738680839538574, -0.06425177305936813, 0.8717584013938904, + 0.20672304928302765, 0.12423322349786758, 1.3110233545303345, + -0.9546154141426086, 0.5645310282707214, -1.2595043182373047, + 0.6025419235229492, 1.201197862625122, -0.8119581937789917, + -0.7585155963897705, -1.1013288497924805, 0.42244791984558105, + -0.8176478147506714, 0.4060850143432617, 0.9195903539657593, + -0.3611901104450226, 0.1855212152004242, -1.4830658435821533, + 0.331633597612381, 0.7527255415916443 + ], + [ + -12.431452751159668, 8.149092674255371, 7.1091814041137695, + 10.322617530822754, 2.4862022399902344, -0.4775680899620056, + 0.6904147267341614, 1.9289010763168335, -0.7896994948387146, + 0.2363787144422531, -0.4572068750858307, 3.634030342102051, + 2.271926164627075, 1.9313315153121948, -3.1162898540496826, + 0.4040379822254181, -0.18522483110427856, -0.36684831976890564, + -2.6530802249908447, 0.8450550436973572, 3.0819153785705566, + -1.9794198274612427, -0.8365927934646606, 0.7619062066078186, + -0.651704728603363, -0.21537761390209198, 0.6393894553184509, + -1.1520975828170776, 1.4197025299072266, -1.1980644464492798, + -0.9916194677352905, 0.6261192560195923, -0.36543941497802734, + -2.007613182067871, 0.523451566696167, -1.6538034677505493, + 0.10777102410793304, -0.5107804536819458, 0.44491705298423767, + 0.17769546806812286, 2.072624683380127, 0.08088505268096924, + 1.066332459449768, -0.25041288137435913, -0.10587148368358612, + -1.283198356628418, 1.8227931261062622, -0.8927828073501587, + 0.2802745997905731, 1.2385205030441284 + ], + [ + -15.601082801818848, 12.753849029541016, 7.840246200561523, + 6.596663475036621, 4.262260913848877, -0.5713154673576355, + 2.422011375427246, 6.857564926147461, 0.5448839664459229, + 0.2449960559606552, -0.4089287519454956, 0.10552437603473663, + 4.177845478057861, 0.6863435506820679, -2.4327518939971924, + 0.6188970804214478, 0.6025221943855286, -0.3026919662952423, + -3.370828628540039, -0.047065749764442444, 1.0982706546783447, + -3.068223714828491, -2.375269651412964, 1.1777256727218628, + 0.03585216775536537, 3.4121510982513428, 2.989483118057251, + -1.3917843103408813, 1.4613101482391357, -1.673768401145935, + -0.4132842421531677, 0.023106083273887634, 0.7722717523574829, + -0.20345328748226166, -0.2866341173648834, -0.8689960241317749, + -1.9390628337860107, -2.179926633834839, -1.0799463987350464, + 1.0352064371109009, 1.1348247528076172, -2.6685690879821777, + 2.0296506881713867, -0.11531911045312881, -4.143371105194092, + -0.43499115109443665, 1.521576166152954, -1.3019369840621948, + -0.6564042568206787, 0.4938996434211731 + ], + [ + -7.987689018249512, 3.1960268020629883, 9.42229175567627, + -7.475500583648682, -4.988417625427246, 0.005165096838027239, + 5.726219654083252, 1.7176355123519897, 4.415487766265869, + 0.538597047328949, -1.5541659593582153, -1.6931511163711548, + -2.487548351287842, 2.647005796432495, 0.7393885850906372, + -1.8586052656173706, 4.73856782913208, -2.060572624206543, + 1.1406925916671753, 0.17121168971061707, 1.6331570148468018, + -1.1654795408248901, -0.18542012572288513, 0.5943654179573059, + 2.3084211349487305, 0.6330097317695618, -3.7085258960723877, + 1.5491753816604614, 0.48333463072776794, -1.0545064210891724, + 2.8262410163879395, -0.013989896513521671, 0.23820152878761292, + -3.1314098834991455, 1.8349332809448242, -2.107278823852539, + 1.3701238632202148, 0.05934637039899826, 1.127247929573059, + -2.1168456077575684, -1.1095421314239502, -0.7948294878005981, + 0.8324806690216064, 1.1902519464492798, 0.3323911428451538, + -0.7148137092590332, 0.5700511336326599, -0.36238038539886475, + -0.06765203177928925, 0.9440141320228577 + ], + [ + -15.073338508605957, 14.075490951538086, 4.197513103485107, + 4.24582576751709, 3.0357654094696045, -2.6091113090515137, + 2.132934808731079, 8.380504608154297, 0.9853572845458984, + -0.8513677716255188, -0.43761545419692993, 1.0167236328125, + 0.23090125620365143, -0.6595785021781921, -0.990796685218811, + 1.3038914203643799, -0.7700625658035278, 0.08665328472852707, + -2.551811933517456, 1.140534520149231, 0.8785008788108826, + -0.8206067681312561, 2.639575481414795, 0.15861459076404572, + 0.14575634896755219, -0.21280181407928467, 2.4927353858947754, + -1.141342043876648, 1.681030511856079, 0.9122650027275085, + 0.9307640194892883, 0.5796964168548584, -0.6677551865577698, + 0.3462463915348053, -1.5674574375152588, 0.15675635635852814, + 0.17042776942253113, -0.3526226282119751, -0.830132007598877, + -1.4621762037277222, -2.168281316757202, -0.44394373893737793, + -0.3422193229198456, -0.4733833968639374, 1.2939985990524292, + 0.6022291779518127, 0.5745447874069214, -1.408717155456543, + -1.6515337228775024, -0.23571760952472687 + ], + [ + 0.5160892009735107, -5.822566509246826, -3.0548276901245117, + 0.4013167917728424, -4.599330902099609, 1.2575671672821045, + 8.111373901367188, -0.09031368792057037, 1.571908712387085, + -1.7251975536346436, -0.7026240825653076, 0.691900372505188, + 2.9010612964630127, 0.5190962553024292, 0.3098559081554413, + 0.08163151144981384, -1.2863695621490479, 0.9236574769020081, + -0.38764864206314087, 0.7352393269538879, -0.13123826682567596, + -0.4862675964832306, -1.30771005153656, -0.6916860938072205, + -0.9166063070297241, -0.11543910205364227, -1.2409368753433228, + -1.0966448783874512, 0.5739140510559082, 0.37667983770370483, + -1.89608633518219, 0.3675888180732727, 0.7965084910392761, + -0.7203497290611267, -0.2880222201347351, -0.16503489017486572, + -0.3626306354999542, 0.3325965106487274, 1.156922698020935, + 0.015128642320632935, -0.5121515989303589, -0.8725615739822388, + 0.07477576285600662, 0.22465111315250397, -0.25980618596076965, + -1.1537388563156128, -0.03646404668688774, 0.618747889995575, + 0.35724937915802, -0.9125088453292847 + ], + [ + -1.9816651344299316, -3.6141092777252197, 5.674443244934082, + -3.230875253677368, -8.123030662536621, -0.6120172739028931, + 1.0904000997543335, 0.26793980598449707, 1.3275877237319946, + -0.733622670173645, -2.139802932739258, 0.30443868041038513, + 1.4567450284957886, 1.9649661779403687, 0.31844109296798706, + -0.9533860683441162, -0.17603647708892822, 1.7044281959533691, + -1.1516263484954834, 0.22342881560325623, 2.6928248405456543, + 0.13758039474487305, 1.2782509326934814, -2.0751423835754395, + -0.3374694883823395, -1.7796841859817505, -0.6755115389823914, + -0.28384193778038025, -0.42460352182388306, -0.8076926469802856, + 1.0664031505584717, 0.7010061740875244, -1.2112606763839722, + -1.4069199562072754, 1.686432957649231, -0.9579864144325256, + 0.015827827155590057, -0.23944760859012604, -0.5579581260681152, + -0.1668066382408142, -0.7287465333938599, -0.2951979339122772, + -0.05361463129520416, -0.27374061942100525, -0.31052008271217346, + 0.7253185510635376, 0.9251742362976074, -0.35423359274864197, + 0.10163124650716782, 0.37538647651672363 + ], + [ + -1.4860697984695435, -3.2984328269958496, 7.925244331359863, + -2.686891794204712, -9.1761474609375, -2.0374414920806885, + 3.1236655712127686, -0.6929444074630737, 0.6687919497489929, + 0.42779111862182617, -4.431375026702881, -0.9235518574714661, + 2.163996458053589, -1.207768201828003, 1.6640456914901733, + -1.972202181816101, -1.1986534595489502, 3.1992506980895996, + -1.6988945007324219, 1.1448442935943604, 0.20978999137878418, + 1.8439745903015137, -2.5573415756225586, -0.958631157875061, + -1.6238356828689575, -0.23909680545330048, -0.39249739050865173, + -0.24673102796077728, 0.08813939988613129, -0.8848596811294556, + 1.0819542407989502, -0.4708881974220276, -0.17517341673374176, + -1.0765246152877808, 1.0025148391723633, 2.32883620262146, + 1.4438095092773438, -0.5300901532173157, 1.525385856628418, + 1.4725133180618286, 0.8111246824264526, -0.8149513602256775, + -1.341587781906128, 0.4553076922893524, 0.994844913482666, + 0.10584969073534012, 0.9848499894142151, 1.0651224851608276, + -0.13136835396289825, -0.8008896112442017 + ], + [ + 0.5448408126831055, -6.046488285064697, 1.6730573177337646, + -2.7782833576202393, -2.320725440979004, 1.1318156719207764, + 7.5226826667785645, 0.0018652979051694274, 3.83525013923645, + -2.771536350250244, -0.33767953515052795, -0.5440390706062317, + 2.722870349884033, -2.53086256980896, -1.7142492532730103, + 0.38569778203964233, -1.3594030141830444, -0.2521604299545288, + -0.8441192507743835, 1.7849693298339844, -3.1163394451141357, + -0.09094014018774033, 0.9378767013549805, 0.27761322259902954, + 0.7552192211151123, -2.3731184005737305, -1.7119418382644653, + -0.16175951063632965, -0.09194296598434448, -0.5139607787132263, + 0.45931217074394226, -0.522782564163208, -0.40218234062194824, + -0.48651209473609924, 1.07688307762146, 1.0952454805374146, + -0.3565296530723572, -0.3185191750526428, -1.0536348819732666, + -0.42545345425605774, 0.8304829001426697, -0.8054537773132324, + -0.350375771522522, -0.010198602452874184, 0.8038826584815979, + -0.21561028063297272, -0.5600570440292358, 0.47047653794288635, + 0.6114542484283447, 0.7984453439712524 + ], + [ + -16.282827377319336, 13.600797653198242, -0.036969758570194244, + -2.8870811462402344, 1.8392341136932373, 1.2421014308929443, + 2.9193732738494873, 11.64906120300293, 0.5696424841880798, + 0.07807911932468414, -1.8200862407684326, 2.000842809677124, + 0.13208036124706268, -2.274914264678955, 0.10510845482349396, + 2.9668102264404297, 0.8652684092521667, -2.8073630332946777, + 1.185899257659912, 2.378514051437378, 0.9461116194725037, + -0.5273721218109131, -1.8517862558364868, 1.4026437997817993, + 1.2300509214401245, -0.9584063291549683, 1.3724448680877686, + -1.5110372304916382, 0.3289763927459717, -2.636751413345337, + -1.6111607551574707, 1.1139609813690186, 0.035311758518218994, + 0.6044754981994629, 0.1336124688386917, -2.5942423343658447, + 2.309525489807129, 1.157979130744934, -1.1258974075317383, + -0.9688597917556763, 1.2788010835647583, -1.5083438158035278, + 1.6914985179901123, 0.9144296646118164, -0.11416824907064438, + -0.5573305487632751, -0.2848298251628876, 0.12516304850578308, + 1.941573977470398, -0.47613057494163513 + ], + [ + -10.948631286621094, 16.58968734741211, -5.666808128356934, + -7.875239372253418, -1.712281584739685, 0.7276245355606079, + 1.7847065925598145, -10.182816505432129, -3.510037422180176, + -1.111061453819275, -0.8558889627456665, 11.954269409179688, + -2.4063429832458496, 1.246024250984192, -2.8569300174713135, + 0.28770333528518677, 0.8342235088348389, 2.3952317237854004, + -2.636937141418457, -0.1523435413837433, -1.836112380027771, + 0.8576784729957581, -0.3581564426422119, 1.5476088523864746, + 1.7169859409332275, 0.16251109540462494, 3.2954864501953125, + -1.9745292663574219, 1.0985267162322998, 1.033914566040039, + 0.5505392551422119, -0.34538936614990234, -0.30457279086112976, + 0.41229644417762756, 1.2041577100753784, -0.7373508810997009, + -0.5989624857902527, 0.11286769807338715, 2.0569496154785156, + 0.39870914816856384, -2.757967233657837, -1.7443400621414185, + 2.0091187953948975, -1.87978994846344, -0.7892606854438782, + -0.5337174534797668, -0.25668418407440186, 0.42273977398872375, + -1.6444000005722046, 0.10918813198804855 + ], + [ + -14.301076889038086, 18.06907081604004, -0.8306521773338318, + -11.05300235748291, 1.1283459663391113, 0.9385271668434143, + 1.843009114265442, -5.917857646942139, 3.003619909286499, + -0.8748477697372437, -0.9968001246452332, -8.555182456970215, + 4.208910942077637, 2.610365152359009, 0.9500064253807068, + -1.1025599241256714, -4.915113925933838, -3.56235671043396, + -1.9832470417022705, 0.12103284895420074, 1.3675119876861572, + -1.7535419464111328, -1.4860994815826416, 1.8870842456817627, + 1.7359060049057007, 3.0070202350616455, 0.06147964671254158, + -0.9913819432258606, -1.111842393875122, 1.5637785196304321, + 1.8457367420196533, 3.0624518394470215, 0.3076033294200897, + -0.16597257554531097, -1.879278540611267, -1.0769386291503906, + -1.609481930732727, -1.0694257020950317, -0.7717483639717102, + 1.8596681356430054, 1.5989032983779907, -1.3687217235565186, + 1.107738733291626, -0.5139936804771423, -0.053434256464242935, + 0.1392044872045517, 1.325659990310669, 0.4959637224674225, + -0.48274239897727966, -0.9246512651443481 + ], + [ + -0.17603358626365662, -6.730861186981201, -2.0748844146728516, + 0.9798662662506104, -5.5692667961120605, 2.03454327583313, + 9.812857627868652, 0.6030979752540588, 3.032167673110962, + 2.6268746852874756, -1.3138819932937622, 0.5702330470085144, + 1.5751020908355713, 1.2829018831253052, 0.7843980193138123, + -0.15502703189849854, -1.3060739040374756, 2.885236978530884, + -1.589946985244751, -0.07111842930316925, 1.0903383493423462, + -0.5550104975700378, 1.0065101385116577, -0.992881178855896, + -1.2420088052749634, 0.23974888026714325, -0.7618707418441772, + -0.9307586550712585, -0.9687332510948181, 0.2146894335746765, + -0.9902991056442261, -0.8264490962028503, -0.221042662858963, + -1.3204747438430786, 0.41738152503967285, 0.008344162255525589, + -0.2609960436820984, 0.534636378288269, -0.7943425178527832, + 0.881723940372467, 0.37059706449508667, -1.5150333642959595, + 0.17883308231830597, 0.2048882693052292, -0.8203564286231995, + -0.18223798274993896, -0.21650631725788116, 0.5896784663200378, + -0.5461714267730713, 0.4755144715309143 + ], + [ + -11.309540748596191, 14.813465118408203, -4.150975704193115, + -7.332253932952881, -0.9815446138381958, 0.2929638624191284, + 1.8401371240615845, -7.049764156341553, -2.632289409637451, + -0.10512346029281616, -1.5869852304458618, 8.828035354614258, + -1.297339916229248, 1.3912453651428223, 1.0362844467163086, + -2.1232688426971436, 1.5425738096237183, 0.5646038055419922, + -0.26908883452415466, 0.07850109040737152, -0.9191116094589233, + -1.136474370956421, -1.175863265991211, 1.302504539489746, + -0.6863614916801453, -0.44022348523139954, 0.027478497475385666, + 0.7227495312690735, 0.3173462450504303, 0.2767850160598755, + 0.10599254071712494, -0.5148475766181946, 0.37521183490753174, + 0.09760510921478271, -0.012573977001011372, 0.6682588458061218, + 0.8191203474998474, 0.21208655834197998, -0.37995782494544983, + -0.974769115447998, -0.4722561240196228, 0.3446543514728546, + -0.8481833934783936, -0.9456765651702881, 0.5039793252944946, + -1.3694156408309937, 0.08256316930055618, -1.593969702720642, + -0.10414249449968338, -0.19704140722751617 + ], + [ + -15.058172225952148, 13.79219913482666, 0.933343768119812, + -1.1949459314346313, 0.7379124164581299, 0.39431604743003845, + 2.4778335094451904, 9.238609313964844, 3.2807624340057373, + 0.7102348804473877, -1.755136489868164, 2.722019672393799, + -0.24888314306735992, -2.016939640045166, 2.8084559440612793, + 0.08875321596860886, 0.8692628145217896, -3.61653208732605, + 1.1749272346496582, 1.8037031888961792, 1.6532490253448486, + -0.25308334827423096, 0.9217445850372314, 2.4908981323242188, + -0.14052769541740417, 0.24718309938907623, -0.46955785155296326, + -2.7439002990722656, -0.9908668994903564, 1.5352013111114502, + -0.25077298283576965, 2.502898693084717, 1.540013074874878, + -1.3648182153701782, 0.3059476315975189, -1.4776161909103394, + -1.1860462427139282, -0.48426204919815063, -2.4541149139404297, + -0.2081652730703354, 1.3003101348876953, 0.6149275898933411, + 1.0144579410552979, -1.3467719554901123, 1.0955352783203125, + -0.08931631594896317, -0.31244054436683655, -0.5758233666419983, + 1.330361008644104, -1.2845239639282227 + ], + [ + -11.55667495727539, 6.848162651062012, 10.839871406555176, + 13.234167098999023, 3.503939390182495, 0.6466022729873657, + 1.9080870151519775, -2.1103105545043945, -0.5631104111671448, + -1.9134743213653564, -1.6801960468292236, -0.05759240314364433, + 2.0308687686920166, 2.2613704204559326, 0.43491101264953613, + -2.068103551864624, 0.02384764887392521, -0.9100379347801208, + -2.0518431663513184, -1.2985330820083618, 0.9634431600570679, + -0.4316267669200897, -1.9675498008728027, 1.245418906211853, + -1.054317831993103, -1.8789962530136108, 0.4672653377056122, + -0.45210009813308716, 1.3822784423828125, -1.9733896255493164, + 1.1964695453643799, -0.9427751898765564, -1.189215064048767, + -0.010629259981215, 1.4981772899627686, 1.5019752979278564, + -0.8412575721740723, 0.511880099773407, -0.4138414263725281, + -0.7724680304527283, -2.5360658168792725, 1.1053415536880493, + 1.7755271196365356, -0.29437345266342163, 0.43301716446876526, + -1.5029423236846924, -0.1517345905303955, -1.0464905500411987, + 1.7231223583221436, 2.020467519760132 + ], + [ + -10.694180488586426, 16.47894287109375, -6.135643005371094, + -6.287924766540527, -2.1640162467956543, -0.011986683122813702, + -0.8418831825256348, -8.870695114135742, -2.676459550857544, + -0.7183350324630737, -1.2580153942108154, 9.217284202575684, + -0.8262470364570618, 0.016522029414772987, -0.14596088230609894, + -1.4286220073699951, 0.5052462816238403, 1.104488492012024, + -1.8452892303466797, -0.7856717109680176, -2.2437922954559326, + 0.3234647810459137, -0.31013864278793335, -0.38019952178001404, + -0.9527035355567932, -0.8942537903785706, 0.5684298276901245, + 1.025237798690796, 1.4664920568466187, -1.2672008275985718, + 1.0658092498779297, -1.24174165725708, 0.2247099131345749, + 1.1923669576644897, -0.6352871656417847, 0.8504818677902222, + -0.4954288899898529, 0.530346155166626, 0.36849623918533325, + -1.0436614751815796, -3.097787618637085, 0.8453800678253174, + 0.10459570586681366, -0.2525443434715271, -1.1070600748062134, + -0.5306951403617859, -0.163627490401268, -0.47855451703071594, + 0.38877439498901367, 0.7870095372200012 + ], + [ + 1.123462200164795, -5.9690470695495605, -4.7294206619262695, + 1.394489049911499, -4.233457088470459, 1.4378496408462524, + 6.721810340881348, 0.10100941359996796, -1.117782711982727, + 1.2681437730789185, -0.9459208250045776, 0.09232350438833237, + 1.772530198097229, 1.1675951480865479, -2.1195785999298096, + 0.30967050790786743, -0.26313772797584534, -0.12476339936256409, + 0.3426797091960907, 0.4294935464859009, 2.928828239440918, + 1.7362858057022095, 0.8190858364105225, -1.48770272731781, + -0.16118720173835754, 0.7323290705680847, 1.3029683828353882, + -0.36095476150512695, -0.45733964443206787, 0.9227510094642639, + -0.6743201613426208, 1.093201994895935, 0.3935307264328003, + -0.689078688621521, -0.13060271739959717, -0.984146773815155, + 0.07642846554517746, 0.8668681979179382, 0.6335991024971008, + -0.0760611817240715, -1.163205862045288, -0.7513725757598877, + 0.25762999057769775, 0.3887765109539032, -0.5105658173561096, + -0.2164442092180252, 0.08087476342916489, 0.3909611105918884, + 0.7261152267456055, 0.035314615815877914 + ], + [ + -0.6471486687660217, -3.9167892932891846, 7.816814422607422, + -3.090329647064209, -10.021153450012207, -1.2101457118988037, + 3.188683032989502, 1.1151891946792603, 0.9534212350845337, + -0.497185617685318, -2.8253135681152344, -0.4647866189479828, + 1.0021898746490479, 1.6822760105133057, 0.3891996443271637, + -0.5024542808532715, -0.9815653562545776, -0.380942165851593, + 0.33918243646621704, -0.5804471373558044, -1.1066744327545166, + 1.044824242591858, 2.3088157176971436, -1.835028886795044, + 0.3664047420024872, -1.5993812084197998, -2.013266086578369, + 0.6566931009292603, 0.28780195116996765, 0.21881155669689178, + -0.009975803084671497, 0.9980214834213257, -0.9045833945274353, + 1.450891137123108, -0.08881061524152756, 0.15441001951694489, + 0.6609336733818054, -0.436125248670578, 0.33671480417251587, + 1.072454571723938, -0.5710456371307373, 0.27039995789527893, + 2.134801149368286, -0.8463304042816162, -0.6862131357192993, + -0.8343968987464905, -0.3890254497528076, -1.3752766847610474, + -0.4307650029659271, -0.41262686252593994 + ], + [ + -0.9986283183097839, -4.400336742401123, 6.21701192855835, + -3.6753041744232178, -8.942152976989746, -3.118905544281006, + 1.8634624481201172, 0.9923045039176941, 2.456430435180664, + -1.381608486175537, -1.3328112363815308, -0.03243346884846687, + 0.6940146684646606, -0.28300079703330994, -2.841484546661377, + -0.13236556947231293, -0.7651950120925903, 0.21271638572216034, + -0.33017680048942566, -0.9295639991760254, 1.9832611083984375, + 2.355100393295288, 0.4764181673526764, -1.1998262405395508, + 1.5835856199264526, -0.7001029253005981, -0.18479840457439423, + -0.4252471625804901, 0.3670884072780609, 0.8190961480140686, + -0.8149045705795288, 0.431512713432312, 0.42197927832603455, + -1.4922187328338623, 0.13104912638664246, -1.3117878437042236, + -0.681307315826416, -0.7554230093955994, 0.5704017281532288, + 0.9618449211120605, -1.0609551668167114, -1.1701117753982544, + -0.22461242973804474, 1.2013822793960571, 0.328749418258667, + -0.1695629209280014, -0.33811521530151367, -0.5189148187637329, + 0.04042286053299904, 1.3931471109390259 + ], + [ + -13.812087059020996, 12.910494804382324, -0.6064350605010986, + -1.4812875986099243, 0.7386741638183594, -0.41176745295524597, + 2.4185140132904053, 10.934868812561035, 1.1929008960723877, + -0.6637418270111084, -0.8133055567741394, 1.0826537609100342, + 0.1638210266828537, -1.155388355255127, 3.57751202583313, + 1.4660866260528564, -1.1679025888442993, 0.5391280055046082, + -1.3160984516143799, 2.329899787902832, 2.492142677307129, + -0.10393596440553665, -3.3379693031311035, 1.9248307943344116, + 0.9557269811630249, -1.205283522605896, 0.024102559313178062, + -2.2969131469726562, 0.013239370658993721, -1.0102581977844238, + 0.0644998848438263, 2.3882038593292236, -0.04665176942944527, + -0.6868383288383484, -0.9177327156066895, 0.11986973881721497, + 0.8794415593147278, 0.5196353793144226, -0.7553150057792664, + -0.011033310554921627, -0.8803645372390747, 1.601595401763916, + 0.6418314576148987, -0.48348063230514526, -1.3007971048355103, + 0.05347180739045143, -0.0708664283156395, -0.3831760883331299, + 0.7800177931785583, 1.220780611038208 + ], + [ + -9.270174026489258, 4.401757717132568, 9.608241081237793, + 11.245147705078125, 2.0721211433410645, 1.801301121711731, + 0.6880170702934265, -3.9782421588897705, -0.5356932878494263, + -1.564698576927185, -0.7099674940109253, -0.1642385572195053, + 2.652218818664551, -0.1476956009864807, -2.879981517791748, + 0.28240227699279785, -0.47715142369270325, -2.5702366828918457, + -0.5065000653266907, 0.5881812572479248, 2.193382740020752, + 0.49301642179489136, -2.1324381828308105, 1.0655843019485474, + -2.0467593669891357, -2.5440056324005127, -0.37619173526763916, + -0.7113208174705505, -0.9896312355995178, -0.5534988045692444, + -0.7083161473274231, 0.28401169180870056, -0.6953646540641785, + -0.7218320369720459, 2.44671630859375, 1.888313889503479, + -0.663676381111145, 0.8711854219436646, -0.18841016292572021, + 0.5665903687477112, -0.26016151905059814, 0.8189255595207214, + 1.1999785900115967, -0.5602896213531494, 0.819850742816925, + -0.25402307510375977, 0.6718666553497314, 0.5773558020591736, + 1.7504819631576538, -1.6599059104919434 + ], + [ + -7.662502288818359, 1.540705680847168, 10.391172409057617, + 12.1887845993042, 3.058894157409668, 0.36140766739845276, + 4.426795482635498, -3.8803930282592773, -1.169663906097412, + 2.8395133018493652, -3.164475202560425, -0.9990626573562622, + 3.230307102203369, -1.9142347574234009, -2.0418286323547363, + 0.23750752210617065, -0.9622421264648438, -2.025484800338745, + 0.8502324223518372, 2.1680142879486084, 0.13702936470508575, + -0.6309956908226013, -1.5517539978027344, 3.547231435775757, + 0.4279845058917999, 0.11100152134895325, 0.2382710725069046, + 0.5001111030578613, -1.057565689086914, -0.04518001899123192, + 0.32985106110572815, 1.0055721998214722, -0.2054533213376999, + -0.2883544862270355, 2.074769973754883, -1.84555983543396, + -0.6353389620780945, -0.8399315476417542, 0.11860675364732742, + -0.9667848944664001, -0.7843533158302307, 0.8531565070152283, + -0.5237852334976196, 1.1600311994552612, -1.1487187147140503, + -0.6087707877159119, -0.44450193643569946, -0.5528051257133484, + -0.7779120802879333, 0.00038336546276696026 + ], + [ + -1.7808771133422852, -4.3412675857543945, 8.269176483154297, + -5.3644256591796875, -7.7987165451049805, -0.042222507297992706, + 3.8714756965637207, 1.2919553518295288, 0.9104042649269104, + -1.815630316734314, -1.3394412994384766, 0.14390026032924652, + 1.645455241203308, 0.6736851334571838, -1.5952211618423462, + -0.1814279407262802, -1.4602292776107788, 0.753856897354126, + -2.2262415885925293, 0.04379347339272499, 0.8045467734336853, + 2.0662267208099365, -1.1167869567871094, -2.0298755168914795, + -0.48210278153419495, -2.4148831367492676, -0.3474770784378052, + 1.053006887435913, -0.037940021604299545, 0.008834772743284702, + 1.6434727907180786, -0.8234443068504333, -0.5329557657241821, + -0.23974138498306274, 0.9193717837333679, 0.45190632343292236, + 0.43160581588745117, 0.9971151947975159, 0.0473368838429451, + 1.7624233961105347, 0.4423743486404419, -1.2343487739562988, + 0.4161596894264221, -0.12717093527317047, -1.0094845294952393, + -2.0892231464385986, -0.24547308683395386, 0.630408763885498, + 0.7874303460121155, -0.16471698880195618 + ], + [ + -14.445809364318848, 9.828696250915527, 8.818204879760742, + 10.717233657836914, 3.043553352355957, -0.2028401792049408, + 1.893955111503601, 4.071330547332764, -0.3567090928554535, + -0.9098962545394897, -0.4807131588459015, 2.5892043113708496, + 2.8812363147735596, 3.0935966968536377, -2.8747153282165527, + 0.03219121694564819, 0.8934258818626404, -0.9528183937072754, + -4.734211444854736, -0.46245473623275757, 1.947441816329956, + -3.0049960613250732, 1.3131297826766968, 0.8587810397148132, + 1.350853681564331, 2.663728952407837, 1.5337287187576294, + -0.9417336583137512, 0.8840986490249634, -0.6178112030029297, + 0.47325649857521057, 1.554795742034912, -0.9273386597633362, + -1.1166008710861206, 0.8273330330848694, -1.9112334251403809, + 1.0044435262680054, -2.038374185562134, -0.05030794069170952, + 1.4348660707473755, 0.6120045185089111, 0.5298359990119934, + 1.3383234739303589, 1.0804312229156494, -1.5696046352386475, + -0.4763623774051666, 2.437843084335327, 0.9067813754081726, + -0.08741070330142975, 1.7954057455062866 + ], + [ + -12.87277889251709, 15.42394733428955, 1.0089143514633179, + -1.309014081954956, 1.5839612483978271, 0.21422846615314484, + 3.001206398010254, 7.837078094482422, 1.1936920881271362, + -1.1002323627471924, -0.8990952968597412, 2.275611639022827, + -1.7237688302993774, -0.5665651559829712, 2.514719009399414, + -0.6897647976875305, -0.8707348108291626, -1.68149733543396, + 2.400120735168457, 0.8549395799636841, 2.629640579223633, + -0.16417527198791504, 0.22689057886600494, -0.7518181800842285, + -0.5534685850143433, -2.491732597351074, 0.6855288147926331, + -0.08118344098329544, 0.7276558876037598, -1.567325472831726, + -0.44306308031082153, 1.0171915292739868, 0.8327358365058899, + 0.7505727410316467, -0.45284244418144226, 2.3481740951538086, + -0.502820611000061, 0.8202664852142334, 0.11986707150936127, + -1.8518776893615723, -1.2351806163787842, 1.332859992980957, + 0.7682066559791565, -1.8117384910583496, -1.5948735475540161, + -0.8997729420661926, -0.15369075536727905, -0.5251436829566956, + -0.8075209856033325, 0.6265552043914795 + ], + [ + -12.837120056152344, 15.894926071166992, -3.8902556896209717, + -7.614985466003418, -0.6173986196517944, 0.5656843185424805, + -0.3508986532688141, -3.5472636222839355, 2.2493350505828857, + 0.4167802929878235, 0.34307828545570374, -5.755792617797852, + 4.072144985198975, -0.6914803385734558, -2.549858808517456, + 0.05094952508807182, 4.164751052856445, 1.9008033275604248, + -0.12132864445447922, 1.1752387285232544, -1.1263319253921509, + 0.6376891136169434, -2.485590934753418, 1.6882957220077515, + 1.2310186624526978, -3.6825883388519287, 0.09159868210554123, + 0.5184924006462097, 1.2671781778335571, -3.250127077102661, + -1.5890319347381592, -0.5042319297790527, -0.27190297842025757, + -2.4893798828125, 2.2623519897460938, -0.3241146206855774, + -0.03149798512458801, 0.6240801811218262, 0.655691921710968, + 3.4147253036499023, -1.010786771774292, 1.8765332698822021, + 0.6721336245536804, 1.5356618165969849, -3.1829230785369873, + -0.6775195598602295, -0.25628662109375, -0.2992735505104065, + -1.7785840034484863, 0.8548039197921753 + ], + [ + -11.241547584533691, 12.031035423278809, 0.22099165618419647, + 3.0496268272399902, -0.266896516084671, -1.9557138681411743, + -0.44217249751091003, 2.6174299716949463, 0.8998057246208191, + -0.4744814336299896, -0.3422152101993561, -3.802610397338867, + 4.572490215301514, 1.9055758714675903, 0.49850332736968994, + -3.3846001625061035, 9.636061668395996, 5.631738662719727, + -1.3994760513305664, -0.11531609296798706, -3.2595248222351074, + 2.2144579887390137, -0.7379201650619507, -1.172687292098999, + 1.3583375215530396, -3.737936019897461, 2.74414324760437, + -3.3407654762268066, -0.8393343687057495, 0.54880690574646, + -1.8881748914718628, 1.889472484588623, -0.31692567467689514, + -1.0448049306869507, 0.2660035192966461, 0.8244525194168091, + -2.5064380168914795, 0.04305424913764, -1.9348018169403076, + -0.2950300872325897, 0.45518139004707336, 3.495962142944336, + -0.8815987706184387, -0.5678094625473022, 0.5962282419204712, + 1.288411021232605, 0.6164016723632812, -1.2535144090652466, + 1.061829686164856, 0.05763959139585495 + ], + [ + -0.42315199971199036, -3.9199464321136475, 7.807649612426758, + -3.812629461288452, -7.322627067565918, 0.03806530684232712, + 3.498203992843628, 0.8745136260986328, 0.28102126717567444, + 0.611392080783844, -5.496452331542969, -1.4515172243118286, + 2.045297145843506, 0.43636372685432434, -0.1010964885354042, + -1.4442806243896484, -0.33342885971069336, -0.026480551809072495, + 1.351835012435913, -0.18781358003616333, -1.60257089138031, + -2.156374931335449, 0.8308467268943787, -3.278305768966675, + -0.5999934077262878, -0.5870257616043091, 0.2125377058982849, + 0.7295581102371216, -0.7751732468605042, -0.5010067224502563, + 2.1683480739593506, -0.22027765214443207, 1.122196912765503, + -2.2939889430999756, 2.540633201599121, -0.6682171821594238, + 0.691449761390686, 1.9868907928466797, 1.22219717502594, + -0.294260710477829, -0.32330048084259033, 0.06182728335261345, + 0.11401647329330444, 0.5117794871330261, -0.45170843601226807, + -0.11763070523738861, -0.724612832069397, -0.3214915692806244, + 0.24952231347560883, 0.7912059426307678 + ], + [ + -15.229090690612793, 11.38879680633545, 3.997145414352417, + 8.387964248657227, 2.9928150177001953, -1.3291943073272705, + 1.260642170906067, 4.499277591705322, 0.570978581905365, + -0.11347658187150955, -0.3646581768989563, -2.135735511779785, + 3.7409920692443848, 3.845262050628662, 0.8135268688201904, + -1.0980368852615356, 4.078115463256836, 2.763284206390381, + -3.694204330444336, 2.189882278442383, -1.0642186403274536, + -1.7434757947921753, -1.6530710458755493, 1.881251335144043, + -0.0942249521613121, 0.6683664321899414, 3.052699565887451, + -1.8153157234191895, -1.0439540147781372, 0.8671504259109497, + 1.9475164413452148, 0.39530473947525024, 0.30642154812812805, + -1.318302869796753, 0.8795710206031799, -2.6370365619659424, + -0.8434234261512756, -0.9949284195899963, -0.6146422624588013, + 1.0731074810028076, 0.20627933740615845, -2.6812973022460938, + -0.5849986672401428, -1.2670954465866089, 1.248160719871521, + 1.435124397277832, 0.526648223400116, 0.20301833748817444, + -0.5452556610107422, 0.35319027304649353 + ], + [ + -13.861759185791016, 11.66028118133545, 4.779420852661133, + 3.646909713745117, 2.962310314178467, -0.16868986189365387, + 1.6306337118148804, 5.400754451751709, 1.3158692121505737, + 0.6095995903015137, -0.0646444708108902, -0.951586127281189, + 3.55118989944458, 3.0427823066711426, 1.4628337621688843, + -1.4446943998336792, 6.364335536956787, -1.0529464483261108, + -3.0265872478485107, 2.4589829444885254, 0.4295438826084137, + -2.7237329483032227, 0.3225799798965454, 1.1244901418685913, + 2.076937675476074, 0.6604259014129639, 0.648840606212616, + -1.3956643342971802, -0.24787649512290955, 1.519967794418335, + 3.4822824001312256, -0.7021356225013733, 0.545490026473999, + 0.5571635365486145, -1.1094777584075928, -1.3913029432296753, + 0.15930381417274475, -1.8195033073425293, 1.3070436716079712, + -0.3533334732055664, 2.6748769283294678, -3.2593231201171875, + 0.9041551947593689, -1.9631050825119019, 0.005926885642111301, + -0.688670814037323, 2.6385061740875244, -0.005989707540720701, + 0.8855232000350952, -0.8819964528083801 + ], + [ + -11.520818710327148, 17.531021118164062, -0.7114452719688416, + -7.516733169555664, -0.4991990625858307, 0.8448441624641418, + 0.8658716082572937, 1.6688754558563232, 3.60506534576416, + -1.4616084098815918, 2.065455675125122, -1.7092065811157227, + -1.2265260219573975, -1.3156496286392212, -2.8072831630706787, + 0.7875641584396362, -2.4749090671539307, -0.10037990659475327, + 2.64432430267334, -1.6569801568984985, 2.5910980701446533, + 0.9583816528320312, 1.9725273847579956, 1.0472509860992432, + 1.0800753831863403, -0.11447999626398087, 2.5952939987182617, + 3.754138708114624, 1.2065502405166626, -1.990886926651001, + -4.077818870544434, -4.655643939971924, 3.412261724472046, + 1.921478271484375, -1.5586647987365723, 2.0575015544891357, + 1.9816703796386719, 2.1366982460021973, -0.8480033278465271, + -1.6203020811080933, -2.4523305892944336, 0.3845590054988861, + -2.1201083660125732, -1.2977714538574219, 0.9350785613059998, + -1.111502766609192, -0.5487351417541504, 1.125700831413269, + -0.5601211786270142, -0.5474640130996704 + ], + [ + -4.675497531890869, -0.9625622630119324, 12.827539443969727, + 0.6305908560752869, -6.719728946685791, -2.7693920135498047, + 1.8418664932250977, -3.838419198989868, 3.395246982574463, + 1.397157907485962, -4.637454509735107, 0.1990009993314743, + -0.9539801478385925, -5.319667339324951, 5.612941741943359, + 0.9897627234458923, -0.23140306770801544, 0.24936974048614502, + 0.14039231836795807, 2.2982418537139893, 1.7667040824890137, + 0.38445913791656494, -2.7491159439086914, -2.6136374473571777, + -1.1753664016723633, 2.4662086963653564, 3.066819906234741, + -0.7113192081451416, -0.23881199955940247, -2.113877058029175, + 0.9734938740730286, -0.30240920186042786, -1.2859808206558228, + 0.9581979513168335, 0.2544277310371399, 0.5588932633399963, + 0.28111106157302856, 0.46332013607025146, 0.5282453298568726, + 1.050949215888977, 0.71455979347229, 0.3258145749568939, + 0.47483301162719727, -0.08649712055921555, -0.14062367379665375, + 0.4312714636325836, 1.0417684316635132, 1.8614616394042969, + -0.43195340037345886, 0.39510682225227356 + ], + [ + 0.06440968066453934, -6.810119152069092, -0.1630612462759018, + -0.7213786840438843, -4.7372941970825195, 2.347491979598999, + 10.58820915222168, 0.0880046859383583, 2.1733341217041016, + 3.3286514282226562, -1.5685367584228516, -0.1504983901977539, + 2.0724194049835205, 0.3656390905380249, -1.8312894105911255, + 1.3530110120773315, -1.0113728046417236, 1.9198399782180786, + -2.393216609954834, 0.7780415415763855, 1.1502323150634766, + 0.4419211447238922, 0.1671750694513321, -1.5121963024139404, + -1.7415111064910889, 0.8021566271781921, -0.6833608746528625, + 0.38764792680740356, 0.2938624620437622, 1.0657320022583008, + -1.4263335466384888, -0.6659318804740906, 0.006843946408480406, + -0.3132798969745636, 0.5119068026542664, 0.2639479339122772, + 0.4156905710697174, -0.27503833174705505, -1.2244157791137695, + -0.7744481563568115, -0.5740019679069519, -1.421411395072937, + -0.7418947219848633, 0.007979444228112698, 0.7486554384231567, + -1.2733861207962036, 0.09421618282794952, -0.717103123664856, + 0.06305592507123947, -0.5640363097190857 + ], + [ + -12.42548656463623, 14.19201946258545, -2.802452802658081, + -4.9070725440979, -2.1807379722595215, 1.1441186666488647, + 1.1508768796920776, -5.046658515930176, 0.3581608533859253, + -0.3782646656036377, -0.6615078449249268, -3.3344836235046387, + 1.936582326889038, -0.7158581018447876, 1.1566749811172485, + 0.8994494080543518, -2.1596646308898926, -2.284853458404541, + -0.8253136277198792, 0.3950645625591278, 3.0806000232696533, + -0.3044654428958893, -1.074748158454895, 2.9198837280273438, + 0.5708971619606018, 0.8492299914360046, -0.26363837718963623, + -1.726920485496521, -1.6701273918151855, -0.8762948513031006, + -2.0881197452545166, -0.6071453094482422, 1.0649604797363281, + -0.11500362306833267, -1.0800426006317139, 1.970391035079956, + -0.10057985782623291, 0.06564342975616455, -0.0445171482861042, + -0.7854580283164978, 0.8617980480194092, -1.1392560005187988, + 0.18232405185699463, -3.0489351749420166, 2.165215253829956, + -0.8992168307304382, 1.1603394746780396, -0.44397976994514465, + 0.30428746342658997, 0.47973012924194336 + ], + [ + -4.798139572143555, -0.49115973711013794, 8.963760375976562, + 3.0005409717559814, -5.578470230102539, -2.826958179473877, + 0.6700296998023987, -2.5325074195861816, 4.713013648986816, + 1.2983365058898926, -1.6940175294876099, -1.1859791278839111, + -2.3038651943206787, -3.899217128753662, -0.20176930725574493, + 1.3565975427627563, 2.7248106002807617, -0.38786906003952026, + 0.9174771308898926, 1.5739070177078247, 2.911465883255005, + -0.8244115114212036, -0.65882807970047, 1.0579863786697388, + 2.473428964614868, -3.1280930042266846, 1.4485684633255005, + -1.4998937845230103, 0.20844198763370514, -0.7738621830940247, + 1.0160276889801025, 0.40498799085617065, -0.11557337641716003, + -0.43780937790870667, 0.1359858512878418, -0.0628303810954094, + -0.47805896401405334, -1.6653835773468018, -0.008277523331344128, + -0.33700811862945557, 0.20897932350635529, -1.0387645959854126, + 0.7393920421600342, -0.16553190350532532, 0.28305402398109436, + 0.1835920363664627, 2.332878589630127, -0.48752400279045105, + -0.40269264578819275, 0.849594235420227 + ], + [ + -17.458759307861328, 14.656970977783203, 3.7183001041412354, + 6.465635776519775, 1.1298226118087769, -1.3778839111328125, + 2.5109670162200928, 7.352950572967529, 0.9591886401176453, + -1.1127307415008545, -0.3294779062271118, 1.4829429388046265, + 0.8755077719688416, 1.186034083366394, 1.7905213832855225, + -0.773779571056366, -1.167406439781189, -1.9628902673721313, + -1.3203538656234741, -1.458613634109497, 0.3488643765449524, + -0.3722858726978302, -0.6386889219284058, 0.6420795917510986, + -0.9983195066452026, 1.0093574523925781, -0.2406521588563919, + 1.1499756574630737, 2.2334136962890625, -0.7594148516654968, + -0.07547802478075027, -0.668083906173706, 0.8777897953987122, + -0.8572455644607544, -2.4373481273651123, 1.2106741666793823, + -0.2211822122335434, 0.07030534744262695, 1.805364727973938, + -1.9565092325210571, -2.9770615100860596, 0.8966209292411804, + 1.138991355895996, -1.0053538084030151, -0.7662058472633362, + 0.6457057595252991, 1.7394312620162964, -0.937617301940918, + -0.9999252557754517, 0.7385850548744202 + ], + [ + -2.189509868621826, -2.1667964458465576, 9.019720077514648, + -4.046627044677734, -8.329238891601562, 1.185088872909546, + 4.364847660064697, 1.2866789102554321, -0.77842116355896, + 0.1654433161020279, -4.62533712387085, -0.40155014395713806, + 1.4937872886657715, 0.35526329278945923, -1.6228539943695068, + 3.2299132347106934, -0.40903976559638977, -1.1103849411010742, + -1.7415720224380493, -0.5271199941635132, -2.073904275894165, + -2.1420629024505615, 1.5776134729385376, -0.2367473989725113, + -2.5150773525238037, 1.316850185394287, -1.7233422994613647, + -1.190323829650879, 0.7583153247833252, 0.22012163698673248, + -1.663793683052063, 1.3421497344970703, 1.6489458084106445, + -1.1583762168884277, 2.5542287826538086, -1.1648935079574585, + 0.21952062845230103, 0.7342969179153442, -0.2893839180469513, + -0.4162783622741699, 0.12549421191215515, 0.3518862724304199, + 1.5805416107177734, 0.1427430957555771, 0.9369305968284607, + 0.8260412216186523, 1.2973588705062866, -0.9636445641517639, + -0.7788142561912537, -0.09876994788646698 + ], + [ + 0.1656295210123062, -4.658812522888184, 5.4152398109436035, + -3.237701416015625, -8.795058250427246, -0.5912864804267883, + 3.2428407669067383, 0.8140576481819153, 0.7993097305297852, + -3.2482824325561523, -2.2554984092712402, -0.30756258964538574, + 1.5892140865325928, -0.38934335112571716, -2.1279566287994385, + 1.3934134244918823, -0.7617056965827942, 2.0254764556884766, + -0.32182860374450684, -1.0675551891326904, 1.8021048307418823, + -0.14504419267177582, 1.4352458715438843, -1.1649258136749268, + 0.015219851396977901, -0.381271630525589, -1.635152816772461, + -0.7292568683624268, -0.9179955124855042, 1.3408617973327637, + 0.2503085732460022, -0.694707453250885, -0.017903758212924004, + -0.6762002110481262, 0.22581014037132263, -0.9828170537948608, + -0.8152080774307251, -0.06152792274951935, -1.6111571788787842, + -0.02838781848549843, -0.6137443780899048, -1.9082316160202026, + 0.14741165935993195, 0.5791391134262085, -0.9556156992912292, + -0.25165149569511414, -0.4265642464160919, 0.1713496297597885, + 1.0636134147644043, 0.01757694222033024 + ], + [ + -14.29876708984375, 14.099020004272461, 4.920845031738281, + 4.4486403465271, 4.1039137840271, -0.8094918727874756, + 2.8144614696502686, 7.228440284729004, 1.9489563703536987, + -1.8554619550704956, -1.5884701013565063, -3.0111985206604004, + 1.3171918392181396, -0.3947489559650421, -1.784658432006836, + -0.059956468641757965, 4.922347068786621, -1.2964128255844116, + -3.095399856567383, 1.4729005098342896, -0.7310435175895691, + -1.2777290344238281, -0.08919508010149002, 0.9866291880607605, + 1.418440580368042, -0.3678901493549347, 2.6095776557922363, + -3.621464967727661, -1.3037575483322144, 0.12949492037296295, + 1.0531120300292969, 1.219484567642212, 0.10537959635257721, + 1.367940902709961, -1.2981858253479004, -0.06786233186721802, + 0.17344480752944946, -2.3398683071136475, 1.0632455348968506, + -0.8288909196853638, -1.7643369436264038, -1.7986712455749512, + 0.912858784198761, -2.6478402614593506, 1.9562855958938599, + -0.3702813982963562, 0.03979586064815521, 1.2861912250518799, + -2.299926519393921, -0.5787228941917419 + ], + [ + -16.219457626342773, 16.813297271728516, -4.406136512756348, + -9.42319107055664, -1.2353655099868774, -0.3871762454509735, + 1.7003073692321777, 1.0578434467315674, 2.4955291748046875, + -0.40431541204452515, -2.205868721008301, -3.0969655513763428, + 3.3783504962921143, -2.997345447540283, -0.6608136892318726, + 1.2112456560134888, 2.646118402481079, -1.7807672023773193, + -0.21861322224140167, -0.7007471919059753, 1.6067370176315308, + -0.4752439856529236, -2.3182733058929443, 0.7314382195472717, + -0.5712224841117859, 1.1542483568191528, -1.6534308195114136, + 2.852409601211548, -3.154663562774658, -0.05350382998585701, + 0.8875035047531128, 0.4863435924053192, -0.40610960125923157, + -0.8368765115737915, 0.3027617633342743, -0.7535920143127441, + -0.9341579079627991, -0.943719744682312, -1.1957526206970215, + 1.6833100318908691, -0.3674168586730957, -0.11412720382213593, + -0.4237340986728668, -0.7701491713523865, 0.2936592102050781, + 0.3195337951183319, 2.1544582843780518, 0.5356279611587524, + -2.102534294128418, 0.3311498761177063 + ], + [ + 0.7927941679954529, -6.522217273712158, -3.895317792892456, + 1.8499044179916382, -4.606112957000732, 1.8054673671722412, + 8.722326278686523, 0.032991938292980194, 0.9223255515098572, + 1.5310226678848267, -1.129265546798706, 0.6480377912521362, + 2.1768271923065186, 1.3506556749343872, 0.05672812461853027, + -0.6230689287185669, 0.29329797625541687, 0.32124075293540955, + 0.1436941921710968, 0.4536000192165375, 1.1172833442687988, + 0.9895634651184082, -0.4279688596725464, -3.6803178787231445, + -0.12755528092384338, -0.3493812382221222, 0.736708402633667, + 0.16695544123649597, 0.47494420409202576, -0.3726257383823395, + -0.5840100646018982, 0.6309804916381836, 0.5090989470481873, + 0.14559800922870636, 0.4145581126213074, -2.2015373706817627, + 0.2339717000722885, 0.6625627279281616, -0.5871365070343018, + -0.5464911460876465, -0.5009556412696838, -1.0272831916809082, + 0.5644878149032593, 0.4533422887325287, -0.06630328297615051, + -0.18174561858177185, -0.4475296437740326, 0.08458632975816727, + -0.0335218571126461, 0.24164029955863953 + ], + [ + -11.942228317260742, 14.004488945007324, -2.8790979385375977, + -6.837962627410889, -0.25476792454719543, 1.9115629196166992, + 1.4346896409988403, -7.9719953536987305, -0.1579359769821167, + -1.4835110902786255, 0.4886070787906647, -5.47907018661499, + -0.054598093032836914, 3.2744522094726562, -4.5929179191589355, + 0.612332284450531, -4.235445499420166, -2.3911142349243164, + -0.893483579158783, 0.1561869978904724, 0.9486324191093445, + -3.4475815296173096, -1.0916109085083008, 1.0507365465164185, + -0.3132956922054291, 0.5988911986351013, 0.6343837976455688, + -0.7540455460548401, 0.684929609298706, 1.6390416622161865, + 1.5402082204818726, 0.862897515296936, 0.7161449193954468, + -0.8171657919883728, -1.021094560623169, 1.1500719785690308, + -1.2489033937454224, -0.6582951545715332, -0.22157064080238342, + -0.5681990385055542, 0.34081077575683594, 0.7926258444786072, + 0.2969649136066437, -0.5211289525032043, 1.114494800567627, + 0.306626558303833, -0.14174309372901917, 0.1998143196105957, + 0.8693113327026367, -0.41463392972946167 + ], + [ + -3.12796688079834, -4.013069152832031, 9.42343807220459, + -3.301511287689209, -9.87446117401123, -1.863349199295044, + 4.826618194580078, 2.02824068069458, 0.6881634593009949, + 0.18586181104183197, -5.026166915893555, -0.45440033078193665, + 1.3688204288482666, 2.816047191619873, 0.4582417607307434, + 0.44533824920654297, 0.3003523051738739, -1.5177162885665894, + -0.4599774479866028, 0.5946647524833679, -0.5317145586013794, + -1.8932994604110718, 2.732506036758423, -0.670845091342926, + 0.7012515664100647, -0.1874772608280182, -0.026835182681679726, + -1.218711018562317, -1.5380403995513916, 0.37338176369667053, + -0.05698259919881821, 1.9006625413894653, -1.5507817268371582, + -0.43407320976257324, 1.7198996543884277, 0.4508954882621765, + 1.8216477632522583, 0.5047957897186279, -0.0787665918469429, + 0.17632681131362915, 0.8951348662376404, -0.4466433525085449, + -0.2979060709476471, 0.15919645130634308, -0.3621719479560852, + 0.9150047302246094, -0.5115455985069275, 0.705995500087738, + -0.02912663295865059, -0.35136884450912476 + ], + [ + 1.864022970199585, -4.7029032707214355, -3.150378942489624, + 1.7130091190338135, -3.054809808731079, 2.226363182067871, + 5.812557697296143, 0.1637473851442337, 1.126080870628357, + 0.9006184935569763, -1.8396234512329102, 0.5617418885231018, + 2.107790946960449, 2.2579915523529053, 0.32710373401641846, + 0.042055241763591766, -0.9216223955154419, 0.10484103858470917, + 0.456670343875885, 0.18300290405750275, 1.817229151725769, + -0.5249809622764587, 0.8371365666389465, -2.7445483207702637, + 0.20737025141716003, -1.0266624689102173, -0.45501187443733215, + -0.4070267677307129, -0.031488075852394104, 0.4424787759780884, + -0.1789020448923111, 0.3755286633968353, 1.2733112573623657, + -1.3550572395324707, 0.479530930519104, -2.40832781791687, + 0.14641053974628448, 0.6679577231407166, -0.44430428743362427, + -0.9133353233337402, -1.2211662530899048, -1.424844741821289, + 0.19734340906143188, 0.6474425196647644, -0.2702689468860626, + -0.1263747662305832, -0.39717310667037964, -0.05005767196416855, + 1.1214752197265625, -0.18108390271663666 + ], + [ + -1.7631045579910278, -4.6284894943237305, 9.060033798217773, + -4.191930294036865, -8.212296485900879, -1.622292160987854, + 3.063825845718384, -0.39865726232528687, 1.3170957565307617, + -0.2290463000535965, -2.549044370651245, -0.7825231552124023, + -0.7897299528121948, 1.1790027618408203, -2.7442755699157715, + 1.8513766527175903, -0.057813070714473724, 1.5271233320236206, + 0.31111016869544983, 1.1373809576034546, 1.912062168121338, + -1.3151264190673828, 0.6592095494270325, -0.28168007731437683, + -0.007218536455184221, -0.6658123731613159, -0.16317839920520782, + 0.5717471837997437, -0.5910519957542419, 0.9885647296905518, + -0.18634818494319916, -0.7269667983055115, -0.8021911382675171, + -2.1217474937438965, 0.5458544492721558, -1.38560152053833, + 0.4719718098640442, 0.8166054487228394, -0.3693873882293701, + 1.0981065034866333, 0.3822837471961975, -0.9299628138542175, + -0.923033595085144, -0.3936220407485962, -0.8043983578681946, + 0.37672874331474304, 0.6981842517852783, -0.5358775854110718, + -0.2600318193435669, -0.04121304303407669 + ], + [ + -12.43053913116455, 8.819639205932617, 6.80618143081665, + 12.597450256347656, 3.596238851547241, -0.4560237526893616, + 1.061970591545105, 1.0751618146896362, -1.2826414108276367, + -1.0431017875671387, -0.6751627326011658, 1.1956547498703003, + 3.3045361042022705, 0.9605262279510498, -2.3823788166046143, + 0.29482024908065796, 0.2898028790950775, -1.1298418045043945, + -2.8728935718536377, -0.7050036191940308, 1.5494786500930786, + -0.09358327835798264, 0.562061071395874, 0.9272260069847107, + 0.2688581049442291, 0.7032049298286438, 1.5181041955947876, + -0.2805197834968567, -0.14913219213485718, -1.274261236190796, + -0.12962938845157623, 0.3252737522125244, -0.6497899889945984, + -0.4950224757194519, 0.3434467911720276, 2.0216948986053467, + -1.4201686382293701, -1.7637429237365723, -1.0400879383087158, + 0.9538137316703796, -1.4877532720565796, 1.4735801219940186, + 0.19896231591701508, 0.13247370719909668, 0.1738385409116745, + -1.1871109008789062, 1.6059221029281616, -0.9581480622291565, + -0.673821210861206, 1.2301061153411865 + ], + [ + -13.307697296142578, 8.310296058654785, 12.437996864318848, + 15.67615032196045, 2.176077127456665, -1.2969707250595093, + 1.53719961643219, -3.7946836948394775, -0.7897235751152039, + -0.08091874420642853, -0.7834505438804626, 0.20761500298976898, + 3.554832696914673, 1.3988629579544067, -3.3607356548309326, + 0.42988017201423645, 0.23653250932693481, -1.7918670177459717, + -1.2516882419586182, -0.5395323634147644, 2.701821804046631, + -2.1160762310028076, -2.2659494876861572, 0.5814356803894043, + -0.5333688259124756, 0.21471931040287018, 1.1630545854568481, + 0.0688285082578659, -1.5730680227279663, 0.06818772107362747, + -0.8263903260231018, 0.5584527254104614, -1.0828100442886353, + -0.5718541741371155, 2.1169373989105225, 0.1593950390815735, + -0.13745874166488647, 0.7319019436836243, -0.7873709797859192, + 1.230961799621582, 0.11741771548986435, 0.05906711518764496, + -2.2146074771881104, -0.3588176667690277, -0.5250627398490906, + -1.3297475576400757, 0.2082946002483368, -0.7088737487792969, + -1.1613494157791138, 1.1265106201171875 + ], + [ + -13.768033981323242, 15.51814079284668, -6.197549819946289, + -7.060868740081787, -1.6705440282821655, 0.17974603176116943, + 0.6741727590560913, -6.254696846008301, -0.0930042415857315, + 0.02427857555449009, -1.194319725036621, -5.824813365936279, + 2.1087934970855713, 0.9786120057106018, -1.2806166410446167, + 0.23663505911827087, -2.447913408279419, -2.9433069229125977, + -1.7427276372909546, 0.1340896636247635, 1.9866929054260254, + -2.155447483062744, -1.6649121046066284, 0.9832387566566467, + -0.05480026453733444, 0.565875768661499, -1.1558195352554321, + -0.3512318730354309, 0.3285529613494873, 0.8001226186752319, + 1.8688452243804932, 2.1199018955230713, -0.611942708492279, + 1.12758469581604, -1.0318048000335693, 0.027401190251111984, + -0.9820730686187744, 0.19234046339988708, -0.8355624675750732, + 2.176170587539673, -0.5716894865036011, -1.2332030534744263, + 0.4006716012954712, -2.826993942260742, 2.1281094551086426, + 0.18709109723567963, -0.5728437900543213, -0.10561525821685791, + 0.18388307094573975, -0.14459750056266785 + ], + [ + -12.061640739440918, 16.631052017211914, -3.255737543106079, + -8.758138656616211, -1.0905829668045044, 2.3677804470062256, + 1.510109782218933, 1.566102147102356, 1.0941972732543945, + -0.2517567574977875, -0.8644587993621826, -2.3943030834198, + 0.765278160572052, -1.9260612726211548, -0.8472274541854858, + 2.70797061920166, 1.5343759059906006, -0.966078519821167, + 1.0695070028305054, 0.9242156744003296, 1.8670909404754639, + 0.5638948678970337, -1.1645923852920532, 0.30699992179870605, + -1.3600488901138306, -0.8201549053192139, 0.1685660183429718, + 1.424708604812622, -2.0761709213256836, -2.8572800159454346, + -0.9984719157218933, -2.6141164302825928, 1.2474188804626465, + 1.8216944932937622, 1.4924829006195068, -0.9924149513244629, + 0.8581892848014832, 1.609972357749939, -0.012999048456549644, + 0.2953500747680664, 0.569658100605011, -0.3482035994529724, + -0.3441086709499359, -1.024104118347168, 2.4927632808685303, + -1.5939003229141235, 0.7155640721321106, -0.575886070728302, + -1.4249662160873413, -1.4382545948028564 + ] + ], + "X_umap": [ + [3.974644422531128, 4.132046222686768], + [1.0239607095718384, -4.1809515953063965], + [2.7265286445617676, -3.9979560375213623], + [-10.54438304901123, -1.5323184728622437], + [4.213548183441162, -3.920499563217163], + [-11.46187686920166, 5.159862518310547], + [-10.684873580932617, -0.07954098284244537], + [-8.90953540802002, 0.3773789703845978], + [-11.825885772705078, 4.1029372215271], + [6.159677505493164, -2.6213595867156982], + [2.7210237979888916, 6.162346363067627], + [7.815907001495361, 5.222381591796875], + [-9.851962089538574, 5.086384296417236], + [3.829773426055908, 4.660017013549805], + [5.975083351135254, -2.0859901905059814], + [-0.9122034907341003, -4.822712421417236], + [3.2488768100738525, 5.215487957000732], + [-10.599279403686523, 6.261940956115723], + [-9.989059448242188, -0.2654668986797333], + [-9.958534240722656, 0.4966404139995575], + [5.848970890045166, -2.664487600326538], + [-2.1904215812683105, -3.962334632873535], + [-2.9185667037963867, -3.4524269104003906], + [-10.291770935058594, 0.4086712896823883], + [1.564902663230896, -4.098021030426025], + [5.602381229400635, -2.641280174255371], + [3.5306568145751953, 1.9143673181533813], + [1.742374062538147, -0.22655488550662994], + [-8.827102661132812, 1.107943058013916], + [1.6932698488235474, -2.510446786880493], + [2.5960326194763184, -2.1459360122680664], + [7.819336414337158, 1.251763105392456], + [-6.853236198425293, -2.146409034729004], + [-9.671516418457031, 5.238082408905029], + [7.203073024749756, 3.4958608150482178], + [-6.586265563964844, -2.574730396270752], + [3.946917772293091, -4.247340679168701], + [-8.967622756958008, 0.5985790491104126], + [-10.725628852844238, 0.9383698105812073], + [2.6568663120269775, -2.5661637783050537], + [6.391319274902344, 1.6564524173736572], + [-10.512287139892578, 6.090150833129883], + [7.302513599395752, 5.296751022338867], + [-9.237828254699707, 0.10832973569631577], + [-10.869999885559082, 6.123208045959473], + [-10.056854248046875, 0.0020937095396220684], + [0.3211665749549866, -3.970116376876831], + [-0.8783138394355774, -4.088666915893555], + [7.3550238609313965, 4.851020812988281], + [7.091958045959473, 1.3012909889221191] + ] + }, + "obsp": { + "distances": [ + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.33377980097054, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.666354240666024, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 6.110476078763631, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.387037056974186, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 8.33377980097054, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 10.68376282143401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 6.585464109738544, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 11.020103295252035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 5.855835291470164, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ] + ], + "connectivities": [ + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9600000494310752, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02764759081786166, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.10495146797527362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.1266472459328123, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.054433011219332236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.14847097502333956, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.9600000494310752, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.09446010588887342, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.09446010588887342, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.1266472459328123, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.14847097502333956, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.10495146797527362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.054433011219332236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.19013123193315035, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.19013123193315035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.02764759081786166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ] + ] + }, + "uns": { + "clusters_coarse_colors": [ + "#031A5C", + "#fa9fb5", + "#fdbf6f", + "#ff7f00", + "#b2df8a" + ], + "clusters_colors": [ + "#8fbc8f", + "#f4a460", + "#fdbf6f", + "#ff7f00", + "#b2df8a", + "#1f78b4", + "#cab2d6" + ], + "day_colors": ["#d62728"], + "neighbors": { + "params": { + "method": ["umap"], + "n_neighbors": [15] + } + }, + "pca": { + "variance": [ + 84.01986694335938, 56.145408630371094, 24.90276336669922, + 18.04616355895996, 13.804972648620605, 11.931583404541016, + 9.8485107421875, 5.831463813781738, 4.772082805633545, + 4.364034175872803, 3.9239556789398193, 3.422154426574707, + 2.7514822483062744, 2.407780647277832, 2.249235153198242, + 2.1247293949127197, 2.0673511028289795, 1.7702986001968384, + 1.7164644002914429, 1.5288208723068237, 1.4669604301452637, + 1.3977633714675903, 1.3417249917984009, 1.289847493171692, + 1.191311240196228, 1.1588010787963867, 1.1220303773880005, + 1.0877219438552856, 1.053589105606079, 0.9999560117721558, + 0.9759476780891418, 0.9631308317184448, 0.929368257522583, + 0.9144339561462402, 0.8905921578407288, 0.8624985814094543, + 0.8567582368850708, 0.8075109720230103, 0.793291449546814, + 0.7793740034103394, 0.7724183201789856, 0.7326804995536804, + 0.71897292137146, 0.6993304491043091, 0.6795463562011719, + 0.6704654693603516, 0.6361813545227051, 0.6305637359619141, + 0.6286348104476929, 0.6084895730018616 + ], + "variance_ratio": [ + 0.12779653072357178, 0.08539871126413345, 0.03787778690457344, + 0.027448710054159164, 0.02099774219095707, 0.018148265779018402, + 0.01497985515743494, 0.008869816549122334, 0.0072584692388772964, + 0.006637815851718187, 0.005968444515019655, 0.0052051907405257225, + 0.00418508006259799, 0.00366230052895844, 0.003421148518100381, + 0.003231771755963564, 0.003144497750326991, 0.0026926728896796703, + 0.0026107896119356155, 0.002325378591194749, 0.002231287071481347, + 0.0021260364446789026, 0.0020408006384968758, 0.0019618934020400047, + 0.0018120171735063195, 0.0017625682521611452, 0.0017066390719264746, + 0.0016544549725949764, 0.0016025379300117493, 0.0015209605917334557, + 0.001484443200752139, 0.0014649484073743224, 0.0014135946985334158, + 0.0013908791588619351, 0.0013546152040362358, 0.0013118840288370848, + 0.0013031528797000647, 0.001228246372193098, 0.001206618151627481, + 0.001185449305921793, 0.0011748694814741611, 0.0011144272284582257, + 0.0010935775935649872, 0.0010637008817866445, 0.0010336086852476, + 0.0010197963565587997, 0.0009676493355073035, 0.000959104741923511, + 0.0009561708429828286, 0.0009255293407477438 + ] + } + } +} From 791066555355f234638dc57944919e83e83bc411 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 17 Sep 2024 18:57:35 -0400 Subject: [PATCH 160/177] fix(io): add debug logging of attempted serialization dictionary to serialize anndata Signed-off-by: Cameron Smith --- src/pyrovelocity/io/serialization.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/io/serialization.py b/src/pyrovelocity/io/serialization.py index 3fbd32a06..883987ec2 100644 --- a/src/pyrovelocity/io/serialization.py +++ b/src/pyrovelocity/io/serialization.py @@ -9,7 +9,12 @@ from beartype.typing import Any, Dict from scipy import sparse -from pyrovelocity.utils import ensure_numpy_array +from pyrovelocity.utils import ( + configure_logging, + ensure_numpy_array, + pretty_log_dict, + pretty_print_dict, +) __all__ = [ "serialize_anndata", @@ -19,6 +24,8 @@ "create_sample_anndata", ] +logger = configure_logging(__name__) + @beartype def serialize_anndata(adata: AnnData | AnnDataRaw) -> Dict[str, Any]: @@ -76,6 +83,11 @@ def serialize_anndata(adata: AnnData | AnnDataRaw) -> Dict[str, Any]: if adata.raw is not None: serialized["raw"] = serialize_anndata(adata.raw) + logger.debug( + "\nSerializing AnnData object from dictionary:\n\n" + f"{pretty_log_dict(serialized)}\n\n" + ) + return serialized From d3227ac1dbf90ef12ee09a3b1cbb80bbbf7370eb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 00:42:36 -0400 Subject: [PATCH 161/177] fix(tasks): add soft support for selected genes to preprocessing Signed-off-by: Cameron Smith --- src/pyrovelocity/tasks/preprocess.py | 53 ++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/tasks/preprocess.py b/src/pyrovelocity/tasks/preprocess.py index 0660c61ca..ea9f60342 100644 --- a/src/pyrovelocity/tasks/preprocess.py +++ b/src/pyrovelocity/tasks/preprocess.py @@ -58,6 +58,7 @@ def preprocess_dataset( default_velocity_mode: str = "dynamical", vector_field_basis: str = "umap", cell_state: str = "clusters", + selected_genes: List[str] = [""], ) -> Tuple[AnnData, Path, Path]: """ Preprocess data. @@ -80,6 +81,7 @@ def preprocess_dataset( default_velocity_mode (str, optional): default velocity mode. Defaults to "dynamical". vector_field_basis (str, optional): vector field basis. Defaults to "umap". cell_state (str, optional): Name of the cell state/cluster variable. Defaults to "clusters". + selected_genes (Optional[List[str]], optional): List of genes to preserve during preprocessing. Defaults to None. Returns: AnnData: processed AnnData object @@ -106,6 +108,14 @@ def preprocess_dataset( else: data_path = "AnnData object" + if selected_genes and selected_genes != [""]: + missing_genes = set(selected_genes) - set(adata.var_names) + if missing_genes: + logger.warning( + f"The following selected genes are missing from the AnnData object: " + f"{missing_genes}" + ) + if use_obs_subset: if n_obs_subset > adata.n_obs: logger.warning( @@ -169,6 +179,11 @@ def preprocess_dataset( and not overwrite ): logger.info(f"{processed_path} exists") + adata = load_anndata_from_path(processed_path) + logger.info( + f"loaded precomputed preprocessed data from {processed_path}" + ) + print_anndata(adata) return adata, Path(processed_path), reports_processed_path else: logger.info(f"generating {processed_path} ...") @@ -198,6 +213,15 @@ def preprocess_dataset( logger.info("processing data with cytotrace ...") cytotrace_sparse(adata, layer="spliced") + # TODO: clarify usage of selected_genes + # It is possible to pass selected_genes to filter_and_normalize by + # including the parameter + # + # retain_genes=selected_genes + # + # This is not done here because then the resulting genes would not + # necessarily pass the standard filters. However, it is confusing to + # have the selected_genes parameter of this function ignored here. adata_tmp = scv.pp.filter_and_normalize( adata, min_shared_counts=min_shared_counts, @@ -311,7 +335,31 @@ def preprocess_dataset( f"setting n_vars_subset to len(likelihood_sorted_genes): {len(likelihood_sorted_genes)}" ) n_vars_subset = len(likelihood_sorted_genes) - adata = adata[:, likelihood_sorted_genes[:n_vars_subset]].copy() + + # TODO: clarify usage of selected_genes + if selected_genes and selected_genes != [""]: + selected_genes_set = set(selected_genes) + likelihood_sorted_genes_set = set( + likelihood_sorted_genes[:n_vars_subset] + ) + additional_genes = ( + selected_genes_set - likelihood_sorted_genes_set + ) + + if additional_genes: + n_vars_subset = min( + n_vars_subset + len(additional_genes), adata.n_vars + ) + logger.info( + f"Including {len(additional_genes)} additional selected genes. New n_vars_subset: {n_vars_subset}" + ) + + final_gene_list = list( + likelihood_sorted_genes[:n_vars_subset] + ) + list(additional_genes) + adata = adata[:, final_gene_list].copy() + else: + adata = adata[:, likelihood_sorted_genes[:n_vars_subset]].copy() scv.tl.velocity_graph( data=adata, n_jobs=-1, @@ -320,7 +368,8 @@ def preprocess_dataset( scv.tl.velocity_embedding(adata, basis=vector_field_basis) - scv.tl.latent_time(adata) + if n_obs_subset is None or n_obs_subset > 100: + scv.tl.latent_time(adata) print_anndata(adata) adata.write(processed_path) From ea08a4aeb4d1d05c74793800633d7018d987edcf Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 00:43:42 -0400 Subject: [PATCH 162/177] fix(io): restore types when deserializing json Signed-off-by: Cameron Smith --- src/pyrovelocity/io/serialization.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/pyrovelocity/io/serialization.py b/src/pyrovelocity/io/serialization.py index 883987ec2..a8afde598 100644 --- a/src/pyrovelocity/io/serialization.py +++ b/src/pyrovelocity/io/serialization.py @@ -147,9 +147,30 @@ def deserialize_anndata(data: Dict[str, Any]) -> AnnData | AnnDataRaw: if "uns" in data: adata_dict["uns"] = data["uns"] + for key in [ + "clusters_coarse_colors", + "clusters_colors", + "day_colors", + "velocity_graph", + "velocity_graph_neg", + ]: + if key in adata_dict["uns"] and isinstance( + adata_dict["uns"][key], list + ): + adata_dict["uns"][key] = np.array(adata_dict["uns"][key]) adata = AnnData(**adata_dict) + category_columns = ["clusters", "clusters_coarse", "leiden"] + for col in category_columns: + if col in adata.obs.columns: + adata.obs[col] = adata.obs[col].astype("category") + + if "highly_variable_genes" in adata.var.columns: + adata.var["highly_variable_genes"] = adata.var[ + "highly_variable_genes" + ].astype("category") + if "raw" in data: raw_data = deserialize_anndata(data["raw"]) if isinstance(raw_data, AnnData): From 351bc1795f88327e4ca42db65c444ea99402d732 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 00:46:40 -0400 Subject: [PATCH 163/177] fix(tests): note handling of selected genes in generate fixture data Signed-off-by: Cameron Smith --- .../fixtures/generate_anndata_fixtures.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py index b32016982..0ee12a175 100644 --- a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py +++ b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py @@ -10,6 +10,8 @@ from pathlib import Path from anndata import AnnData +from beartype import beartype +from beartype.typing import List, Union from pyrovelocity.io.datasets import pancreas from pyrovelocity.io.serialization import ( @@ -32,6 +34,7 @@ logger = configure_logging(__name__) +@beartype def generate_pancreas_fixture_data( output_path: str | Path = "src/pyrovelocity/tests/data/preprocessed_pancreas.json", @@ -41,6 +44,10 @@ def generate_pancreas_fixture_data( """ Generate a test fixture for the pancreas dataset. + Note that the selected_genes are not enforced in the preprocess_dataset + function. This is to prefer higher quality genes over the selected_genes + in generating the test fixture data. + Args: output_path: Path to save the JSON fixture. n_obs: Number of observations to keep. @@ -60,17 +67,18 @@ def generate_pancreas_fixture_data( process_cytotrace=True, ) - selected_genes = pancreas_summary_configuration.selected_genes - selected_genes_in_adata = [ + selected_genes: List[str] = pancreas_summary_configuration.selected_genes + selected_genes_in_adata: List[str] = [ gene for gene in selected_genes if gene in adata.var_names ] if len(selected_genes_in_adata) < len(selected_genes): logger.warning( - f"Warning: Some selected genes are not in the downsampled data:", - f"{set(selected_genes) - set(selected_genes_in_adata)}", + f"\nSome selected genes are not in the downsampled data:\n" + f"selected_genes: {selected_genes}\n" + f"selected_genes_in_adata: {selected_genes_in_adata}\n" ) - genes_to_keep = list( + genes_to_keep: List[str] = list( set(adata.var_names[:n_vars].tolist() + selected_genes_in_adata) ) adata = adata[:, genes_to_keep] From d520dcc8161c58eeb2bf0c4ebe8fdf3296646f93 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 00:49:13 -0400 Subject: [PATCH 164/177] fix(tests): add unprocessed data fixture Signed-off-by: Cameron Smith --- .../{preprocessed_pancreas_50_13.json => pancreas_50_13.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/pyrovelocity/tests/data/{preprocessed_pancreas_50_13.json => pancreas_50_13.json} (100%) diff --git a/src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json b/src/pyrovelocity/tests/data/pancreas_50_13.json similarity index 100% rename from src/pyrovelocity/tests/data/preprocessed_pancreas_50_13.json rename to src/pyrovelocity/tests/data/pancreas_50_13.json From 24e8d28cfe2dc65a6846529852f20a270755b8f6 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 00:49:24 -0400 Subject: [PATCH 165/177] fix(tests): add processed data fixture Signed-off-by: Cameron Smith --- .../data/preprocessed_pancreas_50_7.json | 6583 +++++++++++++++++ 1 file changed, 6583 insertions(+) create mode 100644 src/pyrovelocity/tests/data/preprocessed_pancreas_50_7.json diff --git a/src/pyrovelocity/tests/data/preprocessed_pancreas_50_7.json b/src/pyrovelocity/tests/data/preprocessed_pancreas_50_7.json new file mode 100644 index 000000000..dd8cb19a6 --- /dev/null +++ b/src/pyrovelocity/tests/data/preprocessed_pancreas_50_7.json @@ -0,0 +1,6583 @@ +{ + "shape": [50, 7], + "obs": { + "index": [ + "ACGAGGATCATCACCC", + "ATCATGGCAGCTGTGC", + "TGGACGCAGTGTTGAA", + "CAAGGCCAGACGACGT", + "AGCCTAAGTTCCATGA", + "TCCCGATCAGCATGAG", + "GTCATTTTCATAGCAC", + "ACTGTCCCACGTAAGG", + "CGCTGGAGTCCATCCT", + "TGTGTTTGTATATCCG", + "ACTGAGTGTCTTCAAG", + "AGGTCCGTCCTGCAGG", + "TCACAAGTCTGGTTCC", + "CAGCATAGTAATAGCA", + "TTGACTTTCACCGGGT", + "TCGCGTTAGATCTGAA", + "TTCTACATCTACTCAT", + "AGGCCGTGTACCAGTT", + "CCTACCACACGTAAGG", + "GTTCGGGAGTCACGCC", + "CGTTGGGGTTTAAGCC", + "CAAGGCCAGTTGCAGG", + "AAACGGGCAAAGAATC", + "TTTACTGCAGCATACT", + "GGATTACAGACATAAC", + "GATGCTAAGCGATAGC", + "CCCAGTTTCGTATCAG", + "CGAACATTCGGAAACG", + "GGACGTCGTCGAGATG", + "GAACCTAAGAATCTCC", + "TTTGCGCAGACAGACC", + "ATTATCCAGGACATTA", + "AAGGAGCCAAAGGTGC", + "TGGACGCAGCGTCTAT", + "CAGCTAACAGCTTAAC", + "TACTCATAGGCCATAG", + "CAAGTTGGTGTGCCTG", + "CGAACATTCTAACGGT", + "GGATTACGTATCTGCA", + "TTGCGTCCATACCATG", + "ATGAGGGCAAGGTTTC", + "GAAGCAGGTCCGAAGA", + "GACTGCGAGAATCTCC", + "TTGAACGTCTTTAGTC", + "TCAATCTGTCAAAGAT", + "GGGACCTAGCTGCCCA", + "CGGAGTCCATAAAGGT", + "ACTGATGTCTGCGACG", + "AACTCCCAGAACTCGG", + "CTGAAGTCAGCTGGCT" + ], + "clusters_coarse": [ + "Endocrine", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 low EP", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Endocrine", + "Endocrine", + "Ductal", + "Ductal", + "Endocrine", + "Endocrine", + "Endocrine", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Endocrine", + "Endocrine", + "Ductal", + "Ngn3 high EP", + "Endocrine", + "Ngn3 low EP", + "Ngn3 high EP", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "clusters": [ + "Beta", + "Beta", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Epsilon", + "Ngn3 low EP", + "Alpha", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Epsilon", + "Epsilon", + "Ductal", + "Ductal", + "Beta", + "Epsilon", + "Beta", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Beta", + "Beta", + "Ductal", + "Ngn3 high EP", + "Beta", + "Ngn3 low EP", + "Ngn3 high EP", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "S_score": [ + -0.1900176852941513, -0.1798986792564392, 0.2876194417476654, + -0.13059574365615845, -0.19154003262519836, -0.20736166834831238, + 0.055809736251831055, -0.22657276690006256, -0.09854981303215027, + -0.10515359044075012, -0.22417986392974854, -0.13923786580562592, + -0.17192961275577545, -0.210012286901474, -0.24508747458457947, + 0.24464142322540283, -0.2199627012014389, 0.45211780071258545, + -0.2847501337528229, -0.1225256621837616, -0.1853637546300888, + 0.14741107821464539, -0.17434504628181458, -0.06566576659679413, + -0.11917057633399963, 0.0994512140750885, 0.6314109563827515, + -0.2435632348060608, -0.15836980938911438, -0.16285839676856995, + -0.03735727071762085, -0.23504072427749634, -0.1940152645111084, + -0.2763311266899109, -0.10047918558120728, -0.19494567811489105, + -0.15960684418678284, -0.1518237292766571, -0.21157994866371155, + -0.23124836385250092, -0.28817230463027954, 0.01992771029472351, + -0.10988262295722961, -0.1453070193529129, 0.0024125277996063232, + -0.1523832529783249, -0.18731294572353363, -0.23668700456619263, + -0.10470859706401825, -0.16313031315803528 + ], + "G2M_score": [ + -0.17808695137500763, -0.20500724017620087, -0.05926266312599182, + -0.28532150387763977, -0.24861331284046173, -0.26661795377731323, + 1.390926480293274, -0.23506353795528412, -0.20293928682804108, + -0.222975954413414, -0.15791422128677368, 0.7809014916419983, + -0.24516768753528595, -0.21463991701602936, -0.10996249318122864, + 0.4840411841869354, -0.2309238165616989, 0.3751475512981415, + -0.26815351843833923, 0.9082856178283691, -0.11527934670448303, + 0.7475467920303345, -0.2216024100780487, -0.2054639756679535, + -0.26204442977905273, -0.13194540143013, 0.10288387537002563, + -0.17528025805950165, -0.23461636900901794, -0.1737227439880371, + -0.1606866717338562, -0.2213122844696045, -0.1756855845451355, + -0.23374433815479279, -0.2139715999364853, -0.23751017451286316, + -0.3320413827896118, -0.1540473997592926, -0.17886017262935638, + -0.2009081244468689, -0.21155518293380737, -0.22321660816669464, + -0.2697060704231262, -0.25177180767059326, 1.0252666473388672, + -0.27496808767318726, -0.3082582354545593, -0.15865947306156158, + -0.2577580511569977, -0.24062800407409668 + ], + "n_genes_by_counts": [ + 3101, 2265, 2433, 1968, 2102, 1825, 2619, 2088, 2642, 2231, 2158, 2399, + 1904, 2148, 1990, 3594, 2498, 3222, 3323, 3606, 2518, 3443, 2581, 2658, + 2014, 2292, 3415, 2346, 2451, 2848, 2797, 2401, 2069, 2570, 2234, 2437, + 2434, 2573, 2203, 2231, 2509, 1593, 2129, 2418, 3394, 2334, 2806, 2260, + 2257, 2171 + ], + "total_counts": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "total_counts_mt": [ + 40.0, 33.0, 61.0, 20.0, 24.0, 28.0, 45.0, 41.0, 41.0, 36.0, 27.0, 37.0, + 57.0, 44.0, 35.0, 80.0, 56.0, 65.0, 61.0, 75.0, 30.0, 88.0, 40.0, 57.0, + 46.0, 59.0, 62.0, 57.0, 46.0, 61.0, 41.0, 29.0, 22.0, 42.0, 43.0, 45.0, + 53.0, 44.0, 43.0, 43.0, 57.0, 35.0, 40.0, 28.0, 80.0, 45.0, 70.0, 43.0, + 45.0, 25.0 + ], + "pct_counts_mt": [ + 0.43749314546585083, 0.6145251393318176, 1.0052735805511475, + 0.4133085310459137, 0.5580097436904907, 0.6561987400054932, + 0.6657789349555969, 0.9335154891014099, 0.5527096390724182, + 0.7318560481071472, 0.5507955551147461, 0.638701856136322, + 1.4357682466506958, 0.8427504301071167, 0.8551185131072998, + 0.5944419503211975, 0.8581060171127319, 0.6572295427322388, + 0.6783807873725891, 0.5839301943778992, 0.5220114588737488, + 0.7479813098907471, 0.6279435157775879, 0.7404520511627197, + 0.9370543956756592, 0.9983079433441162, 0.5529296398162842, + 1.0573177337646484, 0.7841800451278687, 0.795306384563446, + 0.5150753259658813, 0.5554491877555847, 0.4821389317512512, + 0.6336753368377686, 0.9301319718360901, 0.7317073345184326, + 0.9831200242042542, 0.6421482563018799, 0.902224063873291, + 0.8779093623161316, 0.8624603152275085, 1.0266940593719482, + 0.7912957072257996, 0.4508856534957886, 0.7468259930610657, + 0.7085498571395874, 0.9481241106987, 0.7767341136932373, + 0.713606059551239, 0.5155702233314514 + ], + "total_counts_ribo": [ + 1279.0, 609.0, 1647.0, 676.0, 649.0, 957.0, 1060.0, 721.0, 2178.0, 790.0, + 883.0, 1246.0, 607.0, 1161.0, 700.0, 3277.0, 1200.0, 2410.0, 1292.0, + 2739.0, 634.0, 3365.0, 1087.0, 2272.0, 1143.0, 1156.0, 2639.0, 624.0, + 831.0, 1913.0, 2378.0, 729.0, 613.0, 747.0, 780.0, 1595.0, 867.0, 1864.0, + 792.0, 764.0, 1030.0, 907.0, 1118.0, 939.0, 2420.0, 1429.0, 1073.0, + 1214.0, 1691.0, 1017.0 + ], + "pct_counts_ribo": [ + 13.98884391784668, 11.340782165527344, 27.14238739013672, + 13.969828605651855, 15.089513778686523, 22.427936553955078, + 15.682792663574219, 16.41621208190918, 29.361013412475586, + 16.0601749420166, 18.0130558013916, 21.508716583251953, 15.2896728515625, + 22.237119674682617, 17.10236930847168, 24.349828720092773, + 18.38798713684082, 24.36804962158203, 14.368327140808105, + 21.325132369995117, 11.031843185424805, 28.601783752441406, + 17.064363479614258, 29.51416015625, 23.283763885498047, + 19.560068130493164, 23.53518295288086, 11.574847221374512, + 14.1663818359375, 24.941329956054688, 29.874372482299805, + 13.96284294128418, 13.434144973754883, 11.270368576049805, + 16.872161865234375, 25.934959411621094, 16.082359313964844, + 27.2037353515625, 16.61771011352539, 15.598203659057617, + 15.584808349609375, 26.60604476928711, 22.116716384887695, + 15.120773315429688, 22.59148597717285, 22.500394821166992, + 14.533387184143066, 21.92919158935547, 26.815731048583984, + 20.97339630126953 + ], + "u_lib_size_raw": [ + 1782.0, 1454.0, 831.0, 1108.0, 1365.0, 1023.0, 2541.0, 1169.0, 1007.0, + 1310.0, 1301.0, 696.0, 1745.0, 1510.0, 1185.0, 1625.0, 1591.0, 800.0, + 2960.0, 1692.0, 1217.0, 1451.0, 1576.0, 1120.0, 1078.0, 1038.0, 1552.0, + 1305.0, 972.0, 1211.0, 974.0, 1165.0, 1033.0, 1380.0, 1537.0, 828.0, + 1242.0, 1057.0, 1278.0, 1054.0, 1578.0, 556.0, 1413.0, 1327.0, 1308.0, + 728.0, 1703.0, 672.0, 1043.0, 1368.0 + ], + "s_lib_size_raw": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "gcs": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "cytotrace": [ + 0.4, 0.06, 0.82, 0.04, 0.3, 0.56, 0.7, 0.14, 0.88, 0.24, 0.48, 0.9, 0.02, + 0.54, 0.16, 1.0, 0.5, 0.92, 0.46, 0.74, 0.22, 0.98, 0.26, 0.72, 0.6, 0.62, + 0.94, 0.1, 0.44, 0.86, 0.84, 0.32, 0.2, 0.34, 0.08, 0.76, 0.18, 0.8, 0.42, + 0.28, 0.36, 0.78, 0.58, 0.12, 0.96, 0.68, 0.38, 0.66, 0.64, 0.52 + ], + "counts": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "initial_size_unspliced": [ + 1782.0, 1454.0, 831.0, 1108.0, 1365.0, 1023.0, 2541.0, 1169.0, 1007.0, + 1310.0, 1301.0, 696.0, 1745.0, 1510.0, 1185.0, 1625.0, 1591.0, 800.0, + 2960.0, 1692.0, 1217.0, 1451.0, 1576.0, 1120.0, 1078.0, 1038.0, 1552.0, + 1305.0, 972.0, 1211.0, 974.0, 1165.0, 1033.0, 1380.0, 1537.0, 828.0, + 1242.0, 1057.0, 1278.0, 1054.0, 1578.0, 556.0, 1413.0, 1327.0, 1308.0, + 728.0, 1703.0, 672.0, 1043.0, 1368.0 + ], + "initial_size_spliced": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "initial_size": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "n_counts": [ + 1666.6461181640625, 2026.2613525390625, 1516.6356201171875, + 2167.085693359375, 1512.7271728515625, 1672.42919921875, + 1553.2332763671875, 1591.3150634765625, 1688.2955322265625, + 1497.4359130859375, 1608.329833984375, 1415.843994140625, + 1736.7374267578125, 1794.25537109375, 1655.7750244140625, 1471.78125, + 2160.858154296875, 1453.2464599609375, 1877.323974609375, + 1502.2559814453125, 1552.1700439453125, 1564.4613037109375, + 1609.263427734375, 1708.7283935546875, 1621.62890625, 1458.55029296875, + 1430.3856201171875, 1721.2923583984375, 1801.7320556640625, 1496.94921875, + 1719.0595703125, 1583.365478515625, 1864.5977783203125, + 1848.6614990234375, 1592.039794921875, 1483.9674072265625, + 1585.86083984375, 1572.5391845703125, 1651.753173828125, + 1575.983642578125, 1861.103271484375, 1557.927978515625, + 1600.417724609375, 2167.466552734375, 1397.2457275390625, + 1462.0338134765625, 1621.3333740234375, 1499.6533203125, + 1645.2039794921875, 1672.05126953125 + ], + "leiden": [ + "0", + "0", + "1", + "0", + "3", + "2", + "2", + "3", + "1", + "3", + "3", + "1", + "0", + "2", + "3", + "1", + "0", + "1", + "0", + "1", + "3", + "1", + "0", + "1", + "2", + "2", + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "0", + "3", + "1", + "3", + "1", + "3", + "0", + "0", + "1", + "2", + "0", + "1", + "2", + "0", + "2", + "2", + "2" + ], + "velocity_self_transition": [ + 0.5440033674240112, 0.7888529300689697, 0.013806283473968506, + 0.7888529300689697, 0.04211699962615967, 1.0073184967041016e-5, 0.0, + 0.18305939435958862, 0.028307318687438965, 0.40436577796936035, + 0.050437867641448975, 0.020281493663787842, 0.9946298003196716, + 0.12180924415588379, 0.07228374481201172, 0.45309191942214966, + 0.01954209804534912, 0.020969033241271973, 0.028395652770996094, + 0.023566842079162598, 0.1675243377685547, 0.024211585521697998, + 0.01954209804534912, 0.034968554973602295, 0.010215699672698975, + 0.0164758563041687, 0.024211585521697998, 0.04163020849227905, + 0.34288156032562256, 0.41478854417800903, 0.01286768913269043, + 0.8639301061630249, 0.9946298003196716, 0.36953556537628174, + 0.14971566200256348, 0.01855403184890747, 0.02419257164001465, + 0.01325768232345581, 0.208571195602417, 0.8639301061630249, + 0.7888529300689697, 0.02276688814163208, 0.01954209804534912, + 0.10389477014541626, 0.02105790376663208, 0.031654179096221924, + 0.2101317048072815, 0.016947627067565918, 0.019509553909301758, + 0.08077633380889893 + ] + }, + "var": { + "index": ["Pam", "Ins2", "Bicc1", "Isl1", "Kcnmb2", "Grin3a", "Cadps"], + "highly_variable_genes": [ + "True", + "True", + "True", + "True", + "True", + "True", + "True" + ], + "mt": [false, false, false, false, false, false, false], + "ribo": [false, false, false, false, false, false, false], + "n_cells_by_counts": [19, 6, 12, 24, 11, 7, 16], + "mean_counts": [ + 0.7799999713897705, 2.6600000858306885, 0.800000011920929, + 4.820000171661377, 0.3400000035762787, 0.3199999928474426, + 0.36000001430511475 + ], + "pct_dropout_by_counts": [62.0, 88.0, 76.0, 52.0, 78.0, 86.0, 68.0], + "total_counts": [39.0, 133.0, 40.0, 241.0, 17.0, 16.0, 18.0], + "cytotrace": [true, true, true, true, true, true, true], + "cytotrace_corrs": [ + -0.3162762522697449, 0.12602543830871582, 0.33911263942718506, + -0.17416998744010925, -0.1970590054988861, 0.4442867636680603, + -0.22521816194057465 + ], + "fit_r2": [ + 0.17601728439331055, 0.9843522757291794, 0.8610359579324722, + 0.35933393239974976, 0.8454212546348572, 0.9761226903647184, + 0.5675630867481232 + ], + "fit_alpha": [ + 0.578055825622483, 0.651591777491511, 0.19773527763225077, + 15.183010606999385, 0.18743906412046135, 0.06910717038574042, + 0.14353477597866035 + ], + "fit_beta": [ + 0.4049099668591707, 0.06721689604059118, 0.08879185161349923, + 43.92897203508826, 0.09881178802021871, 0.04670353953294745, + 0.026252833832793115 + ], + "fit_gamma": [ + 0.38729631129731246, 0.1752584460495083, 0.15620117163746527, + 1.6089132945721085, 0.2547626138391123, 0.17359121914754694, + 0.16490994664835248 + ], + "fit_t_": [ + 50.37974420793462, 30.343073385719205, 29.902327516354887, + 18.98848150277561, 35.231629912306, 26.75929936638391, 27.54325115866323 + ], + "fit_scaling": [ + 0.3352414518594742, 1.5236610253651937, 0.889136780500412, + 0.009213920929469169, 1.1237630617618561, 2.058192014694214, + 2.9277483224868774 + ], + "fit_std_u": [ + 0.27159035205841064, 3.6987993717193604, 0.6131449341773987, + 0.05388129875063896, 0.4736601412296295, 0.48177608847618103, + 0.9218344688415527 + ], + "fit_std_s": [ + 0.44557344913482666, 1.2542463541030884, 0.3499698340892792, + 2.763092279434204, 0.19915622472763062, 0.1053347960114479, + 0.1731736809015274 + ], + "fit_likelihood": [ + 1.002161883291577, 1.310290218925134, 1.4029942468112047, + 1.7444948741033333, 0.8744808370953906, 0.8309165800022114, + 0.8589213118338758 + ], + "fit_u0": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "fit_s0": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "fit_pval_steady": [ + 0.48175699593728344, 0.47505878843369537, 0.4417070755160214, + 0.4960445338579348, 0.46989657120614525, 0.2156900274261639, + 0.4433311484447805 + ], + "fit_steady_u": [ + 1.069621163147297, 8.285346266574217, 1.8469637619913735, + 0.18266854490783505, 1.2469362668415456, 1.4045267875786112, + 4.535181150675765 + ], + "fit_steady_s": [ + 1.2417789497252167, 2.621232801566607, 0.8708771309847461, + 7.532458611603442, 0.5756215246972338, 0.31594003332329207, + 0.5706063552663245 + ], + "fit_variance": [ + 0.04672211969216039, 0.03350176644284047, 0.024939376393277802, + 0.016821777210977044, 0.07356961690049205, 0.08315985286951148, + 0.07052107234977445 + ], + "fit_alignment_scaling": [ + 4.0517860942969115, 5.0447962573224165, 6.1221654065369595, + 1.1117752256659805, 4.052555797021417, 4.681411623046014, + 7.155710451659271 + ], + "velocity_genes": [true, true, true, false, true, true, true] + }, + "X": [ + [0.0, 4.326815605163574, 0.0, 2.006857395172119, 0.0, 0.0, 0.0], + [ + 0.0, 2.650247573852539, 0.0, 2.2794899940490723, 0.0, 0.0, + 0.7402511239051819 + ], + [0.0, 0.0, 1.5854207277297974, 0.0, 0.0, 0.6782041788101196, 0.0], + [ + 1.536940574645996, 0.0, 0.0, 3.9763405323028564, 0.0, 0.0, + 0.7960558533668518 + ], + [ + 0.0, 0.0, 0.0, 0.8624611496925354, 0.8624611496925354, 0.0, + 0.8624611496925354 + ], + [ + 0.8670551776885986, 0.8670551776885986, 0.8670551776885986, 0.0, 0.0, 0.0, + 0.0 + ], + [0.6265450716018677, 0.0, 0.0, 0.6265450716018677, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.8504177331924438, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.603163242340088, 0.0, 0.0, 0.0, 0.0], + [ + 1.5240920782089233, 0.0, 0.0, 0.7870888113975525, 0.0, 0.0, + 1.2220039367675781 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.701313316822052, 0.0, 0.0, 0.0, 0.0], + [ + 1.695500135421753, 0.0, 0.0, 1.9362196922302246, 0.9095172882080078, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 1.3550893068313599, 0.0, 0.0, 1.6706572771072388, 0.0, 0.0, + 0.8914050459861755 + ], + [0.0, 0.0, 0.36291196942329407, 0.0, 0.0, 0.0, 0.0], + [1.0312161445617676, 0.0, 0.0, 2.847247838973999, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.9392434358596802, 0.0, 0.0, 0.4670924246311188, 0.0], + [ + 0.5036827325820923, 0.0, 0.0, 1.4525551795959473, 0.0, 0.0, + 0.8370780348777771 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.191532015800476, 0.0], + [ + 0.7053398489952087, 0.0, 0.0, 0.7053398489952087, 1.11483633518219, 0.0, + 0.7053398489952087 + ], + [0.0, 0.0, 1.0992354154586792, 0.0, 0.0, 0.0, 0.0], + [1.0468506813049316, 0.0, 0.0, 2.3266265392303467, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.9281196594238281, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7881980538368225], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.648819923400879, 0.0, 0.0, 0.0, 0.0], + [ + 0.7382116913795471, 0.0, 0.0, 3.5512800216674805, 0.0, 0.0, + 0.7382116913795471 + ], + [ + 1.6124337911605835, 0.0, 0.0, 3.1816415786743164, 0.0, 0.0, + 0.6950206756591797 + ], + [0.0, 0.0, 0.9303247928619385, 0.0, 0.0, 0.0, 0.0], + [0.5537118315696716, 0.0, 0.5537118315696716, 0.0, 0.0, 0.0, 0.0], + [ + 1.1803479194641113, 0.7550666332244873, 0.0, 2.411419630050659, + 0.7550666332244873, 0.0, 0.7550666332244873 + ], + [ + 2.0084683895111084, 0.0, 0.0, 3.8038337230682373, 1.8183228969573975, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 1.515876293182373, 0.0, 0.0, 0.0], + [ + 0.0, 0.0, 0.0, 1.266176462173462, 0.8213784694671631, 0.0, + 0.8213784694671631 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.67161625623703, 0.0], + [ + 0.7382116913795471, 0.0, 0.0, 0.7382116913795471, 0.7382116913795471, 0.0, + 0.0 + ], + [0.0, 0.0, 0.6202060580253601, 0.0, 0.0, 0.6202060580253601, 0.0], + [ + 1.244395136833191, 0.0, 0.0, 0.0, 0.804427981376648, 0.0, + 0.804427981376648 + ], + [ + 1.527440071105957, 0.0, 0.0, 1.9474256038665771, 0.7894220352172852, 0.0, + 0.7894220352172852 + ], + [ + 0.0, 1.0231027603149414, 0.0, 1.9791160821914673, 1.3009321689605713, 0.0, + 0.6370562314987183 + ], + [0.0, 0.0, 1.4938890933990479, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7723221182823181], + [0.0, 0.0, 0.0, 2.0330097675323486, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.32130765914917, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 0.0, 0.586401104927063, 0.0, 2.1013951301574707, 0.586401104927063, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.7949232459068298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "layers": { + "Ms": [ + [ + 1.4032845497131348, 3.052248477935791, 0.06576139479875565, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 0.7000881433486938, 0.024166902527213097, 0.8499667644500732, + 3.014936685562134, 0.33464813232421875, 0.3015934228897095, + 0.25990477204322815 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0.0, 0.5893792510032654 + ], + [ + 1.1863106489181519, 0.5366032123565674, 0.04058506339788437, + 6.795828342437744, 0.5724716186523438, 0.044992588460445404, + 0.559857189655304 + ], + [ + 0.6932769417762756, 0.47997787594795227, 0.44088229537010193, + 4.344834327697754, 0.2850591838359833, 0.21075108647346497, + 0.49133139848709106 + ], + [ + 1.1087390184402466, 2.323683738708496, 0.4136205315589905, + 6.5146074295043945, 0.4866008758544922, 0.12280356884002686, + 0.5009723901748657 + ], + [ + 0.49234479665756226, 0.02658359333872795, 0.9349634647369385, + 2.1962857246398926, 0.13129226863384247, 0.3317527770996094, + 0.22988879680633545 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.40627655386924744, + 7.445266246795654, 0.5561153292655945, 0.0277238916605711, + 0.5725398659706116 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.03942548856139183, + 7.445266246795654, 0.5561153292655945, 0.0, 0.5725398659706116 + ], + [ + 0.23144376277923584, 0.02658359333872795, 0.9349634647369385, + 1.6431336402893066, 0.13734030723571777, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0816965103149414, 2.2670083045959473, 0.15524429082870483, + 6.355714321136475, 0.4747326076030731, 0.18359968066215515, + 0.4887535572052002 + ], + [ + 1.3859236240386963, 2.90460467338562, 0.04312162846326828, + 8.143259048461914, 0.60825115442276, 0.0, 0.6262154579162598 + ], + [ + 0.2592097520828247, 2.435494899749756, 0.9048033356666565, + 1.874214768409729, 0.1681419014930725, 0.32105106115341187, + 0.15395362675189972 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.2678501307964325, 0.02658359333872795, 0.9349634647369385, + 1.6795400381088257, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.6130998134613037, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.27191945910453796, 0.02658359333872795, 0.9349634647369385, + 1.3459373712539673, 0.13734030723571777, 0.3317527770996094, + 0.1990664005279541 + ], + [ + 1.0019835233688354, 2.0654966831207275, 0.49095699191093445, + 5.790762901306152, 0.4325341284275055, 0.16561108827590942, + 0.4453088343143463 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.28376471996307373, 0.04599640518426895, 0.9809598922729492, + 1.2512832880020142, 0.042454395443201065, 0.3317527770996094, + 0.16491524875164032 + ], + [ + 0.6886924505233765, 0.04599640518426895, 0.27985262870788574, + 2.6798255443573, 0.23397643864154816, 0.22029715776443481, + 0.4500373601913452 + ], + [ + 0.3867968022823334, 0.03942548856139183, 0.8408226370811462, + 2.045945405960083, 0.20055124163627625, 0.28435951471328735, + 0.2388278841972351 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0.0, 0.5893792510032654 + ], + [ + 1.3818784952163696, 2.9537885189056396, 0.20141148567199707, + 8.37784481048584, 0.627872109413147, 0.0, 0.607724666595459 + ], + [ + 0.46157321333885193, 2.3593857288360596, 0.8765282034873962, + 2.467672348022461, 0.12308648228645325, 0.3110182285308838, + 0.2530028820037842 + ], + [ + 0.5369269251823425, 0.05662532523274422, 0.8249676823616028, + 2.6481261253356934, 0.22183164954185486, 0.29272302985191345, + 0.2736946642398834 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0784907341003418, 2.2670083045959473, 0.7177754640579224, + 6.33446741104126, 0.4747326076030731, 0.12617842853069305, + 0.45949918031692505 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.4984320402145386, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.270278662443161, 0.02572605572640896, 0.9048033356666565, + 1.4826339483261108, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 0.980201244354248, 2.020594358444214, 0.6176607608795166, + 5.664876461029053, 0.42313119769096375, 0.07353031635284424, + 0.43562814593315125 + ], + [ + 0.2311086356639862, 0.02572605572640896, 0.9048033356666565, + 1.811358094215393, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 1.2319321632385254, 2.5818705558776855, 0.24210062623023987, + 7.238452911376953, 0.540667712688446, 0.10329599678516388, + 0.5566359162330627 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 0.40672144293785095, 0.02658359333872795, 0.9349634647369385, + 1.6562508344650269, 0.14662493765354156, 0.3317527770996094, + 0.2459142655134201 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 1.3399431705474854, 2.8165862560272217, 0.15005283057689667, + 7.870096683502197, 0.5898192524909973, 0.0260397307574749, + 0.5708929300308228 + ], + [ + 0.3138049244880676, 0.02658359333872795, 0.9349634647369385, + 1.4643843173980713, 0.17852088809013367, 0.3317527770996094, + 0.20026598870754242 + ], + [ + 0.32395216822624207, 0.04451264813542366, 0.9493159651756287, + 2.0597450733184814, 0.07631684839725494, 0.32105106115341187, + 0.15258191525936127 + ], + [ + 1.028328537940979, 2.1615657806396484, 0.6843906044960022, + 6.039841651916504, 0.4526520073413849, 0.19587987661361694, + 0.4381271004676819 + ], + [ + 0.3447604775428772, 0.04058506339788437, 0.8655527830123901, + 2.0446953773498535, 0.17011399567127228, 0.29272302985191345, + 0.2480343133211136 + ], + [ + 0.42723068594932556, 0.03942548856139183, 0.8408226370811462, + 1.266152262687683, 0.14200639724731445, 0.28435951471328735, + 0.2568689286708832 + ], + [ + 1.0997380018234253, 2.2670083045959473, 0.20298290252685547, + 6.355714321136475, 0.4747326076030731, 0.11656749248504639, + 0.4887535572052002 + ] + ], + "Mu": [ + [ + 1.458009958267212, 9.731120109558105, 0.6230944395065308, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.5156049728393555 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.7034346461296082, 0.8546698093414307, 1.8519641160964966, + 0.09599451720714569, 1.0511096715927124, 1.3451807498931885, + 2.1948485374450684 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 1.2476564645767212, 8.576372146606445, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.79750394821167 + ], + [ + 1.2476564645767212, 1.62242591381073, 0.3511691093444824, + 0.18465566635131836, 1.6036499738693237, 0.39111989736557007, + 4.611633777618408 + ], + [ + 1.1063703298568726, 1.4030550718307495, 0.5904406309127808, + 0.1215687170624733, 0.9337299466133118, 0.8598318099975586, + 3.7226784229278564 + ], + [ + 1.0984139442443848, 7.452322483062744, 1.2351198196411133, + 0.1893647164106369, 1.4338096380233765, 0.8525708913803101, + 3.984128475189209 + ], + [ + 0.6637682318687439, 0.9833465814590454, 2.0168375968933105, + 0.14880384504795074, 0.7101262807846069, 1.4796987771987915, + 2.3618826866149902 + ], + [ + 1.285057783126831, 8.440470695495605, 1.108371376991272, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.415059566497803 + ], + [ + 1.2120089530944824, 8.38078498840332, 0.341135710477829, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.75933313369751 + ], + [ + 0.7032443284988403, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.7120826840400696, 1.4796987771987915, + 2.4455509185791016 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.0346418619155884, 7.245456695556641, 0.6500575542449951, + 0.18474607169628143, 1.3988385200500488, 0.9318276047706604, + 4.062845230102539 + ], + [ + 1.3256348371505737, 9.074463844299316, 0.3731171786785126, + 0.23670588433742523, 1.7922618389129639, 0.028846152126789093, + 4.942225933074951 + ], + [ + 0.6574062705039978, 8.519707679748535, 1.9248610734939575, + 0.13281705975532532, 0.9580450654029846, 1.4319665431976318, + 2.317383050918579 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.7152480483055115, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.8811647891998291, 1.4796987771987915, + 2.284665107727051 + ], + [ + 0.9893571734428406, 6.315342903137207, 1.4242814779281616, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.3729424476623535 + ], + [ + 0.7289866805076599, 0.8742592334747314, 1.9525864124298096, + 0.1055939719080925, 0.47706568241119385, 1.4796987771987915, + 2.8923025131225586 + ], + [ + 1.0216199159622192, 6.679286479949951, 1.1493229866027832, + 0.16832418739795685, 1.2744975090026855, 0.7319786548614502, + 3.5442440509796143 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.6367191672325134, 0.602973222732544, 1.9525864124298096, + 0.1055939719080925, 0.39889806509017944, 1.4796987771987915, + 2.620482921600342 + ], + [ + 1.0884222984313965, 0.42017456889152527, 1.2373348474502563, + 0.1377778798341751, 0.9382034540176392, 1.1281973123550415, + 3.680722713470459 + ], + [ + 0.822378396987915, 0.5458196997642517, 1.6904687881469727, + 0.11809532344341278, 0.7373080849647522, 1.2946867942810059, + 2.744187355041504 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 1.2476564645767212, 8.627277374267578, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.792720794677734 + ], + [ + 1.3859648704528809, 9.407549858093262, 0.7561504244804382, + 0.24434158205986023, 1.850076675415039, 0.029776671901345253, + 4.369940280914307 + ], + [ + 0.5701303482055664, 8.324034690856934, 1.8647091388702393, + 0.16917578876018524, 0.902488112449646, 1.3872175216674805, + 2.4578704833984375 + ], + [ + 0.7330551743507385, 0.9666101932525635, 1.8186405897140503, + 0.19438445568084717, 0.9175675511360168, 1.3056166172027588, + 3.123826742172241 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.1461775302886963, 7.3564558029174805, 1.5189889669418335, + 0.18474607169628143, 1.3988385200500488, 0.36037319898605347, + 3.424264669418335 + ], + [ + 0.9676808714866638, 6.350621700286865, 1.2116297483444214, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.4703469276428223 + ], + [ + 0.7896954417228699, 0.8787828683853149, 1.9223253726959229, + 0.10218770802021027, 0.7643809914588928, 1.4319665431976318, + 2.709317684173584 + ], + [ + 1.0323727130889893, 6.632993698120117, 1.4074960947036743, + 0.16466496884822845, 1.246790885925293, 0.4723442494869232, + 3.6212317943573 + ], + [ + 0.6761797070503235, 0.8787828683853149, 1.9248610734939575, + 0.13281705975532532, 1.0058867931365967, 1.4319665431976318, + 2.436093807220459 + ], + [ + 1.2204599380493164, 8.231734275817871, 0.7940479516983032, + 0.21040523052215576, 1.593121886253357, 0.21294988691806793, + 4.426808834075928 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.6609135270118713, 0.9401367902755737, 1.989022970199585, + 0.1055939719080925, 0.8400647640228271, 1.4796987771987915, + 2.0362207889556885 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 1.3254634141921997, 8.882596969604492, 0.8946331143379211, + 0.22953300178050995, 1.7379511594772339, 0.10021766275167465, + 4.254389762878418 + ], + [ + 0.733043909072876, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.6998255252838135, 1.4796987771987915, + 2.5380139350891113 + ], + [ + 0.6405916213989258, 0.6162480711936951, 1.9085938930511475, + 0.13333342969417572, 0.36938712000846863, 1.4319665431976318, + 2.3904776573181152 + ], + [ + 1.0928668975830078, 7.049684524536133, 1.589895486831665, + 0.17615321278572083, 1.3337763547897339, 0.7660241723060608, + 3.264996290206909 + ], + [ + 0.8194690942764282, 0.5618732571601868, 1.7527081966400146, + 0.1215687170624733, 0.553757905960083, 1.3327659368515015, + 2.829345941543579 + ], + [ + 0.8883791565895081, 0.5761994123458862, 1.8241499662399292, + 0.09050911664962769, 0.6562696099281311, 1.2946867942810059, + 2.7510621547698975 + ], + [ + 1.0770013332366943, 7.252225875854492, 0.615350604057312, + 0.18474607169628143, 1.3988385200500488, 0.7673612833023071, + 4.062845230102539 + ] + ], + "fit_t": [ + [ + 19.426160337552737, 20.0, 8.214375156523918, 19.01602169645363, + 19.557391560932427, 5.562528014343339, 19.22952710495964 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 9.858074194691318, 7.914981918500489, 18.750995642171677, + 9.352432203836482, 8.900453139399993, 17.631717954785938, + 11.680821800358196 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 18.495903795256382, 16.750129990814887, 8.149555445694725, + 18.647851910744183, 18.146945122936128, 6.098557460342898, + 18.90901597821436 + ], + [ + 16.53015556580884, 15.144628910035308, 9.395854055068865, + 17.545181655391357, 16.418168715241784, 7.656814035813134, + 18.050070365425725 + ], + [ + 11.60833897616936, 10.821436055645604, 13.249656847176134, + 13.606788309976515, 11.893148539680377, 12.742900218693137, + 15.383675216721652 + ], + [ + 16.417720907379582, 14.378652577441134, 10.867768190185414, + 15.981876122661436, 16.252581277105396, 9.221200911526083, + 17.162629118427724 + ], + [ + 7.502109704641349, 6.942820838627702, 19.769596794390186, + 8.24193410454175, 7.61286515196223, 18.776333482743162, + 10.745098039215689 + ], + [ + 17.952982889134717, 16.811761787480787, 8.998604282053877, + 18.166855335775505, 17.94713907069114, 7.019273541360132, + 18.408303641066468 + ], + [ + 18.09041507080013, 16.288980907849353, 8.63367996718051, + 18.150497706248835, 17.684103210579547, 6.688864387251226, + 18.578348121531743 + ], + [ + 6.776371308016876, 5.946632782719188, 19.689456548960678, + 8.315103597529157, 6.727648273827087, 19.65486329000448, + 10.380622837370247 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 16.16548172851233, 14.035390941499823, 11.218411707043257, + 15.631637636363449, 15.644587623136143, 9.626000822962128, + 17.074857111248487 + ], + [ + 19.27215089361318, 17.75889361001499, 7.41453755469918, + 19.747741671640885, 19.032161887300983, 5.126624564539632, + 19.50691939785979 + ], + [ + 8.436095674471678, 6.871336076600899, 19.340295547824994, + 8.67764416128281, 7.835596498477102, 18.552361805667434, + 10.786917298776121 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.759493670886075, 5.8703939008894555, 19.984973703981968, + 8.32452694132299, 6.65092947772204, 19.430748543254143, + 10.279123414071512 + ], + [ + 14.50421908508815, 12.862134401200136, 13.298271678718402, + 13.517020942097442, 14.318382683795155, 12.046167368577748, + 15.70357519686396 + ], + [ + 6.691983122362868, 5.44853875476493, 19.293764087152514, + 8.344482257592283, 6.503393331366183, 20.0, 10.431372549019608 + ], + [ + 15.13924008334364, 13.66200724217612, 12.448451108910222, + 14.367265187083097, 14.95032907968616, 11.139996700555466, + 16.25836171414341 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.886075949367089, 5.14866581956798, 18.84297520661157, + 8.33062439907194, 6.780761286515194, 19.83415508740475, + 10.865051903114189 + ], + [ + 9.476793248945144, 9.21473951715375, 13.343350864012024, + 13.480671023458017, 9.997049277072877, 13.200358583594795, + 14.652825836216845 + ], + [ + 7.942133445717131, 7.053185367694067, 16.786518484174934, + 10.030397301819624, 8.22492901041257, 17.08522684095704, + 12.492337529995487 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 18.421443635050036, 16.750129990814887, 8.25120391383517, + 18.661884190949262, 18.089666386536614, 6.272575961156832, + 18.852024326180988 + ], + [ + 18.987340216018055, 18.818705675787417, 8.729792551787675, + 18.473395248050696, 19.057861162841178, 6.0814615972751325, + 18.975330513161627 + ], + [ + 9.208860279214178, 7.6953617333443, 19.02235062323393, 8.99518105173004, + 8.708320584480159, 17.758291319462696, 11.34515511764662 + ], + [ + 9.00223336894725, 8.314522356886426, 18.119944320687843, + 9.674484152237131, 9.357262664538373, 17.291111035420982, + 11.740280318874104 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 15.813521278349915, 14.91678671604552, 12.306901833469869, + 14.670613007102775, 16.033219388546648, 10.468890843916565, + 16.534727190766137 + ], + [ + 14.541138915486558, 12.496823100598009, 13.173052548033672, + 13.50310559719787, 14.248303015842524, 11.948117169066071, + 15.720876234539537 + ], + [ + 6.819109281881754, 6.099110046517619, 19.286976437292143, + 8.711975885384017, 6.836158169589718, 19.441591211831057, + 10.617255520070206 + ], + [ + 14.942211937108071, 13.3749512116991, 12.540423582424141, + 14.079825301908384, 14.790818907026791, 11.277843443134708, + 16.0162473944111 + ], + [ + 7.162106395461434, 6.364716451769193, 19.708682129688327, + 8.694810023333412, 7.116000901678185, 18.97311913443754, + 10.572607683568647 + ], + [ + 17.714485846638045, 15.883099671164532, 9.22447575425873, + 17.654268872756578, 17.527293403544764, 7.272523206941286, + 18.200691227888207 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 7.156118143459914, 6.668360864040662, 20.0, 8.25856353476616, + 7.229271171437, 18.879426266248316, 10.698961937716264 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 18.41963902058667, 18.301951768348186, 8.929262373554797, + 18.00448095507974, 18.686123137148993, 6.62157191507445, + 18.735450981041314 + ], + [ + 6.894514767932487, 6.058449809402797, 19.539193588780364, + 8.306234568076139, 6.845677190911772, 19.421783953384132, + 10.50980392156863 + ], + [ + 7.3091051584241535, 5.8138290927288905, 18.036400935703455, + 8.694273590144332, 7.361577176776227, 18.678155233856437, + 11.5950431394543 + ], + [ + 15.325286161589917, 14.265535091270477, 12.905141417145897, + 14.028202431214313, 15.464532132482608, 11.226584593601137, + 16.187333126201796 + ], + [ + 7.676842517274287, 6.610359198517042, 17.200688608809045, + 9.743936475105002, 7.873222676005576, 17.615418241483315, + 12.114796889379106 + ], + [ + 8.03616599106715, 7.114176470317734, 16.89384916502004, + 10.03087242837534, 8.321038266991808, 17.192801914387847, + 12.531882758010667 + ], + [ + 16.208704941690172, 14.035390941499823, 11.075478660138753, + 15.647928770763226, 15.705041453311111, 9.50137117005836, + 17.149124975314816 + ] + ], + "fit_tau": [ + [ + 50.37974420793462, 29.580684607183542, 4.057099713274281, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 23.252593942992075 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 5.316455418927775, 0.91486653424279, 22.238916946836802, + 0.8587755453516607, 7.789908121313889, 23.397578340456285, + 7.197231458545165 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 15.949366256783323, 20.584497020462774, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 15.189872625507926, 1.9822108241927117, 2.2539442851523788, + 2.0038096058205417, 17.350249906562755, 3.227252184890522, + 22.698960753873216 + ], + [ + 10.126581750338618, 1.6772553127784482, 4.658151522648249, + 1.145034060468881, 6.550604556559406, 10.488569600894197, + 15.640137592607765 + ], + [ + 11.139239925372479, 15.095297815006036, 10.368143711700942, + 2.099229110859615, 13.101209113118813, 8.874943508448936, + 17.30103715996434 + ], + [ + 4.810126331410843, 1.0673442899499217, 27.49812027885902, + 1.3358730705470279, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 16.962024431817184, 19.669630486219987, 9.166040092953006, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 21.314877781076067 + ], + [ + 14.43037899423253, 19.364674974805723, 2.1036813328088866, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 24.35986032122979 + ], + [ + 4.810126331410843, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 10.126581750338618, 14.485386792177508, 4.5078885703047575, + 2.0038096058205417, 12.57007901393832, 11.026444965042618, + 17.57785375452377 + ], + [ + 19.99999895691877, 23.939007646019675, 2.4042072374958705, + 3.053424161250349, 23.723811096728664, 0.26893768207421015, + 27.54325115866323 + ], + [ + 4.3037972438939125, 18.754763951977196, 24.643124184332674, + 1.145034060468881, 6.196517823772412, 26.75929936638391, + 7.197231458545165 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.810126331410843, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 5.665387724591919, 26.75929936638391, + 7.058823161265451 + ], + [ + 8.860759031546289, 11.435831678034875, 13.52366571091427, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.148788241572898 + ], + [ + 5.063290875169309, 0.91486653424279, 25.845227803080608, + 0.8587755453516607, 2.8326938622959594, 26.75929936638391, + 9.4117642150206 + ], + [ + 9.620252662821686, 12.503175967984797, 9.917354854670466, + 1.7175510907033213, 10.622601983609849, 8.068130462226305, + 14.256054619810616 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.3037972438939125, 0.6099110228285267, 26.74680551714156, + 0.8587755453516607, 2.12452039672197, 26.75929936638391, + 8.304497836782883 + ], + [ + 9.873417206580152, 0.457433267121395, 9.767091902326975, + 1.2404535655079545, 6.373561190165909, 14.926041355118663, + 14.94809610620919 + ], + [ + 6.075949050203171, 0.6099110228285267, 19.233657899966964, + 1.0496145554298075, 4.603127526230934, 20.842670360751292, + 9.13494762046117 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 15.949366256783323, 20.73697477616991, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 25.063289832088078, 26.226173981626648, 5.409466284365709, + 3.2442631713284964, 27.618765157385607, 0.26893768207421015, + 21.591694375635498 + ], + [ + 3.7974681563769814, 17.687419662027274, 22.83996875621077, + 1.6221315856642482, 5.665387724591919, 25.549079797049966, + 8.027681242223455 + ], + [ + 5.316455418927775, 1.0673442899499217, 21.33733923277585, + 2.0038096058205417, 6.019474457378914, 21.64948340697392, + 10.934255485097463 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 12.151898100406342, 14.790342303591771, 15.62734704372316, + 2.0038096058205417, 12.57007901393832, 3.496189866964732, + 13.702421430691757 + ], + [ + 8.607594487787825, 11.435831678034875, 10.518406664044434, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.564013133412043 + ], + [ + 5.5696199626862395, 0.91486653424279, 24.49286123198918, + 0.8587755453516607, 4.780170892624432, 26.75929936638391, + 8.719722728622028 + ], + [ + 9.620252662821686, 12.198220456570533, 13.37340275857078, + 1.7175510907033213, 10.268515250822853, 4.303002913187362, + 14.532871214370044 + ], + [ + 4.556961787652378, 0.91486653424279, 24.643124184332674, + 1.145034060468881, 6.550604556559406, 26.75929936638391, + 7.750864647664025 + ], + [ + 14.683543537990996, 18.449808440562933, 5.860255141396185, + 2.480907131015909, 16.642076440988763, 1.8825637745194712, + 21.176469483796353 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 4.556961787652378, 1.0673442899499217, 26.74680551714156, + 0.8587755453516607, 5.3113009918049245, 26.75929936638391, + 6.505189972146591 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 19.493669869401838, 22.414230088948354, 6.311043998426661, + 2.862585151172202, 21.245203967219698, 0.8068130462226305, + 20.069203105558632 + ], + [ + 5.063290875169309, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 8.166089539503169 + ], + [ + 4.3037972438939125, 0.6099110228285267, 25.093913041363148, + 1.2404535655079545, 1.9474770303284723, 26.75929936638391, + 7.33563975582488 + ], + [ + 10.886075381614015, 13.570520257934719, 16.228398853097126, + 1.8129705957423947, 11.507818815577338, 9.009412349486041, + 12.733563349733753 + ], + [ + 6.075949050203171, 0.6099110228285267, 20.586024471058394, + 1.0496145554298075, 3.3638239614764522, 22.456296453196547, + 9.550172512300316 + ], + [ + 6.835442681478567, 0.6099110228285267, 21.637865137462835, + 0.7633560403125873, 3.8949540606569446, 20.842670360751292, + 9.273355917740886 + ], + [ + 10.886075381614015, 14.485386792177508, 4.357625617961265, + 2.0038096058205417, 12.57007901393832, 7.7991927801520955, + 17.57785375452377 + ] + ], + "fit_tau_": [ + [ + 0.03394037571391852, 0.15175313208494268, 20.925014224071155, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.7866404343923871 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 5.634102368510475, 30.19887328490359, 1.017973664954813, + 3.1928504365667387, 5.996590262828748, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0521516471314742, 20.941932227722088, 22.508528814000865, + 1.5299075008548957, 1.462582990933841, 17.95496967576716, + 0.4495088196527926 + ], + [ + 2.2061244214047044, 22.459463548571513, 16.740011379256924, + 2.577561550353357, 7.312914954669206, 5.572231968341533, + 3.6522591596789398 + ], + [ + 2.07036291854903, 2.428050113359083, 8.030681134643524, + 1.4966486421406588, 2.632649383680914, 6.810505739084096, + 2.5846757130035574 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 2.2283435338538697, 10.749984983363733, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.8145690171340445, 0.910518792509656, 9.727303909568214, + 1.1474306256411717, 1.2431955422937648, 37.148213122276886, + 1.0675834466753824 + ], + [ + 1.2557939014149855, 1.0622719245945986, 22.508528814000865, + 1.1474306256411717, 1.2431955422937648, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.67685583381704, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 2.511587802829971, 2.8833095096139107, 19.00217507915651, + 1.5465369302120142, 2.925165981867682, 4.953095082970252, + 2.303732700720562 + ], + [ + 0.5430460114226964, 0.15175313208494268, 22.508528814000865, + 0.9312480439986321, 0.36564574773346026, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.754134767069787, 0.910518792509656, 0.5655409249748962, + 2.5110438329248828, 7.751689851949357, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.109267628505334, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 8.48298134741628, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.9528126871109115, 4.704347094633222, 5.2029765097690435, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 5.2817286309203135 + ], + [ + 5.97350612564966, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.040796712964875, 0.20637896179042714, + 8.709233380772858 + ], + [ + 2.647349305685645, 3.945581434208509, 8.7093302446134, + 1.779348941211672, 3.8758449259746786, 8.048779509826659, + 4.4388995940713265 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.754134767069787, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.552700759791719, 0.20637896179042714, + 10.563457261840627 + ], + [ + 2.341885924260378, 30.19887328490359, 8.7093302446134, + 2.3780083980679354, 7.532302403309282, 2.2701685796946984, + 3.877013569505336 + ], + [ + 4.887414102804267, 30.19887328490359, 2.3752718848945635, + 2.7771147026387784, 9.872435188803427, 0.6191368853712815, + 9.271119405338847 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 0.20364225428351113, 0.15175313208494268, 16.513795009266964, + 0.84810089721304, 0.07312914954669206, 41.069413396295, + 1.2361492540451797 + ], + [ + 6.754134767069787, 1.2140250566795414, 1.017973664954813, + 1.8957549467115011, 8.629239646509664, 0.20637896179042714, + 10.788211671667023 + ], + [ + 5.53228124136872, 30.19887328490359, 1.3572982199397505, + 1.5465369302120142, 7.824819001496049, 0.4127579235808543, + 7.079763909531483 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 1.730959161409845, 2.5798032454440256, 4.071894659819252, + 1.5465369302120142, 2.925165981867682, 15.272043172491609, + 4.944597016180719 + ], + [ + 3.0885741899665855, 4.704347094633222, 7.9175729496485445, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 4.83221981126752 + ], + [ + 5.328638987085209, 30.19887328490359, 0.5655409249748962, + 3.1595915778525017, 9.799306039256734, 0.20637896179042714, + 9.833005429904839 + ], + [ + 2.579468554257808, 4.097334566293452, 5.316084694764023, + 1.8292372292830275, 4.0952323746147545, 14.859285248910753, + 4.157956581788332 + ], + [ + 6.618373264214113, 30.19887328490359, 0.5655409249748962, + 2.5110438329248828, 7.239785805122514, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.2218535257010668, 1.2140250566795414, 15.495821344312152, + 1.230577772426764, 1.5357121404805332, 19.81238033188101, + 1.0675834466753824 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.482611761358438, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 9.141143693336508, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 0.5430460114226964, 0.455259396254828, 14.704064049347298, + 1.0143951907842244, 0.6581623459202285, 30.95684426856407, + 1.629469471241373 + ], + [ + 5.871684998507905, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.530597534723656, 0.20637896179042714, + 10.732023069210424 + ], + [ + 6.754134767069787, 30.19887328490359, 0.6786491099698753, + 2.4944144035677644, 14.552700759791719, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.138243669976867, 3.186815773783796, 3.3932455498493765, + 1.662942935711843, 3.4370700286945266, 7.016884700874523, + 5.675048848116507 + ], + [ + 4.955294854232105, 30.19887328490359, 1.8097309599196674, + 2.7105969852103042, 12.505084572484343, 0.20637896179042714, + 8.765421983229457 + ], + [ + 4.208606588525897, 30.19887328490359, 1.2441900349447714, + 3.3092564420665678, 11.40814732928396, 0.6191368853712815, + 9.10255359796905 + ], + [ + 2.2061244214047044, 2.8833095096139107, 19.115283264151486, + 1.5465369302120142, 2.925165981867682, 8.255158471617085, + 2.303732700720562 + ] + ], + "raw_spliced": [ + [0.0, 116.0, 0.0, 10.0, 0.0, 0.0, 0.0], + [0.0, 12.0, 0.0, 8.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 4.0, 0.0, 0.0, 1.0, 0.0], + [3.0, 0.0, 0.0, 43.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0], + [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 4.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 18.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 10.0, 0.0, 0.0, 1.0, 0.0], + [1.0, 0.0, 0.0, 5.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 2.0, 0.0, 1.0], + [0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 31.0, 0.0, 0.0, 1.0], + [4.0, 0.0, 0.0, 23.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 1.0, 0.0, 9.0, 1.0, 0.0, 1.0], + [5.0, 0.0, 0.0, 34.0, 4.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0], + [2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], + [3.0, 0.0, 0.0, 5.0, 1.0, 0.0, 1.0], + [0.0, 2.0, 0.0, 7.0, 3.0, 0.0, 1.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 7.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 9.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "raw_unspliced": [ + [0.0, 335.0, 0.0, 0.0, 4.0, 0.0, 1.0], + [0.0, 35.0, 0.0, 0.0, 1.0, 0.0, 3.0], + [1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 0.0, 1.0, 0.0, 7.0], + [3.0, 0.0, 0.0, 0.0, 1.0, 1.0, 6.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0], + [1.0, 0.0, 0.0, 0.0, 4.0, 0.0, 2.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 3.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 2.0, 0.0, 3.0, 0.0, 1.0], + [2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 7.0], + [4.0, 1.0, 4.0, 0.0, 1.0, 0.0, 4.0], + [1.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 1.0, 0.0, 4.0, 5.0, 0.0, 4.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0], + [5.0, 0.0, 1.0, 0.0, 3.0, 0.0, 17.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [3.0, 0.0, 0.0, 0.0, 5.0, 0.0, 9.0], + [2.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 2.0, 0.0, 0.0, 2.0, 0.0, 9.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 2.0, 3.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0], + [0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 7.0], + [1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 4.0, 2.0, 0.0, 4.0, 0.0, 11.0], + [1.0, 0.0, 0.0, 0.0, 6.0, 0.0, 2.0], + [1.0, 0.0, 1.0, 0.0, 3.0, 0.0, 1.0], + [2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 9.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 9.0, 0.0], + [2.0, 1.0, 1.0, 0.0, 5.0, 0.0, 1.0], + [0.0, 1.0, 8.0, 0.0, 0.0, 2.0, 0.0], + [2.0, 0.0, 0.0, 0.0, 4.0, 0.0, 5.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 3.0], + [2.0, 5.0, 0.0, 0.0, 2.0, 0.0, 7.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 7.0], + [0.0, 0.0, 0.0, 1.0, 5.0, 0.0, 5.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 7.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [1.0, 11.0, 0.0, 0.0, 2.0, 0.0, 8.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0], + [3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0] + ], + "spliced": [ + [0.0, 74.70283508300781, 0.0, 6.439899921417236, 0.0, 0.0, 0.0], + [ + 0.0, 13.157543182373047, 0.0, 8.771695137023926, 0.0, 0.0, + 1.0964618921279907 + ], + [0.0, 0.0, 3.881344795227051, 0.0, 0.0, 0.9703361988067627, 0.0], + [ + 3.650341033935547, 0.0, 0.0, 52.32155227661133, 0.0, 0.0, + 1.2167803049087524 + ], + [ + 0.0, 0.0, 0.0, 1.3689839839935303, 1.3689839839935303, 0.0, + 1.3689839839935303 + ], + [ + 1.379892110824585, 1.379892110824585, 1.379892110824585, 0.0, 0.0, 0.0, + 0.0 + ], + [0.8711347579956055, 0.0, 0.0, 0.8711347579956055, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 5.362476825714111, 0.0, 0.0, 0.0], + [0.0, 0.0, 3.9687249660491943, 0.0, 0.0, 0.0, 0.0], + [ + 3.5909736156463623, 0.0, 0.0, 1.196991205215454, 0.0, 0.0, + 2.393982410430908 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0163991451263428, 0.0, 0.0, 0.0, 0.0], + [ + 4.449370384216309, 0.0, 0.0, 5.932494163513184, 1.483123540878296, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 2.8771071434020996, 0.0, 0.0, 4.31566047668457, 0.0, 0.0, + 1.4385535717010498 + ], + [0.0, 0.0, 0.43750929832458496, 0.0, 0.0, 0.0, 0.0], + [1.8044743537902832, 0.0, 0.0, 16.24026870727539, 0.0, 0.0, 0.0], + [0.0, 0.0, 5.953488349914551, 0.0, 0.0, 0.5953488349914551, 0.0], + [ + 0.6548042893409729, 0.0, 0.0, 3.2740213871002197, 0.0, 0.0, + 1.3096085786819458 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.292120933532715, 0.0], + [ + 1.0245345830917358, 0.0, 0.0, 1.0245345830917358, 2.0490691661834717, + 0.0, 1.0245345830917358 + ], + [0.0, 0.0, 2.0018699169158936, 0.0, 0.0, 0.0, 0.0], + [1.848665714263916, 0.0, 0.0, 9.243328094482422, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.5297479629516602, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1994296312332153], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 4.200838565826416, 0.0, 0.0, 0.0, 0.0], + [ + 1.0921906232833862, 0.0, 0.0, 33.85791015625, 0.0, 0.0, + 1.0921906232833862 + ], + [ + 4.0150017738342285, 0.0, 0.0, 23.086259841918945, 0.0, 0.0, + 1.0037504434585571 + ], + [0.0, 0.0, 1.535332441329956, 0.0, 0.0, 0.0, 0.0], + [0.7396985292434692, 0.0, 0.7396985292434692, 0.0, 0.0, 0.0, 0.0], + [ + 2.2555065155029297, 1.1277532577514648, 0.0, 10.149779319763184, + 1.1277532577514648, 0.0, 1.1277532577514648 + ], + [ + 6.451895236968994, 0.0, 0.0, 43.872886657714844, 5.161516189575195, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 3.5534095764160156, 0.0, 0.0, 0.0], + [ + 0.0, 0.0, 0.0, 2.5472636222839355, 1.2736318111419678, 0.0, + 1.2736318111419678 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.9573984146118164, 0.0], + [ + 1.0921906232833862, 0.0, 0.0, 1.0921906232833862, 1.0921906232833862, + 0.0, 0.0 + ], + [0.0, 0.0, 0.8593111038208008, 0.0, 0.0, 0.8593111038208008, 0.0], + [ + 2.470834970474243, 0.0, 0.0, 0.0, 1.2354174852371216, 0.0, + 1.2354174852371216 + ], + [ + 3.606369972229004, 0.0, 0.0, 6.010616302490234, 1.2021232843399048, 0.0, + 1.2021232843399048 + ], + [ + 0.0, 1.7818125486373901, 0.0, 6.236343860626221, 2.6727187633514404, + 0.0, 0.8909062743186951 + ], + [0.0, 0.0, 3.45438551902771, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1647872924804688], + [0.0, 0.0, 0.0, 6.6370368003845215, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.748319625854492, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 0.0, 0.7975077629089355, 0.0, 7.17756986618042, 0.7975077629089355, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.214271068572998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "unspliced": [ + [ + 0.0, 236.86868286132812, 0.0, 0.0, 2.8282828330993652, 0.0, + 0.7070707082748413 + ], + [ + 0.0, 30.33012580871582, 0.0, 0.0, 0.8665750026702881, 0.0, + 2.5997250080108643 + ], + [ + 1.5162454843521118, 1.5162454843521118, 7.5812273025512695, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 3.4115524291992188, 0.0, 0.0, 0.0, 1.1371841430664062, 0.0, + 7.960289001464844 + ], + [ + 2.769230604171753, 0.0, 0.0, 0.0, 0.923076868057251, 0.923076868057251, + 5.538461208343506 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.9266862869262695], + [0.4958677589893341, 0.0, 0.0, 0.0, 0.0, 0.0, 5.950413227081299], + [ + 1.0778443813323975, 0.0, 0.0, 0.0, 4.31137752532959, 0.0, + 2.155688762664795 + ], + [0.0, 1.2512413263320923, 5.004965305328369, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.9618321061134338, 0.0, 0.0, 0.0, 0.0, 2.8854963779449463], + [0.9684857130050659, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9369714260101318], + [0.0, 0.0, 3.6206893920898438, 0.0, 0.0, 0.0, 0.0], + [ + 2.166189193725586, 0.0, 1.4441261291503906, 0.0, 2.166189193725586, 0.0, + 0.7220630645751953 + ], + [ + 1.6688742637634277, 0.0, 0.8344371318817139, 0.0, 0.0, 0.0, + 5.841059684753418 + ], + [ + 4.253164768218994, 1.0632911920547485, 4.253164768218994, 0.0, + 1.0632911920547485, 0.0, 4.253164768218994 + ], + [ + 0.7753846049308777, 1.5507692098617554, 1.5507692098617554, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 1.583909511566162, 0.791954755783081, 0.0, 3.167819023132324, + 3.9597737789154053, 0.0, 3.167819023132324 + ], + [0.0, 0.0, 1.5749999284744263, 0.0, 0.0, 4.724999904632568, 0.0], + [ + 2.128378391265869, 0.0, 0.4256756603717804, 0.0, 1.2770270109176636, + 0.0, 7.236486434936523 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 4.468085289001465, 0.0], + [ + 3.1059985160827637, 0.0, 0.0, 0.0, 5.176663875579834, 0.0, + 9.317995071411133 + ], + [ + 1.736733317375183, 0.8683666586875916, 3.473466634750366, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 1.598984718322754, 0.0, 0.0, 1.598984718322754, 0.0, + 7.195431232452393 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 12.375, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.181818962097168], + [0.0, 1.2138729095458984, 0.0, 0.0, 0.0, 0.0, 1.2138729095458984], + [0.0, 1.6237112283706665, 2.4355669021606445, 0.0, 0.0, 0.0, 0.0], + [ + 0.9655172824859619, 0.0, 0.0, 0.9655172824859619, 0.0, 0.0, + 1.9310345649719238 + ], + [ + 0.0, 1.296296238899231, 0.0, 1.296296238899231, 0.0, 0.0, + 9.074073791503906 + ], + [1.0404623746871948, 0.0, 5.202311992645264, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.2936345338821411, 0.0, 0.0, 0.0, 0.0], + [ + 1.081545114517212, 4.326180458068848, 2.163090229034424, 0.0, + 4.326180458068848, 0.0, 11.89699649810791 + ], + [ + 1.2197482585906982, 0.0, 0.0, 0.0, 7.3184895515441895, 0.0, + 2.4394965171813965 + ], + [ + 0.9130434989929199, 0.0, 0.9130434989929199, 0.0, 2.7391304969787598, + 0.0, 0.9130434989929199 + ], + [ + 1.6395576000213623, 0.0, 0.0, 0.0, 0.8197788000106812, 0.0, + 7.37800931930542 + ], + [ + 0.0, 1.52173912525177, 6.08695650100708, 0.0, 0.0, 13.69565200805664, + 0.0 + ], + [ + 2.0289855003356934, 1.0144927501678467, 1.0144927501678467, 0.0, + 5.0724639892578125, 0.0, 1.0144927501678467 + ], + [ + 0.0, 1.192052960395813, 9.536423683166504, 0.0, 0.0, 2.384105920791626, + 0.0 + ], + [ + 1.9718310832977295, 0.0, 0.0, 0.0, 3.943662166595459, 0.0, + 4.929577827453613 + ], + [ + 1.1954458951950073, 0.0, 0.0, 1.1954458951950073, 0.0, 0.0, + 3.5863375663757324 + ], + [ + 1.5969581604003906, 3.9923954010009766, 0.0, 0.0, 1.5969581604003906, + 0.0, 5.589353561401367 + ], + [0.0, 2.2661869525909424, 9.06474781036377, 0.0, 0.0, 0.0, 0.0], + [ + 2.675158977508545, 0.0, 0.8917196989059448, 0.0, 0.0, 0.0, + 6.242037773132324 + ], + [ + 0.0, 0.0, 0.0, 0.9495101571083069, 4.747550964355469, 0.0, + 4.747550964355469 + ], + [0.0, 0.963302731513977, 0.0, 0.0, 0.0, 6.743119239807129, 0.0], + [0.0, 1.730769157409668, 0.0, 0.0, 0.0, 0.0, 3.461538314819336], + [ + 0.7398708462715149, 8.138579368591309, 0.0, 0.0, 1.4797416925430298, + 0.0, 5.918966770172119 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.749999761581421], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.6241612434387207], + [2.763157844543457, 0.0, 0.0, 0.0, 0.0, 0.0, 8.289473533630371] + ], + "velocity": [ + [ + 0.02215896332905709, 0.09061453468820219, 0.04963872396013326, + -0.16230761577222097, 0.015514291171107725, 0.017587299426826387, + 0.023322397873203782 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.07497389928324938, 0.1784627752885084, 0.0351815487393945, + 0.11583920369867151, 0.03890275779343792, 0.011728603586439061, + 0.032799839768185436 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.0250910398570231, 0.11614594709220222, 0.049610776393676864, + 0.0026907493508385727, 0.017883727492135543, 0.017965376173328346, + 0.023749860534795914 + ], + [ + 0.03256275614423937, 0.12978986843607154, 0.04966876826604046, + 0.004204411844616729, 0.021182350431124125, 0.018378484775796896, + 0.024905610396072753 + ], + [ + 0.06104385332519857, 0.16493853873629394, 0.04548543909615266, + 0.02070201100798741, 0.03166419807251335, 0.015804908879196174, + 0.028496399620202784 + ], + [ + 0.03304848078743805, 0.13638142466426662, 0.048676249474305766, + 0.007916070607240755, 0.021521233541050594, 0.018041505662842773, + 0.02610809491262936 + ], + [ + 0.09559645940455713, 0.17859576466679553, 0.03321738119012385, + 0.18157159234226405, 0.041364497186196794, 0.01081201284144586, + 0.03356118087150597 + ], + [ + 0.026971976685454813, 0.11563166378149498, 0.049753550434412874, + 0.0032690746769610257, 0.01824257557359693, 0.0183181955695864, + 0.02442209277467941 + ], + [ + 0.026483410229734328, 0.12002081197778625, 0.049749539715903277, + 0.0032907906468171433, 0.018723887715088622, 0.018230761170506864, + 0.02419326551600215 + ], + [ + 0.10172094763324063, 0.17516378158997103, 0.0333706336163362, + 0.17627375452963712, 0.04252024999151943, 0.010135604970733354, + 0.0338002812919584 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03416302032395524, 0.13932810419400665, 0.048309209636089104, + 0.009121705565929616, 0.02279920621880821, 0.0178666876980665, + 0.02622708661783904 + ], + [ + 0.02262029077539318, 0.10785362922499886, 0.049071531322612494, + -2.247171978738857, 0.01636348571935972, 0.01717054025678485, + 0.022954573551608973 + ], + [ + 0.08736177656183775, 0.17848109745484797, 0.034041122276063485, + 0.1522178696555052, 0.040993958433611075, 0.01098840876498481, + 0.033531513455605524 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10185784835330725, 0.17472341611609524, 0.032806798018477246, + 0.17560278507490246, 0.042592294453127406, 0.010305721066002645, + 0.03386035535498475 + ], + [ + 0.04241751721462533, 0.14924080118715982, 0.0454064541655671, + 0.02146803112099782, 0.025761854088260316, 0.016342993538657574, + 0.02807288740271599 + ], + [ + 0.10240221962597454, 0.17176829036992908, 0.03413079608937271, + 0.17419032415239322, 0.04271625395624436, 0.009877033668051635, + 0.03376915043157764 + ], + [ + 0.03906783860637403, 0.1425167166001441, 0.04672038426914933, + 0.015217129511825078, 0.024321386933784994, 0.016989829312537844, + 0.02733053606616001 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10082366581429836, 0.16909644670912577, 0.03500292774935711, + 0.17516998939114004, 0.042467442269172505, 0.010000760170828564, + 0.033474905173577936 + ], + [ + 0.07822987111210078, 0.17431480881884587, 0.045332839938153874, + 0.021786223559708162, 0.03637901730589714, 0.015437769736541672, + 0.029446083112101867 + ], + [ + 0.09173846641874273, 0.1787366480016163, 0.0390165836929833, + 0.08804062708272475, 0.040284770189640426, 0.012178075157941504, + 0.03199917369463817 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.025341317707082034, 0.11614594709220233, 0.049653274743449105, + 0.0026755100770721185, 0.01798600325926003, 0.018059099044660104, + 0.02382612059547355 + ], + [ + 0.023498130600606015, 0.09947692768677119, 0.04975860918531404, + 0.002887619518844531, 0.01632102940490171, 0.01795543402456658, + 0.02366121701865273 + ], + [ + 0.08055304777678457, 0.17874816744046737, 0.034655201927928925, + 0.1338602617153981, 0.03931265049291485, 0.011625497365965617, + 0.03309520909274354 + ], + [ + 0.08236082599158345, 0.17760830100075453, 0.03641149583598864, + 0.10168238272123453, 0.03788459908786154, 0.012007962666217849, + 0.032745166211360296 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03577696844582795, 0.13174998891351253, 0.046923979234338206, + 0.013458882064519173, 0.021976251953255616, 0.01741619712886457, + 0.02695805246450808 + ], + [ + 0.042215896046127355, 0.15223830517222148, 0.0456090331612965, + 0.021589287675672253, 0.02592462279221902, 0.01641621107059175, + 0.028049875097138674 + ], + [ + 0.10137289346196035, 0.17596311983713286, 0.03414388292402294, + 0.1501174485869221, 0.042409871236855155, 0.010297451458859332, + 0.03364908552992612 + ], + [ + 0.040080550353339905, 0.14495008256216985, 0.04658557152991363, + 0.017094646371091926, 0.02468020781327579, 0.016896160468684335, + 0.027655539343664742 + ], + [ + 0.0985158231735348, 0.17710709641708614, 0.03333384564352089, + 0.15116401191787254, 0.04208211240123952, 0.010658312842985518, + 0.033678775355310595 + ], + [ + 0.027840423546549198, 0.12346532454479198, 0.049716214437967705, + 0.0040228092667824455, 0.01901565170221492, 0.01835837907142884, + 0.024702100729729518 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.09856655921805751, 0.17805162943696584, 0.03277822494291319, + 0.18035373169957758, 0.041932956956847185, 0.010731339597813618, + 0.033593392813204156 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.025347413232940652, 0.10351428511478461, 0.04975904676608599, + 0.0034911434306810207, 0.016944329480680725, 0.018207816420545836, + 0.02398232318159313 + ], + [ + 0.10075413285116952, 0.1757604057272294, 0.033658642802496946, + 0.17690759604880313, 0.04239972640958395, 0.010312561279655123, + 0.033719634195078466 + ], + [ + 0.09726240143640907, 0.1743787275359826, 0.03657474933513562, + 0.1511968342954173, 0.04174755332919647, 0.010889147465128389, + 0.03287749851496467 + ], + [ + 0.03813307593827647, 0.13735359963063326, 0.04603257071911143, + 0.017455592907534623, 0.02318766654612489, 0.016931211775987935, + 0.027426024733850737 + ], + [ + 0.09407250268678785, 0.17789983000070364, 0.03820888090089253, + 0.09886382235602298, 0.040928698214817066, 0.011741910011905374, + 0.03238572407776885 + ], + [ + 0.09090715517670067, 0.17879608873504022, 0.03880757516893518, + 0.08802369778840635, 0.0400989337042324, 0.012089079430872653, + 0.03195739325691363 + ], + [ + 0.03396956884748498, 0.1393281041940067, 0.04846403407687348, + 0.00906175520332475, 0.02266979260065083, 0.017923681949678343, + 0.02612640422576734 + ] + ], + "velocity_u": [ + [ + 0.013871114448370895, 0.12802415679307919, 0.0919197246371718, + -0.13828074641968088, 0.0240098384729021, 0.08332838483720134, + 0.09585120381840136 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.05083603838556144, 0.4413840419072413, 0.04000760090681464, + 0.003175357138188317, 0.07839978468746103, 0.02611840262224845, + 0.1712292458111995 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.015738092178754524, 0.17858360972338783, 0.0923913196395026, + 7.375724325565144e-5, 0.02808066099116272, 0.07914356599332342, + 0.09824182643092866 + ], + [ + 0.02055120985508018, 0.21049997078827282, 0.08373358255983487, + 0.00011524887192710787, 0.03402332246367175, 0.0681339970707457, + 0.10494664386607859 + ], + [ + 0.040085714298987864, 0.32774917866597797, 0.06176826430454228, + 0.0005674714287350591, 0.05623330398713567, 0.04178665495614378, + 0.12881737520815492 + ], + [ + 0.020867271744994847, 0.22767827689822484, 0.07454740982195827, + 0.00021699068613850498, 0.03465469607070802, 0.05862140214740036, + 0.11235486518910566 + ], + [ + 0.06999405274503946, 0.4875924728069112, 0.03691628686077369, + 0.004977377686010334, 0.09044991634311403, 0.023397148332930898, + 0.18399794467643993 + ], + [ + 0.01694175907566667, 0.17745992801696556, 0.08640125814660347, + 8.960995795748715e-5, 0.028710640115182325, 0.07244008432704752, + 0.10209641912173448 + ], + [ + 0.016628633565619787, 0.1872202683640343, 0.08892668971981721, + 9.020522338896158e-5, 0.029561580570890655, 0.07477774606306789, + 0.10077071081574364 + ], + [ + 0.07724049748270638, 0.5399655395275437, 0.037150593700428405, + 0.004832129400396117, 0.09979236600494484, 0.021502422452872507, + 0.18922537545489054 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.021594131536364112, 0.23582475583707915, 0.07251204287041335, + 0.0002500388453142937, 0.03707509651602201, 0.05638417435778535, + 0.11311540790023673 + ], + [ + 0.014164151407556844, 0.16105462543577675, 0.0979112344889769, + -0.10283404183335122, 0.025451781246183396, 0.08689412296569128, + 0.09382920751752406 + ], + [ + 0.06165957864579997, 0.491175317818186, 0.0381889172898143, + 0.004172627859732737, 0.08824031697725897, 0.023906332766820592, + 0.18340746976161235 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.07741765944007131, 0.5441981273396671, 0.03629388370068171, + 0.004813733919780079, 0.10064612203830157, 0.021970674742170376, + 0.19070737489092673 + ], + [ + 0.02705645769847576, 0.2659342067104673, 0.06153164906293237, + 0.000588469129602192, 0.04295738868753449, 0.04468109007665975, + 0.12568862925072827 + ], + [ + 0.07813038005929707, 0.5682253043271562, 0.03832946496612539, + 0.004775009628013637, 0.10230854403952883, 0.020800757114951336, + 0.1884887001146246 + ], + [ + 0.02482189940603976, 0.24501742887695963, 0.06580154916496801, + 0.0004171230430351819, 0.040046315837371, 0.04874759645714724, + 0.12044170050957362 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.0760987854229484, 0.5859472207862702, 0.03971813350591733, + 0.00480186829545868, 0.09920555030933721, 0.02113501626301226, + 0.18230930645168994 + ], + [ + 0.053536388896318544, 0.3863716273129177, 0.06131305230232214, + 0.0005971912371561756, 0.06941160053556877, 0.03998897981197061, + 0.1362607083615368 + ], + [ + 0.06593571872497679, 0.48211221232719653, 0.046719479609741384, + 0.0024133317523273167, 0.0845068064750924, 0.027527115159608533, + 0.16087518354604943 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.01589797024141697, 0.17858360972338783, 0.09165285064494469, + 7.333951321969978e-5, 0.028259831330941187, 0.07783070285611084, + 0.0986731162037428 + ], + [ + 0.014722473960559992, 0.1444888197605931, 0.08825447592622843, + 7.915373285280896e-5, 0.02537925368848026, 0.07927373249255265, + 0.0977423571909879 + ], + [ + 0.055519344429352496, 0.45142439641074017, 0.039159635053877845, + 0.0036693715185487827, 0.08009038258352463, 0.025802549405832483, + 0.17570442608694053 + ], + [ + 0.05709859916772148, 0.423687476729222, 0.04205127732294291, + 0.0027872821572113757, 0.0745221634737063, 0.026987692721217992, + 0.17044849947387486 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.02265085541911061, 0.21546966778245577, 0.06654100858831724, + 0.00036892699017749945, 0.03550918576201963, 0.05199595068020072, + 0.11791026923812897 + ], + [ + 0.026921200927584706, 0.2760722401695563, 0.06214295606839292, + 0.0005917929443063728, 0.04329297504260784, 0.04510420287279119, + 0.1255216012261891 + ], + [ + 0.07679369453445864, 0.5315988939623454, 0.03835001016005992, + 0.004115045853030041, 0.09859717756099688, 0.02194778773737997, + 0.1858148558673946 + ], + [ + 0.025494721173909392, 0.25232764186877177, 0.06532549111863227, + 0.0004685884416497021, 0.040761942134080915, 0.04810592714745889, + 0.12270402300381607 + ], + [ + 0.07330019085249163, 0.5173331010842822, 0.037094248443364716, + 0.0041437368365318155, 0.09558047939365046, 0.022958727722982488, + 0.1864536136160833 + ], + [ + 0.017499209968328946, 0.19516677834853338, 0.0848741960583676, + 0.00011027088854998786, 0.030080823876772352, 0.07069792410543695, + 0.10373868503677859 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.07335979793643391, 0.5014926686477557, 0.03625085388397348, + 0.004943987971051908, 0.09438583042916097, 0.023166432831647824, + 0.18465157779527877 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.01590186513402436, 0.15234167793224782, 0.08687555128462451, + 9.569717641311334e-5, 0.02644878528737592, 0.07526301211304277, + 0.0995612024223981 + ], + [ + 0.07601166362392643, 0.5338172198985423, 0.03759393475113235, + 0.004849507005558436, 0.09849301520642646, 0.021989615468904624, + 0.18735583897552258 + ], + [ + 0.07185205530162624, 0.5473598861896593, 0.042329547042457796, + 0.004144636645829921, 0.09300930709220222, 0.023619001077238234, + 0.17236190589301986 + ], + [ + 0.024202887028482393, 0.2303312707028526, 0.06347134530281186, + 0.0004784824981918657, 0.037823819125339685, 0.048343541957815, + 0.12110103533924539 + ], + [ + 0.06835341945085548, 0.5044805436185636, 0.04521655383620121, + 0.0027100188629230427, 0.08787241363405843, 0.026159357207770056, + 0.1656119197622568 + ], + [ + 0.06509944904915742, 0.4791101083054455, 0.04632527213035154, + 0.0024128676859606017, 0.08360973908702192, 0.027243933886715043, + 0.1603869437053772 + ], + [ + 0.021467804723024602, 0.23582475583707915, 0.0733349240659943, + 0.00024839552108854823, 0.03682705021220493, 0.057063719509232204, + 0.11247154460680701 + ] + ] + }, + "obsm": { + "X_pca": [ + [ + -9.712663650512695, 14.83215618133545, -6.309364318847656, + -5.218857288360596, -2.828989028930664, -0.5048965811729431, + 0.8552966117858887, -7.353064060211182, -3.6002695560455322, + -0.493243932723999, -1.531982421875, 9.500922203063965, + -0.6443871259689331, 0.6413280367851257, 0.7234936952590942, + -0.6905364394187927, 1.7941007614135742, 2.180302858352661, + -0.7080339789390564, 0.2161874920129776, -1.3841232061386108, + 0.5915647149085999, -0.053624577820301056, 0.006490650121122599, + -0.20996397733688354, -1.3117390871047974, 0.6487839818000793, + 0.7474368810653687, -0.5431819558143616, 0.0899929329752922, + 0.4795878827571869, 0.22522015869617462, 0.4321363866329193, + 0.5209363102912903, 0.6433092951774597, -1.159608244895935, + -1.044852375984192, -0.45358842611312866, 1.5312350988388062, + 0.18233317136764526, -0.4489714801311493, -0.0505928210914135, + 0.20223473012447357, 0.09833534061908722, -0.934148907661438, + -0.8481180667877197, 1.6999300718307495, -0.7051972150802612, + -0.8624274134635925, -0.029721977189183235 + ], + [ + -14.373440742492676, 16.227378845214844, -5.005990028381348, + -8.854636192321777, -0.4386776387691498, -0.8037692904472351, + 1.6708528995513916, -3.601142644882202, 1.4449412822723389, + 0.2241569459438324, -1.8798255920410156, 6.181868076324463, + -0.2255554497241974, -1.2310168743133545, 2.3964078426361084, + -0.37832632660865784, 2.7902379035949707, -0.9484937787055969, + -0.2560673952102661, 0.8317413926124573, 1.5266791582107544, + 0.5362411737442017, -0.5971279740333557, 0.5426415801048279, + -0.7849889993667603, 0.814633846282959, -1.5268479585647583, + 1.2290681600570679, -2.534935712814331, 1.879836916923523, + 1.595924735069275, 0.125294029712677, -0.17474597692489624, + -0.07734226435422897, -1.4348098039627075, -1.4838050603866577, + 0.5758832693099976, 0.6744162440299988, 1.0054643154144287, + -0.1252695471048355, -0.6858702301979065, 1.0120424032211304, + -0.9421538710594177, 0.8420795202255249, 1.989140510559082, + -0.345791757106781, 1.259369134902954, 0.21944807469844818, + 0.2796093821525574, -0.16542039811611176 + ], + [ + -1.4087616205215454, -3.7008655071258545, 7.683778762817383, + -3.8231327533721924, -4.4474101066589355, -0.047456976026296616, + 2.48618221282959, -0.969689130783081, 2.6126821041107178, + -2.25659441947937, -1.0207782983779907, -0.0045670210383832455, + 0.8120247721672058, -2.394183874130249, -0.9944871068000793, + 0.8507892489433289, -1.3082518577575684, 0.9549160599708557, + -1.4469906091690063, 0.2592727839946747, 2.521045446395874, + 1.4384949207305908, 1.4160312414169312, 0.11652693897485733, + 0.8351993560791016, -1.0746811628341675, 0.31075242161750793, + -0.5362069010734558, 0.6788467168807983, -1.4908339977264404, + 0.9924854040145874, -0.5734403729438782, 0.24867302179336548, + -0.4066714644432068, 1.403648018836975, -1.0743381977081299, + 0.37870293855667114, -1.805496335029602, -1.0642967224121094, + -0.8697293996810913, -0.2973197102546692, -0.6440801620483398, + -0.3324434459209442, 0.35836663842201233, 0.7410829067230225, + 1.2778054475784302, 0.8500267863273621, -0.14972825348377228, + -0.6002275943756104, 0.5281383395195007 + ], + [ + -17.55548095703125, 19.00493049621582, -5.360179424285889, + -9.017661094665527, -0.4387492537498474, -3.618403673171997, + 0.11407836526632309, 1.1133657693862915, 5.38546085357666, + 0.7738739252090454, 0.05771083012223244, -7.515570640563965, + 4.9393310546875, -1.4821081161499023, 2.0496280193328857, + -1.2080446481704712, 7.6977972984313965, 0.2933456003665924, + -0.42759209871292114, -0.3702717423439026, 1.2908992767333984, + 2.6196563243865967, -1.2016819715499878, -0.5312042832374573, + 0.2400427907705307, -0.1097734197974205, 0.5662421584129333, + 3.309272527694702, -0.2595560550689697, -0.170167937874794, + 1.3123910427093506, -2.4274685382843018, -1.2788257598876953, + 3.5746636390686035, 0.676084578037262, -1.7163082361221313, + -0.9298005104064941, 1.070678472518921, 1.1104167699813843, + 0.3685353100299835, -1.3932421207427979, -3.2172892093658447, + 1.6757586002349854, 0.8071465492248535, -2.1762373447418213, + -1.5672687292099, -0.025657907128334045, -1.5181405544281006, + -3.1264798641204834, 0.13095493614673615 + ], + [ + -16.056766510009766, 13.823222160339355, 0.16011865437030792, + 0.5070090889930725, 2.679965019226074, -0.20821043848991394, + 3.1549861431121826, 12.735003471374512, 0.572158694267273, + -0.06599999964237213, -0.6308320164680481, 1.5841710567474365, + 0.613731324672699, -1.904114007949829, -0.8944978713989258, + 1.3363397121429443, -0.6771792769432068, -0.22442729771137238, + -0.6764612197875977, 0.5151592493057251, 3.077296257019043, + -0.9515078663825989, -2.0526578426361084, 0.6089927554130554, + 1.5181804895401, 1.1592588424682617, 2.3231775760650635, + -0.9922633171081543, 1.0255650281906128, -0.24631096422672272, + -0.7388070225715637, 0.5366421341896057, 0.8679639101028442, + -0.5781234502792358, -0.7636955976486206, -2.1018693447113037, + 0.20589198172092438, 1.8221700191497803, 0.2530665099620819, + 1.3129472732543945, -1.173888921737671, -0.20682011544704437, + -0.26682090759277344, 0.8077314496040344, -0.05477994307875633, + 0.37415048480033875, 1.0653833150863647, 1.3335235118865967, + 0.5396789908409119, 0.27319076657295227 + ], + [ + -16.68307876586914, 12.383529663085938, 9.065956115722656, + 9.09403133392334, 5.32847261428833, -0.9896590709686279, + 3.28472900390625, 5.224730014801025, -1.1945490837097168, + -1.4377398490905762, -1.1837388277053833, 2.3484954833984375, + 3.9329843521118164, 0.5562511682510376, -2.0283994674682617, + -0.1338239312171936, -0.03280830383300781, -1.617619276046753, + -3.1855785846710205, -1.1657447814941406, 0.07195568829774857, + 0.6877831220626831, 1.7657626867294312, 0.15118058025836945, + -0.6230621337890625, 1.1203356981277466, 0.19578951597213745, + -0.648255467414856, 1.3679240942001343, -1.1053065061569214, + -0.08629076182842255, 0.06608359515666962, 0.27726832032203674, + 1.1660441160202026, -2.036987781524658, 0.22033964097499847, + 0.5823889970779419, 1.942690372467041, 0.6604306697845459, + -0.9418746829032898, -1.5600053071975708, 0.8596242666244507, + 1.137995719909668, 0.40049469470977783, 0.13289058208465576, + -0.4794503450393677, 0.7187958359718323, -2.3744962215423584, + 0.7919456362724304, -0.6550710797309875 + ], + [ + -10.98949146270752, 6.476835250854492, -0.8771857619285583, + 11.388152122497559, 7.050894260406494, 3.0224483013153076, + 12.955419540405273, 0.8812816739082336, 3.6417009830474854, + 4.343071937561035, 1.465012550354004, 1.1322156190872192, + 1.6358650922775269, 2.0937068462371826, 0.8932221531867981, + -1.3394956588745117, -1.102083683013916, 1.3908861875534058, + -1.4141836166381836, 1.151664137840271, 0.3608248829841614, + -2.432990074157715, -0.9459997415542603, 0.8385114073753357, + 0.24618946015834808, 1.5407228469848633, 1.573378562927246, + 0.2974059283733368, 0.7034424543380737, -0.29626891016960144, + -0.8125763535499573, -0.6269693374633789, 1.8483930826187134, + -1.1951465606689453, -0.4451550543308258, -1.8594517707824707, + -1.262418270111084, -0.19779783487319946, -1.6413698196411133, + -1.52394437789917, -0.5651074647903442, 0.8123306632041931, + -0.39622604846954346, 1.6296509504318237, -1.3681634664535522, + -1.0364938974380493, 2.7172937393188477, -0.07562308013439178, + -1.0213048458099365, -0.048950161784887314 + ], + [ + -13.631199836730957, 15.212565422058105, -1.3544607162475586, + -3.9565234184265137, 1.183383822441101, -0.021055441349744797, + 2.986438512802124, 7.307125091552734, 1.432456612586975, + -0.5963396430015564, -2.167868137359619, 0.06961584091186523, + -0.9724959135055542, -3.645197629928589, 2.3724193572998047, + 0.7369322776794434, -1.919245719909668, 0.1398773491382599, + -1.0915522575378418, 2.4313154220581055, 1.7198188304901123, + 2.209094762802124, -0.9490754008293152, 0.06806765496730804, + 0.30705058574676514, -0.5418059229850769, -1.4550068378448486, + -1.3861780166625977, -0.7080084681510925, 2.2348759174346924, + -0.2432488650083542, 1.516143798828125, -0.6723447442054749, + -1.3005117177963257, 1.19094717502594, 1.5725765228271484, + -1.2581534385681152, -0.9183128476142883, -1.5457870960235596, + 0.7210924625396729, -1.1496139764785767, 0.8457927703857422, + -0.8337115049362183, -0.5007527470588684, -0.014222286641597748, + -0.39170655608177185, 1.2201108932495117, 0.2804519832134247, + -1.1532775163650513, 0.6112496852874756 + ], + [ + -2.322115659713745, -5.199655055999756, 7.5880889892578125, + -4.718267917633057, -8.26681900024414, -1.34620201587677, + 2.5510995388031006, 0.25076591968536377, 1.0638067722320557, + -1.5361109972000122, -1.1270112991333008, 0.2573862671852112, + 0.6532297730445862, 2.241795063018799, 1.3307417631149292, + -0.551270067691803, -0.12379209697246552, 2.2131762504577637, + -2.884007692337036, 0.469123899936676, 1.5391159057617188, + -0.3274090886116028, 0.11257763206958771, -0.8700419664382935, + -2.690112352371216, -0.39999908208847046, -0.9252067804336548, + -0.4859139323234558, 1.3126006126403809, -1.259131669998169, + 0.17964118719100952, -0.5161640048027039, -1.1195094585418701, + 0.19704057276248932, 0.24633494019508362, 0.705814003944397, + 0.5045369267463684, -0.06565672159194946, -2.6939148902893066, + -0.0308995321393013, 0.04964664950966835, -1.4887696504592896, + -0.5444564819335938, -0.12952770292758942, -0.8741168975830078, + 1.4321900606155396, 0.9037054181098938, 0.11882881820201874, + -2.004403591156006, 0.7809668779373169 + ], + [ + -11.041910171508789, 16.63595199584961, -1.5456691980361938, + -6.450481414794922, 0.6203211545944214, -0.5390794277191162, + 0.669929563999176, 4.579651832580566, 4.281295299530029, + -1.124232530593872, 1.0794427394866943, -3.070417642593384, + -1.3405570983886719, -1.4836828708648682, 3.1231048107147217, + 0.6878055930137634, -1.2993379831314087, 0.6911919713020325, + 1.3788076639175415, 0.14889520406723022, 1.2009632587432861, + 0.5682793259620667, 1.1144386529922485, 1.080188274383545, + -1.170728087425232, -1.2139050960540771, 3.488442897796631, + 0.005592299625277519, 0.37032970786094666, -1.8819745779037476, + -2.939331531524658, -3.7491517066955566, 1.5146212577819824, + 0.2923241853713989, 1.2975234985351562, 1.9473062753677368, + -0.34899038076400757, 0.3883277177810669, -2.416714668273926, + -0.33170241117477417, -1.722529649734497, 0.008951617404818535, + -1.3686336278915405, -2.545624017715454, -0.22531524300575256, + 0.5257329940795898, -2.464887857437134, -1.1103993654251099, + -0.0874643623828888, 0.5397534966468811 + ], + [ + -16.21630096435547, 14.426246643066406, 0.08544297516345978, + 0.4550156891345978, 2.4962339401245117, -1.5137393474578857, + 1.0668511390686035, 9.913713455200195, 2.276487350463867, + 0.5653769969940186, -1.163384199142456, 1.059139370918274, + 0.05267100781202316, -2.5066654682159424, -0.6266006231307983, + 0.8446632623672485, -0.025345321744680405, -0.3387996554374695, + -0.8882775902748108, 1.4029717445373535, 1.1654384136199951, + -1.1256937980651855, -0.32650670409202576, -2.411252737045288, + 1.296842098236084, -0.622441828250885, 2.3049404621124268, + -0.525879979133606, 0.8614969849586487, -0.4120807349681854, + 0.9189364314079285, 1.770395278930664, -1.118133544921875, + -0.1413206309080124, -1.3925107717514038, 3.2589690685272217, + -1.4718562364578247, 0.2697654366493225, -1.1422550678253174, + 0.09467441588640213, 0.6397545337677002, -0.14346612989902496, + 1.416963815689087, -2.781365156173706, -1.4145907163619995, + -0.6280791163444519, -0.09869090467691422, -0.28519609570503235, + -0.7490826845169067, 0.7223635315895081 + ], + [ + 0.5844354629516602, -6.390398979187012, 2.9215924739837646, + -1.259409785270691, -4.381921291351318, 2.0100064277648926, + 9.030052185058594, 0.31052690744400024, -0.9725380539894104, + 5.355310440063477, -5.4327239990234375, -1.160143256187439, + 3.418447971343994, -0.010658981278538704, 1.496368646621704, + -1.6395080089569092, -1.9655088186264038, 4.550971031188965, + -1.4046071767807007, 0.7873572707176208, 2.576869249343872, + 0.40996167063713074, -0.04702984169125557, 1.9144549369812012, + 0.05436450615525246, 0.8736855387687683, -1.5762830972671509, + 0.5111488699913025, 0.7573112845420837, 0.977939784526825, + -0.13183140754699707, -0.3861549496650696, 0.317145437002182, + -1.0951069593429565, 2.0916495323181152, -0.2870123088359833, + -0.9866220355033875, -0.15937680006027222, 0.23914703726768494, + 0.8337608575820923, 0.4469314217567444, -0.3957616984844208, + 0.13946740329265594, -1.8516356945037842, -0.8862810134887695, + -1.1915582418441772, 0.6024641990661621, -1.097246527671814, + 0.2177310734987259, -1.2429224252700806 + ], + [ + -13.788896560668945, 19.10152244567871, -1.2580151557922363, + -10.777189254760742, -0.16390761733055115, 2.2167179584503174, + 1.8550961017608643, -7.236468315124512, 1.3830554485321045, + -0.5371893644332886, 0.5555384159088135, -0.49442848563194275, + 1.2157378196716309, 0.9945041537284851, -3.069021463394165, + 1.1903611421585083, -7.287869453430176, -2.0751328468322754, + -3.3451526165008545, 0.14431951940059662, 0.5886172652244568, + -1.6220414638519287, 0.7217324376106262, 2.651357889175415, + 0.7501099705696106, 1.2048743963241577, 2.310302972793579, + -1.3118565082550049, 0.7178730368614197, -0.9082520604133606, + 1.626055121421814, 1.882423758506775, 0.0706220269203186, + -0.7252733111381531, -0.07073640823364258, -0.5509708523750305, + 3.13181471824646, 0.3030160069465637, -2.7290103435516357, + 0.18745644390583038, 1.4256421327590942, 1.788068413734436, + -0.5226539969444275, -0.8920641541481018, 0.9041038751602173, + 1.4225142002105713, -2.2410411834716797, -1.8509458303451538, + -0.681007981300354, -2.453913450241089 + ], + [ + -14.439393043518066, 12.734779357910156, 6.049779891967773, + 7.494495391845703, 3.472851037979126, -0.17139454185962677, + 3.5698158740997314, 7.569365978240967, 0.5669819712638855, + -0.9921190738677979, 0.35412219166755676, 0.4223526120185852, + 1.3656078577041626, 3.2259905338287354, -0.8875239491462708, + -1.2626137733459473, -0.8012110590934753, 1.0123754739761353, + -1.5927467346191406, -0.2718570828437805, 1.5703365802764893, + -1.046805739402771, -0.8104961514472961, 0.9096125364303589, + 0.5193018317222595, -0.6690047979354858, 2.3583807945251465, + 0.6979328989982605, 2.645040512084961, -1.0804588794708252, + 0.9101419448852539, -0.31498804688453674, 0.4716048836708069, + -0.6156403422355652, -0.613185465335846, 2.3221287727355957, + -1.0124144554138184, -0.7416380643844604, 1.4773287773132324, + -0.8267837166786194, -0.8117368817329407, -0.4472266733646393, + 1.1569103002548218, -1.3161927461624146, -1.9928256273269653, + -1.3798683881759644, -0.12124966084957123, -2.149260997772217, + -0.7204518914222717, -1.0778484344482422 + ], + [ + -15.306190490722656, 13.9300537109375, 0.1775578409433365, + -3.51070237159729, 0.550046980381012, -0.47353503108024597, + 3.3286566734313965, 9.903715133666992, 0.19678105413913727, + 0.46504518389701843, -0.8236774802207947, 1.94571852684021, + 0.4041864573955536, -0.7720268964767456, 3.679306745529175, + 1.5656183958053589, -1.393970012664795, -1.5972669124603271, + -0.823223352432251, 1.9231361150741577, 1.8348228931427002, + -1.1695131063461304, -2.7804200649261475, 4.121042728424072, + 1.5226002931594849, 0.29097163677215576, 2.2659151554107666, + -1.9250060319900513, -0.24646949768066406, -2.2245371341705322, + -1.4394946098327637, -0.7830374240875244, 0.8907901644706726, + -1.6846303939819336, 1.319510817527771, -1.9749780893325806, + 0.5577366948127747, 1.9140764474868774, -2.1486291885375977, + 0.41392818093299866, 0.21361511945724487, -0.7822038531303406, + 0.0739065557718277, -0.4560714364051819, -1.8291707038879395, + 0.3196067810058594, -0.8170634508132935, 0.9953380227088928, + 0.8931571841239929, 0.10993741452693939 + ], + [ + 0.6642467379570007, -5.58659553527832, -3.035231113433838, + 0.8595842123031616, -3.4518513679504395, 1.2440767288208008, + 6.681910037994385, 0.6471912264823914, 0.008418978191912174, + -1.226625680923462, -1.5720481872558594, 0.3276410698890686, + 3.0636987686157227, 0.21153250336647034, 0.725053071975708, + -1.3220785856246948, -0.3281341791152954, 0.1499069631099701, + 0.7902844548225403, -0.43256962299346924, 2.190225839614868, + -0.34521499276161194, -0.6079567670822144, -1.9682058095932007, + -0.5041341781616211, -0.1991955041885376, 0.2692353427410126, + -1.5463414192199707, -1.3969950675964355, -1.204674482345581, + -0.9293743968009949, 0.987109899520874, 0.47452041506767273, + -1.021498680114746, 0.7761169672012329, -1.3269330263137817, + 0.5279843211174011, 0.6229174137115479, 1.1570069789886475, + -0.2469727247953415, -0.4505695700645447, -0.5578155517578125, + 1.164854645729065, -0.681613028049469, 0.15354084968566895, + 0.7191940546035767, -0.21794337034225464, -1.7467231750488281, + -0.7224372625350952, -0.19408728182315826 + ], + [ + -10.199408531188965, 14.00513744354248, -1.6940674781799316, + -6.325026035308838, -0.32369109988212585, 0.9323979020118713, + 1.4588407278060913, -2.787533760070801, 0.7585919499397278, + -1.7310324907302856, 0.5857417583465576, -4.536046028137207, + 0.10184135288000107, 1.7490742206573486, -2.8093831539154053, + 0.5168297290802002, 5.098242282867432, 1.3896396160125732, + -1.6903581619262695, 3.968141555786133, -1.4164751768112183, + 1.6163841485977173, -1.1597408056259155, 0.05703653022646904, + -0.7425927519798279, 0.15201078355312347, 3.15157413482666, + 1.2703263759613037, 0.19802725315093994, -1.2596231698989868, + -1.24136221408844, -0.6988134384155273, 1.532922387123108, + 0.8967003226280212, 0.9813938736915588, -0.22975026071071625, + 0.502781867980957, 3.7119197845458984, -0.8261895179748535, + -1.7870408296585083, -0.7737333178520203, 2.69152569770813, + -0.008944868110120296, 0.7299308180809021, -0.5631193518638611, + -2.0944225788116455, 0.09501173347234726, 0.2956258952617645, + -0.20584653317928314, -1.3464653491973877 + ], + [ + -0.6705381870269775, -6.507566452026367, -0.7193425893783569, + 2.317054033279419, -4.229636192321777, 0.7580037117004395, + 6.963678359985352, -1.5209181308746338, 2.812999725341797, + -2.92977237701416, -1.4353059530258179, -0.7194328904151917, + 1.0950976610183716, -2.7681572437286377, 3.5179877281188965, + 0.8003436923027039, -0.319877028465271, 2.1965789794921875, + -2.221325397491455, 3.4105958938598633, -0.8047360181808472, + -1.2648780345916748, -0.21751989424228668, 0.7210075855255127, + -0.8301287889480591, 0.957122802734375, 0.7770159840583801, + -1.8208078145980835, 1.8569387197494507, -0.3677874505519867, + -1.1084802150726318, 0.6201378703117371, -0.697918176651001, + 1.9544849395751953, -0.11911550164222717, 0.26645565032958984, + 0.8795316815376282, 0.41718727350234985, 0.5029457211494446, + -0.8551230430603027, 1.5599356889724731, 0.35112226009368896, + 0.11190114915370941, -0.6299057006835938, 1.7500016689300537, + -0.9892385005950928, -0.6754885911941528, -0.8790456652641296, + -0.2600025236606598, 0.0007109720027074218 + ], + [ + -12.623971939086914, 12.851459503173828, -6.247973918914795, + -4.697495937347412, -2.4688355922698975, -0.028670843690633774, + -0.061456065624952316, -2.173354387283325, 0.7629720568656921, + -0.17855948209762573, 1.1863707304000854, -4.557535648345947, + -0.7423198819160461, 1.9440292119979858, -0.13558126986026764, + -0.5202297568321228, -2.5499236583709717, -2.713188648223877, + 0.27271586656570435, 2.50040340423584, 1.9111289978027344, + -0.5566655993461609, -0.9210659265518188, 0.2507402300834656, + 0.30529531836509705, 0.2712589502334595, -0.30241596698760986, + 0.004430591128766537, -0.7672228217124939, 0.6308733224868774, + 0.3954380452632904, 0.9715395569801331, 0.57889324426651, + 0.42096397280693054, -0.2101360261440277, -0.5290985703468323, + -0.08783517777919769, 0.8330278992652893, 0.7508731484413147, + 0.3736583888530731, -0.17335613071918488, -2.047177314758301, + 0.24472492933273315, -0.33179643750190735, 1.0191596746444702, + -1.0442005395889282, 0.7826996445655823, -0.8777053356170654, + 0.8120757341384888, -0.4679188132286072 + ], + [ + -2.22839617729187, -3.4450571537017822, 1.4229902029037476, + 8.836338996887207, -3.59157657623291, 0.34840670228004456, + 7.045941352844238, -5.181589603424072, 3.046644687652588, + 5.85390567779541, -2.146027088165283, -0.5597478151321411, + -0.23095405101776123, -1.758082389831543, 3.5093321800231934, + 1.6107367277145386, -0.2987205684185028, 0.6032689809799194, + 1.2937664985656738, 2.312486410140991, 2.684123992919922, + -1.489660620689392, -0.590319037437439, -0.14228442311286926, + 0.07483133673667908, 0.36312201619148254, 1.160668134689331, + -0.5471833944320679, 1.178759217262268, -1.1855862140655518, + -0.859933078289032, -0.6491420269012451, -0.46907487511634827, + 1.8537384271621704, -1.8870036602020264, -0.8737653493881226, + -0.3694930076599121, 1.7813283205032349, -1.375948429107666, + 0.010752460919320583, 0.8767951130867004, -0.19359217584133148, + -0.5098423957824707, 0.7769495248794556, -1.0967650413513184, + -0.7623481750488281, 0.5406968593597412, -0.325823038816452, + -0.4435502290725708, -0.3575243055820465 + ], + [ + -13.293915748596191, 13.775888442993164, -5.223093509674072, + -3.1233632564544678, -1.6877861022949219, 0.09534063935279846, + 1.459506630897522, 5.722379207611084, -0.5895194411277771, + 0.36182624101638794, -1.3954355716705322, 2.3915767669677734, + 1.5288199186325073, -2.826749801635742, -0.949592113494873, + 0.5000790953636169, 2.592940330505371, -2.260653495788574, + 3.7826428413391113, -0.27320075035095215, 3.1173999309539795, + 0.9332804679870605, 1.377693772315979, -0.2607591152191162, + -1.4597952365875244, 0.6504913568496704, -1.5642828941345215, + 0.9561797380447388, 2.017754316329956, -1.343706727027893, + -2.7886571884155273, -1.0696022510528564, 0.913489043712616, + 1.0926494598388672, -2.898453950881958, -1.140357255935669, + 0.7018343806266785, 0.6093617677688599, -0.06421363353729248, + -2.318922519683838, -0.8491148948669434, 0.8504114747047424, + 1.5464189052581787, -1.3131996393203735, -0.2157410979270935, + 0.3558744490146637, 1.6403660774230957, -1.4917560815811157, + 0.15851932764053345, 0.1247684508562088 + ], + [ + 1.5069620609283447, -6.689950466156006, -1.9211235046386719, + 0.447763592004776, -4.667847633361816, 0.9506580829620361, + 9.307430267333984, 0.44994550943374634, 2.7419803142547607, + -0.1310659945011139, -1.1292338371276855, 0.5236801505088806, + 2.3789987564086914, 1.054946780204773, 0.48560255765914917, + -0.9179754853248596, -1.0915842056274414, -0.20525899529457092, + -1.296431303024292, 0.05151984095573425, -0.9956871271133423, + 0.12676995992660522, 0.38678082823753357, -2.1627562046051025, + -0.6728779673576355, 1.002447485923767, -0.6033901572227478, + -0.7110890746116638, -1.0248206853866577, 0.6962718367576599, + -1.808013916015625, 0.22848446667194366, 0.11966109275817871, + -1.034157156944275, 0.36816301941871643, -1.293257713317871, + -0.2013441026210785, 0.8132126331329346, 0.04497101902961731, + 0.14228306710720062, -1.1483708620071411, -0.6146260499954224, + -0.3591708540916443, 0.788209855556488, 1.2932183742523193, + -0.7574642896652222, -0.8768401741981506, -0.24808654189109802, + 0.5809819102287292, 0.7107017040252686 + ], + [ + -13.229766845703125, 12.466279029846191, -3.9930827617645264, + -6.251300811767578, 0.6003563404083252, -0.6159064769744873, + 1.1793248653411865, 0.22720444202423096, -0.7483006119728088, + 0.07886611670255661, -1.7663379907608032, 5.400152206420898, + -0.515192985534668, -1.035778522491455, 2.240428924560547, + -0.5893198251724243, 0.08377908170223236, 0.026990359649062157, + -0.2226758748292923, 0.6702339053153992, 0.43548980355262756, + -0.13094696402549744, -1.865452527999878, -0.1480889767408371, + -0.9070636034011841, -0.7950115203857422, -2.4078421592712402, + -1.0739474296569824, -0.7009981870651245, 0.9079669117927551, + 0.06285738945007324, 3.8608386516571045, -1.9464529752731323, + -1.7457188367843628, 0.7862696647644043, -0.4471914768218994, + -1.4859439134597778, -2.576969861984253, -1.5278552770614624, + 1.2621541023254395, 2.574108123779297, 0.6375341415405273, + 0.22670325636863708, 0.07592407613992691, 0.03468896448612213, + 1.0612759590148926, 0.15333180129528046, -1.574903964996338, + -0.7589799761772156, -0.5400646328926086 + ], + [ + -5.650701522827148, 0.9453807473182678, 9.794389724731445, + 5.807339668273926, -4.2536139488220215, -1.9011213779449463, + 0.3689839243888855, -5.974447250366211, 3.692394733428955, + -0.06052391976118088, -2.5452260971069336, -0.5801882743835449, + -1.4653573036193848, -3.3561816215515137, 3.613415002822876, + 1.7462592124938965, 0.769719123840332, 1.2742481231689453, + 2.1241118907928467, 2.146001100540161, 4.224967956542969, + 1.5635563135147095, -0.7454234957695007, -1.5727012157440186, + -0.072048619389534, 1.8564122915267944, 1.05059814453125, + -2.1337223052978516, 0.8571258187294006, -0.11512188613414764, + -0.5651291608810425, -1.6751554012298584, -0.04550144076347351, + -1.4132535457611084, -2.3328702449798584, -0.07152260839939117, + -0.05986672639846802, -0.3987670838832855, -0.015121368691325188, + 0.28838780522346497, -0.5892482995986938, -0.6459822654724121, + 0.2033229023218155, -0.49144819378852844, -0.4558042287826538, + 0.18344607949256897, 2.5747087001800537, -2.0250329971313477, + 0.5060385465621948, -0.36262983083724976 + ], + [ + -12.563739776611328, 9.710807800292969, 13.008691787719727, + 15.083892822265625, 5.41100549697876, -0.07559223473072052, + 2.1141488552093506, -2.7512712478637695, 0.23706252872943878, + -0.962476909160614, -0.4306114614009857, 1.104781150817871, + 0.8701750040054321, 5.210101127624512, -0.6001133322715759, + -3.0803887844085693, 0.7435469031333923, -2.51875901222229, + -1.3633726835250854, -1.3913322687149048, 3.53137469291687, + -3.891472578048706, -1.1380335092544556, 1.665974497795105, + -1.0288013219833374, 0.290647029876709, 1.8493695259094238, + 2.1921560764312744, -0.37842682003974915, -1.7732856273651123, + -0.24536600708961487, -0.7616605162620544, 0.4821000397205353, + 0.9020861387252808, 1.6596124172210693, 1.6997641324996948, + -0.9355267286300659, 0.06008415296673775, 1.8406615257263184, + 0.37862735986709595, 0.49112048745155334, 0.5557791590690613, + -0.36005306243896484, 0.17453771829605103, -0.5831856727600098, + -1.9266846179962158, 0.7319061756134033, -0.2939126491546631, + -1.0262593030929565, -0.5580651760101318 + ], + [ + -11.291966438293457, 6.799325466156006, 9.991964340209961, + 14.439772605895996, 2.3406543731689453, -0.9573399424552917, + 0.8958920836448669, -2.0391273498535156, -1.0295614004135132, + -2.0332982540130615, 0.7914915084838867, 0.8912394046783447, + 2.6587586402893066, 0.1635051816701889, -2.975076675415039, + -0.38187044858932495, 0.6956344842910767, 1.2982163429260254, + -1.5331815481185913, -2.1694297790527344, 0.2641684412956238, + 1.066070318222046, 0.34927570819854736, 0.98759526014328, + -1.1914258003234863, -0.5337285995483398, -0.5056967735290527, + -0.12340670824050903, 1.0408656597137451, -0.9737831354141235, + -1.2323329448699951, 0.8444372415542603, -0.2988435626029968, + 1.61490797996521, -1.7490378618240356, 2.105975389480591, + 0.2320389747619629, 1.0772972106933594, -1.7753103971481323, + 0.048651039600372314, -2.6389622688293457, 0.8064020276069641, + -0.6110789179801941, 0.029083484783768654, 0.15798161923885345, + 0.2487015277147293, 0.2738338112831116, -2.130894422531128, + -1.4287163019180298, -0.4445136487483978 + ], + [ + 1.359204888343811, -6.218482971191406, -1.0079081058502197, + 0.14869537949562073, -3.717924118041992, 0.5859699249267578, + 4.617231369018555, 1.1691482067108154, -0.7994726300239563, + -5.81268835067749, -1.074994683265686, 0.8531436324119568, + 2.510840654373169, 0.3861783444881439, -0.25516432523727417, + -1.465218424797058, -0.7746332883834839, -0.5287109613418579, + 1.5794126987457275, -0.14773422479629517, 0.6300137639045715, + 0.8105552792549133, 0.06295910477638245, -1.1930586099624634, + 0.18522542715072632, 1.3368455171585083, 0.2947061359882355, + 0.19589009881019592, 0.32627880573272705, 0.4468316435813904, + -0.8553668856620789, 0.11874768137931824, 0.31633612513542175, + -1.1871514320373535, 0.7297653555870056, -0.7638513445854187, + -1.1225850582122803, -0.3348044157028198, -0.15807458758354187, + 0.30459341406822205, 0.5726803541183472, -0.9848781824111938, + 1.1602274179458618, -0.16111800074577332, 0.30122724175453186, + -0.27713286876678467, -0.09614729136228561, -0.48291876912117004, + 1.4902217388153076, -0.8520811796188354 + ], + [ + -13.738898277282715, 14.164468765258789, -2.6744120121002197, + -1.1370896100997925, 0.4602074921131134, -0.19361133873462677, + 1.3897992372512817, 2.738905668258667, -0.11809389293193817, + -0.14907819032669067, -1.0808018445968628, -6.64915657043457, + 3.0702974796295166, 0.1203700378537178, -2.977163314819336, + -0.6047713160514832, 8.340603828430176, 3.120016574859619, + 0.7361165881156921, 5.644399642944336, -1.7526570558547974, + 2.5250539779663086, -2.1562716960906982, 1.7012684345245361, + -0.5692150592803955, -3.0184452533721924, -0.3582006096839905, + -1.6588383913040161, -1.8027921915054321, 0.13018324971199036, + -0.21134121716022491, 1.84438955783844, -0.587018609046936, + -0.7793579697608948, -0.045078344643116, -2.244288921356201, + -0.5694491267204285, 3.9640491008758545, 0.24772118031978607, + -0.7924452424049377, -2.1059722900390625, 2.7041609287261963, + 0.07272358983755112, -0.6281474232673645, 0.620749294757843, + -0.6869955062866211, 1.2385605573654175, 0.2383628636598587, + 0.2227190136909485, -1.4311052560806274 + ], + [ + -11.369583129882812, 14.941617965698242, -4.137604236602783, + -6.683442115783691, -2.7098000049591064, -0.3440578579902649, + -0.5666006207466125, -2.308516263961792, 2.981142520904541, + 0.7743253707885742, 0.027978025376796722, -7.237673759460449, + 3.8649678230285645, 0.49616914987564087, 1.3686528205871582, + -1.4365228414535522, 5.466641902923584, 1.441271185874939, + 0.32601797580718994, 1.5856106281280518, -1.3048856258392334, + 2.066986560821533, -1.9126801490783691, 0.513865053653717, + -1.532933235168457, -2.7246410846710205, 1.6483534574508667, + 0.6621381044387817, 0.6308819651603699, 0.5393434166908264, + -3.443552017211914, -0.2692077159881592, 1.2975046634674072, + -1.699972152709961, 3.750985860824585, 0.9412946105003357, + -1.3487292528152466, 0.10901397466659546, 0.6940092444419861, + 0.4158949553966522, -0.39537492394447327, 3.355226755142212, + -1.2230554819107056, 1.11386239528656, -2.5003321170806885, + -0.2834002375602722, 0.8523018956184387, -0.3336361348628998, + -1.7345634698867798, -1.034678339958191 + ], + [ + -1.3504014015197754, -3.8587441444396973, 6.085354804992676, + -3.8261146545410156, -8.953089714050293, -1.4723153114318848, + 2.2146239280700684, 0.2387501299381256, 0.7627596855163574, + -1.1816256046295166, -1.5880450010299683, -0.6283536553382874, + 0.025540193542838097, 2.1313679218292236, 0.5138657093048096, + 0.5037025213241577, 0.6233301162719727, 0.7571020722389221, + 0.13071537017822266, -0.82106614112854, 1.7330596446990967, + -0.0725661963224411, 0.6211095452308655, -0.5183406472206116, + -0.4895574748516083, -2.3497402667999268, -0.09767541289329529, + 1.3391600847244263, 1.182515263557434, 0.3469924032688141, + -0.17197434604167938, 0.46376997232437134, -1.0670844316482544, + -0.0731763020157814, 0.3941276967525482, -0.23113557696342468, + 0.6726638078689575, -1.290940523147583, 0.6034595966339111, + -0.22019274532794952, -0.6613249182701111, 0.0529521107673645, + 1.1251864433288574, 0.4303664267063141, 1.0053627490997314, + -0.46433743834495544, -0.05979665741324425, -0.567128598690033, + -0.3656071126461029, -1.3185621500015259 + ], + [ + -2.132394313812256, -4.325778484344482, 5.339841365814209, + -3.175205945968628, -8.015848159790039, -0.85615473985672, + 1.3264352083206177, 1.881346344947815, 0.9741463661193848, + -0.6132715344429016, -1.3590582609176636, -0.7912590503692627, + 1.209794282913208, 1.2597675323486328, -2.948599338531494, + 0.49228817224502563, -0.4557117223739624, 1.3517998456954956, + -0.6165963411331177, -1.730854868888855, 2.045532703399658, + 0.0003365029697306454, -1.1528453826904297, 1.3483558893203735, + -0.32891082763671875, -0.7443017959594727, 0.2930912971496582, + -0.2864563763141632, 0.3989444375038147, 2.1736443042755127, + -0.2902349531650543, -0.01184497494250536, -0.5061057806015015, + -0.16887955367565155, -0.7104358077049255, 0.03275972977280617, + 0.17738161981105804, 0.34475934505462646, 0.8043432235717773, + 0.7276955246925354, -0.257811039686203, 0.43573859333992004, + -0.20946241915225983, -0.9623963832855225, -0.09133821725845337, + -1.148853063583374, -0.9726426005363464, -0.7022855877876282, + 0.18816448748111725, 0.09918393194675446 + ], + [ + -14.24520492553711, 15.692621231079102, -4.947904586791992, + -7.8401384353637695, -0.9752086400985718, 0.42274197936058044, + 1.1715948581695557, 1.0889816284179688, 0.15449784696102142, + 0.5692419409751892, -1.5221238136291504, 3.155163049697876, + 0.1667809784412384, -1.3906399011611938, -1.1339099407196045, + 2.245116949081421, -0.08568739891052246, 0.14300063252449036, + 0.5335118174552917, 2.1436548233032227, 1.3204716444015503, + -1.610283613204956, -2.3532371520996094, 0.7042097449302673, + -1.5294934511184692, -1.5664476156234741, -1.7519011497497559, + 0.8033720254898071, 0.28097960352897644, 1.1279816627502441, + 0.880610466003418, -0.5209280252456665, -0.18053369224071503, + 1.714810848236084, -0.6493598818778992, -2.731532573699951, + -1.1620129346847534, 3.0722737312316895, 0.09747069329023361, + -0.9510124325752258, -1.0299549102783203, 3.644749402999878, + -0.6848229169845581, -0.2930119037628174, 1.4713338613510132, + -0.16668182611465454, -0.01883077435195446, 0.7405503988265991, + -0.3458009362220764, -1.3670964241027832 + ], + [ + -14.41845417022705, 17.114511489868164, -3.842336654663086, + -10.29699420928955, -1.3829952478408813, -0.29709869623184204, + -0.7471644878387451, -3.745020627975464, 3.7899014949798584, + -0.21857856214046478, 0.8427841663360596, -7.935159206390381, + 3.8945064544677734, -0.6491679549217224, -1.8274587392807007, + -0.1983283907175064, 6.176950454711914, 2.171518087387085, + -1.3958978652954102, 0.17051608860492706, -1.1995227336883545, + 3.6736607551574707, -1.882075309753418, -0.5956969857215881, + 0.7460215091705322, -0.6504703164100647, -1.5802497863769531, + 2.856396198272705, 1.107671856880188, -2.626972198486328, + 0.9649960398674011, -1.7723444700241089, 1.0573095083236694, + 0.609905481338501, 0.37031033635139465, -0.03383593633770943, + -0.9863715767860413, -0.6567181944847107, 1.2383408546447754, + 0.8416167497634888, -1.73761785030365, 1.9934567213058472, + 0.4351077377796173, 1.1801931858062744, -2.967419147491455, + 0.4198017120361328, 0.553248405456543, -0.9957547187805176, + -3.0109071731567383, -2.3301942348480225 + ], + [ + -11.159250259399414, 15.48656940460205, -5.272670269012451, + -6.5144147872924805, -1.2613778114318848, 0.4015527069568634, + 0.7479159235954285, 0.7186632752418518, -1.60362708568573, + -0.5464545488357544, -2.3931117057800293, 3.9340860843658447, + 2.141854763031006, -2.2957472801208496, 1.6764640808105469, + 0.09713725745677948, 0.3013524115085602, -1.142094612121582, + 1.8025082349777222, -1.297978401184082, 1.6772962808609009, + 0.7521033883094788, 0.8098143935203552, -1.448142170906067, + -0.8959651589393616, -0.7647709846496582, -1.4518054723739624, + 1.5244170427322388, -0.6822392344474792, 0.13177326321601868, + -1.9106212854385376, -0.4223526418209076, 2.000898838043213, + -1.0416419506072998, -3.171562671661377, 0.6549503207206726, + 1.5021741390228271, 3.2366154193878174, -0.07002837210893631, + -0.9192554950714111, -1.5553463697433472, 2.9964678287506104, + -1.928275227546692, 0.5223014950752258, 1.2146241664886475, + -0.5801280736923218, 0.1946277618408203, 0.8541591167449951, + 0.2846437990665436, -1.3389610052108765 + ], + [ + -14.801467895507812, 12.86899185180664, -1.968459963798523, + -2.1725566387176514, 1.8633252382278442, -0.7224860191345215, + 2.2137491703033447, 8.245835304260254, 0.7857342958450317, + 0.8232078552246094, -1.5914392471313477, 2.8031985759735107, + -1.1551662683486938, -3.697007894515991, -0.0574704073369503, + 1.5854648351669312, 0.15614460408687592, -2.409308671951294, + -0.9297452569007874, 1.4431432485580444, 2.179267406463623, + 0.007483374327421188, -0.8434807062149048, 0.371461421251297, + 1.7591543197631836, 0.12715280055999756, -1.1859025955200195, + -1.60526442527771, -0.45652878284454346, 1.4026292562484741, + 0.3964724540710449, 3.2983808517456055, -0.5639913082122803, + -0.4833132028579712, 1.3932733535766602, 1.231626272201538, + -1.4669538736343384, -0.08631908148527145, -3.374779462814331, + 0.1515011340379715, 1.3351502418518066, 1.3106906414031982, + 0.08964446932077408, 0.12175507843494415, 0.5445574522018433, + -0.6278231739997864, -0.5408684015274048, -0.6836404800415039, + -0.9247042536735535, -0.577097475528717 + ], + [ + -2.147866725921631, -2.937791585922241, 9.513160705566406, + -0.6369585990905762, -9.31470012664795, -1.6865465641021729, + 1.9857416152954102, -0.7933666706085205, 1.6364551782608032, + 1.6297281980514526, -4.968979358673096, -1.5111466646194458, + -1.2801743745803833, -3.0185914039611816, 0.19533593952655792, + 0.779106080532074, 0.4317625164985657, -0.2681378126144409, + -1.1264712810516357, 0.3730834424495697, 0.5703181028366089, + -2.216622829437256, -2.1212499141693115, -1.129077672958374, + -0.5131137371063232, 0.3018191456794739, 0.6088038682937622, + -0.5225822329521179, 0.712185800075531, -0.8727145791053772, + 0.5065591335296631, 0.5885364413261414, -0.4914977252483368, + 0.18752287328243256, 1.7423889636993408, -0.7667073011398315, + 2.2448341846466064, -0.9988247752189636, 0.7060356736183167, + -0.3780960440635681, -1.5387040376663208, -0.9425469040870667, + -0.09104961901903152, 0.08320905268192291, 1.266226887702942, + 0.7488350868225098, 0.592494547367096, -0.7279151082038879, + -2.163801908493042, 0.6212021708488464 + ], + [ + -14.003128051757812, 13.826550483703613, -3.688565731048584, + -4.254318714141846, 1.1573811769485474, 0.12040912359952927, + 0.17647641897201538, 5.535531997680664, -0.04216286167502403, + -0.8757718205451965, -2.2612037658691406, 2.388029098510742, + -0.05826258286833763, -1.9967364072799683, -0.28673821687698364, + 1.7946754693984985, 1.8952134847640991, -0.7640697360038757, + -0.1679508537054062, -0.036583784967660904, 1.4929195642471313, + 0.14525800943374634, -2.100022554397583, -1.395298957824707, + -0.14224661886692047, 0.9274742603302002, -2.6169087886810303, + 1.7756394147872925, -0.4729892611503601, 0.6400092840194702, + 0.5488520860671997, 1.2623915672302246, 0.08096377551555634, + 0.03629504516720772, -1.0826935768127441, 0.07460597902536392, + 0.6734803318977356, 1.807769536972046, 1.0041269063949585, + -0.574706494808197, -0.578449547290802, 1.3526678085327148, + -0.08781728148460388, 1.1416032314300537, 0.8820413947105408, + 1.9073172807693481, -1.3113597631454468, 0.07716061919927597, + 0.7209005951881409, 1.862618327140808 + ], + [ + -3.7790043354034424, -3.9873695373535156, 7.606606483459473, + -3.8959438800811768, -9.349318504333496, -0.7789187431335449, + 1.7670581340789795, -0.39727771282196045, 0.5550373792648315, + -0.043547239154577255, -1.1837927103042603, -0.02973691001534462, + 1.2360793352127075, -0.1691097915172577, -1.0599981546401978, + 2.0273303985595703, -1.6758723258972168, 2.2163891792297363, + -2.4075841903686523, 0.0666862204670906, 3.0640852451324463, + 0.2853671908378601, -1.6931604146957397, -1.660187005996704, + -1.6420649290084839, -0.3433327376842499, -0.11883492022752762, + 0.7767680287361145, 1.6807993650436401, -0.3774445652961731, + -0.22199951112270355, -0.15123888850212097, 0.2590703070163727, + 1.1739134788513184, -0.7664489150047302, -1.0903924703598022, + 1.504826307296753, 0.31195369362831116, -0.685202419757843, + 0.9564200043678284, 0.03567329794168472, 1.0958025455474854, + -0.8710571527481079, -0.43906256556510925, 2.323709011077881, + 1.0582486391067505, 0.48403164744377136, 1.256790280342102, + -2.134528875350952, 0.5554227828979492 + ], + [ + -13.945719718933105, 14.307710647583008, -0.9317321181297302, + -2.7323644161224365, 1.2941174507141113, 0.17422828078269958, + 2.2358973026275635, 8.929372787475586, 1.2156367301940918, + -0.1459168791770935, -1.3666185140609741, 3.7296078205108643, + -1.8531302213668823, -2.7047698497772217, 2.1590383052825928, + 0.397072434425354, -1.6449956893920898, -1.9122347831726074, + 1.6772984266281128, 1.3323463201522827, 2.053086280822754, + 1.0399659872055054, -0.42754417657852173, 0.7453018426895142, + 1.451025366783142, -2.039593458175659, 0.5832818150520325, + -0.4043608605861664, 0.8194870352745056, -0.6535798907279968, + -1.9598047733306885, 1.758499264717102, -0.1082770898938179, + -2.143402576446533, 0.6796752214431763, 0.1240629032254219, + -0.09355104714632034, 0.3459227383136749, -1.1564816236495972, + -0.8240103125572205, -0.3881000280380249, 2.730837821960449, + -0.0497223362326622, 0.8501418828964233, -1.7462289333343506, + 1.4997766017913818, -0.038535334169864655, 1.3208032846450806, + 0.23364771902561188, -0.8390783667564392 + ], + [ + -12.96324348449707, 15.737534523010254, -4.521216869354248, + -8.096938133239746, -1.4080523252487183, 0.8355473875999451, + 1.916338324546814, 2.489272356033325, 1.7019275426864624, + 0.3761526942253113, -1.4088621139526367, 0.980233907699585, + 2.9439334869384766, -1.1370255947113037, 2.7375752925872803, + -0.3678223192691803, 0.763006865978241, -2.6321353912353516, + 0.16455742716789246, 1.8366327285766602, 2.569244623184204, + 0.6604399681091309, -2.5137102603912354, 1.8111919164657593, + -0.8321152329444885, -0.09207691252231598, -2.577314853668213, + 2.6357529163360596, -2.0337283611297607, -0.6317133903503418, + -2.1766390800476074, -0.9999131560325623, -0.05099383369088173, + -1.0490543842315674, 0.26643291115760803, 0.38211774826049805, + 0.5428960919380188, 1.0397264957427979, 0.09593890607357025, + -0.4871193468570709, -0.6246597766876221, 2.4116530418395996, + -1.7129542827606201, -0.3894863724708557, 0.7415826916694641, + -1.6948391199111938, 2.3354172706604004, -1.5105677843093872, + -0.7175948023796082, 0.7731437683105469 + ], + [ + -14.771173477172852, 15.750792503356934, -4.454993724822998, + -7.126080513000488, -0.3523755371570587, -0.6706725358963013, + 1.004472255706787, -4.4505791664123535, -1.3744006156921387, + 0.4064553380012512, -1.7999563217163086, 7.419043064117432, + 0.8139410614967346, -2.1502342224121094, -0.35205087065696716, + -0.7284146547317505, 0.9098107218742371, 0.6973916292190552, + -1.327218770980835, -0.760125458240509, -0.5762105584144592, + -1.1187680959701538, 0.3956170976161957, -0.8582085967063904, + 0.31849437952041626, 0.2044639140367508, 0.09854405373334885, + 0.7997674942016602, 1.2024685144424438, 0.24950779974460602, + 0.4316956102848053, 0.25434964895248413, 0.08228550106287003, + 0.1842278689146042, -1.3880853652954102, 0.46772024035453796, + -1.2966002225875854, -0.1818632185459137, -1.1516962051391602, + 0.8920348286628723, -1.2503935098648071, -0.43443259596824646, + -0.09895945340394974, 1.1871026754379272, -0.31390294432640076, + -0.5473967790603638, -0.2460155040025711, -1.312901496887207, + 0.24902403354644775, 1.1313385963439941 + ], + [ + -3.764044761657715, -5.129182815551758, 14.21169662475586, + -10.887442588806152, -5.754798412322998, -1.0515114068984985, + 6.248058795928955, 0.27469602227211, 2.256012201309204, + -2.1283321380615234, -3.327317237854004, -0.9164797067642212, + -0.7184735536575317, -1.3018494844436646, -1.4606678485870361, + 1.3078893423080444, -0.9041342735290527, 2.186896562576294, + -2.5488388538360596, -3.496417999267578, 2.0805351734161377, + -1.5809506177902222, 2.1877005100250244, -2.1279871463775635, + 0.36181938648223877, 1.3106836080551147, 0.30042123794555664, + -0.6182039976119995, 0.5815056562423706, -0.6477247476577759, + 2.8268730640411377, -1.34160578250885, -3.041285514831543, + -1.4178466796875, 5.288204193115234, 1.1661521196365356, + -0.12070193886756897, -1.2619750499725342, 0.04882882162928581, + 2.6227469444274902, 0.790939211845398, -0.48623350262641907, + 1.216779112815857, 1.1604541540145874, -0.1403387188911438, + 1.076404094696045, 1.1374930143356323, 0.9584694504737854, + 2.4472434520721436, -1.0481921434402466 + ], + [ + -14.331266403198242, 9.672572135925293, 7.81966495513916, + 9.406793594360352, 3.6663639545440674, -0.2828855812549591, + 3.424809694290161, 3.5910301208496094, 0.797522783279419, + -1.5212593078613281, -0.8852468729019165, 2.000927448272705, + 3.7259581089019775, 3.1981067657470703, 0.6292824745178223, + -2.699143409729004, 0.6050991415977478, -4.0452117919921875, + -1.2631584405899048, 0.17465092241764069, -0.40234386920928955, + -0.18379075825214386, -0.23325245082378387, 1.1187609434127808, + 0.2763056755065918, 0.028734397143125534, 0.03860074654221535, + -0.8733006715774536, -0.2571403384208679, -0.8882279992103577, + 0.880227267742157, -0.6188533306121826, 0.4050765931606293, + -2.7382781505584717, -0.05860050022602081, 0.35453447699546814, + -0.2906753122806549, -1.8095037937164307, 0.6612735390663147, + -0.23489488661289215, 0.07287245243787766, 0.07575062662363052, + 1.8167787790298462, 0.1586662083864212, -1.1333342790603638, + -0.5417109727859497, 0.4226786196231842, 1.3894578218460083, + -0.3858228027820587, 1.4454710483551025 + ], + [ + -11.8370943069458, 15.728250503540039, -5.643127918243408, + -7.847179412841797, -1.9602429866790771, -0.11820247769355774, + 0.42208677530288696, -0.4147576689720154, 1.8697783946990967, + 0.4844626188278198, -2.2143659591674805, 1.7087558507919312, + 0.22414234280586243, -3.224961280822754, -0.7713857293128967, + 0.19293296337127686, 3.075869083404541, -0.4938431978225708, + 1.4316072463989258, -0.286591500043869, 2.966952085494995, + 0.7756348252296448, -0.22136534750461578, -0.1627316027879715, + -0.5010021924972534, 0.5816695690155029, -2.009056568145752, + 3.4451520442962646, -1.0099561214447021, 0.7120267152786255, + -0.6495115756988525, -0.861143946647644, -0.04416155442595482, + 0.0673089399933815, -0.9407734274864197, 0.30120372772216797, + 1.5332930088043213, 1.7350002527236938, 1.353448748588562, + -0.573293149471283, -0.8520225882530212, -0.22336848080158234, + 0.3434480130672455, -1.6251343488693237, 1.0737217664718628, + -0.6489352583885193, 1.5072033405303955, 0.2820528447628021, + 0.3112761676311493, -0.05303113907575607 + ], + [ + -0.060425493866205215, -4.77846097946167, -0.9653093814849854, + 3.351553440093994, -3.725907802581787, 1.6460645198822021, + 10.54348373413086, -1.922069787979126, 4.53005838394165, + 3.4909231662750244, -1.2936383485794067, -0.07556076347827911, + -0.8501628637313843, -1.1580216884613037, 2.1091740131378174, + 0.6059378385543823, 0.8841722011566162, 2.2784547805786133, + 1.8795055150985718, 0.4456160366535187, 1.9987616539001465, + -2.4691028594970703, 0.756470799446106, -1.5923923254013062, + -0.42738428711891174, 0.1148604080080986, 0.8232389092445374, + -1.5950034856796265, 0.7236473560333252, 0.12196934223175049, + 0.07760238647460938, 0.6183038353919983, -0.11093875765800476, + 1.1230034828186035, -0.3699744939804077, 0.43619999289512634, + 0.29508912563323975, 0.45177018642425537, -0.6239027976989746, + 0.2315356731414795, 2.2379727363586426, -0.4249747395515442, + 0.6257224678993225, -0.5227225422859192, 0.9013110399246216, + 0.6776953339576721, 0.2937781810760498, -0.8281363248825073, + -0.9243767261505127, -0.0011919772950932384 + ], + [ + -8.99106216430664, 4.921894073486328, 11.888325691223145, + 11.465113639831543, 1.6137815713882446, -0.927912175655365, + 0.6164448857307434, -5.353192329406738, -0.7658122181892395, + 0.3581271767616272, -2.2094531059265137, 0.11288481205701828, + 2.5184385776519775, -1.5534789562225342, -1.5136727094650269, + -0.049393121153116226, -0.7883488535881042, -0.7755714654922485, + 0.17976604402065277, 0.43991342186927795, -0.07794037461280823, + -0.8409278988838196, 0.11857867985963821, 0.22493517398834229, + -2.464932441711426, -0.47103872895240784, -0.37994036078453064, + 1.3306108713150024, -0.9205315709114075, -1.8728893995285034, + -0.3007557690143585, -0.47317880392074585, -1.6345309019088745, + 1.4692480564117432, 1.0515743494033813, 0.3982039988040924, + 0.28165102005004883, 0.08842078596353531, -0.6985458731651306, + -0.5074853301048279, -1.2987959384918213, 0.46315982937812805, + -0.3765871226787567, -1.2182109355926514, 0.48123443126678467, + 0.35315293073654175, 1.429048776626587, 1.112014889717102, + -0.14171776175498962, 0.3409060835838318 + ], + [ + -11.506867408752441, 13.57575798034668, -4.743198394775391, + -6.510234832763672, -0.8958238363265991, -0.15058109164237976, + -0.16821126639842987, -3.931614637374878, -2.1113803386688232, + 0.4283801317214966, -1.153570294380188, 8.074214935302734, + -0.13372802734375, -1.6328821182250977, 1.5843957662582397, + -0.8145420551300049, -1.1139750480651855, 1.2607542276382446, + -1.195815086364746, 0.3052699565887451, -0.9643442034721375, + -0.13219060003757477, 0.28729990124702454, -0.05199766159057617, + 0.4346107244491577, -1.1998608112335205, 0.858841061592102, + -1.6718180179595947, 0.2645648717880249, 0.5846473574638367, + -1.7769569158554077, 1.5387648344039917, 0.19759824872016907, + -1.7181127071380615, 0.4043763279914856, 0.8957629203796387, + -1.8815553188323975, -0.7751753926277161, -2.989657163619995, + -0.11462409794330597, 1.2088958024978638, 1.6094975471496582, + 0.8441463708877563, 0.6671490669250488, 1.1271264553070068, + -0.7912144660949707, -0.6528581976890564, 0.1438412368297577, + 0.39120715856552124, 0.4545838236808777 + ], + [ + -11.234769821166992, 5.987929344177246, 9.325484275817871, + 13.727742195129395, 1.0263502597808838, -0.8598122596740723, + 0.7553329467773438, -4.977208137512207, 0.274582177400589, + -0.2632453143596649, -1.6861388683319092, -0.5844945311546326, + 2.308326005935669, -1.354990839958191, -1.2305461168289185, + 0.026734089478850365, 1.6918574571609497, 0.10290800780057907, + 0.04456736519932747, 0.10154156386852264, 2.463945150375366, + 0.12667156755924225, -0.9755644798278809, 1.9045554399490356, + -1.0520142316818237, 1.2701808214187622, -0.9033117294311523, + -0.3292250633239746, -0.02209177054464817, 0.885560154914856, + -0.8615107536315918, 1.0493571758270264, 0.29251137375831604, + -1.1007194519042969, 2.957406759262085, 1.3427990674972534, + 0.4914605915546417, -1.3582011461257935, 0.1042315810918808, + -0.7703294157981873, -1.7422406673431396, 0.8911610841751099, + -0.9830859303474426, 0.18953758478164673, 1.495437502861023, + 0.0885302945971489, 0.0009199286578223109, -0.7916423082351685, + 1.5835150480270386, 0.3517953157424927 + ], + [ + -10.85295295715332, 7.445544719696045, 11.733601570129395, + 13.06344985961914, 1.9499843120574951, -1.502372145652771, + 0.9791776537895203, -3.885910749435425, 1.467808723449707, + -1.3282372951507568, -0.39008504152297974, 0.6860278248786926, + 2.192124843597412, 1.6704692840576172, 1.499253749847412, + -1.0108575820922852, -0.15125703811645508, -1.2950793504714966, + -1.379384160041809, -1.412747859954834, 2.4138236045837402, + 0.2010805606842041, 0.4785621464252472, 1.3576984405517578, + 0.08381176739931107, 0.7166799902915955, -0.3820687234401703, + 0.13203038275241852, 0.24353954195976257, 0.3093602955341339, + 0.36875393986701965, 0.05793929845094681, 0.8746454119682312, + -1.365648865699768, 0.2640891373157501, 2.2951948642730713, + -2.261622190475464, 1.2950183153152466, -1.1992005109786987, + -0.9015321731567383, -1.7484450340270996, 0.7543947100639343, + -0.9346373081207275, -1.1680001020431519, 1.1353825330734253, + -2.0059196949005127, 0.7548897862434387, -0.15401670336723328, + -1.6744967699050903, 0.40619173645973206 + ], + [ + -14.369081497192383, 12.640310287475586, 3.0542192459106445, + 6.2810540199279785, 2.614788293838501, -0.4908750653266907, + 2.434569835662842, 9.654932975769043, -0.0514461025595665, + -0.8468331098556519, -0.04914075508713722, 1.8196136951446533, + 1.181267499923706, 0.9416163563728333, -3.5595812797546387, + -0.04587502405047417, -1.256809115409851, -1.0354039669036865, + -1.7164758443832397, 0.42971616983413696, 0.17382992804050446, + 0.12107682973146439, 0.4901348352432251, -0.20790237188339233, + 0.4110088050365448, 0.8916832804679871, 0.7484883069992065, + -1.6282844543457031, 1.8765296936035156, -0.32800716161727905, + -0.055781394243240356, -0.22196592390537262, 1.1580545902252197, + -0.6504616737365723, -2.353294610977173, 0.8179799914360046, + 0.3708101809024811, -0.36144715547561646, -1.4149394035339355, + -0.18313483893871307, 1.490663766860962, -0.889268696308136, + 1.9835689067840576, -0.9886755347251892, -0.43572112917900085, + 0.19197829067707062, -0.6266993284225464, 0.09907761961221695, + 0.7561300992965698, 0.16819125413894653 + ] + ], + "X_umap": [ + [2.863359212875366, 4.735023021697998], + [4.928004741668701, 2.629343032836914], + [-10.694380760192871, 0.7282713055610657], + [4.215363025665283, 1.0666383504867554], + [5.565277099609375, -3.15651273727417], + [1.876205563545227, -4.090156078338623], + [-2.055039882659912, -2.075582981109619], + [6.112038612365723, -1.3596646785736084], + [-11.404786109924316, -0.3759504556655884], + [7.870038986206055, 0.4022972583770752], + [5.480849266052246, -2.966010808944702], + [-8.208011627197266, 3.705298900604248], + [8.639411926269531, 4.407148838043213], + [3.177371025085449, -4.527858257293701], + [6.2317891120910645, -2.5219004154205322], + [-11.267833709716797, 5.638401031494141], + [2.8690600395202637, 2.0928971767425537], + [-11.246185302734375, 3.945387840270996], + [6.571178913116455, 3.892319679260254], + [-9.088343620300293, 4.181664943695068], + [6.418415069580078, 0.26675549149513245], + [-10.823965072631836, 5.346739768981934], + [4.6938629150390625, 1.3343334197998047], + [-5.790002822875977, -3.077791690826416], + [-0.29139986634254456, -5.114933013916016], + [-0.673973798751831, -3.699603319168091], + [-11.295242309570312, 4.05423641204834], + [2.545789957046509, 0.22083541750907898], + [3.0721657276153564, 1.5921680927276611], + [-10.459954261779785, 0.2934435307979584], + [-10.321405410766602, 0.6823283433914185], + [5.687520980834961, 1.590615153312683], + [3.7333078384399414, 1.4692425727844238], + [5.3746466636657715, 1.7398216724395752], + [5.542148113250732, -1.4525854587554932], + [-7.874664783477783, -1.0265419483184814], + [5.81940221786499, -0.5606408715248108], + [-9.908223152160645, 0.3006816506385803], + [5.979428291320801, -1.5926531553268433], + [6.092731475830078, 0.9632568359375], + [4.219326019287109, 3.8157272338867188], + [-10.517379760742188, -1.2470197677612305], + [1.42355477809906, -4.790363788604736], + [6.245828151702881, 1.5339767932891846], + [-9.472710609436035, 4.53525972366333], + [-2.5874481201171875, -3.81369686126709], + [3.71260404586792, 3.353705406188965], + [-2.136101484298706, -4.025306701660156], + [-1.8059942722320557, -4.994431018829346], + [3.4860620498657227, -3.730013132095337] + ], + "velocity_umap": [ + [0.03246533773535059, 0.13792963683470005], + [0.11177127930488494, 0.16019806341797127], + [0.1500439505843519, 0.011039083439909366], + [0.18640312611422402, 0.337719722944636], + [0.3502361259479558, 0.3706825958734048], + [0.5224674075721216, 0.12465978113014825], + [0.45981744627386706, 0.11213221389781806], + [0.28751520921005636, 0.3224131477351831], + [0.10514756625570329, -0.05321501825877582], + [0.030351480109053773, 0.2322669926669677], + [0.34551645129468855, 0.3610376123419269], + [0.35274654760925966, 0.08862534179269195], + [-0.09920571829206068, 0.13629257902744205], + [0.5543750016672278, 0.2636973191327594], + [0.2934654777586604, 0.43607766786908003], + [0.2193140341718346, 0.23553089231654556], + [0.6428065688576395, 0.13173893909146206], + [0.14163059771692976, 0.07832769970909968], + [0.15874635962803205, -0.06638328959414976], + [0.30054761959092147, 0.10726927550851818], + [0.2331741905831108, 0.22168666674168283], + [0.16072266838977148, 0.15697538164673305], + [0.4670464552456354, 0.18919365233894406], + [0.3216136220435616, -0.02468892752348566], + [0.4687571742060243, 0.0349723330024735], + [0.47717568562999935, 0.08959661707307597], + [0.11901482832576075, 0.1337922089653038], + [0.4708219117533795, 0.5087959683547404], + [0.04299729903207144, 0.35577765475086526], + [0.28378089471952606, -0.08175344907052595], + [0.20117424821089033, 0.009431229005195833], + [0.0027532531249208725, 0.2618572316658762], + [-0.031810283236013766, 0.30103388940716164], + [0.21448711717375854, 0.046074735195365986], + [0.44200070227352956, 0.3140897408758923], + [0.3145116804574723, -0.028533809604838124], + [0.34371318176084986, 0.2853720565456881], + [0.23552527859323796, -0.018759389607940737], + [0.281746931502195, 0.46415665209431317], + [0.014332796511918168, 0.2878000677373546], + [0.10360548657791996, 0.11563996913621089], + [0.17468824647883788, -0.0918714393647538], + [0.6041946719107331, 0.18533737844520384], + [0.03430030457624374, 0.2885510675955198], + [0.26357477812758523, 0.13665496762528592], + [0.37027749746174765, 0.041275659230450644], + [0.31565945929050093, -0.017636017511691207], + [0.40670158482824426, 0.03493010364245681], + [0.3942053608843815, -0.007554352053190311], + [0.571302754421609, 0.3258489739828169] + ] + }, + "varm": { + "loss": [ + [ + 9.104160033679067, + 5.659526460443428, + 5.550459722719419, + 5.396320195265236, + 5.3961762580106765, + 4.116301105607934, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 6.317015341927311, + 2.27751548396456, + 2.251766447413078, + 2.0686453244628358, + 1.9726592229148214, + 2.2170730605151823, + 1.1984362175579677, + 1.1976916638409534, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 7.607685819139538, + 3.3050926966764838, + 3.293123656747615, + 3.234444031156313, + 4.242694693741616, + 2.9604493032565977, + 1.9976215845001482, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 14.568440072912201, + 9.942477624347344, + 9.68524626932793, + 7.984742951579451, + 7.077444617039046, + 4.051191846937932, + 2.283827405921061, + 1.9534221759899146, + 1.9492026061230634, + 1.7482135584451959, + 1.6146536693246771, + NaN, + NaN, + NaN, + NaN + ], + [ + 21.412436041938207, + 7.761416645729354, + 6.91379705135719, + 5.467017829257656, + 5.508867335138303, + 5.474647635389492, + 5.485316497388145, + 3.624033664987899, + 3.48531264734762, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 12.732364166093632, + 7.465932140149446, + 6.594532493211832, + 4.659971139374455, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 14.533792372310117, + 11.233969501155027, + 10.976554340898659, + 10.57434298427803, + 10.571266018408476, + 8.444505105080426, + 6.2024524038149975, + 5.265923266878386, + 5.265923266878386, + 3.1672689608842206, + 3.166145885312764, + NaN, + NaN, + NaN, + NaN + ] + ] + }, + "obsp": { + "connectivities": [ + [ + 0.0, 0.53265380859375, 0.0, 0.0680786594748497, 0.028192861005663872, + 0.0, 0.0, 0.07872893661260605, 0.0, 0.07487280666828156, + 0.05182172730565071, 0.0, 0.17139901220798492, 0.023082345724105835, + 0.05334343761205673, 0.019037432968616486, 0.20674607157707214, 0.0, + 0.13461172580718994, 0.0, 0.13305045664310455, 0.0, 0.4224238991737366, + 0.0, 0.0, 0.0, 0.0, 0.0696490928530693, 0.1250809133052826, + 0.0192739088088274, 0.0, 0.27164387702941895, 0.10518433898687363, + 0.40147778391838074, 0.07391510903835297, 0.0, 0.13692565262317657, 0.0, + 0.07955716550350189, 0.1501704603433609, 0.8565076589584351, 0.0, + 0.02154350094497204, 0.28219398856163025, 0.0, 0.0, 1.0, 0.0, 0.0, + 0.02845108136534691 + ], + [ + 0.53265380859375, 0.0, 0.0, 0.174528568983078, 0.027679860591888428, + 9.015371324494481e-5, 3.722683686646633e-5, 0.07717221975326538, 0.0, + 0.056542932987213135, 0.03351956978440285, 0.0, 0.3445345461368561, + 0.00018193376308772713, 0.035168182104825974, 0.0, 0.14801332354545593, + 0.0, 0.09414844214916229, 0.0, 0.11282217502593994, 0.0, + 0.950276255607605, 0.0, 0.0, 0.0, 0.0, 0.05742856487631798, + 0.11190546303987503, 0.0, 0.0, 0.691303014755249, 0.14400097727775574, + 0.6756076812744141, 0.04785221070051193, 0.0, 0.1498233526945114, 0.0, + 0.048246584832668304, 0.5840916633605957, 1.0, 0.0, + 0.0001485092652728781, 0.9153958559036255, 0.0, 0.0, 0.6405394077301025, + 0.0, 0.0, 0.01879383996129036 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0008506689337082207, + 0.9517919421195984, 0.0010874196887016296, 0.0, 0.31562671065330505, + 0.00014482576807495207, 0.0, 0.0, 0.2883283197879791, + 0.01075711753219366, 0.3361738622188568, 0.0011114930966868997, + 0.19871141016483307, 0.0, 0.2744344472885132, 0.0013901767088100314, + 0.5166186094284058, 0.027838334441184998, 0.03597136586904526, + 0.4212188720703125, 0.0, 0.0, 0.9762163758277893, 0.9191384315490723, + 0.0, 0.007615056820213795, 0.0008669299422763288, 0.0008676896686665714, + 0.7748616933822632, 0.0008144627790898085, 1.0, 0.0008071537595242262, + 0.0, 0.0, 1.0, 0.0010200436227023602, 0.0, 0.17301350831985474, + 0.085923932492733, 0.007301213685423136, 0.04893966019153595, + 0.04040396213531494, 0.0 + ], + [ + 0.0680786594748497, 0.174528568983078, 0.0, 0.0, 0.06823098659515381, + 0.012271404266357422, 0.005870440974831581, 0.13693615794181824, 0.0, + 0.2653900682926178, 0.1092691645026207, 0.0, 0.06304334104061127, + 0.021511521190404892, 0.07843055576086044, 0.0, 0.3289119005203247, 0.0, + 0.1706179976463318, 0.0, 0.1583288013935089, 0.0, 0.10611136257648468, + 0.0, 0.0, 0.0, 0.0, 0.39827361702919006, 0.8524527549743652, 0.0, 0.0, + 0.1721428483724594, 0.9999999403953552, 0.15568609535694122, + 0.08831405639648438, 0.0, 0.1742258220911026, 0.0, 0.0773845911026001, + 0.3277891278266907, 0.11982973664999008, 0.0, 0.013264521956443787, + 0.3397292494773865, 0.0, 0.0, 0.06666328012943268, 0.0, 0.0, + 0.02377162128686905 + ], + [ + 0.028192861005663872, 0.027679860591888428, 0.0, 0.06823098659515381, + 0.0, 0.24037334322929382, 0.11873308569192886, 0.4742709994316101, 0.0, + 0.1638403981924057, 1.0, 0.0, 0.014827673323452473, 0.4725923240184784, + 0.9178111553192139, 0.0, 0.053005073219537735, 0.0, 0.03823540732264519, + 0.0, 0.24071264266967773, 0.0, 0.07662711292505264, 0.0, + 0.04638740420341492, 0.045588478446006775, 0.0, 0.113612599670887, + 0.03151281923055649, 0.0, 0.0, 0.08458684384822845, 0.02335735596716404, + 0.06234703212976456, 0.7817089557647705, 0.0, 0.2690531611442566, 0.0, + 0.704796314239502, 0.076539047062397, 0.0484955795109272, 0.0, + 0.1659770905971527, 0.04965481162071228, 0.0, 0.0, 0.047023069113492966, + 0.03285081684589386, 0.039645105600357056, 0.7616464495658875 + ], + [ + 0.0, 9.015371324494481e-5, 0.0, 0.012271404266357422, + 0.24037334322929382, 0.0, 0.37412866950035095, 0.08136593550443649, 0.0, + 0.03776904195547104, 0.24220110476016998, 0.0, 0.00040969642577692866, + 0.9335717558860779, 0.10494370013475418, 0.0, 0.03804861381649971, 0.0, + 0.025084499269723892, 0.0, 0.058431852608919144, 0.0, + 0.04360628500580788, 0.03232032433152199, 0.4920710325241089, + 0.5515062212944031, 0.0, 0.058931462466716766, 0.0, 0.0, 0.0, + 0.029714666306972504, 0.008791615255177021, 0.03312448039650917, + 0.11475569754838943, 0.0, 0.06945106387138367, 0.0, 0.10135676711797714, + 0.027746709063649178, 0.03647652268409729, 0.0, 1.0, + 0.021819068118929863, 0.0, 0.3031584322452545, 0.03260508552193642, + 0.3284582197666168, 0.42834964394569397, 0.8569005727767944 + ], + [ + 0.0, 3.722683686646633e-5, 0.0, 0.005870440974831581, + 0.11873308569192886, 0.37412866950035095, 0.0, 0.042440999299287796, + 0.0, 0.016011781990528107, 0.1037273108959198, 0.01949009671807289, 0.0, + 0.9450973868370056, 0.052360858768224716, 0.06779347360134125, + 0.01742018572986126, 0.0457804873585701, 0.02246837690472603, + 0.333970308303833, 0.026179783046245575, 0.06637817621231079, + 0.03063426911830902, 0.02631346881389618, 0.3087456524372101, + 0.3273099660873413, 0.02462410181760788, 0.021067092195153236, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.07365186512470245, 0.0, 0.02923324517905712, 0.0, + 0.05201870575547218, 0.0, 0.003110521240159869, 0.0, 1.0, 0.0, + 0.1659342348575592, 0.20590448379516602, 0.0, 0.3303644359111786, + 0.3060571253299713, 0.4587562084197998 + ], + [ + 0.07872893661260605, 0.07717221975326538, 0.0008506689337082207, + 0.13693615794181824, 0.4742709994316101, 0.08136593550443649, + 0.042440999299287796, 0.0, 0.0, 1.0, 0.5796350240707397, + 0.0002661569742485881, 0.05257720127701759, 0.12933684885501862, + 0.6751577258110046, 0.0, 0.11556509137153625, 0.0020646736957132816, + 0.10061653703451157, 0.0, 0.3301832675933838, 0.0, 0.2696246802806854, + 0.002754912478849292, 0.027949802577495575, 0.023101961240172386, 0.0, + 0.21311303973197937, 0.0867898166179657, 0.0, 0.0, 0.2756367027759552, + 0.08130409568548203, 0.1932944655418396, 1.0, 0.0035921118687838316, + 0.7170088291168213, 0.00807748269289732, 0.9622586369514465, + 0.33757907152175903, 0.09257740527391434, 0.005355460569262505, + 0.066103994846344, 0.15594084560871124, 0.0, 0.0, 0.11135908216238022, + 0.0, 0.024938272312283516, 0.20076096057891846 + ], + [ + 0.0, 0.0, 0.9517919421195984, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.008928142488002777, 0.0, 0.39573073387145996, 0.0, + 0.008477214723825455, 0.0, 0.29776671528816223, 0.013773794285953045, + 0.3101629614830017, 0.011571562848985195, 0.17717592418193817, + 0.008631397038698196, 0.327242374420166, 0.013684969395399094, + 0.21505266427993774, 0.0, 0.033713698387145996, 0.38218799233436584, + 0.0, 0.009010442532598972, 1.0, 0.8620946407318115, 0.0, 0.0, + 0.009353365749120712, 0.0, 0.7836110591888428, 0.009202995337545872, + 1.0, 0.0, 0.0, 0.0, 0.9291825890541077, 0.010312903672456741, 0.0, + 0.17271645367145538, 0.07226001471281052, 0.010586130432784557, + 0.04376600682735443, 0.0392041839659214, 0.0 + ], + [ + 0.07487280666828156, 0.056542932987213135, 0.0010874196887016296, + 0.2653900682926178, 0.1638403981924057, 0.03776904195547104, + 0.016011781990528107, 1.0, 0.008928142488002777, 0.0, 0.324057936668396, + 0.0, 0.22252412140369415, 0.07956535369157791, 0.42788437008857727, 0.0, + 0.3709983825683594, 0.0, 0.43221843242645264, 0.0, 0.27443501353263855, + 0.0, 0.14605437219142914, 0.0, 0.025132959708571434, 0.0, 0.0, + 0.1623772233724594, 0.34739574790000916, 0.007161619141697884, 0.0, + 0.2817477881908417, 0.18091799318790436, 0.26785144209861755, + 0.21989521384239197, 0.0, 0.2852286994457245, 0.0, 0.7357642650604248, + 0.4675121307373047, 0.07128997147083282, 0.005847027525305748, + 0.033431246876716614, 0.2732725441455841, 0.0, 0.0, 0.090263731777668, + 0.0, 0.0, 0.07139129936695099 + ], + [ + 0.05182172730565071, 0.03351956978440285, 0.0, 0.1092691645026207, 1.0, + 0.24220110476016998, 0.1037273108959198, 0.5796350240707397, 0.0, + 0.324057936668396, 0.0, 0.0, 0.01771029271185398, 0.42913031578063965, + 0.6329693794250488, 0.0, 0.08344376087188721, 0.0, 0.045726701617240906, + 0.0, 0.28770631551742554, 0.0, 0.09364563226699829, 0.0, + 0.052209075540304184, 0.040301352739334106, 0.0, 0.18380028009414673, + 0.052657585591077805, 0.0, 0.0, 0.10422376543283463, + 0.05410875752568245, 0.07855921238660812, 0.8616095781326294, 0.0, + 0.37605226039886475, 0.0, 0.7772741317749023, 0.08022359013557434, + 0.07204894721508026, 0.0, 0.17131352424621582, 0.06665335595607758, 0.0, + 0.0418170690536499, 0.06583472341299057, 0.04025186225771904, + 0.036287419497966766, 0.7159180641174316 + ], + [ + 0.0, 0.0, 0.31562671065330505, 0.0, 0.0, 0.0, 0.01949009671807289, + 0.0002661569742485881, 0.39573073387145996, 0.0, 0.0, 0.0, 0.0, + 0.00022237037774175406, 0.0, 0.8330211639404297, 0.0003167445247527212, + 0.5854098200798035, 0.0003255287301726639, 0.42407965660095215, + 0.0002515927772037685, 1.0, 0.0005017891526222229, 0.040933892130851746, + 0.0, 0.0003802203282248229, 0.407289057970047, 0.0, 0.0, + 0.3686596751213074, 0.46237310767173767, 0.0, 0.0, + 0.00026970249018631876, 0.0002485554141458124, 0.26648256182670593, 0.0, + 0.336405873298645, 0.0, 0.0, 0.0, 0.14340800046920776, + 0.000314558477839455, 0.0, 0.7833172082901001, 0.03983791172504425, + 0.00028060670592822134, 0.0008663319749757648, 0.00047646465827710927, + 0.0 + ], + [ + 0.17139901220798492, 0.3445345461368561, 0.00014482576807495207, + 0.06304334104061127, 0.014827673323452473, 0.00040969642577692866, 0.0, + 0.05257720127701759, 0.0, 0.22252412140369415, 0.01771029271185398, 0.0, + 0.0, 0.0010813556145876646, 0.027446748688817024, 0.0, + 0.33688920736312866, 0.0, 0.9999999403953552, 0.0, 0.021748866885900497, + 0.0, 0.19493335485458374, 0.0, 0.0, 0.0, 0.0, 0.013882743194699287, + 0.09440797567367554, 0.0, 0.0, 0.6454083323478699, 0.16619834303855896, + 0.2049131989479065, 0.019554132595658302, 0.0, 0.04141460359096527, 0.0, + 0.023014266043901443, 0.2319379448890686, 0.8003380298614502, 0.0, + 0.0004200837865937501, 0.20271189510822296, 0.0, 0.0, + 0.49423134326934814, 0.0, 0.0, 0.0016730604693293571 + ], + [ + 0.023082345724105835, 0.00018193376308772713, 0.0, 0.021511521190404892, + 0.4725923240184784, 0.9335717558860779, 0.9450973868370056, + 0.12933684885501862, 0.008477214723825455, 0.07956535369157791, + 0.42913031578063965, 0.00022237037774175406, 0.0010813556145876646, 0.0, + 0.2209242284297943, 0.0, 0.06506102532148361, 0.0, 0.0409051887691021, + 0.032137431204319, 0.08104177564382553, 0.0, 0.05305331200361252, + 0.006764254067093134, 0.3984883427619934, 0.33994174003601074, 0.0, + 0.10290859639644623, 0.03452310338616371, 0.0, 0.0, 0.04189267382025719, + 0.014725979417562485, 0.03919738903641701, 0.15871167182922363, + 0.0038772523403167725, 0.09151951223611832, 0.0, 0.1897324174642563, + 0.039042893797159195, 0.03776524215936661, 0.0, 0.8914220333099365, + 0.028171537443995476, 0.004397126380354166, 0.19194725155830383, + 0.03853074833750725, 0.21852606534957886, 0.28658416867256165, 1.0 + ], + [ + 0.05334343761205673, 0.035168182104825974, 0.0, 0.07843055576086044, + 0.9178111553192139, 0.10494370013475418, 0.052360858768224716, + 0.6751577258110046, 0.0, 0.42788437008857727, 0.6329693794250488, 0.0, + 0.027446748688817024, 0.2209242284297943, 0.0, 0.0, 0.06255393475294113, + 0.0, 0.04135489836335182, 0.0, 0.20855392515659332, 0.0, + 0.12770827114582062, 0.0, 0.035613615065813065, 0.0, 0.0, + 0.098028764128685, 0.04022706300020218, 0.0, 0.0, 0.12807129323482513, + 0.039527446031570435, 0.07390271872282028, 0.7954800724983215, 0.0, + 0.2564210593700409, 0.0, 1.0, 0.18850556015968323, 0.05660754442214966, + 0.0, 0.10176081955432892, 0.048158787190914154, 0.0, 0.0, + 0.07013309001922607, 0.0, 0.024573342874646187, 0.27843064069747925 + ], + [ + 0.019037432968616486, 0.0, 0.2883283197879791, 0.0, 0.0, 0.0, + 0.06779347360134125, 0.0, 0.29776671528816223, 0.0, 0.0, + 0.8330211639404297, 0.0, 0.0, 0.0, 0.0, 0.020063098520040512, + 0.9136441349983215, 0.024458615109324455, 0.4607428312301636, + 0.022157782688736916, 1.0, 0.025436507537961006, 0.09903780370950699, + 0.0, 0.01811281591653824, 0.9999999403953552, 0.0, 0.0, + 0.3364032506942749, 0.38044387102127075, 0.0, 0.0, 0.021846020594239235, + 0.018132604658603668, 0.1971767395734787, 0.019028203561902046, + 0.24177852272987366, 0.0, 0.0, 0.0, 0.09796875715255737, + 0.018678966909646988, 0.016091836616396904, 0.8513591289520264, + 0.06915067881345749, 0.019866399466991425, 0.05231562256813049, + 0.01757194846868515, 0.0 + ], + [ + 0.20674607157707214, 0.14801332354545593, 0.01075711753219366, + 0.3289119005203247, 0.053005073219537735, 0.03804861381649971, + 0.01742018572986126, 0.11556509137153625, 0.013773794285953045, + 0.3709983825683594, 0.08344376087188721, 0.0003167445247527212, + 0.33688920736312866, 0.06506102532148361, 0.06255393475294113, + 0.020063098520040512, 0.0, 0.003360779257491231, 0.7686107158660889, + 0.025339171290397644, 0.12094179540872574, 0.01948576606810093, + 0.15519048273563385, 0.0043263304978609085, 0.029921645298600197, + 0.023967906832695007, 0.026136118918657303, 0.9790244102478027, 1.0, + 0.011110225692391396, 0.018132474273443222, 0.24468165636062622, + 0.7677361369132996, 0.15634486079216003, 0.06700925529003143, + 0.005546394269913435, 0.16028928756713867, 0.012536106631159782, + 0.061746079474687576, 0.20355451107025146, 0.18416732549667358, + 0.00789673626422882, 0.0408698134124279, 0.30612754821777344, + 0.005618625320494175, 0.037202510982751846, 0.16555893421173096, + 0.03190910816192627, 0.02309403195977211, 0.05651974678039551 + ], + [ + 0.0, 0.0, 0.3361738622188568, 0.0, 0.0, 0.0, 0.0457804873585701, + 0.0020646736957132816, 0.3101629614830017, 0.0, 0.0, 0.5854098200798035, + 0.0, 0.0, 0.0, 0.9136441349983215, 0.003360779257491231, 0.0, + 0.003292675130069256, 0.6426923274993896, 0.0019520169589668512, 1.0, + 0.003429067088291049, 0.18190181255340576, 0.0, 0.027180347591638565, + 0.8034132719039917, 0.0, 0.0, 0.26021265983581543, 0.264374703168869, + 0.0, 0.0, 0.0018434703815728426, 0.0021399983670562506, + 0.24698084592819214, 0.0018900291761383414, 0.2198108732700348, 0.0, + 0.0, 0.0, 0.07867320626974106, 0.002819579094648361, 0.0, + 0.9440886974334717, 0.05805583670735359, 0.0025502622593194246, + 0.043542031198740005, 0.028648316860198975, 0.0 + ], + [ + 0.13461172580718994, 0.09414844214916229, 0.0011114930966868997, + 0.1706179976463318, 0.03823540732264519, 0.025084499269723892, + 0.02246837690472603, 0.10061653703451157, 0.011571562848985195, + 0.43221843242645264, 0.045726701617240906, 0.0003255287301726639, + 0.9999999403953552, 0.0409051887691021, 0.04135489836335182, + 0.024458615109324455, 0.7686107158660889, 0.003292675130069256, 0.0, + 0.0314076691865921, 0.12825703620910645, 0.021831797435879707, + 0.38425761461257935, 0.0037988724652677774, 0.027104821056127548, 0.0, + 0.02837279438972473, 0.18888960778713226, 0.6304999589920044, + 0.0101254777982831, 0.01791544258594513, 1.0, 0.2194073647260666, + 0.3258900046348572, 0.039697710424661636, 0.0045963795855641365, + 0.14142391085624695, 0.011507217772305012, 0.03843465819954872, + 0.9538021087646484, 0.10201815515756607, 0.0045476327650249004, + 0.030116820707917213, 0.6097808480262756, 0.006461720913648605, 0.0, + 0.13502028584480286, 0.029806839302182198, 0.02286849357187748, + 0.03842863440513611 + ], + [ + 0.0, 0.0, 0.19871141016483307, 0.0, 0.0, 0.0, 0.333970308303833, 0.0, + 0.17717592418193817, 0.0, 0.0, 0.42407965660095215, 0.0, + 0.032137431204319, 0.0, 0.4607428312301636, 0.025339171290397644, + 0.6426923274993896, 0.0314076691865921, 0.0, 0.023953653872013092, + 0.44148194789886475, 0.027991315349936485, 0.8386093378067017, + 0.08093611896038055, 0.11480379849672318, 0.281438410282135, 0.0, 0.0, + 0.20454178750514984, 0.19678211212158203, 0.0, 0.0, 0.0, + 0.024157393723726273, 0.3227478861808777, 0.0, 0.19733501970767975, 0.0, + 0.0, 0.0, 0.05579771101474762, 0.06657551974058151, 0.0, 1.0, + 0.237458273768425, 0.024214088916778564, 0.21379657089710236, + 0.14356257021427155, 0.027051636949181557 + ], + [ + 0.13305045664310455, 0.11282217502593994, 0.0, 0.1583288013935089, + 0.24071264266967773, 0.058431852608919144, 0.026179783046245575, + 0.3301832675933838, 0.008631397038698196, 0.27443501353263855, + 0.28770631551742554, 0.0002515927772037685, 0.021748866885900497, + 0.08104177564382553, 0.20855392515659332, 0.022157782688736916, + 0.12094179540872574, 0.0019520169589668512, 0.12825703620910645, + 0.023953653872013092, 0.0, 0.017642464488744736, 0.28843024373054504, + 0.0, 0.026062026619911194, 0.023393871262669563, 0.026457123458385468, + 0.19414593279361725, 0.10585758835077286, 0.007639001589268446, + 0.014229166321456432, 0.43926310539245605, 0.10102666169404984, + 0.8343072533607483, 0.5265605449676514, 0.003505046246573329, + 0.9999999403953552, 0.00862357672303915, 0.5232036113739014, + 0.4547661244869232, 0.1780712902545929, 0.0, 0.04952254518866539, + 0.6139813661575317, 0.005390170030295849, 0.0, 0.13974857330322266, + 0.029533609747886658, 0.0, 0.13904020190238953 + ], + [ + 0.0, 0.0, 0.2744344472885132, 0.0, 0.0, 0.0, 0.06637817621231079, 0.0, + 0.327242374420166, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, + 0.01948576606810093, 1.0, 0.021831797435879707, 0.44148194789886475, + 0.017642464488744736, 0.0, 0.022232184186577797, 0.07913821935653687, + 0.0, 0.017548805102705956, 0.8815912008285522, 0.0, 0.0, + 0.33425700664520264, 0.36488616466522217, 0.0, 0.0, + 0.017858082428574562, 0.016639135777950287, 0.20962253212928772, + 0.016527434810996056, 0.24521851539611816, 0.0, 0.0, 0.0, + 0.1277754008769989, 0.01860097236931324, 0.0, 0.9508653283119202, + 0.05897434428334236, 0.017907172441482544, 0.020899055525660515, + 0.017982257530093193, 0.015603624284267426 + ], + [ + 0.4224238991737366, 0.950276255607605, 0.0013901767088100314, + 0.10611136257648468, 0.07662711292505264, 0.04360628500580788, + 0.03063426911830902, 0.2696246802806854, 0.013684969395399094, + 0.14605437219142914, 0.09364563226699829, 0.0005017891526222229, + 0.19493335485458374, 0.05305331200361252, 0.12770827114582062, + 0.025436507537961006, 0.15519048273563385, 0.003429067088291049, + 0.38425761461257935, 0.027991315349936485, 0.28843024373054504, + 0.022232184186577797, 0.0, 0.004032091237604618, 0.028337424620985985, + 0.022889921441674232, 0.029141275212168694, 0.11412938684225082, + 0.10260715335607529, 0.010057398118078709, 0.017292683944106102, 1.0, + 0.09926409274339676, 0.9639091491699219, 0.20971539616584778, + 0.005058689508587122, 0.7271876931190491, 0.012242957949638367, + 0.19087742269039154, 0.533255934715271, 0.7287980318069458, + 0.007016623858362436, 0.044307004660367966, 0.4222305715084076, + 0.006689833011478186, 0.035446230322122574, 0.9592351913452148, + 0.03082340396940708, 0.024830950424075127, 0.059379834681749344 + ], + [ + 0.0, 0.0, 0.5166186094284058, 0.0, 0.0, 0.03232032433152199, + 0.02631346881389618, 0.002754912478849292, 0.21505266427993774, 0.0, + 0.0, 0.040933892130851746, 0.0, 0.006764254067093134, 0.0, + 0.09903780370950699, 0.0043263304978609085, 0.18190181255340576, + 0.0037988724652677774, 0.8386093378067017, 0.0, 0.07913821935653687, + 0.004032091237604618, 0.0, 0.09920913726091385, 0.1841210126876831, + 0.11296870559453964, 0.0, 0.0, 0.2465195506811142, 0.19404253363609314, + 0.0, 0.0, 0.0, 0.002836363622918725, 1.0, 0.0, 0.35164713859558105, 0.0, + 0.0, 0.0, 0.07843656837940216, 0.05851461738348007, 0.0, + 0.1735193133354187, 0.6752961874008179, 0.0, 0.6378917098045349, + 0.4083334803581238, 0.0040233563631772995 + ], + [ + 0.0, 0.0, 0.027838334441184998, 0.0, 0.04638740420341492, + 0.4920710325241089, 0.3087456524372101, 0.027949802577495575, 0.0, + 0.025132959708571434, 0.052209075540304184, 0.0, 0.0, + 0.3984883427619934, 0.035613615065813065, 0.0, 0.029921645298600197, + 0.0, 0.027104821056127548, 0.08093611896038055, 0.026062026619911194, + 0.0, 0.028337424620985985, 0.09920913726091385, 0.0, 0.8115963935852051, + 0.0, 0.028403231874108315, 0.0, 0.022871285676956177, + 0.024015069007873535, 0.0, 0.0, 0.0, 0.03627481684088707, + 0.03040570765733719, 0.030864467844367027, 0.023456059396266937, + 0.035497650504112244, 0.0, 0.0, 0.0, 0.7073832750320435, 0.0, 0.0, + 0.6863921284675598, 0.0, 0.7193300724029541, 1.0, 0.1737273633480072 + ], + [ + 0.0, 0.0, 0.03597136586904526, 0.0, 0.045588478446006775, + 0.5515062212944031, 0.3273099660873413, 0.023101961240172386, + 0.033713698387145996, 0.0, 0.040301352739334106, 0.0003802203282248229, + 0.0, 0.33994174003601074, 0.0, 0.01811281591653824, + 0.023967906832695007, 0.027180347591638565, 0.0, 0.11480379849672318, + 0.023393871262669563, 0.017548805102705956, 0.022889921441674232, + 0.1841210126876831, 0.8115963935852051, 0.0, 0.04795289784669876, + 0.027573149651288986, 0.0, 0.032014455646276474, 0.04452119395136833, + 0.0, 0.0, 0.0, 0.029835939407348633, 0.04007217288017273, + 0.025775473564863205, 0.03885993734002113, 0.025970369577407837, 0.0, + 0.0, 0.004946316592395306, 0.6015356779098511, 0.0, + 0.006870749406516552, 0.9412478804588318, 0.0, 1.0, 0.9965497851371765, + 0.2091461718082428 + ], + [ + 0.0, 0.0, 0.4212188720703125, 0.0, 0.0, 0.0, 0.02462410181760788, 0.0, + 0.38218799233436584, 0.0, 0.0, 0.407289057970047, 0.0, 0.0, 0.0, + 0.9999999403953552, 0.026136118918657303, 0.8034132719039917, + 0.02837279438972473, 0.281438410282135, 0.026457123458385468, + 0.8815912008285522, 0.029141275212168694, 0.11296870559453964, 0.0, + 0.04795289784669876, 0.0, 0.0, 0.0, 0.45618346333503723, + 0.5053949952125549, 0.0, 0.0, 0.026017047464847565, 0.02160637080669403, + 0.22365517914295197, 0.023993801325559616, 0.30109184980392456, 0.0, + 0.0, 0.0, 0.14293354749679565, 0.024977002292871475, 0.0, + 0.4240417778491974, 0.07679212093353271, 0.023974765092134476, + 0.029293635860085487, 0.025011373683810234, 0.0218273364007473 + ], + [ + 0.0696490928530693, 0.05742856487631798, 0.0, 0.39827361702919006, + 0.113612599670887, 0.058931462466716766, 0.021067092195153236, + 0.21311303973197937, 0.0, 0.1623772233724594, 0.18380028009414673, 0.0, + 0.013882743194699287, 0.10290859639644623, 0.098028764128685, 0.0, + 0.9790244102478027, 0.0, 0.18888960778713226, 0.0, 0.19414593279361725, + 0.0, 0.11412938684225082, 0.0, 0.028403231874108315, + 0.027573149651288986, 0.0, 0.0, 1.0, 0.0, 0.0, 0.17324426770210266, + 0.455314576625824, 0.09346240758895874, 0.14650548994541168, 0.0, + 0.2337450534105301, 0.0, 0.09342189133167267, 0.1699618250131607, + 0.05993223190307617, 0.0, 0.06536812335252762, 0.1578044891357422, 0.0, + 0.03346945345401764, 0.05422089993953705, 0.0457657165825367, 0.0, + 0.11507933586835861 + ], + [ + 0.1250809133052826, 0.11190546303987503, 0.0, 0.8524527549743652, + 0.03151281923055649, 0.0, 0.0, 0.0867898166179657, 0.009010442532598972, + 0.34739574790000916, 0.052657585591077805, 0.0, 0.09440797567367554, + 0.03452310338616371, 0.04022706300020218, 0.0, 1.0, 0.0, + 0.6304999589920044, 0.0, 0.10585758835077286, 0.0, 0.10260715335607529, + 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.01233676914125681, 0.017102543264627457, + 0.16361866891384125, 1.0, 0.1474134922027588, 0.038299284875392914, 0.0, + 0.09376923739910126, 0.0, 0.040349844843149185, 0.25762346386909485, + 0.107920341193676, 0.0, 0.005586068611592054, 0.29379019141197205, 0.0, + 0.0, 0.1003364846110344, 0.0, 0.0, 0.009117263369262218 + ], + [ + 0.0192739088088274, 0.0, 0.9762163758277893, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.007161619141697884, 0.0, 0.3686596751213074, 0.0, 0.0, 0.0, + 0.3364032506942749, 0.011110225692391396, 0.26021265983581543, + 0.0101254777982831, 0.20454178750514984, 0.007639001589268446, + 0.33425700664520264, 0.010057398118078709, 0.2465195506811142, + 0.022871285676956177, 0.032014455646276474, 0.45618346333503723, 0.0, + 0.01233676914125681, 0.0, 1.0, 0.0, 0.0, 0.008135747164487839, 0.0, + 0.8674401044845581, 0.007264432497322559, 0.9663582444190979, 0.0, 0.0, + 0.0, 0.657869279384613, 0.006798332557082176, 0.007029087748378515, + 0.20607808232307434, 0.07066492736339569, 0.00777056161314249, + 0.04392407462000847, 0.03735947608947754, 0.0 + ], + [ + 0.0, 0.0, 0.9191384315490723, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.8620946407318115, 0.0, 0.0, 0.46237310767173767, 0.0, 0.0, 0.0, + 0.38044387102127075, 0.018132474273443222, 0.264374703168869, + 0.01791544258594513, 0.19678211212158203, 0.014229166321456432, + 0.36488616466522217, 0.017292683944106102, 0.19404253363609314, + 0.024015069007873535, 0.04452119395136833, 0.5053949952125549, 0.0, + 0.017102543264627457, 1.0, 0.0, 2.379890065640211e-5, 0.0, + 0.013342681340873241, 0.013779213652014732, 0.7612318396568298, + 0.014531761407852173, 0.9605216979980469, 0.0, 3.167202157783322e-5, + 0.0, 0.5703079104423523, 0.013406271114945412, 0.0003362592251505703, + 0.20044924318790436, 0.08151054382324219, 0.013111991807818413, + 0.058599524199962616, 0.045254629105329514, 0.013194072060286999 + ], + [ + 0.27164387702941895, 0.691303014755249, 0.0, 0.1721428483724594, + 0.08458684384822845, 0.029714666306972504, 0.0, 0.2756367027759552, 0.0, + 0.2817477881908417, 0.10422376543283463, 0.0, 0.6454083323478699, + 0.04189267382025719, 0.12807129323482513, 0.0, 0.24468165636062622, 0.0, + 1.0, 0.0, 0.43926310539245605, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, + 0.17324426770210266, 0.16361866891384125, 0.0, 2.379890065640211e-5, + 0.0, 0.17005333304405212, 0.8167363405227661, 0.190364271402359, 0.0, + 0.8183106184005737, 0.0, 0.17133714258670807, 0.9606593251228333, + 0.5482090711593628, 0.0, 0.0243296567350626, 0.9023657441139221, 0.0, + 0.0, 0.39817240834236145, 0.0, 0.0, 0.047776855528354645 + ], + [ + 0.10518433898687363, 0.14400097727775574, 0.007615056820213795, + 0.9999999403953552, 0.02335735596716404, 0.008791615255177021, 0.0, + 0.08130409568548203, 0.0, 0.18091799318790436, 0.05410875752568245, 0.0, + 0.16619834303855896, 0.014725979417562485, 0.039527446031570435, 0.0, + 0.7677361369132996, 0.0, 0.2194073647260666, 0.0, 0.10102666169404984, + 0.0, 0.09926409274339676, 0.0, 0.0, 0.0, 0.0, 0.455314576625824, 1.0, + 0.0, 0.0, 0.17005333304405212, 0.0, 0.13653507828712463, + 0.04831470549106598, 0.0, 0.12230847775936127, 0.0, 0.04295581579208374, + 0.22588089108467102, 0.1436631977558136, 0.0, 0.009671772830188274, + 0.3184412717819214, 0.0, 0.0, 0.08776801824569702, 0.0, 0.0, + 0.016233064234256744 + ], + [ + 0.40147778391838074, 0.6756076812744141, 0.0008669299422763288, + 0.15568609535694122, 0.06234703212976456, 0.03312448039650917, 0.0, + 0.1932944655418396, 0.009353365749120712, 0.26785144209861755, + 0.07855921238660812, 0.00026970249018631876, 0.2049131989479065, + 0.03919738903641701, 0.07390271872282028, 0.021846020594239235, + 0.15634486079216003, 0.0018434703815728426, 0.3258900046348572, 0.0, + 0.8343072533607483, 0.017858082428574562, 0.9639091491699219, 0.0, 0.0, + 0.0, 0.026017047464847565, 0.09346240758895874, 0.1474134922027588, + 0.008135747164487839, 0.013342681340873241, 0.8167363405227661, + 0.13653507828712463, 0.0, 0.11782168596982956, 0.0, 0.6364341974258423, + 0.009029737673699856, 0.16242967545986176, 0.8771018981933594, + 0.6070592403411865, 0.004752704408019781, 0.029237717390060425, 1.0, + 0.004510210361331701, 0.0, 0.5665290355682373, 0.0, 0.0, + 0.04477500915527344 + ], + [ + 0.07391510903835297, 0.04785221070051193, 0.0008676896686665714, + 0.08831405639648438, 0.7817089557647705, 0.11475569754838943, + 0.07365186512470245, 1.0, 0.0, 0.21989521384239197, 0.8616095781326294, + 0.0002485554141458124, 0.019554132595658302, 0.15871167182922363, + 0.7954800724983215, 0.018132604658603668, 0.06700925529003143, + 0.0021399983670562506, 0.039697710424661636, 0.024157393723726273, + 0.5265605449676514, 0.016639135777950287, 0.20971539616584778, + 0.002836363622918725, 0.03627481684088707, 0.029835939407348633, + 0.02160637080669403, 0.14650548994541168, 0.038299284875392914, 0.0, + 0.013779213652014732, 0.190364271402359, 0.04831470549106598, + 0.11782168596982956, 0.0, 0.004057795740664005, 0.9999999403953552, + 0.008213679306209087, 1.0, 0.15253600478172302, 0.09010358154773712, + 0.005114250350743532, 0.09395012259483337, 0.10350890457630157, + 0.004902760032564402, 0.03606989607214928, 0.09596190601587296, + 0.03628887981176376, 0.029527584090828896, 0.3371051549911499 + ], + [ + 0.0, 0.0, 0.7748616933822632, 0.0, 0.0, 0.0, 0.0, 0.0035921118687838316, + 0.7836110591888428, 0.0, 0.0, 0.26648256182670593, 0.0, + 0.0038772523403167725, 0.0, 0.1971767395734787, 0.005546394269913435, + 0.24698084592819214, 0.0045963795855641365, 0.3227478861808777, + 0.003505046246573329, 0.20962253212928772, 0.005058689508587122, 1.0, + 0.03040570765733719, 0.04007217288017273, 0.22365517914295197, 0.0, 0.0, + 0.8674401044845581, 0.7612318396568298, 0.0, 0.0, 0.0, + 0.004057795740664005, 0.0, 0.0038076317869126797, 0.9999999403953552, + 0.0, 0.0, 0.0, 0.5843493938446045, 0.005775615572929382, 0.0, + 0.1984545886516571, 0.12134084105491638, 0.00362184620462358, + 0.07040560245513916, 0.05031108483672142, 0.0036929864436388016 + ], + [ + 0.13692565262317657, 0.1498233526945114, 0.0008144627790898085, + 0.1742258220911026, 0.2690531611442566, 0.06945106387138367, + 0.02923324517905712, 0.7170088291168213, 0.009202995337545872, + 0.2852286994457245, 0.37605226039886475, 0.0, 0.04141460359096527, + 0.09151951223611832, 0.2564210593700409, 0.019028203561902046, + 0.16028928756713867, 0.0018900291761383414, 0.14142391085624695, 0.0, + 0.9999999403953552, 0.016527434810996056, 0.7271876931190491, 0.0, + 0.030864467844367027, 0.025775473564863205, 0.023993801325559616, + 0.2337450534105301, 0.09376923739910126, 0.007264432497322559, + 0.014531761407852173, 0.8183106184005737, 0.12230847775936127, + 0.6364341974258423, 0.9999999403953552, 0.0038076317869126797, 0.0, + 0.009321371093392372, 0.5141443014144897, 0.6170448064804077, + 0.18687470257282257, 0.005085283424705267, 0.055870067328214645, + 0.5638471841812134, 0.0, 0.03351558372378349, 0.14341305196285248, + 0.031981851905584335, 0.024478532373905182, 0.1393403261899948 + ], + [ + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.00807748269289732, 1.0, 0.0, 0.0, + 0.336405873298645, 0.0, 0.0, 0.0, 0.24177852272987366, + 0.012536106631159782, 0.2198108732700348, 0.011507217772305012, + 0.19733501970767975, 0.00862357672303915, 0.24521851539611816, + 0.012242957949638367, 0.35164713859558105, 0.023456059396266937, + 0.03885993734002113, 0.30109184980392456, 0.0, 0.0, 0.9663582444190979, + 0.9605216979980469, 0.0, 0.0, 0.009029737673699856, + 0.008213679306209087, 0.9999999403953552, 0.009321371093392372, 0.0, + 0.0, 0.0, 0.0, 0.8406904935836792, 0.008191139437258244, + 0.00814526155591011, 0.14778022468090057, 0.0862221047282219, + 0.00970829464495182, 0.05386315658688545, 0.04216396063566208, 0.0 + ], + [ + 0.07955716550350189, 0.048246584832668304, 0.0008071537595242262, + 0.0773845911026001, 0.704796314239502, 0.10135676711797714, + 0.05201870575547218, 0.9622586369514465, 0.0, 0.7357642650604248, + 0.7772741317749023, 0.0, 0.023014266043901443, 0.1897324174642563, 1.0, + 0.0, 0.061746079474687576, 0.0, 0.03843465819954872, 0.0, + 0.5232036113739014, 0.0, 0.19087742269039154, 0.0, 0.035497650504112244, + 0.025970369577407837, 0.0, 0.09342189133167267, 0.040349844843149185, + 0.0, 0.0, 0.17133714258670807, 0.04295581579208374, 0.16242967545986176, + 1.0, 0.0, 0.5141443014144897, 0.0, 0.0, 0.1780257672071457, + 0.08754853159189224, 0.004620734602212906, 0.09238678216934204, + 0.09564878791570663, 0.004139924421906471, 0.0, 0.11009720712900162, + 0.0, 0.027267204597592354, 0.29461610317230225 + ], + [ + 0.1501704603433609, 0.5840916633605957, 0.0, 0.3277891278266907, + 0.076539047062397, 0.027746709063649178, 0.0, 0.33757907152175903, 0.0, + 0.4675121307373047, 0.08022359013557434, 0.0, 0.2319379448890686, + 0.039042893797159195, 0.18850556015968323, 0.0, 0.20355451107025146, + 0.0, 0.9538021087646484, 0.0, 0.4547661244869232, 0.0, + 0.533255934715271, 0.0, 0.0, 0.0, 0.0, 0.1699618250131607, + 0.25762346386909485, 0.0, 3.167202157783322e-5, 0.9606593251228333, + 0.22588089108467102, 0.8771018981933594, 0.15253600478172302, 0.0, + 0.6170448064804077, 0.0, 0.1780257672071457, 0.0, 0.18948480486869812, + 0.0, 0.02903648465871811, 0.9999999403953552, 0.0, 0.0, + 0.15456144511699677, 0.0, 0.0, 0.038181763142347336 + ], + [ + 0.8565076589584351, 1.0, 0.0, 0.11982973664999008, 0.0484955795109272, + 0.03647652268409729, 0.003110521240159869, 0.09257740527391434, 0.0, + 0.07128997147083282, 0.07204894721508026, 0.0, 0.8003380298614502, + 0.03776524215936661, 0.05660754442214966, 0.0, 0.18416732549667358, 0.0, + 0.10201815515756607, 0.0, 0.1780712902545929, 0.0, 0.7287980318069458, + 0.0, 0.0, 0.0, 0.0, 0.05993223190307617, 0.107920341193676, 0.0, 0.0, + 0.5482090711593628, 0.1436631977558136, 0.6070592403411865, + 0.09010358154773712, 0.0, 0.18687470257282257, 0.0, 0.08754853159189224, + 0.18948480486869812, 0.0, 0.0, 0.029403293505311012, 0.4521349370479584, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.04123494774103165 + ], + [ + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.005355460569262505, + 0.9291825890541077, 0.005847027525305748, 0.0, 0.14340800046920776, 0.0, + 0.0, 0.0, 0.09796875715255737, 0.00789673626422882, 0.07867320626974106, + 0.0045476327650249004, 0.05579771101474762, 0.0, 0.1277754008769989, + 0.007016623858362436, 0.07843656837940216, 0.0, 0.004946316592395306, + 0.14293354749679565, 0.0, 0.0, 0.657869279384613, 0.5703079104423523, + 0.0, 0.0, 0.004752704408019781, 0.005114250350743532, + 0.5843493938446045, 0.005085283424705267, 0.8406904935836792, + 0.004620734602212906, 0.0, 0.0, 0.0, 0.004773128777742386, 0.0, + 0.06644684821367264, 0.011915184557437897, 0.004973581526428461, + 0.0059655578806996346, 0.006635167635977268, 0.0 + ], + [ + 0.02154350094497204, 0.0001485092652728781, 0.0010200436227023602, + 0.013264521956443787, 0.1659770905971527, 1.0, 1.0, 0.066103994846344, + 0.010312903672456741, 0.033431246876716614, 0.17131352424621582, + 0.000314558477839455, 0.0004200837865937501, 0.8914220333099365, + 0.10176081955432892, 0.018678966909646988, 0.0408698134124279, + 0.002819579094648361, 0.030116820707917213, 0.06657551974058151, + 0.04952254518866539, 0.01860097236931324, 0.044307004660367966, + 0.05851461738348007, 0.7073832750320435, 0.6015356779098511, + 0.024977002292871475, 0.06536812335252762, 0.005586068611592054, + 0.006798332557082176, 0.013406271114945412, 0.0243296567350626, + 0.009671772830188274, 0.029237717390060425, 0.09395012259483337, + 0.005775615572929382, 0.055870067328214645, 0.008191139437258244, + 0.09238678216934204, 0.02903648465871811, 0.029403293505311012, + 0.004773128777742386, 0.0, 0.0004901698557659984, 0.005690358579158783, + 0.41151857376098633, 0.03192581608891487, 0.45493635535240173, + 0.6619638204574585, 0.6579302549362183 + ], + [ + 0.28219398856163025, 0.9153958559036255, 0.0, 0.3397292494773865, + 0.04965481162071228, 0.021819068118929863, 0.0, 0.15594084560871124, + 0.0, 0.2732725441455841, 0.06665335595607758, 0.0, 0.20271189510822296, + 0.028171537443995476, 0.048158787190914154, 0.016091836616396904, + 0.30612754821777344, 0.0, 0.6097808480262756, 0.0, 0.6139813661575317, + 0.0, 0.4222305715084076, 0.0, 0.0, 0.0, 0.0, 0.1578044891357422, + 0.29379019141197205, 0.007029087748378515, 0.0003362592251505703, + 0.9023657441139221, 0.3184412717819214, 1.0, 0.10350890457630157, 0.0, + 0.5638471841812134, 0.00814526155591011, 0.09564878791570663, + 0.9999999403953552, 0.4521349370479584, 0.0, 0.0004901698557659984, 0.0, + 0.0, 0.0, 0.27164408564567566, 0.0, 0.0, 0.029767531901597977 + ], + [ + 0.0, 0.0, 0.17301350831985474, 0.0, 0.0, 0.0, 0.1659342348575592, 0.0, + 0.17271645367145538, 0.0, 0.0, 0.7833172082901001, 0.0, + 0.004397126380354166, 0.0, 0.8513591289520264, 0.005618625320494175, + 0.9440886974334717, 0.006461720913648605, 1.0, 0.005390170030295849, + 0.9508653283119202, 0.006689833011478186, 0.1735193133354187, 0.0, + 0.006870749406516552, 0.4240417778491974, 0.0, 0.0, 0.20607808232307434, + 0.20044924318790436, 0.0, 0.0, 0.004510210361331701, + 0.004902760032564402, 0.1984545886516571, 0.0, 0.14778022468090057, + 0.004139924421906471, 0.0, 0.0, 0.06644684821367264, + 0.005690358579158783, 0.0, 0.0, 0.06010720506310463, + 0.004919949918985367, 0.04760678857564926, 0.03142477944493294, 0.0 + ], + [ + 0.0, 0.0, 0.085923932492733, 0.0, 0.0, 0.3031584322452545, + 0.20590448379516602, 0.0, 0.07226001471281052, 0.0, 0.0418170690536499, + 0.03983791172504425, 0.0, 0.19194725155830383, 0.0, 0.06915067881345749, + 0.037202510982751846, 0.05805583670735359, 0.0, 0.237458273768425, 0.0, + 0.05897434428334236, 0.035446230322122574, 0.6752961874008179, + 0.6863921284675598, 0.9412478804588318, 0.07679212093353271, + 0.03346945345401764, 0.0, 0.07066492736339569, 0.08151054382324219, 0.0, + 0.0, 0.0, 0.03606989607214928, 0.12134084105491638, 0.03351558372378349, + 0.0862221047282219, 0.0, 0.0, 0.0, 0.011915184557437897, + 0.41151857376098633, 0.0, 0.06010720506310463, 0.0, 0.0, 1.0, + 0.9429519772529602, 0.12264235317707062 + ], + [ + 1.0, 0.6405394077301025, 0.007301213685423136, 0.06666328012943268, + 0.047023069113492966, 0.03260508552193642, 0.0, 0.11135908216238022, + 0.010586130432784557, 0.090263731777668, 0.06583472341299057, + 0.00028060670592822134, 0.49423134326934814, 0.03853074833750725, + 0.07013309001922607, 0.019866399466991425, 0.16555893421173096, + 0.0025502622593194246, 0.13502028584480286, 0.024214088916778564, + 0.13974857330322266, 0.017907172441482544, 0.9592351913452148, 0.0, 0.0, + 0.0, 0.023974765092134476, 0.05422089993953705, 0.1003364846110344, + 0.00777056161314249, 0.013111991807818413, 0.39817240834236145, + 0.08776801824569702, 0.5665290355682373, 0.09596190601587296, + 0.00362184620462358, 0.14341305196285248, 0.00970829464495182, + 0.11009720712900162, 0.15456144511699677, 1.0, 0.004973581526428461, + 0.03192581608891487, 0.27164408564567566, 0.004919949918985367, 0.0, + 0.0, 0.0, 0.0, 0.04347265884280205 + ], + [ + 0.0, 0.0, 0.04893966019153595, 0.0, 0.03285081684589386, + 0.3284582197666168, 0.3303644359111786, 0.0, 0.04376600682735443, 0.0, + 0.04025186225771904, 0.0008663319749757648, 0.0, 0.21852606534957886, + 0.0, 0.05231562256813049, 0.03190910816192627, 0.043542031198740005, + 0.029806839302182198, 0.21379657089710236, 0.029533609747886658, + 0.020899055525660515, 0.03082340396940708, 0.6378917098045349, + 0.7193300724029541, 1.0, 0.029293635860085487, 0.0457657165825367, 0.0, + 0.04392407462000847, 0.058599524199962616, 0.0, 0.0, 0.0, + 0.03628887981176376, 0.07040560245513916, 0.031981851905584335, + 0.05386315658688545, 0.0, 0.0, 0.0, 0.0059655578806996346, + 0.45493635535240173, 0.0, 0.04760678857564926, 1.0, 0.0, 0.0, 1.0, + 0.13758297264575958 + ], + [ + 0.0, 0.0, 0.04040396213531494, 0.0, 0.039645105600357056, + 0.42834964394569397, 0.3060571253299713, 0.024938272312283516, + 0.0392041839659214, 0.0, 0.036287419497966766, 0.00047646465827710927, + 0.0, 0.28658416867256165, 0.024573342874646187, 0.01757194846868515, + 0.02309403195977211, 0.028648316860198975, 0.02286849357187748, + 0.14356257021427155, 0.0, 0.017982257530093193, 0.024830950424075127, + 0.4083334803581238, 1.0, 0.9965497851371765, 0.025011373683810234, 0.0, + 0.0, 0.03735947608947754, 0.045254629105329514, 0.0, 0.0, 0.0, + 0.029527584090828896, 0.05031108483672142, 0.024478532373905182, + 0.04216396063566208, 0.027267204597592354, 0.0, 0.0, + 0.006635167635977268, 0.6619638204574585, 0.0, 0.03142477944493294, + 0.9429519772529602, 0.0, 1.0, 0.0, 0.14623045921325684 + ], + [ + 0.02845108136534691, 0.01879383996129036, 0.0, 0.02377162128686905, + 0.7616464495658875, 0.8569005727767944, 0.4587562084197998, + 0.20076096057891846, 0.0, 0.07139129936695099, 0.7159180641174316, 0.0, + 0.0016730604693293571, 1.0, 0.27843064069747925, 0.0, + 0.05651974678039551, 0.0, 0.03842863440513611, 0.027051636949181557, + 0.13904020190238953, 0.015603624284267426, 0.059379834681749344, + 0.0040233563631772995, 0.1737273633480072, 0.2091461718082428, + 0.0218273364007473, 0.11507933586835861, 0.009117263369262218, 0.0, + 0.013194072060286999, 0.047776855528354645, 0.016233064234256744, + 0.04477500915527344, 0.3371051549911499, 0.0036929864436388016, + 0.1393403261899948, 0.0, 0.29461610317230225, 0.038181763142347336, + 0.04123494774103165, 0.0, 0.6579302549362183, 0.029767531901597977, 0.0, + 0.12264235317707062, 0.04347265884280205, 0.13758297264575958, + 0.14623045921325684, 0.0 + ] + ], + "distances": [ + [ + 0.0, 11.841742515563965, 0.0, 25.575754165649414, 26.5922794342041, 0.0, + 0.0, 21.584726333618164, 0.0, 21.522159576416016, 24.50599479675293, + 0.0, 19.954078674316406, 27.668638229370117, 23.83770751953125, + 28.705495834350586, 18.19253921508789, 0.0, 18.272863388061523, 0.0, + 18.86969757080078, 0.0, 12.387910842895508, 0.0, 0.0, 0.0, 0.0, + 23.632966995239258, 20.376466751098633, 28.639057159423828, 0.0, + 14.77270793914795, 22.8934268951416, 12.933866500854492, + 21.713876724243164, 0.0, 18.14444351196289, 0.0, 21.577136993408203, + 17.818788528442383, 9.174179077148438, 0.0, 28.039947509765625, + 14.964703559875488, 0.0, 0.0, 7.386411190032959, 0.0, 0.0, + 26.543210983276367 + ], + [ + 11.841742515563965, 0.0, 0.0, 18.39360809326172, 22.41675567626953, + 27.905797958374023, 29.789812088012695, 15.86705493927002, 0.0, + 16.87361717224121, 20.320819854736328, 0.0, 17.48895263671875, + 26.41022300720215, 19.145023345947266, 0.0, 16.68304443359375, 0.0, + 15.184922218322754, 0.0, 14.965434074401855, 0.0, 8.362726211547852, + 0.0, 0.0, 0.0, 0.0, 20.943073272705078, 17.25257110595703, 0.0, 0.0, + 9.512584686279297, 18.512401580810547, 9.532123565673828, + 16.45428466796875, 0.0, 12.801383018493652, 0.0, 17.155576705932617, + 10.312067031860352, 8.066375732421875, 0.0, 26.842615127563477, + 8.581048011779785, 0.0, 0.0, 10.049700736999512, 0.0, 0.0, + 24.944826126098633 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.272077560424805, + 8.959126472473145, 26.92724609375, 0.0, 15.520157814025879, 0.0, 0.0, + 0.0, 14.904732704162598, 25.456741333007812, 14.332350730895996, + 26.567462921142578, 18.94173240661621, 0.0, 15.45830249786377, + 25.991025924682617, 15.880537033081055, 0.0, 25.553319931030273, + 13.671289443969727, 0.0, 0.0, 8.791681289672852, 9.178433418273926, 0.0, + 0.0, 27.222187042236328, 27.219879150390625, 11.020044326782227, + 27.386669158935547, 8.646172523498535, 27.410419464111328, 0.0, 0.0, + 12.937019348144531, 26.793676376342773, 0.0, 17.111501693725586, + 22.48028564453125, 26.80698585510254, 24.585256576538086, + 24.925153732299805, 0.0 + ], + [ + 25.575754165649414, 18.39360809326172, 0.0, 0.0, 23.93433380126953, + 30.423381805419922, 33.81314468383789, 19.774263381958008, 0.0, + 16.873737335205078, 21.371620178222656, 0.0, 23.651315689086914, + 27.84285545349121, 22.48917579650879, 0.0, 16.886281967163086, 0.0, + 18.377145767211914, 0.0, 19.06535530090332, 0.0, 20.5152587890625, 0.0, + 0.0, 0.0, 0.0, 16.94776725769043, 11.832130432128906, 0.0, 0.0, + 18.366050720214844, 10.193150520324707, 18.850852966308594, + 21.577425003051758, 0.0, 18.260656356811523, 0.0, 22.344873428344727, + 15.555337905883789, 20.862171173095703, 0.0, 30.06561851501465, + 15.541553497314453, 0.0, 0.0, 23.646543502807617, 0.0, 0.0, + 27.383569717407227 + ], + [ + 0.0, 22.41675567626953, 0.0, 23.93433380126953, 0.0, 17.14774513244629, + 23.339906692504883, 11.439709663391113, 0.0, 16.16867446899414, + 6.3137383460998535, 0.0, 25.90582275390625, 13.001898765563965, + 8.847344398498535, 0.0, 22.10747528076172, 0.0, 20.81744384765625, 0.0, + 14.416056632995605, 0.0, 17.785186767578125, 0.0, 0.0, + 25.71173858642578, 0.0, 20.147430419921875, 23.998018264770508, 0.0, + 0.0, 17.55746078491211, 0.0, 18.90981101989746, 8.653603553771973, 0.0, + 12.779629707336426, 0.0, 9.367767333984375, 18.073688507080078, + 21.82021713256836, 0.0, 18.508312225341797, 20.21580696105957, 0.0, 0.0, + 22.206838607788086, 0.0, 26.42830467224121, 9.929121971130371 + ], + [ + 0.0, 0.0, 0.0, 0.0, 17.14774513244629, 0.0, 20.663755416870117, + 21.28659439086914, 0.0, 24.661928176879883, 16.75774383544922, 0.0, 0.0, + 9.386866569519043, 20.43825340270996, 0.0, 25.75457191467285, 0.0, + 26.65032196044922, 0.0, 22.730609893798828, 0.0, 23.890247344970703, + 26.209836959838867, 15.846673965454102, 13.631954193115234, 0.0, + 24.1484375, 0.0, 0.0, 0.0, 25.81674575805664, 0.0, 25.29048728942871, + 19.454357147216797, 0.0, 21.575023651123047, 0.0, 20.288042068481445, + 26.163005828857422, 25.767574310302734, 0.0, 8.234492301940918, + 27.43256378173828, 0.0, 17.711267471313477, 26.479703903198242, + 16.807392120361328, 15.045551300048828, 10.129721641540527 + ], + [ + 0.0, 0.0, 0.0, 0.0, 23.339906692504883, 20.663755416870117, 0.0, + 25.41443634033203, 0.0, 27.544477462768555, 23.533872604370117, + 27.248645782470703, 0.0, 18.16692543029785, 25.01340675354004, + 25.46689224243164, 27.350263595581055, 25.50476837158203, + 26.76401710510254, 21.2636661529541, 26.48537826538086, + 25.867658615112305, 26.049842834472656, 26.766658782958984, + 21.670045852661133, 21.046499252319336, 0.0, 26.912368774414062, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 24.084848403930664, 0.0, 26.158565521240234, + 0.0, 24.95769500732422, 0.0, 0.0, 0.0, 18.01994514465332, 0.0, + 22.570119857788086, 22.5948429107666, 0.0, 21.061100006103516, + 21.21843719482422, 19.986597061157227 + ], + [ + 21.584726333618164, 15.86705493927002, 0.0, 19.774263381958008, + 11.439709663391113, 21.28659439086914, 25.41443634033203, 0.0, 0.0, + 11.398085594177246, 10.338313102722168, 0.0, 21.070642471313477, + 18.308788299560547, 10.306557655334473, 0.0, 17.908573150634766, 0.0, + 15.513333320617676, 0.0, 12.511063575744629, 0.0, 11.695963859558105, + 0.0, 0.0, 0.0, 0.0, 17.393728256225586, 18.585079193115234, 0.0, 0.0, + 12.000619888305664, 21.340362548828125, 13.03998851776123, + 7.081986427307129, 0.0, 9.188315391540527, 0.0, 7.527616024017334, + 11.808168411254883, 17.237722396850586, 0.0, 21.405078887939453, + 14.14988899230957, 0.0, 0.0, 16.80801010131836, 0.0, 0.0, + 15.688509941101074 + ], + [ + 0.0, 0.0, 8.959126472473145, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 29.015464782714844, 0.0, 15.3131742477417, 0.0, 29.265594482421875, 0.0, + 15.74586296081543, 26.92299461364746, 15.27924633026123, + 27.763811111450195, 20.627246856689453, 29.178604125976562, + 15.535255432128906, 26.9542179107666, 18.55300521850586, 0.0, + 27.81391716003418, 14.888333320617676, 0.0, 28.971181869506836, + 6.242516040802002, 8.540630340576172, 0.0, 0.0, 28.790910720825195, 0.0, + 10.86579418182373, 28.869129180908203, 6.444328308105469, 0.0, 0.0, 0.0, + 13.290156364440918, 28.319580078125, 0.0, 18.338748931884766, + 25.029436111450195, 28.193378448486328, 27.002717971801758, + 27.04414176940918, 0.0 + ], + [ + 21.522159576416016, 16.87361717224121, 26.92724609375, + 16.873737335205078, 16.16867446899414, 24.661928176879883, 0.0, + 11.398085594177246, 0.0, 0.0, 14.077274322509766, 0.0, + 18.328866958618164, 20.175033569335938, 13.471602439880371, 0.0, + 14.571131706237793, 0.0, 13.80231761932373, 0.0, 14.23182201385498, 0.0, + 14.800655364990234, 0.0, 0.0, 0.0, 0.0, 18.129140853881836, + 14.557238578796387, 0.0, 0.0, 13.770587921142578, 17.808635711669922, + 13.891715049743652, 14.43429183959961, 0.0, 13.67565631866455, 0.0, + 12.059660911560059, 12.917444229125977, 17.970678329467773, 0.0, + 24.06703758239746, 14.021885871887207, 0.0, 0.0, 17.508007049560547, + 0.0, 0.0, 19.55390167236328 + ], + [ + 24.50599479675293, 20.320819854736328, 0.0, 21.371620178222656, + 6.3137383460998535, 16.75774383544922, 23.533872604370117, + 10.338313102722168, 0.0, 14.077274322509766, 0.0, 0.0, + 24.36695671081543, 13.255620956420898, 10.698432922363281, 0.0, + 19.828022003173828, 0.0, 18.82060432434082, 0.0, 13.405244827270508, + 0.0, 15.990229606628418, 0.0, 0.0, 0.0, 0.0, 18.24299430847168, + 21.30812644958496, 0.0, 0.0, 15.89069938659668, 23.856534957885742, + 17.02583122253418, 7.983645439147949, 0.0, 11.272122383117676, 0.0, + 8.697026252746582, 16.992618560791016, 19.394973754882812, 0.0, + 17.944425582885742, 18.1063289642334, 0.0, 0.0, 20.014461517333984, 0.0, + 0.0, 10.178216934204102 + ], + [ + 0.0, 0.0, 15.520157814025879, 0.0, 0.0, 0.0, 27.248645782470703, + 30.77423667907715, 15.3131742477417, 0.0, 0.0, 0.0, 0.0, + 31.172224044799805, 0.0, 13.151090621948242, 30.388940811157227, + 14.32891845703125, 30.328371047973633, 16.32915496826172, + 30.89883804321289, 12.548066139221191, 29.370214462280273, + 22.265287399291992, 0.0, 29.984500885009766, 15.73303508758545, 0.0, + 0.0, 15.36815357208252, 14.874740600585938, 0.0, 0.0, 30.74493408203125, + 30.92573356628418, 16.594627380371094, 0.0, 15.717658996582031, 0.0, + 0.0, 0.0, 20.651256561279297, 30.404273986816406, 0.0, + 13.480658531188965, 26.950096130371094, 30.657175064086914, + 28.161054611206055, 29.484880447387695, 0.0 + ], + [ + 19.954078674316406, 17.48895263671875, 31.090856552124023, + 23.651315689086914, 25.90582275390625, 29.266019821166992, 0.0, + 21.070642471313477, 0.0, 18.328866958618164, 24.36695671081543, 0.0, + 0.0, 27.562847137451172, 22.63819122314453, 0.0, 17.878503799438477, + 0.0, 15.578065872192383, 0.0, 22.62809181213379, 0.0, + 18.453950881958008, 0.0, 0.0, 0.0, 0.0, 25.688474655151367, + 20.534679412841797, 0.0, 0.0, 16.356908798217773, 20.086559295654297, + 18.396076202392578, 22.773439407348633, 0.0, 21.176088333129883, 0.0, + 22.715187072753906, 18.17814064025879, 16.00956916809082, 0.0, + 29.222082138061523, 18.469263076782227, 0.0, 0.0, 16.96192169189453, + 0.0, 0.0, 26.796964645385742 + ], + [ + 0.0, 0.0, 0.0, 0.0, 13.001898765563965, 9.386866569519043, + 18.16692543029785, 18.308788299560547, 0.0, 20.175033569335938, + 13.255620956420898, 0.0, 0.0, 0.0, 16.40083122253418, 0.0, + 22.64487648010254, 0.0, 23.064775466918945, 0.0, 20.293790817260742, + 0.0, 21.804471969604492, 0.0, 16.85399627685547, 16.073898315429688, + 0.0, 21.365276336669922, 25.300935745239258, 0.0, 0.0, + 22.98442268371582, 0.0, 23.33116912841797, 17.104536056518555, 0.0, + 19.18198585510254, 0.0, 16.585237503051758, 23.339204788208008, + 24.711483001708984, 0.0, 9.803439140319824, 25.04384422302246, 0.0, + 19.943622589111328, 24.820878982543945, 18.670167922973633, + 16.89549446105957, 7.489864349365234 + ], + [ + 23.83770751953125, 19.145023345947266, 0.0, 22.48917579650879, + 8.847344398498535, 20.43825340270996, 25.01340675354004, + 10.306557655334473, 0.0, 13.471602439880371, 10.698432922363281, 0.0, + 22.63819122314453, 16.40083122253418, 0.0, 0.0, 20.355680465698242, 0.0, + 18.317644119262695, 0.0, 14.550969123840332, 0.0, 14.820643424987793, + 0.0, 0.0, 0.0, 0.0, 19.977676391601562, 21.604494094848633, 0.0, 0.0, + 15.085597038269043, 24.718629837036133, 16.79316520690918, + 9.392834663391113, 0.0, 12.88611888885498, 0.0, 8.194633483886719, + 14.171202659606934, 19.69568634033203, 0.0, 19.918331146240234, + 18.532695770263672, 0.0, 0.0, 19.1842041015625, 0.0, 0.0, + 14.902077674865723 + ], + [ + 0.0, 0.0, 14.904732704162598, 0.0, 0.0, 0.0, 25.46689224243164, 0.0, + 15.74586296081543, 0.0, 0.0, 13.151090621948242, 0.0, 0.0, 0.0, 0.0, + 27.515544891357422, 10.534361839294434, 26.4630126953125, + 15.649879455566406, 26.987916946411133, 6.747211456298828, + 26.254722595214844, 21.541873931884766, 0.0, 28.058879852294922, + 7.198251247406006, 0.0, 0.0, 14.684475898742676, 14.43342399597168, 0.0, + 0.0, 27.083703994750977, 28.053075790405273, 17.933591842651367, + 27.79692840576172, 16.678321838378906, 0.0, 0.0, 0.0, 23.39799690246582, + 27.895349502563477, 28.687461853027344, 10.971292495727539, + 26.11214256286621, 27.56789207458496, 26.974319458007812, + 28.219951629638672, 0.0 + ], + [ + 18.19253921508789, 16.68304443359375, 25.456741333007812, + 16.886281967163086, 22.10747528076172, 25.75457191467285, 0.0, + 17.908573150634766, 0.0, 14.571131706237793, 19.828022003173828, 0.0, + 17.878503799438477, 22.64487648010254, 20.355680465698242, 0.0, 0.0, + 0.0, 12.92024040222168, 0.0, 17.70273208618164, 0.0, 16.242393493652344, + 0.0, 0.0, 0.0, 0.0, 12.644262313842773, 10.082358360290527, 0.0, 0.0, + 14.926234245300293, 12.367650985717773, 16.400760650634766, + 19.418668746948242, 0.0, 16.169036865234375, 0.0, 19.993009567260742, + 15.6044282913208, 16.873130798339844, 0.0, 24.58400535583496, + 14.46839427947998, 0.0, 0.0, 17.388660430908203, 0.0, 0.0, + 22.319358825683594 + ], + [ + 0.0, 0.0, 14.332350730895996, 0.0, 0.0, 0.0, 25.50476837158203, + 29.47075653076172, 15.27924633026123, 0.0, 0.0, 14.32891845703125, 0.0, + 0.0, 0.0, 10.534361839294434, 27.932390213012695, 0.0, + 27.997034072875977, 13.686853408813477, 29.647924423217773, + 9.948234558105469, 27.86887550354004, 18.85483169555664, 0.0, + 27.583091735839844, 11.429817199707031, 0.0, 0.0, 15.661386489868164, + 16.001007080078125, 0.0, 0.0, 29.82857894897461, 29.35761260986328, + 16.378297805786133, 29.74982261657715, 16.49815559387207, 0.0, 0.0, 0.0, + 22.990482330322266, 28.486812591552734, 0.0, 10.800091743469238, + 25.290096282958984, 28.803804397583008, 25.869556427001953, + 27.350364685058594, 0.0 + ], + [ + 18.272863388061523, 15.184922218322754, 0.0, 18.377145767211914, + 20.81744384765625, 0.0, 0.0, 15.513333320617676, 0.0, 13.80231761932373, + 18.82060432434082, 0.0, 15.578065872192383, 23.064775466918945, + 18.317644119262695, 0.0, 12.92024040222168, 0.0, 0.0, 0.0, + 15.16944408416748, 0.0, 13.402227401733398, 0.0, 0.0, 0.0, 0.0, + 17.448537826538086, 13.21926212310791, 26.271039962768555, + 25.931936264038086, 12.416778564453125, 16.643022537231445, + 13.639602661132812, 16.683427810668945, 0.0, 14.458999633789062, 0.0, + 17.398866653442383, 12.469990730285645, 16.154481887817383, 0.0, + 24.467233657836914, 12.985950469970703, 0.0, 0.0, 15.653338432312012, + 0.0, 0.0, 21.743715286254883 + ], + [ + 0.0, 0.0, 18.94173240661621, 0.0, 0.0, 0.0, 21.2636661529541, 0.0, + 20.627246856689453, 0.0, 0.0, 16.32915496826172, 0.0, 28.25935935974121, + 0.0, 15.649879455566406, 29.535327911376953, 13.686853408813477, + 28.382671356201172, 0.0, 29.83721160888672, 16.110986709594727, + 29.00091552734375, 14.923872947692871, 27.694480895996094, + 23.951223373413086, 19.03630828857422, 0.0, 0.0, 19.49253273010254, + 20.119897842407227, 0.0, 0.0, 0.0, 29.79174041748047, + 17.334413528442383, 0.0, 19.84815216064453, 0.0, 0.0, 0.0, + 27.417333602905273, 26.225597381591797, 0.0, 9.80330753326416, + 20.40953826904297, 29.779157638549805, 20.629201889038086, + 22.673404693603516, 29.184240341186523 + ], + [ + 18.86969757080078, 14.965434074401855, 0.0, 19.06535530090332, + 14.416056632995605, 22.730609893798828, 26.48537826538086, + 12.511063575744629, 0.0, 14.23182201385498, 13.405244827270508, 0.0, + 22.62809181213379, 20.293790817260742, 14.550969123840332, 0.0, + 17.70273208618164, 0.0, 15.16944408416748, 0.0, 0.0, 0.0, + 12.003474235534668, 0.0, 0.0, 0.0, 0.0, 17.64358901977539, + 17.859251022338867, 0.0, 0.0, 11.192198753356934, 20.30571174621582, + 9.2295503616333, 10.781560897827148, 0.0, 8.401337623596191, 0.0, + 10.958454132080078, 11.37879753112793, 14.97037410736084, 0.0, + 22.530305862426758, 10.424909591674805, 0.0, 0.0, 15.97979736328125, + 0.0, 0.0, 17.140729904174805 + ], + [ + 0.0, 0.0, 15.45830249786377, 0.0, 0.0, 0.0, 25.867658615112305, 0.0, + 15.535255432128906, 0.0, 0.0, 12.548066139221191, 0.0, 0.0, 0.0, + 6.747211456298828, 29.08544158935547, 9.948234558105469, + 28.44058609008789, 16.110986709594727, 29.64913558959961, 0.0, + 28.337499618530273, 22.868576049804688, 0.0, 29.679330825805664, + 9.380888938903809, 0.0, 0.0, 15.034929275512695, 14.967503547668457, + 0.0, 0.0, 29.580230712890625, 29.981260299682617, 18.013078689575195, + 30.019468307495117, 16.986461639404297, 0.0, 0.0, 0.0, + 22.594085693359375, 29.34903907775879, 0.0, 10.222503662109375, + 27.591480255126953, 29.564659118652344, 28.688262939453125, + 29.540925979614258, 30.345735549926758 + ], + [ + 12.387910842895508, 8.362726211547852, 25.991025924682617, + 20.5152587890625, 17.785186767578125, 23.890247344970703, 0.0, + 11.695963859558105, 0.0, 14.800655364990234, 15.990229606628418, 0.0, + 18.453950881958008, 21.804471969604492, 14.820643424987793, 0.0, + 16.242393493652344, 0.0, 13.402227401733398, 0.0, 12.003474235534668, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.848854064941406, 17.220561981201172, + 0.0, 0.0, 7.616921424865723, 19.997650146484375, 7.872353553771973, + 11.788884162902832, 0.0, 8.9190673828125, 0.0, 12.446974754333496, + 10.059998512268066, 8.924964904785156, 0.0, 22.683238983154297, + 10.348535537719727, 0.0, 0.0, 7.84568452835083, 0.0, 0.0, + 19.858041763305664 + ], + [ + 0.0, 0.0, 15.880537033081055, 0.0, 0.0, 26.209836959838867, + 26.766658782958984, 27.588611602783203, 18.55300521850586, 0.0, 0.0, + 22.265287399291992, 0.0, 25.553428649902344, 0.0, 21.541873931884766, + 26.5660343170166, 18.85483169555664, 26.860607147216797, + 14.923872947692871, 0.0, 22.868576049804688, 26.725616455078125, 0.0, + 24.043075561523438, 19.685148239135742, 21.67279624938965, 0.0, 0.0, + 17.976470947265625, 18.894887924194336, 0.0, 0.0, 0.0, + 27.52259635925293, 14.233865737915039, 0.0, 17.086261749267578, 0.0, + 0.0, 0.0, 23.183412551879883, 23.165245056152344, 0.0, + 19.327444076538086, 15.540203094482422, 0.0, 15.651958465576172, + 17.00887107849121, 26.73052978515625 + ], + [ + 0.0, 0.0, 30.768207550048828, 0.0, 27.76019287109375, + 15.846673965454102, 21.670045852661133, 30.744667053222656, 0.0, + 31.370466232299805, 27.0637149810791, 0.0, 0.0, 16.85399627685547, + 29.31717872619629, 0.0, 30.343067169189453, 0.0, 30.92551040649414, + 27.694480895996094, 31.156627655029297, 0.0, 30.663528442382812, + 24.043075561523438, 0.0, 12.0450439453125, 0.0, 30.649866104125977, 0.0, + 31.92597198486328, 31.638498306274414, 0.0, 0.0, 0.0, + 29.208810806274414, 30.2485294342041, 30.160308837890625, + 31.777244567871094, 29.33639144897461, 0.0, 0.0, 0.0, 13.16067886352539, + 0.0, 0.0, 13.614568710327148, 0.0, 13.009839057922363, + 9.670613288879395, 21.3555965423584 + ], + [ + 0.0, 0.0, 25.553319931030273, 0.0, 25.71173858642578, + 13.631954193115234, 21.046499252319336, 27.67761993408203, + 27.81391716003418, 0.0, 24.707290649414062, 0.0, 0.0, + 16.073898315429688, 0.0, 0.0, 27.481197357177734, 27.583091735839844, + 0.0, 23.951223373413086, 27.610595703125, 0.0, 27.726839065551758, + 19.685148239135742, 12.0450439453125, 0.0, 27.882232666015625, + 26.733224868774414, 0.0, 27.391395568847656, 26.472612380981445, 0.0, + 0.0, 0.0, 26.312223434448242, 25.97857666015625, 27.093095779418945, + 26.673616409301758, 27.052886962890625, 0.0, 0.0, 0.0, + 12.872980117797852, 0.0, 0.0, 9.083687782287598, 0.0, + 7.5655436515808105, 7.719798564910889, 18.243349075317383 + ], + [ + 0.0, 0.0, 13.671289443969727, 0.0, 0.0, 0.0, 28.257572174072266, 0.0, + 14.888333320617676, 0.0, 0.0, 15.73303508758545, 0.0, 0.0, 0.0, + 7.198251247406006, 27.918758392333984, 11.429817199707031, + 27.451906204223633, 19.03630828857422, 27.849353790283203, + 9.380888938903809, 27.29996109008789, 21.67279624938965, 0.0, + 27.882232666015625, 0.0, 0.0, 0.0, 13.509803771972656, + 13.224605560302734, 0.0, 0.0, 27.944719314575195, 29.000883102416992, + 17.94547462463379, 28.404998779296875, 16.11725616455078, 0.0, 0.0, 0.0, + 22.260059356689453, 28.176668167114258, 0.0, 15.150701522827148, + 26.243478775024414, 28.40951156616211, 27.270313262939453, + 28.16884994506836, 28.94303321838379 + ], + [ + 23.632966995239258, 20.943073272705078, 0.0, 16.94776725769043, + 20.147430419921875, 24.1484375, 0.0, 17.393728256225586, 0.0, + 18.129140853881836, 18.24299430847168, 0.0, 25.688474655151367, + 21.365276336669922, 19.977676391601562, 0.0, 12.644262313842773, 0.0, + 17.448537826538086, 0.0, 17.64358901977539, 0.0, 18.848854064941406, + 0.0, 0.0, 0.0, 0.0, 0.0, 12.529895782470703, 0.0, 0.0, + 17.69622802734375, 16.130569458007812, 19.50243377685547, + 18.37009048461914, 0.0, 16.78864860534668, 0.0, 19.869470596313477, + 17.78464126586914, 21.757232666015625, 0.0, 23.1160945892334, + 18.128250122070312, 0.0, 0.0, 22.239892959594727, 26.00428009033203, + 0.0, 20.40435791015625 + ], + [ + 20.376466751098633, 17.25257110595703, 0.0, 11.832130432128906, + 23.998018264770508, 0.0, 0.0, 18.585079193115234, 0.0, + 14.557238578796387, 21.30812644958496, 0.0, 20.534679412841797, + 25.300935745239258, 21.604494094848633, 0.0, 10.082358360290527, 0.0, + 13.21926212310791, 0.0, 17.859251022338867, 0.0, 17.220561981201172, + 0.0, 0.0, 0.0, 0.0, 12.529895782470703, 0.0, 27.460222244262695, + 27.60871124267578, 15.855412483215332, 9.575450897216797, + 16.250343322753906, 20.970577239990234, 0.0, 17.541555404663086, 0.0, + 21.163545608520508, 14.525674819946289, 18.56254005432129, 0.0, + 26.859542846679688, 14.269586563110352, 0.0, 0.0, 19.001829147338867, + 0.0, 0.0, 25.227272033691406 + ], + [ + 0.0, 0.0, 8.791681289672852, 0.0, 0.0, 0.0, 0.0, 0.0, 6.242516040802002, + 27.78093719482422, 0.0, 15.36815357208252, 0.0, 0.0, 0.0, + 14.684475898742676, 25.865949630737305, 15.661386489868164, + 26.271039962768555, 19.49253273010254, 27.499526977539062, + 15.034929275512695, 26.300106048583984, 17.976470947265625, 0.0, + 27.391395568847656, 13.509803771972656, 0.0, 27.460222244262695, 0.0, + 6.3355841636657715, 0.0, 0.0, 27.224790573120117, 0.0, + 10.22851848602295, 27.718778610229492, 7.2486348152160645, 0.0, 0.0, + 0.0, 14.79039478302002, 28.007959365844727, 27.862394332885742, + 17.18183135986328, 24.618661880493164, 27.425064086914062, + 26.350326538085938, 26.611804962158203, 0.0 + ], + [ + 0.0, 0.0, 9.178433418273926, 0.0, 0.0, 0.0, 0.0, 0.0, 8.540630340576172, + 0.0, 0.0, 14.874740600585938, 0.0, 0.0, 0.0, 14.43342399597168, + 25.872955322265625, 16.001007080078125, 25.931936264038086, + 20.119897842407227, 27.054006576538086, 14.967503547668457, + 26.10399627685547, 18.894887924194336, 0.0, 26.472612380981445, + 13.224605560302734, 0.0, 27.60871124267578, 6.3355841636657715, 0.0, + 0.0, 0.0, 27.367406845092773, 27.210559844970703, 11.053003311157227, + 26.95148277282715, 7.429931640625, 0.0, 0.0, 0.0, 15.515692710876465, + 27.344242095947266, 0.0, 17.76783561706543, 24.428462982177734, + 27.452381134033203, 25.500411987304688, 26.389598846435547, + 27.42197608947754 + ], + [ + 14.77270793914795, 9.512584686279297, 0.0, 18.366050720214844, + 17.55746078491211, 25.81674575805664, 0.0, 12.000619888305664, 0.0, + 13.770587921142578, 15.89069938659668, 0.0, 16.356908798217773, + 22.98442268371582, 15.085597038269043, 0.0, 14.926234245300293, 0.0, + 12.416778564453125, 0.0, 11.192198753356934, 0.0, 7.616921424865723, + 0.0, 0.0, 0.0, 0.0, 17.69622802734375, 15.855412483215332, 0.0, + 28.11699867248535, 0.0, 17.678913116455078, 8.598676681518555, + 12.473284721374512, 0.0, 8.729635238647461, 0.0, 13.171012878417969, + 8.561929702758789, 10.150224685668945, 0.0, 25.472837448120117, + 8.304917335510254, 0.0, 0.0, 11.330039024353027, 0.0, 0.0, + 20.873367309570312 + ], + [ + 22.8934268951416, 18.512401580810547, 31.553802490234375, + 10.193150520324707, 26.503602981567383, 30.90642738342285, 0.0, + 21.340362548828125, 0.0, 17.808635711669922, 23.856534957885742, 0.0, + 20.086559295654297, 28.582191467285156, 24.718629837036133, 0.0, + 12.367650985717773, 0.0, 16.643022537231445, 0.0, 20.30571174621582, + 0.0, 19.997650146484375, 0.0, 0.0, 0.0, 0.0, 16.130569458007812, + 9.575450897216797, 0.0, 0.0, 17.678913116455078, 0.0, + 18.680797576904297, 23.44626235961914, 0.0, 19.07398223876953, 0.0, + 24.15810775756836, 16.510692596435547, 19.411937713623047, 0.0, + 30.47650146484375, 15.212651252746582, 0.0, 0.0, 21.748310089111328, + 0.0, 0.0, 28.143146514892578 + ], + [ + 12.933866500854492, 9.532123565673828, 0.0, 18.850852966308594, + 18.90981101989746, 25.29048728942871, 0.0, 13.03998851776123, 0.0, + 13.891715049743652, 17.02583122253418, 0.0, 18.396076202392578, + 23.33116912841797, 16.79316520690918, 27.083703994750977, + 16.400760650634766, 0.0, 13.639602661132812, 0.0, 9.2295503616333, 0.0, + 7.872353553771973, 0.0, 0.0, 0.0, 0.0, 19.50243377685547, + 16.250343322753906, 0.0, 0.0, 8.598676681518555, 18.680797576904297, + 0.0, 13.788285255432129, 0.0, 9.312504768371582, 0.0, + 13.413326263427734, 8.870146751403809, 9.736791610717773, 0.0, + 24.645896911621094, 7.301033973693848, 0.0, 0.0, 10.061497688293457, + 0.0, 0.0, 21.198835372924805 + ], + [ + 21.713876724243164, 16.45428466796875, 0.0, 21.577425003051758, + 8.653603553771973, 19.454357147216797, 24.084848403930664, + 7.081986427307129, 0.0, 14.43429183959961, 7.983645439147949, 0.0, + 22.773439407348633, 17.104536056518555, 9.392834663391113, 0.0, + 19.418668746948242, 0.0, 16.683427810668945, 0.0, 10.781560897827148, + 0.0, 11.788884162902832, 0.0, 0.0, 0.0, 0.0, 18.37009048461914, + 20.970577239990234, 0.0, 0.0, 12.473284721374512, 23.44626235961914, + 13.788285255432129, 0.0, 0.0, 7.870365142822266, 0.0, 6.521415710449219, + 13.39702033996582, 16.88896942138672, 0.0, 19.634233474731445, + 14.773120880126953, 0.0, 0.0, 16.933828353881836, 0.0, 0.0, + 13.2129545211792 + ], + [ + 0.0, 0.0, 11.020044326782227, 0.0, 0.0, 0.0, 0.0, 29.022598266601562, + 10.86579418182373, 0.0, 0.0, 16.594627380371094, 0.0, 28.75570297241211, + 0.0, 17.933591842651367, 27.504770278930664, 16.378297805786133, + 28.161222457885742, 17.334413528442383, 29.10832977294922, + 18.013078689575195, 27.82636070251465, 14.233865737915039, 0.0, + 25.97857666015625, 17.94547462463379, 0.0, 0.0, 10.22851848602295, + 11.053003311157227, 0.0, 0.0, 0.0, 28.596677780151367, 0.0, + 28.819011688232422, 9.354715347290039, 0.0, 0.0, 0.0, + 15.485487937927246, 27.36327362060547, 0.0, 17.70893096923828, + 21.594165802001953, 28.99379539489746, 23.675365447998047, + 24.85232925415039, 28.925830841064453 + ], + [ + 18.14444351196289, 12.801383018493652, 0.0, 18.260656356811523, + 12.779629707336426, 21.575023651123047, 26.158565521240234, + 9.188315391540527, 0.0, 13.67565631866455, 11.272122383117676, 0.0, + 21.176088333129883, 19.18198585510254, 12.88611888885498, 0.0, + 16.169036865234375, 0.0, 14.458999633789062, 0.0, 8.401337623596191, + 0.0, 8.9190673828125, 0.0, 0.0, 0.0, 0.0, 16.78864860534668, + 17.541555404663086, 0.0, 0.0, 8.729635238647461, 19.07398223876953, + 9.312504768371582, 7.870365142822266, 0.0, 0.0, 0.0, 9.980406761169434, + 9.852017402648926, 13.488080024719238, 0.0, 21.61799430847168, + 9.800171852111816, 0.0, 0.0, 14.623208045959473, 0.0, 0.0, + 16.254663467407227 + ], + [ + 0.0, 0.0, 8.646172523498535, 0.0, 0.0, 0.0, 0.0, 28.185129165649414, + 6.444328308105469, 0.0, 0.0, 15.717658996582031, 0.0, 0.0, 0.0, + 16.678321838378906, 26.20205307006836, 16.49815559387207, + 26.588436126708984, 19.84815216064453, 27.889968872070312, + 16.986461639404297, 26.30881118774414, 17.086261749267578, 0.0, + 26.673616409301758, 16.11725616455078, 0.0, 0.0, 7.2486348152160645, + 7.429931640625, 0.0, 0.0, 27.682321548461914, 28.10968780517578, + 9.354715347290039, 27.538909912109375, 0.0, 0.0, 0.0, 0.0, + 13.745445251464844, 28.122087478637695, 28.147428512573242, + 18.76658821105957, 23.719446182250977, 27.355411529541016, + 25.500869750976562, 26.256010055541992, 0.0 + ], + [ + 21.577136993408203, 17.155576705932617, 0.0, 22.344873428344727, + 9.367767333984375, 20.288042068481445, 24.95769500732422, + 7.527616024017334, 0.0, 12.059660911560059, 8.697026252746582, 0.0, + 22.715187072753906, 16.585237503051758, 8.194633483886719, 0.0, + 19.993009567260742, 0.0, 17.398866653442383, 0.0, 10.958454132080078, + 0.0, 12.446974754333496, 0.0, 0.0, 0.0, 0.0, 19.869470596313477, + 21.163545608520508, 0.0, 0.0, 13.171012878417969, 24.15810775756836, + 13.413326263427734, 6.521415710449219, 0.0, 9.980406761169434, 0.0, 0.0, + 13.400921821594238, 17.45803451538086, 0.0, 19.980045318603516, + 15.52830696105957, 0.0, 0.0, 16.8564395904541, 0.0, 0.0, + 14.054388999938965 + ], + [ + 17.818788528442383, 10.312067031860352, 0.0, 15.555337905883789, + 18.073688507080078, 26.163005828857422, 0.0, 11.808168411254883, 0.0, + 12.917444229125977, 16.992618560791016, 0.0, 18.17814064025879, + 23.339204788208008, 14.171202659606934, 0.0, 15.6044282913208, 0.0, + 12.469990730285645, 0.0, 11.37879753112793, 0.0, 10.059998512268066, + 0.0, 0.0, 0.0, 0.0, 17.78464126586914, 14.525674819946289, 0.0, + 28.279659271240234, 8.561929702758789, 16.510692596435547, + 8.870146751403809, 13.39702033996582, 0.0, 9.852017402648926, 0.0, + 13.400921821594238, 0.0, 13.957963943481445, 0.0, 24.667980194091797, + 8.35623836517334, 0.0, 0.0, 14.8192777633667, 0.0, 0.0, + 21.862390518188477 + ], + [ + 9.174179077148438, 8.066375732421875, 0.0, 20.862171173095703, + 21.82021713256836, 25.767574310302734, 28.762474060058594, + 17.237722396850586, 0.0, 17.970678329467773, 19.394973754882812, 0.0, + 16.00956916809082, 24.711483001708984, 19.69568634033203, 0.0, + 16.873130798339844, 0.0, 16.154481887817383, 0.0, 14.97037410736084, + 0.0, 8.924964904785156, 0.0, 0.0, 0.0, 0.0, 21.757232666015625, + 18.56254005432129, 0.0, 0.0, 10.150224685668945, 19.411937713623047, + 9.736791610717773, 16.88896942138672, 0.0, 13.488080024719238, 0.0, + 17.45803451538086, 13.957963943481445, 0.0, 0.0, 25.757652282714844, + 11.145041465759277, 0.0, 0.0, 6.433372974395752, 0.0, 0.0, + 23.095327377319336 + ], + [ + 0.0, 0.0, 12.937019348144531, 0.0, 0.0, 0.0, 0.0, 32.02213668823242, + 13.290156364440918, 31.701656341552734, 0.0, 20.651256561279297, 0.0, + 0.0, 0.0, 23.39799690246582, 30.604948043823242, 22.990482330322266, + 32.61885070800781, 27.417333602905273, 0.0, 22.594085693359375, + 31.036190032958984, 23.183412551879883, 0.0, 32.31216812133789, + 22.260059356689453, 0.0, 0.0, 14.79039478302002, 15.515692710876465, + 0.0, 0.0, 32.4578857421875, 32.19032287597656, 15.485487937927246, + 32.21105194091797, 13.745445251464844, 32.56065368652344, 0.0, 0.0, 0.0, + 32.442237854003906, 0.0, 24.121463775634766, 29.103710174560547, + 32.29210662841797, 31.628416061401367, 31.24018669128418, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 18.508312225341797, 8.234492301940918, + 18.01994514465332, 21.405078887939453, 0.0, 24.06703758239746, + 17.944425582885742, 0.0, 0.0, 9.803439140319824, 19.918331146240234, + 0.0, 24.58400535583496, 0.0, 24.467233657836914, 26.225597381591797, + 22.530305862426758, 0.0, 22.683238983154297, 23.165245056152344, + 13.16067886352539, 12.872980117797852, 0.0, 23.1160945892334, 0.0, 0.0, + 0.0, 25.472837448120117, 0.0, 24.645896911621094, 19.634233474731445, + 0.0, 21.61799430847168, 0.0, 19.980045318603516, 24.667980194091797, + 25.757652282714844, 0.0, 0.0, 0.0, 0.0, 15.549489974975586, + 25.59328842163086, 14.561328887939453, 12.062984466552734, + 11.851495742797852 + ], + [ + 14.964703559875488, 8.581048011779785, 0.0, 15.541553497314453, + 20.21580696105957, 27.43256378173828, 0.0, 14.14988899230957, 0.0, + 14.021885871887207, 18.1063289642334, 0.0, 18.469263076782227, + 25.04384422302246, 18.532695770263672, 0.0, 14.46839427947998, 0.0, + 12.985950469970703, 0.0, 10.424909591674805, 0.0, 10.348535537719727, + 0.0, 0.0, 0.0, 0.0, 18.128250122070312, 14.269586563110352, 0.0, + 27.72905731201172, 8.304917335510254, 15.212651252746582, + 7.301033973693848, 14.773120880126953, 0.0, 9.800171852111816, 0.0, + 15.52830696105957, 8.35623836517334, 11.145041465759277, 0.0, + 26.766433715820312, 0.0, 0.0, 0.0, 13.132034301757812, 0.0, 0.0, + 23.14950180053711 + ], + [ + 0.0, 0.0, 17.111501693725586, 0.0, 0.0, 0.0, 22.570119857788086, 0.0, + 18.338748931884766, 0.0, 0.0, 13.480658531188965, 0.0, + 29.853897094726562, 0.0, 10.971292495727539, 28.94818687438965, + 10.800091743469238, 28.431629180908203, 9.80330753326416, + 29.10155487060547, 10.222503662109375, 28.303447723388672, + 19.327444076538086, 0.0, 28.204858779907227, 15.150701522827148, 0.0, + 0.0, 17.18183135986328, 17.76783561706543, 0.0, 0.0, 29.76007843017578, + 29.451736450195312, 17.70893096923828, 0.0, 18.76658821105957, + 30.07659149169922, 0.0, 0.0, 24.121463775634766, 28.90131378173828, 0.0, + 0.0, 25.71030616760254, 29.438804626464844, 26.095460891723633, + 27.61362648010254, 0.0 + ], + [ + 0.0, 0.0, 22.48028564453125, 0.0, 0.0, 17.711267471313477, + 22.5948429107666, 0.0, 25.029436111450195, 0.0, 26.44026756286621, + 26.950096130371094, 0.0, 19.943622589111328, 0.0, 26.11214256286621, + 27.139240264892578, 25.290096282958984, 0.0, 20.40953826904297, 0.0, + 27.591480255126953, 27.42832374572754, 15.540203094482422, + 13.614568710327148, 9.083687782287598, 26.243478775024414, + 27.771352767944336, 0.0, 24.618661880493164, 24.428462982177734, 0.0, + 0.0, 0.0, 27.324060440063477, 21.594165802001953, 27.763118743896484, + 23.719446182250977, 0.0, 0.0, 0.0, 0.0, 15.549489974975586, 0.0, + 25.71030616760254, 0.0, 0.0, 7.464041233062744, 8.82171630859375, + 21.919408798217773 + ], + [ + 7.386411190032959, 10.049700736999512, 26.80698585510254, + 23.646543502807617, 22.206838607788086, 26.479703903198242, 0.0, + 16.80801010131836, 0.0, 17.508007049560547, 20.014461517333984, 0.0, + 16.96192169189453, 24.820878982543945, 19.1842041015625, 0.0, + 17.388660430908203, 0.0, 15.653338432312012, 0.0, 15.97979736328125, + 0.0, 7.84568452835083, 0.0, 0.0, 0.0, 0.0, 22.239892959594727, + 19.001829147338867, 0.0, 0.0, 11.330039024353027, 21.748310089111328, + 10.061497688293457, 16.933828353881836, 0.0, 14.623208045959473, 0.0, + 16.8564395904541, 14.8192777633667, 6.433372974395752, 0.0, + 25.59328842163086, 13.132034301757812, 0.0, 0.0, 0.0, 0.0, 0.0, + 23.102724075317383 + ], + [ + 0.0, 0.0, 24.585256576538086, 0.0, 26.601783752441406, + 16.807392120361328, 21.061100006103516, 0.0, 27.002717971801758, 0.0, + 25.43642234802246, 0.0, 0.0, 18.670167922973633, 0.0, + 26.974319458007812, 26.768606185913086, 25.869556427001953, + 27.159509658813477, 20.629201889038086, 27.21232795715332, 0.0, + 26.9671573638916, 15.651958465576172, 13.009839057922363, + 7.5655436515808105, 0.0, 26.00428009033203, 0.0, 26.350326538085938, + 25.500411987304688, 0.0, 0.0, 0.0, 26.0308895111084, 23.675365447998047, + 26.755544662475586, 25.500869750976562, 0.0, 0.0, 0.0, 0.0, + 14.561328887939453, 0.0, 26.095460891723633, 7.464041233062744, 0.0, + 0.0, 7.010155200958252, 20.6434326171875 + ], + [ + 0.0, 0.0, 24.925153732299805, 0.0, 26.42830467224121, + 15.045551300048828, 21.21843719482422, 27.299182891845703, + 27.04414176940918, 0.0, 25.237674713134766, 0.0, 0.0, 16.89549446105957, + 27.380207061767578, 0.0, 27.721466064453125, 27.350364685058594, + 27.775407791137695, 22.673404693603516, 0.0, 0.0, 27.322887420654297, + 17.00887107849121, 9.670613288879395, 7.719798564910889, 0.0, 0.0, 0.0, + 26.611804962158203, 26.389598846435547, 0.0, 0.0, 0.0, + 26.370729446411133, 24.85232925415039, 27.40145492553711, + 26.256010055541992, 26.808462142944336, 0.0, 0.0, 0.0, + 12.062984466552734, 0.0, 27.61362648010254, 8.82171630859375, 0.0, + 7.010155200958252, 0.0, 19.98741912841797 + ], + [ + 0.0, 24.944826126098633, 0.0, 0.0, 9.929121971130371, + 10.129721641540527, 19.986597061157227, 15.688509941101074, 0.0, + 19.55390167236328, 10.178216934204102, 0.0, 0.0, 7.489864349365234, + 14.902077674865723, 0.0, 22.319358825683594, 0.0, 21.743715286254883, + 0.0, 17.140729904174805, 0.0, 19.858041763305664, 0.0, 21.3555965423584, + 18.243349075317383, 0.0, 20.40435791015625, 0.0, 0.0, 0.0, + 20.873367309570312, 0.0, 21.198835372924805, 13.2129545211792, 0.0, + 16.254663467407227, 0.0, 14.054388999938965, 21.862390518188477, + 23.095327377319336, 0.0, 11.851495742797852, 23.14950180053711, 0.0, + 21.919408798217773, 23.102724075317383, 20.6434326171875, + 19.98741912841797, 0.0 + ] + ] + }, + "uns": { + "clusters_coarse_colors": [ + "#031A5C", + "#fa9fb5", + "#fdbf6f", + "#ff7f00", + "#b2df8a" + ], + "clusters_colors": [ + "#8fbc8f", + "#f4a460", + "#fdbf6f", + "#ff7f00", + "#b2df8a", + "#1f78b4", + "#cab2d6" + ], + "day_colors": ["#d62728"], + "leiden": { + "params": { + "n_iterations": -1, + "random_state": 0, + "resolution": 1 + } + }, + "log1p": {}, + "neighbors": { + "connectivities_key": "connectivities", + "distances_key": "distances", + "params": { + "method": "umap", + "metric": "euclidean", + "n_neighbors": 30, + "n_pcs": 30, + "random_state": 0 + } + }, + "pca": { + "variance": [ + 84.01986694335938, 56.145408630371094, 24.90276336669922, + 18.04616355895996, 13.804972648620605, 11.931583404541016, + 9.8485107421875, 5.831463813781738, 4.772082805633545, + 4.364034175872803, 3.9239556789398193, 3.422154426574707, + 2.7514822483062744, 2.407780647277832, 2.249235153198242, + 2.1247293949127197, 2.0673511028289795, 1.7702986001968384, + 1.7164644002914429, 1.5288208723068237, 1.4669604301452637, + 1.3977633714675903, 1.3417249917984009, 1.289847493171692, + 1.191311240196228, 1.1588010787963867, 1.1220303773880005, + 1.0877219438552856, 1.053589105606079, 0.9999560117721558, + 0.9759476780891418, 0.9631308317184448, 0.929368257522583, + 0.9144339561462402, 0.8905921578407288, 0.8624985814094543, + 0.8567582368850708, 0.8075109720230103, 0.793291449546814, + 0.7793740034103394, 0.7724183201789856, 0.7326804995536804, + 0.71897292137146, 0.6993304491043091, 0.6795463562011719, + 0.6704654693603516, 0.6361813545227051, 0.6305637359619141, + 0.6286348104476929, 0.6084895730018616 + ], + "variance_ratio": [ + 0.12779653072357178, 0.08539871126413345, 0.03787778690457344, + 0.027448710054159164, 0.02099774219095707, 0.018148265779018402, + 0.01497985515743494, 0.008869816549122334, 0.0072584692388772964, + 0.006637815851718187, 0.005968444515019655, 0.0052051907405257225, + 0.00418508006259799, 0.00366230052895844, 0.003421148518100381, + 0.003231771755963564, 0.003144497750326991, 0.0026926728896796703, + 0.0026107896119356155, 0.002325378591194749, 0.002231287071481347, + 0.0021260364446789026, 0.0020408006384968758, 0.0019618934020400047, + 0.0018120171735063195, 0.0017625682521611452, 0.0017066390719264746, + 0.0016544549725949764, 0.0016025379300117493, 0.0015209605917334557, + 0.001484443200752139, 0.0014649484073743224, 0.0014135946985334158, + 0.0013908791588619351, 0.0013546152040362358, 0.0013118840288370848, + 0.0013031528797000647, 0.001228246372193098, 0.001206618151627481, + 0.001185449305921793, 0.0011748694814741611, 0.0011144272284582257, + 0.0010935775935649872, 0.0010637008817866445, 0.0010336086852476, + 0.0010197963565587997, 0.0009676493355073035, 0.000959104741923511, + 0.0009561708429828286, 0.0009255293407477438 + ] + }, + "recover_dynamics": { + "fit_connected_states": true, + "use_raw": false + }, + "velocity_graph": [ + [ + 0.0, 0.22046132385730743, 0.0, 0.22046132385730743, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.450626403093338, 0.0, 0.0, 0.04093712940812111, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.3453138470649719, 0.450626403093338, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.3453138470649719, 0.22046132385730743, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9473719000816345, 0.9478896856307983, 0.0, 0.9478896856307983, + 0.9401094317436218, 0.55253005027771, 0.7027125954627991, + 0.9611698985099792, 0.0, 0.9677510857582092, 0.9386511445045471, 0.0, + 0.9562760591506958, 0.9311007857322693, 0.9429868459701538, + 0.8775137662887573, 0.9621375799179077, 0.0, 0.9652383923530579, 0.0, + 0.9617140293121338, 0.0, 0.9621375799179077, 0.025671426206827164, + 0.23905545473098755, 0.06676451861858368, 0.0, 0.9401094317436218, + 0.9570096731185913, 0.905114471912384, 0.2133932113647461, + 0.9497542977333069, 0.9562760591506958, 0.9808235168457031, + 0.9562790393829346, 0.0, 0.9745998978614807, 0.0, 0.9512403011322021, + 0.9497542977333069, 0.9478896856307983, 0.0, 0.9621375799179077, + 0.9517706632614136, 0.0, 0.05286373198032379, 0.9747084975242615, + 0.03281308338046074, 0.10565642267465591, 0.9415416717529297 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.8878284096717834, 0.8108709454536438, 0.0, 0.8108709454536438, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.952512800693512, 0.0, + 0.8020811080932617, 0.09297816455364227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8981965184211731, 0.018391815945506096, + 0.0, 0.8432539105415344, 0.952512800693512, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.8432539105415344, 0.8108709454536438, 0.0, 0.0, + 0.6447211503982544, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9646341800689697, 0.961211085319519, 0.0, 0.961211085319519, + 0.9666497707366943, 0.0, 0.1094990074634552, 0.9846523404121399, 0.0, + 0.9946197271347046, 0.9677785634994507, 0.0, 0.9736183285713196, + 0.9640065431594849, 0.9638437628746033, 0.8452783823013306, + 0.9201474189758301, 0.0, 0.9297657012939453, 0.0, 0.9633435010910034, + 0.0, 0.9201474189758301, 0.0, 0.0, 0.0, 0.0, 0.9666497707366943, + 0.9789336919784546, 0.8648539781570435, 0.0, 0.9639078378677368, + 0.9736183285713196, 0.9675067663192749, 0.940881609916687, 0.0, + 0.9582109451293945, 0.0, 0.982145369052887, 0.9639078378677368, + 0.961211085319519, 0.0, 0.9201474189758301, 0.9761537909507751, 0.0, + 0.0, 0.9528877139091492, 0.0, 0.0, 0.9764111042022705 + ], + [ + 0.9463514685630798, 0.9439656734466553, 0.0, 0.9439656734466553, + 0.9414880275726318, 0.11544811725616455, 0.0, 0.9818296432495117, 0.0, + 0.9800933599472046, 0.941167950630188, 0.0, 0.9572662115097046, + 0.9462907314300537, 0.9420565366744995, 0.8699474930763245, + 0.9862393736839294, 0.0, 0.9881100654602051, 0.0, 0.9872932434082031, + 0.0, 0.9862393736839294, 0.0, 0.0, 0.0, 0.0, 0.9414880275726318, + 0.9600542783737183, 0.9045330882072449, 0.0, 0.9466926455497742, + 0.9572662115097046, 0.9951223134994507, 0.9837529063224792, 0.0, + 0.9947364926338196, 0.0, 0.9629464745521545, 0.9466926455497742, + 0.9439656734466553, 0.0, 0.9862393736839294, 0.9550431370735168, 0.0, + 0.0, 0.9917606711387634, 0.0, 0.0, 0.9578285217285156 + ], + [ + 0.6878268122673035, 0.6746472120285034, 0.0, 0.6746472120285034, + 0.5407849550247192, 0.0, 0.0, 0.0, 0.0, 0.811570405960083, + 0.4939804673194885, 0.0, 0.7464512586593628, 0.0, 0.6132776737213135, + 0.3012204170227051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.5407849550247192, 0.7342384457588196, 0.24500800669193268, 0.0, + 0.6878073215484619, 0.7464512586593628, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.5899852514266968, 0.6878073215484619, 0.6746472120285034, 0.0, 0.0, + 0.6615322828292847, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9334027767181396, 0.9357232451438904, 0.1172555685043335, + 0.9357232451438904, 0.9256162643432617, 0.5429917573928833, + 0.6504912972450256, 0.9441931843757629, 0.0, 0.9525487422943115, + 0.9236162900924683, 0.0, 0.9430536031723022, 0.9132289886474609, + 0.92960125207901, 0.8522192239761353, 0.9461503624916077, 0.0, + 0.9498468041419983, 0.0, 0.9445486068725586, 0.0, 0.9461503624916077, + 0.0, 0.2551182508468628, 0.09217452257871628, 0.0, 0.9256162643432617, + 0.9427808523178101, 0.8885181546211243, 0.3048710525035858, + 0.9374105334281921, 0.9430536031723022, 0.9663224816322327, + 0.9389983415603638, 0.0, 0.9582626223564148, 0.0, 0.9354557394981384, + 0.9374105334281921, 0.9357232451438904, 0.0, 0.9461503624916077, + 0.9375399947166443, 0.0, 0.040217503905296326, 0.9601296782493591, + 0.00022876086586620659, 0.25992316007614136, 0.923961877822876 + ], + [ + 0.48354795575141907, 0.4774066209793091, 0.0, 0.4774066209793091, + 0.07743129879236221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.5902640223503113, 0.0, 0.3123166263103485, 0.12415485829114914, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07743129879236221, + 0.5397481322288513, 0.03769519552588463, 0.0, 0.49803823232650757, + 0.5902640223503113, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.49803823232650757, + 0.4774066209793091, 0.0, 0.0, 0.30379247665405273, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.8827467560768127, 0.8203068971633911, 0.0, 0.8203068971633911, + 0.8122700452804565, 0.0, 0.0, 0.0, 0.0, 0.06257428228855133, 0.0, 0.0, + 0.9441919326782227, 0.0, 0.8122710585594177, 0.11487824469804764, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8122700452804565, + 0.9381545186042786, 0.04190567880868912, 0.0, 0.846733033657074, + 0.9441919326782227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.846733033657074, + 0.8203068971633911, 0.0, 0.0, 0.8834158182144165, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.9351792335510254, 0.93697190284729, 0.2073274552822113, + 0.93697190284729, 0.9274756908416748, 0.5476046204566956, + 0.6437081694602966, 0.9492014050483704, 0.2202795296907425, + 0.9556781649589539, 0.9256619215011597, 0.0, 0.9447311162948608, + 0.9174737334251404, 0.9310952425003052, 0.8746903538703918, + 0.9570953845977783, 0.07548616826534271, 0.9601566195487976, + 0.02327699586749077, 0.9517809748649597, 0.19100739061832428, + 0.9570953845977783, 0.27635231614112854, 0.2897435128688812, + 0.3084721565246582, 0.19100739061832428, 0.9274756908416748, + 0.9448500275611877, 0.9089379906654358, 0.3216802179813385, + 0.9387204647064209, 0.9447311162948608, 0.9743483066558838, + 0.9479241371154785, 0.12254460155963898, 0.966482937335968, 0.0, + 0.9384366273880005, 0.9387204647064209, 0.93697190284729, + 0.14457936584949493, 0.9570953845977783, 0.9395990371704102, + 0.06080274656414986, 0.4545396566390991, 0.9693624973297119, + 0.2921827733516693, 0.33737316727638245, 0.9278176426887512 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.825177013874054, 0.8048591017723083, 0.0, 0.8048591017723083, + 0.7471530437469482, 0.0, 0.0, 0.2447403073310852, 0.0, + 0.7956845164299011, 0.7261441946029663, 0.0, 0.8660773634910583, 0.0, + 0.7770386338233948, 0.3051496148109436, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.7471530437469482, 0.8587269186973572, + 0.2549494206905365, 0.0, 0.8156805634498596, 0.8660773634910583, + 0.046289946883916855, 0.0, 0.0, 0.0, 0.0, 0.8728205561637878, + 0.8156805634498596, 0.8048591017723083, 0.0, 0.0, 0.8344907760620117, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.20630542933940887 + ], + [ + 0.9169006943702698, 0.789244532585144, 0.0, 0.789244532585144, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9223460555076599, 0.0, 0.0, + 0.04651172086596489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.415664941072464, 0.0, 0.0, 0.846660315990448, + 0.9223460555076599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.846660315990448, + 0.789244532585144, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5188425779342651, 0.5314738750457764, 0.0, 0.5314738750457764, + 0.3850511610507965, 0.0, 0.0, 0.09649436920881271, 0.0, + 0.3446391224861145, 0.3493833839893341, 0.0, 0.541537880897522, + 0.07422615587711334, 0.4557618498802185, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3850511610507965, 0.4912339746952057, + 0.0, 0.0, 0.5339505076408386, 0.541537880897522, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.2884923815727234, 0.5339505076408386, 0.5314738750457764, 0.0, + 0.0, 0.428748220205307, 0.0, 0.0, 0.0, 0.0, 0.0, 0.09006018191576004 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.936473548412323, 0.9384321570396423, 0.2207586169242859, + 0.9384321570396423, 0.92906653881073, 0.5583094358444214, + 0.6540610790252686, 0.9497556090354919, 0.2280030995607376, + 0.9563538432121277, 0.9272958040237427, 0.0, 0.9458242654800415, + 0.9188054203987122, 0.9326005578041077, 0.8672069907188416, + 0.9566431641578674, 0.0, 0.9596006870269775, 0.0, 0.9520301222801208, + 0.2855951189994812, 0.9566431641578674, 0.20953616499900818, + 0.29753920435905457, 0.34055793285369873, 0.2855951189994812, + 0.92906653881073, 0.9459707736968994, 0.9017676711082458, + 0.34528598189353943, 0.9401209354400635, 0.9458242654800415, + 0.9736607670783997, 0.947994589805603, 0.10063133388757706, + 0.9663297533988953, 0.0, 0.9395089149475098, 0.9401209354400635, + 0.9384321570396423, 0.14157317578792572, 0.9566431641578674, + 0.9409245848655701, 0.031088562682271004, 0.4159625172615051, + 0.9685809016227722, 0.3108071982860565, 0.35651326179504395, + 0.9291922450065613 + ], + [ + 0.743730902671814, 0.7372573018074036, 0.0, 0.7372573018074036, + 0.666164755821228, 0.0, 0.0, 0.729931652545929, 0.0, 0.7996477484703064, + 0.6463336944580078, 0.0, 0.7796080708503723, 0.48179891705513, + 0.7012366056442261, 0.5804693102836609, 0.0, 0.0, 0.0, 0.0, + 0.6059209108352661, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.666164755821228, + 0.7698690891265869, 0.6086183786392212, 0.0, 0.7452235817909241, + 0.7796080708503723, 0.9193915128707886, 0.05771923437714577, 0.0, + 0.6429702043533325, 0.0, 0.7029128074645996, 0.7452235817909241, + 0.7372573018074036, 0.0, 0.0, 0.7295289635658264, 0.0, 0.0, + 0.9662341475486755, 0.0, 0.0, 0.5333138108253479 + ], + [ + 0.9328802824020386, 0.9350316524505615, 0.2319445013999939, + 0.9350316524505615, 0.9256858825683594, 0.5609022974967957, + 0.6623903512954712, 0.9465985894203186, 0.26889052987098694, + 0.9536309838294983, 0.9238928556442261, 0.0, 0.9424359798431396, + 0.9147626161575317, 0.929265022277832, 0.8602655529975891, + 0.9535108804702759, 0.03979620337486267, 0.9565345048904419, 0.0, + 0.9488857388496399, 0.20574550330638885, 0.9535108804702759, + 0.2874282896518707, 0.30357226729393005, 0.3697206974029541, + 0.20574550330638885, 0.9256858825683594, 0.9426992535591125, + 0.8967151045799255, 0.36751970648765564, 0.9367465972900391, + 0.9424359798431396, 0.971062958240509, 0.9445900917053223, + 0.15002943575382233, 0.9640179872512817, 0.0, 0.9361152052879333, + 0.9367465972900391, 0.9350316524505615, 0.19896233081817627, + 0.9535108804702759, 0.9375409483909607, 0.08484230935573578, + 0.5327345728874207, 0.9655148983001709, 0.3787201941013336, + 0.4100457727909088, 0.925638735294342 + ], + [ + 0.7434709668159485, 0.7342777848243713, 0.0, 0.7342777848243713, + 0.6543235182762146, 0.0, 0.0, 0.7862951159477234, 0.0, + 0.8271054625511169, 0.6304134130477905, 0.0, 0.7855446338653564, + 0.38397884368896484, 0.6947544813156128, 0.4649379253387451, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6543235182762146, + 0.7773599028587341, 0.4569125771522522, 0.0, 0.7438362240791321, + 0.7855446338653564, 0.69515061378479, 0.0, 0.0, 0.0, 0.0, + 0.7094954252243042, 0.7438362240791321, 0.7342777848243713, 0.0, 0.0, + 0.7319198250770569, 0.0, 0.0, 0.39354366064071655, 0.0, 0.0, + 0.4641243815422058 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0.0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0.0, 0.9556769728660583, 0.0, 0.9485813975334167, + 0.0, 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0.0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0.0, + 0.9629393219947815, 0.0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0.0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.9195862412452698, 0.9220841526985168, 0.13715824484825134, + 0.9220841526985168, 0.9106405973434448, 0.5163668990135193, + 0.5890920758247375, 0.9314747452735901, 0.09921257197856903, + 0.9407001733779907, 0.9083550572395325, 0.0, 0.930107593536377, + 0.8967242240905762, 0.9152022004127502, 0.8561992049217224, + 0.9366470575332642, 0.0, 0.940861165523529, 0.0, 0.9325706958770752, + 0.0, 0.9366470575332642, 0.0, 0.24157372117042542, 0.1206507608294487, + 0.0, 0.9106405973434448, 0.9297754764556885, 0.893466591835022, + 0.21303364634513855, 0.9239208698272705, 0.930107593536377, + 0.9596612453460693, 0.9270446300506592, 0.0, 0.9493283629417419, 0.0, + 0.9212765097618103, 0.9239208698272705, 0.9220841526985168, 0.0, + 0.9366470575332642, 0.9237295985221863, 0.0, 0.29278767108917236, + 0.9529325366020203, 0.06505927443504333, 0.19204182922840118, + 0.9081715941429138 + ], + [ + 0.9674855470657349, 0.9686222076416016, 0.0, 0.9686222076416016, + 0.9661521315574646, 0.6518474221229553, 0.8795127272605896, + 0.9798871278762817, 0.0, 0.9844141006469727, 0.9658060073852539, 0.0, + 0.97487473487854, 0.9634808897972107, 0.9667624831199646, + 0.8336988091468811, 0.9620339274406433, 0.0, 0.9647660255432129, 0.0, + 0.9753776788711548, 0.0, 0.9620339274406433, 0.0, 0.0, 0.0, 0.0, + 0.9661521315574646, 0.976043701171875, 0.8679069876670837, 0.0, + 0.9700765609741211, 0.97487473487854, 0.9753454923629761, + 0.9682275056838989, 0.0, 0.9739751219749451, 0.0, 0.975624144077301, + 0.9700765609741211, 0.9686222076416016, 0.0, 0.9620339274406433, + 0.973994791507721, 0.0, 0.0, 0.9703773856163025, 0.0, 0.0, + 0.9717084169387817 + ], + [ + 0.934225857257843, 0.9352400898933411, 0.030317040160298347, + 0.9352400898933411, 0.9264477491378784, 0.5123326778411865, + 0.6623035669326782, 0.9520787000656128, 0.0, 0.9577811360359192, + 0.9248024821281433, 0.0, 0.9443178772926331, 0.918153703212738, + 0.9297283291816711, 0.879120945930481, 0.9612048864364624, 0.0, + 0.9640563130378723, 0.0, 0.9555220603942871, 0.0, 0.9612048864364624, + 0.0, 0.20572532713413239, 0.0, 0.0, 0.9264477491378784, + 0.9449334740638733, 0.9112521409988403, 0.23013901710510254, + 0.9372375011444092, 0.9443178772926331, 0.9781539440155029, + 0.9517093896865845, 0.0, 0.9711923599243164, 0.0, 0.9393836855888367, + 0.9372375011444092, 0.9352400898933411, 0.0, 0.9612048864364624, + 0.9393155574798584, 0.0, 0.005231114104390144, 0.9728637933731079, 0.0, + 0.19197078049182892, 0.929114580154419 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0.0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0.0, 0.9556769728660583, 0.0, 0.9485813975334167, + 0.0, 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0.0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0.0, + 0.9629393219947815, 0.0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0.0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.8883063793182373, 0.8116819262504578, 0.0, 0.8116819262504578, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9529995918273926, 0.0, + 0.8028464317321777, 0.09172669798135757, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8983768224716187, 0.01723295822739601, + 0.0, 0.8440255522727966, 0.9529995918273926, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.8440255522727966, 0.8116819262504578, 0.0, 0.0, + 0.6447504758834839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.2747211754322052, 0.2936770021915436, 0.0, 0.2936770021915436, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6517482399940491, 0.0, 0.0, + 0.032184068113565445, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.34475982189178467, 0.6517482399940491, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.34475982189178467, 0.2936770021915436, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5531019568443298, 0.5641404986381531, 0.0, 0.5641404986381531, + 0.4168100953102112, 0.0, 0.0, 0.1140608862042427, 0.0, + 0.39043787121772766, 0.3796830475330353, 0.0, 0.5798412561416626, + 0.0826287716627121, 0.4889662563800812, 0.18057607114315033, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4168100953102112, + 0.5310302376747131, 0.0, 0.0, 0.5675522685050964, 0.5798412561416626, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.32385241985321045, 0.5675522685050964, + 0.5641404986381531, 0.0, 0.0, 0.4662861227989197, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.10050193965435028 + ], + [ + 0.9420479536056519, 0.9427720904350281, 0.0, 0.9427720904350281, + 0.9347240328788757, 0.5127102732658386, 0.687716007232666, + 0.9590884447097778, 0.0, 0.9646003246307373, 0.9331855773925781, 0.0, + 0.9516794085502625, 0.9269337058067322, 0.9377775192260742, + 0.8794031739234924, 0.9654127359390259, 0.0, 0.9682632684707642, 0.0, + 0.9616855382919312, 0.0, 0.9654127359390259, 0.0, 0.18039019405841827, + 0.0, 0.0, 0.9347240328788757, 0.9522895812988281, 0.9113820195198059, + 0.0, 0.9447222948074341, 0.9516794085502625, 0.9817621111869812, + 0.9575057625770569, 0.0, 0.9756044745445251, 0.0, 0.9473169445991516, + 0.9447222948074341, 0.9427720904350281, 0.0, 0.9654127359390259, + 0.9469399452209473, 0.0, 0.0, 0.9765735268592834, 0.0, 0.0, + 0.9375110268592834 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.13069970905780792, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13069970905780792, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5751016139984131, 0.5733153223991394, 0.0, 0.5733153223991394, + 0.42552366852760315, 0.0, 0.0, 0.11649440228939056, 0.0, + 0.570351243019104, 0.38224679231643677, 0.0, 0.6250942349433899, 0.0, + 0.5016170740127563, 0.35801514983177185, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.42552366852760315, 0.5966134071350098, + 0.3176433742046356, 0.0, 0.5833065509796143, 0.6250942349433899, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.38370266556739807, 0.5833065509796143, + 0.5733153223991394, 0.0, 0.0, 0.5161169171333313, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.7787143588066101, 0.7701713442802429, 0.0, 0.7701713442802429, + 0.7090018391609192, 0.0, 0.0, 0.8258630037307739, 0.0, + 0.8449141383171082, 0.6917063593864441, 0.0, 0.8138009309768677, + 0.5586830973625183, 0.7390192747116089, 0.55143141746521, 0.0, 0.0, 0.0, + 0.0, 0.8434901833534241, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.7090018391609192, 0.8069137334823608, 0.5675274133682251, 0.0, + 0.7782487869262695, 0.8138009309768677, 0.8440638780593872, 0.0, 0.0, + 0.5092626810073853, 0.0, 0.7631323337554932, 0.7782487869262695, + 0.7701713442802429, 0.0, 0.0, 0.7720590829849243, 0.0, 0.0, + 0.8145000338554382, 0.0, 0.0, 0.6143969893455505 + ], + [ + 0.9376397132873535, 0.9394145607948303, 0.20784924924373627, + 0.9394145607948303, 0.9305175542831421, 0.5572127103805542, + 0.6681869029998779, 0.9522222280502319, 0.21259279549121857, + 0.9583749175071716, 0.9288394451141357, 0.0, 0.947019100189209, + 0.9209617972373962, 0.9338666796684265, 0.8692113757133484, + 0.9599745869636536, 0.0, 0.9627288579940796, 0.0, 0.9549523591995239, + 0.10538123548030853, 0.9599745869636536, 0.17021527886390686, + 0.29417285323143005, 0.3758244216442108, 0.10538123548030853, + 0.9305175542831421, 0.9473679065704346, 0.9040439128875732, + 0.35192927718162537, 0.9411460757255554, 0.947019100189209, + 0.9760757684707642, 0.951150119304657, 0.0, 0.969430685043335, 0.0, + 0.9413937926292419, 0.9411460757255554, 0.9394145607948303, + 0.12084345519542694, 0.9599745869636536, 0.9423250555992126, 0.0, + 0.3530804514884949, 0.9710901379585266, 0.3764790892601013, + 0.38387250900268555, 0.9314559102058411 + ], + [ + 0.7014084458351135, 0.695290744304657, 0.0, 0.695290744304657, + 0.6028080582618713, 0.0, 0.0, 0.6023911237716675, 0.0, + 0.7662052512168884, 0.5759142637252808, 0.0, 0.7429336905479431, + 0.30479565262794495, 0.6497153639793396, 0.47929027676582336, 0.0, 0.0, + 0.0, 0.0, 0.05563047155737877, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.6028080582618713, 0.7315650582313538, 0.4775010049343109, 0.0, + 0.7045115232467651, 0.7429336905479431, 0.970437228679657, 0.0, 0.0, + 0.0, 0.0, 0.6229016780853271, 0.7045115232467651, 0.695290744304657, + 0.0, 0.0, 0.677351176738739, 0.0, 0.0, 0.6063860654830933, 0.0, 0.0, + 0.36758357286453247 + ], + [ + 0.9419844150543213, 0.9431969523429871, 0.19646787643432617, + 0.9431969523429871, 0.9346080422401428, 0.5488399863243103, + 0.6644535064697266, 0.9572911858558655, 0.20402289927005768, + 0.9626659750938416, 0.9329860806465149, 0.045756012201309204, + 0.9511786699295044, 0.9262731671333313, 0.9378437995910645, + 0.8865021467208862, 0.9662277102470398, 0.08664795756340027, + 0.9688546061515808, 0.049190230667591095, 0.9604259133338928, + 0.17472335696220398, 0.9662277102470398, 0.2159879356622696, + 0.29122820496559143, 0.3560408651828766, 0.17472335696220398, + 0.9346080422401428, 0.9515462517738342, 0.9190202951431274, + 0.3313352167606354, 0.9449687004089355, 0.9511786699295044, + 0.9813721179962158, 0.9571552872657776, 0.25822892785072327, + 0.9745647311210632, 0.0, 0.9460163116455078, 0.9449687004089355, + 0.9431969523429871, 0.1397450864315033, 0.9662277102470398, + 0.9464099407196045, 0.07705214619636536, 0.3572593331336975, + 0.9769449234008789, 0.3615134358406067, 0.3594312369823456, + 0.9362280368804932 + ], + [ + 0.695499062538147, 0.6682927012443542, 0.0, 0.6682927012443542, + 0.4222148060798645, 0.0, 0.0, 0.0, 0.0, 0.468534380197525, + 0.2862415313720703, 0.0, 0.7860586047172546, 0.0, 0.5762909054756165, + 0.167990580201149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.4222148060798645, 0.7809551954269409, 0.09161896258592606, 0.0, + 0.6892356276512146, 0.7860586047172546, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.6892356276512146, 0.6682927012443542, 0.0, 0.0, 0.6810435056686401, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.13069970905780792, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13069970905780792, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.937499463558197, 0.9396012425422668, 0.19444650411605835, + 0.9396012425422668, 0.9303405284881592, 0.5595709085464478, + 0.6769520044326782, 0.9498411417007446, 0.3085106313228607, + 0.9570466876029968, 0.9285362362861633, 0.0, 0.9468313455581665, + 0.9193881154060364, 0.9339384436607361, 0.8590915203094482, + 0.9542338848114014, 0.0, 0.9573796391487122, 0.0, 0.9512461423873901, + 0.0, 0.9542338848114014, 0.07962363958358765, 0.29162508249282837, + 0.34525856375694275, 0.0, 0.9303405284881592, 0.9468585252761841, + 0.8953604698181152, 0.40690043568611145, 0.9412654638290405, + 0.9468313455581665, 0.9718629121780396, 0.9465429186820984, 0.0, + 0.9650187492370605, 0.0, 0.9403872489929199, 0.9412654638290405, + 0.9396012425422668, 0.0, 0.9542338848114014, 0.9418666362762451, 0.0, + 0.26297900080680847, 0.9663037061691284, 0.26931843161582947, + 0.5429947972297668, 0.9299060106277466 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.6413818001747131, 0.5942000150680542, 0.0, 0.5942000150680542, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8526681065559387, 0.0, + 0.26973628997802734, 0.07907950133085251, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8907350301742554, 0.0015237635234370828, + 0.0, 0.6394904255867004, 0.8526681065559387, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.6394904255867004, 0.5942000150680542, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9363422393798828, 0.9382712244987488, 0.22636201977729797, + 0.9382712244987488, 0.929071307182312, 0.5602494478225708, + 0.6676446199417114, 0.9498655200004578, 0.2629334032535553, + 0.9566150307655334, 0.9273208975791931, 0.0, 0.9457273483276367, + 0.9186585545539856, 0.9325653910636902, 0.86510169506073, + 0.956407904624939, 0.0, 0.9593522548675537, 0.0, 0.9520565271377563, + 0.25211653113365173, 0.956407904624939, 0.20303015410900116, + 0.299277663230896, 0.4186997711658478, 0.25211653113365173, + 0.929071307182312, 0.9459659457206726, 0.899989664554596, + 0.38501429557800293, 0.9399810433387756, 0.9457273483276367, + 0.9735718965530396, 0.9478381276130676, 0.09343190491199493, + 0.9666268825531006, 0.0, 0.9395412802696228, 0.9399810433387756, + 0.9382712244987488, 0.1826792061328888, 0.956407904624939, + 0.9408669471740723, 0.0, 0.44101381301879883, 0.968217670917511, + 0.4180064797401428, 0.4314064085483551, 0.9292559027671814 + ], + [ + 0.9206163287162781, 0.9226289391517639, 0.07096190005540848, + 0.9226289391517639, 0.9111737012863159, 0.49438178539276123, + 0.577799379825592, 0.9338856935501099, 0.0, 0.9424391388893127, + 0.9089133739471436, 0.0, 0.9313528537750244, 0.8985327482223511, + 0.9156853556632996, 0.8678088188171387, 0.9402933716773987, 0.0, + 0.944468080997467, 0.0, 0.9355234503746033, 0.0, 0.9402933716773987, + 0.0, 0.20393262803554535, 0.030735453590750694, 0.0, 0.9111737012863159, + 0.9310257434844971, 0.9023955464363098, 0.1524622142314911, + 0.9245709180831909, 0.9313528537750244, 0.9629756212234497, + 0.9303849339485168, 0.0, 0.9521950483322144, 0.0, 0.9228761792182922, + 0.9245709180831909, 0.9226289391517639, 0.0, 0.9402933716773987, + 0.924801230430603, 0.0, 0.0, 0.9566265940666199, 0.0, + 0.11186230927705765, 0.9097580313682556 + ], + [ + 0.6453346014022827, 0.6412734389305115, 0.0, 0.6412734389305115, + 0.5264101028442383, 0.0, 0.0, 0.41887542605400085, 0.0, + 0.6720107793807983, 0.49316897988319397, 0.0, 0.6899288892745972, + 0.16491016745567322, 0.5847526788711548, 0.4520247280597687, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5264101028442383, + 0.6693958640098572, 0.4429776966571808, 0.0, 0.6504871249198914, + 0.6899288892745972, 0.7844980955123901, 0.0, 0.0, 0.0, 0.0, + 0.5258768200874329, 0.6504871249198914, 0.6412734389305115, 0.0, 0.0, + 0.6071641445159912, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21476638317108154 + ], + [ + 0.9340403079986572, 0.9351713061332703, 0.0795176550745964, + 0.9351713061332703, 0.9262621402740479, 0.5175647735595703, + 0.658846914768219, 0.9513806104660034, 0.006364813540130854, + 0.9573151469230652, 0.924568772315979, 0.0, 0.9440710544586182, + 0.9174661636352539, 0.9296397566795349, 0.8794582486152649, + 0.9606009125709534, 0.0, 0.9635049104690552, 0.0, 0.9547326564788818, + 0.0, 0.9606009125709534, 0.0, 0.22523219883441925, 0.22048857808113098, + 0.0, 0.9262621402740479, 0.9446225166320801, 0.9124925136566162, + 0.251814067363739, 0.9371387362480164, 0.9440710544586182, + 0.9776821732521057, 0.9509009122848511, 0.0, 0.9706209897994995, 0.0, + 0.9388790130615234, 0.9371387362480164, 0.9351713061332703, 0.0, + 0.9606009125709534, 0.9389740228652954, 0.0, 0.07143048197031021, + 0.972345769405365, 0.0, 0.30094215273857117, 0.9284132122993469 + ], + [ + 0.9320887923240662, 0.9333378076553345, 0.0, 0.9333378076553345, + 0.9241817593574524, 0.5038345456123352, 0.6547480225563049, + 0.949235737323761, 0.0, 0.9555336833000183, 0.9224198460578918, 0.0, + 0.9423805475234985, 0.9151056408882141, 0.9276909828186035, + 0.8738383650779724, 0.9571296572685242, 0.0, 0.9603064656257629, 0.0, + 0.9521613121032715, 0.0, 0.9571296572685242, 0.0, 0.1881193071603775, + 0.0, 0.0, 0.9241817593574524, 0.9427818059921265, 0.9076824188232422, + 0.1448112577199936, 0.9353305697441101, 0.9423805475234985, + 0.9751202464103699, 0.9479191303253174, 0.0, 0.9676988124847412, 0.0, + 0.9369789361953735, 0.9353305697441101, 0.9333378076553345, 0.0, + 0.9571296572685242, 0.9370989203453064, 0.0, 0.0, 0.9695542454719543, + 0.0, 0.0, 0.9261722564697266 + ], + [ + 0.8156828284263611, 0.7950649261474609, 0.0, 0.7950649261474609, + 0.73224276304245, 0.0, 0.0, 0.23638135194778442, 0.0, + 0.8773982524871826, 0.709170401096344, 0.0, 0.8637153506278992, 0.0, + 0.7650731205940247, 0.29499053955078125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.73224276304245, 0.865231454372406, + 0.24345846474170685, 0.0, 0.8075575232505798, 0.8637153506278992, + 0.017279380932450294, 0.0, 0.0, 0.0, 0.0, 0.9138534665107727, + 0.8075575232505798, 0.7950649261474609, 0.0, 0.0, 0.8345074653625488, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ] + ], + "velocity_graph_neg": [ + [ + 0.0, 0.0, -0.7120062112808228, 0.0, -0.8277276158332825, + -0.898493230342865, -0.7567191123962402, -0.5180003643035889, + -0.6580418348312378, -0.3673422634601593, -0.8121242523193359, + -0.6286078095436096, 0.0, -0.6898333430290222, -0.8820143938064575, 0.0, + -0.5298582315444946, -0.6359027028083801, -0.509711503982544, + -0.634975790977478, -0.5376363396644592, -0.6401374340057373, + -0.5298582315444946, -0.6149713397026062, -0.8061617612838745, + -0.6687042117118835, -0.6401374340057373, -0.8277276158332825, + -0.2262919843196869, -0.03380454331636429, -0.6888725161552429, 0.0, + 0.0, -0.3684532642364502, -0.5563299059867859, -0.6423702836036682, + -0.4768065810203552, -0.6381706595420837, -0.5825198292732239, 0.0, 0.0, + -0.6520509123802185, -0.5298582315444946, -0.5840763449668884, + -0.6433370113372803, -0.6271675229072571, -0.42436861991882324, + -0.6576603055000305, -0.6680506467819214, -0.6693334579467773 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.016940603032708168, 0.0, 0.0, + -0.03389278054237366, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04325872287154198, + 0.0, -0.04747111350297928, 0.0, -0.036836929619312286, 0.0, 0.0, 0.0, + 0.0, -0.036836929619312286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.037104588001966476, 0.0, -0.04293520748615265, 0.0, 0.0, 0.0, + -0.05816514790058136, 0.0, 0.0, -0.06126631051301956, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, -0.7790889739990234, 0.0, 0.0, -0.9505990147590637, + -0.8218083381652832, -0.45774391293525696, -0.7262772917747498, + -0.07310163229703903, -0.8020796179771423, -0.6945830583572388, 0.0, + -0.6743336915969849, 0.0, 0.0, -0.5439357161521912, -0.7018686532974243, + -0.5163518190383911, -0.701633632183075, -0.5312055945396423, + -0.7063853144645691, -0.5439357161521912, -0.6821277737617493, + -0.8697605133056641, -0.7356099486351013, -0.7063853144645691, 0.0, 0.0, + 0.0, -0.7564207315444946, 0.0, 0.0, -0.3194757103919983, + -0.5653488039970398, -0.7085943222045898, -0.4695509076118469, + -0.7040919065475464, -0.392999529838562, 0.0, 0.0, 0.0, + -0.5439357161521912, 0.0, -0.7099944949150085, -0.6941519379615784, + -0.39803364872932434, -0.7247233390808105, -0.7357996106147766, + -0.6551039218902588 + ], + [ + 0.0, 0.0, -0.25773361325263977, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.15642055869102478, 0.0, 0.0, -0.10790649056434631, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.11982513219118118, 0.0, -0.11992843449115753, 0.0, + -0.12552791833877563, 0.0, -0.08309639990329742, -0.39898252487182617, + -0.15044663846492767, -0.12552791833877563, 0.0, 0.0, 0.0, + -0.18084149062633514, 0.0, 0.0, 0.0, 0.0, -0.1259797215461731, 0.0, + -0.1203366369009018, 0.0, 0.0, 0.0, -0.14946578443050385, 0.0, 0.0, + -0.1342347264289856, -0.09377450495958328, 0.0, -0.13679127395153046, + -0.1473536491394043, 0.0 + ], + [ + 0.0, 0.0, -0.6457950472831726, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.5308655500411987, 0.0, 0.0, -0.46221935749053955, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.47845908999443054, 0.0, -0.4866603910923004, 0.0, + -0.48562079668045044, 0.0, -0.4160946011543274, -0.9214332699775696, + -0.5599440932273865, -0.48562079668045044, 0.0, 0.0, 0.0, + -0.6072580218315125, 0.0, 0.0, 0.0, 0.0, -0.5000309944152832, 0.0, + -0.49161800742149353, 0.0, 0.0, 0.0, -0.5337187647819519, 0.0, 0.0, + -0.5065746307373047, -0.43407684564590454, 0.0, -0.5368285775184631, + -0.5576698184013367, 0.0 + ], + [ + 0.0, 0.0, -0.8902036547660828, 0.0, 0.0, -0.9844622015953064, + -0.9415452480316162, 0.0, 0.0, 0.0, 0.0, -0.809356153011322, 0.0, + -0.25493502616882324, 0.0, 0.0, -0.7107474207878113, + -0.8168039917945862, -0.6646102070808411, -0.816710352897644, + -0.7487311959266663, -0.8214905261993408, -0.7107474207878113, + -0.7964531183242798, -0.9662666320800781, -0.8521594405174255, 0.0, 0.0, + 0.0, 0.0, -0.8721877336502075, 0.0, 0.0, -0.10103996843099594, + -0.7706180214881897, 0.0, -0.5563679337501526, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.7107474207878113, 0.0, -0.8251966238021851, -0.8093149065971375, + -0.3745379149913788, -0.8411516547203064, -0.852289617061615, + -0.24696169793605804 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.17498430609703064, 0.0, 0.0, 0.0, 0.0, 0.0, -0.18377886712551117, + 0.0, -0.2093697041273117, 0.0, -0.16968601942062378, 0.0, + -0.04626503959298134, 0.0, 0.0, -0.16968601942062378, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.17362122237682343, 0.0, -0.1840653270483017, + 0.0, 0.0, 0.0, -0.29040318727493286, 0.0, 0.0, -0.22847941517829895, + 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8438978791236877, 0.0, 0.0, -0.9898490309715271, + -0.8941580057144165, -0.7655117511749268, -0.7913439273834229, 0.0, + -0.07512039691209793, -0.7589762806892395, 0.0, -0.799176812171936, 0.0, + 0.0, -0.702855110168457, -0.7665252089500427, -0.6798433661460876, + -0.7661380171775818, -0.7383368015289307, -0.7712615132331848, + -0.702855110168457, -0.7465370893478394, -0.9260478019714355, + -0.8017615079879761, -0.7712615132331848, 0.0, 0.0, 0.0, + -0.8227463364601135, 0.0, 0.0, -0.4759712815284729, -0.740666925907135, + -0.7734407782554626, -0.6569809913635254, -0.7686947584152222, + -0.4876389503479004, 0.0, 0.0, -0.7848285436630249, -0.702855110168457, + 0.0, -0.774767279624939, -0.7593095302581787, -0.5625927448272705, + -0.7905178666114807, -0.8019222021102905, -0.8746048808097839 + ], + [ + 0.0, 0.0, -0.7886513471603394, 0.0, 0.0, -0.9574145078659058, + -0.8321628570556641, -0.42440176010131836, 0.0, 0.0, 0.0, + -0.7041367888450623, 0.0, -0.6637837290763855, 0.0, 0.0, + -0.5393110513687134, -0.7114424109458923, -0.5090306997299194, + -0.7112796902656555, -0.5197838544845581, -0.7159545421600342, + -0.5393110513687134, -0.6915066838264465, -0.8797454237937927, + -0.7454434037208557, 0.0, 0.0, 0.0, 0.0, -0.7662324905395508, 0.0, 0.0, + -0.2913602590560913, -0.5598525404930115, 0.0, -0.45610764622688293, + 0.0, -0.2718837857246399, 0.0, 0.0, 0.0, -0.5393110513687134, 0.0, + -0.7196633815765381, -0.7035689353942871, -0.37873131036758423, + -0.7345417141914368, -0.7456100583076477, -0.6429240107536316 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.043637510389089584, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0.0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0.0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0.0, 0.0, -0.8493537306785583, 0.0, 0.0, -0.9675696492195129, + -0.8997762799263, 0.0, -0.7994657754898071, 0.0, 0.0, + -0.768632709980011, 0.0, 0.0, 0.0, 0.0, -0.48608702421188354, + -0.7758843898773193, -0.42139869928359985, -0.7760102152824402, + -0.3527677655220032, -0.7803206443786621, -0.48608702421188354, + -0.754727303981781, -0.940492570400238, -0.8106327056884766, + -0.7803206443786621, 0.0, 0.0, 0.0, -0.8305867314338684, 0.0, 0.0, 0.0, + -0.4990590512752533, -0.7833253145217896, -0.26933911442756653, + -0.778824508190155, 0.0, 0.0, 0.0, 0.0, -0.48608702421188354, 0.0, + -0.7842989563941956, -0.7671602368354797, -0.137251615524292, + -0.7997639179229736, -0.8106374144554138, 0.0 + ], + [ + 0.0, 0.0, -0.7590404152870178, 0.0, -0.7814381718635559, + -0.9338588118553162, -0.800162136554718, -0.5049009323120117, 0.0, + -0.27367153763771057, -0.7814376950263977, -0.6753172874450684, 0.0, + -0.6841118335723877, 0.0, 0.0, -0.5501546859741211, -0.6825063824653625, + -0.5272192358970642, -0.6821213364601135, -0.5475922226905823, + -0.686984658241272, -0.5501546859741211, -0.6631956100463867, + -0.8485480546951294, -0.7154874205589294, 0.0, -0.7814381718635559, 0.0, + -0.02974291518330574, -0.7361434698104858, 0.0, 0.0, + -0.36624231934547424, -0.5725536346435547, 0.0, -0.49019038677215576, + 0.0, -0.5211049914360046, 0.0, 0.0, 0.0, -0.5501546859741211, + -0.27827009558677673, -0.6903709173202515, -0.6750733852386475, + -0.42963674664497375, -0.7047054171562195, -0.7156864404678345, + -0.6668528914451599 + ], + [ + 0.0, 0.0, -0.8363222479820251, 0.0, 0.0, -0.557326078414917, + -0.7607558965682983, 0.0, -0.8776840567588806, 0.0, 0.0, + -0.9182469844818115, 0.0, 0.0, 0.0, 0.0, -0.3532048463821411, + -0.9129555225372314, -0.30382201075553894, -0.9130634069442749, + -0.14029088616371155, -0.9067401885986328, -0.3532048463821411, + -0.9095264673233032, -0.7763333320617676, -0.8877249956130981, + -0.9067401885986328, 0.0, 0.0, -0.14219175279140472, + -0.8624013066291809, 0.0, 0.0, -0.0062652104534208775, + -0.26513558626174927, -0.9115805625915527, -0.1740998476743698, + -0.9174321293830872, 0.0, 0.0, 0.0, -0.8928236365318298, + -0.3532048463821411, 0.0, -0.9069894552230835, -0.9019953608512878, + -0.12601397931575775, -0.8965531587600708, -0.8806710243225098, 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.0781395435333252, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.03857885301113129, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09916036576032639, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.950827419757843, 0.0, 0.0, -0.8844595551490784, + -0.9880902171134949, 0.0, -0.9135931730270386, 0.0, 0.0, + -0.8865734934806824, 0.0, 0.0, 0.0, 0.0, -0.9721415042877197, + -0.8934438228607178, 0.0, -0.8935670852661133, 0.0, -0.8977303504943848, + -0.9721415042877197, -0.8732306957244873, -0.9931602478027344, + -0.9264294505119324, -0.8977303504943848, 0.0, 0.0, 0.0, + -0.9420908689498901, 0.0, 0.0, 0.0, 0.0, -0.9007306694984436, 0.0, + -0.8962255120277405, 0.0, 0.0, 0.0, -0.9097959399223328, + -0.9721415042877197, 0.0, -0.9012959003448486, -0.8859502673149109, 0.0, + -0.9166562557220459, -0.9260559678077698, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.03229356184601784, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.07127412408590317, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9229600429534912, 0.0, 0.0, -0.942672610282898, + -0.9728675484657288, 0.0, 0.0, 0.0, 0.0, -0.8491672873497009, 0.0, 0.0, + 0.0, 0.0, -0.7070371508598328, -0.8563997745513916, -0.5791441798210144, + -0.8564795851707458, 0.0, -0.8608670234680176, -0.7070371508598328, + -0.835432767868042, -0.9876035451889038, -0.8912897706031799, 0.0, 0.0, + 0.0, 0.0, -0.9094429016113281, 0.0, 0.0, 0.0, -0.828541100025177, 0.0, + -0.05006162449717522, 0.0, 0.0, 0.0, 0.0, 0.0, -0.7070371508598328, 0.0, + -0.8646791577339172, -0.8483649492263794, 0.0, -0.8807095289230347, + -0.8910755515098572, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.19396281242370605, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2860347628593445, 0.0, + -0.19856363534927368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.10562552511692047, 0.0, -0.1967938095331192, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2504103183746338, 0.0, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.28360113501548767, 0.0, 0.0, 0.0, 0.0, 0.0, -0.21476562321186066, + 0.0, -0.29119864106178284, 0.0, -0.1389153152704239, 0.0, 0.0, 0.0, 0.0, + -0.1389153152704239, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.17119431495666504, 0.0, -0.22758157551288605, 0.0, 0.0, 0.0, + -0.055734507739543915, 0.0, 0.0, -0.2006107121706009, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.16862812638282776, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.12566640973091125, 0.0, 0.0, -0.12127087265253067, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.1282396763563156, 0.0, -0.13290779292583466, 0.0, + -0.12560081481933594, 0.0, -0.0793524906039238, 0.0, + -0.11729738861322403, -0.12560081481933594, 0.0, 0.0, 0.0, + -0.10490868985652924, 0.0, 0.0, 0.0, 0.0, -0.1340409368276596, 0.0, + -0.13616321980953217, 0.0, 0.0, 0.0, -0.1445472240447998, 0.0, 0.0, + -0.1419268101453781, -0.07443458586931229, 0.0, -0.1196354404091835, + -0.10205377638339996, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08054797351360321, 0.0, 0.0, + -0.22542719542980194, 0.0, 0.0, 0.0, 0.0, 0.0, -0.25834473967552185, + 0.0, -0.2817099690437317, 0.0, -0.24374207854270935, 0.0, + -0.05111048370599747, 0.0, 0.0, -0.24374207854270935, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.29975220561027527, 0.0, -0.2931966781616211, + 0.0, 0.0, 0.0, -0.3110036551952362, 0.0, 0.0, -0.3499772250652313, 0.0, + 0.0, -0.20354889333248138, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.19396281242370605, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2860347628593445, 0.0, + -0.19856363534927368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.10562552511692047, 0.0, -0.1967938095331192, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2504103183746338, 0.0, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 0.0, -0.779607892036438, 0.0, 0.0, -0.9507688283920288, + -0.8223935961723328, -0.4585617184638977, -0.7268966436386108, + -0.07375258207321167, -0.8028449416160583, 0.0, 0.0, + -0.6751484274864197, 0.0, 0.0, -0.5447427034378052, -0.7025991678237915, + -0.5171564221382141, -0.7023652791976929, -0.5320048928260803, 0.0, + -0.5447427034378052, -0.6828439235687256, -0.8702430725097656, + -0.7362881302833557, 0.0, 0.0, 0.0, 0.0, -0.7570262551307678, 0.0, 0.0, + -0.32023727893829346, -0.5661568641662598, -0.7093267440795898, + -0.4703267216682434, -0.7048444151878357, -0.3938210904598236, 0.0, 0.0, + 0.0, -0.5447427034378052, 0.0, -0.7107083201408386, -0.6948462128639221, + -0.3988291323184967, -0.7254249453544617, -0.7364533543586731, + -0.6558814644813538 + ], + [ + 0.0, 0.0, -0.766142725944519, 0.0, -0.9137195348739624, + -0.9420938491821289, -0.8123217821121216, -0.6140885353088379, + -0.7126984000205994, -0.4720381498336792, -0.9392663836479187, + -0.6822353601455688, 0.0, -0.7770127654075623, -0.44626539945602417, + 0.0, -0.6028193235397339, -0.6895961165428162, -0.5829227566719055, + -0.6888211369514465, -0.6193459033966064, -0.6940135359764099, + -0.6028193235397339, -0.6692458391189575, -0.8554888367652893, + -0.7230241298675537, -0.6940135359764099, -0.9137195348739624, 0.0, + -0.04988044500350952, -0.7434952259063721, 0.0, 0.0, -0.436565637588501, + -0.6325860619544983, -0.6961170434951782, -0.5545942187309265, + -0.6917248964309692, -0.7225387096405029, 0.0, 0.0, -0.7064266800880432, + -0.6028193235397339, -0.8853359818458557, -0.6972513198852539, + -0.681575357913971, -0.49488067626953125, -0.7119417786598206, + -0.7226921916007996, -0.7728641629219055 + ], + [ + 0.0, 0.0, -0.8904911279678345, 0.0, 0.0, -0.6200758218765259, + -0.8303289413452148, 0.0, -0.9275062084197998, 0.0, 0.0, + -0.9574045538902283, 0.0, 0.0, 0.0, 0.0, -0.4335181415081024, + -0.9529858827590942, -0.3755953311920166, -0.9542689323425293, + -0.17169077694416046, -0.948471188545227, -0.4335181415081024, + -0.951733410358429, -0.8385818600654602, -0.9354369640350342, + -0.948471188545227, 0.0, 0.0, 0.0, -0.9154114127159119, 0.0, 0.0, + -0.0037625611294060946, -0.3242562413215637, -0.9529353976249695, + -0.2144426852464676, -0.9570935964584351, 0.0, 0.0, 0.0, + -0.939483106136322, -0.4335181415081024, 0.0, -0.9491598606109619, + -0.9461429119110107, -0.15509870648384094, -0.9426960349082947, + -0.9311001896858215, 0.0 + ], + [ + 0.0, 0.0, -0.17718777060508728, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.2566702365875244, 0.0, 0.0, -0.19781999289989471, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.22233960032463074, 0.0, -0.23348161578178406, 0.0, + -0.22508205473423004, 0.0, -0.09667447209358215, 0.0, + -0.18350408971309662, -0.22508205473423004, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, -0.23277883231639862, 0.0, -0.2266206294298172, 0.0, 0.0, + 0.0, -0.3173876702785492, 0.0, 0.0, -0.2733706831932068, + -0.0760316401720047, 0.0, -0.18603943288326263, -0.10582669824361801, + 0.0 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0.0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0.0, + 0.0, -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0.0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0.0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0.0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0.0, 0.0, -0.946200966835022, 0.0, 0.0, -0.9536651372909546, + -0.9815068244934082, 0.0, -0.9046499729156494, 0.0, 0.0, + -0.876510739326477, 0.0, -0.04644086956977844, 0.0, 0.0, + -0.9209373593330383, -0.8835890889167786, -0.9074634313583374, + -0.8829982280731201, -0.709896445274353, -0.8880400657653809, + -0.9209373593330383, -0.8647555112838745, -0.98978590965271, + -0.9155617952346802, -0.8880400657653809, 0.0, 0.0, 0.0, + -0.9325156211853027, 0.0, 0.0, 0.0, -0.8544745445251465, + -0.8899013996124268, -0.9691345691680908, -0.8853315711021423, 0.0, 0.0, + 0.0, -0.8995015621185303, -0.9209373593330383, 0.0, -0.8909935355186462, + -0.8772528767585754, -0.777913510799408, -0.9055085182189941, + -0.9152224659919739, -0.012976855039596558 + ], + [ + 0.0, 0.0, -0.9337804913520813, 0.0, 0.0, -0.9038553237915039, + -0.9798886775970459, 0.0, 0.0, 0.0, 0.0, -0.8647330403327942, 0.0, 0.0, + 0.0, 0.0, -0.4909673035144806, -0.8717935681343079, + -0.059610139578580856, -0.8720062971115112, 0.0, -0.8761419057846069, + -0.4909673035144806, -0.8506245017051697, -0.9911125302314758, + -0.9060645699501038, 0.0, 0.0, 0.0, 0.0, -0.923003077507019, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.4909673035144806, 0.0, + -0.8799822330474854, -0.8635164499282837, 0.0, -0.8958193063735962, + -0.9057195782661438, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.11542823165655136, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0931195393204689, 0.0, + -0.14593791961669922, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.27822044491767883, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, -0.08928326517343521, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9477829933166504, 0.0, 0.0, -0.9290879368782043, + -0.9872416257858276, 0.0, 0.0, 0.0, 0.0, -0.8763316869735718, 0.0, 0.0, + 0.0, 0.0, -0.7609349489212036, -0.8836007714271545, -0.634563148021698, + -0.8836711645126343, 0.0, -0.8881282210350037, -0.7609349489212036, + -0.8636199235916138, -0.9935269355773926, -0.9180521965026855, 0.0, 0.0, + 0.0, 0.0, -0.9353630542755127, 0.0, 0.0, 0.0, -0.5171367526054382, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.7609349489212036, 0.0, + -0.8918940424919128, -0.8764418363571167, 0.0, -0.9078019857406616, + -0.9178204536437988, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8296747207641602, 0.0, 0.0, -0.979621946811676, + -0.8788198828697205, -0.5379257202148438, 0.0, 0.0, 0.0, + -0.7450671195983887, 0.0, -0.848019003868103, 0.0, 0.0, + -0.6185047626495361, -0.7525266408920288, -0.5856917500495911, + -0.7522907257080078, -0.6195651888847351, -0.7571994066238403, + -0.6185047626495361, -0.732287585735321, -0.9175415635108948, + -0.7874626517295837, 0.0, 0.0, 0.0, 0.0, -0.8084316253662109, 0.0, 0.0, + -0.30985942482948303, -0.6538456678390503, 0.0, -0.5232192873954773, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.6185047626495361, 0.0, -0.7608258128166199, + -0.7448807954788208, -0.4282705783843994, -0.7763001918792725, + -0.7876691818237305, -0.8818898797035217 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0.0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0.0, + 0.0, -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0.0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.1194436103105545, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11758587509393692, 0.0, + -0.15922626852989197, 0.0, -0.06433702260255814, 0.0, 0.0, 0.0, 0.0, + -0.06433702260255814, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.1005786806344986, 0.0, -0.13795040547847748, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.16794657707214355, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, -0.7722906470298767, 0.0, -0.672976016998291, + -0.9469603300094604, -0.8185788989067078, -0.5510818362236023, + -0.7184768319129944, -0.2536085247993469, -0.8961593508720398, + -0.6879361867904663, 0.0, -0.7582013010978699, 0.0, 0.0, + -0.5780461430549622, -0.6953597664833069, -0.5537449717521667, + -0.6946479678153992, -0.5840862989425659, -0.6997684836387634, + -0.5780461430549622, -0.6744765639305115, -0.8637142181396484, + -0.7291181087493896, -0.6997684836387634, -0.672976016998291, 0.0, 0.0, + -0.749650239944458, 0.0, 0.0, -0.3723272383213043, -0.6070451140403748, + -0.702041506767273, -0.5134016871452332, -0.6976483464241028, + -0.6282814145088196, 0.0, 0.0, -0.7123656868934631, -0.5780461430549622, + 0.0, -0.703151524066925, -0.6868947148323059, -0.4462285339832306, + -0.7179582715034485, -0.7287024855613708, -0.7473130226135254 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.05254611745476723, 0.0, 0.0, 0.0, 0.0, 0.0, -0.02149735949933529, + 0.0, -0.06650425493717194, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0948498398065567, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.02964828908443451, 0.0, 0.0, + -0.4420463740825653, 0.0, 0.0, 0.0, 0.0, 0.0, -0.41362714767456055, 0.0, + -0.5241114497184753, 0.0, -0.38701164722442627, 0.0, + -0.2589840888977051, 0.0, 0.0, -0.38701164722442627, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, -0.35662782192230225, 0.0, -0.3676978647708893, 0.0, + 0.0, 0.0, -0.27744007110595703, 0.0, 0.0, -0.45104897022247314, 0.0, + 0.0, -0.0540756955742836, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9505603313446045, 0.0, 0.0, -0.9277820587158203, + -0.9849429726600647, 0.0, -0.9117993116378784, 0.0, 0.0, + -0.8850699663162231, 0.0, 0.0, 0.0, 0.0, -0.9644391536712646, + -0.8919291496276855, -0.9608743786811829, -0.8914299011230469, + -0.397500604391098, -0.8962222337722778, -0.9644391536712646, + -0.8728280663490295, -0.99196857213974, -0.9232093095779419, + -0.8962222337722778, 0.0, 0.0, 0.0, -0.9391534328460693, 0.0, 0.0, 0.0, + -0.8288756012916565, -0.8983454704284668, -0.6073521971702576, + -0.8938975930213928, 0.0, 0.0, 0.0, -0.9072363972663879, + -0.9644391536712646, 0.0, -0.8991549015045166, -0.8852534890174866, 0.0, + -0.9134413599967957, -0.9227463006973267, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.2304457128047943, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2543693780899048, 0.0, + -0.31269365549087524, 0.0, -0.21807238459587097, 0.0, + -0.016527514904737473, 0.0, 0.0, -0.21807238459587097, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.3246256113052368, 0.0, -0.3199475407600403, + 0.0, 0.0, 0.0, -0.2594970464706421, 0.0, 0.0, -0.37568399310112, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.024907004088163376, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.24054409563541412, 0.0, 0.0, -0.25269585847854614, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.2755926847457886, 0.0, -0.3162230849266052, 0.0, + -0.2729381322860718, 0.0, -0.10839133709669113, 0.0, + -0.18961884081363678, -0.2729381322860718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.30935370922088623, 0.0, -0.298736572265625, 0.0, 0.0, 0.0, + -0.49049776792526245, 0.0, 0.0, -0.3620716631412506, + -0.06655518710613251, 0.0, -0.2807464897632599, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8584626913070679, 0.0, 0.0, -0.979270875453949, + -0.909518301486969, 0.0, -0.8076501488685608, 0.0, 0.0, + -0.7757360935211182, 0.0, -0.2061820924282074, 0.0, 0.0, + -0.5298843383789062, -0.7831470966339111, -0.4682753086090088, + -0.7832844853401184, -0.42705103754997253, -0.7877506017684937, + -0.5298843383789062, -0.762237012386322, -0.9466448426246643, + -0.8186197876930237, -0.7877506017684937, 0.0, 0.0, 0.0, + -0.8391203880310059, 0.0, 0.0, 0.0, -0.5514553189277649, + -0.7905962467193604, -0.32642799615859985, -0.7859317064285278, 0.0, + 0.0, 0.0, 0.0, -0.5298843383789062, 0.0, -0.7917589545249939, + -0.7748526334762573, -0.18125492334365845, -0.8075706958770752, + -0.8187859654426575, 0.0 + ] + ], + "velocity_params": { + "embeddings": ["umap"], + "fit_offset": false, + "mode": "dynamical", + "mode_neighbors": "distances", + "n_recurse_neighbors": 2, + "perc": [5, 95] + } + } +} From 6ec2b0c84d113ac0c61ef073b5b382ca40f2ebcf Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 01:07:38 -0400 Subject: [PATCH 166/177] wip(tests): sketch smoke test execution of VelocityModule Signed-off-by: Cameron Smith --- .../tests/models/test_velocity_module.py | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/src/pyrovelocity/tests/models/test_velocity_module.py b/src/pyrovelocity/tests/models/test_velocity_module.py index 59e7e9cc8..058c8246a 100644 --- a/src/pyrovelocity/tests/models/test_velocity_module.py +++ b/src/pyrovelocity/tests/models/test_velocity_module.py @@ -1,7 +1,105 @@ """Tests for `pyrovelocity._velocity_module` module.""" +import pytest +import torch +from pyro.nn import PyroModule + +from pyrovelocity.models._velocity_module import VelocityModule + + def test_load__velocity_module(): from pyrovelocity.models import _velocity_module print(_velocity_module.__file__) + + +class TestVelocityModule: + @pytest.fixture + def default_config(self): + return { + "num_cells": 100, + "num_genes": 50, + "model_type": "auto", + "guide_type": "auto", + "likelihood": "Poisson", + "shared_time": True, + "t_scale_on": False, + "plate_size": 2, + "latent_factor": "none", + "latent_factor_operation": "selection", + "latent_factor_size": 30, + "inducing_point_size": 0, + "include_prior": True, + "use_gpu": "cpu", + "num_aux_cells": 0, + "only_cell_times": True, + "decoder_on": False, + "add_offset": False, + "correct_library_size": True, + "cell_specific_kinetics": None, + "kinetics_num": None, + } + + @pytest.fixture + def velocity_module(self, default_config): + return VelocityModule(**default_config) + + # def test_initialization(self, velocity_module, default_config): + # assert isinstance(velocity_module, PyroModule) + # assert velocity_module.num_cells == default_config["num_cells"] + # assert velocity_module.num_genes == default_config["num_genes"] + # assert velocity_module.guide_type == default_config["guide_type"] + + # @pytest.mark.parametrize("guide_type", ["auto", "auto_t0_constraint"]) + # def test_guide_type(self, default_config, guide_type): + # config = default_config.copy() + # config["guide_type"] = guide_type + # velocity_module = VelocityModule(**config) + # assert velocity_module.guide_type == guide_type + + # def test_forward(self, velocity_module): + # u_obs = torch.rand(100, 50) + # s_obs = torch.rand(100, 50) + # u_log_library = torch.rand(100, 1) + # s_log_library = torch.rand(100, 1) + + # output = velocity_module( + # u_obs, + # s_obs, + # u_log_library, + # s_log_library, + # u_log_library, + # s_log_library, + # u_log_library, + # s_log_library, + # torch.arange(100), + # ) + + # assert isinstance(output, tuple) + # assert len(output) == 2 + # assert all(isinstance(item, dict) for item in output) + + # def test_create_predictive(self, velocity_module): + # predictive = velocity_module.create_predictive() + # assert callable(predictive) + + # def test_get_fn_args_from_batch(self, velocity_module): + # batch = { + # "U": torch.rand(100, 50), + # "X": torch.rand(100, 50), + # "u_lib_size": torch.rand(100, 1), + # "s_lib_size": torch.rand(100, 1), + # "u_lib_size_mean": torch.rand(100, 1), + # "s_lib_size_mean": torch.rand(100, 1), + # "u_lib_size_scale": torch.rand(100, 1), + # "s_lib_size_scale": torch.rand(100, 1), + # "ind_x": torch.arange(100), + # } + + # args, kwargs = velocity_module._get_fn_args_from_batch(batch) + + # assert isinstance(args, tuple) + # assert len(args) == 10 # 9 from batch + 1 None for time_info + # assert isinstance(kwargs, dict) + # assert len(kwargs) == 0 From a096c8ceb8b1a4ba991a5b861d71a52f76e67e90 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 01:08:28 -0400 Subject: [PATCH 167/177] fix(tests): rename small deserialized data fixture in plots Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/plots/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrovelocity/tests/plots/conftest.py b/src/pyrovelocity/tests/plots/conftest.py index 18bbf29a2..10a81b628 100644 --- a/src/pyrovelocity/tests/plots/conftest.py +++ b/src/pyrovelocity/tests/plots/conftest.py @@ -6,7 +6,7 @@ @pytest.fixture -def adata_preprocessed(): +def adata_preprocessed_3_4(): fixture_file_path = ( files("pyrovelocity.tests.data") / "preprocessed_3_4.json" ) From 87523196cf126eb6ad903dfe464bb6b42afd2c80 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 01:09:05 -0400 Subject: [PATCH 168/177] fix(tests): load preprocessed deserialized data fixture globally Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/conftest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/pyrovelocity/tests/conftest.py b/src/pyrovelocity/tests/conftest.py index dfe1d3158..b656db385 100644 --- a/src/pyrovelocity/tests/conftest.py +++ b/src/pyrovelocity/tests/conftest.py @@ -1,8 +1,11 @@ +from importlib.resources import files + import pytest import scanpy as sc from pyrovelocity.analysis.analyze import top_mae_genes from pyrovelocity.io.compressedpickle import CompressedPickle +from pyrovelocity.io.serialization import load_anndata_from_json from pyrovelocity.tasks.data import download_dataset from pyrovelocity.tasks.postprocess import postprocess_dataset from pyrovelocity.tasks.preprocess import preprocess_dataset @@ -11,6 +14,14 @@ from pyrovelocity.utils import generate_sample_data +@pytest.fixture +def adata_preprocessed_pancreas_50_7(): + fixture_file_path = ( + files("pyrovelocity.tests.data") / "preprocessed_pancreas_50_7.json" + ) + return load_anndata_from_json(fixture_file_path) + + @pytest.fixture def default_sample_data(): """Default sample data from `pyrovelocity.utils.generate_sample_data`. From be70f2c96d666db17a98575e6ce9e1746f2208eb Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 12:13:39 -0400 Subject: [PATCH 169/177] fix(interfaces): add default factory for preprocess selected_genes empty list resolves ``` ValueError: mutable default for field selected_genes is not allowed: use default_factory ``` Signed-off-by: Cameron Smith --- src/pyrovelocity/interfaces.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyrovelocity/interfaces.py b/src/pyrovelocity/interfaces.py index 9556d59b1..38f3415bd 100644 --- a/src/pyrovelocity/interfaces.py +++ b/src/pyrovelocity/interfaces.py @@ -1,4 +1,4 @@ -from dataclasses import make_dataclass +from dataclasses import field, make_dataclass from enum import Enum from beartype.typing import TYPE_CHECKING, Any, Dict, Tuple, Type @@ -61,6 +61,7 @@ class PyroVelocityTrainInterface(DataClassJSONMixin): "adata": (str, "data/external/simulated.h5ad"), "data_processed_path": (str, "data/processed"), "reports_processed_path": (str, "reports/processed"), + "selected_genes": (list[str], field(default_factory=lambda: [""])), } preprocess_data_fields = create_dataclass_from_callable( From 0b63cc69a3702298ba19ac4ae653fff4d9a30a00 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 14:07:07 -0400 Subject: [PATCH 170/177] feat(io): optionally check file hashes when (de)serializing json files Signed-off-by: Cameron Smith --- src/pyrovelocity/io/serialization.py | 49 +++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/src/pyrovelocity/io/serialization.py b/src/pyrovelocity/io/serialization.py index a8afde598..4fcf29cf3 100644 --- a/src/pyrovelocity/io/serialization.py +++ b/src/pyrovelocity/io/serialization.py @@ -9,6 +9,7 @@ from beartype.typing import Any, Dict from scipy import sparse +from pyrovelocity.io.hash import hash_file from pyrovelocity.utils import ( configure_logging, ensure_numpy_array, @@ -185,31 +186,71 @@ def deserialize_anndata(data: Dict[str, Any]) -> AnnData | AnnDataRaw: def save_anndata_to_json( adata: AnnData, filename: str | Path, -) -> None: + expected_hash: str | None = None, +) -> str: """ Save an AnnData object to a JSON file. Args: adata: AnnData object to save filename: Name of the JSON file to save to + expected_hash: Optional hash to validate against + + Returns: + SHA-256 hash of the saved file """ + filename = Path(filename) adata_dict = serialize_anndata(adata) - with open(filename, "w") as f: + + with filename.open("w") as f: json.dump(adata_dict, f, indent=4, cls=NumpyEncoder) + file_hash = hash_file(filename) + logger.info(f"\nSaved file: {filename}\nSHA-256 hash: {file_hash}\n") + + if expected_hash is not None: + if file_hash == expected_hash: + logger.info("Hash validation succeeded.") + else: + logger.warning( + f"\nHash mismatch.\n" + f"Expected: {expected_hash},\n" + f"Actual: {file_hash}\n\n" + ) + + return file_hash + @beartype -def load_anndata_from_json(filename: str | Path) -> AnnData: +def load_anndata_from_json( + filename: str | Path, + expected_hash: str | None = None, +) -> AnnData: """ Load an AnnData object from a JSON file. Args: filename: Name of the JSON file to load from + expected_hash: Optional hash to validate against Returns: Reconstructed AnnData object """ - with open(filename, "r") as f: + filename = Path(filename) + file_hash = hash_file(filename) + logger.info(f"\nLoading file: {filename}\nSHA-256 hash: {file_hash}\n\n") + + if expected_hash is not None: + if file_hash == expected_hash: + logger.info("Hash validation succeeded.") + else: + logger.warning( + f"\nHash mismatch.\n" + f"Expected: {expected_hash}\n" + f"Actual: {file_hash}\n\n" + ) + + with filename.open("r") as f: adata_dict = json.load(f) return deserialize_anndata(adata_dict) From f03454d1339de569fe4c0342cff357249735d1ca Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 14:08:37 -0400 Subject: [PATCH 171/177] test(io): update serialization tests with expectation specs Signed-off-by: Cameron Smith --- .../tests/io/test_serialization.py | 195 +++++++++++++----- 1 file changed, 144 insertions(+), 51 deletions(-) diff --git a/src/pyrovelocity/tests/io/test_serialization.py b/src/pyrovelocity/tests/io/test_serialization.py index f2ac4d42f..c2785bfb8 100644 --- a/src/pyrovelocity/tests/io/test_serialization.py +++ b/src/pyrovelocity/tests/io/test_serialization.py @@ -1,4 +1,5 @@ -import tempfile +import json +from unittest.mock import patch import numpy as np import pandas as pd @@ -15,73 +16,125 @@ ) -@pytest.fixture +@pytest.fixture(scope="function") def sample_adata(): + """Create a sample AnnData object for testing.""" return create_sample_anndata(5, 4) +@pytest.fixture(scope="function") +def mock_hash_file(): + """Mock the hash_file function.""" + with patch("pyrovelocity.io.serialization.hash_file") as mock: + mock.return_value = "mocked_hash" + yield mock + + def test_create_sample_anndata(): + """Test the creation of a sample AnnData object.""" adata = create_sample_anndata(5, 4) - assert isinstance(adata, AnnData) - assert adata.n_obs == 5 - assert adata.n_vars == 4 - assert "batch" in adata.obs.columns - assert "a" in adata.obsm - assert "a" in adata.layers + assert isinstance(adata, AnnData), "Expected an AnnData object" + assert adata.n_obs == 5, "Expected 5 observations" + assert adata.n_vars == 4, "Expected 4 variables" + assert "batch" in adata.obs.columns, "Expected 'batch' column in obs" + assert "a" in adata.obsm, "Expected 'a' in obsm" + assert "a" in adata.layers, "Expected 'a' in layers" def test_serialize_deserialize_anndata(sample_adata): + """Test serialization and deserialization of AnnData object.""" serialized = serialize_anndata(sample_adata) deserialized = deserialize_anndata(serialized) - assert np.allclose(sample_adata.X, deserialized.X) - assert sample_adata.obs.equals(deserialized.obs) - assert sample_adata.var.equals(deserialized.var) - assert np.allclose(sample_adata.obsm["a"], deserialized.obsm["a"]) - assert np.allclose(sample_adata.layers["a"], deserialized.layers["a"]) - assert sample_adata.uns == deserialized.uns + assert np.allclose(sample_adata.X, deserialized.X), "Mismatch in X matrix" + assert sample_adata.obs.equals( + deserialized.obs + ), "Mismatch in obs DataFrame" + assert sample_adata.var.equals( + deserialized.var + ), "Mismatch in var DataFrame" + assert np.allclose( + sample_adata.obsm["a"], deserialized.obsm["a"] + ), "Mismatch in obsm['a']" + assert np.allclose( + sample_adata.layers["a"], deserialized.layers["a"] + ), "Mismatch in layers['a']" + assert sample_adata.uns == deserialized.uns, "Mismatch in uns dictionary" -def test_save_load_anndata_json(sample_adata, tmp_path): +def test_save_load_anndata_json(sample_adata, tmp_path, mock_hash_file, caplog): + """Test saving and loading AnnData object to/from JSON.""" file_path = tmp_path / "test_adata.json" + save_anndata_to_json(sample_adata, file_path) - assert file_path.exists() + assert ( + file_path.exists() + ), f"Expected file {file_path} to exist after saving" + mock_hash_file.assert_called_once_with(file_path) + assert ( + f"\nSaved file: {file_path}\nSHA-256 hash: mocked_hash\n" in caplog.text + ) + + caplog.clear() loaded_adata = load_anndata_from_json(file_path) - assert np.allclose(sample_adata.X, loaded_adata.X) - assert sample_adata.obs.equals(loaded_adata.obs) - assert sample_adata.var.equals(loaded_adata.var) - assert np.allclose(sample_adata.obsm["a"], loaded_adata.obsm["a"]) - assert np.allclose(sample_adata.layers["a"], loaded_adata.layers["a"]) - assert sample_adata.uns == loaded_adata.uns + mock_hash_file.assert_called_with(file_path) + assert ( + f"\nLoading file: {file_path}\nSHA-256 hash: mocked_hash\n" + in caplog.text + ) + + assert np.allclose( + sample_adata.X, loaded_adata.X + ), "Mismatch in X matrix after loading" + assert sample_adata.obs.equals( + loaded_adata.obs + ), "Mismatch in obs DataFrame after loading" + assert sample_adata.var.equals( + loaded_adata.var + ), "Mismatch in var DataFrame after loading" + assert np.allclose( + sample_adata.obsm["a"], loaded_adata.obsm["a"] + ), "Mismatch in obsm['a'] after loading" + assert np.allclose( + sample_adata.layers["a"], loaded_adata.layers["a"] + ), "Mismatch in layers['a'] after loading" + assert ( + sample_adata.uns == loaded_adata.uns + ), "Mismatch in uns dictionary after loading" def test_serialize_large_anndata(): + """Test serialization of a large AnnData object.""" large_adata = create_sample_anndata(1000, 100) serialized = serialize_anndata(large_adata) - assert isinstance(serialized, dict) + assert isinstance( + serialized, dict + ), "Expected serialized object to be a dictionary" assert all( key in serialized for key in ["X", "obs", "var", "obsm", "layers", "uns"] - ) + ), "Missing expected keys in serialized dictionary" def test_deserialize_invalid_data(): + """Test deserialization with invalid data.""" invalid_data = { "X": [[1, 2], [3, 4]], - # "obs": {}, "var": {}, "uns": {}, "obsm": {}, "varm": {}, "layers": {}, - # "shape": (2, 2), } - with pytest.raises(ValueError): + with pytest.raises( + ValueError, match="Invalid data format: missing required keys" + ): deserialize_anndata(invalid_data) -def test_save_load_empty_anndata(tmp_path): +def test_save_load_empty_anndata(tmp_path, mock_hash_file, caplog): + """Test saving and loading an empty AnnData object.""" empty_adata = AnnData( X=np.empty((0, 0)), obs=pd.DataFrame(index=[]), @@ -90,11 +143,19 @@ def test_save_load_empty_anndata(tmp_path): file_path = tmp_path / "empty_adata.json" save_anndata_to_json(empty_adata, file_path) loaded_adata = load_anndata_from_json(file_path) - assert loaded_adata.n_obs == 0 - assert loaded_adata.n_vars == 0 + assert ( + loaded_adata.n_obs == 0 + ), "Expected 0 observations in loaded empty AnnData" + assert ( + loaded_adata.n_vars == 0 + ), "Expected 0 variables in loaded empty AnnData" + assert ( + mock_hash_file.call_count == 2 + ), "Expected hash_file to be called twice" def test_serialize_deserialize_sparse_matrix(): + """Test serialization and deserialization of AnnData with sparse matrix.""" sparse_adata = AnnData(X=sparse.random(100, 100, density=0.1, format="csr")) sparse_adata.X[sparse_adata.X < 0.9] = 0 sparse_adata.X = sparse_adata.X.tocsr() @@ -102,10 +163,13 @@ def test_serialize_deserialize_sparse_matrix(): serialized = serialize_anndata(sparse_adata) deserialized = deserialize_anndata(serialized) - assert np.allclose(sparse_adata.X.toarray(), deserialized.X) + assert np.allclose( + sparse_adata.X.toarray(), deserialized.X + ), "Mismatch in sparse matrix after serialization/deserialization" def test_serialize_deserialize_with_complex_uns(): + """Test serialization and deserialization of AnnData with complex uns.""" adata = create_sample_anndata(100, 50) adata.uns["complex_item"] = { "nested": {"a": 1, "b": [1, 2, 3]}, @@ -118,14 +182,15 @@ def test_serialize_deserialize_with_complex_uns(): assert ( deserialized.uns["complex_item"]["nested"] == adata.uns["complex_item"]["nested"] - ) + ), "Mismatch in nested dictionary in uns" assert np.array_equal( deserialized.uns["complex_item"]["array"], adata.uns["complex_item"]["array"], - ) + ), "Mismatch in numpy array in uns" def test_serialize_deserialize_with_nested_numpy_array_in_uns(sample_adata): + """Test serialization and deserialization of AnnData with nested numpy arrays in uns.""" adata = sample_adata.copy() adata.uns["numpy_array"] = np.array([1, 2, 3]) adata.uns["nested_dict"] = {"array": np.array([4, 5, 6])} @@ -133,44 +198,72 @@ def test_serialize_deserialize_with_nested_numpy_array_in_uns(sample_adata): serialized = serialize_anndata(adata) deserialized = deserialize_anndata(serialized) - assert isinstance(deserialized.uns["numpy_array"], np.ndarray) + assert isinstance( + deserialized.uns["numpy_array"], np.ndarray + ), "Expected numpy array in uns" assert np.array_equal( adata.uns["numpy_array"], deserialized.uns["numpy_array"] - ) - assert isinstance(deserialized.uns["nested_dict"]["array"], np.ndarray) + ), "Mismatch in numpy array in uns" + assert isinstance( + deserialized.uns["nested_dict"]["array"], np.ndarray + ), "Expected numpy array in nested dict in uns" assert np.array_equal( adata.uns["nested_dict"]["array"], deserialized.uns["nested_dict"]["array"], - ) + ), "Mismatch in numpy array in nested dict in uns" def test_load_anndata_from_nonexistent_file(): - with pytest.raises(FileNotFoundError): + """Test loading AnnData from a nonexistent file.""" + with pytest.raises(FileNotFoundError, match="No such file or directory"): load_anndata_from_json("nonexistent_file.json") def test_save_anndata_to_invalid_path(sample_adata): + """Test saving AnnData to an invalid path.""" with pytest.raises(OSError): save_anndata_to_json(sample_adata, "/invalid/path/adata.json") -def test_roundtrip_with_all_attributes(): +def test_roundtrip_with_all_attributes(tmp_path, mock_hash_file): + """Test full roundtrip serialization and deserialization with all AnnData attributes.""" adata = create_sample_anndata(10, 5) adata.raw = adata.copy() adata.obsp["distances"] = np.random.random((10, 10)) adata.varp["gene_correlation"] = np.random.random((5, 5)) - with tempfile.NamedTemporaryFile( - mode="w+", suffix=".json", delete=False - ) as tmp: - save_anndata_to_json(adata, tmp.name) - loaded_adata = load_anndata_from_json(tmp.name) - - assert np.allclose(adata.X, loaded_adata.X) - assert adata.obs.equals(loaded_adata.obs) - assert adata.var.equals(loaded_adata.var) - assert np.allclose(adata.raw.X, loaded_adata.raw.X) - assert np.allclose(adata.obsp["distances"], loaded_adata.obsp["distances"]) + file_path = tmp_path / "roundtrip_adata.json" + save_anndata_to_json(adata, file_path) + loaded_adata = load_anndata_from_json(file_path) + + assert np.allclose( + adata.X, loaded_adata.X + ), "Mismatch in X matrix after roundtrip" + assert adata.obs.equals( + loaded_adata.obs + ), "Mismatch in obs DataFrame after roundtrip" + assert adata.var.equals( + loaded_adata.var + ), "Mismatch in var DataFrame after roundtrip" + assert np.allclose( + adata.raw.X, loaded_adata.raw.X + ), "Mismatch in raw.X after roundtrip" + assert np.allclose( + adata.obsp["distances"], loaded_adata.obsp["distances"] + ), "Mismatch in obsp['distances'] after roundtrip" assert np.allclose( adata.varp["gene_correlation"], loaded_adata.varp["gene_correlation"] - ) + ), "Mismatch in varp['gene_correlation'] after roundtrip" + assert ( + mock_hash_file.call_count == 2 + ), "Expected hash_file to be called twice" + + +def test_handle_corrupted_json(tmp_path): + """Test handling of corrupted JSON files.""" + file_path = tmp_path / "corrupted.json" + with file_path.open("w") as f: + f.write("{This is not valid JSON") + + with pytest.raises(json.JSONDecodeError): + load_anndata_from_json(file_path) From 4198735c7d89b2c733f6919356da5d99627e68b7 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 14:19:33 -0400 Subject: [PATCH 172/177] fix(tests): update fixture name for preprocessed_3_4 in plot histograms Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/plots/test_count_histograms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyrovelocity/tests/plots/test_count_histograms.py b/src/pyrovelocity/tests/plots/test_count_histograms.py index 1622f86a2..1bc2e0131 100644 --- a/src/pyrovelocity/tests/plots/test_count_histograms.py +++ b/src/pyrovelocity/tests/plots/test_count_histograms.py @@ -1,8 +1,8 @@ from pyrovelocity.plots import plot_spliced_unspliced_histogram -def test_plot_spliced_unspliced_histogram(adata_preprocessed, tmp_path): - chart = plot_spliced_unspliced_histogram(adata_preprocessed) +def test_plot_spliced_unspliced_histogram(adata_preprocessed_3_4, tmp_path): + chart = plot_spliced_unspliced_histogram(adata_preprocessed_3_4) chart.save(tmp_path / "spliced_unspliced_histogram.pdf") chart.save(tmp_path / "spliced_unspliced_histogram.svg") chart.save(tmp_path / "spliced_unspliced_histogram.png") From 9163a92b6dda20a7c72aa37a887eecefde8bd96b Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 14:29:27 -0400 Subject: [PATCH 173/177] fix(tests): exercise hash check in data serialization Signed-off-by: Cameron Smith --- .../tests/io/test_serialization.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/pyrovelocity/tests/io/test_serialization.py b/src/pyrovelocity/tests/io/test_serialization.py index c2785bfb8..9e96b4a8b 100644 --- a/src/pyrovelocity/tests/io/test_serialization.py +++ b/src/pyrovelocity/tests/io/test_serialization.py @@ -7,6 +7,7 @@ from anndata import AnnData from scipy import sparse +from pyrovelocity.io.hash import hash_file from pyrovelocity.io.serialization import ( create_sample_anndata, deserialize_anndata, @@ -104,6 +105,55 @@ def test_save_load_anndata_json(sample_adata, tmp_path, mock_hash_file, caplog): ), "Mismatch in uns dictionary after loading" +@pytest.fixture +def expected_hash(sample_adata, tmp_path): + """Generate expected hash for a sample AnnData object.""" + file_path = tmp_path / "temp_adata.json" + save_anndata_to_json(sample_adata, file_path) + return hash_file(file_path) + + +def test_save_load_anndata_json_with_hash( + sample_adata, tmp_path, expected_hash, caplog +): + """Test saving and loading AnnData object to/from JSON with hash validation.""" + file_path = tmp_path / "test_adata.json" + + saved_hash = save_anndata_to_json( + sample_adata, file_path, expected_hash=expected_hash + ) + assert saved_hash == expected_hash + assert "Hash validation succeeded" in caplog.text + + caplog.clear() + + loaded_adata = load_anndata_from_json( + file_path, expected_hash=expected_hash + ) + assert "Hash validation succeeded" in caplog.text + + assert np.allclose(sample_adata.X, loaded_adata.X) + assert sample_adata.obs.equals(loaded_adata.obs) + assert sample_adata.var.equals(loaded_adata.var) + + +def test_save_load_anndata_json_with_incorrect_hash( + sample_adata, tmp_path, expected_hash, caplog +): + """Test saving and loading AnnData object to/from JSON with incorrect hash.""" + file_path = tmp_path / "test_adata.json" + incorrect_hash = "incorrect_hash_value" + assert incorrect_hash != expected_hash + + save_anndata_to_json(sample_adata, file_path, expected_hash=incorrect_hash) + assert "Hash mismatch" in caplog.text + + caplog.clear() + + load_anndata_from_json(file_path, expected_hash=incorrect_hash) + assert "Hash mismatch" in caplog.text + + def test_serialize_large_anndata(): """Test serialization of a large AnnData object.""" large_adata = create_sample_anndata(1000, 100) From 793a72ef9bb77e0487451198a762f71c5c8de72c Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 14:31:03 -0400 Subject: [PATCH 174/177] feat(tests): add function to generate postprocessed fixture data Signed-off-by: Cameron Smith --- .../fixtures/generate_anndata_fixtures.py | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py index 0ee12a175..b6870c6e4 100644 --- a/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py +++ b/src/pyrovelocity/tests/fixtures/generate_anndata_fixtures.py @@ -7,6 +7,8 @@ It is used to generate test fixture data. """ +import shutil +import tempfile from pathlib import Path from anndata import AnnData @@ -18,10 +20,13 @@ load_anndata_from_json, save_anndata_to_json, ) +from pyrovelocity.tasks.postprocess import postprocess_dataset from pyrovelocity.tasks.preprocess import preprocess_dataset +from pyrovelocity.tasks.train import train_dataset from pyrovelocity.utils import ( anndata_string, configure_logging, + load_anndata_from_path, print_anndata, print_string_diff, ) @@ -106,5 +111,114 @@ def generate_pancreas_fixture_data( return output_path +@beartype +def generate_postprocessed_pancreas_fixture_data( + input_path: str + | Path = "src/pyrovelocity/tests/data/preprocessed_pancreas_50_7.json", + trained_output_path: str + | Path = "src/pyrovelocity/tests/data/trained_pancreas_50_7.json", + postprocessed_output_path: str + | Path = "src/pyrovelocity/tests/data/postprocessed_pancreas_50_7.json", + max_epochs: int = 10, + retain_temp_files: bool = False, + retain_dir: str + | Path = "src/pyrovelocity/tests/data/train_postprocess_artifacts", +) -> tuple[Path, Path]: + """ + Generate trained and postprocessed test fixtures for the pancreas dataset. + + Args: + input_path: Path to load the preprocessed JSON fixture. + trained_output_path: Path to save the trained JSON fixture. + postprocessed_output_path: Path to save the postprocessed JSON fixture. + max_epochs: Number of epochs to train the model. + retain_temp_files: If True, copy temporary files to retain_dir. + retain_dir: Directory to copy temporary files to if retain_temp_files is True. + + Returns: + Tuple of paths to the saved trained and postprocessed JSON fixtures. + """ + input_path = Path(input_path) + trained_output_path = Path(trained_output_path) + postprocessed_output_path = Path(postprocessed_output_path) + + adata = load_anndata_from_json(input_path) + + with tempfile.TemporaryDirectory() as tmp_dir: + models_path = Path(tmp_dir) / "models" + logger.info(f"Using temporary directory: {models_path}") + + result = train_dataset( + adata=adata, + data_set_name="pancreas", + model_identifier="model2", + models_path=models_path, + max_epochs=max_epochs, + force=True, + ) + + ( + data_model, + data_model_path, + trained_data_path, + model_path, + posterior_samples_path, + metrics_path, + run_info_path, + loss_plot_path, + loss_csv_path, + ) = result + + trained_adata = load_anndata_from_path(trained_data_path) + + ( + pyrovelocity_data_path, + postprocessed_data_path, + ) = postprocess_dataset( + data_model=data_model, + data_model_path=data_model_path, + trained_data_path=trained_data_path, + model_path=model_path, + posterior_samples_path=posterior_samples_path, + metrics_path=metrics_path, + vector_field_basis="umap", + number_posterior_samples=4, + ) + + postprocessed_adata = load_anndata_from_path(postprocessed_data_path) + + if retain_temp_files: + retain_dir = Path(retain_dir) + retain_dir.mkdir(parents=True, exist_ok=True) + logger.info(f"Copying temporary files to {retain_dir}") + shutil.copytree(tmp_dir, retain_dir, dirs_exist_ok=True) + + preprocessed_anndata_string = anndata_string(adata) + trained_anndata_string = anndata_string(trained_adata) + postprocessed_anndata_string = anndata_string(postprocessed_adata) + + print_string_diff( + text1=preprocessed_anndata_string, + text2=trained_anndata_string, + diff_title="Preprocessed vs Trained AnnData", + ) + print_string_diff( + text1=trained_anndata_string, + text2=postprocessed_anndata_string, + diff_title="Trained vs Postprocessed AnnData", + ) + print_anndata(postprocessed_adata) + + save_anndata_to_json(trained_adata, trained_output_path) + logger.info(f"Trained test fixture saved to {trained_output_path}") + save_anndata_to_json(postprocessed_adata, postprocessed_output_path) + logger.info( + f"Postprocessed test fixture saved to {postprocessed_output_path}" + ) + + return trained_output_path, postprocessed_output_path + + if __name__ == "__main__": generate_pancreas_fixture_data() + generate_postprocessed_pancreas_fixture_data() From f96a775e6932dfb9d23938af8452a4b7cf9c5649 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 16:26:06 -0400 Subject: [PATCH 175/177] test(train): add unit test for train task on static fixture data Signed-off-by: Cameron Smith --- src/pyrovelocity/tests/tasks/test_train.py | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/pyrovelocity/tests/tasks/test_train.py b/src/pyrovelocity/tests/tasks/test_train.py index ab4489708..f79df388c 100644 --- a/src/pyrovelocity/tests/tasks/test_train.py +++ b/src/pyrovelocity/tests/tasks/test_train.py @@ -2,6 +2,10 @@ import pytest +from pyrovelocity.io.serialization import save_anndata_to_json +from pyrovelocity.tasks.train import train_dataset +from pyrovelocity.utils import load_anndata_from_path + def test_load_train(): from pyrovelocity.tasks import train @@ -19,3 +23,42 @@ def test_train_dataset(train_dataset_output): @pytest.mark.integration def test_train_dataset_model1(train_dataset_model1_output): return train_dataset_model1_output + + +def test_train_dataset_pancreas(adata_preprocessed_pancreas_50_7, tmp_path): + data_set_name = "pancreas" + model_identifier = "model2" + models_path = tmp_path / "models" + + result = train_dataset( + adata=adata_preprocessed_pancreas_50_7, + data_set_name=data_set_name, + model_identifier=model_identifier, + models_path=models_path, + max_epochs=10, + force=True, + ) + + ( + data_model, + data_model_path, + trained_data_path, + model_path, + posterior_samples_path, + metrics_path, + run_info_path, + loss_plot_path, + loss_csv_path, + ) = result + + assert data_model == f"{data_set_name}_{model_identifier}" + assert trained_data_path.exists() + assert model_path.exists() + assert posterior_samples_path.exists() + assert metrics_path.exists() + assert run_info_path.exists() + assert loss_plot_path.exists() + assert loss_csv_path.exists() + + trained_adata = load_anndata_from_path(trained_data_path) + save_anndata_to_json(trained_adata, tmp_path / "trained_adata.json") From 847bbc90febdde6af37ad3efdd5b63e673242619 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 16:37:22 -0400 Subject: [PATCH 176/177] tests(data): add trained pancreas 50 by 7 fixture Signed-off-by: Cameron Smith --- .../tests/data/trained_pancreas_50_7.json | 6731 +++++++++++++++++ 1 file changed, 6731 insertions(+) create mode 100644 src/pyrovelocity/tests/data/trained_pancreas_50_7.json diff --git a/src/pyrovelocity/tests/data/trained_pancreas_50_7.json b/src/pyrovelocity/tests/data/trained_pancreas_50_7.json new file mode 100644 index 000000000..d655c852f --- /dev/null +++ b/src/pyrovelocity/tests/data/trained_pancreas_50_7.json @@ -0,0 +1,6731 @@ +{ + "shape": [50, 7], + "obs": { + "index": [ + "ACGAGGATCATCACCC", + "ATCATGGCAGCTGTGC", + "TGGACGCAGTGTTGAA", + "CAAGGCCAGACGACGT", + "AGCCTAAGTTCCATGA", + "TCCCGATCAGCATGAG", + "GTCATTTTCATAGCAC", + "ACTGTCCCACGTAAGG", + "CGCTGGAGTCCATCCT", + "TGTGTTTGTATATCCG", + "ACTGAGTGTCTTCAAG", + "AGGTCCGTCCTGCAGG", + "TCACAAGTCTGGTTCC", + "CAGCATAGTAATAGCA", + "TTGACTTTCACCGGGT", + "TCGCGTTAGATCTGAA", + "TTCTACATCTACTCAT", + "AGGCCGTGTACCAGTT", + "CCTACCACACGTAAGG", + "GTTCGGGAGTCACGCC", + "CGTTGGGGTTTAAGCC", + "CAAGGCCAGTTGCAGG", + "AAACGGGCAAAGAATC", + "TTTACTGCAGCATACT", + "GGATTACAGACATAAC", + "GATGCTAAGCGATAGC", + "CCCAGTTTCGTATCAG", + "CGAACATTCGGAAACG", + "GGACGTCGTCGAGATG", + "GAACCTAAGAATCTCC", + "TTTGCGCAGACAGACC", + "ATTATCCAGGACATTA", + "AAGGAGCCAAAGGTGC", + "TGGACGCAGCGTCTAT", + "CAGCTAACAGCTTAAC", + "TACTCATAGGCCATAG", + "CAAGTTGGTGTGCCTG", + "CGAACATTCTAACGGT", + "GGATTACGTATCTGCA", + "TTGCGTCCATACCATG", + "ATGAGGGCAAGGTTTC", + "GAAGCAGGTCCGAAGA", + "GACTGCGAGAATCTCC", + "TTGAACGTCTTTAGTC", + "TCAATCTGTCAAAGAT", + "GGGACCTAGCTGCCCA", + "CGGAGTCCATAAAGGT", + "ACTGATGTCTGCGACG", + "AACTCCCAGAACTCGG", + "CTGAAGTCAGCTGGCT" + ], + "clusters_coarse": [ + "Endocrine", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 low EP", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Endocrine", + "Endocrine", + "Ductal", + "Ductal", + "Endocrine", + "Endocrine", + "Endocrine", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Endocrine", + "Endocrine", + "Ductal", + "Ngn3 high EP", + "Endocrine", + "Ngn3 low EP", + "Ngn3 high EP", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "clusters": [ + "Beta", + "Beta", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Epsilon", + "Ngn3 low EP", + "Alpha", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Epsilon", + "Epsilon", + "Ductal", + "Ductal", + "Beta", + "Epsilon", + "Beta", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Beta", + "Beta", + "Ductal", + "Ngn3 high EP", + "Beta", + "Ngn3 low EP", + "Ngn3 high EP", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "S_score": [ + -0.1900176852941513, -0.1798986792564392, 0.2876194417476654, + -0.13059574365615845, -0.19154003262519836, -0.20736166834831238, + 0.055809736251831055, -0.22657276690006256, -0.09854981303215027, + -0.10515359044075012, -0.22417986392974854, -0.13923786580562592, + -0.17192961275577545, -0.210012286901474, -0.24508747458457947, + 0.24464142322540283, -0.2199627012014389, 0.45211780071258545, + -0.2847501337528229, -0.1225256621837616, -0.1853637546300888, + 0.14741107821464539, -0.17434504628181458, -0.06566576659679413, + -0.11917057633399963, 0.0994512140750885, 0.6314109563827515, + -0.2435632348060608, -0.15836980938911438, -0.16285839676856995, + -0.03735727071762085, -0.23504072427749634, -0.1940152645111084, + -0.2763311266899109, -0.10047918558120728, -0.19494567811489105, + -0.15960684418678284, -0.1518237292766571, -0.21157994866371155, + -0.23124836385250092, -0.28817230463027954, 0.01992771029472351, + -0.10988262295722961, -0.1453070193529129, 0.0024125277996063232, + -0.1523832529783249, -0.18731294572353363, -0.23668700456619263, + -0.10470859706401825, -0.16313031315803528 + ], + "G2M_score": [ + -0.17808695137500763, -0.20500724017620087, -0.05926266312599182, + -0.28532150387763977, -0.24861331284046173, -0.26661795377731323, + 1.390926480293274, -0.23506353795528412, -0.20293928682804108, + -0.222975954413414, -0.15791422128677368, 0.7809014916419983, + -0.24516768753528595, -0.21463991701602936, -0.10996249318122864, + 0.4840411841869354, -0.2309238165616989, 0.3751475512981415, + -0.26815351843833923, 0.9082856178283691, -0.11527934670448303, + 0.7475467920303345, -0.2216024100780487, -0.2054639756679535, + -0.26204442977905273, -0.13194540143013, 0.10288387537002563, + -0.17528025805950165, -0.23461636900901794, -0.1737227439880371, + -0.1606866717338562, -0.2213122844696045, -0.1756855845451355, + -0.23374433815479279, -0.2139715999364853, -0.23751017451286316, + -0.3320413827896118, -0.1540473997592926, -0.17886017262935638, + -0.2009081244468689, -0.21155518293380737, -0.22321660816669464, + -0.2697060704231262, -0.25177180767059326, 1.0252666473388672, + -0.27496808767318726, -0.3082582354545593, -0.15865947306156158, + -0.2577580511569977, -0.24062800407409668 + ], + "n_genes_by_counts": [ + 3101, 2265, 2433, 1968, 2102, 1825, 2619, 2088, 2642, 2231, 2158, 2399, + 1904, 2148, 1990, 3594, 2498, 3222, 3323, 3606, 2518, 3443, 2581, 2658, + 2014, 2292, 3415, 2346, 2451, 2848, 2797, 2401, 2069, 2570, 2234, 2437, + 2434, 2573, 2203, 2231, 2509, 1593, 2129, 2418, 3394, 2334, 2806, 2260, + 2257, 2171 + ], + "total_counts": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "total_counts_mt": [ + 40.0, 33.0, 61.0, 20.0, 24.0, 28.0, 45.0, 41.0, 41.0, 36.0, 27.0, 37.0, + 57.0, 44.0, 35.0, 80.0, 56.0, 65.0, 61.0, 75.0, 30.0, 88.0, 40.0, 57.0, + 46.0, 59.0, 62.0, 57.0, 46.0, 61.0, 41.0, 29.0, 22.0, 42.0, 43.0, 45.0, + 53.0, 44.0, 43.0, 43.0, 57.0, 35.0, 40.0, 28.0, 80.0, 45.0, 70.0, 43.0, + 45.0, 25.0 + ], + "pct_counts_mt": [ + 0.43749314546585083, 0.6145251393318176, 1.0052735805511475, + 0.4133085310459137, 0.5580097436904907, 0.6561987400054932, + 0.6657789349555969, 0.9335154891014099, 0.5527096390724182, + 0.7318560481071472, 0.5507955551147461, 0.638701856136322, + 1.4357682466506958, 0.8427504301071167, 0.8551185131072998, + 0.5944419503211975, 0.8581060171127319, 0.6572295427322388, + 0.6783807873725891, 0.5839301943778992, 0.5220114588737488, + 0.7479813098907471, 0.6279435157775879, 0.7404520511627197, + 0.9370543956756592, 0.9983079433441162, 0.5529296398162842, + 1.0573177337646484, 0.7841800451278687, 0.795306384563446, + 0.5150753259658813, 0.5554491877555847, 0.4821389317512512, + 0.6336753368377686, 0.9301319718360901, 0.7317073345184326, + 0.9831200242042542, 0.6421482563018799, 0.902224063873291, + 0.8779093623161316, 0.8624603152275085, 1.0266940593719482, + 0.7912957072257996, 0.4508856534957886, 0.7468259930610657, + 0.7085498571395874, 0.9481241106987, 0.7767341136932373, + 0.713606059551239, 0.5155702233314514 + ], + "total_counts_ribo": [ + 1279.0, 609.0, 1647.0, 676.0, 649.0, 957.0, 1060.0, 721.0, 2178.0, 790.0, + 883.0, 1246.0, 607.0, 1161.0, 700.0, 3277.0, 1200.0, 2410.0, 1292.0, + 2739.0, 634.0, 3365.0, 1087.0, 2272.0, 1143.0, 1156.0, 2639.0, 624.0, + 831.0, 1913.0, 2378.0, 729.0, 613.0, 747.0, 780.0, 1595.0, 867.0, 1864.0, + 792.0, 764.0, 1030.0, 907.0, 1118.0, 939.0, 2420.0, 1429.0, 1073.0, + 1214.0, 1691.0, 1017.0 + ], + "pct_counts_ribo": [ + 13.98884391784668, 11.340782165527344, 27.14238739013672, + 13.969828605651855, 15.089513778686523, 22.427936553955078, + 15.682792663574219, 16.41621208190918, 29.361013412475586, + 16.0601749420166, 18.0130558013916, 21.508716583251953, 15.2896728515625, + 22.237119674682617, 17.10236930847168, 24.349828720092773, + 18.38798713684082, 24.36804962158203, 14.368327140808105, + 21.325132369995117, 11.031843185424805, 28.601783752441406, + 17.064363479614258, 29.51416015625, 23.283763885498047, + 19.560068130493164, 23.53518295288086, 11.574847221374512, + 14.1663818359375, 24.941329956054688, 29.874372482299805, + 13.96284294128418, 13.434144973754883, 11.270368576049805, + 16.872161865234375, 25.934959411621094, 16.082359313964844, + 27.2037353515625, 16.61771011352539, 15.598203659057617, + 15.584808349609375, 26.60604476928711, 22.116716384887695, + 15.120773315429688, 22.59148597717285, 22.500394821166992, + 14.533387184143066, 21.92919158935547, 26.815731048583984, + 20.97339630126953 + ], + "u_lib_size_raw": [ + 1782.0, 1454.0, 831.0, 1108.0, 1365.0, 1023.0, 2541.0, 1169.0, 1007.0, + 1310.0, 1301.0, 696.0, 1745.0, 1510.0, 1185.0, 1625.0, 1591.0, 800.0, + 2960.0, 1692.0, 1217.0, 1451.0, 1576.0, 1120.0, 1078.0, 1038.0, 1552.0, + 1305.0, 972.0, 1211.0, 974.0, 1165.0, 1033.0, 1380.0, 1537.0, 828.0, + 1242.0, 1057.0, 1278.0, 1054.0, 1578.0, 556.0, 1413.0, 1327.0, 1308.0, + 728.0, 1703.0, 672.0, 1043.0, 1368.0 + ], + "s_lib_size_raw": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "gcs": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "cytotrace": [ + 0.4, 0.06, 0.82, 0.04, 0.3, 0.56, 0.7, 0.14, 0.88, 0.24, 0.48, 0.9, 0.02, + 0.54, 0.16, 1.0, 0.5, 0.92, 0.46, 0.74, 0.22, 0.98, 0.26, 0.72, 0.6, 0.62, + 0.94, 0.1, 0.44, 0.86, 0.84, 0.32, 0.2, 0.34, 0.08, 0.76, 0.18, 0.8, 0.42, + 0.28, 0.36, 0.78, 0.58, 0.12, 0.96, 0.68, 0.38, 0.66, 0.64, 0.52 + ], + "counts": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "initial_size_unspliced": [ + 1782.0, 1454.0, 831.0, 1108.0, 1365.0, 1023.0, 2541.0, 1169.0, 1007.0, + 1310.0, 1301.0, 696.0, 1745.0, 1510.0, 1185.0, 1625.0, 1591.0, 800.0, + 2960.0, 1692.0, 1217.0, 1451.0, 1576.0, 1120.0, 1078.0, 1038.0, 1552.0, + 1305.0, 972.0, 1211.0, 974.0, 1165.0, 1033.0, 1380.0, 1537.0, 828.0, + 1242.0, 1057.0, 1278.0, 1054.0, 1578.0, 556.0, 1413.0, 1327.0, 1308.0, + 728.0, 1703.0, 672.0, 1043.0, 1368.0 + ], + "initial_size_spliced": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "initial_size": [ + 9143.0, 5370.0, 6068.0, 4839.0, 4301.0, 4267.0, 6759.0, 4392.0, 7418.0, + 4919.0, 4902.0, 5793.0, 3970.0, 5221.0, 4093.0, 13458.0, 6526.0, 9890.0, + 8992.0, 12844.0, 5747.0, 11765.0, 6370.0, 7698.0, 4909.0, 5910.0, 11213.0, + 5391.0, 5866.0, 7670.0, 7960.0, 5221.0, 4563.0, 6628.0, 4623.0, 6150.0, + 5391.0, 6852.0, 4766.0, 4898.0, 6609.0, 3409.0, 5055.0, 6210.0, 10712.0, + 6351.0, 7383.0, 5536.0, 6306.0, 4849.0 + ], + "n_counts": [ + 1666.6461181640625, 2026.2613525390625, 1516.6356201171875, + 2167.085693359375, 1512.7271728515625, 1672.42919921875, + 1553.2332763671875, 1591.3150634765625, 1688.2955322265625, + 1497.4359130859375, 1608.329833984375, 1415.843994140625, + 1736.7374267578125, 1794.25537109375, 1655.7750244140625, 1471.78125, + 2160.858154296875, 1453.2464599609375, 1877.323974609375, + 1502.2559814453125, 1552.1700439453125, 1564.4613037109375, + 1609.263427734375, 1708.7283935546875, 1621.62890625, 1458.55029296875, + 1430.3856201171875, 1721.2923583984375, 1801.7320556640625, 1496.94921875, + 1719.0595703125, 1583.365478515625, 1864.5977783203125, + 1848.6614990234375, 1592.039794921875, 1483.9674072265625, + 1585.86083984375, 1572.5391845703125, 1651.753173828125, + 1575.983642578125, 1861.103271484375, 1557.927978515625, + 1600.417724609375, 2167.466552734375, 1397.2457275390625, + 1462.0338134765625, 1621.3333740234375, 1499.6533203125, + 1645.2039794921875, 1672.05126953125 + ], + "leiden": [ + "0", + "0", + "1", + "0", + "3", + "2", + "2", + "3", + "1", + "3", + "3", + "1", + "0", + "2", + "3", + "1", + "0", + "1", + "0", + "1", + "3", + "1", + "0", + "1", + "2", + "2", + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "0", + "3", + "1", + "3", + "1", + "3", + "0", + "0", + "1", + "2", + "0", + "1", + "2", + "0", + "2", + "2", + "2" + ], + "velocity_self_transition": [ + 0.5440033674240112, 0.7888529300689697, 0.013806283473968506, + 0.7888529300689697, 0.04211699962615967, 1.0073184967041016e-5, 0.0, + 0.18305939435958862, 0.028307318687438965, 0.40436577796936035, + 0.050437867641448975, 0.020281493663787842, 0.9946298003196716, + 0.12180924415588379, 0.07228374481201172, 0.45309191942214966, + 0.01954209804534912, 0.020969033241271973, 0.028395652770996094, + 0.023566842079162598, 0.1675243377685547, 0.024211585521697998, + 0.01954209804534912, 0.034968554973602295, 0.010215699672698975, + 0.0164758563041687, 0.024211585521697998, 0.04163020849227905, + 0.34288156032562256, 0.41478854417800903, 0.01286768913269043, + 0.8639301061630249, 0.9946298003196716, 0.36953556537628174, + 0.14971566200256348, 0.01855403184890747, 0.02419257164001465, + 0.01325768232345581, 0.208571195602417, 0.8639301061630249, + 0.7888529300689697, 0.02276688814163208, 0.01954209804534912, + 0.10389477014541626, 0.02105790376663208, 0.031654179096221924, + 0.2101317048072815, 0.016947627067565918, 0.019509553909301758, + 0.08077633380889893 + ], + "u_lib_size": [ + 7.485491608591922, 7.282073658781223, 6.7226297960588175, + 7.010311868209756, 7.218909708351661, 6.930494766929144, + 7.8403129837137095, 7.0639039623275, 6.914730893711611, 7.177782416958556, + 7.170888479281145, 6.545349661771201, 7.4645098352095935, + 7.319864930471222, 7.077498054413113, 7.393263095379223, + 7.372118028966322, 6.684611728917927, 7.992944547655944, + 7.433666540757185, 7.10414409380922, 7.280008253573368, 7.362645271052342, + 7.021083965181997, 6.982862752396587, 6.945051064689225, + 7.347299701387494, 7.173958320523077, 6.879355805489245, + 7.099201744378856, 6.881411304669229, 7.06047636685817, 6.940222470087693, + 7.229838778875888, 7.337587744189214, 6.7190131555929895, + 7.1244782632985775, 6.963189986816311, 7.153051635719953, + 6.960347730050074, 7.363913502039533, 6.320768296049144, + 7.253470383392242, 7.1906760350857875, 7.1762545327816705, + 6.5903010495703125, 7.440146681249887, 6.5102583420112445, + 6.949856455959545, 7.22110509891349 + ], + "s_lib_size": [ + 9.1207438382738, 8.58858318768913, 8.710784340633221, 8.484463366999973, + 8.366602833016241, 8.358666283422357, 8.818630229248305, + 8.387539983417053, 8.911664758184344, 8.500860536998633, + 8.497398564292057, 8.664405571269246, 8.286521373933125, + 8.560444233602087, 8.317033476736723, 9.50732900382257, 8.783549477306499, + 9.19927942471787, 9.104090572244683, 9.460632055287261, 8.656433258681746, + 9.372884301246462, 8.759354748723196, 8.948715833973596, 8.49882553426176, + 8.684401110569349, 9.324829098550063, 8.592486175637163, 8.67692824970787, + 8.94507189449168, 8.982184278964057, 8.560444233602087, 8.425735581146556, + 8.799058378697328, 8.438799124204536, 8.724207360963165, + 8.592486175637163, 8.832295859589953, 8.469262657868507, + 8.496582237716279, 8.796187635621761, 8.134174272431244, + 8.528133131652396, 8.733916175088556, 9.279119887464361, + 8.756367559960431, 8.906935339194613, 8.619027497478141, + 8.749256840263586, 8.486527777311581 + ], + "u_lib_size_mean": [ + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983 + ], + "s_lib_size_mean": [ + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886 + ], + "u_lib_size_scale": [ + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213 + ], + "s_lib_size_scale": [ + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593 + ], + "ind_x": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 + ], + "cell_time": [ + 1.0111111402511597, 0.9906900525093079, 0.9921244382858276, + 0.9474010467529297, 0.9903291463851929, 1.0146467685699463, + 1.0431679487228394, 0.9742365479469299, 1.0126205682754517, + 1.0182862281799316, 1.018476963043213, 0.9693946242332458, + 0.9668776392936707, 1.029341459274292, 0.9552245736122131, + 1.0237098932266235, 1.0219533443450928, 1.055890679359436, + 1.0118393898010254, 1.0091561079025269, 0.9941914677619934, + 0.9784784913063049, 0.9738691449165344, 1.0064533948898315, + 0.9795732498168945, 1.0003812313079834, 1.0035293102264404, + 0.955602765083313, 1.021865725517273, 0.9662628173828125, + 1.0269787311553955, 0.9767714142799377, 0.9514976143836975, + 0.9475018978118896, 1.0111042261123657, 1.0097986459732056, + 0.9734369516372681, 0.9821793437004089, 0.9726355075836182, + 1.0400032997131348, 0.9894457459449768, 1.0216773748397827, + 0.9748828411102295, 1.011807918548584, 0.9969428777694702, + 1.0145905017852783, 1.015006184577942, 1.0024551153182983, + 1.012247920036316, 0.9762856960296631 + ], + "1-Cytotrace": [ + 0.6, 0.94, 0.18000000000000005, 0.96, 0.7, 0.43999999999999995, + 0.30000000000000004, 0.86, 0.12, 0.76, 0.52, 0.09999999999999998, 0.98, + 0.45999999999999996, 0.84, 0.0, 0.5, 0.07999999999999996, 0.54, 0.26, + 0.78, 0.020000000000000018, 0.74, 0.28, 0.4, 0.38, 0.06000000000000005, + 0.9, 0.56, 0.14, 0.16000000000000003, 0.6799999999999999, 0.8, + 0.6599999999999999, 0.92, 0.24, 0.8200000000000001, 0.19999999999999996, + 0.5800000000000001, 0.72, 0.64, 0.21999999999999997, 0.42000000000000004, + 0.88, 0.040000000000000036, 0.31999999999999995, 0.62, + 0.33999999999999997, 0.36, 0.48 + ] + }, + "var": { + "index": ["Pam", "Ins2", "Bicc1", "Isl1", "Kcnmb2", "Grin3a", "Cadps"], + "highly_variable_genes": [ + "True", + "True", + "True", + "True", + "True", + "True", + "True" + ], + "mt": [false, false, false, false, false, false, false], + "ribo": [false, false, false, false, false, false, false], + "n_cells_by_counts": [19, 6, 12, 24, 11, 7, 16], + "mean_counts": [ + 0.7799999713897705, 2.6600000858306885, 0.800000011920929, + 4.820000171661377, 0.3400000035762787, 0.3199999928474426, + 0.36000001430511475 + ], + "pct_dropout_by_counts": [62.0, 88.0, 76.0, 52.0, 78.0, 86.0, 68.0], + "total_counts": [39.0, 133.0, 40.0, 241.0, 17.0, 16.0, 18.0], + "cytotrace": [true, true, true, true, true, true, true], + "cytotrace_corrs": [ + -0.3162762522697449, 0.12602543830871582, 0.33911263942718506, + -0.17416998744010925, -0.1970590054988861, 0.4442867636680603, + -0.22521816194057465 + ], + "fit_r2": [ + 0.17601728439331055, 0.9843522757291794, 0.8610359579324722, + 0.35933393239974976, 0.8454212546348572, 0.9761226903647184, + 0.5675630867481232 + ], + "fit_alpha": [ + 0.578055825622483, 0.651591777491511, 0.19773527763225077, + 15.183010606999385, 0.18743906412046135, 0.06910717038574042, + 0.14353477597866035 + ], + "fit_beta": [ + 0.4049099668591707, 0.06721689604059118, 0.08879185161349923, + 43.92897203508826, 0.09881178802021871, 0.04670353953294745, + 0.026252833832793115 + ], + "fit_gamma": [ + 0.38729631129731246, 0.1752584460495083, 0.15620117163746527, + 1.6089132945721085, 0.2547626138391123, 0.17359121914754694, + 0.16490994664835248 + ], + "fit_t_": [ + 50.37974420793462, 30.343073385719205, 29.902327516354887, + 18.98848150277561, 35.231629912306, 26.75929936638391, 27.54325115866323 + ], + "fit_scaling": [ + 0.3352414518594742, 1.5236610253651937, 0.889136780500412, + 0.009213920929469169, 1.1237630617618561, 2.058192014694214, + 2.9277483224868774 + ], + "fit_std_u": [ + 0.27159035205841064, 3.6987993717193604, 0.6131449341773987, + 0.05388129875063896, 0.4736601412296295, 0.48177608847618103, + 0.9218344688415527 + ], + "fit_std_s": [ + 0.44557344913482666, 1.2542463541030884, 0.3499698340892792, + 2.763092279434204, 0.19915622472763062, 0.1053347960114479, + 0.1731736809015274 + ], + "fit_likelihood": [ + 1.002161883291577, 1.310290218925134, 1.4029942468112047, + 1.7444948741033333, 0.8744808370953906, 0.8309165800022114, + 0.8589213118338758 + ], + "fit_u0": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "fit_s0": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "fit_pval_steady": [ + 0.48175699593728344, 0.47505878843369537, 0.4417070755160214, + 0.4960445338579348, 0.46989657120614525, 0.2156900274261639, + 0.4433311484447805 + ], + "fit_steady_u": [ + 1.069621163147297, 8.285346266574217, 1.8469637619913735, + 0.18266854490783505, 1.2469362668415456, 1.4045267875786112, + 4.535181150675765 + ], + "fit_steady_s": [ + 1.2417789497252167, 2.621232801566607, 0.8708771309847461, + 7.532458611603442, 0.5756215246972338, 0.31594003332329207, + 0.5706063552663245 + ], + "fit_variance": [ + 0.04672211969216039, 0.03350176644284047, 0.024939376393277802, + 0.016821777210977044, 0.07356961690049205, 0.08315985286951148, + 0.07052107234977445 + ], + "fit_alignment_scaling": [ + 4.0517860942969115, 5.0447962573224165, 6.1221654065369595, + 1.1117752256659805, 4.052555797021417, 4.681411623046014, + 7.155710451659271 + ], + "velocity_genes": [true, true, true, false, true, true, true] + }, + "X": [ + [0.0, 4.326815605163574, 0.0, 2.006857395172119, 0.0, 0.0, 0.0], + [ + 0.0, 2.650247573852539, 0.0, 2.2794899940490723, 0.0, 0.0, + 0.7402511239051819 + ], + [0.0, 0.0, 1.5854207277297974, 0.0, 0.0, 0.6782041788101196, 0.0], + [ + 1.536940574645996, 0.0, 0.0, 3.9763405323028564, 0.0, 0.0, + 0.7960558533668518 + ], + [ + 0.0, 0.0, 0.0, 0.8624611496925354, 0.8624611496925354, 0.0, + 0.8624611496925354 + ], + [ + 0.8670551776885986, 0.8670551776885986, 0.8670551776885986, 0.0, 0.0, 0.0, + 0.0 + ], + [0.6265450716018677, 0.0, 0.0, 0.6265450716018677, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.8504177331924438, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.603163242340088, 0.0, 0.0, 0.0, 0.0], + [ + 1.5240920782089233, 0.0, 0.0, 0.7870888113975525, 0.0, 0.0, + 1.2220039367675781 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.701313316822052, 0.0, 0.0, 0.0, 0.0], + [ + 1.695500135421753, 0.0, 0.0, 1.9362196922302246, 0.9095172882080078, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 1.3550893068313599, 0.0, 0.0, 1.6706572771072388, 0.0, 0.0, + 0.8914050459861755 + ], + [0.0, 0.0, 0.36291196942329407, 0.0, 0.0, 0.0, 0.0], + [1.0312161445617676, 0.0, 0.0, 2.847247838973999, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.9392434358596802, 0.0, 0.0, 0.4670924246311188, 0.0], + [ + 0.5036827325820923, 0.0, 0.0, 1.4525551795959473, 0.0, 0.0, + 0.8370780348777771 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.191532015800476, 0.0], + [ + 0.7053398489952087, 0.0, 0.0, 0.7053398489952087, 1.11483633518219, 0.0, + 0.7053398489952087 + ], + [0.0, 0.0, 1.0992354154586792, 0.0, 0.0, 0.0, 0.0], + [1.0468506813049316, 0.0, 0.0, 2.3266265392303467, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.9281196594238281, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7881980538368225], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.648819923400879, 0.0, 0.0, 0.0, 0.0], + [ + 0.7382116913795471, 0.0, 0.0, 3.5512800216674805, 0.0, 0.0, + 0.7382116913795471 + ], + [ + 1.6124337911605835, 0.0, 0.0, 3.1816415786743164, 0.0, 0.0, + 0.6950206756591797 + ], + [0.0, 0.0, 0.9303247928619385, 0.0, 0.0, 0.0, 0.0], + [0.5537118315696716, 0.0, 0.5537118315696716, 0.0, 0.0, 0.0, 0.0], + [ + 1.1803479194641113, 0.7550666332244873, 0.0, 2.411419630050659, + 0.7550666332244873, 0.0, 0.7550666332244873 + ], + [ + 2.0084683895111084, 0.0, 0.0, 3.8038337230682373, 1.8183228969573975, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 1.515876293182373, 0.0, 0.0, 0.0], + [ + 0.0, 0.0, 0.0, 1.266176462173462, 0.8213784694671631, 0.0, + 0.8213784694671631 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.67161625623703, 0.0], + [ + 0.7382116913795471, 0.0, 0.0, 0.7382116913795471, 0.7382116913795471, 0.0, + 0.0 + ], + [0.0, 0.0, 0.6202060580253601, 0.0, 0.0, 0.6202060580253601, 0.0], + [ + 1.244395136833191, 0.0, 0.0, 0.0, 0.804427981376648, 0.0, + 0.804427981376648 + ], + [ + 1.527440071105957, 0.0, 0.0, 1.9474256038665771, 0.7894220352172852, 0.0, + 0.7894220352172852 + ], + [ + 0.0, 1.0231027603149414, 0.0, 1.9791160821914673, 1.3009321689605713, 0.0, + 0.6370562314987183 + ], + [0.0, 0.0, 1.4938890933990479, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7723221182823181], + [0.0, 0.0, 0.0, 2.0330097675323486, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.32130765914917, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 0.0, 0.586401104927063, 0.0, 2.1013951301574707, 0.586401104927063, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.7949232459068298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "layers": { + "Ms": [ + [ + 1.4032845497131348, 3.052248477935791, 0.06576139479875565, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 0.7000881433486938, 0.024166902527213097, 0.8499667644500732, + 3.014936685562134, 0.33464813232421875, 0.3015934228897095, + 0.25990477204322815 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0.0, 0.5893792510032654 + ], + [ + 1.1863106489181519, 0.5366032123565674, 0.04058506339788437, + 6.795828342437744, 0.5724716186523438, 0.044992588460445404, + 0.559857189655304 + ], + [ + 0.6932769417762756, 0.47997787594795227, 0.44088229537010193, + 4.344834327697754, 0.2850591838359833, 0.21075108647346497, + 0.49133139848709106 + ], + [ + 1.1087390184402466, 2.323683738708496, 0.4136205315589905, + 6.5146074295043945, 0.4866008758544922, 0.12280356884002686, + 0.5009723901748657 + ], + [ + 0.49234479665756226, 0.02658359333872795, 0.9349634647369385, + 2.1962857246398926, 0.13129226863384247, 0.3317527770996094, + 0.22988879680633545 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.40627655386924744, + 7.445266246795654, 0.5561153292655945, 0.0277238916605711, + 0.5725398659706116 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.03942548856139183, + 7.445266246795654, 0.5561153292655945, 0.0, 0.5725398659706116 + ], + [ + 0.23144376277923584, 0.02658359333872795, 0.9349634647369385, + 1.6431336402893066, 0.13734030723571777, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0816965103149414, 2.2670083045959473, 0.15524429082870483, + 6.355714321136475, 0.4747326076030731, 0.18359968066215515, + 0.4887535572052002 + ], + [ + 1.3859236240386963, 2.90460467338562, 0.04312162846326828, + 8.143259048461914, 0.60825115442276, 0.0, 0.6262154579162598 + ], + [ + 0.2592097520828247, 2.435494899749756, 0.9048033356666565, + 1.874214768409729, 0.1681419014930725, 0.32105106115341187, + 0.15395362675189972 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.2678501307964325, 0.02658359333872795, 0.9349634647369385, + 1.6795400381088257, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.6130998134613037, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.27191945910453796, 0.02658359333872795, 0.9349634647369385, + 1.3459373712539673, 0.13734030723571777, 0.3317527770996094, + 0.1990664005279541 + ], + [ + 1.0019835233688354, 2.0654966831207275, 0.49095699191093445, + 5.790762901306152, 0.4325341284275055, 0.16561108827590942, + 0.4453088343143463 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.28376471996307373, 0.04599640518426895, 0.9809598922729492, + 1.2512832880020142, 0.042454395443201065, 0.3317527770996094, + 0.16491524875164032 + ], + [ + 0.6886924505233765, 0.04599640518426895, 0.27985262870788574, + 2.6798255443573, 0.23397643864154816, 0.22029715776443481, + 0.4500373601913452 + ], + [ + 0.3867968022823334, 0.03942548856139183, 0.8408226370811462, + 2.045945405960083, 0.20055124163627625, 0.28435951471328735, + 0.2388278841972351 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0.0, 0.5893792510032654 + ], + [ + 1.3818784952163696, 2.9537885189056396, 0.20141148567199707, + 8.37784481048584, 0.627872109413147, 0.0, 0.607724666595459 + ], + [ + 0.46157321333885193, 2.3593857288360596, 0.8765282034873962, + 2.467672348022461, 0.12308648228645325, 0.3110182285308838, + 0.2530028820037842 + ], + [ + 0.5369269251823425, 0.05662532523274422, 0.8249676823616028, + 2.6481261253356934, 0.22183164954185486, 0.29272302985191345, + 0.2736946642398834 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0784907341003418, 2.2670083045959473, 0.7177754640579224, + 6.33446741104126, 0.4747326076030731, 0.12617842853069305, + 0.45949918031692505 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.4984320402145386, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.270278662443161, 0.02572605572640896, 0.9048033356666565, + 1.4826339483261108, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 0.980201244354248, 2.020594358444214, 0.6176607608795166, + 5.664876461029053, 0.42313119769096375, 0.07353031635284424, + 0.43562814593315125 + ], + [ + 0.2311086356639862, 0.02572605572640896, 0.9048033356666565, + 1.811358094215393, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 1.2319321632385254, 2.5818705558776855, 0.24210062623023987, + 7.238452911376953, 0.540667712688446, 0.10329599678516388, + 0.5566359162330627 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0.0, 0.6279822587966919 + ], + [ + 0.40672144293785095, 0.02658359333872795, 0.9349634647369385, + 1.6562508344650269, 0.14662493765354156, 0.3317527770996094, + 0.2459142655134201 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 1.3399431705474854, 2.8165862560272217, 0.15005283057689667, + 7.870096683502197, 0.5898192524909973, 0.0260397307574749, + 0.5708929300308228 + ], + [ + 0.3138049244880676, 0.02658359333872795, 0.9349634647369385, + 1.4643843173980713, 0.17852088809013367, 0.3317527770996094, + 0.20026598870754242 + ], + [ + 0.32395216822624207, 0.04451264813542366, 0.9493159651756287, + 2.0597450733184814, 0.07631684839725494, 0.32105106115341187, + 0.15258191525936127 + ], + [ + 1.028328537940979, 2.1615657806396484, 0.6843906044960022, + 6.039841651916504, 0.4526520073413849, 0.19587987661361694, + 0.4381271004676819 + ], + [ + 0.3447604775428772, 0.04058506339788437, 0.8655527830123901, + 2.0446953773498535, 0.17011399567127228, 0.29272302985191345, + 0.2480343133211136 + ], + [ + 0.42723068594932556, 0.03942548856139183, 0.8408226370811462, + 1.266152262687683, 0.14200639724731445, 0.28435951471328735, + 0.2568689286708832 + ], + [ + 1.0997380018234253, 2.2670083045959473, 0.20298290252685547, + 6.355714321136475, 0.4747326076030731, 0.11656749248504639, + 0.4887535572052002 + ] + ], + "Mu": [ + [ + 1.458009958267212, 9.731120109558105, 0.6230944395065308, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.5156049728393555 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.7034346461296082, 0.8546698093414307, 1.8519641160964966, + 0.09599451720714569, 1.0511096715927124, 1.3451807498931885, + 2.1948485374450684 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 1.2476564645767212, 8.576372146606445, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.79750394821167 + ], + [ + 1.2476564645767212, 1.62242591381073, 0.3511691093444824, + 0.18465566635131836, 1.6036499738693237, 0.39111989736557007, + 4.611633777618408 + ], + [ + 1.1063703298568726, 1.4030550718307495, 0.5904406309127808, + 0.1215687170624733, 0.9337299466133118, 0.8598318099975586, + 3.7226784229278564 + ], + [ + 1.0984139442443848, 7.452322483062744, 1.2351198196411133, + 0.1893647164106369, 1.4338096380233765, 0.8525708913803101, + 3.984128475189209 + ], + [ + 0.6637682318687439, 0.9833465814590454, 2.0168375968933105, + 0.14880384504795074, 0.7101262807846069, 1.4796987771987915, + 2.3618826866149902 + ], + [ + 1.285057783126831, 8.440470695495605, 1.108371376991272, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.415059566497803 + ], + [ + 1.2120089530944824, 8.38078498840332, 0.341135710477829, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.75933313369751 + ], + [ + 0.7032443284988403, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.7120826840400696, 1.4796987771987915, + 2.4455509185791016 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.0346418619155884, 7.245456695556641, 0.6500575542449951, + 0.18474607169628143, 1.3988385200500488, 0.9318276047706604, + 4.062845230102539 + ], + [ + 1.3256348371505737, 9.074463844299316, 0.3731171786785126, + 0.23670588433742523, 1.7922618389129639, 0.028846152126789093, + 4.942225933074951 + ], + [ + 0.6574062705039978, 8.519707679748535, 1.9248610734939575, + 0.13281705975532532, 0.9580450654029846, 1.4319665431976318, + 2.317383050918579 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.7152480483055115, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.8811647891998291, 1.4796987771987915, + 2.284665107727051 + ], + [ + 0.9893571734428406, 6.315342903137207, 1.4242814779281616, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.3729424476623535 + ], + [ + 0.7289866805076599, 0.8742592334747314, 1.9525864124298096, + 0.1055939719080925, 0.47706568241119385, 1.4796987771987915, + 2.8923025131225586 + ], + [ + 1.0216199159622192, 6.679286479949951, 1.1493229866027832, + 0.16832418739795685, 1.2744975090026855, 0.7319786548614502, + 3.5442440509796143 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.6367191672325134, 0.602973222732544, 1.9525864124298096, + 0.1055939719080925, 0.39889806509017944, 1.4796987771987915, + 2.620482921600342 + ], + [ + 1.0884222984313965, 0.42017456889152527, 1.2373348474502563, + 0.1377778798341751, 0.9382034540176392, 1.1281973123550415, + 3.680722713470459 + ], + [ + 0.822378396987915, 0.5458196997642517, 1.6904687881469727, + 0.11809532344341278, 0.7373080849647522, 1.2946867942810059, + 2.744187355041504 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 1.2476564645767212, 8.627277374267578, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.792720794677734 + ], + [ + 1.3859648704528809, 9.407549858093262, 0.7561504244804382, + 0.24434158205986023, 1.850076675415039, 0.029776671901345253, + 4.369940280914307 + ], + [ + 0.5701303482055664, 8.324034690856934, 1.8647091388702393, + 0.16917578876018524, 0.902488112449646, 1.3872175216674805, + 2.4578704833984375 + ], + [ + 0.7330551743507385, 0.9666101932525635, 1.8186405897140503, + 0.19438445568084717, 0.9175675511360168, 1.3056166172027588, + 3.123826742172241 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.1461775302886963, 7.3564558029174805, 1.5189889669418335, + 0.18474607169628143, 1.3988385200500488, 0.36037319898605347, + 3.424264669418335 + ], + [ + 0.9676808714866638, 6.350621700286865, 1.2116297483444214, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.4703469276428223 + ], + [ + 0.7896954417228699, 0.8787828683853149, 1.9223253726959229, + 0.10218770802021027, 0.7643809914588928, 1.4319665431976318, + 2.709317684173584 + ], + [ + 1.0323727130889893, 6.632993698120117, 1.4074960947036743, + 0.16466496884822845, 1.246790885925293, 0.4723442494869232, + 3.6212317943573 + ], + [ + 0.6761797070503235, 0.8787828683853149, 1.9248610734939575, + 0.13281705975532532, 1.0058867931365967, 1.4319665431976318, + 2.436093807220459 + ], + [ + 1.2204599380493164, 8.231734275817871, 0.7940479516983032, + 0.21040523052215576, 1.593121886253357, 0.21294988691806793, + 4.426808834075928 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.6609135270118713, 0.9401367902755737, 1.989022970199585, + 0.1055939719080925, 0.8400647640228271, 1.4796987771987915, + 2.0362207889556885 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 1.3254634141921997, 8.882596969604492, 0.8946331143379211, + 0.22953300178050995, 1.7379511594772339, 0.10021766275167465, + 4.254389762878418 + ], + [ + 0.733043909072876, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.6998255252838135, 1.4796987771987915, + 2.5380139350891113 + ], + [ + 0.6405916213989258, 0.6162480711936951, 1.9085938930511475, + 0.13333342969417572, 0.36938712000846863, 1.4319665431976318, + 2.3904776573181152 + ], + [ + 1.0928668975830078, 7.049684524536133, 1.589895486831665, + 0.17615321278572083, 1.3337763547897339, 0.7660241723060608, + 3.264996290206909 + ], + [ + 0.8194690942764282, 0.5618732571601868, 1.7527081966400146, + 0.1215687170624733, 0.553757905960083, 1.3327659368515015, + 2.829345941543579 + ], + [ + 0.8883791565895081, 0.5761994123458862, 1.8241499662399292, + 0.09050911664962769, 0.6562696099281311, 1.2946867942810059, + 2.7510621547698975 + ], + [ + 1.0770013332366943, 7.252225875854492, 0.615350604057312, + 0.18474607169628143, 1.3988385200500488, 0.7673612833023071, + 4.062845230102539 + ] + ], + "fit_t": [ + [ + 19.426160337552737, 20.0, 8.214375156523918, 19.01602169645363, + 19.557391560932427, 5.562528014343339, 19.22952710495964 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 9.858074194691318, 7.914981918500489, 18.750995642171677, + 9.352432203836482, 8.900453139399993, 17.631717954785938, + 11.680821800358196 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 18.495903795256382, 16.750129990814887, 8.149555445694725, + 18.647851910744183, 18.146945122936128, 6.098557460342898, + 18.90901597821436 + ], + [ + 16.53015556580884, 15.144628910035308, 9.395854055068865, + 17.545181655391357, 16.418168715241784, 7.656814035813134, + 18.050070365425725 + ], + [ + 11.60833897616936, 10.821436055645604, 13.249656847176134, + 13.606788309976515, 11.893148539680377, 12.742900218693137, + 15.383675216721652 + ], + [ + 16.417720907379582, 14.378652577441134, 10.867768190185414, + 15.981876122661436, 16.252581277105396, 9.221200911526083, + 17.162629118427724 + ], + [ + 7.502109704641349, 6.942820838627702, 19.769596794390186, + 8.24193410454175, 7.61286515196223, 18.776333482743162, + 10.745098039215689 + ], + [ + 17.952982889134717, 16.811761787480787, 8.998604282053877, + 18.166855335775505, 17.94713907069114, 7.019273541360132, + 18.408303641066468 + ], + [ + 18.09041507080013, 16.288980907849353, 8.63367996718051, + 18.150497706248835, 17.684103210579547, 6.688864387251226, + 18.578348121531743 + ], + [ + 6.776371308016876, 5.946632782719188, 19.689456548960678, + 8.315103597529157, 6.727648273827087, 19.65486329000448, + 10.380622837370247 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 16.16548172851233, 14.035390941499823, 11.218411707043257, + 15.631637636363449, 15.644587623136143, 9.626000822962128, + 17.074857111248487 + ], + [ + 19.27215089361318, 17.75889361001499, 7.41453755469918, + 19.747741671640885, 19.032161887300983, 5.126624564539632, + 19.50691939785979 + ], + [ + 8.436095674471678, 6.871336076600899, 19.340295547824994, + 8.67764416128281, 7.835596498477102, 18.552361805667434, + 10.786917298776121 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.759493670886075, 5.8703939008894555, 19.984973703981968, + 8.32452694132299, 6.65092947772204, 19.430748543254143, + 10.279123414071512 + ], + [ + 14.50421908508815, 12.862134401200136, 13.298271678718402, + 13.517020942097442, 14.318382683795155, 12.046167368577748, + 15.70357519686396 + ], + [ + 6.691983122362868, 5.44853875476493, 19.293764087152514, + 8.344482257592283, 6.503393331366183, 20.0, 10.431372549019608 + ], + [ + 15.13924008334364, 13.66200724217612, 12.448451108910222, + 14.367265187083097, 14.95032907968616, 11.139996700555466, + 16.25836171414341 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.886075949367089, 5.14866581956798, 18.84297520661157, + 8.33062439907194, 6.780761286515194, 19.83415508740475, + 10.865051903114189 + ], + [ + 9.476793248945144, 9.21473951715375, 13.343350864012024, + 13.480671023458017, 9.997049277072877, 13.200358583594795, + 14.652825836216845 + ], + [ + 7.942133445717131, 7.053185367694067, 16.786518484174934, + 10.030397301819624, 8.22492901041257, 17.08522684095704, + 12.492337529995487 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 18.421443635050036, 16.750129990814887, 8.25120391383517, + 18.661884190949262, 18.089666386536614, 6.272575961156832, + 18.852024326180988 + ], + [ + 18.987340216018055, 18.818705675787417, 8.729792551787675, + 18.473395248050696, 19.057861162841178, 6.0814615972751325, + 18.975330513161627 + ], + [ + 9.208860279214178, 7.6953617333443, 19.02235062323393, 8.99518105173004, + 8.708320584480159, 17.758291319462696, 11.34515511764662 + ], + [ + 9.00223336894725, 8.314522356886426, 18.119944320687843, + 9.674484152237131, 9.357262664538373, 17.291111035420982, + 11.740280318874104 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 15.813521278349915, 14.91678671604552, 12.306901833469869, + 14.670613007102775, 16.033219388546648, 10.468890843916565, + 16.534727190766137 + ], + [ + 14.541138915486558, 12.496823100598009, 13.173052548033672, + 13.50310559719787, 14.248303015842524, 11.948117169066071, + 15.720876234539537 + ], + [ + 6.819109281881754, 6.099110046517619, 19.286976437292143, + 8.711975885384017, 6.836158169589718, 19.441591211831057, + 10.617255520070206 + ], + [ + 14.942211937108071, 13.3749512116991, 12.540423582424141, + 14.079825301908384, 14.790818907026791, 11.277843443134708, + 16.0162473944111 + ], + [ + 7.162106395461434, 6.364716451769193, 19.708682129688327, + 8.694810023333412, 7.116000901678185, 18.97311913443754, + 10.572607683568647 + ], + [ + 17.714485846638045, 15.883099671164532, 9.22447575425873, + 17.654268872756578, 17.527293403544764, 7.272523206941286, + 18.200691227888207 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 20.0, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20.0 + ], + [ + 7.156118143459914, 6.668360864040662, 20.0, 8.25856353476616, + 7.229271171437, 18.879426266248316, 10.698961937716264 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 18.41963902058667, 18.301951768348186, 8.929262373554797, + 18.00448095507974, 18.686123137148993, 6.62157191507445, + 18.735450981041314 + ], + [ + 6.894514767932487, 6.058449809402797, 19.539193588780364, + 8.306234568076139, 6.845677190911772, 19.421783953384132, + 10.50980392156863 + ], + [ + 7.3091051584241535, 5.8138290927288905, 18.036400935703455, + 8.694273590144332, 7.361577176776227, 18.678155233856437, + 11.5950431394543 + ], + [ + 15.325286161589917, 14.265535091270477, 12.905141417145897, + 14.028202431214313, 15.464532132482608, 11.226584593601137, + 16.187333126201796 + ], + [ + 7.676842517274287, 6.610359198517042, 17.200688608809045, + 9.743936475105002, 7.873222676005576, 17.615418241483315, + 12.114796889379106 + ], + [ + 8.03616599106715, 7.114176470317734, 16.89384916502004, + 10.03087242837534, 8.321038266991808, 17.192801914387847, + 12.531882758010667 + ], + [ + 16.208704941690172, 14.035390941499823, 11.075478660138753, + 15.647928770763226, 15.705041453311111, 9.50137117005836, + 17.149124975314816 + ] + ], + "fit_tau": [ + [ + 50.37974420793462, 29.580684607183542, 4.057099713274281, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 23.252593942992075 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 5.316455418927775, 0.91486653424279, 22.238916946836802, + 0.8587755453516607, 7.789908121313889, 23.397578340456285, + 7.197231458545165 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 15.949366256783323, 20.584497020462774, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 15.189872625507926, 1.9822108241927117, 2.2539442851523788, + 2.0038096058205417, 17.350249906562755, 3.227252184890522, + 22.698960753873216 + ], + [ + 10.126581750338618, 1.6772553127784482, 4.658151522648249, + 1.145034060468881, 6.550604556559406, 10.488569600894197, + 15.640137592607765 + ], + [ + 11.139239925372479, 15.095297815006036, 10.368143711700942, + 2.099229110859615, 13.101209113118813, 8.874943508448936, + 17.30103715996434 + ], + [ + 4.810126331410843, 1.0673442899499217, 27.49812027885902, + 1.3358730705470279, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 16.962024431817184, 19.669630486219987, 9.166040092953006, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 21.314877781076067 + ], + [ + 14.43037899423253, 19.364674974805723, 2.1036813328088866, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 24.35986032122979 + ], + [ + 4.810126331410843, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 10.126581750338618, 14.485386792177508, 4.5078885703047575, + 2.0038096058205417, 12.57007901393832, 11.026444965042618, + 17.57785375452377 + ], + [ + 19.99999895691877, 23.939007646019675, 2.4042072374958705, + 3.053424161250349, 23.723811096728664, 0.26893768207421015, + 27.54325115866323 + ], + [ + 4.3037972438939125, 18.754763951977196, 24.643124184332674, + 1.145034060468881, 6.196517823772412, 26.75929936638391, + 7.197231458545165 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.810126331410843, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 5.665387724591919, 26.75929936638391, + 7.058823161265451 + ], + [ + 8.860759031546289, 11.435831678034875, 13.52366571091427, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.148788241572898 + ], + [ + 5.063290875169309, 0.91486653424279, 25.845227803080608, + 0.8587755453516607, 2.8326938622959594, 26.75929936638391, + 9.4117642150206 + ], + [ + 9.620252662821686, 12.503175967984797, 9.917354854670466, + 1.7175510907033213, 10.622601983609849, 8.068130462226305, + 14.256054619810616 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.3037972438939125, 0.6099110228285267, 26.74680551714156, + 0.8587755453516607, 2.12452039672197, 26.75929936638391, + 8.304497836782883 + ], + [ + 9.873417206580152, 0.457433267121395, 9.767091902326975, + 1.2404535655079545, 6.373561190165909, 14.926041355118663, + 14.94809610620919 + ], + [ + 6.075949050203171, 0.6099110228285267, 19.233657899966964, + 1.0496145554298075, 4.603127526230934, 20.842670360751292, + 9.13494762046117 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 15.949366256783323, 20.73697477616991, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 25.063289832088078, 26.226173981626648, 5.409466284365709, + 3.2442631713284964, 27.618765157385607, 0.26893768207421015, + 21.591694375635498 + ], + [ + 3.7974681563769814, 17.687419662027274, 22.83996875621077, + 1.6221315856642482, 5.665387724591919, 25.549079797049966, + 8.027681242223455 + ], + [ + 5.316455418927775, 1.0673442899499217, 21.33733923277585, + 2.0038096058205417, 6.019474457378914, 21.64948340697392, + 10.934255485097463 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 12.151898100406342, 14.790342303591771, 15.62734704372316, + 2.0038096058205417, 12.57007901393832, 3.496189866964732, + 13.702421430691757 + ], + [ + 8.607594487787825, 11.435831678034875, 10.518406664044434, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.564013133412043 + ], + [ + 5.5696199626862395, 0.91486653424279, 24.49286123198918, + 0.8587755453516607, 4.780170892624432, 26.75929936638391, + 8.719722728622028 + ], + [ + 9.620252662821686, 12.198220456570533, 13.37340275857078, + 1.7175510907033213, 10.268515250822853, 4.303002913187362, + 14.532871214370044 + ], + [ + 4.556961787652378, 0.91486653424279, 24.643124184332674, + 1.145034060468881, 6.550604556559406, 26.75929936638391, + 7.750864647664025 + ], + [ + 14.683543537990996, 18.449808440562933, 5.860255141396185, + 2.480907131015909, 16.642076440988763, 1.8825637745194712, + 21.176469483796353 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 4.556961787652378, 1.0673442899499217, 26.74680551714156, + 0.8587755453516607, 5.3113009918049245, 26.75929936638391, + 6.505189972146591 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 19.493669869401838, 22.414230088948354, 6.311043998426661, + 2.862585151172202, 21.245203967219698, 0.8068130462226305, + 20.069203105558632 + ], + [ + 5.063290875169309, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 8.166089539503169 + ], + [ + 4.3037972438939125, 0.6099110228285267, 25.093913041363148, + 1.2404535655079545, 1.9474770303284723, 26.75929936638391, + 7.33563975582488 + ], + [ + 10.886075381614015, 13.570520257934719, 16.228398853097126, + 1.8129705957423947, 11.507818815577338, 9.009412349486041, + 12.733563349733753 + ], + [ + 6.075949050203171, 0.6099110228285267, 20.586024471058394, + 1.0496145554298075, 3.3638239614764522, 22.456296453196547, + 9.550172512300316 + ], + [ + 6.835442681478567, 0.6099110228285267, 21.637865137462835, + 0.7633560403125873, 3.8949540606569446, 20.842670360751292, + 9.273355917740886 + ], + [ + 10.886075381614015, 14.485386792177508, 4.357625617961265, + 2.0038096058205417, 12.57007901393832, 7.7991927801520955, + 17.57785375452377 + ] + ], + "fit_tau_": [ + [ + 0.03394037571391852, 0.15175313208494268, 20.925014224071155, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.7866404343923871 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 5.634102368510475, 30.19887328490359, 1.017973664954813, + 3.1928504365667387, 5.996590262828748, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0521516471314742, 20.941932227722088, 22.508528814000865, + 1.5299075008548957, 1.462582990933841, 17.95496967576716, + 0.4495088196527926 + ], + [ + 2.2061244214047044, 22.459463548571513, 16.740011379256924, + 2.577561550353357, 7.312914954669206, 5.572231968341533, + 3.6522591596789398 + ], + [ + 2.07036291854903, 2.428050113359083, 8.030681134643524, + 1.4966486421406588, 2.632649383680914, 6.810505739084096, + 2.5846757130035574 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 2.2283435338538697, 10.749984983363733, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.8145690171340445, 0.910518792509656, 9.727303909568214, + 1.1474306256411717, 1.2431955422937648, 37.148213122276886, + 1.0675834466753824 + ], + [ + 1.2557939014149855, 1.0622719245945986, 22.508528814000865, + 1.1474306256411717, 1.2431955422937648, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.67685583381704, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 2.511587802829971, 2.8833095096139107, 19.00217507915651, + 1.5465369302120142, 2.925165981867682, 4.953095082970252, + 2.303732700720562 + ], + [ + 0.5430460114226964, 0.15175313208494268, 22.508528814000865, + 0.9312480439986321, 0.36564574773346026, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.754134767069787, 0.910518792509656, 0.5655409249748962, + 2.5110438329248828, 7.751689851949357, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.109267628505334, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 8.48298134741628, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.9528126871109115, 4.704347094633222, 5.2029765097690435, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 5.2817286309203135 + ], + [ + 5.97350612564966, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.040796712964875, 0.20637896179042714, + 8.709233380772858 + ], + [ + 2.647349305685645, 3.945581434208509, 8.7093302446134, + 1.779348941211672, 3.8758449259746786, 8.048779509826659, + 4.4388995940713265 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.754134767069787, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.552700759791719, 0.20637896179042714, + 10.563457261840627 + ], + [ + 2.341885924260378, 30.19887328490359, 8.7093302446134, + 2.3780083980679354, 7.532302403309282, 2.2701685796946984, + 3.877013569505336 + ], + [ + 4.887414102804267, 30.19887328490359, 2.3752718848945635, + 2.7771147026387784, 9.872435188803427, 0.6191368853712815, + 9.271119405338847 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 0.20364225428351113, 0.15175313208494268, 16.513795009266964, + 0.84810089721304, 0.07312914954669206, 41.069413396295, + 1.2361492540451797 + ], + [ + 6.754134767069787, 1.2140250566795414, 1.017973664954813, + 1.8957549467115011, 8.629239646509664, 0.20637896179042714, + 10.788211671667023 + ], + [ + 5.53228124136872, 30.19887328490359, 1.3572982199397505, + 1.5465369302120142, 7.824819001496049, 0.4127579235808543, + 7.079763909531483 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 1.730959161409845, 2.5798032454440256, 4.071894659819252, + 1.5465369302120142, 2.925165981867682, 15.272043172491609, + 4.944597016180719 + ], + [ + 3.0885741899665855, 4.704347094633222, 7.9175729496485445, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 4.83221981126752 + ], + [ + 5.328638987085209, 30.19887328490359, 0.5655409249748962, + 3.1595915778525017, 9.799306039256734, 0.20637896179042714, + 9.833005429904839 + ], + [ + 2.579468554257808, 4.097334566293452, 5.316084694764023, + 1.8292372292830275, 4.0952323746147545, 14.859285248910753, + 4.157956581788332 + ], + [ + 6.618373264214113, 30.19887328490359, 0.5655409249748962, + 2.5110438329248828, 7.239785805122514, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.2218535257010668, 1.2140250566795414, 15.495821344312152, + 1.230577772426764, 1.5357121404805332, 19.81238033188101, + 1.0675834466753824 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.482611761358438, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 9.141143693336508, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 0.5430460114226964, 0.455259396254828, 14.704064049347298, + 1.0143951907842244, 0.6581623459202285, 30.95684426856407, + 1.629469471241373 + ], + [ + 5.871684998507905, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.530597534723656, 0.20637896179042714, + 10.732023069210424 + ], + [ + 6.754134767069787, 30.19887328490359, 0.6786491099698753, + 2.4944144035677644, 14.552700759791719, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.138243669976867, 3.186815773783796, 3.3932455498493765, + 1.662942935711843, 3.4370700286945266, 7.016884700874523, + 5.675048848116507 + ], + [ + 4.955294854232105, 30.19887328490359, 1.8097309599196674, + 2.7105969852103042, 12.505084572484343, 0.20637896179042714, + 8.765421983229457 + ], + [ + 4.208606588525897, 30.19887328490359, 1.2441900349447714, + 3.3092564420665678, 11.40814732928396, 0.6191368853712815, + 9.10255359796905 + ], + [ + 2.2061244214047044, 2.8833095096139107, 19.115283264151486, + 1.5465369302120142, 2.925165981867682, 8.255158471617085, + 2.303732700720562 + ] + ], + "raw_spliced": [ + [0.0, 116.0, 0.0, 10.0, 0.0, 0.0, 0.0], + [0.0, 12.0, 0.0, 8.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 4.0, 0.0, 0.0, 1.0, 0.0], + [3.0, 0.0, 0.0, 43.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0], + [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 4.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 18.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 10.0, 0.0, 0.0, 1.0, 0.0], + [1.0, 0.0, 0.0, 5.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 2.0, 0.0, 1.0], + [0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 31.0, 0.0, 0.0, 1.0], + [4.0, 0.0, 0.0, 23.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 1.0, 0.0, 9.0, 1.0, 0.0, 1.0], + [5.0, 0.0, 0.0, 34.0, 4.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0], + [2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], + [3.0, 0.0, 0.0, 5.0, 1.0, 0.0, 1.0], + [0.0, 2.0, 0.0, 7.0, 3.0, 0.0, 1.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 7.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 9.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "raw_unspliced": [ + [0.0, 335.0, 0.0, 0.0, 4.0, 0.0, 1.0], + [0.0, 35.0, 0.0, 0.0, 1.0, 0.0, 3.0], + [1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 0.0, 0.0, 1.0, 0.0, 7.0], + [3.0, 0.0, 0.0, 0.0, 1.0, 1.0, 6.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0], + [1.0, 0.0, 0.0, 0.0, 4.0, 0.0, 2.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 3.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 2.0, 0.0, 3.0, 0.0, 1.0], + [2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 7.0], + [4.0, 1.0, 4.0, 0.0, 1.0, 0.0, 4.0], + [1.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0], + [2.0, 1.0, 0.0, 4.0, 5.0, 0.0, 4.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0], + [5.0, 0.0, 1.0, 0.0, 3.0, 0.0, 17.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0], + [3.0, 0.0, 0.0, 0.0, 5.0, 0.0, 9.0], + [2.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 2.0, 0.0, 0.0, 2.0, 0.0, 9.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 2.0, 3.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0], + [0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 7.0], + [1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 4.0, 2.0, 0.0, 4.0, 0.0, 11.0], + [1.0, 0.0, 0.0, 0.0, 6.0, 0.0, 2.0], + [1.0, 0.0, 1.0, 0.0, 3.0, 0.0, 1.0], + [2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 9.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 9.0, 0.0], + [2.0, 1.0, 1.0, 0.0, 5.0, 0.0, 1.0], + [0.0, 1.0, 8.0, 0.0, 0.0, 2.0, 0.0], + [2.0, 0.0, 0.0, 0.0, 4.0, 0.0, 5.0], + [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 3.0], + [2.0, 5.0, 0.0, 0.0, 2.0, 0.0, 7.0], + [0.0, 1.0, 4.0, 0.0, 0.0, 0.0, 0.0], + [3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 7.0], + [0.0, 0.0, 0.0, 1.0, 5.0, 0.0, 5.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 7.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [1.0, 11.0, 0.0, 0.0, 2.0, 0.0, 8.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0], + [3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0] + ], + "spliced": [ + [0.0, 74.70283508300781, 0.0, 6.439899921417236, 0.0, 0.0, 0.0], + [ + 0.0, 13.157543182373047, 0.0, 8.771695137023926, 0.0, 0.0, + 1.0964618921279907 + ], + [0.0, 0.0, 3.881344795227051, 0.0, 0.0, 0.9703361988067627, 0.0], + [ + 3.650341033935547, 0.0, 0.0, 52.32155227661133, 0.0, 0.0, + 1.2167803049087524 + ], + [ + 0.0, 0.0, 0.0, 1.3689839839935303, 1.3689839839935303, 0.0, + 1.3689839839935303 + ], + [ + 1.379892110824585, 1.379892110824585, 1.379892110824585, 0.0, 0.0, 0.0, + 0.0 + ], + [0.8711347579956055, 0.0, 0.0, 0.8711347579956055, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 5.362476825714111, 0.0, 0.0, 0.0], + [0.0, 0.0, 3.9687249660491943, 0.0, 0.0, 0.0, 0.0], + [ + 3.5909736156463623, 0.0, 0.0, 1.196991205215454, 0.0, 0.0, + 2.393982410430908 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0163991451263428, 0.0, 0.0, 0.0, 0.0], + [ + 4.449370384216309, 0.0, 0.0, 5.932494163513184, 1.483123540878296, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 2.8771071434020996, 0.0, 0.0, 4.31566047668457, 0.0, 0.0, + 1.4385535717010498 + ], + [0.0, 0.0, 0.43750929832458496, 0.0, 0.0, 0.0, 0.0], + [1.8044743537902832, 0.0, 0.0, 16.24026870727539, 0.0, 0.0, 0.0], + [0.0, 0.0, 5.953488349914551, 0.0, 0.0, 0.5953488349914551, 0.0], + [ + 0.6548042893409729, 0.0, 0.0, 3.2740213871002197, 0.0, 0.0, + 1.3096085786819458 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.292120933532715, 0.0], + [ + 1.0245345830917358, 0.0, 0.0, 1.0245345830917358, 2.0490691661834717, + 0.0, 1.0245345830917358 + ], + [0.0, 0.0, 2.0018699169158936, 0.0, 0.0, 0.0, 0.0], + [1.848665714263916, 0.0, 0.0, 9.243328094482422, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.5297479629516602, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1994296312332153], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 4.200838565826416, 0.0, 0.0, 0.0, 0.0], + [ + 1.0921906232833862, 0.0, 0.0, 33.85791015625, 0.0, 0.0, + 1.0921906232833862 + ], + [ + 4.0150017738342285, 0.0, 0.0, 23.086259841918945, 0.0, 0.0, + 1.0037504434585571 + ], + [0.0, 0.0, 1.535332441329956, 0.0, 0.0, 0.0, 0.0], + [0.7396985292434692, 0.0, 0.7396985292434692, 0.0, 0.0, 0.0, 0.0], + [ + 2.2555065155029297, 1.1277532577514648, 0.0, 10.149779319763184, + 1.1277532577514648, 0.0, 1.1277532577514648 + ], + [ + 6.451895236968994, 0.0, 0.0, 43.872886657714844, 5.161516189575195, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 3.5534095764160156, 0.0, 0.0, 0.0], + [ + 0.0, 0.0, 0.0, 2.5472636222839355, 1.2736318111419678, 0.0, + 1.2736318111419678 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.9573984146118164, 0.0], + [ + 1.0921906232833862, 0.0, 0.0, 1.0921906232833862, 1.0921906232833862, + 0.0, 0.0 + ], + [0.0, 0.0, 0.8593111038208008, 0.0, 0.0, 0.8593111038208008, 0.0], + [ + 2.470834970474243, 0.0, 0.0, 0.0, 1.2354174852371216, 0.0, + 1.2354174852371216 + ], + [ + 3.606369972229004, 0.0, 0.0, 6.010616302490234, 1.2021232843399048, 0.0, + 1.2021232843399048 + ], + [ + 0.0, 1.7818125486373901, 0.0, 6.236343860626221, 2.6727187633514404, + 0.0, 0.8909062743186951 + ], + [0.0, 0.0, 3.45438551902771, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1647872924804688], + [0.0, 0.0, 0.0, 6.6370368003845215, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 2.748319625854492, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [ + 0.0, 0.7975077629089355, 0.0, 7.17756986618042, 0.7975077629089355, 0.0, + 0.0 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.214271068572998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + ], + "unspliced": [ + [ + 0.0, 236.86868286132812, 0.0, 0.0, 2.8282828330993652, 0.0, + 0.7070707082748413 + ], + [ + 0.0, 30.33012580871582, 0.0, 0.0, 0.8665750026702881, 0.0, + 2.5997250080108643 + ], + [ + 1.5162454843521118, 1.5162454843521118, 7.5812273025512695, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 3.4115524291992188, 0.0, 0.0, 0.0, 1.1371841430664062, 0.0, + 7.960289001464844 + ], + [ + 2.769230604171753, 0.0, 0.0, 0.0, 0.923076868057251, 0.923076868057251, + 5.538461208343506 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.9266862869262695], + [0.4958677589893341, 0.0, 0.0, 0.0, 0.0, 0.0, 5.950413227081299], + [ + 1.0778443813323975, 0.0, 0.0, 0.0, 4.31137752532959, 0.0, + 2.155688762664795 + ], + [0.0, 1.2512413263320923, 5.004965305328369, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.9618321061134338, 0.0, 0.0, 0.0, 0.0, 2.8854963779449463], + [0.9684857130050659, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9369714260101318], + [0.0, 0.0, 3.6206893920898438, 0.0, 0.0, 0.0, 0.0], + [ + 2.166189193725586, 0.0, 1.4441261291503906, 0.0, 2.166189193725586, 0.0, + 0.7220630645751953 + ], + [ + 1.6688742637634277, 0.0, 0.8344371318817139, 0.0, 0.0, 0.0, + 5.841059684753418 + ], + [ + 4.253164768218994, 1.0632911920547485, 4.253164768218994, 0.0, + 1.0632911920547485, 0.0, 4.253164768218994 + ], + [ + 0.7753846049308777, 1.5507692098617554, 1.5507692098617554, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 1.583909511566162, 0.791954755783081, 0.0, 3.167819023132324, + 3.9597737789154053, 0.0, 3.167819023132324 + ], + [0.0, 0.0, 1.5749999284744263, 0.0, 0.0, 4.724999904632568, 0.0], + [ + 2.128378391265869, 0.0, 0.4256756603717804, 0.0, 1.2770270109176636, + 0.0, 7.236486434936523 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 4.468085289001465, 0.0], + [ + 3.1059985160827637, 0.0, 0.0, 0.0, 5.176663875579834, 0.0, + 9.317995071411133 + ], + [ + 1.736733317375183, 0.8683666586875916, 3.473466634750366, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 1.598984718322754, 0.0, 0.0, 1.598984718322754, 0.0, + 7.195431232452393 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 12.375, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.181818962097168], + [0.0, 1.2138729095458984, 0.0, 0.0, 0.0, 0.0, 1.2138729095458984], + [0.0, 1.6237112283706665, 2.4355669021606445, 0.0, 0.0, 0.0, 0.0], + [ + 0.9655172824859619, 0.0, 0.0, 0.9655172824859619, 0.0, 0.0, + 1.9310345649719238 + ], + [ + 0.0, 1.296296238899231, 0.0, 1.296296238899231, 0.0, 0.0, + 9.074073791503906 + ], + [1.0404623746871948, 0.0, 5.202311992645264, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.2936345338821411, 0.0, 0.0, 0.0, 0.0], + [ + 1.081545114517212, 4.326180458068848, 2.163090229034424, 0.0, + 4.326180458068848, 0.0, 11.89699649810791 + ], + [ + 1.2197482585906982, 0.0, 0.0, 0.0, 7.3184895515441895, 0.0, + 2.4394965171813965 + ], + [ + 0.9130434989929199, 0.0, 0.9130434989929199, 0.0, 2.7391304969787598, + 0.0, 0.9130434989929199 + ], + [ + 1.6395576000213623, 0.0, 0.0, 0.0, 0.8197788000106812, 0.0, + 7.37800931930542 + ], + [ + 0.0, 1.52173912525177, 6.08695650100708, 0.0, 0.0, 13.69565200805664, + 0.0 + ], + [ + 2.0289855003356934, 1.0144927501678467, 1.0144927501678467, 0.0, + 5.0724639892578125, 0.0, 1.0144927501678467 + ], + [ + 0.0, 1.192052960395813, 9.536423683166504, 0.0, 0.0, 2.384105920791626, + 0.0 + ], + [ + 1.9718310832977295, 0.0, 0.0, 0.0, 3.943662166595459, 0.0, + 4.929577827453613 + ], + [ + 1.1954458951950073, 0.0, 0.0, 1.1954458951950073, 0.0, 0.0, + 3.5863375663757324 + ], + [ + 1.5969581604003906, 3.9923954010009766, 0.0, 0.0, 1.5969581604003906, + 0.0, 5.589353561401367 + ], + [0.0, 2.2661869525909424, 9.06474781036377, 0.0, 0.0, 0.0, 0.0], + [ + 2.675158977508545, 0.0, 0.8917196989059448, 0.0, 0.0, 0.0, + 6.242037773132324 + ], + [ + 0.0, 0.0, 0.0, 0.9495101571083069, 4.747550964355469, 0.0, + 4.747550964355469 + ], + [0.0, 0.963302731513977, 0.0, 0.0, 0.0, 6.743119239807129, 0.0], + [0.0, 1.730769157409668, 0.0, 0.0, 0.0, 0.0, 3.461538314819336], + [ + 0.7398708462715149, 8.138579368591309, 0.0, 0.0, 1.4797416925430298, + 0.0, 5.918966770172119 + ], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.749999761581421], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.6241612434387207], + [2.763157844543457, 0.0, 0.0, 0.0, 0.0, 0.0, 8.289473533630371] + ], + "velocity": [ + [ + 0.02215896332905709, 0.09061453468820219, 0.04963872396013326, + -0.16230761577222097, 0.015514291171107725, 0.017587299426826387, + 0.023322397873203782 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.07497389928324938, 0.1784627752885084, 0.0351815487393945, + 0.11583920369867151, 0.03890275779343792, 0.011728603586439061, + 0.032799839768185436 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.0250910398570231, 0.11614594709220222, 0.049610776393676864, + 0.0026907493508385727, 0.017883727492135543, 0.017965376173328346, + 0.023749860534795914 + ], + [ + 0.03256275614423937, 0.12978986843607154, 0.04966876826604046, + 0.004204411844616729, 0.021182350431124125, 0.018378484775796896, + 0.024905610396072753 + ], + [ + 0.06104385332519857, 0.16493853873629394, 0.04548543909615266, + 0.02070201100798741, 0.03166419807251335, 0.015804908879196174, + 0.028496399620202784 + ], + [ + 0.03304848078743805, 0.13638142466426662, 0.048676249474305766, + 0.007916070607240755, 0.021521233541050594, 0.018041505662842773, + 0.02610809491262936 + ], + [ + 0.09559645940455713, 0.17859576466679553, 0.03321738119012385, + 0.18157159234226405, 0.041364497186196794, 0.01081201284144586, + 0.03356118087150597 + ], + [ + 0.026971976685454813, 0.11563166378149498, 0.049753550434412874, + 0.0032690746769610257, 0.01824257557359693, 0.0183181955695864, + 0.02442209277467941 + ], + [ + 0.026483410229734328, 0.12002081197778625, 0.049749539715903277, + 0.0032907906468171433, 0.018723887715088622, 0.018230761170506864, + 0.02419326551600215 + ], + [ + 0.10172094763324063, 0.17516378158997103, 0.0333706336163362, + 0.17627375452963712, 0.04252024999151943, 0.010135604970733354, + 0.0338002812919584 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03416302032395524, 0.13932810419400665, 0.048309209636089104, + 0.009121705565929616, 0.02279920621880821, 0.0178666876980665, + 0.02622708661783904 + ], + [ + 0.02262029077539318, 0.10785362922499886, 0.049071531322612494, + -2.247171978738857, 0.01636348571935972, 0.01717054025678485, + 0.022954573551608973 + ], + [ + 0.08736177656183775, 0.17848109745484797, 0.034041122276063485, + 0.1522178696555052, 0.040993958433611075, 0.01098840876498481, + 0.033531513455605524 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10185784835330725, 0.17472341611609524, 0.032806798018477246, + 0.17560278507490246, 0.042592294453127406, 0.010305721066002645, + 0.03386035535498475 + ], + [ + 0.04241751721462533, 0.14924080118715982, 0.0454064541655671, + 0.02146803112099782, 0.025761854088260316, 0.016342993538657574, + 0.02807288740271599 + ], + [ + 0.10240221962597454, 0.17176829036992908, 0.03413079608937271, + 0.17419032415239322, 0.04271625395624436, 0.009877033668051635, + 0.03376915043157764 + ], + [ + 0.03906783860637403, 0.1425167166001441, 0.04672038426914933, + 0.015217129511825078, 0.024321386933784994, 0.016989829312537844, + 0.02733053606616001 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10082366581429836, 0.16909644670912577, 0.03500292774935711, + 0.17516998939114004, 0.042467442269172505, 0.010000760170828564, + 0.033474905173577936 + ], + [ + 0.07822987111210078, 0.17431480881884587, 0.045332839938153874, + 0.021786223559708162, 0.03637901730589714, 0.015437769736541672, + 0.029446083112101867 + ], + [ + 0.09173846641874273, 0.1787366480016163, 0.0390165836929833, + 0.08804062708272475, 0.040284770189640426, 0.012178075157941504, + 0.03199917369463817 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.025341317707082034, 0.11614594709220233, 0.049653274743449105, + 0.0026755100770721185, 0.01798600325926003, 0.018059099044660104, + 0.02382612059547355 + ], + [ + 0.023498130600606015, 0.09947692768677119, 0.04975860918531404, + 0.002887619518844531, 0.01632102940490171, 0.01795543402456658, + 0.02366121701865273 + ], + [ + 0.08055304777678457, 0.17874816744046737, 0.034655201927928925, + 0.1338602617153981, 0.03931265049291485, 0.011625497365965617, + 0.03309520909274354 + ], + [ + 0.08236082599158345, 0.17760830100075453, 0.03641149583598864, + 0.10168238272123453, 0.03788459908786154, 0.012007962666217849, + 0.032745166211360296 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03577696844582795, 0.13174998891351253, 0.046923979234338206, + 0.013458882064519173, 0.021976251953255616, 0.01741619712886457, + 0.02695805246450808 + ], + [ + 0.042215896046127355, 0.15223830517222148, 0.0456090331612965, + 0.021589287675672253, 0.02592462279221902, 0.01641621107059175, + 0.028049875097138674 + ], + [ + 0.10137289346196035, 0.17596311983713286, 0.03414388292402294, + 0.1501174485869221, 0.042409871236855155, 0.010297451458859332, + 0.03364908552992612 + ], + [ + 0.040080550353339905, 0.14495008256216985, 0.04658557152991363, + 0.017094646371091926, 0.02468020781327579, 0.016896160468684335, + 0.027655539343664742 + ], + [ + 0.0985158231735348, 0.17710709641708614, 0.03333384564352089, + 0.15116401191787254, 0.04208211240123952, 0.010658312842985518, + 0.033678775355310595 + ], + [ + 0.027840423546549198, 0.12346532454479198, 0.049716214437967705, + 0.0040228092667824455, 0.01901565170221492, 0.01835837907142884, + 0.024702100729729518 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.09856655921805751, 0.17805162943696584, 0.03277822494291319, + 0.18035373169957758, 0.041932956956847185, 0.010731339597813618, + 0.033593392813204156 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.025347413232940652, 0.10351428511478461, 0.04975904676608599, + 0.0034911434306810207, 0.016944329480680725, 0.018207816420545836, + 0.02398232318159313 + ], + [ + 0.10075413285116952, 0.1757604057272294, 0.033658642802496946, + 0.17690759604880313, 0.04239972640958395, 0.010312561279655123, + 0.033719634195078466 + ], + [ + 0.09726240143640907, 0.1743787275359826, 0.03657474933513562, + 0.1511968342954173, 0.04174755332919647, 0.010889147465128389, + 0.03287749851496467 + ], + [ + 0.03813307593827647, 0.13735359963063326, 0.04603257071911143, + 0.017455592907534623, 0.02318766654612489, 0.016931211775987935, + 0.027426024733850737 + ], + [ + 0.09407250268678785, 0.17789983000070364, 0.03820888090089253, + 0.09886382235602298, 0.040928698214817066, 0.011741910011905374, + 0.03238572407776885 + ], + [ + 0.09090715517670067, 0.17879608873504022, 0.03880757516893518, + 0.08802369778840635, 0.0400989337042324, 0.012089079430872653, + 0.03195739325691363 + ], + [ + 0.03396956884748498, 0.1393281041940067, 0.04846403407687348, + 0.00906175520332475, 0.02266979260065083, 0.017923681949678343, + 0.02612640422576734 + ] + ], + "velocity_u": [ + [ + 0.013871114448370895, 0.12802415679307919, 0.0919197246371718, + -0.13828074641968088, 0.0240098384729021, 0.08332838483720134, + 0.09585120381840136 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.05083603838556144, 0.4413840419072413, 0.04000760090681464, + 0.003175357138188317, 0.07839978468746103, 0.02611840262224845, + 0.1712292458111995 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.015738092178754524, 0.17858360972338783, 0.0923913196395026, + 7.375724325565144e-5, 0.02808066099116272, 0.07914356599332342, + 0.09824182643092866 + ], + [ + 0.02055120985508018, 0.21049997078827282, 0.08373358255983487, + 0.00011524887192710787, 0.03402332246367175, 0.0681339970707457, + 0.10494664386607859 + ], + [ + 0.040085714298987864, 0.32774917866597797, 0.06176826430454228, + 0.0005674714287350591, 0.05623330398713567, 0.04178665495614378, + 0.12881737520815492 + ], + [ + 0.020867271744994847, 0.22767827689822484, 0.07454740982195827, + 0.00021699068613850498, 0.03465469607070802, 0.05862140214740036, + 0.11235486518910566 + ], + [ + 0.06999405274503946, 0.4875924728069112, 0.03691628686077369, + 0.004977377686010334, 0.09044991634311403, 0.023397148332930898, + 0.18399794467643993 + ], + [ + 0.01694175907566667, 0.17745992801696556, 0.08640125814660347, + 8.960995795748715e-5, 0.028710640115182325, 0.07244008432704752, + 0.10209641912173448 + ], + [ + 0.016628633565619787, 0.1872202683640343, 0.08892668971981721, + 9.020522338896158e-5, 0.029561580570890655, 0.07477774606306789, + 0.10077071081574364 + ], + [ + 0.07724049748270638, 0.5399655395275437, 0.037150593700428405, + 0.004832129400396117, 0.09979236600494484, 0.021502422452872507, + 0.18922537545489054 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.021594131536364112, 0.23582475583707915, 0.07251204287041335, + 0.0002500388453142937, 0.03707509651602201, 0.05638417435778535, + 0.11311540790023673 + ], + [ + 0.014164151407556844, 0.16105462543577675, 0.0979112344889769, + -0.10283404183335122, 0.025451781246183396, 0.08689412296569128, + 0.09382920751752406 + ], + [ + 0.06165957864579997, 0.491175317818186, 0.0381889172898143, + 0.004172627859732737, 0.08824031697725897, 0.023906332766820592, + 0.18340746976161235 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.07741765944007131, 0.5441981273396671, 0.03629388370068171, + 0.004813733919780079, 0.10064612203830157, 0.021970674742170376, + 0.19070737489092673 + ], + [ + 0.02705645769847576, 0.2659342067104673, 0.06153164906293237, + 0.000588469129602192, 0.04295738868753449, 0.04468109007665975, + 0.12568862925072827 + ], + [ + 0.07813038005929707, 0.5682253043271562, 0.03832946496612539, + 0.004775009628013637, 0.10230854403952883, 0.020800757114951336, + 0.1884887001146246 + ], + [ + 0.02482189940603976, 0.24501742887695963, 0.06580154916496801, + 0.0004171230430351819, 0.040046315837371, 0.04874759645714724, + 0.12044170050957362 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.0760987854229484, 0.5859472207862702, 0.03971813350591733, + 0.00480186829545868, 0.09920555030933721, 0.02113501626301226, + 0.18230930645168994 + ], + [ + 0.053536388896318544, 0.3863716273129177, 0.06131305230232214, + 0.0005971912371561756, 0.06941160053556877, 0.03998897981197061, + 0.1362607083615368 + ], + [ + 0.06593571872497679, 0.48211221232719653, 0.046719479609741384, + 0.0024133317523273167, 0.0845068064750924, 0.027527115159608533, + 0.16087518354604943 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.01589797024141697, 0.17858360972338783, 0.09165285064494469, + 7.333951321969978e-5, 0.028259831330941187, 0.07783070285611084, + 0.0986731162037428 + ], + [ + 0.014722473960559992, 0.1444888197605931, 0.08825447592622843, + 7.915373285280896e-5, 0.02537925368848026, 0.07927373249255265, + 0.0977423571909879 + ], + [ + 0.055519344429352496, 0.45142439641074017, 0.039159635053877845, + 0.0036693715185487827, 0.08009038258352463, 0.025802549405832483, + 0.17570442608694053 + ], + [ + 0.05709859916772148, 0.423687476729222, 0.04205127732294291, + 0.0027872821572113757, 0.0745221634737063, 0.026987692721217992, + 0.17044849947387486 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.02265085541911061, 0.21546966778245577, 0.06654100858831724, + 0.00036892699017749945, 0.03550918576201963, 0.05199595068020072, + 0.11791026923812897 + ], + [ + 0.026921200927584706, 0.2760722401695563, 0.06214295606839292, + 0.0005917929443063728, 0.04329297504260784, 0.04510420287279119, + 0.1255216012261891 + ], + [ + 0.07679369453445864, 0.5315988939623454, 0.03835001016005992, + 0.004115045853030041, 0.09859717756099688, 0.02194778773737997, + 0.1858148558673946 + ], + [ + 0.025494721173909392, 0.25232764186877177, 0.06532549111863227, + 0.0004685884416497021, 0.040761942134080915, 0.04810592714745889, + 0.12270402300381607 + ], + [ + 0.07330019085249163, 0.5173331010842822, 0.037094248443364716, + 0.0041437368365318155, 0.09558047939365046, 0.022958727722982488, + 0.1864536136160833 + ], + [ + 0.017499209968328946, 0.19516677834853338, 0.0848741960583676, + 0.00011027088854998786, 0.030080823876772352, 0.07069792410543695, + 0.10373868503677859 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.07335979793643391, 0.5014926686477557, 0.03625085388397348, + 0.004943987971051908, 0.09438583042916097, 0.023166432831647824, + 0.18465157779527877 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.01590186513402436, 0.15234167793224782, 0.08687555128462451, + 9.569717641311334e-5, 0.02644878528737592, 0.07526301211304277, + 0.0995612024223981 + ], + [ + 0.07601166362392643, 0.5338172198985423, 0.03759393475113235, + 0.004849507005558436, 0.09849301520642646, 0.021989615468904624, + 0.18735583897552258 + ], + [ + 0.07185205530162624, 0.5473598861896593, 0.042329547042457796, + 0.004144636645829921, 0.09300930709220222, 0.023619001077238234, + 0.17236190589301986 + ], + [ + 0.024202887028482393, 0.2303312707028526, 0.06347134530281186, + 0.0004784824981918657, 0.037823819125339685, 0.048343541957815, + 0.12110103533924539 + ], + [ + 0.06835341945085548, 0.5044805436185636, 0.04521655383620121, + 0.0027100188629230427, 0.08787241363405843, 0.026159357207770056, + 0.1656119197622568 + ], + [ + 0.06509944904915742, 0.4791101083054455, 0.04632527213035154, + 0.0024128676859606017, 0.08360973908702192, 0.027243933886715043, + 0.1603869437053772 + ], + [ + 0.021467804723024602, 0.23582475583707915, 0.0733349240659943, + 0.00024839552108854823, 0.03682705021220493, 0.057063719509232204, + 0.11247154460680701 + ] + ] + }, + "obsm": { + "X_pca": [ + [ + -9.712663650512695, 14.83215618133545, -6.309364318847656, + -5.218857288360596, -2.828989028930664, -0.5048965811729431, + 0.8552966117858887, -7.353064060211182, -3.6002695560455322, + -0.493243932723999, -1.531982421875, 9.500922203063965, + -0.6443871259689331, 0.6413280367851257, 0.7234936952590942, + -0.6905364394187927, 1.7941007614135742, 2.180302858352661, + -0.7080339789390564, 0.2161874920129776, -1.3841232061386108, + 0.5915647149085999, -0.053624577820301056, 0.006490650121122599, + -0.20996397733688354, -1.3117390871047974, 0.6487839818000793, + 0.7474368810653687, -0.5431819558143616, 0.0899929329752922, + 0.4795878827571869, 0.22522015869617462, 0.4321363866329193, + 0.5209363102912903, 0.6433092951774597, -1.159608244895935, + -1.044852375984192, -0.45358842611312866, 1.5312350988388062, + 0.18233317136764526, -0.4489714801311493, -0.0505928210914135, + 0.20223473012447357, 0.09833534061908722, -0.934148907661438, + -0.8481180667877197, 1.6999300718307495, -0.7051972150802612, + -0.8624274134635925, -0.029721977189183235 + ], + [ + -14.373440742492676, 16.227378845214844, -5.005990028381348, + -8.854636192321777, -0.4386776387691498, -0.8037692904472351, + 1.6708528995513916, -3.601142644882202, 1.4449412822723389, + 0.2241569459438324, -1.8798255920410156, 6.181868076324463, + -0.2255554497241974, -1.2310168743133545, 2.3964078426361084, + -0.37832632660865784, 2.7902379035949707, -0.9484937787055969, + -0.2560673952102661, 0.8317413926124573, 1.5266791582107544, + 0.5362411737442017, -0.5971279740333557, 0.5426415801048279, + -0.7849889993667603, 0.814633846282959, -1.5268479585647583, + 1.2290681600570679, -2.534935712814331, 1.879836916923523, + 1.595924735069275, 0.125294029712677, -0.17474597692489624, + -0.07734226435422897, -1.4348098039627075, -1.4838050603866577, + 0.5758832693099976, 0.6744162440299988, 1.0054643154144287, + -0.1252695471048355, -0.6858702301979065, 1.0120424032211304, + -0.9421538710594177, 0.8420795202255249, 1.989140510559082, + -0.345791757106781, 1.259369134902954, 0.21944807469844818, + 0.2796093821525574, -0.16542039811611176 + ], + [ + -1.4087616205215454, -3.7008655071258545, 7.683778762817383, + -3.8231327533721924, -4.4474101066589355, -0.047456976026296616, + 2.48618221282959, -0.969689130783081, 2.6126821041107178, + -2.25659441947937, -1.0207782983779907, -0.0045670210383832455, + 0.8120247721672058, -2.394183874130249, -0.9944871068000793, + 0.8507892489433289, -1.3082518577575684, 0.9549160599708557, + -1.4469906091690063, 0.2592727839946747, 2.521045446395874, + 1.4384949207305908, 1.4160312414169312, 0.11652693897485733, + 0.8351993560791016, -1.0746811628341675, 0.31075242161750793, + -0.5362069010734558, 0.6788467168807983, -1.4908339977264404, + 0.9924854040145874, -0.5734403729438782, 0.24867302179336548, + -0.4066714644432068, 1.403648018836975, -1.0743381977081299, + 0.37870293855667114, -1.805496335029602, -1.0642967224121094, + -0.8697293996810913, -0.2973197102546692, -0.6440801620483398, + -0.3324434459209442, 0.35836663842201233, 0.7410829067230225, + 1.2778054475784302, 0.8500267863273621, -0.14972825348377228, + -0.6002275943756104, 0.5281383395195007 + ], + [ + -17.55548095703125, 19.00493049621582, -5.360179424285889, + -9.017661094665527, -0.4387492537498474, -3.618403673171997, + 0.11407836526632309, 1.1133657693862915, 5.38546085357666, + 0.7738739252090454, 0.05771083012223244, -7.515570640563965, + 4.9393310546875, -1.4821081161499023, 2.0496280193328857, + -1.2080446481704712, 7.6977972984313965, 0.2933456003665924, + -0.42759209871292114, -0.3702717423439026, 1.2908992767333984, + 2.6196563243865967, -1.2016819715499878, -0.5312042832374573, + 0.2400427907705307, -0.1097734197974205, 0.5662421584129333, + 3.309272527694702, -0.2595560550689697, -0.170167937874794, + 1.3123910427093506, -2.4274685382843018, -1.2788257598876953, + 3.5746636390686035, 0.676084578037262, -1.7163082361221313, + -0.9298005104064941, 1.070678472518921, 1.1104167699813843, + 0.3685353100299835, -1.3932421207427979, -3.2172892093658447, + 1.6757586002349854, 0.8071465492248535, -2.1762373447418213, + -1.5672687292099, -0.025657907128334045, -1.5181405544281006, + -3.1264798641204834, 0.13095493614673615 + ], + [ + -16.056766510009766, 13.823222160339355, 0.16011865437030792, + 0.5070090889930725, 2.679965019226074, -0.20821043848991394, + 3.1549861431121826, 12.735003471374512, 0.572158694267273, + -0.06599999964237213, -0.6308320164680481, 1.5841710567474365, + 0.613731324672699, -1.904114007949829, -0.8944978713989258, + 1.3363397121429443, -0.6771792769432068, -0.22442729771137238, + -0.6764612197875977, 0.5151592493057251, 3.077296257019043, + -0.9515078663825989, -2.0526578426361084, 0.6089927554130554, + 1.5181804895401, 1.1592588424682617, 2.3231775760650635, + -0.9922633171081543, 1.0255650281906128, -0.24631096422672272, + -0.7388070225715637, 0.5366421341896057, 0.8679639101028442, + -0.5781234502792358, -0.7636955976486206, -2.1018693447113037, + 0.20589198172092438, 1.8221700191497803, 0.2530665099620819, + 1.3129472732543945, -1.173888921737671, -0.20682011544704437, + -0.26682090759277344, 0.8077314496040344, -0.05477994307875633, + 0.37415048480033875, 1.0653833150863647, 1.3335235118865967, + 0.5396789908409119, 0.27319076657295227 + ], + [ + -16.68307876586914, 12.383529663085938, 9.065956115722656, + 9.09403133392334, 5.32847261428833, -0.9896590709686279, + 3.28472900390625, 5.224730014801025, -1.1945490837097168, + -1.4377398490905762, -1.1837388277053833, 2.3484954833984375, + 3.9329843521118164, 0.5562511682510376, -2.0283994674682617, + -0.1338239312171936, -0.03280830383300781, -1.617619276046753, + -3.1855785846710205, -1.1657447814941406, 0.07195568829774857, + 0.6877831220626831, 1.7657626867294312, 0.15118058025836945, + -0.6230621337890625, 1.1203356981277466, 0.19578951597213745, + -0.648255467414856, 1.3679240942001343, -1.1053065061569214, + -0.08629076182842255, 0.06608359515666962, 0.27726832032203674, + 1.1660441160202026, -2.036987781524658, 0.22033964097499847, + 0.5823889970779419, 1.942690372467041, 0.6604306697845459, + -0.9418746829032898, -1.5600053071975708, 0.8596242666244507, + 1.137995719909668, 0.40049469470977783, 0.13289058208465576, + -0.4794503450393677, 0.7187958359718323, -2.3744962215423584, + 0.7919456362724304, -0.6550710797309875 + ], + [ + -10.98949146270752, 6.476835250854492, -0.8771857619285583, + 11.388152122497559, 7.050894260406494, 3.0224483013153076, + 12.955419540405273, 0.8812816739082336, 3.6417009830474854, + 4.343071937561035, 1.465012550354004, 1.1322156190872192, + 1.6358650922775269, 2.0937068462371826, 0.8932221531867981, + -1.3394956588745117, -1.102083683013916, 1.3908861875534058, + -1.4141836166381836, 1.151664137840271, 0.3608248829841614, + -2.432990074157715, -0.9459997415542603, 0.8385114073753357, + 0.24618946015834808, 1.5407228469848633, 1.573378562927246, + 0.2974059283733368, 0.7034424543380737, -0.29626891016960144, + -0.8125763535499573, -0.6269693374633789, 1.8483930826187134, + -1.1951465606689453, -0.4451550543308258, -1.8594517707824707, + -1.262418270111084, -0.19779783487319946, -1.6413698196411133, + -1.52394437789917, -0.5651074647903442, 0.8123306632041931, + -0.39622604846954346, 1.6296509504318237, -1.3681634664535522, + -1.0364938974380493, 2.7172937393188477, -0.07562308013439178, + -1.0213048458099365, -0.048950161784887314 + ], + [ + -13.631199836730957, 15.212565422058105, -1.3544607162475586, + -3.9565234184265137, 1.183383822441101, -0.021055441349744797, + 2.986438512802124, 7.307125091552734, 1.432456612586975, + -0.5963396430015564, -2.167868137359619, 0.06961584091186523, + -0.9724959135055542, -3.645197629928589, 2.3724193572998047, + 0.7369322776794434, -1.919245719909668, 0.1398773491382599, + -1.0915522575378418, 2.4313154220581055, 1.7198188304901123, + 2.209094762802124, -0.9490754008293152, 0.06806765496730804, + 0.30705058574676514, -0.5418059229850769, -1.4550068378448486, + -1.3861780166625977, -0.7080084681510925, 2.2348759174346924, + -0.2432488650083542, 1.516143798828125, -0.6723447442054749, + -1.3005117177963257, 1.19094717502594, 1.5725765228271484, + -1.2581534385681152, -0.9183128476142883, -1.5457870960235596, + 0.7210924625396729, -1.1496139764785767, 0.8457927703857422, + -0.8337115049362183, -0.5007527470588684, -0.014222286641597748, + -0.39170655608177185, 1.2201108932495117, 0.2804519832134247, + -1.1532775163650513, 0.6112496852874756 + ], + [ + -2.322115659713745, -5.199655055999756, 7.5880889892578125, + -4.718267917633057, -8.26681900024414, -1.34620201587677, + 2.5510995388031006, 0.25076591968536377, 1.0638067722320557, + -1.5361109972000122, -1.1270112991333008, 0.2573862671852112, + 0.6532297730445862, 2.241795063018799, 1.3307417631149292, + -0.551270067691803, -0.12379209697246552, 2.2131762504577637, + -2.884007692337036, 0.469123899936676, 1.5391159057617188, + -0.3274090886116028, 0.11257763206958771, -0.8700419664382935, + -2.690112352371216, -0.39999908208847046, -0.9252067804336548, + -0.4859139323234558, 1.3126006126403809, -1.259131669998169, + 0.17964118719100952, -0.5161640048027039, -1.1195094585418701, + 0.19704057276248932, 0.24633494019508362, 0.705814003944397, + 0.5045369267463684, -0.06565672159194946, -2.6939148902893066, + -0.0308995321393013, 0.04964664950966835, -1.4887696504592896, + -0.5444564819335938, -0.12952770292758942, -0.8741168975830078, + 1.4321900606155396, 0.9037054181098938, 0.11882881820201874, + -2.004403591156006, 0.7809668779373169 + ], + [ + -11.041910171508789, 16.63595199584961, -1.5456691980361938, + -6.450481414794922, 0.6203211545944214, -0.5390794277191162, + 0.669929563999176, 4.579651832580566, 4.281295299530029, + -1.124232530593872, 1.0794427394866943, -3.070417642593384, + -1.3405570983886719, -1.4836828708648682, 3.1231048107147217, + 0.6878055930137634, -1.2993379831314087, 0.6911919713020325, + 1.3788076639175415, 0.14889520406723022, 1.2009632587432861, + 0.5682793259620667, 1.1144386529922485, 1.080188274383545, + -1.170728087425232, -1.2139050960540771, 3.488442897796631, + 0.005592299625277519, 0.37032970786094666, -1.8819745779037476, + -2.939331531524658, -3.7491517066955566, 1.5146212577819824, + 0.2923241853713989, 1.2975234985351562, 1.9473062753677368, + -0.34899038076400757, 0.3883277177810669, -2.416714668273926, + -0.33170241117477417, -1.722529649734497, 0.008951617404818535, + -1.3686336278915405, -2.545624017715454, -0.22531524300575256, + 0.5257329940795898, -2.464887857437134, -1.1103993654251099, + -0.0874643623828888, 0.5397534966468811 + ], + [ + -16.21630096435547, 14.426246643066406, 0.08544297516345978, + 0.4550156891345978, 2.4962339401245117, -1.5137393474578857, + 1.0668511390686035, 9.913713455200195, 2.276487350463867, + 0.5653769969940186, -1.163384199142456, 1.059139370918274, + 0.05267100781202316, -2.5066654682159424, -0.6266006231307983, + 0.8446632623672485, -0.025345321744680405, -0.3387996554374695, + -0.8882775902748108, 1.4029717445373535, 1.1654384136199951, + -1.1256937980651855, -0.32650670409202576, -2.411252737045288, + 1.296842098236084, -0.622441828250885, 2.3049404621124268, + -0.525879979133606, 0.8614969849586487, -0.4120807349681854, + 0.9189364314079285, 1.770395278930664, -1.118133544921875, + -0.1413206309080124, -1.3925107717514038, 3.2589690685272217, + -1.4718562364578247, 0.2697654366493225, -1.1422550678253174, + 0.09467441588640213, 0.6397545337677002, -0.14346612989902496, + 1.416963815689087, -2.781365156173706, -1.4145907163619995, + -0.6280791163444519, -0.09869090467691422, -0.28519609570503235, + -0.7490826845169067, 0.7223635315895081 + ], + [ + 0.5844354629516602, -6.390398979187012, 2.9215924739837646, + -1.259409785270691, -4.381921291351318, 2.0100064277648926, + 9.030052185058594, 0.31052690744400024, -0.9725380539894104, + 5.355310440063477, -5.4327239990234375, -1.160143256187439, + 3.418447971343994, -0.010658981278538704, 1.496368646621704, + -1.6395080089569092, -1.9655088186264038, 4.550971031188965, + -1.4046071767807007, 0.7873572707176208, 2.576869249343872, + 0.40996167063713074, -0.04702984169125557, 1.9144549369812012, + 0.05436450615525246, 0.8736855387687683, -1.5762830972671509, + 0.5111488699913025, 0.7573112845420837, 0.977939784526825, + -0.13183140754699707, -0.3861549496650696, 0.317145437002182, + -1.0951069593429565, 2.0916495323181152, -0.2870123088359833, + -0.9866220355033875, -0.15937680006027222, 0.23914703726768494, + 0.8337608575820923, 0.4469314217567444, -0.3957616984844208, + 0.13946740329265594, -1.8516356945037842, -0.8862810134887695, + -1.1915582418441772, 0.6024641990661621, -1.097246527671814, + 0.2177310734987259, -1.2429224252700806 + ], + [ + -13.788896560668945, 19.10152244567871, -1.2580151557922363, + -10.777189254760742, -0.16390761733055115, 2.2167179584503174, + 1.8550961017608643, -7.236468315124512, 1.3830554485321045, + -0.5371893644332886, 0.5555384159088135, -0.49442848563194275, + 1.2157378196716309, 0.9945041537284851, -3.069021463394165, + 1.1903611421585083, -7.287869453430176, -2.0751328468322754, + -3.3451526165008545, 0.14431951940059662, 0.5886172652244568, + -1.6220414638519287, 0.7217324376106262, 2.651357889175415, + 0.7501099705696106, 1.2048743963241577, 2.310302972793579, + -1.3118565082550049, 0.7178730368614197, -0.9082520604133606, + 1.626055121421814, 1.882423758506775, 0.0706220269203186, + -0.7252733111381531, -0.07073640823364258, -0.5509708523750305, + 3.13181471824646, 0.3030160069465637, -2.7290103435516357, + 0.18745644390583038, 1.4256421327590942, 1.788068413734436, + -0.5226539969444275, -0.8920641541481018, 0.9041038751602173, + 1.4225142002105713, -2.2410411834716797, -1.8509458303451538, + -0.681007981300354, -2.453913450241089 + ], + [ + -14.439393043518066, 12.734779357910156, 6.049779891967773, + 7.494495391845703, 3.472851037979126, -0.17139454185962677, + 3.5698158740997314, 7.569365978240967, 0.5669819712638855, + -0.9921190738677979, 0.35412219166755676, 0.4223526120185852, + 1.3656078577041626, 3.2259905338287354, -0.8875239491462708, + -1.2626137733459473, -0.8012110590934753, 1.0123754739761353, + -1.5927467346191406, -0.2718570828437805, 1.5703365802764893, + -1.046805739402771, -0.8104961514472961, 0.9096125364303589, + 0.5193018317222595, -0.6690047979354858, 2.3583807945251465, + 0.6979328989982605, 2.645040512084961, -1.0804588794708252, + 0.9101419448852539, -0.31498804688453674, 0.4716048836708069, + -0.6156403422355652, -0.613185465335846, 2.3221287727355957, + -1.0124144554138184, -0.7416380643844604, 1.4773287773132324, + -0.8267837166786194, -0.8117368817329407, -0.4472266733646393, + 1.1569103002548218, -1.3161927461624146, -1.9928256273269653, + -1.3798683881759644, -0.12124966084957123, -2.149260997772217, + -0.7204518914222717, -1.0778484344482422 + ], + [ + -15.306190490722656, 13.9300537109375, 0.1775578409433365, + -3.51070237159729, 0.550046980381012, -0.47353503108024597, + 3.3286566734313965, 9.903715133666992, 0.19678105413913727, + 0.46504518389701843, -0.8236774802207947, 1.94571852684021, + 0.4041864573955536, -0.7720268964767456, 3.679306745529175, + 1.5656183958053589, -1.393970012664795, -1.5972669124603271, + -0.823223352432251, 1.9231361150741577, 1.8348228931427002, + -1.1695131063461304, -2.7804200649261475, 4.121042728424072, + 1.5226002931594849, 0.29097163677215576, 2.2659151554107666, + -1.9250060319900513, -0.24646949768066406, -2.2245371341705322, + -1.4394946098327637, -0.7830374240875244, 0.8907901644706726, + -1.6846303939819336, 1.319510817527771, -1.9749780893325806, + 0.5577366948127747, 1.9140764474868774, -2.1486291885375977, + 0.41392818093299866, 0.21361511945724487, -0.7822038531303406, + 0.0739065557718277, -0.4560714364051819, -1.8291707038879395, + 0.3196067810058594, -0.8170634508132935, 0.9953380227088928, + 0.8931571841239929, 0.10993741452693939 + ], + [ + 0.6642467379570007, -5.58659553527832, -3.035231113433838, + 0.8595842123031616, -3.4518513679504395, 1.2440767288208008, + 6.681910037994385, 0.6471912264823914, 0.008418978191912174, + -1.226625680923462, -1.5720481872558594, 0.3276410698890686, + 3.0636987686157227, 0.21153250336647034, 0.725053071975708, + -1.3220785856246948, -0.3281341791152954, 0.1499069631099701, + 0.7902844548225403, -0.43256962299346924, 2.190225839614868, + -0.34521499276161194, -0.6079567670822144, -1.9682058095932007, + -0.5041341781616211, -0.1991955041885376, 0.2692353427410126, + -1.5463414192199707, -1.3969950675964355, -1.204674482345581, + -0.9293743968009949, 0.987109899520874, 0.47452041506767273, + -1.021498680114746, 0.7761169672012329, -1.3269330263137817, + 0.5279843211174011, 0.6229174137115479, 1.1570069789886475, + -0.2469727247953415, -0.4505695700645447, -0.5578155517578125, + 1.164854645729065, -0.681613028049469, 0.15354084968566895, + 0.7191940546035767, -0.21794337034225464, -1.7467231750488281, + -0.7224372625350952, -0.19408728182315826 + ], + [ + -10.199408531188965, 14.00513744354248, -1.6940674781799316, + -6.325026035308838, -0.32369109988212585, 0.9323979020118713, + 1.4588407278060913, -2.787533760070801, 0.7585919499397278, + -1.7310324907302856, 0.5857417583465576, -4.536046028137207, + 0.10184135288000107, 1.7490742206573486, -2.8093831539154053, + 0.5168297290802002, 5.098242282867432, 1.3896396160125732, + -1.6903581619262695, 3.968141555786133, -1.4164751768112183, + 1.6163841485977173, -1.1597408056259155, 0.05703653022646904, + -0.7425927519798279, 0.15201078355312347, 3.15157413482666, + 1.2703263759613037, 0.19802725315093994, -1.2596231698989868, + -1.24136221408844, -0.6988134384155273, 1.532922387123108, + 0.8967003226280212, 0.9813938736915588, -0.22975026071071625, + 0.502781867980957, 3.7119197845458984, -0.8261895179748535, + -1.7870408296585083, -0.7737333178520203, 2.69152569770813, + -0.008944868110120296, 0.7299308180809021, -0.5631193518638611, + -2.0944225788116455, 0.09501173347234726, 0.2956258952617645, + -0.20584653317928314, -1.3464653491973877 + ], + [ + -0.6705381870269775, -6.507566452026367, -0.7193425893783569, + 2.317054033279419, -4.229636192321777, 0.7580037117004395, + 6.963678359985352, -1.5209181308746338, 2.812999725341797, + -2.92977237701416, -1.4353059530258179, -0.7194328904151917, + 1.0950976610183716, -2.7681572437286377, 3.5179877281188965, + 0.8003436923027039, -0.319877028465271, 2.1965789794921875, + -2.221325397491455, 3.4105958938598633, -0.8047360181808472, + -1.2648780345916748, -0.21751989424228668, 0.7210075855255127, + -0.8301287889480591, 0.957122802734375, 0.7770159840583801, + -1.8208078145980835, 1.8569387197494507, -0.3677874505519867, + -1.1084802150726318, 0.6201378703117371, -0.697918176651001, + 1.9544849395751953, -0.11911550164222717, 0.26645565032958984, + 0.8795316815376282, 0.41718727350234985, 0.5029457211494446, + -0.8551230430603027, 1.5599356889724731, 0.35112226009368896, + 0.11190114915370941, -0.6299057006835938, 1.7500016689300537, + -0.9892385005950928, -0.6754885911941528, -0.8790456652641296, + -0.2600025236606598, 0.0007109720027074218 + ], + [ + -12.623971939086914, 12.851459503173828, -6.247973918914795, + -4.697495937347412, -2.4688355922698975, -0.028670843690633774, + -0.061456065624952316, -2.173354387283325, 0.7629720568656921, + -0.17855948209762573, 1.1863707304000854, -4.557535648345947, + -0.7423198819160461, 1.9440292119979858, -0.13558126986026764, + -0.5202297568321228, -2.5499236583709717, -2.713188648223877, + 0.27271586656570435, 2.50040340423584, 1.9111289978027344, + -0.5566655993461609, -0.9210659265518188, 0.2507402300834656, + 0.30529531836509705, 0.2712589502334595, -0.30241596698760986, + 0.004430591128766537, -0.7672228217124939, 0.6308733224868774, + 0.3954380452632904, 0.9715395569801331, 0.57889324426651, + 0.42096397280693054, -0.2101360261440277, -0.5290985703468323, + -0.08783517777919769, 0.8330278992652893, 0.7508731484413147, + 0.3736583888530731, -0.17335613071918488, -2.047177314758301, + 0.24472492933273315, -0.33179643750190735, 1.0191596746444702, + -1.0442005395889282, 0.7826996445655823, -0.8777053356170654, + 0.8120757341384888, -0.4679188132286072 + ], + [ + -2.22839617729187, -3.4450571537017822, 1.4229902029037476, + 8.836338996887207, -3.59157657623291, 0.34840670228004456, + 7.045941352844238, -5.181589603424072, 3.046644687652588, + 5.85390567779541, -2.146027088165283, -0.5597478151321411, + -0.23095405101776123, -1.758082389831543, 3.5093321800231934, + 1.6107367277145386, -0.2987205684185028, 0.6032689809799194, + 1.2937664985656738, 2.312486410140991, 2.684123992919922, + -1.489660620689392, -0.590319037437439, -0.14228442311286926, + 0.07483133673667908, 0.36312201619148254, 1.160668134689331, + -0.5471833944320679, 1.178759217262268, -1.1855862140655518, + -0.859933078289032, -0.6491420269012451, -0.46907487511634827, + 1.8537384271621704, -1.8870036602020264, -0.8737653493881226, + -0.3694930076599121, 1.7813283205032349, -1.375948429107666, + 0.010752460919320583, 0.8767951130867004, -0.19359217584133148, + -0.5098423957824707, 0.7769495248794556, -1.0967650413513184, + -0.7623481750488281, 0.5406968593597412, -0.325823038816452, + -0.4435502290725708, -0.3575243055820465 + ], + [ + -13.293915748596191, 13.775888442993164, -5.223093509674072, + -3.1233632564544678, -1.6877861022949219, 0.09534063935279846, + 1.459506630897522, 5.722379207611084, -0.5895194411277771, + 0.36182624101638794, -1.3954355716705322, 2.3915767669677734, + 1.5288199186325073, -2.826749801635742, -0.949592113494873, + 0.5000790953636169, 2.592940330505371, -2.260653495788574, + 3.7826428413391113, -0.27320075035095215, 3.1173999309539795, + 0.9332804679870605, 1.377693772315979, -0.2607591152191162, + -1.4597952365875244, 0.6504913568496704, -1.5642828941345215, + 0.9561797380447388, 2.017754316329956, -1.343706727027893, + -2.7886571884155273, -1.0696022510528564, 0.913489043712616, + 1.0926494598388672, -2.898453950881958, -1.140357255935669, + 0.7018343806266785, 0.6093617677688599, -0.06421363353729248, + -2.318922519683838, -0.8491148948669434, 0.8504114747047424, + 1.5464189052581787, -1.3131996393203735, -0.2157410979270935, + 0.3558744490146637, 1.6403660774230957, -1.4917560815811157, + 0.15851932764053345, 0.1247684508562088 + ], + [ + 1.5069620609283447, -6.689950466156006, -1.9211235046386719, + 0.447763592004776, -4.667847633361816, 0.9506580829620361, + 9.307430267333984, 0.44994550943374634, 2.7419803142547607, + -0.1310659945011139, -1.1292338371276855, 0.5236801505088806, + 2.3789987564086914, 1.054946780204773, 0.48560255765914917, + -0.9179754853248596, -1.0915842056274414, -0.20525899529457092, + -1.296431303024292, 0.05151984095573425, -0.9956871271133423, + 0.12676995992660522, 0.38678082823753357, -2.1627562046051025, + -0.6728779673576355, 1.002447485923767, -0.6033901572227478, + -0.7110890746116638, -1.0248206853866577, 0.6962718367576599, + -1.808013916015625, 0.22848446667194366, 0.11966109275817871, + -1.034157156944275, 0.36816301941871643, -1.293257713317871, + -0.2013441026210785, 0.8132126331329346, 0.04497101902961731, + 0.14228306710720062, -1.1483708620071411, -0.6146260499954224, + -0.3591708540916443, 0.788209855556488, 1.2932183742523193, + -0.7574642896652222, -0.8768401741981506, -0.24808654189109802, + 0.5809819102287292, 0.7107017040252686 + ], + [ + -13.229766845703125, 12.466279029846191, -3.9930827617645264, + -6.251300811767578, 0.6003563404083252, -0.6159064769744873, + 1.1793248653411865, 0.22720444202423096, -0.7483006119728088, + 0.07886611670255661, -1.7663379907608032, 5.400152206420898, + -0.515192985534668, -1.035778522491455, 2.240428924560547, + -0.5893198251724243, 0.08377908170223236, 0.026990359649062157, + -0.2226758748292923, 0.6702339053153992, 0.43548980355262756, + -0.13094696402549744, -1.865452527999878, -0.1480889767408371, + -0.9070636034011841, -0.7950115203857422, -2.4078421592712402, + -1.0739474296569824, -0.7009981870651245, 0.9079669117927551, + 0.06285738945007324, 3.8608386516571045, -1.9464529752731323, + -1.7457188367843628, 0.7862696647644043, -0.4471914768218994, + -1.4859439134597778, -2.576969861984253, -1.5278552770614624, + 1.2621541023254395, 2.574108123779297, 0.6375341415405273, + 0.22670325636863708, 0.07592407613992691, 0.03468896448612213, + 1.0612759590148926, 0.15333180129528046, -1.574903964996338, + -0.7589799761772156, -0.5400646328926086 + ], + [ + -5.650701522827148, 0.9453807473182678, 9.794389724731445, + 5.807339668273926, -4.2536139488220215, -1.9011213779449463, + 0.3689839243888855, -5.974447250366211, 3.692394733428955, + -0.06052391976118088, -2.5452260971069336, -0.5801882743835449, + -1.4653573036193848, -3.3561816215515137, 3.613415002822876, + 1.7462592124938965, 0.769719123840332, 1.2742481231689453, + 2.1241118907928467, 2.146001100540161, 4.224967956542969, + 1.5635563135147095, -0.7454234957695007, -1.5727012157440186, + -0.072048619389534, 1.8564122915267944, 1.05059814453125, + -2.1337223052978516, 0.8571258187294006, -0.11512188613414764, + -0.5651291608810425, -1.6751554012298584, -0.04550144076347351, + -1.4132535457611084, -2.3328702449798584, -0.07152260839939117, + -0.05986672639846802, -0.3987670838832855, -0.015121368691325188, + 0.28838780522346497, -0.5892482995986938, -0.6459822654724121, + 0.2033229023218155, -0.49144819378852844, -0.4558042287826538, + 0.18344607949256897, 2.5747087001800537, -2.0250329971313477, + 0.5060385465621948, -0.36262983083724976 + ], + [ + -12.563739776611328, 9.710807800292969, 13.008691787719727, + 15.083892822265625, 5.41100549697876, -0.07559223473072052, + 2.1141488552093506, -2.7512712478637695, 0.23706252872943878, + -0.962476909160614, -0.4306114614009857, 1.104781150817871, + 0.8701750040054321, 5.210101127624512, -0.6001133322715759, + -3.0803887844085693, 0.7435469031333923, -2.51875901222229, + -1.3633726835250854, -1.3913322687149048, 3.53137469291687, + -3.891472578048706, -1.1380335092544556, 1.665974497795105, + -1.0288013219833374, 0.290647029876709, 1.8493695259094238, + 2.1921560764312744, -0.37842682003974915, -1.7732856273651123, + -0.24536600708961487, -0.7616605162620544, 0.4821000397205353, + 0.9020861387252808, 1.6596124172210693, 1.6997641324996948, + -0.9355267286300659, 0.06008415296673775, 1.8406615257263184, + 0.37862735986709595, 0.49112048745155334, 0.5557791590690613, + -0.36005306243896484, 0.17453771829605103, -0.5831856727600098, + -1.9266846179962158, 0.7319061756134033, -0.2939126491546631, + -1.0262593030929565, -0.5580651760101318 + ], + [ + -11.291966438293457, 6.799325466156006, 9.991964340209961, + 14.439772605895996, 2.3406543731689453, -0.9573399424552917, + 0.8958920836448669, -2.0391273498535156, -1.0295614004135132, + -2.0332982540130615, 0.7914915084838867, 0.8912394046783447, + 2.6587586402893066, 0.1635051816701889, -2.975076675415039, + -0.38187044858932495, 0.6956344842910767, 1.2982163429260254, + -1.5331815481185913, -2.1694297790527344, 0.2641684412956238, + 1.066070318222046, 0.34927570819854736, 0.98759526014328, + -1.1914258003234863, -0.5337285995483398, -0.5056967735290527, + -0.12340670824050903, 1.0408656597137451, -0.9737831354141235, + -1.2323329448699951, 0.8444372415542603, -0.2988435626029968, + 1.61490797996521, -1.7490378618240356, 2.105975389480591, + 0.2320389747619629, 1.0772972106933594, -1.7753103971481323, + 0.048651039600372314, -2.6389622688293457, 0.8064020276069641, + -0.6110789179801941, 0.029083484783768654, 0.15798161923885345, + 0.2487015277147293, 0.2738338112831116, -2.130894422531128, + -1.4287163019180298, -0.4445136487483978 + ], + [ + 1.359204888343811, -6.218482971191406, -1.0079081058502197, + 0.14869537949562073, -3.717924118041992, 0.5859699249267578, + 4.617231369018555, 1.1691482067108154, -0.7994726300239563, + -5.81268835067749, -1.074994683265686, 0.8531436324119568, + 2.510840654373169, 0.3861783444881439, -0.25516432523727417, + -1.465218424797058, -0.7746332883834839, -0.5287109613418579, + 1.5794126987457275, -0.14773422479629517, 0.6300137639045715, + 0.8105552792549133, 0.06295910477638245, -1.1930586099624634, + 0.18522542715072632, 1.3368455171585083, 0.2947061359882355, + 0.19589009881019592, 0.32627880573272705, 0.4468316435813904, + -0.8553668856620789, 0.11874768137931824, 0.31633612513542175, + -1.1871514320373535, 0.7297653555870056, -0.7638513445854187, + -1.1225850582122803, -0.3348044157028198, -0.15807458758354187, + 0.30459341406822205, 0.5726803541183472, -0.9848781824111938, + 1.1602274179458618, -0.16111800074577332, 0.30122724175453186, + -0.27713286876678467, -0.09614729136228561, -0.48291876912117004, + 1.4902217388153076, -0.8520811796188354 + ], + [ + -13.738898277282715, 14.164468765258789, -2.6744120121002197, + -1.1370896100997925, 0.4602074921131134, -0.19361133873462677, + 1.3897992372512817, 2.738905668258667, -0.11809389293193817, + -0.14907819032669067, -1.0808018445968628, -6.64915657043457, + 3.0702974796295166, 0.1203700378537178, -2.977163314819336, + -0.6047713160514832, 8.340603828430176, 3.120016574859619, + 0.7361165881156921, 5.644399642944336, -1.7526570558547974, + 2.5250539779663086, -2.1562716960906982, 1.7012684345245361, + -0.5692150592803955, -3.0184452533721924, -0.3582006096839905, + -1.6588383913040161, -1.8027921915054321, 0.13018324971199036, + -0.21134121716022491, 1.84438955783844, -0.587018609046936, + -0.7793579697608948, -0.045078344643116, -2.244288921356201, + -0.5694491267204285, 3.9640491008758545, 0.24772118031978607, + -0.7924452424049377, -2.1059722900390625, 2.7041609287261963, + 0.07272358983755112, -0.6281474232673645, 0.620749294757843, + -0.6869955062866211, 1.2385605573654175, 0.2383628636598587, + 0.2227190136909485, -1.4311052560806274 + ], + [ + -11.369583129882812, 14.941617965698242, -4.137604236602783, + -6.683442115783691, -2.7098000049591064, -0.3440578579902649, + -0.5666006207466125, -2.308516263961792, 2.981142520904541, + 0.7743253707885742, 0.027978025376796722, -7.237673759460449, + 3.8649678230285645, 0.49616914987564087, 1.3686528205871582, + -1.4365228414535522, 5.466641902923584, 1.441271185874939, + 0.32601797580718994, 1.5856106281280518, -1.3048856258392334, + 2.066986560821533, -1.9126801490783691, 0.513865053653717, + -1.532933235168457, -2.7246410846710205, 1.6483534574508667, + 0.6621381044387817, 0.6308819651603699, 0.5393434166908264, + -3.443552017211914, -0.2692077159881592, 1.2975046634674072, + -1.699972152709961, 3.750985860824585, 0.9412946105003357, + -1.3487292528152466, 0.10901397466659546, 0.6940092444419861, + 0.4158949553966522, -0.39537492394447327, 3.355226755142212, + -1.2230554819107056, 1.11386239528656, -2.5003321170806885, + -0.2834002375602722, 0.8523018956184387, -0.3336361348628998, + -1.7345634698867798, -1.034678339958191 + ], + [ + -1.3504014015197754, -3.8587441444396973, 6.085354804992676, + -3.8261146545410156, -8.953089714050293, -1.4723153114318848, + 2.2146239280700684, 0.2387501299381256, 0.7627596855163574, + -1.1816256046295166, -1.5880450010299683, -0.6283536553382874, + 0.025540193542838097, 2.1313679218292236, 0.5138657093048096, + 0.5037025213241577, 0.6233301162719727, 0.7571020722389221, + 0.13071537017822266, -0.82106614112854, 1.7330596446990967, + -0.0725661963224411, 0.6211095452308655, -0.5183406472206116, + -0.4895574748516083, -2.3497402667999268, -0.09767541289329529, + 1.3391600847244263, 1.182515263557434, 0.3469924032688141, + -0.17197434604167938, 0.46376997232437134, -1.0670844316482544, + -0.0731763020157814, 0.3941276967525482, -0.23113557696342468, + 0.6726638078689575, -1.290940523147583, 0.6034595966339111, + -0.22019274532794952, -0.6613249182701111, 0.0529521107673645, + 1.1251864433288574, 0.4303664267063141, 1.0053627490997314, + -0.46433743834495544, -0.05979665741324425, -0.567128598690033, + -0.3656071126461029, -1.3185621500015259 + ], + [ + -2.132394313812256, -4.325778484344482, 5.339841365814209, + -3.175205945968628, -8.015848159790039, -0.85615473985672, + 1.3264352083206177, 1.881346344947815, 0.9741463661193848, + -0.6132715344429016, -1.3590582609176636, -0.7912590503692627, + 1.209794282913208, 1.2597675323486328, -2.948599338531494, + 0.49228817224502563, -0.4557117223739624, 1.3517998456954956, + -0.6165963411331177, -1.730854868888855, 2.045532703399658, + 0.0003365029697306454, -1.1528453826904297, 1.3483558893203735, + -0.32891082763671875, -0.7443017959594727, 0.2930912971496582, + -0.2864563763141632, 0.3989444375038147, 2.1736443042755127, + -0.2902349531650543, -0.01184497494250536, -0.5061057806015015, + -0.16887955367565155, -0.7104358077049255, 0.03275972977280617, + 0.17738161981105804, 0.34475934505462646, 0.8043432235717773, + 0.7276955246925354, -0.257811039686203, 0.43573859333992004, + -0.20946241915225983, -0.9623963832855225, -0.09133821725845337, + -1.148853063583374, -0.9726426005363464, -0.7022855877876282, + 0.18816448748111725, 0.09918393194675446 + ], + [ + -14.24520492553711, 15.692621231079102, -4.947904586791992, + -7.8401384353637695, -0.9752086400985718, 0.42274197936058044, + 1.1715948581695557, 1.0889816284179688, 0.15449784696102142, + 0.5692419409751892, -1.5221238136291504, 3.155163049697876, + 0.1667809784412384, -1.3906399011611938, -1.1339099407196045, + 2.245116949081421, -0.08568739891052246, 0.14300063252449036, + 0.5335118174552917, 2.1436548233032227, 1.3204716444015503, + -1.610283613204956, -2.3532371520996094, 0.7042097449302673, + -1.5294934511184692, -1.5664476156234741, -1.7519011497497559, + 0.8033720254898071, 0.28097960352897644, 1.1279816627502441, + 0.880610466003418, -0.5209280252456665, -0.18053369224071503, + 1.714810848236084, -0.6493598818778992, -2.731532573699951, + -1.1620129346847534, 3.0722737312316895, 0.09747069329023361, + -0.9510124325752258, -1.0299549102783203, 3.644749402999878, + -0.6848229169845581, -0.2930119037628174, 1.4713338613510132, + -0.16668182611465454, -0.01883077435195446, 0.7405503988265991, + -0.3458009362220764, -1.3670964241027832 + ], + [ + -14.41845417022705, 17.114511489868164, -3.842336654663086, + -10.29699420928955, -1.3829952478408813, -0.29709869623184204, + -0.7471644878387451, -3.745020627975464, 3.7899014949798584, + -0.21857856214046478, 0.8427841663360596, -7.935159206390381, + 3.8945064544677734, -0.6491679549217224, -1.8274587392807007, + -0.1983283907175064, 6.176950454711914, 2.171518087387085, + -1.3958978652954102, 0.17051608860492706, -1.1995227336883545, + 3.6736607551574707, -1.882075309753418, -0.5956969857215881, + 0.7460215091705322, -0.6504703164100647, -1.5802497863769531, + 2.856396198272705, 1.107671856880188, -2.626972198486328, + 0.9649960398674011, -1.7723444700241089, 1.0573095083236694, + 0.609905481338501, 0.37031033635139465, -0.03383593633770943, + -0.9863715767860413, -0.6567181944847107, 1.2383408546447754, + 0.8416167497634888, -1.73761785030365, 1.9934567213058472, + 0.4351077377796173, 1.1801931858062744, -2.967419147491455, + 0.4198017120361328, 0.553248405456543, -0.9957547187805176, + -3.0109071731567383, -2.3301942348480225 + ], + [ + -11.159250259399414, 15.48656940460205, -5.272670269012451, + -6.5144147872924805, -1.2613778114318848, 0.4015527069568634, + 0.7479159235954285, 0.7186632752418518, -1.60362708568573, + -0.5464545488357544, -2.3931117057800293, 3.9340860843658447, + 2.141854763031006, -2.2957472801208496, 1.6764640808105469, + 0.09713725745677948, 0.3013524115085602, -1.142094612121582, + 1.8025082349777222, -1.297978401184082, 1.6772962808609009, + 0.7521033883094788, 0.8098143935203552, -1.448142170906067, + -0.8959651589393616, -0.7647709846496582, -1.4518054723739624, + 1.5244170427322388, -0.6822392344474792, 0.13177326321601868, + -1.9106212854385376, -0.4223526418209076, 2.000898838043213, + -1.0416419506072998, -3.171562671661377, 0.6549503207206726, + 1.5021741390228271, 3.2366154193878174, -0.07002837210893631, + -0.9192554950714111, -1.5553463697433472, 2.9964678287506104, + -1.928275227546692, 0.5223014950752258, 1.2146241664886475, + -0.5801280736923218, 0.1946277618408203, 0.8541591167449951, + 0.2846437990665436, -1.3389610052108765 + ], + [ + -14.801467895507812, 12.86899185180664, -1.968459963798523, + -2.1725566387176514, 1.8633252382278442, -0.7224860191345215, + 2.2137491703033447, 8.245835304260254, 0.7857342958450317, + 0.8232078552246094, -1.5914392471313477, 2.8031985759735107, + -1.1551662683486938, -3.697007894515991, -0.0574704073369503, + 1.5854648351669312, 0.15614460408687592, -2.409308671951294, + -0.9297452569007874, 1.4431432485580444, 2.179267406463623, + 0.007483374327421188, -0.8434807062149048, 0.371461421251297, + 1.7591543197631836, 0.12715280055999756, -1.1859025955200195, + -1.60526442527771, -0.45652878284454346, 1.4026292562484741, + 0.3964724540710449, 3.2983808517456055, -0.5639913082122803, + -0.4833132028579712, 1.3932733535766602, 1.231626272201538, + -1.4669538736343384, -0.08631908148527145, -3.374779462814331, + 0.1515011340379715, 1.3351502418518066, 1.3106906414031982, + 0.08964446932077408, 0.12175507843494415, 0.5445574522018433, + -0.6278231739997864, -0.5408684015274048, -0.6836404800415039, + -0.9247042536735535, -0.577097475528717 + ], + [ + -2.147866725921631, -2.937791585922241, 9.513160705566406, + -0.6369585990905762, -9.31470012664795, -1.6865465641021729, + 1.9857416152954102, -0.7933666706085205, 1.6364551782608032, + 1.6297281980514526, -4.968979358673096, -1.5111466646194458, + -1.2801743745803833, -3.0185914039611816, 0.19533593952655792, + 0.779106080532074, 0.4317625164985657, -0.2681378126144409, + -1.1264712810516357, 0.3730834424495697, 0.5703181028366089, + -2.216622829437256, -2.1212499141693115, -1.129077672958374, + -0.5131137371063232, 0.3018191456794739, 0.6088038682937622, + -0.5225822329521179, 0.712185800075531, -0.8727145791053772, + 0.5065591335296631, 0.5885364413261414, -0.4914977252483368, + 0.18752287328243256, 1.7423889636993408, -0.7667073011398315, + 2.2448341846466064, -0.9988247752189636, 0.7060356736183167, + -0.3780960440635681, -1.5387040376663208, -0.9425469040870667, + -0.09104961901903152, 0.08320905268192291, 1.266226887702942, + 0.7488350868225098, 0.592494547367096, -0.7279151082038879, + -2.163801908493042, 0.6212021708488464 + ], + [ + -14.003128051757812, 13.826550483703613, -3.688565731048584, + -4.254318714141846, 1.1573811769485474, 0.12040912359952927, + 0.17647641897201538, 5.535531997680664, -0.04216286167502403, + -0.8757718205451965, -2.2612037658691406, 2.388029098510742, + -0.05826258286833763, -1.9967364072799683, -0.28673821687698364, + 1.7946754693984985, 1.8952134847640991, -0.7640697360038757, + -0.1679508537054062, -0.036583784967660904, 1.4929195642471313, + 0.14525800943374634, -2.100022554397583, -1.395298957824707, + -0.14224661886692047, 0.9274742603302002, -2.6169087886810303, + 1.7756394147872925, -0.4729892611503601, 0.6400092840194702, + 0.5488520860671997, 1.2623915672302246, 0.08096377551555634, + 0.03629504516720772, -1.0826935768127441, 0.07460597902536392, + 0.6734803318977356, 1.807769536972046, 1.0041269063949585, + -0.574706494808197, -0.578449547290802, 1.3526678085327148, + -0.08781728148460388, 1.1416032314300537, 0.8820413947105408, + 1.9073172807693481, -1.3113597631454468, 0.07716061919927597, + 0.7209005951881409, 1.862618327140808 + ], + [ + -3.7790043354034424, -3.9873695373535156, 7.606606483459473, + -3.8959438800811768, -9.349318504333496, -0.7789187431335449, + 1.7670581340789795, -0.39727771282196045, 0.5550373792648315, + -0.043547239154577255, -1.1837927103042603, -0.02973691001534462, + 1.2360793352127075, -0.1691097915172577, -1.0599981546401978, + 2.0273303985595703, -1.6758723258972168, 2.2163891792297363, + -2.4075841903686523, 0.0666862204670906, 3.0640852451324463, + 0.2853671908378601, -1.6931604146957397, -1.660187005996704, + -1.6420649290084839, -0.3433327376842499, -0.11883492022752762, + 0.7767680287361145, 1.6807993650436401, -0.3774445652961731, + -0.22199951112270355, -0.15123888850212097, 0.2590703070163727, + 1.1739134788513184, -0.7664489150047302, -1.0903924703598022, + 1.504826307296753, 0.31195369362831116, -0.685202419757843, + 0.9564200043678284, 0.03567329794168472, 1.0958025455474854, + -0.8710571527481079, -0.43906256556510925, 2.323709011077881, + 1.0582486391067505, 0.48403164744377136, 1.256790280342102, + -2.134528875350952, 0.5554227828979492 + ], + [ + -13.945719718933105, 14.307710647583008, -0.9317321181297302, + -2.7323644161224365, 1.2941174507141113, 0.17422828078269958, + 2.2358973026275635, 8.929372787475586, 1.2156367301940918, + -0.1459168791770935, -1.3666185140609741, 3.7296078205108643, + -1.8531302213668823, -2.7047698497772217, 2.1590383052825928, + 0.397072434425354, -1.6449956893920898, -1.9122347831726074, + 1.6772984266281128, 1.3323463201522827, 2.053086280822754, + 1.0399659872055054, -0.42754417657852173, 0.7453018426895142, + 1.451025366783142, -2.039593458175659, 0.5832818150520325, + -0.4043608605861664, 0.8194870352745056, -0.6535798907279968, + -1.9598047733306885, 1.758499264717102, -0.1082770898938179, + -2.143402576446533, 0.6796752214431763, 0.1240629032254219, + -0.09355104714632034, 0.3459227383136749, -1.1564816236495972, + -0.8240103125572205, -0.3881000280380249, 2.730837821960449, + -0.0497223362326622, 0.8501418828964233, -1.7462289333343506, + 1.4997766017913818, -0.038535334169864655, 1.3208032846450806, + 0.23364771902561188, -0.8390783667564392 + ], + [ + -12.96324348449707, 15.737534523010254, -4.521216869354248, + -8.096938133239746, -1.4080523252487183, 0.8355473875999451, + 1.916338324546814, 2.489272356033325, 1.7019275426864624, + 0.3761526942253113, -1.4088621139526367, 0.980233907699585, + 2.9439334869384766, -1.1370255947113037, 2.7375752925872803, + -0.3678223192691803, 0.763006865978241, -2.6321353912353516, + 0.16455742716789246, 1.8366327285766602, 2.569244623184204, + 0.6604399681091309, -2.5137102603912354, 1.8111919164657593, + -0.8321152329444885, -0.09207691252231598, -2.577314853668213, + 2.6357529163360596, -2.0337283611297607, -0.6317133903503418, + -2.1766390800476074, -0.9999131560325623, -0.05099383369088173, + -1.0490543842315674, 0.26643291115760803, 0.38211774826049805, + 0.5428960919380188, 1.0397264957427979, 0.09593890607357025, + -0.4871193468570709, -0.6246597766876221, 2.4116530418395996, + -1.7129542827606201, -0.3894863724708557, 0.7415826916694641, + -1.6948391199111938, 2.3354172706604004, -1.5105677843093872, + -0.7175948023796082, 0.7731437683105469 + ], + [ + -14.771173477172852, 15.750792503356934, -4.454993724822998, + -7.126080513000488, -0.3523755371570587, -0.6706725358963013, + 1.004472255706787, -4.4505791664123535, -1.3744006156921387, + 0.4064553380012512, -1.7999563217163086, 7.419043064117432, + 0.8139410614967346, -2.1502342224121094, -0.35205087065696716, + -0.7284146547317505, 0.9098107218742371, 0.6973916292190552, + -1.327218770980835, -0.760125458240509, -0.5762105584144592, + -1.1187680959701538, 0.3956170976161957, -0.8582085967063904, + 0.31849437952041626, 0.2044639140367508, 0.09854405373334885, + 0.7997674942016602, 1.2024685144424438, 0.24950779974460602, + 0.4316956102848053, 0.25434964895248413, 0.08228550106287003, + 0.1842278689146042, -1.3880853652954102, 0.46772024035453796, + -1.2966002225875854, -0.1818632185459137, -1.1516962051391602, + 0.8920348286628723, -1.2503935098648071, -0.43443259596824646, + -0.09895945340394974, 1.1871026754379272, -0.31390294432640076, + -0.5473967790603638, -0.2460155040025711, -1.312901496887207, + 0.24902403354644775, 1.1313385963439941 + ], + [ + -3.764044761657715, -5.129182815551758, 14.21169662475586, + -10.887442588806152, -5.754798412322998, -1.0515114068984985, + 6.248058795928955, 0.27469602227211, 2.256012201309204, + -2.1283321380615234, -3.327317237854004, -0.9164797067642212, + -0.7184735536575317, -1.3018494844436646, -1.4606678485870361, + 1.3078893423080444, -0.9041342735290527, 2.186896562576294, + -2.5488388538360596, -3.496417999267578, 2.0805351734161377, + -1.5809506177902222, 2.1877005100250244, -2.1279871463775635, + 0.36181938648223877, 1.3106836080551147, 0.30042123794555664, + -0.6182039976119995, 0.5815056562423706, -0.6477247476577759, + 2.8268730640411377, -1.34160578250885, -3.041285514831543, + -1.4178466796875, 5.288204193115234, 1.1661521196365356, + -0.12070193886756897, -1.2619750499725342, 0.04882882162928581, + 2.6227469444274902, 0.790939211845398, -0.48623350262641907, + 1.216779112815857, 1.1604541540145874, -0.1403387188911438, + 1.076404094696045, 1.1374930143356323, 0.9584694504737854, + 2.4472434520721436, -1.0481921434402466 + ], + [ + -14.331266403198242, 9.672572135925293, 7.81966495513916, + 9.406793594360352, 3.6663639545440674, -0.2828855812549591, + 3.424809694290161, 3.5910301208496094, 0.797522783279419, + -1.5212593078613281, -0.8852468729019165, 2.000927448272705, + 3.7259581089019775, 3.1981067657470703, 0.6292824745178223, + -2.699143409729004, 0.6050991415977478, -4.0452117919921875, + -1.2631584405899048, 0.17465092241764069, -0.40234386920928955, + -0.18379075825214386, -0.23325245082378387, 1.1187609434127808, + 0.2763056755065918, 0.028734397143125534, 0.03860074654221535, + -0.8733006715774536, -0.2571403384208679, -0.8882279992103577, + 0.880227267742157, -0.6188533306121826, 0.4050765931606293, + -2.7382781505584717, -0.05860050022602081, 0.35453447699546814, + -0.2906753122806549, -1.8095037937164307, 0.6612735390663147, + -0.23489488661289215, 0.07287245243787766, 0.07575062662363052, + 1.8167787790298462, 0.1586662083864212, -1.1333342790603638, + -0.5417109727859497, 0.4226786196231842, 1.3894578218460083, + -0.3858228027820587, 1.4454710483551025 + ], + [ + -11.8370943069458, 15.728250503540039, -5.643127918243408, + -7.847179412841797, -1.9602429866790771, -0.11820247769355774, + 0.42208677530288696, -0.4147576689720154, 1.8697783946990967, + 0.4844626188278198, -2.2143659591674805, 1.7087558507919312, + 0.22414234280586243, -3.224961280822754, -0.7713857293128967, + 0.19293296337127686, 3.075869083404541, -0.4938431978225708, + 1.4316072463989258, -0.286591500043869, 2.966952085494995, + 0.7756348252296448, -0.22136534750461578, -0.1627316027879715, + -0.5010021924972534, 0.5816695690155029, -2.009056568145752, + 3.4451520442962646, -1.0099561214447021, 0.7120267152786255, + -0.6495115756988525, -0.861143946647644, -0.04416155442595482, + 0.0673089399933815, -0.9407734274864197, 0.30120372772216797, + 1.5332930088043213, 1.7350002527236938, 1.353448748588562, + -0.573293149471283, -0.8520225882530212, -0.22336848080158234, + 0.3434480130672455, -1.6251343488693237, 1.0737217664718628, + -0.6489352583885193, 1.5072033405303955, 0.2820528447628021, + 0.3112761676311493, -0.05303113907575607 + ], + [ + -0.060425493866205215, -4.77846097946167, -0.9653093814849854, + 3.351553440093994, -3.725907802581787, 1.6460645198822021, + 10.54348373413086, -1.922069787979126, 4.53005838394165, + 3.4909231662750244, -1.2936383485794067, -0.07556076347827911, + -0.8501628637313843, -1.1580216884613037, 2.1091740131378174, + 0.6059378385543823, 0.8841722011566162, 2.2784547805786133, + 1.8795055150985718, 0.4456160366535187, 1.9987616539001465, + -2.4691028594970703, 0.756470799446106, -1.5923923254013062, + -0.42738428711891174, 0.1148604080080986, 0.8232389092445374, + -1.5950034856796265, 0.7236473560333252, 0.12196934223175049, + 0.07760238647460938, 0.6183038353919983, -0.11093875765800476, + 1.1230034828186035, -0.3699744939804077, 0.43619999289512634, + 0.29508912563323975, 0.45177018642425537, -0.6239027976989746, + 0.2315356731414795, 2.2379727363586426, -0.4249747395515442, + 0.6257224678993225, -0.5227225422859192, 0.9013110399246216, + 0.6776953339576721, 0.2937781810760498, -0.8281363248825073, + -0.9243767261505127, -0.0011919772950932384 + ], + [ + -8.99106216430664, 4.921894073486328, 11.888325691223145, + 11.465113639831543, 1.6137815713882446, -0.927912175655365, + 0.6164448857307434, -5.353192329406738, -0.7658122181892395, + 0.3581271767616272, -2.2094531059265137, 0.11288481205701828, + 2.5184385776519775, -1.5534789562225342, -1.5136727094650269, + -0.049393121153116226, -0.7883488535881042, -0.7755714654922485, + 0.17976604402065277, 0.43991342186927795, -0.07794037461280823, + -0.8409278988838196, 0.11857867985963821, 0.22493517398834229, + -2.464932441711426, -0.47103872895240784, -0.37994036078453064, + 1.3306108713150024, -0.9205315709114075, -1.8728893995285034, + -0.3007557690143585, -0.47317880392074585, -1.6345309019088745, + 1.4692480564117432, 1.0515743494033813, 0.3982039988040924, + 0.28165102005004883, 0.08842078596353531, -0.6985458731651306, + -0.5074853301048279, -1.2987959384918213, 0.46315982937812805, + -0.3765871226787567, -1.2182109355926514, 0.48123443126678467, + 0.35315293073654175, 1.429048776626587, 1.112014889717102, + -0.14171776175498962, 0.3409060835838318 + ], + [ + -11.506867408752441, 13.57575798034668, -4.743198394775391, + -6.510234832763672, -0.8958238363265991, -0.15058109164237976, + -0.16821126639842987, -3.931614637374878, -2.1113803386688232, + 0.4283801317214966, -1.153570294380188, 8.074214935302734, + -0.13372802734375, -1.6328821182250977, 1.5843957662582397, + -0.8145420551300049, -1.1139750480651855, 1.2607542276382446, + -1.195815086364746, 0.3052699565887451, -0.9643442034721375, + -0.13219060003757477, 0.28729990124702454, -0.05199766159057617, + 0.4346107244491577, -1.1998608112335205, 0.858841061592102, + -1.6718180179595947, 0.2645648717880249, 0.5846473574638367, + -1.7769569158554077, 1.5387648344039917, 0.19759824872016907, + -1.7181127071380615, 0.4043763279914856, 0.8957629203796387, + -1.8815553188323975, -0.7751753926277161, -2.989657163619995, + -0.11462409794330597, 1.2088958024978638, 1.6094975471496582, + 0.8441463708877563, 0.6671490669250488, 1.1271264553070068, + -0.7912144660949707, -0.6528581976890564, 0.1438412368297577, + 0.39120715856552124, 0.4545838236808777 + ], + [ + -11.234769821166992, 5.987929344177246, 9.325484275817871, + 13.727742195129395, 1.0263502597808838, -0.8598122596740723, + 0.7553329467773438, -4.977208137512207, 0.274582177400589, + -0.2632453143596649, -1.6861388683319092, -0.5844945311546326, + 2.308326005935669, -1.354990839958191, -1.2305461168289185, + 0.026734089478850365, 1.6918574571609497, 0.10290800780057907, + 0.04456736519932747, 0.10154156386852264, 2.463945150375366, + 0.12667156755924225, -0.9755644798278809, 1.9045554399490356, + -1.0520142316818237, 1.2701808214187622, -0.9033117294311523, + -0.3292250633239746, -0.02209177054464817, 0.885560154914856, + -0.8615107536315918, 1.0493571758270264, 0.29251137375831604, + -1.1007194519042969, 2.957406759262085, 1.3427990674972534, + 0.4914605915546417, -1.3582011461257935, 0.1042315810918808, + -0.7703294157981873, -1.7422406673431396, 0.8911610841751099, + -0.9830859303474426, 0.18953758478164673, 1.495437502861023, + 0.0885302945971489, 0.0009199286578223109, -0.7916423082351685, + 1.5835150480270386, 0.3517953157424927 + ], + [ + -10.85295295715332, 7.445544719696045, 11.733601570129395, + 13.06344985961914, 1.9499843120574951, -1.502372145652771, + 0.9791776537895203, -3.885910749435425, 1.467808723449707, + -1.3282372951507568, -0.39008504152297974, 0.6860278248786926, + 2.192124843597412, 1.6704692840576172, 1.499253749847412, + -1.0108575820922852, -0.15125703811645508, -1.2950793504714966, + -1.379384160041809, -1.412747859954834, 2.4138236045837402, + 0.2010805606842041, 0.4785621464252472, 1.3576984405517578, + 0.08381176739931107, 0.7166799902915955, -0.3820687234401703, + 0.13203038275241852, 0.24353954195976257, 0.3093602955341339, + 0.36875393986701965, 0.05793929845094681, 0.8746454119682312, + -1.365648865699768, 0.2640891373157501, 2.2951948642730713, + -2.261622190475464, 1.2950183153152466, -1.1992005109786987, + -0.9015321731567383, -1.7484450340270996, 0.7543947100639343, + -0.9346373081207275, -1.1680001020431519, 1.1353825330734253, + -2.0059196949005127, 0.7548897862434387, -0.15401670336723328, + -1.6744967699050903, 0.40619173645973206 + ], + [ + -14.369081497192383, 12.640310287475586, 3.0542192459106445, + 6.2810540199279785, 2.614788293838501, -0.4908750653266907, + 2.434569835662842, 9.654932975769043, -0.0514461025595665, + -0.8468331098556519, -0.04914075508713722, 1.8196136951446533, + 1.181267499923706, 0.9416163563728333, -3.5595812797546387, + -0.04587502405047417, -1.256809115409851, -1.0354039669036865, + -1.7164758443832397, 0.42971616983413696, 0.17382992804050446, + 0.12107682973146439, 0.4901348352432251, -0.20790237188339233, + 0.4110088050365448, 0.8916832804679871, 0.7484883069992065, + -1.6282844543457031, 1.8765296936035156, -0.32800716161727905, + -0.055781394243240356, -0.22196592390537262, 1.1580545902252197, + -0.6504616737365723, -2.353294610977173, 0.8179799914360046, + 0.3708101809024811, -0.36144715547561646, -1.4149394035339355, + -0.18313483893871307, 1.490663766860962, -0.889268696308136, + 1.9835689067840576, -0.9886755347251892, -0.43572112917900085, + 0.19197829067707062, -0.6266993284225464, 0.09907761961221695, + 0.7561300992965698, 0.16819125413894653 + ] + ], + "X_umap": [ + [2.863359212875366, 4.735023021697998], + [4.928004741668701, 2.629343032836914], + [-10.694380760192871, 0.7282713055610657], + [4.215363025665283, 1.0666383504867554], + [5.565277099609375, -3.15651273727417], + [1.876205563545227, -4.090156078338623], + [-2.055039882659912, -2.075582981109619], + [6.112038612365723, -1.3596646785736084], + [-11.404786109924316, -0.3759504556655884], + [7.870038986206055, 0.4022972583770752], + [5.480849266052246, -2.966010808944702], + [-8.208011627197266, 3.705298900604248], + [8.639411926269531, 4.407148838043213], + [3.177371025085449, -4.527858257293701], + [6.2317891120910645, -2.5219004154205322], + [-11.267833709716797, 5.638401031494141], + [2.8690600395202637, 2.0928971767425537], + [-11.246185302734375, 3.945387840270996], + [6.571178913116455, 3.892319679260254], + [-9.088343620300293, 4.181664943695068], + [6.418415069580078, 0.26675549149513245], + [-10.823965072631836, 5.346739768981934], + [4.6938629150390625, 1.3343334197998047], + [-5.790002822875977, -3.077791690826416], + [-0.29139986634254456, -5.114933013916016], + [-0.673973798751831, -3.699603319168091], + [-11.295242309570312, 4.05423641204834], + [2.545789957046509, 0.22083541750907898], + [3.0721657276153564, 1.5921680927276611], + [-10.459954261779785, 0.2934435307979584], + [-10.321405410766602, 0.6823283433914185], + [5.687520980834961, 1.590615153312683], + [3.7333078384399414, 1.4692425727844238], + [5.3746466636657715, 1.7398216724395752], + [5.542148113250732, -1.4525854587554932], + [-7.874664783477783, -1.0265419483184814], + [5.81940221786499, -0.5606408715248108], + [-9.908223152160645, 0.3006816506385803], + [5.979428291320801, -1.5926531553268433], + [6.092731475830078, 0.9632568359375], + [4.219326019287109, 3.8157272338867188], + [-10.517379760742188, -1.2470197677612305], + [1.42355477809906, -4.790363788604736], + [6.245828151702881, 1.5339767932891846], + [-9.472710609436035, 4.53525972366333], + [-2.5874481201171875, -3.81369686126709], + [3.71260404586792, 3.353705406188965], + [-2.136101484298706, -4.025306701660156], + [-1.8059942722320557, -4.994431018829346], + [3.4860620498657227, -3.730013132095337] + ], + "velocity_umap": [ + [0.03246533773535059, 0.13792963683470005], + [0.11177127930488494, 0.16019806341797127], + [0.1500439505843519, 0.011039083439909366], + [0.18640312611422402, 0.337719722944636], + [0.3502361259479558, 0.3706825958734048], + [0.5224674075721216, 0.12465978113014825], + [0.45981744627386706, 0.11213221389781806], + [0.28751520921005636, 0.3224131477351831], + [0.10514756625570329, -0.05321501825877582], + [0.030351480109053773, 0.2322669926669677], + [0.34551645129468855, 0.3610376123419269], + [0.35274654760925966, 0.08862534179269195], + [-0.09920571829206068, 0.13629257902744205], + [0.5543750016672278, 0.2636973191327594], + [0.2934654777586604, 0.43607766786908003], + [0.2193140341718346, 0.23553089231654556], + [0.6428065688576395, 0.13173893909146206], + [0.14163059771692976, 0.07832769970909968], + [0.15874635962803205, -0.06638328959414976], + [0.30054761959092147, 0.10726927550851818], + [0.2331741905831108, 0.22168666674168283], + [0.16072266838977148, 0.15697538164673305], + [0.4670464552456354, 0.18919365233894406], + [0.3216136220435616, -0.02468892752348566], + [0.4687571742060243, 0.0349723330024735], + [0.47717568562999935, 0.08959661707307597], + [0.11901482832576075, 0.1337922089653038], + [0.4708219117533795, 0.5087959683547404], + [0.04299729903207144, 0.35577765475086526], + [0.28378089471952606, -0.08175344907052595], + [0.20117424821089033, 0.009431229005195833], + [0.0027532531249208725, 0.2618572316658762], + [-0.031810283236013766, 0.30103388940716164], + [0.21448711717375854, 0.046074735195365986], + [0.44200070227352956, 0.3140897408758923], + [0.3145116804574723, -0.028533809604838124], + [0.34371318176084986, 0.2853720565456881], + [0.23552527859323796, -0.018759389607940737], + [0.281746931502195, 0.46415665209431317], + [0.014332796511918168, 0.2878000677373546], + [0.10360548657791996, 0.11563996913621089], + [0.17468824647883788, -0.0918714393647538], + [0.6041946719107331, 0.18533737844520384], + [0.03430030457624374, 0.2885510675955198], + [0.26357477812758523, 0.13665496762528592], + [0.37027749746174765, 0.041275659230450644], + [0.31565945929050093, -0.017636017511691207], + [0.40670158482824426, 0.03493010364245681], + [0.3942053608843815, -0.007554352053190311], + [0.571302754421609, 0.3258489739828169] + ] + }, + "varm": { + "loss": [ + [ + 9.104160033679067, + 5.659526460443428, + 5.550459722719419, + 5.396320195265236, + 5.3961762580106765, + 4.116301105607934, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 6.317015341927311, + 2.27751548396456, + 2.251766447413078, + 2.0686453244628358, + 1.9726592229148214, + 2.2170730605151823, + 1.1984362175579677, + 1.1976916638409534, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 7.607685819139538, + 3.3050926966764838, + 3.293123656747615, + 3.234444031156313, + 4.242694693741616, + 2.9604493032565977, + 1.9976215845001482, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 14.568440072912201, + 9.942477624347344, + 9.68524626932793, + 7.984742951579451, + 7.077444617039046, + 4.051191846937932, + 2.283827405921061, + 1.9534221759899146, + 1.9492026061230634, + 1.7482135584451959, + 1.6146536693246771, + NaN, + NaN, + NaN, + NaN + ], + [ + 21.412436041938207, + 7.761416645729354, + 6.91379705135719, + 5.467017829257656, + 5.508867335138303, + 5.474647635389492, + 5.485316497388145, + 3.624033664987899, + 3.48531264734762, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 12.732364166093632, + 7.465932140149446, + 6.594532493211832, + 4.659971139374455, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + 14.533792372310117, + 11.233969501155027, + 10.976554340898659, + 10.57434298427803, + 10.571266018408476, + 8.444505105080426, + 6.2024524038149975, + 5.265923266878386, + 5.265923266878386, + 3.1672689608842206, + 3.166145885312764, + NaN, + NaN, + NaN, + NaN + ] + ] + }, + "obsp": { + "connectivities": [ + [ + 0.0, 0.53265380859375, 0.0, 0.0680786594748497, 0.028192861005663872, + 0.0, 0.0, 0.07872893661260605, 0.0, 0.07487280666828156, + 0.05182172730565071, 0.0, 0.17139901220798492, 0.023082345724105835, + 0.05334343761205673, 0.019037432968616486, 0.20674607157707214, 0.0, + 0.13461172580718994, 0.0, 0.13305045664310455, 0.0, 0.4224238991737366, + 0.0, 0.0, 0.0, 0.0, 0.0696490928530693, 0.1250809133052826, + 0.0192739088088274, 0.0, 0.27164387702941895, 0.10518433898687363, + 0.40147778391838074, 0.07391510903835297, 0.0, 0.13692565262317657, 0.0, + 0.07955716550350189, 0.1501704603433609, 0.8565076589584351, 0.0, + 0.02154350094497204, 0.28219398856163025, 0.0, 0.0, 1.0, 0.0, 0.0, + 0.02845108136534691 + ], + [ + 0.53265380859375, 0.0, 0.0, 0.174528568983078, 0.027679860591888428, + 9.015371324494481e-5, 3.722683686646633e-5, 0.07717221975326538, 0.0, + 0.056542932987213135, 0.03351956978440285, 0.0, 0.3445345461368561, + 0.00018193376308772713, 0.035168182104825974, 0.0, 0.14801332354545593, + 0.0, 0.09414844214916229, 0.0, 0.11282217502593994, 0.0, + 0.950276255607605, 0.0, 0.0, 0.0, 0.0, 0.05742856487631798, + 0.11190546303987503, 0.0, 0.0, 0.691303014755249, 0.14400097727775574, + 0.6756076812744141, 0.04785221070051193, 0.0, 0.1498233526945114, 0.0, + 0.048246584832668304, 0.5840916633605957, 1.0, 0.0, + 0.0001485092652728781, 0.9153958559036255, 0.0, 0.0, 0.6405394077301025, + 0.0, 0.0, 0.01879383996129036 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0008506689337082207, + 0.9517919421195984, 0.0010874196887016296, 0.0, 0.31562671065330505, + 0.00014482576807495207, 0.0, 0.0, 0.2883283197879791, + 0.01075711753219366, 0.3361738622188568, 0.0011114930966868997, + 0.19871141016483307, 0.0, 0.2744344472885132, 0.0013901767088100314, + 0.5166186094284058, 0.027838334441184998, 0.03597136586904526, + 0.4212188720703125, 0.0, 0.0, 0.9762163758277893, 0.9191384315490723, + 0.0, 0.007615056820213795, 0.0008669299422763288, 0.0008676896686665714, + 0.7748616933822632, 0.0008144627790898085, 1.0, 0.0008071537595242262, + 0.0, 0.0, 1.0, 0.0010200436227023602, 0.0, 0.17301350831985474, + 0.085923932492733, 0.007301213685423136, 0.04893966019153595, + 0.04040396213531494, 0.0 + ], + [ + 0.0680786594748497, 0.174528568983078, 0.0, 0.0, 0.06823098659515381, + 0.012271404266357422, 0.005870440974831581, 0.13693615794181824, 0.0, + 0.2653900682926178, 0.1092691645026207, 0.0, 0.06304334104061127, + 0.021511521190404892, 0.07843055576086044, 0.0, 0.3289119005203247, 0.0, + 0.1706179976463318, 0.0, 0.1583288013935089, 0.0, 0.10611136257648468, + 0.0, 0.0, 0.0, 0.0, 0.39827361702919006, 0.8524527549743652, 0.0, 0.0, + 0.1721428483724594, 0.9999999403953552, 0.15568609535694122, + 0.08831405639648438, 0.0, 0.1742258220911026, 0.0, 0.0773845911026001, + 0.3277891278266907, 0.11982973664999008, 0.0, 0.013264521956443787, + 0.3397292494773865, 0.0, 0.0, 0.06666328012943268, 0.0, 0.0, + 0.02377162128686905 + ], + [ + 0.028192861005663872, 0.027679860591888428, 0.0, 0.06823098659515381, + 0.0, 0.24037334322929382, 0.11873308569192886, 0.4742709994316101, 0.0, + 0.1638403981924057, 1.0, 0.0, 0.014827673323452473, 0.4725923240184784, + 0.9178111553192139, 0.0, 0.053005073219537735, 0.0, 0.03823540732264519, + 0.0, 0.24071264266967773, 0.0, 0.07662711292505264, 0.0, + 0.04638740420341492, 0.045588478446006775, 0.0, 0.113612599670887, + 0.03151281923055649, 0.0, 0.0, 0.08458684384822845, 0.02335735596716404, + 0.06234703212976456, 0.7817089557647705, 0.0, 0.2690531611442566, 0.0, + 0.704796314239502, 0.076539047062397, 0.0484955795109272, 0.0, + 0.1659770905971527, 0.04965481162071228, 0.0, 0.0, 0.047023069113492966, + 0.03285081684589386, 0.039645105600357056, 0.7616464495658875 + ], + [ + 0.0, 9.015371324494481e-5, 0.0, 0.012271404266357422, + 0.24037334322929382, 0.0, 0.37412866950035095, 0.08136593550443649, 0.0, + 0.03776904195547104, 0.24220110476016998, 0.0, 0.00040969642577692866, + 0.9335717558860779, 0.10494370013475418, 0.0, 0.03804861381649971, 0.0, + 0.025084499269723892, 0.0, 0.058431852608919144, 0.0, + 0.04360628500580788, 0.03232032433152199, 0.4920710325241089, + 0.5515062212944031, 0.0, 0.058931462466716766, 0.0, 0.0, 0.0, + 0.029714666306972504, 0.008791615255177021, 0.03312448039650917, + 0.11475569754838943, 0.0, 0.06945106387138367, 0.0, 0.10135676711797714, + 0.027746709063649178, 0.03647652268409729, 0.0, 1.0, + 0.021819068118929863, 0.0, 0.3031584322452545, 0.03260508552193642, + 0.3284582197666168, 0.42834964394569397, 0.8569005727767944 + ], + [ + 0.0, 3.722683686646633e-5, 0.0, 0.005870440974831581, + 0.11873308569192886, 0.37412866950035095, 0.0, 0.042440999299287796, + 0.0, 0.016011781990528107, 0.1037273108959198, 0.01949009671807289, 0.0, + 0.9450973868370056, 0.052360858768224716, 0.06779347360134125, + 0.01742018572986126, 0.0457804873585701, 0.02246837690472603, + 0.333970308303833, 0.026179783046245575, 0.06637817621231079, + 0.03063426911830902, 0.02631346881389618, 0.3087456524372101, + 0.3273099660873413, 0.02462410181760788, 0.021067092195153236, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.07365186512470245, 0.0, 0.02923324517905712, 0.0, + 0.05201870575547218, 0.0, 0.003110521240159869, 0.0, 1.0, 0.0, + 0.1659342348575592, 0.20590448379516602, 0.0, 0.3303644359111786, + 0.3060571253299713, 0.4587562084197998 + ], + [ + 0.07872893661260605, 0.07717221975326538, 0.0008506689337082207, + 0.13693615794181824, 0.4742709994316101, 0.08136593550443649, + 0.042440999299287796, 0.0, 0.0, 1.0, 0.5796350240707397, + 0.0002661569742485881, 0.05257720127701759, 0.12933684885501862, + 0.6751577258110046, 0.0, 0.11556509137153625, 0.0020646736957132816, + 0.10061653703451157, 0.0, 0.3301832675933838, 0.0, 0.2696246802806854, + 0.002754912478849292, 0.027949802577495575, 0.023101961240172386, 0.0, + 0.21311303973197937, 0.0867898166179657, 0.0, 0.0, 0.2756367027759552, + 0.08130409568548203, 0.1932944655418396, 1.0, 0.0035921118687838316, + 0.7170088291168213, 0.00807748269289732, 0.9622586369514465, + 0.33757907152175903, 0.09257740527391434, 0.005355460569262505, + 0.066103994846344, 0.15594084560871124, 0.0, 0.0, 0.11135908216238022, + 0.0, 0.024938272312283516, 0.20076096057891846 + ], + [ + 0.0, 0.0, 0.9517919421195984, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.008928142488002777, 0.0, 0.39573073387145996, 0.0, + 0.008477214723825455, 0.0, 0.29776671528816223, 0.013773794285953045, + 0.3101629614830017, 0.011571562848985195, 0.17717592418193817, + 0.008631397038698196, 0.327242374420166, 0.013684969395399094, + 0.21505266427993774, 0.0, 0.033713698387145996, 0.38218799233436584, + 0.0, 0.009010442532598972, 1.0, 0.8620946407318115, 0.0, 0.0, + 0.009353365749120712, 0.0, 0.7836110591888428, 0.009202995337545872, + 1.0, 0.0, 0.0, 0.0, 0.9291825890541077, 0.010312903672456741, 0.0, + 0.17271645367145538, 0.07226001471281052, 0.010586130432784557, + 0.04376600682735443, 0.0392041839659214, 0.0 + ], + [ + 0.07487280666828156, 0.056542932987213135, 0.0010874196887016296, + 0.2653900682926178, 0.1638403981924057, 0.03776904195547104, + 0.016011781990528107, 1.0, 0.008928142488002777, 0.0, 0.324057936668396, + 0.0, 0.22252412140369415, 0.07956535369157791, 0.42788437008857727, 0.0, + 0.3709983825683594, 0.0, 0.43221843242645264, 0.0, 0.27443501353263855, + 0.0, 0.14605437219142914, 0.0, 0.025132959708571434, 0.0, 0.0, + 0.1623772233724594, 0.34739574790000916, 0.007161619141697884, 0.0, + 0.2817477881908417, 0.18091799318790436, 0.26785144209861755, + 0.21989521384239197, 0.0, 0.2852286994457245, 0.0, 0.7357642650604248, + 0.4675121307373047, 0.07128997147083282, 0.005847027525305748, + 0.033431246876716614, 0.2732725441455841, 0.0, 0.0, 0.090263731777668, + 0.0, 0.0, 0.07139129936695099 + ], + [ + 0.05182172730565071, 0.03351956978440285, 0.0, 0.1092691645026207, 1.0, + 0.24220110476016998, 0.1037273108959198, 0.5796350240707397, 0.0, + 0.324057936668396, 0.0, 0.0, 0.01771029271185398, 0.42913031578063965, + 0.6329693794250488, 0.0, 0.08344376087188721, 0.0, 0.045726701617240906, + 0.0, 0.28770631551742554, 0.0, 0.09364563226699829, 0.0, + 0.052209075540304184, 0.040301352739334106, 0.0, 0.18380028009414673, + 0.052657585591077805, 0.0, 0.0, 0.10422376543283463, + 0.05410875752568245, 0.07855921238660812, 0.8616095781326294, 0.0, + 0.37605226039886475, 0.0, 0.7772741317749023, 0.08022359013557434, + 0.07204894721508026, 0.0, 0.17131352424621582, 0.06665335595607758, 0.0, + 0.0418170690536499, 0.06583472341299057, 0.04025186225771904, + 0.036287419497966766, 0.7159180641174316 + ], + [ + 0.0, 0.0, 0.31562671065330505, 0.0, 0.0, 0.0, 0.01949009671807289, + 0.0002661569742485881, 0.39573073387145996, 0.0, 0.0, 0.0, 0.0, + 0.00022237037774175406, 0.0, 0.8330211639404297, 0.0003167445247527212, + 0.5854098200798035, 0.0003255287301726639, 0.42407965660095215, + 0.0002515927772037685, 1.0, 0.0005017891526222229, 0.040933892130851746, + 0.0, 0.0003802203282248229, 0.407289057970047, 0.0, 0.0, + 0.3686596751213074, 0.46237310767173767, 0.0, 0.0, + 0.00026970249018631876, 0.0002485554141458124, 0.26648256182670593, 0.0, + 0.336405873298645, 0.0, 0.0, 0.0, 0.14340800046920776, + 0.000314558477839455, 0.0, 0.7833172082901001, 0.03983791172504425, + 0.00028060670592822134, 0.0008663319749757648, 0.00047646465827710927, + 0.0 + ], + [ + 0.17139901220798492, 0.3445345461368561, 0.00014482576807495207, + 0.06304334104061127, 0.014827673323452473, 0.00040969642577692866, 0.0, + 0.05257720127701759, 0.0, 0.22252412140369415, 0.01771029271185398, 0.0, + 0.0, 0.0010813556145876646, 0.027446748688817024, 0.0, + 0.33688920736312866, 0.0, 0.9999999403953552, 0.0, 0.021748866885900497, + 0.0, 0.19493335485458374, 0.0, 0.0, 0.0, 0.0, 0.013882743194699287, + 0.09440797567367554, 0.0, 0.0, 0.6454083323478699, 0.16619834303855896, + 0.2049131989479065, 0.019554132595658302, 0.0, 0.04141460359096527, 0.0, + 0.023014266043901443, 0.2319379448890686, 0.8003380298614502, 0.0, + 0.0004200837865937501, 0.20271189510822296, 0.0, 0.0, + 0.49423134326934814, 0.0, 0.0, 0.0016730604693293571 + ], + [ + 0.023082345724105835, 0.00018193376308772713, 0.0, 0.021511521190404892, + 0.4725923240184784, 0.9335717558860779, 0.9450973868370056, + 0.12933684885501862, 0.008477214723825455, 0.07956535369157791, + 0.42913031578063965, 0.00022237037774175406, 0.0010813556145876646, 0.0, + 0.2209242284297943, 0.0, 0.06506102532148361, 0.0, 0.0409051887691021, + 0.032137431204319, 0.08104177564382553, 0.0, 0.05305331200361252, + 0.006764254067093134, 0.3984883427619934, 0.33994174003601074, 0.0, + 0.10290859639644623, 0.03452310338616371, 0.0, 0.0, 0.04189267382025719, + 0.014725979417562485, 0.03919738903641701, 0.15871167182922363, + 0.0038772523403167725, 0.09151951223611832, 0.0, 0.1897324174642563, + 0.039042893797159195, 0.03776524215936661, 0.0, 0.8914220333099365, + 0.028171537443995476, 0.004397126380354166, 0.19194725155830383, + 0.03853074833750725, 0.21852606534957886, 0.28658416867256165, 1.0 + ], + [ + 0.05334343761205673, 0.035168182104825974, 0.0, 0.07843055576086044, + 0.9178111553192139, 0.10494370013475418, 0.052360858768224716, + 0.6751577258110046, 0.0, 0.42788437008857727, 0.6329693794250488, 0.0, + 0.027446748688817024, 0.2209242284297943, 0.0, 0.0, 0.06255393475294113, + 0.0, 0.04135489836335182, 0.0, 0.20855392515659332, 0.0, + 0.12770827114582062, 0.0, 0.035613615065813065, 0.0, 0.0, + 0.098028764128685, 0.04022706300020218, 0.0, 0.0, 0.12807129323482513, + 0.039527446031570435, 0.07390271872282028, 0.7954800724983215, 0.0, + 0.2564210593700409, 0.0, 1.0, 0.18850556015968323, 0.05660754442214966, + 0.0, 0.10176081955432892, 0.048158787190914154, 0.0, 0.0, + 0.07013309001922607, 0.0, 0.024573342874646187, 0.27843064069747925 + ], + [ + 0.019037432968616486, 0.0, 0.2883283197879791, 0.0, 0.0, 0.0, + 0.06779347360134125, 0.0, 0.29776671528816223, 0.0, 0.0, + 0.8330211639404297, 0.0, 0.0, 0.0, 0.0, 0.020063098520040512, + 0.9136441349983215, 0.024458615109324455, 0.4607428312301636, + 0.022157782688736916, 1.0, 0.025436507537961006, 0.09903780370950699, + 0.0, 0.01811281591653824, 0.9999999403953552, 0.0, 0.0, + 0.3364032506942749, 0.38044387102127075, 0.0, 0.0, 0.021846020594239235, + 0.018132604658603668, 0.1971767395734787, 0.019028203561902046, + 0.24177852272987366, 0.0, 0.0, 0.0, 0.09796875715255737, + 0.018678966909646988, 0.016091836616396904, 0.8513591289520264, + 0.06915067881345749, 0.019866399466991425, 0.05231562256813049, + 0.01757194846868515, 0.0 + ], + [ + 0.20674607157707214, 0.14801332354545593, 0.01075711753219366, + 0.3289119005203247, 0.053005073219537735, 0.03804861381649971, + 0.01742018572986126, 0.11556509137153625, 0.013773794285953045, + 0.3709983825683594, 0.08344376087188721, 0.0003167445247527212, + 0.33688920736312866, 0.06506102532148361, 0.06255393475294113, + 0.020063098520040512, 0.0, 0.003360779257491231, 0.7686107158660889, + 0.025339171290397644, 0.12094179540872574, 0.01948576606810093, + 0.15519048273563385, 0.0043263304978609085, 0.029921645298600197, + 0.023967906832695007, 0.026136118918657303, 0.9790244102478027, 1.0, + 0.011110225692391396, 0.018132474273443222, 0.24468165636062622, + 0.7677361369132996, 0.15634486079216003, 0.06700925529003143, + 0.005546394269913435, 0.16028928756713867, 0.012536106631159782, + 0.061746079474687576, 0.20355451107025146, 0.18416732549667358, + 0.00789673626422882, 0.0408698134124279, 0.30612754821777344, + 0.005618625320494175, 0.037202510982751846, 0.16555893421173096, + 0.03190910816192627, 0.02309403195977211, 0.05651974678039551 + ], + [ + 0.0, 0.0, 0.3361738622188568, 0.0, 0.0, 0.0, 0.0457804873585701, + 0.0020646736957132816, 0.3101629614830017, 0.0, 0.0, 0.5854098200798035, + 0.0, 0.0, 0.0, 0.9136441349983215, 0.003360779257491231, 0.0, + 0.003292675130069256, 0.6426923274993896, 0.0019520169589668512, 1.0, + 0.003429067088291049, 0.18190181255340576, 0.0, 0.027180347591638565, + 0.8034132719039917, 0.0, 0.0, 0.26021265983581543, 0.264374703168869, + 0.0, 0.0, 0.0018434703815728426, 0.0021399983670562506, + 0.24698084592819214, 0.0018900291761383414, 0.2198108732700348, 0.0, + 0.0, 0.0, 0.07867320626974106, 0.002819579094648361, 0.0, + 0.9440886974334717, 0.05805583670735359, 0.0025502622593194246, + 0.043542031198740005, 0.028648316860198975, 0.0 + ], + [ + 0.13461172580718994, 0.09414844214916229, 0.0011114930966868997, + 0.1706179976463318, 0.03823540732264519, 0.025084499269723892, + 0.02246837690472603, 0.10061653703451157, 0.011571562848985195, + 0.43221843242645264, 0.045726701617240906, 0.0003255287301726639, + 0.9999999403953552, 0.0409051887691021, 0.04135489836335182, + 0.024458615109324455, 0.7686107158660889, 0.003292675130069256, 0.0, + 0.0314076691865921, 0.12825703620910645, 0.021831797435879707, + 0.38425761461257935, 0.0037988724652677774, 0.027104821056127548, 0.0, + 0.02837279438972473, 0.18888960778713226, 0.6304999589920044, + 0.0101254777982831, 0.01791544258594513, 1.0, 0.2194073647260666, + 0.3258900046348572, 0.039697710424661636, 0.0045963795855641365, + 0.14142391085624695, 0.011507217772305012, 0.03843465819954872, + 0.9538021087646484, 0.10201815515756607, 0.0045476327650249004, + 0.030116820707917213, 0.6097808480262756, 0.006461720913648605, 0.0, + 0.13502028584480286, 0.029806839302182198, 0.02286849357187748, + 0.03842863440513611 + ], + [ + 0.0, 0.0, 0.19871141016483307, 0.0, 0.0, 0.0, 0.333970308303833, 0.0, + 0.17717592418193817, 0.0, 0.0, 0.42407965660095215, 0.0, + 0.032137431204319, 0.0, 0.4607428312301636, 0.025339171290397644, + 0.6426923274993896, 0.0314076691865921, 0.0, 0.023953653872013092, + 0.44148194789886475, 0.027991315349936485, 0.8386093378067017, + 0.08093611896038055, 0.11480379849672318, 0.281438410282135, 0.0, 0.0, + 0.20454178750514984, 0.19678211212158203, 0.0, 0.0, 0.0, + 0.024157393723726273, 0.3227478861808777, 0.0, 0.19733501970767975, 0.0, + 0.0, 0.0, 0.05579771101474762, 0.06657551974058151, 0.0, 1.0, + 0.237458273768425, 0.024214088916778564, 0.21379657089710236, + 0.14356257021427155, 0.027051636949181557 + ], + [ + 0.13305045664310455, 0.11282217502593994, 0.0, 0.1583288013935089, + 0.24071264266967773, 0.058431852608919144, 0.026179783046245575, + 0.3301832675933838, 0.008631397038698196, 0.27443501353263855, + 0.28770631551742554, 0.0002515927772037685, 0.021748866885900497, + 0.08104177564382553, 0.20855392515659332, 0.022157782688736916, + 0.12094179540872574, 0.0019520169589668512, 0.12825703620910645, + 0.023953653872013092, 0.0, 0.017642464488744736, 0.28843024373054504, + 0.0, 0.026062026619911194, 0.023393871262669563, 0.026457123458385468, + 0.19414593279361725, 0.10585758835077286, 0.007639001589268446, + 0.014229166321456432, 0.43926310539245605, 0.10102666169404984, + 0.8343072533607483, 0.5265605449676514, 0.003505046246573329, + 0.9999999403953552, 0.00862357672303915, 0.5232036113739014, + 0.4547661244869232, 0.1780712902545929, 0.0, 0.04952254518866539, + 0.6139813661575317, 0.005390170030295849, 0.0, 0.13974857330322266, + 0.029533609747886658, 0.0, 0.13904020190238953 + ], + [ + 0.0, 0.0, 0.2744344472885132, 0.0, 0.0, 0.0, 0.06637817621231079, 0.0, + 0.327242374420166, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, + 0.01948576606810093, 1.0, 0.021831797435879707, 0.44148194789886475, + 0.017642464488744736, 0.0, 0.022232184186577797, 0.07913821935653687, + 0.0, 0.017548805102705956, 0.8815912008285522, 0.0, 0.0, + 0.33425700664520264, 0.36488616466522217, 0.0, 0.0, + 0.017858082428574562, 0.016639135777950287, 0.20962253212928772, + 0.016527434810996056, 0.24521851539611816, 0.0, 0.0, 0.0, + 0.1277754008769989, 0.01860097236931324, 0.0, 0.9508653283119202, + 0.05897434428334236, 0.017907172441482544, 0.020899055525660515, + 0.017982257530093193, 0.015603624284267426 + ], + [ + 0.4224238991737366, 0.950276255607605, 0.0013901767088100314, + 0.10611136257648468, 0.07662711292505264, 0.04360628500580788, + 0.03063426911830902, 0.2696246802806854, 0.013684969395399094, + 0.14605437219142914, 0.09364563226699829, 0.0005017891526222229, + 0.19493335485458374, 0.05305331200361252, 0.12770827114582062, + 0.025436507537961006, 0.15519048273563385, 0.003429067088291049, + 0.38425761461257935, 0.027991315349936485, 0.28843024373054504, + 0.022232184186577797, 0.0, 0.004032091237604618, 0.028337424620985985, + 0.022889921441674232, 0.029141275212168694, 0.11412938684225082, + 0.10260715335607529, 0.010057398118078709, 0.017292683944106102, 1.0, + 0.09926409274339676, 0.9639091491699219, 0.20971539616584778, + 0.005058689508587122, 0.7271876931190491, 0.012242957949638367, + 0.19087742269039154, 0.533255934715271, 0.7287980318069458, + 0.007016623858362436, 0.044307004660367966, 0.4222305715084076, + 0.006689833011478186, 0.035446230322122574, 0.9592351913452148, + 0.03082340396940708, 0.024830950424075127, 0.059379834681749344 + ], + [ + 0.0, 0.0, 0.5166186094284058, 0.0, 0.0, 0.03232032433152199, + 0.02631346881389618, 0.002754912478849292, 0.21505266427993774, 0.0, + 0.0, 0.040933892130851746, 0.0, 0.006764254067093134, 0.0, + 0.09903780370950699, 0.0043263304978609085, 0.18190181255340576, + 0.0037988724652677774, 0.8386093378067017, 0.0, 0.07913821935653687, + 0.004032091237604618, 0.0, 0.09920913726091385, 0.1841210126876831, + 0.11296870559453964, 0.0, 0.0, 0.2465195506811142, 0.19404253363609314, + 0.0, 0.0, 0.0, 0.002836363622918725, 1.0, 0.0, 0.35164713859558105, 0.0, + 0.0, 0.0, 0.07843656837940216, 0.05851461738348007, 0.0, + 0.1735193133354187, 0.6752961874008179, 0.0, 0.6378917098045349, + 0.4083334803581238, 0.0040233563631772995 + ], + [ + 0.0, 0.0, 0.027838334441184998, 0.0, 0.04638740420341492, + 0.4920710325241089, 0.3087456524372101, 0.027949802577495575, 0.0, + 0.025132959708571434, 0.052209075540304184, 0.0, 0.0, + 0.3984883427619934, 0.035613615065813065, 0.0, 0.029921645298600197, + 0.0, 0.027104821056127548, 0.08093611896038055, 0.026062026619911194, + 0.0, 0.028337424620985985, 0.09920913726091385, 0.0, 0.8115963935852051, + 0.0, 0.028403231874108315, 0.0, 0.022871285676956177, + 0.024015069007873535, 0.0, 0.0, 0.0, 0.03627481684088707, + 0.03040570765733719, 0.030864467844367027, 0.023456059396266937, + 0.035497650504112244, 0.0, 0.0, 0.0, 0.7073832750320435, 0.0, 0.0, + 0.6863921284675598, 0.0, 0.7193300724029541, 1.0, 0.1737273633480072 + ], + [ + 0.0, 0.0, 0.03597136586904526, 0.0, 0.045588478446006775, + 0.5515062212944031, 0.3273099660873413, 0.023101961240172386, + 0.033713698387145996, 0.0, 0.040301352739334106, 0.0003802203282248229, + 0.0, 0.33994174003601074, 0.0, 0.01811281591653824, + 0.023967906832695007, 0.027180347591638565, 0.0, 0.11480379849672318, + 0.023393871262669563, 0.017548805102705956, 0.022889921441674232, + 0.1841210126876831, 0.8115963935852051, 0.0, 0.04795289784669876, + 0.027573149651288986, 0.0, 0.032014455646276474, 0.04452119395136833, + 0.0, 0.0, 0.0, 0.029835939407348633, 0.04007217288017273, + 0.025775473564863205, 0.03885993734002113, 0.025970369577407837, 0.0, + 0.0, 0.004946316592395306, 0.6015356779098511, 0.0, + 0.006870749406516552, 0.9412478804588318, 0.0, 1.0, 0.9965497851371765, + 0.2091461718082428 + ], + [ + 0.0, 0.0, 0.4212188720703125, 0.0, 0.0, 0.0, 0.02462410181760788, 0.0, + 0.38218799233436584, 0.0, 0.0, 0.407289057970047, 0.0, 0.0, 0.0, + 0.9999999403953552, 0.026136118918657303, 0.8034132719039917, + 0.02837279438972473, 0.281438410282135, 0.026457123458385468, + 0.8815912008285522, 0.029141275212168694, 0.11296870559453964, 0.0, + 0.04795289784669876, 0.0, 0.0, 0.0, 0.45618346333503723, + 0.5053949952125549, 0.0, 0.0, 0.026017047464847565, 0.02160637080669403, + 0.22365517914295197, 0.023993801325559616, 0.30109184980392456, 0.0, + 0.0, 0.0, 0.14293354749679565, 0.024977002292871475, 0.0, + 0.4240417778491974, 0.07679212093353271, 0.023974765092134476, + 0.029293635860085487, 0.025011373683810234, 0.0218273364007473 + ], + [ + 0.0696490928530693, 0.05742856487631798, 0.0, 0.39827361702919006, + 0.113612599670887, 0.058931462466716766, 0.021067092195153236, + 0.21311303973197937, 0.0, 0.1623772233724594, 0.18380028009414673, 0.0, + 0.013882743194699287, 0.10290859639644623, 0.098028764128685, 0.0, + 0.9790244102478027, 0.0, 0.18888960778713226, 0.0, 0.19414593279361725, + 0.0, 0.11412938684225082, 0.0, 0.028403231874108315, + 0.027573149651288986, 0.0, 0.0, 1.0, 0.0, 0.0, 0.17324426770210266, + 0.455314576625824, 0.09346240758895874, 0.14650548994541168, 0.0, + 0.2337450534105301, 0.0, 0.09342189133167267, 0.1699618250131607, + 0.05993223190307617, 0.0, 0.06536812335252762, 0.1578044891357422, 0.0, + 0.03346945345401764, 0.05422089993953705, 0.0457657165825367, 0.0, + 0.11507933586835861 + ], + [ + 0.1250809133052826, 0.11190546303987503, 0.0, 0.8524527549743652, + 0.03151281923055649, 0.0, 0.0, 0.0867898166179657, 0.009010442532598972, + 0.34739574790000916, 0.052657585591077805, 0.0, 0.09440797567367554, + 0.03452310338616371, 0.04022706300020218, 0.0, 1.0, 0.0, + 0.6304999589920044, 0.0, 0.10585758835077286, 0.0, 0.10260715335607529, + 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.01233676914125681, 0.017102543264627457, + 0.16361866891384125, 1.0, 0.1474134922027588, 0.038299284875392914, 0.0, + 0.09376923739910126, 0.0, 0.040349844843149185, 0.25762346386909485, + 0.107920341193676, 0.0, 0.005586068611592054, 0.29379019141197205, 0.0, + 0.0, 0.1003364846110344, 0.0, 0.0, 0.009117263369262218 + ], + [ + 0.0192739088088274, 0.0, 0.9762163758277893, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.007161619141697884, 0.0, 0.3686596751213074, 0.0, 0.0, 0.0, + 0.3364032506942749, 0.011110225692391396, 0.26021265983581543, + 0.0101254777982831, 0.20454178750514984, 0.007639001589268446, + 0.33425700664520264, 0.010057398118078709, 0.2465195506811142, + 0.022871285676956177, 0.032014455646276474, 0.45618346333503723, 0.0, + 0.01233676914125681, 0.0, 1.0, 0.0, 0.0, 0.008135747164487839, 0.0, + 0.8674401044845581, 0.007264432497322559, 0.9663582444190979, 0.0, 0.0, + 0.0, 0.657869279384613, 0.006798332557082176, 0.007029087748378515, + 0.20607808232307434, 0.07066492736339569, 0.00777056161314249, + 0.04392407462000847, 0.03735947608947754, 0.0 + ], + [ + 0.0, 0.0, 0.9191384315490723, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.8620946407318115, 0.0, 0.0, 0.46237310767173767, 0.0, 0.0, 0.0, + 0.38044387102127075, 0.018132474273443222, 0.264374703168869, + 0.01791544258594513, 0.19678211212158203, 0.014229166321456432, + 0.36488616466522217, 0.017292683944106102, 0.19404253363609314, + 0.024015069007873535, 0.04452119395136833, 0.5053949952125549, 0.0, + 0.017102543264627457, 1.0, 0.0, 2.379890065640211e-5, 0.0, + 0.013342681340873241, 0.013779213652014732, 0.7612318396568298, + 0.014531761407852173, 0.9605216979980469, 0.0, 3.167202157783322e-5, + 0.0, 0.5703079104423523, 0.013406271114945412, 0.0003362592251505703, + 0.20044924318790436, 0.08151054382324219, 0.013111991807818413, + 0.058599524199962616, 0.045254629105329514, 0.013194072060286999 + ], + [ + 0.27164387702941895, 0.691303014755249, 0.0, 0.1721428483724594, + 0.08458684384822845, 0.029714666306972504, 0.0, 0.2756367027759552, 0.0, + 0.2817477881908417, 0.10422376543283463, 0.0, 0.6454083323478699, + 0.04189267382025719, 0.12807129323482513, 0.0, 0.24468165636062622, 0.0, + 1.0, 0.0, 0.43926310539245605, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, + 0.17324426770210266, 0.16361866891384125, 0.0, 2.379890065640211e-5, + 0.0, 0.17005333304405212, 0.8167363405227661, 0.190364271402359, 0.0, + 0.8183106184005737, 0.0, 0.17133714258670807, 0.9606593251228333, + 0.5482090711593628, 0.0, 0.0243296567350626, 0.9023657441139221, 0.0, + 0.0, 0.39817240834236145, 0.0, 0.0, 0.047776855528354645 + ], + [ + 0.10518433898687363, 0.14400097727775574, 0.007615056820213795, + 0.9999999403953552, 0.02335735596716404, 0.008791615255177021, 0.0, + 0.08130409568548203, 0.0, 0.18091799318790436, 0.05410875752568245, 0.0, + 0.16619834303855896, 0.014725979417562485, 0.039527446031570435, 0.0, + 0.7677361369132996, 0.0, 0.2194073647260666, 0.0, 0.10102666169404984, + 0.0, 0.09926409274339676, 0.0, 0.0, 0.0, 0.0, 0.455314576625824, 1.0, + 0.0, 0.0, 0.17005333304405212, 0.0, 0.13653507828712463, + 0.04831470549106598, 0.0, 0.12230847775936127, 0.0, 0.04295581579208374, + 0.22588089108467102, 0.1436631977558136, 0.0, 0.009671772830188274, + 0.3184412717819214, 0.0, 0.0, 0.08776801824569702, 0.0, 0.0, + 0.016233064234256744 + ], + [ + 0.40147778391838074, 0.6756076812744141, 0.0008669299422763288, + 0.15568609535694122, 0.06234703212976456, 0.03312448039650917, 0.0, + 0.1932944655418396, 0.009353365749120712, 0.26785144209861755, + 0.07855921238660812, 0.00026970249018631876, 0.2049131989479065, + 0.03919738903641701, 0.07390271872282028, 0.021846020594239235, + 0.15634486079216003, 0.0018434703815728426, 0.3258900046348572, 0.0, + 0.8343072533607483, 0.017858082428574562, 0.9639091491699219, 0.0, 0.0, + 0.0, 0.026017047464847565, 0.09346240758895874, 0.1474134922027588, + 0.008135747164487839, 0.013342681340873241, 0.8167363405227661, + 0.13653507828712463, 0.0, 0.11782168596982956, 0.0, 0.6364341974258423, + 0.009029737673699856, 0.16242967545986176, 0.8771018981933594, + 0.6070592403411865, 0.004752704408019781, 0.029237717390060425, 1.0, + 0.004510210361331701, 0.0, 0.5665290355682373, 0.0, 0.0, + 0.04477500915527344 + ], + [ + 0.07391510903835297, 0.04785221070051193, 0.0008676896686665714, + 0.08831405639648438, 0.7817089557647705, 0.11475569754838943, + 0.07365186512470245, 1.0, 0.0, 0.21989521384239197, 0.8616095781326294, + 0.0002485554141458124, 0.019554132595658302, 0.15871167182922363, + 0.7954800724983215, 0.018132604658603668, 0.06700925529003143, + 0.0021399983670562506, 0.039697710424661636, 0.024157393723726273, + 0.5265605449676514, 0.016639135777950287, 0.20971539616584778, + 0.002836363622918725, 0.03627481684088707, 0.029835939407348633, + 0.02160637080669403, 0.14650548994541168, 0.038299284875392914, 0.0, + 0.013779213652014732, 0.190364271402359, 0.04831470549106598, + 0.11782168596982956, 0.0, 0.004057795740664005, 0.9999999403953552, + 0.008213679306209087, 1.0, 0.15253600478172302, 0.09010358154773712, + 0.005114250350743532, 0.09395012259483337, 0.10350890457630157, + 0.004902760032564402, 0.03606989607214928, 0.09596190601587296, + 0.03628887981176376, 0.029527584090828896, 0.3371051549911499 + ], + [ + 0.0, 0.0, 0.7748616933822632, 0.0, 0.0, 0.0, 0.0, 0.0035921118687838316, + 0.7836110591888428, 0.0, 0.0, 0.26648256182670593, 0.0, + 0.0038772523403167725, 0.0, 0.1971767395734787, 0.005546394269913435, + 0.24698084592819214, 0.0045963795855641365, 0.3227478861808777, + 0.003505046246573329, 0.20962253212928772, 0.005058689508587122, 1.0, + 0.03040570765733719, 0.04007217288017273, 0.22365517914295197, 0.0, 0.0, + 0.8674401044845581, 0.7612318396568298, 0.0, 0.0, 0.0, + 0.004057795740664005, 0.0, 0.0038076317869126797, 0.9999999403953552, + 0.0, 0.0, 0.0, 0.5843493938446045, 0.005775615572929382, 0.0, + 0.1984545886516571, 0.12134084105491638, 0.00362184620462358, + 0.07040560245513916, 0.05031108483672142, 0.0036929864436388016 + ], + [ + 0.13692565262317657, 0.1498233526945114, 0.0008144627790898085, + 0.1742258220911026, 0.2690531611442566, 0.06945106387138367, + 0.02923324517905712, 0.7170088291168213, 0.009202995337545872, + 0.2852286994457245, 0.37605226039886475, 0.0, 0.04141460359096527, + 0.09151951223611832, 0.2564210593700409, 0.019028203561902046, + 0.16028928756713867, 0.0018900291761383414, 0.14142391085624695, 0.0, + 0.9999999403953552, 0.016527434810996056, 0.7271876931190491, 0.0, + 0.030864467844367027, 0.025775473564863205, 0.023993801325559616, + 0.2337450534105301, 0.09376923739910126, 0.007264432497322559, + 0.014531761407852173, 0.8183106184005737, 0.12230847775936127, + 0.6364341974258423, 0.9999999403953552, 0.0038076317869126797, 0.0, + 0.009321371093392372, 0.5141443014144897, 0.6170448064804077, + 0.18687470257282257, 0.005085283424705267, 0.055870067328214645, + 0.5638471841812134, 0.0, 0.03351558372378349, 0.14341305196285248, + 0.031981851905584335, 0.024478532373905182, 0.1393403261899948 + ], + [ + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.00807748269289732, 1.0, 0.0, 0.0, + 0.336405873298645, 0.0, 0.0, 0.0, 0.24177852272987366, + 0.012536106631159782, 0.2198108732700348, 0.011507217772305012, + 0.19733501970767975, 0.00862357672303915, 0.24521851539611816, + 0.012242957949638367, 0.35164713859558105, 0.023456059396266937, + 0.03885993734002113, 0.30109184980392456, 0.0, 0.0, 0.9663582444190979, + 0.9605216979980469, 0.0, 0.0, 0.009029737673699856, + 0.008213679306209087, 0.9999999403953552, 0.009321371093392372, 0.0, + 0.0, 0.0, 0.0, 0.8406904935836792, 0.008191139437258244, + 0.00814526155591011, 0.14778022468090057, 0.0862221047282219, + 0.00970829464495182, 0.05386315658688545, 0.04216396063566208, 0.0 + ], + [ + 0.07955716550350189, 0.048246584832668304, 0.0008071537595242262, + 0.0773845911026001, 0.704796314239502, 0.10135676711797714, + 0.05201870575547218, 0.9622586369514465, 0.0, 0.7357642650604248, + 0.7772741317749023, 0.0, 0.023014266043901443, 0.1897324174642563, 1.0, + 0.0, 0.061746079474687576, 0.0, 0.03843465819954872, 0.0, + 0.5232036113739014, 0.0, 0.19087742269039154, 0.0, 0.035497650504112244, + 0.025970369577407837, 0.0, 0.09342189133167267, 0.040349844843149185, + 0.0, 0.0, 0.17133714258670807, 0.04295581579208374, 0.16242967545986176, + 1.0, 0.0, 0.5141443014144897, 0.0, 0.0, 0.1780257672071457, + 0.08754853159189224, 0.004620734602212906, 0.09238678216934204, + 0.09564878791570663, 0.004139924421906471, 0.0, 0.11009720712900162, + 0.0, 0.027267204597592354, 0.29461610317230225 + ], + [ + 0.1501704603433609, 0.5840916633605957, 0.0, 0.3277891278266907, + 0.076539047062397, 0.027746709063649178, 0.0, 0.33757907152175903, 0.0, + 0.4675121307373047, 0.08022359013557434, 0.0, 0.2319379448890686, + 0.039042893797159195, 0.18850556015968323, 0.0, 0.20355451107025146, + 0.0, 0.9538021087646484, 0.0, 0.4547661244869232, 0.0, + 0.533255934715271, 0.0, 0.0, 0.0, 0.0, 0.1699618250131607, + 0.25762346386909485, 0.0, 3.167202157783322e-5, 0.9606593251228333, + 0.22588089108467102, 0.8771018981933594, 0.15253600478172302, 0.0, + 0.6170448064804077, 0.0, 0.1780257672071457, 0.0, 0.18948480486869812, + 0.0, 0.02903648465871811, 0.9999999403953552, 0.0, 0.0, + 0.15456144511699677, 0.0, 0.0, 0.038181763142347336 + ], + [ + 0.8565076589584351, 1.0, 0.0, 0.11982973664999008, 0.0484955795109272, + 0.03647652268409729, 0.003110521240159869, 0.09257740527391434, 0.0, + 0.07128997147083282, 0.07204894721508026, 0.0, 0.8003380298614502, + 0.03776524215936661, 0.05660754442214966, 0.0, 0.18416732549667358, 0.0, + 0.10201815515756607, 0.0, 0.1780712902545929, 0.0, 0.7287980318069458, + 0.0, 0.0, 0.0, 0.0, 0.05993223190307617, 0.107920341193676, 0.0, 0.0, + 0.5482090711593628, 0.1436631977558136, 0.6070592403411865, + 0.09010358154773712, 0.0, 0.18687470257282257, 0.0, 0.08754853159189224, + 0.18948480486869812, 0.0, 0.0, 0.029403293505311012, 0.4521349370479584, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.04123494774103165 + ], + [ + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.005355460569262505, + 0.9291825890541077, 0.005847027525305748, 0.0, 0.14340800046920776, 0.0, + 0.0, 0.0, 0.09796875715255737, 0.00789673626422882, 0.07867320626974106, + 0.0045476327650249004, 0.05579771101474762, 0.0, 0.1277754008769989, + 0.007016623858362436, 0.07843656837940216, 0.0, 0.004946316592395306, + 0.14293354749679565, 0.0, 0.0, 0.657869279384613, 0.5703079104423523, + 0.0, 0.0, 0.004752704408019781, 0.005114250350743532, + 0.5843493938446045, 0.005085283424705267, 0.8406904935836792, + 0.004620734602212906, 0.0, 0.0, 0.0, 0.004773128777742386, 0.0, + 0.06644684821367264, 0.011915184557437897, 0.004973581526428461, + 0.0059655578806996346, 0.006635167635977268, 0.0 + ], + [ + 0.02154350094497204, 0.0001485092652728781, 0.0010200436227023602, + 0.013264521956443787, 0.1659770905971527, 1.0, 1.0, 0.066103994846344, + 0.010312903672456741, 0.033431246876716614, 0.17131352424621582, + 0.000314558477839455, 0.0004200837865937501, 0.8914220333099365, + 0.10176081955432892, 0.018678966909646988, 0.0408698134124279, + 0.002819579094648361, 0.030116820707917213, 0.06657551974058151, + 0.04952254518866539, 0.01860097236931324, 0.044307004660367966, + 0.05851461738348007, 0.7073832750320435, 0.6015356779098511, + 0.024977002292871475, 0.06536812335252762, 0.005586068611592054, + 0.006798332557082176, 0.013406271114945412, 0.0243296567350626, + 0.009671772830188274, 0.029237717390060425, 0.09395012259483337, + 0.005775615572929382, 0.055870067328214645, 0.008191139437258244, + 0.09238678216934204, 0.02903648465871811, 0.029403293505311012, + 0.004773128777742386, 0.0, 0.0004901698557659984, 0.005690358579158783, + 0.41151857376098633, 0.03192581608891487, 0.45493635535240173, + 0.6619638204574585, 0.6579302549362183 + ], + [ + 0.28219398856163025, 0.9153958559036255, 0.0, 0.3397292494773865, + 0.04965481162071228, 0.021819068118929863, 0.0, 0.15594084560871124, + 0.0, 0.2732725441455841, 0.06665335595607758, 0.0, 0.20271189510822296, + 0.028171537443995476, 0.048158787190914154, 0.016091836616396904, + 0.30612754821777344, 0.0, 0.6097808480262756, 0.0, 0.6139813661575317, + 0.0, 0.4222305715084076, 0.0, 0.0, 0.0, 0.0, 0.1578044891357422, + 0.29379019141197205, 0.007029087748378515, 0.0003362592251505703, + 0.9023657441139221, 0.3184412717819214, 1.0, 0.10350890457630157, 0.0, + 0.5638471841812134, 0.00814526155591011, 0.09564878791570663, + 0.9999999403953552, 0.4521349370479584, 0.0, 0.0004901698557659984, 0.0, + 0.0, 0.0, 0.27164408564567566, 0.0, 0.0, 0.029767531901597977 + ], + [ + 0.0, 0.0, 0.17301350831985474, 0.0, 0.0, 0.0, 0.1659342348575592, 0.0, + 0.17271645367145538, 0.0, 0.0, 0.7833172082901001, 0.0, + 0.004397126380354166, 0.0, 0.8513591289520264, 0.005618625320494175, + 0.9440886974334717, 0.006461720913648605, 1.0, 0.005390170030295849, + 0.9508653283119202, 0.006689833011478186, 0.1735193133354187, 0.0, + 0.006870749406516552, 0.4240417778491974, 0.0, 0.0, 0.20607808232307434, + 0.20044924318790436, 0.0, 0.0, 0.004510210361331701, + 0.004902760032564402, 0.1984545886516571, 0.0, 0.14778022468090057, + 0.004139924421906471, 0.0, 0.0, 0.06644684821367264, + 0.005690358579158783, 0.0, 0.0, 0.06010720506310463, + 0.004919949918985367, 0.04760678857564926, 0.03142477944493294, 0.0 + ], + [ + 0.0, 0.0, 0.085923932492733, 0.0, 0.0, 0.3031584322452545, + 0.20590448379516602, 0.0, 0.07226001471281052, 0.0, 0.0418170690536499, + 0.03983791172504425, 0.0, 0.19194725155830383, 0.0, 0.06915067881345749, + 0.037202510982751846, 0.05805583670735359, 0.0, 0.237458273768425, 0.0, + 0.05897434428334236, 0.035446230322122574, 0.6752961874008179, + 0.6863921284675598, 0.9412478804588318, 0.07679212093353271, + 0.03346945345401764, 0.0, 0.07066492736339569, 0.08151054382324219, 0.0, + 0.0, 0.0, 0.03606989607214928, 0.12134084105491638, 0.03351558372378349, + 0.0862221047282219, 0.0, 0.0, 0.0, 0.011915184557437897, + 0.41151857376098633, 0.0, 0.06010720506310463, 0.0, 0.0, 1.0, + 0.9429519772529602, 0.12264235317707062 + ], + [ + 1.0, 0.6405394077301025, 0.007301213685423136, 0.06666328012943268, + 0.047023069113492966, 0.03260508552193642, 0.0, 0.11135908216238022, + 0.010586130432784557, 0.090263731777668, 0.06583472341299057, + 0.00028060670592822134, 0.49423134326934814, 0.03853074833750725, + 0.07013309001922607, 0.019866399466991425, 0.16555893421173096, + 0.0025502622593194246, 0.13502028584480286, 0.024214088916778564, + 0.13974857330322266, 0.017907172441482544, 0.9592351913452148, 0.0, 0.0, + 0.0, 0.023974765092134476, 0.05422089993953705, 0.1003364846110344, + 0.00777056161314249, 0.013111991807818413, 0.39817240834236145, + 0.08776801824569702, 0.5665290355682373, 0.09596190601587296, + 0.00362184620462358, 0.14341305196285248, 0.00970829464495182, + 0.11009720712900162, 0.15456144511699677, 1.0, 0.004973581526428461, + 0.03192581608891487, 0.27164408564567566, 0.004919949918985367, 0.0, + 0.0, 0.0, 0.0, 0.04347265884280205 + ], + [ + 0.0, 0.0, 0.04893966019153595, 0.0, 0.03285081684589386, + 0.3284582197666168, 0.3303644359111786, 0.0, 0.04376600682735443, 0.0, + 0.04025186225771904, 0.0008663319749757648, 0.0, 0.21852606534957886, + 0.0, 0.05231562256813049, 0.03190910816192627, 0.043542031198740005, + 0.029806839302182198, 0.21379657089710236, 0.029533609747886658, + 0.020899055525660515, 0.03082340396940708, 0.6378917098045349, + 0.7193300724029541, 1.0, 0.029293635860085487, 0.0457657165825367, 0.0, + 0.04392407462000847, 0.058599524199962616, 0.0, 0.0, 0.0, + 0.03628887981176376, 0.07040560245513916, 0.031981851905584335, + 0.05386315658688545, 0.0, 0.0, 0.0, 0.0059655578806996346, + 0.45493635535240173, 0.0, 0.04760678857564926, 1.0, 0.0, 0.0, 1.0, + 0.13758297264575958 + ], + [ + 0.0, 0.0, 0.04040396213531494, 0.0, 0.039645105600357056, + 0.42834964394569397, 0.3060571253299713, 0.024938272312283516, + 0.0392041839659214, 0.0, 0.036287419497966766, 0.00047646465827710927, + 0.0, 0.28658416867256165, 0.024573342874646187, 0.01757194846868515, + 0.02309403195977211, 0.028648316860198975, 0.02286849357187748, + 0.14356257021427155, 0.0, 0.017982257530093193, 0.024830950424075127, + 0.4083334803581238, 1.0, 0.9965497851371765, 0.025011373683810234, 0.0, + 0.0, 0.03735947608947754, 0.045254629105329514, 0.0, 0.0, 0.0, + 0.029527584090828896, 0.05031108483672142, 0.024478532373905182, + 0.04216396063566208, 0.027267204597592354, 0.0, 0.0, + 0.006635167635977268, 0.6619638204574585, 0.0, 0.03142477944493294, + 0.9429519772529602, 0.0, 1.0, 0.0, 0.14623045921325684 + ], + [ + 0.02845108136534691, 0.01879383996129036, 0.0, 0.02377162128686905, + 0.7616464495658875, 0.8569005727767944, 0.4587562084197998, + 0.20076096057891846, 0.0, 0.07139129936695099, 0.7159180641174316, 0.0, + 0.0016730604693293571, 1.0, 0.27843064069747925, 0.0, + 0.05651974678039551, 0.0, 0.03842863440513611, 0.027051636949181557, + 0.13904020190238953, 0.015603624284267426, 0.059379834681749344, + 0.0040233563631772995, 0.1737273633480072, 0.2091461718082428, + 0.0218273364007473, 0.11507933586835861, 0.009117263369262218, 0.0, + 0.013194072060286999, 0.047776855528354645, 0.016233064234256744, + 0.04477500915527344, 0.3371051549911499, 0.0036929864436388016, + 0.1393403261899948, 0.0, 0.29461610317230225, 0.038181763142347336, + 0.04123494774103165, 0.0, 0.6579302549362183, 0.029767531901597977, 0.0, + 0.12264235317707062, 0.04347265884280205, 0.13758297264575958, + 0.14623045921325684, 0.0 + ] + ], + "distances": [ + [ + 0.0, 11.841742515563965, 0.0, 25.575754165649414, 26.5922794342041, 0.0, + 0.0, 21.584726333618164, 0.0, 21.522159576416016, 24.50599479675293, + 0.0, 19.954078674316406, 27.668638229370117, 23.83770751953125, + 28.705495834350586, 18.19253921508789, 0.0, 18.272863388061523, 0.0, + 18.86969757080078, 0.0, 12.387910842895508, 0.0, 0.0, 0.0, 0.0, + 23.632966995239258, 20.376466751098633, 28.639057159423828, 0.0, + 14.77270793914795, 22.8934268951416, 12.933866500854492, + 21.713876724243164, 0.0, 18.14444351196289, 0.0, 21.577136993408203, + 17.818788528442383, 9.174179077148438, 0.0, 28.039947509765625, + 14.964703559875488, 0.0, 0.0, 7.386411190032959, 0.0, 0.0, + 26.543210983276367 + ], + [ + 11.841742515563965, 0.0, 0.0, 18.39360809326172, 22.41675567626953, + 27.905797958374023, 29.789812088012695, 15.86705493927002, 0.0, + 16.87361717224121, 20.320819854736328, 0.0, 17.48895263671875, + 26.41022300720215, 19.145023345947266, 0.0, 16.68304443359375, 0.0, + 15.184922218322754, 0.0, 14.965434074401855, 0.0, 8.362726211547852, + 0.0, 0.0, 0.0, 0.0, 20.943073272705078, 17.25257110595703, 0.0, 0.0, + 9.512584686279297, 18.512401580810547, 9.532123565673828, + 16.45428466796875, 0.0, 12.801383018493652, 0.0, 17.155576705932617, + 10.312067031860352, 8.066375732421875, 0.0, 26.842615127563477, + 8.581048011779785, 0.0, 0.0, 10.049700736999512, 0.0, 0.0, + 24.944826126098633 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.272077560424805, + 8.959126472473145, 26.92724609375, 0.0, 15.520157814025879, 0.0, 0.0, + 0.0, 14.904732704162598, 25.456741333007812, 14.332350730895996, + 26.567462921142578, 18.94173240661621, 0.0, 15.45830249786377, + 25.991025924682617, 15.880537033081055, 0.0, 25.553319931030273, + 13.671289443969727, 0.0, 0.0, 8.791681289672852, 9.178433418273926, 0.0, + 0.0, 27.222187042236328, 27.219879150390625, 11.020044326782227, + 27.386669158935547, 8.646172523498535, 27.410419464111328, 0.0, 0.0, + 12.937019348144531, 26.793676376342773, 0.0, 17.111501693725586, + 22.48028564453125, 26.80698585510254, 24.585256576538086, + 24.925153732299805, 0.0 + ], + [ + 25.575754165649414, 18.39360809326172, 0.0, 0.0, 23.93433380126953, + 30.423381805419922, 33.81314468383789, 19.774263381958008, 0.0, + 16.873737335205078, 21.371620178222656, 0.0, 23.651315689086914, + 27.84285545349121, 22.48917579650879, 0.0, 16.886281967163086, 0.0, + 18.377145767211914, 0.0, 19.06535530090332, 0.0, 20.5152587890625, 0.0, + 0.0, 0.0, 0.0, 16.94776725769043, 11.832130432128906, 0.0, 0.0, + 18.366050720214844, 10.193150520324707, 18.850852966308594, + 21.577425003051758, 0.0, 18.260656356811523, 0.0, 22.344873428344727, + 15.555337905883789, 20.862171173095703, 0.0, 30.06561851501465, + 15.541553497314453, 0.0, 0.0, 23.646543502807617, 0.0, 0.0, + 27.383569717407227 + ], + [ + 0.0, 22.41675567626953, 0.0, 23.93433380126953, 0.0, 17.14774513244629, + 23.339906692504883, 11.439709663391113, 0.0, 16.16867446899414, + 6.3137383460998535, 0.0, 25.90582275390625, 13.001898765563965, + 8.847344398498535, 0.0, 22.10747528076172, 0.0, 20.81744384765625, 0.0, + 14.416056632995605, 0.0, 17.785186767578125, 0.0, 0.0, + 25.71173858642578, 0.0, 20.147430419921875, 23.998018264770508, 0.0, + 0.0, 17.55746078491211, 0.0, 18.90981101989746, 8.653603553771973, 0.0, + 12.779629707336426, 0.0, 9.367767333984375, 18.073688507080078, + 21.82021713256836, 0.0, 18.508312225341797, 20.21580696105957, 0.0, 0.0, + 22.206838607788086, 0.0, 26.42830467224121, 9.929121971130371 + ], + [ + 0.0, 0.0, 0.0, 0.0, 17.14774513244629, 0.0, 20.663755416870117, + 21.28659439086914, 0.0, 24.661928176879883, 16.75774383544922, 0.0, 0.0, + 9.386866569519043, 20.43825340270996, 0.0, 25.75457191467285, 0.0, + 26.65032196044922, 0.0, 22.730609893798828, 0.0, 23.890247344970703, + 26.209836959838867, 15.846673965454102, 13.631954193115234, 0.0, + 24.1484375, 0.0, 0.0, 0.0, 25.81674575805664, 0.0, 25.29048728942871, + 19.454357147216797, 0.0, 21.575023651123047, 0.0, 20.288042068481445, + 26.163005828857422, 25.767574310302734, 0.0, 8.234492301940918, + 27.43256378173828, 0.0, 17.711267471313477, 26.479703903198242, + 16.807392120361328, 15.045551300048828, 10.129721641540527 + ], + [ + 0.0, 0.0, 0.0, 0.0, 23.339906692504883, 20.663755416870117, 0.0, + 25.41443634033203, 0.0, 27.544477462768555, 23.533872604370117, + 27.248645782470703, 0.0, 18.16692543029785, 25.01340675354004, + 25.46689224243164, 27.350263595581055, 25.50476837158203, + 26.76401710510254, 21.2636661529541, 26.48537826538086, + 25.867658615112305, 26.049842834472656, 26.766658782958984, + 21.670045852661133, 21.046499252319336, 0.0, 26.912368774414062, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 24.084848403930664, 0.0, 26.158565521240234, + 0.0, 24.95769500732422, 0.0, 0.0, 0.0, 18.01994514465332, 0.0, + 22.570119857788086, 22.5948429107666, 0.0, 21.061100006103516, + 21.21843719482422, 19.986597061157227 + ], + [ + 21.584726333618164, 15.86705493927002, 0.0, 19.774263381958008, + 11.439709663391113, 21.28659439086914, 25.41443634033203, 0.0, 0.0, + 11.398085594177246, 10.338313102722168, 0.0, 21.070642471313477, + 18.308788299560547, 10.306557655334473, 0.0, 17.908573150634766, 0.0, + 15.513333320617676, 0.0, 12.511063575744629, 0.0, 11.695963859558105, + 0.0, 0.0, 0.0, 0.0, 17.393728256225586, 18.585079193115234, 0.0, 0.0, + 12.000619888305664, 21.340362548828125, 13.03998851776123, + 7.081986427307129, 0.0, 9.188315391540527, 0.0, 7.527616024017334, + 11.808168411254883, 17.237722396850586, 0.0, 21.405078887939453, + 14.14988899230957, 0.0, 0.0, 16.80801010131836, 0.0, 0.0, + 15.688509941101074 + ], + [ + 0.0, 0.0, 8.959126472473145, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 29.015464782714844, 0.0, 15.3131742477417, 0.0, 29.265594482421875, 0.0, + 15.74586296081543, 26.92299461364746, 15.27924633026123, + 27.763811111450195, 20.627246856689453, 29.178604125976562, + 15.535255432128906, 26.9542179107666, 18.55300521850586, 0.0, + 27.81391716003418, 14.888333320617676, 0.0, 28.971181869506836, + 6.242516040802002, 8.540630340576172, 0.0, 0.0, 28.790910720825195, 0.0, + 10.86579418182373, 28.869129180908203, 6.444328308105469, 0.0, 0.0, 0.0, + 13.290156364440918, 28.319580078125, 0.0, 18.338748931884766, + 25.029436111450195, 28.193378448486328, 27.002717971801758, + 27.04414176940918, 0.0 + ], + [ + 21.522159576416016, 16.87361717224121, 26.92724609375, + 16.873737335205078, 16.16867446899414, 24.661928176879883, 0.0, + 11.398085594177246, 0.0, 0.0, 14.077274322509766, 0.0, + 18.328866958618164, 20.175033569335938, 13.471602439880371, 0.0, + 14.571131706237793, 0.0, 13.80231761932373, 0.0, 14.23182201385498, 0.0, + 14.800655364990234, 0.0, 0.0, 0.0, 0.0, 18.129140853881836, + 14.557238578796387, 0.0, 0.0, 13.770587921142578, 17.808635711669922, + 13.891715049743652, 14.43429183959961, 0.0, 13.67565631866455, 0.0, + 12.059660911560059, 12.917444229125977, 17.970678329467773, 0.0, + 24.06703758239746, 14.021885871887207, 0.0, 0.0, 17.508007049560547, + 0.0, 0.0, 19.55390167236328 + ], + [ + 24.50599479675293, 20.320819854736328, 0.0, 21.371620178222656, + 6.3137383460998535, 16.75774383544922, 23.533872604370117, + 10.338313102722168, 0.0, 14.077274322509766, 0.0, 0.0, + 24.36695671081543, 13.255620956420898, 10.698432922363281, 0.0, + 19.828022003173828, 0.0, 18.82060432434082, 0.0, 13.405244827270508, + 0.0, 15.990229606628418, 0.0, 0.0, 0.0, 0.0, 18.24299430847168, + 21.30812644958496, 0.0, 0.0, 15.89069938659668, 23.856534957885742, + 17.02583122253418, 7.983645439147949, 0.0, 11.272122383117676, 0.0, + 8.697026252746582, 16.992618560791016, 19.394973754882812, 0.0, + 17.944425582885742, 18.1063289642334, 0.0, 0.0, 20.014461517333984, 0.0, + 0.0, 10.178216934204102 + ], + [ + 0.0, 0.0, 15.520157814025879, 0.0, 0.0, 0.0, 27.248645782470703, + 30.77423667907715, 15.3131742477417, 0.0, 0.0, 0.0, 0.0, + 31.172224044799805, 0.0, 13.151090621948242, 30.388940811157227, + 14.32891845703125, 30.328371047973633, 16.32915496826172, + 30.89883804321289, 12.548066139221191, 29.370214462280273, + 22.265287399291992, 0.0, 29.984500885009766, 15.73303508758545, 0.0, + 0.0, 15.36815357208252, 14.874740600585938, 0.0, 0.0, 30.74493408203125, + 30.92573356628418, 16.594627380371094, 0.0, 15.717658996582031, 0.0, + 0.0, 0.0, 20.651256561279297, 30.404273986816406, 0.0, + 13.480658531188965, 26.950096130371094, 30.657175064086914, + 28.161054611206055, 29.484880447387695, 0.0 + ], + [ + 19.954078674316406, 17.48895263671875, 31.090856552124023, + 23.651315689086914, 25.90582275390625, 29.266019821166992, 0.0, + 21.070642471313477, 0.0, 18.328866958618164, 24.36695671081543, 0.0, + 0.0, 27.562847137451172, 22.63819122314453, 0.0, 17.878503799438477, + 0.0, 15.578065872192383, 0.0, 22.62809181213379, 0.0, + 18.453950881958008, 0.0, 0.0, 0.0, 0.0, 25.688474655151367, + 20.534679412841797, 0.0, 0.0, 16.356908798217773, 20.086559295654297, + 18.396076202392578, 22.773439407348633, 0.0, 21.176088333129883, 0.0, + 22.715187072753906, 18.17814064025879, 16.00956916809082, 0.0, + 29.222082138061523, 18.469263076782227, 0.0, 0.0, 16.96192169189453, + 0.0, 0.0, 26.796964645385742 + ], + [ + 0.0, 0.0, 0.0, 0.0, 13.001898765563965, 9.386866569519043, + 18.16692543029785, 18.308788299560547, 0.0, 20.175033569335938, + 13.255620956420898, 0.0, 0.0, 0.0, 16.40083122253418, 0.0, + 22.64487648010254, 0.0, 23.064775466918945, 0.0, 20.293790817260742, + 0.0, 21.804471969604492, 0.0, 16.85399627685547, 16.073898315429688, + 0.0, 21.365276336669922, 25.300935745239258, 0.0, 0.0, + 22.98442268371582, 0.0, 23.33116912841797, 17.104536056518555, 0.0, + 19.18198585510254, 0.0, 16.585237503051758, 23.339204788208008, + 24.711483001708984, 0.0, 9.803439140319824, 25.04384422302246, 0.0, + 19.943622589111328, 24.820878982543945, 18.670167922973633, + 16.89549446105957, 7.489864349365234 + ], + [ + 23.83770751953125, 19.145023345947266, 0.0, 22.48917579650879, + 8.847344398498535, 20.43825340270996, 25.01340675354004, + 10.306557655334473, 0.0, 13.471602439880371, 10.698432922363281, 0.0, + 22.63819122314453, 16.40083122253418, 0.0, 0.0, 20.355680465698242, 0.0, + 18.317644119262695, 0.0, 14.550969123840332, 0.0, 14.820643424987793, + 0.0, 0.0, 0.0, 0.0, 19.977676391601562, 21.604494094848633, 0.0, 0.0, + 15.085597038269043, 24.718629837036133, 16.79316520690918, + 9.392834663391113, 0.0, 12.88611888885498, 0.0, 8.194633483886719, + 14.171202659606934, 19.69568634033203, 0.0, 19.918331146240234, + 18.532695770263672, 0.0, 0.0, 19.1842041015625, 0.0, 0.0, + 14.902077674865723 + ], + [ + 0.0, 0.0, 14.904732704162598, 0.0, 0.0, 0.0, 25.46689224243164, 0.0, + 15.74586296081543, 0.0, 0.0, 13.151090621948242, 0.0, 0.0, 0.0, 0.0, + 27.515544891357422, 10.534361839294434, 26.4630126953125, + 15.649879455566406, 26.987916946411133, 6.747211456298828, + 26.254722595214844, 21.541873931884766, 0.0, 28.058879852294922, + 7.198251247406006, 0.0, 0.0, 14.684475898742676, 14.43342399597168, 0.0, + 0.0, 27.083703994750977, 28.053075790405273, 17.933591842651367, + 27.79692840576172, 16.678321838378906, 0.0, 0.0, 0.0, 23.39799690246582, + 27.895349502563477, 28.687461853027344, 10.971292495727539, + 26.11214256286621, 27.56789207458496, 26.974319458007812, + 28.219951629638672, 0.0 + ], + [ + 18.19253921508789, 16.68304443359375, 25.456741333007812, + 16.886281967163086, 22.10747528076172, 25.75457191467285, 0.0, + 17.908573150634766, 0.0, 14.571131706237793, 19.828022003173828, 0.0, + 17.878503799438477, 22.64487648010254, 20.355680465698242, 0.0, 0.0, + 0.0, 12.92024040222168, 0.0, 17.70273208618164, 0.0, 16.242393493652344, + 0.0, 0.0, 0.0, 0.0, 12.644262313842773, 10.082358360290527, 0.0, 0.0, + 14.926234245300293, 12.367650985717773, 16.400760650634766, + 19.418668746948242, 0.0, 16.169036865234375, 0.0, 19.993009567260742, + 15.6044282913208, 16.873130798339844, 0.0, 24.58400535583496, + 14.46839427947998, 0.0, 0.0, 17.388660430908203, 0.0, 0.0, + 22.319358825683594 + ], + [ + 0.0, 0.0, 14.332350730895996, 0.0, 0.0, 0.0, 25.50476837158203, + 29.47075653076172, 15.27924633026123, 0.0, 0.0, 14.32891845703125, 0.0, + 0.0, 0.0, 10.534361839294434, 27.932390213012695, 0.0, + 27.997034072875977, 13.686853408813477, 29.647924423217773, + 9.948234558105469, 27.86887550354004, 18.85483169555664, 0.0, + 27.583091735839844, 11.429817199707031, 0.0, 0.0, 15.661386489868164, + 16.001007080078125, 0.0, 0.0, 29.82857894897461, 29.35761260986328, + 16.378297805786133, 29.74982261657715, 16.49815559387207, 0.0, 0.0, 0.0, + 22.990482330322266, 28.486812591552734, 0.0, 10.800091743469238, + 25.290096282958984, 28.803804397583008, 25.869556427001953, + 27.350364685058594, 0.0 + ], + [ + 18.272863388061523, 15.184922218322754, 0.0, 18.377145767211914, + 20.81744384765625, 0.0, 0.0, 15.513333320617676, 0.0, 13.80231761932373, + 18.82060432434082, 0.0, 15.578065872192383, 23.064775466918945, + 18.317644119262695, 0.0, 12.92024040222168, 0.0, 0.0, 0.0, + 15.16944408416748, 0.0, 13.402227401733398, 0.0, 0.0, 0.0, 0.0, + 17.448537826538086, 13.21926212310791, 26.271039962768555, + 25.931936264038086, 12.416778564453125, 16.643022537231445, + 13.639602661132812, 16.683427810668945, 0.0, 14.458999633789062, 0.0, + 17.398866653442383, 12.469990730285645, 16.154481887817383, 0.0, + 24.467233657836914, 12.985950469970703, 0.0, 0.0, 15.653338432312012, + 0.0, 0.0, 21.743715286254883 + ], + [ + 0.0, 0.0, 18.94173240661621, 0.0, 0.0, 0.0, 21.2636661529541, 0.0, + 20.627246856689453, 0.0, 0.0, 16.32915496826172, 0.0, 28.25935935974121, + 0.0, 15.649879455566406, 29.535327911376953, 13.686853408813477, + 28.382671356201172, 0.0, 29.83721160888672, 16.110986709594727, + 29.00091552734375, 14.923872947692871, 27.694480895996094, + 23.951223373413086, 19.03630828857422, 0.0, 0.0, 19.49253273010254, + 20.119897842407227, 0.0, 0.0, 0.0, 29.79174041748047, + 17.334413528442383, 0.0, 19.84815216064453, 0.0, 0.0, 0.0, + 27.417333602905273, 26.225597381591797, 0.0, 9.80330753326416, + 20.40953826904297, 29.779157638549805, 20.629201889038086, + 22.673404693603516, 29.184240341186523 + ], + [ + 18.86969757080078, 14.965434074401855, 0.0, 19.06535530090332, + 14.416056632995605, 22.730609893798828, 26.48537826538086, + 12.511063575744629, 0.0, 14.23182201385498, 13.405244827270508, 0.0, + 22.62809181213379, 20.293790817260742, 14.550969123840332, 0.0, + 17.70273208618164, 0.0, 15.16944408416748, 0.0, 0.0, 0.0, + 12.003474235534668, 0.0, 0.0, 0.0, 0.0, 17.64358901977539, + 17.859251022338867, 0.0, 0.0, 11.192198753356934, 20.30571174621582, + 9.2295503616333, 10.781560897827148, 0.0, 8.401337623596191, 0.0, + 10.958454132080078, 11.37879753112793, 14.97037410736084, 0.0, + 22.530305862426758, 10.424909591674805, 0.0, 0.0, 15.97979736328125, + 0.0, 0.0, 17.140729904174805 + ], + [ + 0.0, 0.0, 15.45830249786377, 0.0, 0.0, 0.0, 25.867658615112305, 0.0, + 15.535255432128906, 0.0, 0.0, 12.548066139221191, 0.0, 0.0, 0.0, + 6.747211456298828, 29.08544158935547, 9.948234558105469, + 28.44058609008789, 16.110986709594727, 29.64913558959961, 0.0, + 28.337499618530273, 22.868576049804688, 0.0, 29.679330825805664, + 9.380888938903809, 0.0, 0.0, 15.034929275512695, 14.967503547668457, + 0.0, 0.0, 29.580230712890625, 29.981260299682617, 18.013078689575195, + 30.019468307495117, 16.986461639404297, 0.0, 0.0, 0.0, + 22.594085693359375, 29.34903907775879, 0.0, 10.222503662109375, + 27.591480255126953, 29.564659118652344, 28.688262939453125, + 29.540925979614258, 30.345735549926758 + ], + [ + 12.387910842895508, 8.362726211547852, 25.991025924682617, + 20.5152587890625, 17.785186767578125, 23.890247344970703, 0.0, + 11.695963859558105, 0.0, 14.800655364990234, 15.990229606628418, 0.0, + 18.453950881958008, 21.804471969604492, 14.820643424987793, 0.0, + 16.242393493652344, 0.0, 13.402227401733398, 0.0, 12.003474235534668, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.848854064941406, 17.220561981201172, + 0.0, 0.0, 7.616921424865723, 19.997650146484375, 7.872353553771973, + 11.788884162902832, 0.0, 8.9190673828125, 0.0, 12.446974754333496, + 10.059998512268066, 8.924964904785156, 0.0, 22.683238983154297, + 10.348535537719727, 0.0, 0.0, 7.84568452835083, 0.0, 0.0, + 19.858041763305664 + ], + [ + 0.0, 0.0, 15.880537033081055, 0.0, 0.0, 26.209836959838867, + 26.766658782958984, 27.588611602783203, 18.55300521850586, 0.0, 0.0, + 22.265287399291992, 0.0, 25.553428649902344, 0.0, 21.541873931884766, + 26.5660343170166, 18.85483169555664, 26.860607147216797, + 14.923872947692871, 0.0, 22.868576049804688, 26.725616455078125, 0.0, + 24.043075561523438, 19.685148239135742, 21.67279624938965, 0.0, 0.0, + 17.976470947265625, 18.894887924194336, 0.0, 0.0, 0.0, + 27.52259635925293, 14.233865737915039, 0.0, 17.086261749267578, 0.0, + 0.0, 0.0, 23.183412551879883, 23.165245056152344, 0.0, + 19.327444076538086, 15.540203094482422, 0.0, 15.651958465576172, + 17.00887107849121, 26.73052978515625 + ], + [ + 0.0, 0.0, 30.768207550048828, 0.0, 27.76019287109375, + 15.846673965454102, 21.670045852661133, 30.744667053222656, 0.0, + 31.370466232299805, 27.0637149810791, 0.0, 0.0, 16.85399627685547, + 29.31717872619629, 0.0, 30.343067169189453, 0.0, 30.92551040649414, + 27.694480895996094, 31.156627655029297, 0.0, 30.663528442382812, + 24.043075561523438, 0.0, 12.0450439453125, 0.0, 30.649866104125977, 0.0, + 31.92597198486328, 31.638498306274414, 0.0, 0.0, 0.0, + 29.208810806274414, 30.2485294342041, 30.160308837890625, + 31.777244567871094, 29.33639144897461, 0.0, 0.0, 0.0, 13.16067886352539, + 0.0, 0.0, 13.614568710327148, 0.0, 13.009839057922363, + 9.670613288879395, 21.3555965423584 + ], + [ + 0.0, 0.0, 25.553319931030273, 0.0, 25.71173858642578, + 13.631954193115234, 21.046499252319336, 27.67761993408203, + 27.81391716003418, 0.0, 24.707290649414062, 0.0, 0.0, + 16.073898315429688, 0.0, 0.0, 27.481197357177734, 27.583091735839844, + 0.0, 23.951223373413086, 27.610595703125, 0.0, 27.726839065551758, + 19.685148239135742, 12.0450439453125, 0.0, 27.882232666015625, + 26.733224868774414, 0.0, 27.391395568847656, 26.472612380981445, 0.0, + 0.0, 0.0, 26.312223434448242, 25.97857666015625, 27.093095779418945, + 26.673616409301758, 27.052886962890625, 0.0, 0.0, 0.0, + 12.872980117797852, 0.0, 0.0, 9.083687782287598, 0.0, + 7.5655436515808105, 7.719798564910889, 18.243349075317383 + ], + [ + 0.0, 0.0, 13.671289443969727, 0.0, 0.0, 0.0, 28.257572174072266, 0.0, + 14.888333320617676, 0.0, 0.0, 15.73303508758545, 0.0, 0.0, 0.0, + 7.198251247406006, 27.918758392333984, 11.429817199707031, + 27.451906204223633, 19.03630828857422, 27.849353790283203, + 9.380888938903809, 27.29996109008789, 21.67279624938965, 0.0, + 27.882232666015625, 0.0, 0.0, 0.0, 13.509803771972656, + 13.224605560302734, 0.0, 0.0, 27.944719314575195, 29.000883102416992, + 17.94547462463379, 28.404998779296875, 16.11725616455078, 0.0, 0.0, 0.0, + 22.260059356689453, 28.176668167114258, 0.0, 15.150701522827148, + 26.243478775024414, 28.40951156616211, 27.270313262939453, + 28.16884994506836, 28.94303321838379 + ], + [ + 23.632966995239258, 20.943073272705078, 0.0, 16.94776725769043, + 20.147430419921875, 24.1484375, 0.0, 17.393728256225586, 0.0, + 18.129140853881836, 18.24299430847168, 0.0, 25.688474655151367, + 21.365276336669922, 19.977676391601562, 0.0, 12.644262313842773, 0.0, + 17.448537826538086, 0.0, 17.64358901977539, 0.0, 18.848854064941406, + 0.0, 0.0, 0.0, 0.0, 0.0, 12.529895782470703, 0.0, 0.0, + 17.69622802734375, 16.130569458007812, 19.50243377685547, + 18.37009048461914, 0.0, 16.78864860534668, 0.0, 19.869470596313477, + 17.78464126586914, 21.757232666015625, 0.0, 23.1160945892334, + 18.128250122070312, 0.0, 0.0, 22.239892959594727, 26.00428009033203, + 0.0, 20.40435791015625 + ], + [ + 20.376466751098633, 17.25257110595703, 0.0, 11.832130432128906, + 23.998018264770508, 0.0, 0.0, 18.585079193115234, 0.0, + 14.557238578796387, 21.30812644958496, 0.0, 20.534679412841797, + 25.300935745239258, 21.604494094848633, 0.0, 10.082358360290527, 0.0, + 13.21926212310791, 0.0, 17.859251022338867, 0.0, 17.220561981201172, + 0.0, 0.0, 0.0, 0.0, 12.529895782470703, 0.0, 27.460222244262695, + 27.60871124267578, 15.855412483215332, 9.575450897216797, + 16.250343322753906, 20.970577239990234, 0.0, 17.541555404663086, 0.0, + 21.163545608520508, 14.525674819946289, 18.56254005432129, 0.0, + 26.859542846679688, 14.269586563110352, 0.0, 0.0, 19.001829147338867, + 0.0, 0.0, 25.227272033691406 + ], + [ + 0.0, 0.0, 8.791681289672852, 0.0, 0.0, 0.0, 0.0, 0.0, 6.242516040802002, + 27.78093719482422, 0.0, 15.36815357208252, 0.0, 0.0, 0.0, + 14.684475898742676, 25.865949630737305, 15.661386489868164, + 26.271039962768555, 19.49253273010254, 27.499526977539062, + 15.034929275512695, 26.300106048583984, 17.976470947265625, 0.0, + 27.391395568847656, 13.509803771972656, 0.0, 27.460222244262695, 0.0, + 6.3355841636657715, 0.0, 0.0, 27.224790573120117, 0.0, + 10.22851848602295, 27.718778610229492, 7.2486348152160645, 0.0, 0.0, + 0.0, 14.79039478302002, 28.007959365844727, 27.862394332885742, + 17.18183135986328, 24.618661880493164, 27.425064086914062, + 26.350326538085938, 26.611804962158203, 0.0 + ], + [ + 0.0, 0.0, 9.178433418273926, 0.0, 0.0, 0.0, 0.0, 0.0, 8.540630340576172, + 0.0, 0.0, 14.874740600585938, 0.0, 0.0, 0.0, 14.43342399597168, + 25.872955322265625, 16.001007080078125, 25.931936264038086, + 20.119897842407227, 27.054006576538086, 14.967503547668457, + 26.10399627685547, 18.894887924194336, 0.0, 26.472612380981445, + 13.224605560302734, 0.0, 27.60871124267578, 6.3355841636657715, 0.0, + 0.0, 0.0, 27.367406845092773, 27.210559844970703, 11.053003311157227, + 26.95148277282715, 7.429931640625, 0.0, 0.0, 0.0, 15.515692710876465, + 27.344242095947266, 0.0, 17.76783561706543, 24.428462982177734, + 27.452381134033203, 25.500411987304688, 26.389598846435547, + 27.42197608947754 + ], + [ + 14.77270793914795, 9.512584686279297, 0.0, 18.366050720214844, + 17.55746078491211, 25.81674575805664, 0.0, 12.000619888305664, 0.0, + 13.770587921142578, 15.89069938659668, 0.0, 16.356908798217773, + 22.98442268371582, 15.085597038269043, 0.0, 14.926234245300293, 0.0, + 12.416778564453125, 0.0, 11.192198753356934, 0.0, 7.616921424865723, + 0.0, 0.0, 0.0, 0.0, 17.69622802734375, 15.855412483215332, 0.0, + 28.11699867248535, 0.0, 17.678913116455078, 8.598676681518555, + 12.473284721374512, 0.0, 8.729635238647461, 0.0, 13.171012878417969, + 8.561929702758789, 10.150224685668945, 0.0, 25.472837448120117, + 8.304917335510254, 0.0, 0.0, 11.330039024353027, 0.0, 0.0, + 20.873367309570312 + ], + [ + 22.8934268951416, 18.512401580810547, 31.553802490234375, + 10.193150520324707, 26.503602981567383, 30.90642738342285, 0.0, + 21.340362548828125, 0.0, 17.808635711669922, 23.856534957885742, 0.0, + 20.086559295654297, 28.582191467285156, 24.718629837036133, 0.0, + 12.367650985717773, 0.0, 16.643022537231445, 0.0, 20.30571174621582, + 0.0, 19.997650146484375, 0.0, 0.0, 0.0, 0.0, 16.130569458007812, + 9.575450897216797, 0.0, 0.0, 17.678913116455078, 0.0, + 18.680797576904297, 23.44626235961914, 0.0, 19.07398223876953, 0.0, + 24.15810775756836, 16.510692596435547, 19.411937713623047, 0.0, + 30.47650146484375, 15.212651252746582, 0.0, 0.0, 21.748310089111328, + 0.0, 0.0, 28.143146514892578 + ], + [ + 12.933866500854492, 9.532123565673828, 0.0, 18.850852966308594, + 18.90981101989746, 25.29048728942871, 0.0, 13.03998851776123, 0.0, + 13.891715049743652, 17.02583122253418, 0.0, 18.396076202392578, + 23.33116912841797, 16.79316520690918, 27.083703994750977, + 16.400760650634766, 0.0, 13.639602661132812, 0.0, 9.2295503616333, 0.0, + 7.872353553771973, 0.0, 0.0, 0.0, 0.0, 19.50243377685547, + 16.250343322753906, 0.0, 0.0, 8.598676681518555, 18.680797576904297, + 0.0, 13.788285255432129, 0.0, 9.312504768371582, 0.0, + 13.413326263427734, 8.870146751403809, 9.736791610717773, 0.0, + 24.645896911621094, 7.301033973693848, 0.0, 0.0, 10.061497688293457, + 0.0, 0.0, 21.198835372924805 + ], + [ + 21.713876724243164, 16.45428466796875, 0.0, 21.577425003051758, + 8.653603553771973, 19.454357147216797, 24.084848403930664, + 7.081986427307129, 0.0, 14.43429183959961, 7.983645439147949, 0.0, + 22.773439407348633, 17.104536056518555, 9.392834663391113, 0.0, + 19.418668746948242, 0.0, 16.683427810668945, 0.0, 10.781560897827148, + 0.0, 11.788884162902832, 0.0, 0.0, 0.0, 0.0, 18.37009048461914, + 20.970577239990234, 0.0, 0.0, 12.473284721374512, 23.44626235961914, + 13.788285255432129, 0.0, 0.0, 7.870365142822266, 0.0, 6.521415710449219, + 13.39702033996582, 16.88896942138672, 0.0, 19.634233474731445, + 14.773120880126953, 0.0, 0.0, 16.933828353881836, 0.0, 0.0, + 13.2129545211792 + ], + [ + 0.0, 0.0, 11.020044326782227, 0.0, 0.0, 0.0, 0.0, 29.022598266601562, + 10.86579418182373, 0.0, 0.0, 16.594627380371094, 0.0, 28.75570297241211, + 0.0, 17.933591842651367, 27.504770278930664, 16.378297805786133, + 28.161222457885742, 17.334413528442383, 29.10832977294922, + 18.013078689575195, 27.82636070251465, 14.233865737915039, 0.0, + 25.97857666015625, 17.94547462463379, 0.0, 0.0, 10.22851848602295, + 11.053003311157227, 0.0, 0.0, 0.0, 28.596677780151367, 0.0, + 28.819011688232422, 9.354715347290039, 0.0, 0.0, 0.0, + 15.485487937927246, 27.36327362060547, 0.0, 17.70893096923828, + 21.594165802001953, 28.99379539489746, 23.675365447998047, + 24.85232925415039, 28.925830841064453 + ], + [ + 18.14444351196289, 12.801383018493652, 0.0, 18.260656356811523, + 12.779629707336426, 21.575023651123047, 26.158565521240234, + 9.188315391540527, 0.0, 13.67565631866455, 11.272122383117676, 0.0, + 21.176088333129883, 19.18198585510254, 12.88611888885498, 0.0, + 16.169036865234375, 0.0, 14.458999633789062, 0.0, 8.401337623596191, + 0.0, 8.9190673828125, 0.0, 0.0, 0.0, 0.0, 16.78864860534668, + 17.541555404663086, 0.0, 0.0, 8.729635238647461, 19.07398223876953, + 9.312504768371582, 7.870365142822266, 0.0, 0.0, 0.0, 9.980406761169434, + 9.852017402648926, 13.488080024719238, 0.0, 21.61799430847168, + 9.800171852111816, 0.0, 0.0, 14.623208045959473, 0.0, 0.0, + 16.254663467407227 + ], + [ + 0.0, 0.0, 8.646172523498535, 0.0, 0.0, 0.0, 0.0, 28.185129165649414, + 6.444328308105469, 0.0, 0.0, 15.717658996582031, 0.0, 0.0, 0.0, + 16.678321838378906, 26.20205307006836, 16.49815559387207, + 26.588436126708984, 19.84815216064453, 27.889968872070312, + 16.986461639404297, 26.30881118774414, 17.086261749267578, 0.0, + 26.673616409301758, 16.11725616455078, 0.0, 0.0, 7.2486348152160645, + 7.429931640625, 0.0, 0.0, 27.682321548461914, 28.10968780517578, + 9.354715347290039, 27.538909912109375, 0.0, 0.0, 0.0, 0.0, + 13.745445251464844, 28.122087478637695, 28.147428512573242, + 18.76658821105957, 23.719446182250977, 27.355411529541016, + 25.500869750976562, 26.256010055541992, 0.0 + ], + [ + 21.577136993408203, 17.155576705932617, 0.0, 22.344873428344727, + 9.367767333984375, 20.288042068481445, 24.95769500732422, + 7.527616024017334, 0.0, 12.059660911560059, 8.697026252746582, 0.0, + 22.715187072753906, 16.585237503051758, 8.194633483886719, 0.0, + 19.993009567260742, 0.0, 17.398866653442383, 0.0, 10.958454132080078, + 0.0, 12.446974754333496, 0.0, 0.0, 0.0, 0.0, 19.869470596313477, + 21.163545608520508, 0.0, 0.0, 13.171012878417969, 24.15810775756836, + 13.413326263427734, 6.521415710449219, 0.0, 9.980406761169434, 0.0, 0.0, + 13.400921821594238, 17.45803451538086, 0.0, 19.980045318603516, + 15.52830696105957, 0.0, 0.0, 16.8564395904541, 0.0, 0.0, + 14.054388999938965 + ], + [ + 17.818788528442383, 10.312067031860352, 0.0, 15.555337905883789, + 18.073688507080078, 26.163005828857422, 0.0, 11.808168411254883, 0.0, + 12.917444229125977, 16.992618560791016, 0.0, 18.17814064025879, + 23.339204788208008, 14.171202659606934, 0.0, 15.6044282913208, 0.0, + 12.469990730285645, 0.0, 11.37879753112793, 0.0, 10.059998512268066, + 0.0, 0.0, 0.0, 0.0, 17.78464126586914, 14.525674819946289, 0.0, + 28.279659271240234, 8.561929702758789, 16.510692596435547, + 8.870146751403809, 13.39702033996582, 0.0, 9.852017402648926, 0.0, + 13.400921821594238, 0.0, 13.957963943481445, 0.0, 24.667980194091797, + 8.35623836517334, 0.0, 0.0, 14.8192777633667, 0.0, 0.0, + 21.862390518188477 + ], + [ + 9.174179077148438, 8.066375732421875, 0.0, 20.862171173095703, + 21.82021713256836, 25.767574310302734, 28.762474060058594, + 17.237722396850586, 0.0, 17.970678329467773, 19.394973754882812, 0.0, + 16.00956916809082, 24.711483001708984, 19.69568634033203, 0.0, + 16.873130798339844, 0.0, 16.154481887817383, 0.0, 14.97037410736084, + 0.0, 8.924964904785156, 0.0, 0.0, 0.0, 0.0, 21.757232666015625, + 18.56254005432129, 0.0, 0.0, 10.150224685668945, 19.411937713623047, + 9.736791610717773, 16.88896942138672, 0.0, 13.488080024719238, 0.0, + 17.45803451538086, 13.957963943481445, 0.0, 0.0, 25.757652282714844, + 11.145041465759277, 0.0, 0.0, 6.433372974395752, 0.0, 0.0, + 23.095327377319336 + ], + [ + 0.0, 0.0, 12.937019348144531, 0.0, 0.0, 0.0, 0.0, 32.02213668823242, + 13.290156364440918, 31.701656341552734, 0.0, 20.651256561279297, 0.0, + 0.0, 0.0, 23.39799690246582, 30.604948043823242, 22.990482330322266, + 32.61885070800781, 27.417333602905273, 0.0, 22.594085693359375, + 31.036190032958984, 23.183412551879883, 0.0, 32.31216812133789, + 22.260059356689453, 0.0, 0.0, 14.79039478302002, 15.515692710876465, + 0.0, 0.0, 32.4578857421875, 32.19032287597656, 15.485487937927246, + 32.21105194091797, 13.745445251464844, 32.56065368652344, 0.0, 0.0, 0.0, + 32.442237854003906, 0.0, 24.121463775634766, 29.103710174560547, + 32.29210662841797, 31.628416061401367, 31.24018669128418, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 18.508312225341797, 8.234492301940918, + 18.01994514465332, 21.405078887939453, 0.0, 24.06703758239746, + 17.944425582885742, 0.0, 0.0, 9.803439140319824, 19.918331146240234, + 0.0, 24.58400535583496, 0.0, 24.467233657836914, 26.225597381591797, + 22.530305862426758, 0.0, 22.683238983154297, 23.165245056152344, + 13.16067886352539, 12.872980117797852, 0.0, 23.1160945892334, 0.0, 0.0, + 0.0, 25.472837448120117, 0.0, 24.645896911621094, 19.634233474731445, + 0.0, 21.61799430847168, 0.0, 19.980045318603516, 24.667980194091797, + 25.757652282714844, 0.0, 0.0, 0.0, 0.0, 15.549489974975586, + 25.59328842163086, 14.561328887939453, 12.062984466552734, + 11.851495742797852 + ], + [ + 14.964703559875488, 8.581048011779785, 0.0, 15.541553497314453, + 20.21580696105957, 27.43256378173828, 0.0, 14.14988899230957, 0.0, + 14.021885871887207, 18.1063289642334, 0.0, 18.469263076782227, + 25.04384422302246, 18.532695770263672, 0.0, 14.46839427947998, 0.0, + 12.985950469970703, 0.0, 10.424909591674805, 0.0, 10.348535537719727, + 0.0, 0.0, 0.0, 0.0, 18.128250122070312, 14.269586563110352, 0.0, + 27.72905731201172, 8.304917335510254, 15.212651252746582, + 7.301033973693848, 14.773120880126953, 0.0, 9.800171852111816, 0.0, + 15.52830696105957, 8.35623836517334, 11.145041465759277, 0.0, + 26.766433715820312, 0.0, 0.0, 0.0, 13.132034301757812, 0.0, 0.0, + 23.14950180053711 + ], + [ + 0.0, 0.0, 17.111501693725586, 0.0, 0.0, 0.0, 22.570119857788086, 0.0, + 18.338748931884766, 0.0, 0.0, 13.480658531188965, 0.0, + 29.853897094726562, 0.0, 10.971292495727539, 28.94818687438965, + 10.800091743469238, 28.431629180908203, 9.80330753326416, + 29.10155487060547, 10.222503662109375, 28.303447723388672, + 19.327444076538086, 0.0, 28.204858779907227, 15.150701522827148, 0.0, + 0.0, 17.18183135986328, 17.76783561706543, 0.0, 0.0, 29.76007843017578, + 29.451736450195312, 17.70893096923828, 0.0, 18.76658821105957, + 30.07659149169922, 0.0, 0.0, 24.121463775634766, 28.90131378173828, 0.0, + 0.0, 25.71030616760254, 29.438804626464844, 26.095460891723633, + 27.61362648010254, 0.0 + ], + [ + 0.0, 0.0, 22.48028564453125, 0.0, 0.0, 17.711267471313477, + 22.5948429107666, 0.0, 25.029436111450195, 0.0, 26.44026756286621, + 26.950096130371094, 0.0, 19.943622589111328, 0.0, 26.11214256286621, + 27.139240264892578, 25.290096282958984, 0.0, 20.40953826904297, 0.0, + 27.591480255126953, 27.42832374572754, 15.540203094482422, + 13.614568710327148, 9.083687782287598, 26.243478775024414, + 27.771352767944336, 0.0, 24.618661880493164, 24.428462982177734, 0.0, + 0.0, 0.0, 27.324060440063477, 21.594165802001953, 27.763118743896484, + 23.719446182250977, 0.0, 0.0, 0.0, 0.0, 15.549489974975586, 0.0, + 25.71030616760254, 0.0, 0.0, 7.464041233062744, 8.82171630859375, + 21.919408798217773 + ], + [ + 7.386411190032959, 10.049700736999512, 26.80698585510254, + 23.646543502807617, 22.206838607788086, 26.479703903198242, 0.0, + 16.80801010131836, 0.0, 17.508007049560547, 20.014461517333984, 0.0, + 16.96192169189453, 24.820878982543945, 19.1842041015625, 0.0, + 17.388660430908203, 0.0, 15.653338432312012, 0.0, 15.97979736328125, + 0.0, 7.84568452835083, 0.0, 0.0, 0.0, 0.0, 22.239892959594727, + 19.001829147338867, 0.0, 0.0, 11.330039024353027, 21.748310089111328, + 10.061497688293457, 16.933828353881836, 0.0, 14.623208045959473, 0.0, + 16.8564395904541, 14.8192777633667, 6.433372974395752, 0.0, + 25.59328842163086, 13.132034301757812, 0.0, 0.0, 0.0, 0.0, 0.0, + 23.102724075317383 + ], + [ + 0.0, 0.0, 24.585256576538086, 0.0, 26.601783752441406, + 16.807392120361328, 21.061100006103516, 0.0, 27.002717971801758, 0.0, + 25.43642234802246, 0.0, 0.0, 18.670167922973633, 0.0, + 26.974319458007812, 26.768606185913086, 25.869556427001953, + 27.159509658813477, 20.629201889038086, 27.21232795715332, 0.0, + 26.9671573638916, 15.651958465576172, 13.009839057922363, + 7.5655436515808105, 0.0, 26.00428009033203, 0.0, 26.350326538085938, + 25.500411987304688, 0.0, 0.0, 0.0, 26.0308895111084, 23.675365447998047, + 26.755544662475586, 25.500869750976562, 0.0, 0.0, 0.0, 0.0, + 14.561328887939453, 0.0, 26.095460891723633, 7.464041233062744, 0.0, + 0.0, 7.010155200958252, 20.6434326171875 + ], + [ + 0.0, 0.0, 24.925153732299805, 0.0, 26.42830467224121, + 15.045551300048828, 21.21843719482422, 27.299182891845703, + 27.04414176940918, 0.0, 25.237674713134766, 0.0, 0.0, 16.89549446105957, + 27.380207061767578, 0.0, 27.721466064453125, 27.350364685058594, + 27.775407791137695, 22.673404693603516, 0.0, 0.0, 27.322887420654297, + 17.00887107849121, 9.670613288879395, 7.719798564910889, 0.0, 0.0, 0.0, + 26.611804962158203, 26.389598846435547, 0.0, 0.0, 0.0, + 26.370729446411133, 24.85232925415039, 27.40145492553711, + 26.256010055541992, 26.808462142944336, 0.0, 0.0, 0.0, + 12.062984466552734, 0.0, 27.61362648010254, 8.82171630859375, 0.0, + 7.010155200958252, 0.0, 19.98741912841797 + ], + [ + 0.0, 24.944826126098633, 0.0, 0.0, 9.929121971130371, + 10.129721641540527, 19.986597061157227, 15.688509941101074, 0.0, + 19.55390167236328, 10.178216934204102, 0.0, 0.0, 7.489864349365234, + 14.902077674865723, 0.0, 22.319358825683594, 0.0, 21.743715286254883, + 0.0, 17.140729904174805, 0.0, 19.858041763305664, 0.0, 21.3555965423584, + 18.243349075317383, 0.0, 20.40435791015625, 0.0, 0.0, 0.0, + 20.873367309570312, 0.0, 21.198835372924805, 13.2129545211792, 0.0, + 16.254663467407227, 0.0, 14.054388999938965, 21.862390518188477, + 23.095327377319336, 0.0, 11.851495742797852, 23.14950180053711, 0.0, + 21.919408798217773, 23.102724075317383, 20.6434326171875, + 19.98741912841797, 0.0 + ] + ] + }, + "uns": { + "_scvi_manager_uuid": "124602c1-8c61-4701-9346-df5094bedb69", + "_scvi_uuid": "905e8908-2945-44e8-bb12-8c61680326d3", + "clusters_coarse_colors": [ + "#031A5C", + "#fa9fb5", + "#fdbf6f", + "#ff7f00", + "#b2df8a" + ], + "clusters_colors": [ + "#8fbc8f", + "#f4a460", + "#fdbf6f", + "#ff7f00", + "#b2df8a", + "#1f78b4", + "#cab2d6" + ], + "day_colors": ["#d62728"], + "leiden": { + "params": { + "n_iterations": -1, + "random_state": 0, + "resolution": 1 + } + }, + "log1p": {}, + "neighbors": { + "connectivities_key": "connectivities", + "distances_key": "distances", + "params": { + "method": "umap", + "metric": "euclidean", + "n_neighbors": 30, + "n_pcs": 30, + "random_state": 0 + } + }, + "pca": { + "variance": [ + 84.01986694335938, 56.145408630371094, 24.90276336669922, + 18.04616355895996, 13.804972648620605, 11.931583404541016, + 9.8485107421875, 5.831463813781738, 4.772082805633545, + 4.364034175872803, 3.9239556789398193, 3.422154426574707, + 2.7514822483062744, 2.407780647277832, 2.249235153198242, + 2.1247293949127197, 2.0673511028289795, 1.7702986001968384, + 1.7164644002914429, 1.5288208723068237, 1.4669604301452637, + 1.3977633714675903, 1.3417249917984009, 1.289847493171692, + 1.191311240196228, 1.1588010787963867, 1.1220303773880005, + 1.0877219438552856, 1.053589105606079, 0.9999560117721558, + 0.9759476780891418, 0.9631308317184448, 0.929368257522583, + 0.9144339561462402, 0.8905921578407288, 0.8624985814094543, + 0.8567582368850708, 0.8075109720230103, 0.793291449546814, + 0.7793740034103394, 0.7724183201789856, 0.7326804995536804, + 0.71897292137146, 0.6993304491043091, 0.6795463562011719, + 0.6704654693603516, 0.6361813545227051, 0.6305637359619141, + 0.6286348104476929, 0.6084895730018616 + ], + "variance_ratio": [ + 0.12779653072357178, 0.08539871126413345, 0.03787778690457344, + 0.027448710054159164, 0.02099774219095707, 0.018148265779018402, + 0.01497985515743494, 0.008869816549122334, 0.0072584692388772964, + 0.006637815851718187, 0.005968444515019655, 0.0052051907405257225, + 0.00418508006259799, 0.00366230052895844, 0.003421148518100381, + 0.003231771755963564, 0.003144497750326991, 0.0026926728896796703, + 0.0026107896119356155, 0.002325378591194749, 0.002231287071481347, + 0.0021260364446789026, 0.0020408006384968758, 0.0019618934020400047, + 0.0018120171735063195, 0.0017625682521611452, 0.0017066390719264746, + 0.0016544549725949764, 0.0016025379300117493, 0.0015209605917334557, + 0.001484443200752139, 0.0014649484073743224, 0.0014135946985334158, + 0.0013908791588619351, 0.0013546152040362358, 0.0013118840288370848, + 0.0013031528797000647, 0.001228246372193098, 0.001206618151627481, + 0.001185449305921793, 0.0011748694814741611, 0.0011144272284582257, + 0.0010935775935649872, 0.0010637008817866445, 0.0010336086852476, + 0.0010197963565587997, 0.0009676493355073035, 0.000959104741923511, + 0.0009561708429828286, 0.0009255293407477438 + ] + }, + "recover_dynamics": { + "fit_connected_states": true, + "use_raw": false + }, + "velocity_graph": [ + [ + 0.0, 0.22046132385730743, 0.0, 0.22046132385730743, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.450626403093338, 0.0, 0.0, 0.04093712940812111, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.3453138470649719, 0.450626403093338, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.3453138470649719, 0.22046132385730743, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9473719000816345, 0.9478896856307983, 0.0, 0.9478896856307983, + 0.9401094317436218, 0.55253005027771, 0.7027125954627991, + 0.9611698985099792, 0.0, 0.9677510857582092, 0.9386511445045471, 0.0, + 0.9562760591506958, 0.9311007857322693, 0.9429868459701538, + 0.8775137662887573, 0.9621375799179077, 0.0, 0.9652383923530579, 0.0, + 0.9617140293121338, 0.0, 0.9621375799179077, 0.025671426206827164, + 0.23905545473098755, 0.06676451861858368, 0.0, 0.9401094317436218, + 0.9570096731185913, 0.905114471912384, 0.2133932113647461, + 0.9497542977333069, 0.9562760591506958, 0.9808235168457031, + 0.9562790393829346, 0.0, 0.9745998978614807, 0.0, 0.9512403011322021, + 0.9497542977333069, 0.9478896856307983, 0.0, 0.9621375799179077, + 0.9517706632614136, 0.0, 0.05286373198032379, 0.9747084975242615, + 0.03281308338046074, 0.10565642267465591, 0.9415416717529297 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.8878284096717834, 0.8108709454536438, 0.0, 0.8108709454536438, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.952512800693512, 0.0, + 0.8020811080932617, 0.09297816455364227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8981965184211731, 0.018391815945506096, + 0.0, 0.8432539105415344, 0.952512800693512, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.8432539105415344, 0.8108709454536438, 0.0, 0.0, + 0.6447211503982544, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9646341800689697, 0.961211085319519, 0.0, 0.961211085319519, + 0.9666497707366943, 0.0, 0.1094990074634552, 0.9846523404121399, 0.0, + 0.9946197271347046, 0.9677785634994507, 0.0, 0.9736183285713196, + 0.9640065431594849, 0.9638437628746033, 0.8452783823013306, + 0.9201474189758301, 0.0, 0.9297657012939453, 0.0, 0.9633435010910034, + 0.0, 0.9201474189758301, 0.0, 0.0, 0.0, 0.0, 0.9666497707366943, + 0.9789336919784546, 0.8648539781570435, 0.0, 0.9639078378677368, + 0.9736183285713196, 0.9675067663192749, 0.940881609916687, 0.0, + 0.9582109451293945, 0.0, 0.982145369052887, 0.9639078378677368, + 0.961211085319519, 0.0, 0.9201474189758301, 0.9761537909507751, 0.0, + 0.0, 0.9528877139091492, 0.0, 0.0, 0.9764111042022705 + ], + [ + 0.9463514685630798, 0.9439656734466553, 0.0, 0.9439656734466553, + 0.9414880275726318, 0.11544811725616455, 0.0, 0.9818296432495117, 0.0, + 0.9800933599472046, 0.941167950630188, 0.0, 0.9572662115097046, + 0.9462907314300537, 0.9420565366744995, 0.8699474930763245, + 0.9862393736839294, 0.0, 0.9881100654602051, 0.0, 0.9872932434082031, + 0.0, 0.9862393736839294, 0.0, 0.0, 0.0, 0.0, 0.9414880275726318, + 0.9600542783737183, 0.9045330882072449, 0.0, 0.9466926455497742, + 0.9572662115097046, 0.9951223134994507, 0.9837529063224792, 0.0, + 0.9947364926338196, 0.0, 0.9629464745521545, 0.9466926455497742, + 0.9439656734466553, 0.0, 0.9862393736839294, 0.9550431370735168, 0.0, + 0.0, 0.9917606711387634, 0.0, 0.0, 0.9578285217285156 + ], + [ + 0.6878268122673035, 0.6746472120285034, 0.0, 0.6746472120285034, + 0.5407849550247192, 0.0, 0.0, 0.0, 0.0, 0.811570405960083, + 0.4939804673194885, 0.0, 0.7464512586593628, 0.0, 0.6132776737213135, + 0.3012204170227051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.5407849550247192, 0.7342384457588196, 0.24500800669193268, 0.0, + 0.6878073215484619, 0.7464512586593628, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.5899852514266968, 0.6878073215484619, 0.6746472120285034, 0.0, 0.0, + 0.6615322828292847, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9334027767181396, 0.9357232451438904, 0.1172555685043335, + 0.9357232451438904, 0.9256162643432617, 0.5429917573928833, + 0.6504912972450256, 0.9441931843757629, 0.0, 0.9525487422943115, + 0.9236162900924683, 0.0, 0.9430536031723022, 0.9132289886474609, + 0.92960125207901, 0.8522192239761353, 0.9461503624916077, 0.0, + 0.9498468041419983, 0.0, 0.9445486068725586, 0.0, 0.9461503624916077, + 0.0, 0.2551182508468628, 0.09217452257871628, 0.0, 0.9256162643432617, + 0.9427808523178101, 0.8885181546211243, 0.3048710525035858, + 0.9374105334281921, 0.9430536031723022, 0.9663224816322327, + 0.9389983415603638, 0.0, 0.9582626223564148, 0.0, 0.9354557394981384, + 0.9374105334281921, 0.9357232451438904, 0.0, 0.9461503624916077, + 0.9375399947166443, 0.0, 0.040217503905296326, 0.9601296782493591, + 0.00022876086586620659, 0.25992316007614136, 0.923961877822876 + ], + [ + 0.48354795575141907, 0.4774066209793091, 0.0, 0.4774066209793091, + 0.07743129879236221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.5902640223503113, 0.0, 0.3123166263103485, 0.12415485829114914, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07743129879236221, + 0.5397481322288513, 0.03769519552588463, 0.0, 0.49803823232650757, + 0.5902640223503113, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.49803823232650757, + 0.4774066209793091, 0.0, 0.0, 0.30379247665405273, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.8827467560768127, 0.8203068971633911, 0.0, 0.8203068971633911, + 0.8122700452804565, 0.0, 0.0, 0.0, 0.0, 0.06257428228855133, 0.0, 0.0, + 0.9441919326782227, 0.0, 0.8122710585594177, 0.11487824469804764, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8122700452804565, + 0.9381545186042786, 0.04190567880868912, 0.0, 0.846733033657074, + 0.9441919326782227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.846733033657074, + 0.8203068971633911, 0.0, 0.0, 0.8834158182144165, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.9351792335510254, 0.93697190284729, 0.2073274552822113, + 0.93697190284729, 0.9274756908416748, 0.5476046204566956, + 0.6437081694602966, 0.9492014050483704, 0.2202795296907425, + 0.9556781649589539, 0.9256619215011597, 0.0, 0.9447311162948608, + 0.9174737334251404, 0.9310952425003052, 0.8746903538703918, + 0.9570953845977783, 0.07548616826534271, 0.9601566195487976, + 0.02327699586749077, 0.9517809748649597, 0.19100739061832428, + 0.9570953845977783, 0.27635231614112854, 0.2897435128688812, + 0.3084721565246582, 0.19100739061832428, 0.9274756908416748, + 0.9448500275611877, 0.9089379906654358, 0.3216802179813385, + 0.9387204647064209, 0.9447311162948608, 0.9743483066558838, + 0.9479241371154785, 0.12254460155963898, 0.966482937335968, 0.0, + 0.9384366273880005, 0.9387204647064209, 0.93697190284729, + 0.14457936584949493, 0.9570953845977783, 0.9395990371704102, + 0.06080274656414986, 0.4545396566390991, 0.9693624973297119, + 0.2921827733516693, 0.33737316727638245, 0.9278176426887512 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.825177013874054, 0.8048591017723083, 0.0, 0.8048591017723083, + 0.7471530437469482, 0.0, 0.0, 0.2447403073310852, 0.0, + 0.7956845164299011, 0.7261441946029663, 0.0, 0.8660773634910583, 0.0, + 0.7770386338233948, 0.3051496148109436, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.7471530437469482, 0.8587269186973572, + 0.2549494206905365, 0.0, 0.8156805634498596, 0.8660773634910583, + 0.046289946883916855, 0.0, 0.0, 0.0, 0.0, 0.8728205561637878, + 0.8156805634498596, 0.8048591017723083, 0.0, 0.0, 0.8344907760620117, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.20630542933940887 + ], + [ + 0.9169006943702698, 0.789244532585144, 0.0, 0.789244532585144, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9223460555076599, 0.0, 0.0, + 0.04651172086596489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.415664941072464, 0.0, 0.0, 0.846660315990448, + 0.9223460555076599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.846660315990448, + 0.789244532585144, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5188425779342651, 0.5314738750457764, 0.0, 0.5314738750457764, + 0.3850511610507965, 0.0, 0.0, 0.09649436920881271, 0.0, + 0.3446391224861145, 0.3493833839893341, 0.0, 0.541537880897522, + 0.07422615587711334, 0.4557618498802185, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3850511610507965, 0.4912339746952057, + 0.0, 0.0, 0.5339505076408386, 0.541537880897522, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.2884923815727234, 0.5339505076408386, 0.5314738750457764, 0.0, + 0.0, 0.428748220205307, 0.0, 0.0, 0.0, 0.0, 0.0, 0.09006018191576004 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.936473548412323, 0.9384321570396423, 0.2207586169242859, + 0.9384321570396423, 0.92906653881073, 0.5583094358444214, + 0.6540610790252686, 0.9497556090354919, 0.2280030995607376, + 0.9563538432121277, 0.9272958040237427, 0.0, 0.9458242654800415, + 0.9188054203987122, 0.9326005578041077, 0.8672069907188416, + 0.9566431641578674, 0.0, 0.9596006870269775, 0.0, 0.9520301222801208, + 0.2855951189994812, 0.9566431641578674, 0.20953616499900818, + 0.29753920435905457, 0.34055793285369873, 0.2855951189994812, + 0.92906653881073, 0.9459707736968994, 0.9017676711082458, + 0.34528598189353943, 0.9401209354400635, 0.9458242654800415, + 0.9736607670783997, 0.947994589805603, 0.10063133388757706, + 0.9663297533988953, 0.0, 0.9395089149475098, 0.9401209354400635, + 0.9384321570396423, 0.14157317578792572, 0.9566431641578674, + 0.9409245848655701, 0.031088562682271004, 0.4159625172615051, + 0.9685809016227722, 0.3108071982860565, 0.35651326179504395, + 0.9291922450065613 + ], + [ + 0.743730902671814, 0.7372573018074036, 0.0, 0.7372573018074036, + 0.666164755821228, 0.0, 0.0, 0.729931652545929, 0.0, 0.7996477484703064, + 0.6463336944580078, 0.0, 0.7796080708503723, 0.48179891705513, + 0.7012366056442261, 0.5804693102836609, 0.0, 0.0, 0.0, 0.0, + 0.6059209108352661, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.666164755821228, + 0.7698690891265869, 0.6086183786392212, 0.0, 0.7452235817909241, + 0.7796080708503723, 0.9193915128707886, 0.05771923437714577, 0.0, + 0.6429702043533325, 0.0, 0.7029128074645996, 0.7452235817909241, + 0.7372573018074036, 0.0, 0.0, 0.7295289635658264, 0.0, 0.0, + 0.9662341475486755, 0.0, 0.0, 0.5333138108253479 + ], + [ + 0.9328802824020386, 0.9350316524505615, 0.2319445013999939, + 0.9350316524505615, 0.9256858825683594, 0.5609022974967957, + 0.6623903512954712, 0.9465985894203186, 0.26889052987098694, + 0.9536309838294983, 0.9238928556442261, 0.0, 0.9424359798431396, + 0.9147626161575317, 0.929265022277832, 0.8602655529975891, + 0.9535108804702759, 0.03979620337486267, 0.9565345048904419, 0.0, + 0.9488857388496399, 0.20574550330638885, 0.9535108804702759, + 0.2874282896518707, 0.30357226729393005, 0.3697206974029541, + 0.20574550330638885, 0.9256858825683594, 0.9426992535591125, + 0.8967151045799255, 0.36751970648765564, 0.9367465972900391, + 0.9424359798431396, 0.971062958240509, 0.9445900917053223, + 0.15002943575382233, 0.9640179872512817, 0.0, 0.9361152052879333, + 0.9367465972900391, 0.9350316524505615, 0.19896233081817627, + 0.9535108804702759, 0.9375409483909607, 0.08484230935573578, + 0.5327345728874207, 0.9655148983001709, 0.3787201941013336, + 0.4100457727909088, 0.925638735294342 + ], + [ + 0.7434709668159485, 0.7342777848243713, 0.0, 0.7342777848243713, + 0.6543235182762146, 0.0, 0.0, 0.7862951159477234, 0.0, + 0.8271054625511169, 0.6304134130477905, 0.0, 0.7855446338653564, + 0.38397884368896484, 0.6947544813156128, 0.4649379253387451, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6543235182762146, + 0.7773599028587341, 0.4569125771522522, 0.0, 0.7438362240791321, + 0.7855446338653564, 0.69515061378479, 0.0, 0.0, 0.0, 0.0, + 0.7094954252243042, 0.7438362240791321, 0.7342777848243713, 0.0, 0.0, + 0.7319198250770569, 0.0, 0.0, 0.39354366064071655, 0.0, 0.0, + 0.4641243815422058 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0.0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0.0, 0.9556769728660583, 0.0, 0.9485813975334167, + 0.0, 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0.0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0.0, + 0.9629393219947815, 0.0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0.0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.9195862412452698, 0.9220841526985168, 0.13715824484825134, + 0.9220841526985168, 0.9106405973434448, 0.5163668990135193, + 0.5890920758247375, 0.9314747452735901, 0.09921257197856903, + 0.9407001733779907, 0.9083550572395325, 0.0, 0.930107593536377, + 0.8967242240905762, 0.9152022004127502, 0.8561992049217224, + 0.9366470575332642, 0.0, 0.940861165523529, 0.0, 0.9325706958770752, + 0.0, 0.9366470575332642, 0.0, 0.24157372117042542, 0.1206507608294487, + 0.0, 0.9106405973434448, 0.9297754764556885, 0.893466591835022, + 0.21303364634513855, 0.9239208698272705, 0.930107593536377, + 0.9596612453460693, 0.9270446300506592, 0.0, 0.9493283629417419, 0.0, + 0.9212765097618103, 0.9239208698272705, 0.9220841526985168, 0.0, + 0.9366470575332642, 0.9237295985221863, 0.0, 0.29278767108917236, + 0.9529325366020203, 0.06505927443504333, 0.19204182922840118, + 0.9081715941429138 + ], + [ + 0.9674855470657349, 0.9686222076416016, 0.0, 0.9686222076416016, + 0.9661521315574646, 0.6518474221229553, 0.8795127272605896, + 0.9798871278762817, 0.0, 0.9844141006469727, 0.9658060073852539, 0.0, + 0.97487473487854, 0.9634808897972107, 0.9667624831199646, + 0.8336988091468811, 0.9620339274406433, 0.0, 0.9647660255432129, 0.0, + 0.9753776788711548, 0.0, 0.9620339274406433, 0.0, 0.0, 0.0, 0.0, + 0.9661521315574646, 0.976043701171875, 0.8679069876670837, 0.0, + 0.9700765609741211, 0.97487473487854, 0.9753454923629761, + 0.9682275056838989, 0.0, 0.9739751219749451, 0.0, 0.975624144077301, + 0.9700765609741211, 0.9686222076416016, 0.0, 0.9620339274406433, + 0.973994791507721, 0.0, 0.0, 0.9703773856163025, 0.0, 0.0, + 0.9717084169387817 + ], + [ + 0.934225857257843, 0.9352400898933411, 0.030317040160298347, + 0.9352400898933411, 0.9264477491378784, 0.5123326778411865, + 0.6623035669326782, 0.9520787000656128, 0.0, 0.9577811360359192, + 0.9248024821281433, 0.0, 0.9443178772926331, 0.918153703212738, + 0.9297283291816711, 0.879120945930481, 0.9612048864364624, 0.0, + 0.9640563130378723, 0.0, 0.9555220603942871, 0.0, 0.9612048864364624, + 0.0, 0.20572532713413239, 0.0, 0.0, 0.9264477491378784, + 0.9449334740638733, 0.9112521409988403, 0.23013901710510254, + 0.9372375011444092, 0.9443178772926331, 0.9781539440155029, + 0.9517093896865845, 0.0, 0.9711923599243164, 0.0, 0.9393836855888367, + 0.9372375011444092, 0.9352400898933411, 0.0, 0.9612048864364624, + 0.9393155574798584, 0.0, 0.005231114104390144, 0.9728637933731079, 0.0, + 0.19197078049182892, 0.929114580154419 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0.0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0.0, 0.9556769728660583, 0.0, 0.9485813975334167, + 0.0, 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0.0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0.0, + 0.9629393219947815, 0.0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0.0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.8883063793182373, 0.8116819262504578, 0.0, 0.8116819262504578, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9529995918273926, 0.0, + 0.8028464317321777, 0.09172669798135757, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8983768224716187, 0.01723295822739601, + 0.0, 0.8440255522727966, 0.9529995918273926, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.8440255522727966, 0.8116819262504578, 0.0, 0.0, + 0.6447504758834839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.2747211754322052, 0.2936770021915436, 0.0, 0.2936770021915436, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6517482399940491, 0.0, 0.0, + 0.032184068113565445, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.34475982189178467, 0.6517482399940491, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.34475982189178467, 0.2936770021915436, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5531019568443298, 0.5641404986381531, 0.0, 0.5641404986381531, + 0.4168100953102112, 0.0, 0.0, 0.1140608862042427, 0.0, + 0.39043787121772766, 0.3796830475330353, 0.0, 0.5798412561416626, + 0.0826287716627121, 0.4889662563800812, 0.18057607114315033, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4168100953102112, + 0.5310302376747131, 0.0, 0.0, 0.5675522685050964, 0.5798412561416626, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.32385241985321045, 0.5675522685050964, + 0.5641404986381531, 0.0, 0.0, 0.4662861227989197, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.10050193965435028 + ], + [ + 0.9420479536056519, 0.9427720904350281, 0.0, 0.9427720904350281, + 0.9347240328788757, 0.5127102732658386, 0.687716007232666, + 0.9590884447097778, 0.0, 0.9646003246307373, 0.9331855773925781, 0.0, + 0.9516794085502625, 0.9269337058067322, 0.9377775192260742, + 0.8794031739234924, 0.9654127359390259, 0.0, 0.9682632684707642, 0.0, + 0.9616855382919312, 0.0, 0.9654127359390259, 0.0, 0.18039019405841827, + 0.0, 0.0, 0.9347240328788757, 0.9522895812988281, 0.9113820195198059, + 0.0, 0.9447222948074341, 0.9516794085502625, 0.9817621111869812, + 0.9575057625770569, 0.0, 0.9756044745445251, 0.0, 0.9473169445991516, + 0.9447222948074341, 0.9427720904350281, 0.0, 0.9654127359390259, + 0.9469399452209473, 0.0, 0.0, 0.9765735268592834, 0.0, 0.0, + 0.9375110268592834 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.13069970905780792, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13069970905780792, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.5751016139984131, 0.5733153223991394, 0.0, 0.5733153223991394, + 0.42552366852760315, 0.0, 0.0, 0.11649440228939056, 0.0, + 0.570351243019104, 0.38224679231643677, 0.0, 0.6250942349433899, 0.0, + 0.5016170740127563, 0.35801514983177185, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.42552366852760315, 0.5966134071350098, + 0.3176433742046356, 0.0, 0.5833065509796143, 0.6250942349433899, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.38370266556739807, 0.5833065509796143, + 0.5733153223991394, 0.0, 0.0, 0.5161169171333313, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.7787143588066101, 0.7701713442802429, 0.0, 0.7701713442802429, + 0.7090018391609192, 0.0, 0.0, 0.8258630037307739, 0.0, + 0.8449141383171082, 0.6917063593864441, 0.0, 0.8138009309768677, + 0.5586830973625183, 0.7390192747116089, 0.55143141746521, 0.0, 0.0, 0.0, + 0.0, 0.8434901833534241, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.7090018391609192, 0.8069137334823608, 0.5675274133682251, 0.0, + 0.7782487869262695, 0.8138009309768677, 0.8440638780593872, 0.0, 0.0, + 0.5092626810073853, 0.0, 0.7631323337554932, 0.7782487869262695, + 0.7701713442802429, 0.0, 0.0, 0.7720590829849243, 0.0, 0.0, + 0.8145000338554382, 0.0, 0.0, 0.6143969893455505 + ], + [ + 0.9376397132873535, 0.9394145607948303, 0.20784924924373627, + 0.9394145607948303, 0.9305175542831421, 0.5572127103805542, + 0.6681869029998779, 0.9522222280502319, 0.21259279549121857, + 0.9583749175071716, 0.9288394451141357, 0.0, 0.947019100189209, + 0.9209617972373962, 0.9338666796684265, 0.8692113757133484, + 0.9599745869636536, 0.0, 0.9627288579940796, 0.0, 0.9549523591995239, + 0.10538123548030853, 0.9599745869636536, 0.17021527886390686, + 0.29417285323143005, 0.3758244216442108, 0.10538123548030853, + 0.9305175542831421, 0.9473679065704346, 0.9040439128875732, + 0.35192927718162537, 0.9411460757255554, 0.947019100189209, + 0.9760757684707642, 0.951150119304657, 0.0, 0.969430685043335, 0.0, + 0.9413937926292419, 0.9411460757255554, 0.9394145607948303, + 0.12084345519542694, 0.9599745869636536, 0.9423250555992126, 0.0, + 0.3530804514884949, 0.9710901379585266, 0.3764790892601013, + 0.38387250900268555, 0.9314559102058411 + ], + [ + 0.7014084458351135, 0.695290744304657, 0.0, 0.695290744304657, + 0.6028080582618713, 0.0, 0.0, 0.6023911237716675, 0.0, + 0.7662052512168884, 0.5759142637252808, 0.0, 0.7429336905479431, + 0.30479565262794495, 0.6497153639793396, 0.47929027676582336, 0.0, 0.0, + 0.0, 0.0, 0.05563047155737877, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.6028080582618713, 0.7315650582313538, 0.4775010049343109, 0.0, + 0.7045115232467651, 0.7429336905479431, 0.970437228679657, 0.0, 0.0, + 0.0, 0.0, 0.6229016780853271, 0.7045115232467651, 0.695290744304657, + 0.0, 0.0, 0.677351176738739, 0.0, 0.0, 0.6063860654830933, 0.0, 0.0, + 0.36758357286453247 + ], + [ + 0.9419844150543213, 0.9431969523429871, 0.19646787643432617, + 0.9431969523429871, 0.9346080422401428, 0.5488399863243103, + 0.6644535064697266, 0.9572911858558655, 0.20402289927005768, + 0.9626659750938416, 0.9329860806465149, 0.045756012201309204, + 0.9511786699295044, 0.9262731671333313, 0.9378437995910645, + 0.8865021467208862, 0.9662277102470398, 0.08664795756340027, + 0.9688546061515808, 0.049190230667591095, 0.9604259133338928, + 0.17472335696220398, 0.9662277102470398, 0.2159879356622696, + 0.29122820496559143, 0.3560408651828766, 0.17472335696220398, + 0.9346080422401428, 0.9515462517738342, 0.9190202951431274, + 0.3313352167606354, 0.9449687004089355, 0.9511786699295044, + 0.9813721179962158, 0.9571552872657776, 0.25822892785072327, + 0.9745647311210632, 0.0, 0.9460163116455078, 0.9449687004089355, + 0.9431969523429871, 0.1397450864315033, 0.9662277102470398, + 0.9464099407196045, 0.07705214619636536, 0.3572593331336975, + 0.9769449234008789, 0.3615134358406067, 0.3594312369823456, + 0.9362280368804932 + ], + [ + 0.695499062538147, 0.6682927012443542, 0.0, 0.6682927012443542, + 0.4222148060798645, 0.0, 0.0, 0.0, 0.0, 0.468534380197525, + 0.2862415313720703, 0.0, 0.7860586047172546, 0.0, 0.5762909054756165, + 0.167990580201149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.4222148060798645, 0.7809551954269409, 0.09161896258592606, 0.0, + 0.6892356276512146, 0.7860586047172546, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.6892356276512146, 0.6682927012443542, 0.0, 0.0, 0.6810435056686401, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.13069970905780792, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13069970905780792, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.14117367565631866, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2057769000530243, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.937499463558197, 0.9396012425422668, 0.19444650411605835, + 0.9396012425422668, 0.9303405284881592, 0.5595709085464478, + 0.6769520044326782, 0.9498411417007446, 0.3085106313228607, + 0.9570466876029968, 0.9285362362861633, 0.0, 0.9468313455581665, + 0.9193881154060364, 0.9339384436607361, 0.8590915203094482, + 0.9542338848114014, 0.0, 0.9573796391487122, 0.0, 0.9512461423873901, + 0.0, 0.9542338848114014, 0.07962363958358765, 0.29162508249282837, + 0.34525856375694275, 0.0, 0.9303405284881592, 0.9468585252761841, + 0.8953604698181152, 0.40690043568611145, 0.9412654638290405, + 0.9468313455581665, 0.9718629121780396, 0.9465429186820984, 0.0, + 0.9650187492370605, 0.0, 0.9403872489929199, 0.9412654638290405, + 0.9396012425422668, 0.0, 0.9542338848114014, 0.9418666362762451, 0.0, + 0.26297900080680847, 0.9663037061691284, 0.26931843161582947, + 0.5429947972297668, 0.9299060106277466 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0.0, 0.7642062902450562, + 0.7031867504119873, 0.0, 0.0, 0.783707857131958, 0.0, + 0.8286955952644348, 0.6864418983459473, 0.0, 0.8040765523910522, + 0.5586217641830444, 0.7329409718513489, 0.6091272830963135, 0.0, 0.0, + 0.9750877022743225, 0.0, 0.7425238490104675, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.7031867504119873, 0.7965674996376038, 0.6441854238510132, 0.0, + 0.771715521812439, 0.8040765523910522, 0.9360801577568054, + 0.5036059617996216, 0.0, 0.7744112610816956, 0.0, 0.7440190315246582, + 0.771715521812439, 0.7642062902450562, 0.0, 0.0, 0.7612676024436951, + 0.0, 0.0, 0.972480058670044, 0.0, 0.0, 0.6066010594367981 + ], + [ + 0.6413818001747131, 0.5942000150680542, 0.0, 0.5942000150680542, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8526681065559387, 0.0, + 0.26973628997802734, 0.07907950133085251, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8907350301742554, 0.0015237635234370828, + 0.0, 0.6394904255867004, 0.8526681065559387, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.6394904255867004, 0.5942000150680542, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.9363422393798828, 0.9382712244987488, 0.22636201977729797, + 0.9382712244987488, 0.929071307182312, 0.5602494478225708, + 0.6676446199417114, 0.9498655200004578, 0.2629334032535553, + 0.9566150307655334, 0.9273208975791931, 0.0, 0.9457273483276367, + 0.9186585545539856, 0.9325653910636902, 0.86510169506073, + 0.956407904624939, 0.0, 0.9593522548675537, 0.0, 0.9520565271377563, + 0.25211653113365173, 0.956407904624939, 0.20303015410900116, + 0.299277663230896, 0.4186997711658478, 0.25211653113365173, + 0.929071307182312, 0.9459659457206726, 0.899989664554596, + 0.38501429557800293, 0.9399810433387756, 0.9457273483276367, + 0.9735718965530396, 0.9478381276130676, 0.09343190491199493, + 0.9666268825531006, 0.0, 0.9395412802696228, 0.9399810433387756, + 0.9382712244987488, 0.1826792061328888, 0.956407904624939, + 0.9408669471740723, 0.0, 0.44101381301879883, 0.968217670917511, + 0.4180064797401428, 0.4314064085483551, 0.9292559027671814 + ], + [ + 0.9206163287162781, 0.9226289391517639, 0.07096190005540848, + 0.9226289391517639, 0.9111737012863159, 0.49438178539276123, + 0.577799379825592, 0.9338856935501099, 0.0, 0.9424391388893127, + 0.9089133739471436, 0.0, 0.9313528537750244, 0.8985327482223511, + 0.9156853556632996, 0.8678088188171387, 0.9402933716773987, 0.0, + 0.944468080997467, 0.0, 0.9355234503746033, 0.0, 0.9402933716773987, + 0.0, 0.20393262803554535, 0.030735453590750694, 0.0, 0.9111737012863159, + 0.9310257434844971, 0.9023955464363098, 0.1524622142314911, + 0.9245709180831909, 0.9313528537750244, 0.9629756212234497, + 0.9303849339485168, 0.0, 0.9521950483322144, 0.0, 0.9228761792182922, + 0.9245709180831909, 0.9226289391517639, 0.0, 0.9402933716773987, + 0.924801230430603, 0.0, 0.0, 0.9566265940666199, 0.0, + 0.11186230927705765, 0.9097580313682556 + ], + [ + 0.6453346014022827, 0.6412734389305115, 0.0, 0.6412734389305115, + 0.5264101028442383, 0.0, 0.0, 0.41887542605400085, 0.0, + 0.6720107793807983, 0.49316897988319397, 0.0, 0.6899288892745972, + 0.16491016745567322, 0.5847526788711548, 0.4520247280597687, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5264101028442383, + 0.6693958640098572, 0.4429776966571808, 0.0, 0.6504871249198914, + 0.6899288892745972, 0.7844980955123901, 0.0, 0.0, 0.0, 0.0, + 0.5258768200874329, 0.6504871249198914, 0.6412734389305115, 0.0, 0.0, + 0.6071641445159912, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21476638317108154 + ], + [ + 0.9340403079986572, 0.9351713061332703, 0.0795176550745964, + 0.9351713061332703, 0.9262621402740479, 0.5175647735595703, + 0.658846914768219, 0.9513806104660034, 0.006364813540130854, + 0.9573151469230652, 0.924568772315979, 0.0, 0.9440710544586182, + 0.9174661636352539, 0.9296397566795349, 0.8794582486152649, + 0.9606009125709534, 0.0, 0.9635049104690552, 0.0, 0.9547326564788818, + 0.0, 0.9606009125709534, 0.0, 0.22523219883441925, 0.22048857808113098, + 0.0, 0.9262621402740479, 0.9446225166320801, 0.9124925136566162, + 0.251814067363739, 0.9371387362480164, 0.9440710544586182, + 0.9776821732521057, 0.9509009122848511, 0.0, 0.9706209897994995, 0.0, + 0.9388790130615234, 0.9371387362480164, 0.9351713061332703, 0.0, + 0.9606009125709534, 0.9389740228652954, 0.0, 0.07143048197031021, + 0.972345769405365, 0.0, 0.30094215273857117, 0.9284132122993469 + ], + [ + 0.9320887923240662, 0.9333378076553345, 0.0, 0.9333378076553345, + 0.9241817593574524, 0.5038345456123352, 0.6547480225563049, + 0.949235737323761, 0.0, 0.9555336833000183, 0.9224198460578918, 0.0, + 0.9423805475234985, 0.9151056408882141, 0.9276909828186035, + 0.8738383650779724, 0.9571296572685242, 0.0, 0.9603064656257629, 0.0, + 0.9521613121032715, 0.0, 0.9571296572685242, 0.0, 0.1881193071603775, + 0.0, 0.0, 0.9241817593574524, 0.9427818059921265, 0.9076824188232422, + 0.1448112577199936, 0.9353305697441101, 0.9423805475234985, + 0.9751202464103699, 0.9479191303253174, 0.0, 0.9676988124847412, 0.0, + 0.9369789361953735, 0.9353305697441101, 0.9333378076553345, 0.0, + 0.9571296572685242, 0.9370989203453064, 0.0, 0.0, 0.9695542454719543, + 0.0, 0.0, 0.9261722564697266 + ], + [ + 0.8156828284263611, 0.7950649261474609, 0.0, 0.7950649261474609, + 0.73224276304245, 0.0, 0.0, 0.23638135194778442, 0.0, + 0.8773982524871826, 0.709170401096344, 0.0, 0.8637153506278992, 0.0, + 0.7650731205940247, 0.29499053955078125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.73224276304245, 0.865231454372406, + 0.24345846474170685, 0.0, 0.8075575232505798, 0.8637153506278992, + 0.017279380932450294, 0.0, 0.0, 0.0, 0.0, 0.9138534665107727, + 0.8075575232505798, 0.7950649261474609, 0.0, 0.0, 0.8345074653625488, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ] + ], + "velocity_graph_neg": [ + [ + 0.0, 0.0, -0.7120062112808228, 0.0, -0.8277276158332825, + -0.898493230342865, -0.7567191123962402, -0.5180003643035889, + -0.6580418348312378, -0.3673422634601593, -0.8121242523193359, + -0.6286078095436096, 0.0, -0.6898333430290222, -0.8820143938064575, 0.0, + -0.5298582315444946, -0.6359027028083801, -0.509711503982544, + -0.634975790977478, -0.5376363396644592, -0.6401374340057373, + -0.5298582315444946, -0.6149713397026062, -0.8061617612838745, + -0.6687042117118835, -0.6401374340057373, -0.8277276158332825, + -0.2262919843196869, -0.03380454331636429, -0.6888725161552429, 0.0, + 0.0, -0.3684532642364502, -0.5563299059867859, -0.6423702836036682, + -0.4768065810203552, -0.6381706595420837, -0.5825198292732239, 0.0, 0.0, + -0.6520509123802185, -0.5298582315444946, -0.5840763449668884, + -0.6433370113372803, -0.6271675229072571, -0.42436861991882324, + -0.6576603055000305, -0.6680506467819214, -0.6693334579467773 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.016940603032708168, 0.0, 0.0, + -0.03389278054237366, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04325872287154198, + 0.0, -0.04747111350297928, 0.0, -0.036836929619312286, 0.0, 0.0, 0.0, + 0.0, -0.036836929619312286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.037104588001966476, 0.0, -0.04293520748615265, 0.0, 0.0, 0.0, + -0.05816514790058136, 0.0, 0.0, -0.06126631051301956, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, -0.7790889739990234, 0.0, 0.0, -0.9505990147590637, + -0.8218083381652832, -0.45774391293525696, -0.7262772917747498, + -0.07310163229703903, -0.8020796179771423, -0.6945830583572388, 0.0, + -0.6743336915969849, 0.0, 0.0, -0.5439357161521912, -0.7018686532974243, + -0.5163518190383911, -0.701633632183075, -0.5312055945396423, + -0.7063853144645691, -0.5439357161521912, -0.6821277737617493, + -0.8697605133056641, -0.7356099486351013, -0.7063853144645691, 0.0, 0.0, + 0.0, -0.7564207315444946, 0.0, 0.0, -0.3194757103919983, + -0.5653488039970398, -0.7085943222045898, -0.4695509076118469, + -0.7040919065475464, -0.392999529838562, 0.0, 0.0, 0.0, + -0.5439357161521912, 0.0, -0.7099944949150085, -0.6941519379615784, + -0.39803364872932434, -0.7247233390808105, -0.7357996106147766, + -0.6551039218902588 + ], + [ + 0.0, 0.0, -0.25773361325263977, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.15642055869102478, 0.0, 0.0, -0.10790649056434631, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.11982513219118118, 0.0, -0.11992843449115753, 0.0, + -0.12552791833877563, 0.0, -0.08309639990329742, -0.39898252487182617, + -0.15044663846492767, -0.12552791833877563, 0.0, 0.0, 0.0, + -0.18084149062633514, 0.0, 0.0, 0.0, 0.0, -0.1259797215461731, 0.0, + -0.1203366369009018, 0.0, 0.0, 0.0, -0.14946578443050385, 0.0, 0.0, + -0.1342347264289856, -0.09377450495958328, 0.0, -0.13679127395153046, + -0.1473536491394043, 0.0 + ], + [ + 0.0, 0.0, -0.6457950472831726, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.5308655500411987, 0.0, 0.0, -0.46221935749053955, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.47845908999443054, 0.0, -0.4866603910923004, 0.0, + -0.48562079668045044, 0.0, -0.4160946011543274, -0.9214332699775696, + -0.5599440932273865, -0.48562079668045044, 0.0, 0.0, 0.0, + -0.6072580218315125, 0.0, 0.0, 0.0, 0.0, -0.5000309944152832, 0.0, + -0.49161800742149353, 0.0, 0.0, 0.0, -0.5337187647819519, 0.0, 0.0, + -0.5065746307373047, -0.43407684564590454, 0.0, -0.5368285775184631, + -0.5576698184013367, 0.0 + ], + [ + 0.0, 0.0, -0.8902036547660828, 0.0, 0.0, -0.9844622015953064, + -0.9415452480316162, 0.0, 0.0, 0.0, 0.0, -0.809356153011322, 0.0, + -0.25493502616882324, 0.0, 0.0, -0.7107474207878113, + -0.8168039917945862, -0.6646102070808411, -0.816710352897644, + -0.7487311959266663, -0.8214905261993408, -0.7107474207878113, + -0.7964531183242798, -0.9662666320800781, -0.8521594405174255, 0.0, 0.0, + 0.0, 0.0, -0.8721877336502075, 0.0, 0.0, -0.10103996843099594, + -0.7706180214881897, 0.0, -0.5563679337501526, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.7107474207878113, 0.0, -0.8251966238021851, -0.8093149065971375, + -0.3745379149913788, -0.8411516547203064, -0.852289617061615, + -0.24696169793605804 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.17498430609703064, 0.0, 0.0, 0.0, 0.0, 0.0, -0.18377886712551117, + 0.0, -0.2093697041273117, 0.0, -0.16968601942062378, 0.0, + -0.04626503959298134, 0.0, 0.0, -0.16968601942062378, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.17362122237682343, 0.0, -0.1840653270483017, + 0.0, 0.0, 0.0, -0.29040318727493286, 0.0, 0.0, -0.22847941517829895, + 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8438978791236877, 0.0, 0.0, -0.9898490309715271, + -0.8941580057144165, -0.7655117511749268, -0.7913439273834229, 0.0, + -0.07512039691209793, -0.7589762806892395, 0.0, -0.799176812171936, 0.0, + 0.0, -0.702855110168457, -0.7665252089500427, -0.6798433661460876, + -0.7661380171775818, -0.7383368015289307, -0.7712615132331848, + -0.702855110168457, -0.7465370893478394, -0.9260478019714355, + -0.8017615079879761, -0.7712615132331848, 0.0, 0.0, 0.0, + -0.8227463364601135, 0.0, 0.0, -0.4759712815284729, -0.740666925907135, + -0.7734407782554626, -0.6569809913635254, -0.7686947584152222, + -0.4876389503479004, 0.0, 0.0, -0.7848285436630249, -0.702855110168457, + 0.0, -0.774767279624939, -0.7593095302581787, -0.5625927448272705, + -0.7905178666114807, -0.8019222021102905, -0.8746048808097839 + ], + [ + 0.0, 0.0, -0.7886513471603394, 0.0, 0.0, -0.9574145078659058, + -0.8321628570556641, -0.42440176010131836, 0.0, 0.0, 0.0, + -0.7041367888450623, 0.0, -0.6637837290763855, 0.0, 0.0, + -0.5393110513687134, -0.7114424109458923, -0.5090306997299194, + -0.7112796902656555, -0.5197838544845581, -0.7159545421600342, + -0.5393110513687134, -0.6915066838264465, -0.8797454237937927, + -0.7454434037208557, 0.0, 0.0, 0.0, 0.0, -0.7662324905395508, 0.0, 0.0, + -0.2913602590560913, -0.5598525404930115, 0.0, -0.45610764622688293, + 0.0, -0.2718837857246399, 0.0, 0.0, 0.0, -0.5393110513687134, 0.0, + -0.7196633815765381, -0.7035689353942871, -0.37873131036758423, + -0.7345417141914368, -0.7456100583076477, -0.6429240107536316 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.043637510389089584, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0.0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0.0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0.0, 0.0, -0.8493537306785583, 0.0, 0.0, -0.9675696492195129, + -0.8997762799263, 0.0, -0.7994657754898071, 0.0, 0.0, + -0.768632709980011, 0.0, 0.0, 0.0, 0.0, -0.48608702421188354, + -0.7758843898773193, -0.42139869928359985, -0.7760102152824402, + -0.3527677655220032, -0.7803206443786621, -0.48608702421188354, + -0.754727303981781, -0.940492570400238, -0.8106327056884766, + -0.7803206443786621, 0.0, 0.0, 0.0, -0.8305867314338684, 0.0, 0.0, 0.0, + -0.4990590512752533, -0.7833253145217896, -0.26933911442756653, + -0.778824508190155, 0.0, 0.0, 0.0, 0.0, -0.48608702421188354, 0.0, + -0.7842989563941956, -0.7671602368354797, -0.137251615524292, + -0.7997639179229736, -0.8106374144554138, 0.0 + ], + [ + 0.0, 0.0, -0.7590404152870178, 0.0, -0.7814381718635559, + -0.9338588118553162, -0.800162136554718, -0.5049009323120117, 0.0, + -0.27367153763771057, -0.7814376950263977, -0.6753172874450684, 0.0, + -0.6841118335723877, 0.0, 0.0, -0.5501546859741211, -0.6825063824653625, + -0.5272192358970642, -0.6821213364601135, -0.5475922226905823, + -0.686984658241272, -0.5501546859741211, -0.6631956100463867, + -0.8485480546951294, -0.7154874205589294, 0.0, -0.7814381718635559, 0.0, + -0.02974291518330574, -0.7361434698104858, 0.0, 0.0, + -0.36624231934547424, -0.5725536346435547, 0.0, -0.49019038677215576, + 0.0, -0.5211049914360046, 0.0, 0.0, 0.0, -0.5501546859741211, + -0.27827009558677673, -0.6903709173202515, -0.6750733852386475, + -0.42963674664497375, -0.7047054171562195, -0.7156864404678345, + -0.6668528914451599 + ], + [ + 0.0, 0.0, -0.8363222479820251, 0.0, 0.0, -0.557326078414917, + -0.7607558965682983, 0.0, -0.8776840567588806, 0.0, 0.0, + -0.9182469844818115, 0.0, 0.0, 0.0, 0.0, -0.3532048463821411, + -0.9129555225372314, -0.30382201075553894, -0.9130634069442749, + -0.14029088616371155, -0.9067401885986328, -0.3532048463821411, + -0.9095264673233032, -0.7763333320617676, -0.8877249956130981, + -0.9067401885986328, 0.0, 0.0, -0.14219175279140472, + -0.8624013066291809, 0.0, 0.0, -0.0062652104534208775, + -0.26513558626174927, -0.9115805625915527, -0.1740998476743698, + -0.9174321293830872, 0.0, 0.0, 0.0, -0.8928236365318298, + -0.3532048463821411, 0.0, -0.9069894552230835, -0.9019953608512878, + -0.12601397931575775, -0.8965531587600708, -0.8806710243225098, 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.0781395435333252, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.03857885301113129, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09916036576032639, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.950827419757843, 0.0, 0.0, -0.8844595551490784, + -0.9880902171134949, 0.0, -0.9135931730270386, 0.0, 0.0, + -0.8865734934806824, 0.0, 0.0, 0.0, 0.0, -0.9721415042877197, + -0.8934438228607178, 0.0, -0.8935670852661133, 0.0, -0.8977303504943848, + -0.9721415042877197, -0.8732306957244873, -0.9931602478027344, + -0.9264294505119324, -0.8977303504943848, 0.0, 0.0, 0.0, + -0.9420908689498901, 0.0, 0.0, 0.0, 0.0, -0.9007306694984436, 0.0, + -0.8962255120277405, 0.0, 0.0, 0.0, -0.9097959399223328, + -0.9721415042877197, 0.0, -0.9012959003448486, -0.8859502673149109, 0.0, + -0.9166562557220459, -0.9260559678077698, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.03229356184601784, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.07127412408590317, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9229600429534912, 0.0, 0.0, -0.942672610282898, + -0.9728675484657288, 0.0, 0.0, 0.0, 0.0, -0.8491672873497009, 0.0, 0.0, + 0.0, 0.0, -0.7070371508598328, -0.8563997745513916, -0.5791441798210144, + -0.8564795851707458, 0.0, -0.8608670234680176, -0.7070371508598328, + -0.835432767868042, -0.9876035451889038, -0.8912897706031799, 0.0, 0.0, + 0.0, 0.0, -0.9094429016113281, 0.0, 0.0, 0.0, -0.828541100025177, 0.0, + -0.05006162449717522, 0.0, 0.0, 0.0, 0.0, 0.0, -0.7070371508598328, 0.0, + -0.8646791577339172, -0.8483649492263794, 0.0, -0.8807095289230347, + -0.8910755515098572, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.19396281242370605, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2860347628593445, 0.0, + -0.19856363534927368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.10562552511692047, 0.0, -0.1967938095331192, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2504103183746338, 0.0, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.28360113501548767, 0.0, 0.0, 0.0, 0.0, 0.0, -0.21476562321186066, + 0.0, -0.29119864106178284, 0.0, -0.1389153152704239, 0.0, 0.0, 0.0, 0.0, + -0.1389153152704239, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.17119431495666504, 0.0, -0.22758157551288605, 0.0, 0.0, 0.0, + -0.055734507739543915, 0.0, 0.0, -0.2006107121706009, 0.0, 0.0, 0.0, + 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.16862812638282776, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.12566640973091125, 0.0, 0.0, -0.12127087265253067, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.1282396763563156, 0.0, -0.13290779292583466, 0.0, + -0.12560081481933594, 0.0, -0.0793524906039238, 0.0, + -0.11729738861322403, -0.12560081481933594, 0.0, 0.0, 0.0, + -0.10490868985652924, 0.0, 0.0, 0.0, 0.0, -0.1340409368276596, 0.0, + -0.13616321980953217, 0.0, 0.0, 0.0, -0.1445472240447998, 0.0, 0.0, + -0.1419268101453781, -0.07443458586931229, 0.0, -0.1196354404091835, + -0.10205377638339996, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08054797351360321, 0.0, 0.0, + -0.22542719542980194, 0.0, 0.0, 0.0, 0.0, 0.0, -0.25834473967552185, + 0.0, -0.2817099690437317, 0.0, -0.24374207854270935, 0.0, + -0.05111048370599747, 0.0, 0.0, -0.24374207854270935, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.29975220561027527, 0.0, -0.2931966781616211, + 0.0, 0.0, 0.0, -0.3110036551952362, 0.0, 0.0, -0.3499772250652313, 0.0, + 0.0, -0.20354889333248138, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.19396281242370605, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2860347628593445, 0.0, + -0.19856363534927368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.10562552511692047, 0.0, -0.1967938095331192, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2504103183746338, 0.0, 0.0, 0.0, 0.0, + 0.0 + ], + [ + 0.0, 0.0, -0.779607892036438, 0.0, 0.0, -0.9507688283920288, + -0.8223935961723328, -0.4585617184638977, -0.7268966436386108, + -0.07375258207321167, -0.8028449416160583, 0.0, 0.0, + -0.6751484274864197, 0.0, 0.0, -0.5447427034378052, -0.7025991678237915, + -0.5171564221382141, -0.7023652791976929, -0.5320048928260803, 0.0, + -0.5447427034378052, -0.6828439235687256, -0.8702430725097656, + -0.7362881302833557, 0.0, 0.0, 0.0, 0.0, -0.7570262551307678, 0.0, 0.0, + -0.32023727893829346, -0.5661568641662598, -0.7093267440795898, + -0.4703267216682434, -0.7048444151878357, -0.3938210904598236, 0.0, 0.0, + 0.0, -0.5447427034378052, 0.0, -0.7107083201408386, -0.6948462128639221, + -0.3988291323184967, -0.7254249453544617, -0.7364533543586731, + -0.6558814644813538 + ], + [ + 0.0, 0.0, -0.766142725944519, 0.0, -0.9137195348739624, + -0.9420938491821289, -0.8123217821121216, -0.6140885353088379, + -0.7126984000205994, -0.4720381498336792, -0.9392663836479187, + -0.6822353601455688, 0.0, -0.7770127654075623, -0.44626539945602417, + 0.0, -0.6028193235397339, -0.6895961165428162, -0.5829227566719055, + -0.6888211369514465, -0.6193459033966064, -0.6940135359764099, + -0.6028193235397339, -0.6692458391189575, -0.8554888367652893, + -0.7230241298675537, -0.6940135359764099, -0.9137195348739624, 0.0, + -0.04988044500350952, -0.7434952259063721, 0.0, 0.0, -0.436565637588501, + -0.6325860619544983, -0.6961170434951782, -0.5545942187309265, + -0.6917248964309692, -0.7225387096405029, 0.0, 0.0, -0.7064266800880432, + -0.6028193235397339, -0.8853359818458557, -0.6972513198852539, + -0.681575357913971, -0.49488067626953125, -0.7119417786598206, + -0.7226921916007996, -0.7728641629219055 + ], + [ + 0.0, 0.0, -0.8904911279678345, 0.0, 0.0, -0.6200758218765259, + -0.8303289413452148, 0.0, -0.9275062084197998, 0.0, 0.0, + -0.9574045538902283, 0.0, 0.0, 0.0, 0.0, -0.4335181415081024, + -0.9529858827590942, -0.3755953311920166, -0.9542689323425293, + -0.17169077694416046, -0.948471188545227, -0.4335181415081024, + -0.951733410358429, -0.8385818600654602, -0.9354369640350342, + -0.948471188545227, 0.0, 0.0, 0.0, -0.9154114127159119, 0.0, 0.0, + -0.0037625611294060946, -0.3242562413215637, -0.9529353976249695, + -0.2144426852464676, -0.9570935964584351, 0.0, 0.0, 0.0, + -0.939483106136322, -0.4335181415081024, 0.0, -0.9491598606109619, + -0.9461429119110107, -0.15509870648384094, -0.9426960349082947, + -0.9311001896858215, 0.0 + ], + [ + 0.0, 0.0, -0.17718777060508728, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.2566702365875244, 0.0, 0.0, -0.19781999289989471, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.22233960032463074, 0.0, -0.23348161578178406, 0.0, + -0.22508205473423004, 0.0, -0.09667447209358215, 0.0, + -0.18350408971309662, -0.22508205473423004, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, -0.23277883231639862, 0.0, -0.2266206294298172, 0.0, 0.0, + 0.0, -0.3173876702785492, 0.0, 0.0, -0.2733706831932068, + -0.0760316401720047, 0.0, -0.18603943288326263, -0.10582669824361801, + 0.0 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0.0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0.0, + 0.0, -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0.0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0.0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0.0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0.0, 0.0, -0.946200966835022, 0.0, 0.0, -0.9536651372909546, + -0.9815068244934082, 0.0, -0.9046499729156494, 0.0, 0.0, + -0.876510739326477, 0.0, -0.04644086956977844, 0.0, 0.0, + -0.9209373593330383, -0.8835890889167786, -0.9074634313583374, + -0.8829982280731201, -0.709896445274353, -0.8880400657653809, + -0.9209373593330383, -0.8647555112838745, -0.98978590965271, + -0.9155617952346802, -0.8880400657653809, 0.0, 0.0, 0.0, + -0.9325156211853027, 0.0, 0.0, 0.0, -0.8544745445251465, + -0.8899013996124268, -0.9691345691680908, -0.8853315711021423, 0.0, 0.0, + 0.0, -0.8995015621185303, -0.9209373593330383, 0.0, -0.8909935355186462, + -0.8772528767585754, -0.777913510799408, -0.9055085182189941, + -0.9152224659919739, -0.012976855039596558 + ], + [ + 0.0, 0.0, -0.9337804913520813, 0.0, 0.0, -0.9038553237915039, + -0.9798886775970459, 0.0, 0.0, 0.0, 0.0, -0.8647330403327942, 0.0, 0.0, + 0.0, 0.0, -0.4909673035144806, -0.8717935681343079, + -0.059610139578580856, -0.8720062971115112, 0.0, -0.8761419057846069, + -0.4909673035144806, -0.8506245017051697, -0.9911125302314758, + -0.9060645699501038, 0.0, 0.0, 0.0, 0.0, -0.923003077507019, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.4909673035144806, 0.0, + -0.8799822330474854, -0.8635164499282837, 0.0, -0.8958193063735962, + -0.9057195782661438, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.11542823165655136, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0931195393204689, 0.0, + -0.14593791961669922, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.27822044491767883, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, -0.08928326517343521, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9477829933166504, 0.0, 0.0, -0.9290879368782043, + -0.9872416257858276, 0.0, 0.0, 0.0, 0.0, -0.8763316869735718, 0.0, 0.0, + 0.0, 0.0, -0.7609349489212036, -0.8836007714271545, -0.634563148021698, + -0.8836711645126343, 0.0, -0.8881282210350037, -0.7609349489212036, + -0.8636199235916138, -0.9935269355773926, -0.9180521965026855, 0.0, 0.0, + 0.0, 0.0, -0.9353630542755127, 0.0, 0.0, 0.0, -0.5171367526054382, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.7609349489212036, 0.0, + -0.8918940424919128, -0.8764418363571167, 0.0, -0.9078019857406616, + -0.9178204536437988, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8296747207641602, 0.0, 0.0, -0.979621946811676, + -0.8788198828697205, -0.5379257202148438, 0.0, 0.0, 0.0, + -0.7450671195983887, 0.0, -0.848019003868103, 0.0, 0.0, + -0.6185047626495361, -0.7525266408920288, -0.5856917500495911, + -0.7522907257080078, -0.6195651888847351, -0.7571994066238403, + -0.6185047626495361, -0.732287585735321, -0.9175415635108948, + -0.7874626517295837, 0.0, 0.0, 0.0, 0.0, -0.8084316253662109, 0.0, 0.0, + -0.30985942482948303, -0.6538456678390503, 0.0, -0.5232192873954773, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.6185047626495361, 0.0, -0.7608258128166199, + -0.7448807954788208, -0.4282705783843994, -0.7763001918792725, + -0.7876691818237305, -0.8818898797035217 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0.0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0.0, + 0.0, -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0.0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.23834073543548584, 0.0, -0.7372550368309021, 0.0, + -0.7664793133735657, -0.9120775461196899, -0.7760564088821411, + -0.5390255451202393, 0.0, -0.40304696559906006, -0.765783429145813, + -0.6551263332366943, 0.0, -0.68967205286026, -0.7655104398727417, + -0.004438602365553379, -0.5554239749908447, -0.6622011065483093, + -0.5365957021713257, -0.6615182161331177, -0.5607114434242249, + -0.6665970683097839, -0.5554239749908447, -0.6432245373725891, + -0.8243244886398315, -0.6939780712127686, 0.0, -0.7664793133735657, + -0.28802061080932617, -0.08039788901805878, -0.7142382264137268, 0.0, + 0.0, -0.40610337257385254, -0.5785663723945618, 0.0, + -0.5067818760871887, 0.0, -0.5864721536636353, 0.0, 0.0, 0.0, + -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.1194436103105545, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11758587509393692, 0.0, + -0.15922626852989197, 0.0, -0.06433702260255814, 0.0, 0.0, 0.0, 0.0, + -0.06433702260255814, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.1005786806344986, 0.0, -0.13795040547847748, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, -0.16794657707214355, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9518633484840393, 0.0, 0.0, -0.8637669086456299, + -0.9882077574729919, 0.0, -0.9159206748008728, 0.0, 0.0, + -0.8897854089736938, 0.0, 0.0, 0.0, 0.0, 0.0, -0.896591305732727, 0.0, + -0.8968219757080078, 0.0, -0.9007447361946106, 0.0, -0.8758711814880371, + -0.9920739531517029, -0.929534375667572, -0.9007447361946106, 0.0, 0.0, + 0.0, -0.944490909576416, 0.0, 0.0, 0.0, 0.0, -0.9040683507919312, 0.0, + -0.899667501449585, 0.0, 0.0, 0.0, -0.9127002954483032, 0.0, 0.0, + -0.9044694304466248, -0.8885601162910461, 0.0, -0.9199093580245972, + -0.9289295077323914, 0.0 + ], + [ + 0.0, 0.0, -0.7722906470298767, 0.0, -0.672976016998291, + -0.9469603300094604, -0.8185788989067078, -0.5510818362236023, + -0.7184768319129944, -0.2536085247993469, -0.8961593508720398, + -0.6879361867904663, 0.0, -0.7582013010978699, 0.0, 0.0, + -0.5780461430549622, -0.6953597664833069, -0.5537449717521667, + -0.6946479678153992, -0.5840862989425659, -0.6997684836387634, + -0.5780461430549622, -0.6744765639305115, -0.8637142181396484, + -0.7291181087493896, -0.6997684836387634, -0.672976016998291, 0.0, 0.0, + -0.749650239944458, 0.0, 0.0, -0.3723272383213043, -0.6070451140403748, + -0.702041506767273, -0.5134016871452332, -0.6976483464241028, + -0.6282814145088196, 0.0, 0.0, -0.7123656868934631, -0.5780461430549622, + 0.0, -0.703151524066925, -0.6868947148323059, -0.4462285339832306, + -0.7179582715034485, -0.7287024855613708, -0.7473130226135254 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.05254611745476723, 0.0, 0.0, 0.0, 0.0, 0.0, -0.02149735949933529, + 0.0, -0.06650425493717194, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0948498398065567, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.02964828908443451, 0.0, 0.0, + -0.4420463740825653, 0.0, 0.0, 0.0, 0.0, 0.0, -0.41362714767456055, 0.0, + -0.5241114497184753, 0.0, -0.38701164722442627, 0.0, + -0.2589840888977051, 0.0, 0.0, -0.38701164722442627, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, -0.35662782192230225, 0.0, -0.3676978647708893, 0.0, + 0.0, 0.0, -0.27744007110595703, 0.0, 0.0, -0.45104897022247314, 0.0, + 0.0, -0.0540756955742836, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.9505603313446045, 0.0, 0.0, -0.9277820587158203, + -0.9849429726600647, 0.0, -0.9117993116378784, 0.0, 0.0, + -0.8850699663162231, 0.0, 0.0, 0.0, 0.0, -0.9644391536712646, + -0.8919291496276855, -0.9608743786811829, -0.8914299011230469, + -0.397500604391098, -0.8962222337722778, -0.9644391536712646, + -0.8728280663490295, -0.99196857213974, -0.9232093095779419, + -0.8962222337722778, 0.0, 0.0, 0.0, -0.9391534328460693, 0.0, 0.0, 0.0, + -0.8288756012916565, -0.8983454704284668, -0.6073521971702576, + -0.8938975930213928, 0.0, 0.0, 0.0, -0.9072363972663879, + -0.9644391536712646, 0.0, -0.8991549015045166, -0.8852534890174866, 0.0, + -0.9134413599967957, -0.9227463006973267, 0.0 + ], + [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.2304457128047943, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2543693780899048, 0.0, + -0.31269365549087524, 0.0, -0.21807238459587097, 0.0, + -0.016527514904737473, 0.0, 0.0, -0.21807238459587097, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, -0.3246256113052368, 0.0, -0.3199475407600403, + 0.0, 0.0, 0.0, -0.2594970464706421, 0.0, 0.0, -0.37568399310112, 0.0, + 0.0, 0.0, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.024907004088163376, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.24054409563541412, 0.0, 0.0, -0.25269585847854614, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.2755926847457886, 0.0, -0.3162230849266052, 0.0, + -0.2729381322860718, 0.0, -0.10839133709669113, 0.0, + -0.18961884081363678, -0.2729381322860718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, -0.30935370922088623, 0.0, -0.298736572265625, 0.0, 0.0, 0.0, + -0.49049776792526245, 0.0, 0.0, -0.3620716631412506, + -0.06655518710613251, 0.0, -0.2807464897632599, 0.0, 0.0 + ], + [ + 0.0, 0.0, -0.8584626913070679, 0.0, 0.0, -0.979270875453949, + -0.909518301486969, 0.0, -0.8076501488685608, 0.0, 0.0, + -0.7757360935211182, 0.0, -0.2061820924282074, 0.0, 0.0, + -0.5298843383789062, -0.7831470966339111, -0.4682753086090088, + -0.7832844853401184, -0.42705103754997253, -0.7877506017684937, + -0.5298843383789062, -0.762237012386322, -0.9466448426246643, + -0.8186197876930237, -0.7877506017684937, 0.0, 0.0, 0.0, + -0.8391203880310059, 0.0, 0.0, 0.0, -0.5514553189277649, + -0.7905962467193604, -0.32642799615859985, -0.7859317064285278, 0.0, + 0.0, 0.0, 0.0, -0.5298843383789062, 0.0, -0.7917589545249939, + -0.7748526334762573, -0.18125492334365845, -0.8075706958770752, + -0.8187859654426575, 0.0 + ] + ], + "velocity_params": { + "embeddings": ["umap"], + "fit_offset": false, + "mode": "dynamical", + "mode_neighbors": "distances", + "n_recurse_neighbors": 2, + "perc": [5, 95] + } + } +} From 5baa10a109b71e76adf198f0d3acba86d3337863 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 18 Sep 2024 16:37:37 -0400 Subject: [PATCH 177/177] tests(data): add postprocessed pancreas 50 by 7 fixture Signed-off-by: Cameron Smith --- .../data/postprocessed_pancreas_50_7.json | 7603 +++++++++++++++++ 1 file changed, 7603 insertions(+) create mode 100644 src/pyrovelocity/tests/data/postprocessed_pancreas_50_7.json diff --git a/src/pyrovelocity/tests/data/postprocessed_pancreas_50_7.json b/src/pyrovelocity/tests/data/postprocessed_pancreas_50_7.json new file mode 100644 index 000000000..01f593f8c --- /dev/null +++ b/src/pyrovelocity/tests/data/postprocessed_pancreas_50_7.json @@ -0,0 +1,7603 @@ +{ + "X": [ + [0, 4.326815605163574, 0, 2.006857395172119, 0, 0, 0], + [0, 2.650247573852539, 0, 2.2794899940490723, 0, 0, 0.7402511239051819], + [0, 0, 1.5854207277297974, 0, 0, 0.6782041788101196, 0], + [1.536940574645996, 0, 0, 3.9763405323028564, 0, 0, 0.7960558533668518], + [0, 0, 0, 0.8624611496925354, 0.8624611496925354, 0, 0.8624611496925354], + [0.8670551776885986, 0.8670551776885986, 0.8670551776885986, 0, 0, 0, 0], + [0.6265450716018677, 0, 0, 0.6265450716018677, 0, 0, 0], + [0, 0, 0, 1.8504177331924438, 0, 0, 0], + [0, 0, 1.603163242340088, 0, 0, 0, 0], + [1.5240920782089233, 0, 0, 0.7870888113975525, 0, 0, 1.2220039367675781], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0.701313316822052, 0, 0, 0, 0], + [1.695500135421753, 0, 0, 1.9362196922302246, 0.9095172882080078, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [1.3550893068313599, 0, 0, 1.6706572771072388, 0, 0, 0.8914050459861755], + [0, 0, 0.36291196942329407, 0, 0, 0, 0], + [1.0312161445617676, 0, 0, 2.847247838973999, 0, 0, 0], + [0, 0, 1.9392434358596802, 0, 0, 0.4670924246311188, 0], + [0.5036827325820923, 0, 0, 1.4525551795959473, 0, 0, 0.8370780348777771], + [0, 0, 0, 0, 0, 1.191532015800476, 0], + [ + 0.7053398489952087, 0, 0, 0.7053398489952087, 1.11483633518219, 0, + 0.7053398489952087 + ], + [0, 0, 1.0992354154586792, 0, 0, 0, 0], + [1.0468506813049316, 0, 0, 2.3266265392303467, 0, 0, 0], + [0, 0, 0, 0, 0, 0.9281196594238281, 0], + [0, 0, 0, 0, 0, 0, 0.7881980538368225], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 1.648819923400879, 0, 0, 0, 0], + [0.7382116913795471, 0, 0, 3.5512800216674805, 0, 0, 0.7382116913795471], + [1.6124337911605835, 0, 0, 3.1816415786743164, 0, 0, 0.6950206756591797], + [0, 0, 0.9303247928619385, 0, 0, 0, 0], + [0.5537118315696716, 0, 0.5537118315696716, 0, 0, 0, 0], + [ + 1.1803479194641113, 0.7550666332244873, 0, 2.411419630050659, + 0.7550666332244873, 0, 0.7550666332244873 + ], + [2.0084683895111084, 0, 0, 3.8038337230682373, 1.8183228969573975, 0, 0], + [0, 0, 0, 1.515876293182373, 0, 0, 0], + [0, 0, 0, 1.266176462173462, 0.8213784694671631, 0, 0.8213784694671631], + [0, 0, 0, 0, 0, 0.67161625623703, 0], + [0.7382116913795471, 0, 0, 0.7382116913795471, 0.7382116913795471, 0, 0], + [0, 0, 0.6202060580253601, 0, 0, 0.6202060580253601, 0], + [1.244395136833191, 0, 0, 0, 0.804427981376648, 0, 0.804427981376648], + [ + 1.527440071105957, 0, 0, 1.9474256038665771, 0.7894220352172852, 0, + 0.7894220352172852 + ], + [ + 0, 1.0231027603149414, 0, 1.9791160821914673, 1.3009321689605713, 0, + 0.6370562314987183 + ], + [0, 0, 1.4938890933990479, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0.7723221182823181], + [0, 0, 0, 2.0330097675323486, 0, 0, 0], + [0, 0, 0, 0, 0, 1.32130765914917, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0.586401104927063, 0, 2.1013951301574707, 0.586401104927063, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0.7949232459068298, 0, 0, 0, 0, 0, 0] + ], + "layers": { + "Ms": [ + [ + 1.4032845497131348, 3.052248477935791, 0.06576139479875565, + 8.657106399536133, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 0.7000881433486938, 0.024166902527213097, 0.8499667644500732, + 3.014936685562134, 0.33464813232421875, 0.3015934228897095, + 0.25990477204322815 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0, 0.5893792510032654 + ], + [ + 1.1863106489181519, 0.5366032123565674, 0.04058506339788437, + 6.795828342437744, 0.5724716186523438, 0.044992588460445404, + 0.559857189655304 + ], + [ + 0.6932769417762756, 0.47997787594795227, 0.44088229537010193, + 4.344834327697754, 0.2850591838359833, 0.21075108647346497, + 0.49133139848709106 + ], + [ + 1.1087390184402466, 2.323683738708496, 0.4136205315589905, + 6.5146074295043945, 0.4866008758544922, 0.12280356884002686, + 0.5009723901748657 + ], + [ + 0.49234479665756226, 0.02658359333872795, 0.9349634647369385, + 2.1962857246398926, 0.13129226863384247, 0.3317527770996094, + 0.22988879680633545 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.40627655386924744, + 7.445266246795654, 0.5561153292655945, 0.0277238916605711, + 0.5725398659706116 + ], + [ + 1.2671302556991577, 2.6556384563446045, 0.03942548856139183, + 7.445266246795654, 0.5561153292655945, 0, 0.5725398659706116 + ], + [ + 0.23144376277923584, 0.02658359333872795, 0.9349634647369385, + 1.6431336402893066, 0.13734030723571777, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0816965103149414, 2.2670083045959473, 0.15524429082870483, + 6.355714321136475, 0.4747326076030731, 0.18359968066215515, + 0.4887535572052002 + ], + [ + 1.3859236240386963, 2.90460467338562, 0.04312162846326828, + 8.143259048461914, 0.60825115442276, 0, 0.6262154579162598 + ], + [ + 0.2592097520828247, 2.435494899749756, 0.9048033356666565, + 1.874214768409729, 0.1681419014930725, 0.32105106115341187, + 0.15395362675189972 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.2678501307964325, 0.02658359333872795, 0.9349634647369385, + 1.6795400381088257, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.6130998134613037, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.27191945910453796, 0.02658359333872795, 0.9349634647369385, + 1.3459373712539673, 0.13734030723571777, 0.3317527770996094, + 0.1990664005279541 + ], + [ + 1.0019835233688354, 2.0654966831207275, 0.49095699191093445, + 5.790762901306152, 0.4325341284275055, 0.16561108827590942, + 0.4453088343143463 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 0.28376471996307373, 0.04599640518426895, 0.9809598922729492, + 1.2512832880020142, 0.042454395443201065, 0.3317527770996094, + 0.16491524875164032 + ], + [ + 0.6886924505233765, 0.04599640518426895, 0.27985262870788574, + 2.6798255443573, 0.23397643864154816, 0.22029715776443481, + 0.4500373601913452 + ], + [ + 0.3867968022823334, 0.03942548856139183, 0.8408226370811462, + 2.045945405960083, 0.20055124163627625, 0.28435951471328735, + 0.2388278841972351 + ], + [ + 0.3083258271217346, 0.02658359333872795, 0.9349634647369385, + 1.5007907152175903, 0.17374666035175323, 0.3317527770996094, + 0.15908540785312653 + ], + [ + 1.3043988943099976, 2.7337453365325928, 0.04058506339788437, + 7.664244174957275, 0.5724716186523438, 0, 0.5893792510032654 + ], + [ + 1.3818784952163696, 2.9537885189056396, 0.20141148567199707, + 8.37784481048584, 0.627872109413147, 0, 0.607724666595459 + ], + [ + 0.46157321333885193, 2.3593857288360596, 0.8765282034873962, + 2.467672348022461, 0.12308648228645325, 0.3110182285308838, + 0.2530028820037842 + ], + [ + 0.5369269251823425, 0.05662532523274422, 0.8249676823616028, + 2.6481261253356934, 0.22183164954185486, 0.29272302985191345, + 0.2736946642398834 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 1.4492809772491455, 3.0982449054718018, 0.1753745675086975, + 8.657106399536133, 0.648801326751709, 0.03234454244375229, + 0.6279822587966919 + ], + [ + 1.0784907341003418, 2.2670083045959473, 0.7177754640579224, + 6.33446741104126, 0.4747326076030731, 0.12617842853069305, + 0.45949918031692505 + ], + [ + 0.9393595457077026, 1.9364030361175537, 0.4984320402145386, + 5.428840160369873, 0.40550073981285095, 0.20734548568725586, + 0.41747698187828064 + ], + [ + 0.270278662443161, 0.02572605572640896, 0.9048033356666565, + 1.4826339483261108, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 0.980201244354248, 2.020594358444214, 0.6176607608795166, + 5.664876461029053, 0.42313119769096375, 0.07353031635284424, + 0.43562814593315125 + ], + [ + 0.2311086356639862, 0.02572605572640896, 0.9048033356666565, + 1.811358094215393, 0.1681419014930725, 0.32105106115341187, + 0.1926449090242386 + ], + [ + 1.2319321632385254, 2.5818705558776855, 0.24210062623023987, + 7.238452911376953, 0.540667712688446, 0.10329599678516388, + 0.5566359162330627 + ], + [ + 1.4739375114440918, 3.0982449054718018, 0.0706530213356018, + 8.657106399536133, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 1.4783188104629517, 3.0982449054718018, 0.04599640518426895, + 8.68614387512207, 0.648801326751709, 0, 0.6279822587966919 + ], + [ + 0.40672144293785095, 0.02658359333872795, 0.9349634647369385, + 1.6562508344650269, 0.14662493765354156, 0.3317527770996094, + 0.2459142655134201 + ], + [ + 0.9017851948738098, 1.8589470386505127, 0.5885758399963379, + 5.211686611175537, 0.3892807066440582, 0.1990516483783722, + 0.4007778763771057 + ], + [ + 1.3399431705474854, 2.8165862560272217, 0.15005283057689667, + 7.870096683502197, 0.5898192524909973, 0.0260397307574749, + 0.5708929300308228 + ], + [ + 0.3138049244880676, 0.02658359333872795, 0.9349634647369385, + 1.4643843173980713, 0.17852088809013367, 0.3317527770996094, + 0.20026598870754242 + ], + [ + 0.32395216822624207, 0.04451264813542366, 0.9493159651756287, + 2.0597450733184814, 0.07631684839725494, 0.32105106115341187, + 0.15258191525936127 + ], + [ + 1.028328537940979, 2.1615657806396484, 0.6843906044960022, + 6.039841651916504, 0.4526520073413849, 0.19587987661361694, + 0.4381271004676819 + ], + [ + 0.3447604775428772, 0.04058506339788437, 0.8655527830123901, + 2.0446953773498535, 0.17011399567127228, 0.29272302985191345, + 0.2480343133211136 + ], + [ + 0.42723068594932556, 0.03942548856139183, 0.8408226370811462, + 1.266152262687683, 0.14200639724731445, 0.28435951471328735, + 0.2568689286708832 + ], + [ + 1.0997380018234253, 2.2670083045959473, 0.20298290252685547, + 6.355714321136475, 0.4747326076030731, 0.11656749248504639, + 0.4887535572052002 + ] + ], + "Mu": [ + [ + 1.458009958267212, 9.731120109558105, 0.6230944395065308, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.5156049728393555 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.7034346461296082, 0.8546698093414307, 1.8519641160964966, + 0.09599451720714569, 1.0511096715927124, 1.3451807498931885, + 2.1948485374450684 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 1.2476564645767212, 8.576372146606445, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.79750394821167 + ], + [ + 1.2476564645767212, 1.62242591381073, 0.3511691093444824, + 0.18465566635131836, 1.6036499738693237, 0.39111989736557007, + 4.611633777618408 + ], + [ + 1.1063703298568726, 1.4030550718307495, 0.5904406309127808, + 0.1215687170624733, 0.9337299466133118, 0.8598318099975586, + 3.7226784229278564 + ], + [ + 1.0984139442443848, 7.452322483062744, 1.2351198196411133, + 0.1893647164106369, 1.4338096380233765, 0.8525708913803101, + 3.984128475189209 + ], + [ + 0.6637682318687439, 0.9833465814590454, 2.0168375968933105, + 0.14880384504795074, 0.7101262807846069, 1.4796987771987915, + 2.3618826866149902 + ], + [ + 1.285057783126831, 8.440470695495605, 1.108371376991272, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.415059566497803 + ], + [ + 1.2120089530944824, 8.38078498840332, 0.341135710477829, + 0.21641680598258972, 1.6386394500732422, 0.026373624801635742, + 4.75933313369751 + ], + [ + 0.7032443284988403, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.7120826840400696, 1.4796987771987915, + 2.4455509185791016 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.0346418619155884, 7.245456695556641, 0.6500575542449951, + 0.18474607169628143, 1.3988385200500488, 0.9318276047706604, + 4.062845230102539 + ], + [ + 1.3256348371505737, 9.074463844299316, 0.3731171786785126, + 0.23670588433742523, 1.7922618389129639, 0.028846152126789093, + 4.942225933074951 + ], + [ + 0.6574062705039978, 8.519707679748535, 1.9248610734939575, + 0.13281705975532532, 0.9580450654029846, 1.4319665431976318, + 2.317383050918579 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.7152480483055115, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.8811647891998291, 1.4796987771987915, + 2.284665107727051 + ], + [ + 0.9893571734428406, 6.315342903137207, 1.4242814779281616, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.3729424476623535 + ], + [ + 0.7289866805076599, 0.8742592334747314, 1.9525864124298096, + 0.1055939719080925, 0.47706568241119385, 1.4796987771987915, + 2.8923025131225586 + ], + [ + 1.0216199159622192, 6.679286479949951, 1.1493229866027832, + 0.16832418739795685, 1.2744975090026855, 0.7319786548614502, + 3.5442440509796143 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 0.6367191672325134, 0.602973222732544, 1.9525864124298096, + 0.1055939719080925, 0.39889806509017944, 1.4796987771987915, + 2.620482921600342 + ], + [ + 1.0884222984313965, 0.42017456889152527, 1.2373348474502563, + 0.1377778798341751, 0.9382034540176392, 1.1281973123550415, + 3.680722713470459 + ], + [ + 0.822378396987915, 0.5458196997642517, 1.6904687881469727, + 0.11809532344341278, 0.7373080849647522, 1.2946867942810059, + 2.744187355041504 + ], + [ + 0.7714251279830933, 0.9080756902694702, 1.989022970199585, + 0.1055939719080925, 0.7374522686004639, 1.4796987771987915, + 2.489124298095703 + ], + [ + 1.2476564645767212, 8.627277374267578, 0.3511691093444824, + 0.22278201580047607, 1.6868348121643066, 0.027149319648742676, + 4.792720794677734 + ], + [ + 1.3859648704528809, 9.407549858093262, 0.7561504244804382, + 0.24434158205986023, 1.850076675415039, 0.029776671901345253, + 4.369940280914307 + ], + [ + 0.5701303482055664, 8.324034690856934, 1.8647091388702393, + 0.16917578876018524, 0.902488112449646, 1.3872175216674805, + 2.4578704833984375 + ], + [ + 0.7330551743507385, 0.9666101932525635, 1.8186405897140503, + 0.19438445568084717, 0.9175675511360168, 1.3056166172027588, + 3.123826742172241 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4480233192443848, 9.72996997833252, 0.650699257850647, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.1461775302886963, 7.3564558029174805, 1.5189889669418335, + 0.18474607169628143, 1.3988385200500488, 0.36037319898605347, + 3.424264669418335 + ], + [ + 0.9676808714866638, 6.350621700286865, 1.2116297483444214, + 0.15780392289161682, 1.1948415040969849, 0.944042444229126, + 3.4703469276428223 + ], + [ + 0.7896954417228699, 0.8787828683853149, 1.9223253726959229, + 0.10218770802021027, 0.7643809914588928, 1.4319665431976318, + 2.709317684173584 + ], + [ + 1.0323727130889893, 6.632993698120117, 1.4074960947036743, + 0.16466496884822845, 1.246790885925293, 0.4723442494869232, + 3.6212317943573 + ], + [ + 0.6761797070503235, 0.8787828683853149, 1.9248610734939575, + 0.13281705975532532, 1.0058867931365967, 1.4319665431976318, + 2.436093807220459 + ], + [ + 1.2204599380493164, 8.231734275817871, 0.7940479516983032, + 0.21040523052215576, 1.593121886253357, 0.21294988691806793, + 4.426808834075928 + ], + [ + 1.3974816799163818, 9.679428100585938, 0.44111284613609314, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.679828643798828 + ], + [ + 1.4140106439590454, 9.679428100585938, 0.39799168705940247, + 0.25248628854751587, 1.9117462635040283, 0.03076923079788685, + 4.878175735473633 + ], + [ + 0.6609135270118713, 0.9401367902755737, 1.989022970199585, + 0.1055939719080925, 0.8400647640228271, 1.4796987771987915, + 2.0362207889556885 + ], + [ + 0.9497827887535095, 6.121621608734131, 1.3673101663589478, + 0.15149177610874176, 1.147047519683838, 0.9062806963920593, + 3.331533193588257 + ], + [ + 1.3254634141921997, 8.882596969604492, 0.8946331143379211, + 0.22953300178050995, 1.7379511594772339, 0.10021766275167465, + 4.254389762878418 + ], + [ + 0.733043909072876, 0.8742592334747314, 1.9830212593078613, + 0.1055939719080925, 0.6998255252838135, 1.4796987771987915, + 2.5380139350891113 + ], + [ + 0.6405916213989258, 0.6162480711936951, 1.9085938930511475, + 0.13333342969417572, 0.36938712000846863, 1.4319665431976318, + 2.3904776573181152 + ], + [ + 1.0928668975830078, 7.049684524536133, 1.589895486831665, + 0.17615321278572083, 1.3337763547897339, 0.7660241723060608, + 3.264996290206909 + ], + [ + 0.8194690942764282, 0.5618732571601868, 1.7527081966400146, + 0.1215687170624733, 0.553757905960083, 1.3327659368515015, + 2.829345941543579 + ], + [ + 0.8883791565895081, 0.5761994123458862, 1.8241499662399292, + 0.09050911664962769, 0.6562696099281311, 1.2946867942810059, + 2.7510621547698975 + ], + [ + 1.0770013332366943, 7.252225875854492, 0.615350604057312, + 0.18474607169628143, 1.3988385200500488, 0.7673612833023071, + 4.062845230102539 + ] + ], + "fit_t": [ + [ + 19.426160337552737, 20, 8.214375156523918, 19.01602169645363, + 19.557391560932427, 5.562528014343339, 19.22952710495964 + ], + [ + 20, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20 + ], + [ + 9.858074194691318, 7.914981918500489, 18.750995642171677, + 9.352432203836482, 8.900453139399993, 17.631717954785938, + 11.680821800358196 + ], + [ + 20, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20 + ], + [ + 18.495903795256382, 16.750129990814887, 8.149555445694725, + 18.647851910744183, 18.146945122936128, 6.098557460342898, + 18.90901597821436 + ], + [ + 16.53015556580884, 15.144628910035308, 9.395854055068865, + 17.545181655391357, 16.418168715241784, 7.656814035813134, + 18.050070365425725 + ], + [ + 11.60833897616936, 10.821436055645604, 13.249656847176134, + 13.606788309976515, 11.893148539680377, 12.742900218693137, + 15.383675216721652 + ], + [ + 16.417720907379582, 14.378652577441134, 10.867768190185414, + 15.981876122661436, 16.252581277105396, 9.221200911526083, + 17.162629118427724 + ], + [ + 7.502109704641349, 6.942820838627702, 19.769596794390186, + 8.24193410454175, 7.61286515196223, 18.776333482743162, + 10.745098039215689 + ], + [ + 17.952982889134717, 16.811761787480787, 8.998604282053877, + 18.166855335775505, 17.94713907069114, 7.019273541360132, + 18.408303641066468 + ], + [ + 18.09041507080013, 16.288980907849353, 8.63367996718051, + 18.150497706248835, 17.684103210579547, 6.688864387251226, + 18.578348121531743 + ], + [ + 6.776371308016876, 5.946632782719188, 19.689456548960678, + 8.315103597529157, 6.727648273827087, 19.65486329000448, + 10.380622837370247 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 16.16548172851233, 14.035390941499823, 11.218411707043257, + 15.631637636363449, 15.644587623136143, 9.626000822962128, + 17.074857111248487 + ], + [ + 19.27215089361318, 17.75889361001499, 7.41453755469918, + 19.747741671640885, 19.032161887300983, 5.126624564539632, + 19.50691939785979 + ], + [ + 8.436095674471678, 6.871336076600899, 19.340295547824994, + 8.67764416128281, 7.835596498477102, 18.552361805667434, + 10.786917298776121 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.759493670886075, 5.8703939008894555, 19.984973703981968, + 8.32452694132299, 6.65092947772204, 19.430748543254143, + 10.279123414071512 + ], + [ + 14.50421908508815, 12.862134401200136, 13.298271678718402, + 13.517020942097442, 14.318382683795155, 12.046167368577748, + 15.70357519686396 + ], + [ + 6.691983122362868, 5.44853875476493, 19.293764087152514, + 8.344482257592283, 6.503393331366183, 20, 10.431372549019608 + ], + [ + 15.13924008334364, 13.66200724217612, 12.448451108910222, + 14.367265187083097, 14.95032907968616, 11.139996700555466, + 16.25836171414341 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 6.886075949367089, 5.14866581956798, 18.84297520661157, + 8.33062439907194, 6.780761286515194, 19.83415508740475, + 10.865051903114189 + ], + [ + 9.476793248945144, 9.21473951715375, 13.343350864012024, + 13.480671023458017, 9.997049277072877, 13.200358583594795, + 14.652825836216845 + ], + [ + 7.942133445717131, 7.053185367694067, 16.786518484174934, + 10.030397301819624, 8.22492901041257, 17.08522684095704, + 12.492337529995487 + ], + [ + 6.751054852320674, 5.850063532401526, 19.784623090408214, + 8.32618988434543, 6.633225140159338, 19.394890183774095, + 10.288350634371396 + ], + [ + 18.421443635050036, 16.750129990814887, 8.25120391383517, + 18.661884190949262, 18.089666386536614, 6.272575961156832, + 18.852024326180988 + ], + [ + 18.987340216018055, 18.818705675787417, 8.729792551787675, + 18.473395248050696, 19.057861162841178, 6.0814615972751325, + 18.975330513161627 + ], + [ + 9.208860279214178, 7.6953617333443, 19.02235062323393, 8.99518105173004, + 8.708320584480159, 17.758291319462696, 11.34515511764662 + ], + [ + 9.00223336894725, 8.314522356886426, 18.119944320687843, + 9.674484152237131, 9.357262664538373, 17.291111035420982, + 11.740280318874104 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 19.83966244725738, 18.881829733163915, 7.448034059604307, + 19.63635502556817, 19.999999999999996, 4.706409681757056, + 19.718569780853525 + ], + [ + 15.813521278349915, 14.91678671604552, 12.306901833469869, + 14.670613007102775, 16.033219388546648, 10.468890843916565, + 16.534727190766137 + ], + [ + 14.541138915486558, 12.496823100598009, 13.173052548033672, + 13.50310559719787, 14.248303015842524, 11.948117169066071, + 15.720876234539537 + ], + [ + 6.819109281881754, 6.099110046517619, 19.286976437292143, + 8.711975885384017, 6.836158169589718, 19.441591211831057, + 10.617255520070206 + ], + [ + 14.942211937108071, 13.3749512116991, 12.540423582424141, + 14.079825301908384, 14.790818907026791, 11.277843443134708, + 16.0162473944111 + ], + [ + 7.162106395461434, 6.364716451769193, 19.708682129688327, + 8.694810023333412, 7.116000901678185, 18.97311913443754, + 10.572607683568647 + ], + [ + 17.714485846638045, 15.883099671164532, 9.22447575425873, + 17.654268872756578, 17.527293403544764, 7.272523206941286, + 18.200691227888207 + ], + [ + 19.83966244725738, 18.886912325285895, 7.417981467568246, + 19.674522829574407, 19.94098554145765, 4.6481398476019695, + 19.843137254901965 + ], + [ + 20, 18.907242693773828, 6.862008514901077, 20.32659731182635, + 19.958689879020355, 4.276109367996411, 20 + ], + [ + 7.156118143459914, 6.668360864040662, 20, 8.25856353476616, + 7.229271171437, 18.879426266248316, 10.698961937716264 + ], + [ + 14.131644516730665, 12.37204482153991, 13.65289154476376, + 13.022140789039712, 13.876658747754838, 12.5163594439713, + 15.404843142907163 + ], + [ + 18.41963902058667, 18.301951768348186, 8.929262373554797, + 18.00448095507974, 18.686123137148993, 6.62157191507445, + 18.735450981041314 + ], + [ + 6.894514767932487, 6.058449809402797, 19.539193588780364, + 8.306234568076139, 6.845677190911772, 19.421783953384132, + 10.50980392156863 + ], + [ + 7.3091051584241535, 5.8138290927288905, 18.036400935703455, + 8.694273590144332, 7.361577176776227, 18.678155233856437, + 11.5950431394543 + ], + [ + 15.325286161589917, 14.265535091270477, 12.905141417145897, + 14.028202431214313, 15.464532132482608, 11.226584593601137, + 16.187333126201796 + ], + [ + 7.676842517274287, 6.610359198517042, 17.200688608809045, + 9.743936475105002, 7.873222676005576, 17.615418241483315, + 12.114796889379106 + ], + [ + 8.03616599106715, 7.114176470317734, 16.89384916502004, + 10.03087242837534, 8.321038266991808, 17.192801914387847, + 12.531882758010667 + ], + [ + 16.208704941690172, 14.035390941499823, 11.075478660138753, + 15.647928770763226, 15.705041453311111, 9.50137117005836, + 17.149124975314816 + ] + ], + "fit_tau": [ + [ + 50.37974420793462, 29.580684607183542, 4.057099713274281, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 23.252593942992075 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 5.316455418927775, 0.91486653424279, 22.238916946836802, + 0.8587755453516607, 7.789908121313889, 23.397578340456285, + 7.197231458545165 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 15.949366256783323, 20.584497020462774, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 15.189872625507926, 1.9822108241927117, 2.2539442851523788, + 2.0038096058205417, 17.350249906562755, 3.227252184890522, + 22.698960753873216 + ], + [ + 10.126581750338618, 1.6772553127784482, 4.658151522648249, + 1.145034060468881, 6.550604556559406, 10.488569600894197, + 15.640137592607765 + ], + [ + 11.139239925372479, 15.095297815006036, 10.368143711700942, + 2.099229110859615, 13.101209113118813, 8.874943508448936, + 17.30103715996434 + ], + [ + 4.810126331410843, 1.0673442899499217, 27.49812027885902, + 1.3358730705470279, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 16.962024431817184, 19.669630486219987, 9.166040092953006, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 21.314877781076067 + ], + [ + 14.43037899423253, 19.364674974805723, 2.1036813328088866, + 2.576326636054982, 17.881380005743246, 0.13446884103710507, + 24.35986032122979 + ], + [ + 4.810126331410843, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 7.61245635038431 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 10.126581750338618, 14.485386792177508, 4.5078885703047575, + 2.0038096058205417, 12.57007901393832, 11.026444965042618, + 17.57785375452377 + ], + [ + 19.99999895691877, 23.939007646019675, 2.4042072374958705, + 3.053424161250349, 23.723811096728664, 0.26893768207421015, + 27.54325115866323 + ], + [ + 4.3037972438939125, 18.754763951977196, 24.643124184332674, + 1.145034060468881, 6.196517823772412, 26.75929936638391, + 7.197231458545165 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.810126331410843, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 5.665387724591919, 26.75929936638391, + 7.058823161265451 + ], + [ + 8.860759031546289, 11.435831678034875, 13.52366571091427, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.148788241572898 + ], + [ + 5.063290875169309, 0.91486653424279, 25.845227803080608, + 0.8587755453516607, 2.8326938622959594, 26.75929936638391, + 9.4117642150206 + ], + [ + 9.620252662821686, 12.503175967984797, 9.917354854670466, + 1.7175510907033213, 10.622601983609849, 8.068130462226305, + 14.256054619810616 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 4.3037972438939125, 0.6099110228285267, 26.74680551714156, + 0.8587755453516607, 2.12452039672197, 26.75929936638391, + 8.304497836782883 + ], + [ + 9.873417206580152, 0.457433267121395, 9.767091902326975, + 1.2404535655079545, 6.373561190165909, 14.926041355118663, + 14.94809610620919 + ], + [ + 6.075949050203171, 0.6099110228285267, 19.233657899966964, + 1.0496145554298075, 4.603127526230934, 20.842670360751292, + 9.13494762046117 + ], + [ + 5.5696199626862395, 0.91486653424279, 26.74680551714156, + 0.8587755453516607, 4.603127526230934, 26.75929936638391, + 7.750864647664025 + ], + [ + 15.949366256783323, 20.73697477616991, 2.2539442851523788, + 2.6717461410940557, 19.297726936891223, 0.13446884103710507, + 25.051901807628365 + ], + [ + 25.063289832088078, 26.226173981626648, 5.409466284365709, + 3.2442631713284964, 27.618765157385607, 0.26893768207421015, + 21.591694375635498 + ], + [ + 3.7974681563769814, 17.687419662027274, 22.83996875621077, + 1.6221315856642482, 5.665387724591919, 25.549079797049966, + 8.027681242223455 + ], + [ + 5.316455418927775, 1.0673442899499217, 21.33733923277585, + 2.0038096058205417, 6.019474457378914, 21.64948340697392, + 10.934255485097463 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 50.37974420793462, 30.343073385719205, 4.5078885703047575, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 12.151898100406342, 14.790342303591771, 15.62734704372316, + 2.0038096058205417, 12.57007901393832, 3.496189866964732, + 13.702421430691757 + ], + [ + 8.607594487787825, 11.435831678034875, 10.518406664044434, + 1.6221315856642482, 9.560341785248864, 11.698789170228142, + 13.564013133412043 + ], + [ + 5.5696199626862395, 0.91486653424279, 24.49286123198918, + 0.8587755453516607, 4.780170892624432, 26.75929936638391, + 8.719722728622028 + ], + [ + 9.620252662821686, 12.198220456570533, 13.37340275857078, + 1.7175510907033213, 10.268515250822853, 4.303002913187362, + 14.532871214370044 + ], + [ + 4.556961787652378, 0.91486653424279, 24.643124184332674, + 1.145034060468881, 6.550604556559406, 26.75929936638391, + 7.750864647664025 + ], + [ + 14.683543537990996, 18.449808440562933, 5.860255141396185, + 2.480907131015909, 16.642076440988763, 1.8825637745194712, + 21.176469483796353 + ], + [ + 29.620251619740458, 29.885640118597806, 2.854996094526346, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 24.775085213068934 + ], + [ + 34.93670703866823, 29.885640118597806, 2.5544701898393622, + 3.4351021814066427, 35.231629912306, 0.26893768207421015, + 26.851209672264655 + ], + [ + 4.556961787652378, 1.0673442899499217, 26.74680551714156, + 0.8587755453516607, 5.3113009918049245, 26.75929936638391, + 6.505189972146591 + ], + [ + 8.35442994402936, 10.82592065520635, 12.772350949196813, + 1.5267120806251746, 9.029211686068372, 10.891976124005511, + 12.733563349733753 + ], + [ + 19.493669869401838, 22.414230088948354, 6.311043998426661, + 2.862585151172202, 21.245203967219698, 0.8068130462226305, + 20.069203105558632 + ], + [ + 5.063290875169309, 0.91486653424279, 26.596542564798067, + 0.8587755453516607, 4.24904079344394, 26.75929936638391, + 8.166089539503169 + ], + [ + 4.3037972438939125, 0.6099110228285267, 25.093913041363148, + 1.2404535655079545, 1.9474770303284723, 26.75929936638391, + 7.33563975582488 + ], + [ + 10.886075381614015, 13.570520257934719, 16.228398853097126, + 1.8129705957423947, 11.507818815577338, 9.009412349486041, + 12.733563349733753 + ], + [ + 6.075949050203171, 0.6099110228285267, 20.586024471058394, + 1.0496145554298075, 3.3638239614764522, 22.456296453196547, + 9.550172512300316 + ], + [ + 6.835442681478567, 0.6099110228285267, 21.637865137462835, + 0.7633560403125873, 3.8949540606569446, 20.842670360751292, + 9.273355917740886 + ], + [ + 10.886075381614015, 14.485386792177508, 4.357625617961265, + 2.0038096058205417, 12.57007901393832, 7.7991927801520955, + 17.57785375452377 + ] + ], + "fit_tau_": [ + [ + 0.03394037571391852, 0.15175313208494268, 20.925014224071155, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.7866404343923871 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 5.634102368510475, 30.19887328490359, 1.017973664954813, + 3.1928504365667387, 5.996590262828748, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 1.0521516471314742, 20.941932227722088, 22.508528814000865, + 1.5299075008548957, 1.462582990933841, 17.95496967576716, + 0.4495088196527926 + ], + [ + 2.2061244214047044, 22.459463548571513, 16.740011379256924, + 2.577561550353357, 7.312914954669206, 5.572231968341533, + 3.6522591596789398 + ], + [ + 2.07036291854903, 2.428050113359083, 8.030681134643524, + 1.4966486421406588, 2.632649383680914, 6.810505739084096, + 2.5846757130035574 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 2.2283435338538697, 10.749984983363733, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.8145690171340445, 0.910518792509656, 9.727303909568214, + 1.1474306256411717, 1.2431955422937648, 37.148213122276886, + 1.0675834466753824 + ], + [ + 1.2557939014149855, 1.0622719245945986, 22.508528814000865, + 1.1474306256411717, 1.2431955422937648, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.312909882788845, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.67685583381704, 0.20637896179042714, + 11.181531888863216 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 2.511587802829971, 2.8833095096139107, 19.00217507915651, + 1.5465369302120142, 2.925165981867682, 4.953095082970252, + 2.303732700720562 + ], + [ + 0.5430460114226964, 0.15175313208494268, 22.508528814000865, + 0.9312480439986321, 0.36564574773346026, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.754134767069787, 0.910518792509656, 0.5655409249748962, + 2.5110438329248828, 7.751689851949357, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.109267628505334, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 8.48298134741628, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.9528126871109115, 4.704347094633222, 5.2029765097690435, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 5.2817286309203135 + ], + [ + 5.97350612564966, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.040796712964875, 0.20637896179042714, + 8.709233380772858 + ], + [ + 2.647349305685645, 3.945581434208509, 8.7093302446134, + 1.779348941211672, 3.8758449259746786, 8.048779509826659, + 4.4388995940713265 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 6.754134767069787, 30.19887328490359, 0.33932455498493763, + 3.0930738604240284, 14.552700759791719, 0.20637896179042714, + 10.563457261840627 + ], + [ + 2.341885924260378, 30.19887328490359, 8.7093302446134, + 2.3780083980679354, 7.532302403309282, 2.2701685796946984, + 3.877013569505336 + ], + [ + 4.887414102804267, 30.19887328490359, 2.3752718848945635, + 2.7771147026387784, 9.872435188803427, 0.6191368853712815, + 9.271119405338847 + ], + [ + 5.464400489940882, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.091822637443503, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.0182112714175557, 0.7587656604247134, 22.508528814000865, + 1.080912908212698, 0.9506789441069967, 41.069413396295, + 0.056188602456599075 + ], + [ + 0.20364225428351113, 0.15175313208494268, 16.513795009266964, + 0.84810089721304, 0.07312914954669206, 41.069413396295, + 1.2361492540451797 + ], + [ + 6.754134767069787, 1.2140250566795414, 1.017973664954813, + 1.8957549467115011, 8.629239646509664, 0.20637896179042714, + 10.788211671667023 + ], + [ + 5.53228124136872, 30.19887328490359, 1.3572982199397505, + 1.5465369302120142, 7.824819001496049, 0.4127579235808543, + 7.079763909531483 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.03394037571391852, 0.15175313208494268, 18.77595870916655, + 0.7649537504274478, 0.07312914954669206, 35.497181427953464, + 0.33713161473959447 + ], + [ + 1.730959161409845, 2.5798032454440256, 4.071894659819252, + 1.5465369302120142, 2.925165981867682, 15.272043172491609, + 4.944597016180719 + ], + [ + 3.0885741899665855, 4.704347094633222, 7.9175729496485445, + 1.9456432347828563, 4.6071364214415995, 4.540337159389397, + 4.83221981126752 + ], + [ + 5.328638987085209, 30.19887328490359, 0.5655409249748962, + 3.1595915778525017, 9.799306039256734, 0.20637896179042714, + 9.833005429904839 + ], + [ + 2.579468554257808, 4.097334566293452, 5.316084694764023, + 1.8292372292830275, 4.0952323746147545, 14.859285248910753, + 4.157956581788332 + ], + [ + 6.618373264214113, 30.19887328490359, 0.5655409249748962, + 2.5110438329248828, 7.239785805122514, 0.20637896179042714, + 11.181531888863216 + ], + [ + 1.2218535257010668, 1.2140250566795414, 15.495821344312152, + 1.230577772426764, 1.5357121404805332, 19.81238033188101, + 1.0675834466753824 + ], + [ + 0.1357615028556741, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.33713161473959447 + ], + [ + 0.06788075142783705, 0.15175313208494268, 22.508528814000865, + 0.7649537504274478, 0.07312914954669206, 41.069413396295, + 0.056188602456599075 + ], + [ + 6.482611761358438, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 9.141143693336508, 0.20637896179042714, + 11.181531888863216 + ], + [ + 3.258276068536178, 5.159606490888051, 5.881625619738919, + 2.045419810925567, 4.972782169175059, 5.159474044760678, + 5.506483040746709 + ], + [ + 0.5430460114226964, 0.455259396254828, 14.704064049347298, + 1.0143951907842244, 0.6581623459202285, 30.95684426856407, + 1.629469471241373 + ], + [ + 5.871684998507905, 30.19887328490359, 0.11310818499497921, + 3.07644443106691, 10.530597534723656, 0.20637896179042714, + 10.732023069210424 + ], + [ + 6.754134767069787, 30.19887328490359, 0.6786491099698753, + 2.4944144035677644, 14.552700759791719, 0.20637896179042714, + 11.181531888863216 + ], + [ + 2.138243669976867, 3.186815773783796, 3.3932455498493765, + 1.662942935711843, 3.4370700286945266, 7.016884700874523, + 5.675048848116507 + ], + [ + 4.955294854232105, 30.19887328490359, 1.8097309599196674, + 2.7105969852103042, 12.505084572484343, 0.20637896179042714, + 8.765421983229457 + ], + [ + 4.208606588525897, 30.19887328490359, 1.2441900349447714, + 3.3092564420665678, 11.40814732928396, 0.6191368853712815, + 9.10255359796905 + ], + [ + 2.2061244214047044, 2.8833095096139107, 19.115283264151486, + 1.5465369302120142, 2.925165981867682, 8.255158471617085, + 2.303732700720562 + ] + ], + "raw_spliced": [ + [0, 116, 0, 10, 0, 0, 0], + [0, 12, 0, 8, 0, 0, 1], + [0, 0, 4, 0, 0, 1, 0], + [3, 0, 0, 43, 0, 0, 1], + [0, 0, 0, 1, 1, 0, 1], + [1, 1, 1, 0, 0, 0, 0], + [1, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 4, 0, 0, 0], + [0, 0, 5, 0, 0, 0, 0], + [3, 0, 0, 1, 0, 0, 2], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0, 0], + [3, 0, 0, 4, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [2, 0, 0, 3, 0, 0, 1], + [0, 0, 1, 0, 0, 0, 0], + [2, 0, 0, 18, 0, 0, 0], + [0, 0, 10, 0, 0, 1, 0], + [1, 0, 0, 5, 0, 0, 2], + [0, 0, 0, 0, 0, 5, 0], + [1, 0, 0, 1, 2, 0, 1], + [0, 0, 4, 0, 0, 0, 0], + [2, 0, 0, 10, 0, 0, 0], + [0, 0, 0, 0, 0, 2, 0], + [0, 0, 0, 0, 0, 0, 1], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 8, 0, 0, 0, 0], + [1, 0, 0, 31, 0, 0, 1], + [4, 0, 0, 23, 0, 0, 1], + [0, 0, 2, 0, 0, 0, 0], + [1, 0, 1, 0, 0, 0, 0], + [2, 1, 0, 9, 1, 0, 1], + [5, 0, 0, 34, 4, 0, 0], + [0, 0, 0, 4, 0, 0, 0], + [0, 0, 0, 2, 1, 0, 1], + [0, 0, 0, 0, 0, 1, 0], + [1, 0, 0, 1, 1, 0, 0], + [0, 0, 1, 0, 0, 1, 0], + [2, 0, 0, 0, 1, 0, 1], + [3, 0, 0, 5, 1, 0, 1], + [0, 2, 0, 7, 3, 0, 1], + [0, 0, 2, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 1], + [0, 0, 0, 7, 0, 0, 0], + [0, 0, 0, 0, 0, 5, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 1, 0, 9, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 0, 0] + ], + "raw_unspliced": [ + [0, 335, 0, 0, 4, 0, 1], + [0, 35, 0, 0, 1, 0, 3], + [1, 1, 5, 0, 0, 0, 0], + [3, 0, 0, 0, 1, 0, 7], + [3, 0, 0, 0, 1, 1, 6], + [0, 0, 0, 0, 0, 0, 4], + [1, 0, 0, 0, 0, 0, 12], + [1, 0, 0, 0, 4, 0, 2], + [0, 1, 4, 0, 0, 0, 0], + [0, 1, 0, 0, 0, 0, 3], + [1, 0, 0, 0, 0, 0, 2], + [0, 0, 2, 0, 0, 0, 0], + [3, 0, 2, 0, 3, 0, 1], + [2, 0, 1, 0, 0, 0, 7], + [4, 1, 4, 0, 1, 0, 4], + [1, 2, 2, 0, 0, 0, 0], + [2, 1, 0, 4, 5, 0, 4], + [0, 0, 1, 0, 0, 3, 0], + [5, 0, 1, 0, 3, 0, 17], + [0, 0, 0, 0, 0, 6, 0], + [3, 0, 0, 0, 5, 0, 9], + [2, 1, 4, 0, 0, 0, 0], + [0, 2, 0, 0, 2, 0, 9], + [0, 0, 0, 0, 0, 11, 0], + [0, 0, 0, 0, 0, 0, 7], + [0, 1, 0, 0, 0, 0, 1], + [0, 2, 3, 0, 0, 0, 0], + [1, 0, 0, 1, 0, 0, 2], + [0, 1, 0, 1, 0, 0, 7], + [1, 0, 5, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0, 0], + [1, 4, 2, 0, 4, 0, 11], + [1, 0, 0, 0, 6, 0, 2], + [1, 0, 1, 0, 3, 0, 1], + [2, 0, 0, 0, 1, 0, 9], + [0, 1, 4, 0, 0, 9, 0], + [2, 1, 1, 0, 5, 0, 1], + [0, 1, 8, 0, 0, 2, 0], + [2, 0, 0, 0, 4, 0, 5], + [1, 0, 0, 1, 0, 0, 3], + [2, 5, 0, 0, 2, 0, 7], + [0, 1, 4, 0, 0, 0, 0], + [3, 0, 1, 0, 0, 0, 7], + [0, 0, 0, 1, 5, 0, 5], + [0, 1, 0, 0, 0, 7, 0], + [0, 1, 0, 0, 0, 0, 2], + [1, 11, 0, 0, 2, 0, 8], + [0, 0, 0, 0, 0, 0, 2], + [0, 0, 0, 0, 0, 0, 3], + [3, 0, 0, 0, 0, 0, 9] + ], + "spliced": [ + [0, 74.70283508300781, 0, 6.439899921417236, 0, 0, 0], + [0, 13.157543182373047, 0, 8.771695137023926, 0, 0, 1.0964618921279907], + [0, 0, 3.881344795227051, 0, 0, 0.9703361988067627, 0], + [3.650341033935547, 0, 0, 52.32155227661133, 0, 0, 1.2167803049087524], + [0, 0, 0, 1.3689839839935303, 1.3689839839935303, 0, 1.3689839839935303], + [1.379892110824585, 1.379892110824585, 1.379892110824585, 0, 0, 0, 0], + [0.8711347579956055, 0, 0, 0.8711347579956055, 0, 0, 0], + [0, 0, 0, 5.362476825714111, 0, 0, 0], + [0, 0, 3.9687249660491943, 0, 0, 0, 0], + [3.5909736156463623, 0, 0, 1.196991205215454, 0, 0, 2.393982410430908], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 1.0163991451263428, 0, 0, 0, 0], + [4.449370384216309, 0, 0, 5.932494163513184, 1.483123540878296, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [2.8771071434020996, 0, 0, 4.31566047668457, 0, 0, 1.4385535717010498], + [0, 0, 0.43750929832458496, 0, 0, 0, 0], + [1.8044743537902832, 0, 0, 16.24026870727539, 0, 0, 0], + [0, 0, 5.953488349914551, 0, 0, 0.5953488349914551, 0], + [0.6548042893409729, 0, 0, 3.2740213871002197, 0, 0, 1.3096085786819458], + [0, 0, 0, 0, 0, 2.292120933532715, 0], + [ + 1.0245345830917358, 0, 0, 1.0245345830917358, 2.0490691661834717, 0, + 1.0245345830917358 + ], + [0, 0, 2.0018699169158936, 0, 0, 0, 0], + [1.848665714263916, 0, 0, 9.243328094482422, 0, 0, 0], + [0, 0, 0, 0, 0, 1.5297479629516602, 0], + [0, 0, 0, 0, 0, 0, 1.1994296312332153], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 4.200838565826416, 0, 0, 0, 0], + [1.0921906232833862, 0, 0, 33.85791015625, 0, 0, 1.0921906232833862], + [4.0150017738342285, 0, 0, 23.086259841918945, 0, 0, 1.0037504434585571], + [0, 0, 1.535332441329956, 0, 0, 0, 0], + [0.7396985292434692, 0, 0.7396985292434692, 0, 0, 0, 0], + [ + 2.2555065155029297, 1.1277532577514648, 0, 10.149779319763184, + 1.1277532577514648, 0, 1.1277532577514648 + ], + [6.451895236968994, 0, 0, 43.872886657714844, 5.161516189575195, 0, 0], + [0, 0, 0, 3.5534095764160156, 0, 0, 0], + [0, 0, 0, 2.5472636222839355, 1.2736318111419678, 0, 1.2736318111419678], + [0, 0, 0, 0, 0, 0.9573984146118164, 0], + [1.0921906232833862, 0, 0, 1.0921906232833862, 1.0921906232833862, 0, 0], + [0, 0, 0.8593111038208008, 0, 0, 0.8593111038208008, 0], + [2.470834970474243, 0, 0, 0, 1.2354174852371216, 0, 1.2354174852371216], + [ + 3.606369972229004, 0, 0, 6.010616302490234, 1.2021232843399048, 0, + 1.2021232843399048 + ], + [ + 0, 1.7818125486373901, 0, 6.236343860626221, 2.6727187633514404, 0, + 0.8909062743186951 + ], + [0, 0, 3.45438551902771, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 1.1647872924804688], + [0, 0, 0, 6.6370368003845215, 0, 0, 0], + [0, 0, 0, 0, 0, 2.748319625854492, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0.7975077629089355, 0, 7.17756986618042, 0.7975077629089355, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [1.214271068572998, 0, 0, 0, 0, 0, 0] + ], + "spliced_pyro": [ + [ + 0.9657840728759766, 1.5361014604568481, 1.1771652698516846, + 1.1016700267791748, 0.47562047839164734, 0.6911401152610779, + 1.0603383779525757 + ], + [ + 0.9937020540237427, 1.3819797039031982, 1.2015502452850342, + 0.9967150092124939, 0.5138993859291077, 0.7325799465179443, + 0.9994251132011414 + ], + [ + 0.9513828158378601, 1.3333113193511963, 1.3739824295043945, + 0.9475364089012146, 0.7226792573928833, 0.6682187914848328, + 1.062493085861206 + ], + [ + 0.6655469536781311, 1.3574970960617065, 1.3603439331054688, + 1.1066218614578247, 0.483156681060791, 1.172139286994934, + 0.985723078250885 + ], + [ + 0.9305263757705688, 1.3045544624328613, 1.1382060050964355, + 0.9185543656349182, 0.42387694120407104, 1.2072120904922485, + 1.0659334659576416 + ], + [ + 0.9373989701271057, 1.3144316673278809, 1.3840558528900146, + 1.0725903511047363, 0.4342760145664215, 0.6448894739151001, + 1.0647565126419067 + ], + [ + 0.5876541137695312, 1.3048797845840454, 1.138484239578247, + 0.9188816547393799, 0.7111499309539795, 1.2070116996765137, + 1.0658949613571167 + ], + [ + 0.9607603549957275, 1.3451292514801025, 1.1722177267074585, + 0.9594675898551941, 0.7282020449638367, 0.6832686066627502, + 1.061070203781128 + ], + [ + 0.6546086668968201, 1.3505606651306152, 1.1766451597213745, + 1.101165533065796, 0.7309074997901917, 0.6903055310249329, + 1.0604156255722046 + ], + [ + 0.6624190211296082, 1.5369577407836914, 1.180665135383606, + 0.969972550868988, 0.4807842969894409, 0.6968085169792175, + 1.059816837310791 + ], + [ + 0.9678338170051575, 1.536577582359314, 1.3625860214233398, + 1.1035804748535156, 0.47851061820983887, 0.6943137049674988, + 0.9834855198860168 + ], + [ + 0.6494973301887512, 1.347272276878357, 1.1739686727523804, + 1.0985736846923828, 0.4709889888763428, 1.1793164014816284, + 1.0608118772506714 + ], + [ + 0.6521971821784973, 1.5356814861297607, 1.175387978553772, + 0.9633916020393372, 0.4730364680290222, 0.6882941722869873, + 1.060602068901062 + ], + [ + 0.6298680305480957, 1.3343443870544434, 1.3734174966812134, + 1.0883592367172241, 0.723143458366394, 0.6695204377174377, + 1.0623688697814941 + ], + [ + 0.681007444858551, 1.3670676946640015, 1.1898897886276245, + 0.981636643409729, 0.49489256739616394, 0.7121742367744446, + 1.058427333831787 + ], + [ + 0.9680077433586121, 1.3538330793380737, 1.1792969703674316, + 1.1037418842315674, 0.4787558317184448, 0.6945827603340149, + 1.060021162033081 + ], + [ + 0.6550065875053406, 1.3508163690567017, 1.176852822303772, + 1.1013671159744263, 0.7310376167297363, 1.1768519878387451, + 0.9818469882011414 + ], + [ + 0.9687764644622803, 1.536798357963562, 1.3619464635849, + 1.1044515371322632, 0.47983449697494507, 0.6957672238349915, + 1.0599123239517212 + ], + [ + 0.5412757992744446, 1.2696654796600342, 1.1078728437423706, + 0.883518397808075, 0.38926035165786743, 0.5928022265434265, + 1.0700373649597168 + ], + [ + 0.5941970944404602, 1.529371976852417, 1.1425179243087769, + 1.0687649250030518, 0.42915570735931396, 0.6390566825866699, + 0.9567288756370544 + ], + [ + 0.948135495185852, 1.532210111618042, 1.1589393615722656, + 1.084181547164917, 0.4502129852771759, 1.1916007995605469, + 1.0630033016204834 + ], + [ + 0.6579284071922302, 1.3526806831359863, 1.3631311655044556, + 0.967095673084259, 0.4773789942264557, 0.6930733323097229, + 0.982934832572937 + ], + [ + 0.6357375383377075, 1.533732533454895, 1.1665705442428589, + 0.9525299668312073, 0.7249332070350647, 0.6744760870933533, + 0.974410355091095 + ], + [ + 0.9686195254325867, 1.3545517921447754, 1.1798776388168335, + 1.104306936264038, 0.7329676747322083, 0.695525586605072, + 1.0599346160888672 + ], + [ + 0.961139976978302, 1.345594882965088, 1.1725983619689941, + 0.9599376320838928, 0.46902990341186523, 1.1804741621017456, + 1.061014175415039 + ], + [ + 0.6407104730606079, 1.5343074798583984, 1.1692757606506348, + 1.0940505266189575, 0.7264748215675354, 0.6786633133888245, + 1.061502456665039 + ], + [ + 0.9815549254417419, 1.3691751956939697, 1.3534265756607056, + 1.1157618761062622, 0.7410899996757507, 0.7150194644927979, + 1.0581741333007812 + ], + [ + 0.950316846370697, 1.5326703786849976, 1.161323070526123, + 1.0864460468292236, 0.4534044861793518, 0.6664785146713257, + 0.9705869555473328 + ], + [ + 0.9821653962135315, 1.5400454998016357, 1.353026270866394, + 1.1162792444229126, 0.7414814829826355, 0.7159183621406555, + 0.9927304983139038 + ], + [ + 0.6946782469749451, 1.3753058910369873, 1.1963696479797363, + 1.1205307245254517, 0.5052828788757324, 0.7233685851097107, + 1.0574383735656738 + ], + [ + 0.9813562631607056, 1.3689582347869873, 1.1913847923278809, + 1.1155925989151, 0.497253954410553, 0.7147260904312134, + 1.0582002401351929 + ], + [ + 0.6476143002510071, 1.3460513353347778, 1.1729717254638672, + 0.96039879322052, 0.4695633053779602, 1.180159568786621, + 1.060958981513977 + ], + [ + 0.6568253636360168, 1.3519787788391113, 1.3635340929031372, + 0.966386616230011, 0.4765440821647644, 1.176038146018982, + 1.0602445602416992 + ], + [ + 0.7237152457237244, 1.3921353816986084, 1.209306240081787, + 1.0069857835769653, 0.7559799551963806, 0.7468479871749878, + 1.055432915687561 + ], + [ + 0.9704678058624268, 1.5371973514556885, 1.181616187095642, + 0.9711653590202332, 0.7341078519821167, 0.698363721370697, + 1.059674620628357 + ], + [ + 0.6325257420539856, 1.5333670377731323, 1.3724424839019775, + 1.0897644758224487, 0.7239494919776917, 0.6717645525932312, + 1.0621551275253296 + ], + [ + 0.6928709149360657, 1.3742269277572632, 1.3503605127334595, + 0.9888753294944763, 0.5039058327674866, 0.7218918204307556, + 1.0575675964355469 + ], + [ + 0.6535064578056335, 1.535841941833496, 1.3647493124008179, + 0.9642407298088074, 0.4740283489227295, 0.689386785030365, + 0.9812846183776855 + ], + [ + 0.6524428725242615, 1.5357112884521484, 1.3651392459869385, + 1.1000707149505615, 0.4732218384742737, 0.6884977221488953, + 1.0605831146240234 + ], + [ + 0.9105011820793152, 1.2732634544372559, 1.1110403537750244, + 1.0400822162628174, 0.7006563544273376, 1.2257494926452637, + 1.069618582725525 + ], + [ + 0.6572348475456238, 1.3522387742996216, 1.1780065298080444, + 1.1024870872497559, 0.47685423493385315, 0.6924954056739807, + 1.060213327407837 + ], + [ + 0.6352408528327942, 1.337929129600525, 1.1662988662719727, + 0.9521976113319397, 0.46019184589385986, 0.6740577816963196, + 0.9742127060890198 + ], + [ + 0.6126901507377625, 1.3226350545883179, 1.153551697731018, + 1.079088568687439, 0.4431302547454834, 1.195796012878418, + 1.0637749433517456 + ], + [ + 0.6706213355064392, 1.3606693744659424, 1.1847953796386719, + 1.109110951423645, 0.7362522482872009, 0.7036097645759583, + 1.0591974258422852 + ], + [ + 0.9656484723091125, 1.3510407209396362, 1.1770350933074951, + 1.10154390335083, 0.4754313826560974, 1.1766951084136963, + 0.9819783568382263 + ], + [ + 0.6154808402061462, 1.5315090417861938, 1.1551707983016968, + 1.080615520477295, 0.44523900747299194, 1.1945459842681885, + 0.9660804867744446 + ], + [ + 0.5877476930618286, 1.3049489259719849, 1.1385436058044434, + 1.0650817155838013, 0.4242877662181854, 1.206968903541565, + 0.9537686705589294 + ], + [ + 0.6232655644416809, 1.5323411226272583, 1.159624695777893, + 0.9440824389457703, 0.7211667895317078, 1.1910595893859863, + 0.9693462252616882 + ], + [ + 0.9725231528282166, 1.537685751914978, 1.1835194826126099, + 0.9735588431358337, 0.7353817820549011, 0.7014951109886169, + 1.059389352798462 + ], + [ + 0.6480451822280884, 1.53517746925354, 1.3667495250701904, + 1.0978319644927979, 0.4698890447616577, 0.6848202347755432, + 0.9792141318321228 + ] + ], + "unspliced": [ + [0, 236.86868286132812, 0, 0, 2.8282828330993652, 0, 0.7070707082748413], + [0, 30.33012580871582, 0, 0, 0.8665750026702881, 0, 2.5997250080108643], + [1.5162454843521118, 1.5162454843521118, 7.5812273025512695, 0, 0, 0, 0], + [3.4115524291992188, 0, 0, 0, 1.1371841430664062, 0, 7.960289001464844], + [ + 2.769230604171753, 0, 0, 0, 0.923076868057251, 0.923076868057251, + 5.538461208343506 + ], + [0, 0, 0, 0, 0, 0, 4.9266862869262695], + [0.4958677589893341, 0, 0, 0, 0, 0, 5.950413227081299], + [1.0778443813323975, 0, 0, 0, 4.31137752532959, 0, 2.155688762664795], + [0, 1.2512413263320923, 5.004965305328369, 0, 0, 0, 0], + [0, 0.9618321061134338, 0, 0, 0, 0, 2.8854963779449463], + [0.9684857130050659, 0, 0, 0, 0, 0, 1.9369714260101318], + [0, 0, 3.6206893920898438, 0, 0, 0, 0], + [ + 2.166189193725586, 0, 1.4441261291503906, 0, 2.166189193725586, 0, + 0.7220630645751953 + ], + [1.6688742637634277, 0, 0.8344371318817139, 0, 0, 0, 5.841059684753418], + [ + 4.253164768218994, 1.0632911920547485, 4.253164768218994, 0, + 1.0632911920547485, 0, 4.253164768218994 + ], + [0.7753846049308777, 1.5507692098617554, 1.5507692098617554, 0, 0, 0, 0], + [ + 1.583909511566162, 0.791954755783081, 0, 3.167819023132324, + 3.9597737789154053, 0, 3.167819023132324 + ], + [0, 0, 1.5749999284744263, 0, 0, 4.724999904632568, 0], + [ + 2.128378391265869, 0, 0.4256756603717804, 0, 1.2770270109176636, 0, + 7.236486434936523 + ], + [0, 0, 0, 0, 0, 4.468085289001465, 0], + [3.1059985160827637, 0, 0, 0, 5.176663875579834, 0, 9.317995071411133], + [1.736733317375183, 0.8683666586875916, 3.473466634750366, 0, 0, 0, 0], + [0, 1.598984718322754, 0, 0, 1.598984718322754, 0, 7.195431232452393], + [0, 0, 0, 0, 0, 12.375, 0], + [0, 0, 0, 0, 0, 0, 8.181818962097168], + [0, 1.2138729095458984, 0, 0, 0, 0, 1.2138729095458984], + [0, 1.6237112283706665, 2.4355669021606445, 0, 0, 0, 0], + [0.9655172824859619, 0, 0, 0.9655172824859619, 0, 0, 1.9310345649719238], + [0, 1.296296238899231, 0, 1.296296238899231, 0, 0, 9.074073791503906], + [1.0404623746871948, 0, 5.202311992645264, 0, 0, 0, 0], + [0, 0, 1.2936345338821411, 0, 0, 0, 0], + [ + 1.081545114517212, 4.326180458068848, 2.163090229034424, 0, + 4.326180458068848, 0, 11.89699649810791 + ], + [1.2197482585906982, 0, 0, 0, 7.3184895515441895, 0, 2.4394965171813965], + [ + 0.9130434989929199, 0, 0.9130434989929199, 0, 2.7391304969787598, 0, + 0.9130434989929199 + ], + [1.6395576000213623, 0, 0, 0, 0.8197788000106812, 0, 7.37800931930542], + [0, 1.52173912525177, 6.08695650100708, 0, 0, 13.69565200805664, 0], + [ + 2.0289855003356934, 1.0144927501678467, 1.0144927501678467, 0, + 5.0724639892578125, 0, 1.0144927501678467 + ], + [0, 1.192052960395813, 9.536423683166504, 0, 0, 2.384105920791626, 0], + [1.9718310832977295, 0, 0, 0, 3.943662166595459, 0, 4.929577827453613], + [1.1954458951950073, 0, 0, 1.1954458951950073, 0, 0, 3.5863375663757324], + [ + 1.5969581604003906, 3.9923954010009766, 0, 0, 1.5969581604003906, 0, + 5.589353561401367 + ], + [0, 2.2661869525909424, 9.06474781036377, 0, 0, 0, 0], + [2.675158977508545, 0, 0.8917196989059448, 0, 0, 0, 6.242037773132324], + [0, 0, 0, 0.9495101571083069, 4.747550964355469, 0, 4.747550964355469], + [0, 0.963302731513977, 0, 0, 0, 6.743119239807129, 0], + [0, 1.730769157409668, 0, 0, 0, 0, 3.461538314819336], + [ + 0.7398708462715149, 8.138579368591309, 0, 0, 1.4797416925430298, 0, + 5.918966770172119 + ], + [0, 0, 0, 0, 0, 0, 3.749999761581421], + [0, 0, 0, 0, 0, 0, 3.6241612434387207], + [2.763157844543457, 0, 0, 0, 0, 0, 8.289473533630371] + ], + "velocity": [ + [ + 0.02215896332905709, 0.09061453468820219, 0.04963872396013326, + -0.16230761577222097, 0.015514291171107725, 0.017587299426826387, + 0.023322397873203782 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.07497389928324938, 0.1784627752885084, 0.0351815487393945, + 0.11583920369867151, 0.03890275779343792, 0.011728603586439061, + 0.032799839768185436 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.0250910398570231, 0.11614594709220222, 0.049610776393676864, + 0.0026907493508385727, 0.017883727492135543, 0.017965376173328346, + 0.023749860534795914 + ], + [ + 0.03256275614423937, 0.12978986843607154, 0.04966876826604046, + 0.004204411844616729, 0.021182350431124125, 0.018378484775796896, + 0.024905610396072753 + ], + [ + 0.06104385332519857, 0.16493853873629394, 0.04548543909615266, + 0.02070201100798741, 0.03166419807251335, 0.015804908879196174, + 0.028496399620202784 + ], + [ + 0.03304848078743805, 0.13638142466426662, 0.048676249474305766, + 0.007916070607240755, 0.021521233541050594, 0.018041505662842773, + 0.02610809491262936 + ], + [ + 0.09559645940455713, 0.17859576466679553, 0.03321738119012385, + 0.18157159234226405, 0.041364497186196794, 0.01081201284144586, + 0.03356118087150597 + ], + [ + 0.026971976685454813, 0.11563166378149498, 0.049753550434412874, + 0.0032690746769610257, 0.01824257557359693, 0.0183181955695864, + 0.02442209277467941 + ], + [ + 0.026483410229734328, 0.12002081197778625, 0.049749539715903277, + 0.0032907906468171433, 0.018723887715088622, 0.018230761170506864, + 0.02419326551600215 + ], + [ + 0.10172094763324063, 0.17516378158997103, 0.0333706336163362, + 0.17627375452963712, 0.04252024999151943, 0.010135604970733354, + 0.0338002812919584 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03416302032395524, 0.13932810419400665, 0.048309209636089104, + 0.009121705565929616, 0.02279920621880821, 0.0178666876980665, + 0.02622708661783904 + ], + [ + 0.02262029077539318, 0.10785362922499886, 0.049071531322612494, + -2.247171978738857, 0.01636348571935972, 0.01717054025678485, + 0.022954573551608973 + ], + [ + 0.08736177656183775, 0.17848109745484797, 0.034041122276063485, + 0.1522178696555052, 0.040993958433611075, 0.01098840876498481, + 0.033531513455605524 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10185784835330725, 0.17472341611609524, 0.032806798018477246, + 0.17560278507490246, 0.042592294453127406, 0.010305721066002645, + 0.03386035535498475 + ], + [ + 0.04241751721462533, 0.14924080118715982, 0.0454064541655671, + 0.02146803112099782, 0.025761854088260316, 0.016342993538657574, + 0.02807288740271599 + ], + [ + 0.10240221962597454, 0.17176829036992908, 0.03413079608937271, + 0.17419032415239322, 0.04271625395624436, 0.009877033668051635, + 0.03376915043157764 + ], + [ + 0.03906783860637403, 0.1425167166001441, 0.04672038426914933, + 0.015217129511825078, 0.024321386933784994, 0.016989829312537844, + 0.02733053606616001 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.10082366581429836, 0.16909644670912577, 0.03500292774935711, + 0.17516998939114004, 0.042467442269172505, 0.010000760170828564, + 0.033474905173577936 + ], + [ + 0.07822987111210078, 0.17431480881884587, 0.045332839938153874, + 0.021786223559708162, 0.03637901730589714, 0.015437769736541672, + 0.029446083112101867 + ], + [ + 0.09173846641874273, 0.1787366480016163, 0.0390165836929833, + 0.08804062708272475, 0.040284770189640426, 0.012178075157941504, + 0.03199917369463817 + ], + [ + 0.10192617966780035, 0.17460130512640837, 0.03318867450698136, + 0.1754846439929949, 0.04260819561138649, 0.010333098189264922, + 0.03385501615830776 + ], + [ + 0.025341317707082034, 0.11614594709220233, 0.049653274743449105, + 0.0026755100770721185, 0.01798600325926003, 0.018059099044660104, + 0.02382612059547355 + ], + [ + 0.023498130600606015, 0.09947692768677119, 0.04975860918531404, + 0.002887619518844531, 0.01632102940490171, 0.01795543402456658, + 0.02366121701865273 + ], + [ + 0.08055304777678457, 0.17874816744046737, 0.034655201927928925, + 0.1338602617153981, 0.03931265049291485, 0.011625497365965617, + 0.03309520909274354 + ], + [ + 0.08236082599158345, 0.17760830100075453, 0.03641149583598864, + 0.10168238272123453, 0.03788459908786154, 0.012007962666217849, + 0.032745166211360296 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.020965182797577864, 0.09899019480110272, 0.049105514785707426, + -2.124916999039133, 0.014828498845111143, 0.016665016304613547, + 0.02267539716788536 + ], + [ + 0.03577696844582795, 0.13174998891351253, 0.046923979234338206, + 0.013458882064519173, 0.021976251953255616, 0.01741619712886457, + 0.02695805246450808 + ], + [ + 0.042215896046127355, 0.15223830517222148, 0.0456090331612965, + 0.021589287675672253, 0.02592462279221902, 0.01641621107059175, + 0.028049875097138674 + ], + [ + 0.10137289346196035, 0.17596311983713286, 0.03414388292402294, + 0.1501174485869221, 0.042409871236855155, 0.010297451458859332, + 0.03364908552992612 + ], + [ + 0.040080550353339905, 0.14495008256216985, 0.04658557152991363, + 0.017094646371091926, 0.02468020781327579, 0.016896160468684335, + 0.027655539343664742 + ], + [ + 0.0985158231735348, 0.17710709641708614, 0.03333384564352089, + 0.15116401191787254, 0.04208211240123952, 0.010658312842985518, + 0.033678775355310595 + ], + [ + 0.027840423546549198, 0.12346532454479198, 0.049716214437967705, + 0.0040228092667824455, 0.01901565170221492, 0.01835837907142884, + 0.024702100729729518 + ], + [ + 0.020965182797577864, 0.09895106674506476, 0.04907506901642641, + -2.1719401401712393, 0.014918383565729554, 0.016586276097369887, + 0.022511724629963425 + ], + [ + 0.02051936556415579, 0.0987946479066234, 0.04836848059021681, + -2.3751653563831443, 0.014891368260736754, 0.016030527285870563, + 0.022306323613991874 + ], + [ + 0.09856655921805751, 0.17805162943696584, 0.03277822494291319, + 0.18035373169957758, 0.041932956956847185, 0.010731339597813618, + 0.033593392813204156 + ], + [ + 0.04450077063063179, 0.15324824370899282, 0.044818095782523895, + 0.026229154845855973, 0.026797281044454738, 0.01598299280101665, + 0.02846850096879465 + ], + [ + 0.025347413232940652, 0.10351428511478461, 0.04975904676608599, + 0.0034911434306810207, 0.016944329480680725, 0.018207816420545836, + 0.02398232318159313 + ], + [ + 0.10075413285116952, 0.1757604057272294, 0.033658642802496946, + 0.17690759604880313, 0.04239972640958395, 0.010312561279655123, + 0.033719634195078466 + ], + [ + 0.09726240143640907, 0.1743787275359826, 0.03657474933513562, + 0.1511968342954173, 0.04174755332919647, 0.010889147465128389, + 0.03287749851496467 + ], + [ + 0.03813307593827647, 0.13735359963063326, 0.04603257071911143, + 0.017455592907534623, 0.02318766654612489, 0.016931211775987935, + 0.027426024733850737 + ], + [ + 0.09407250268678785, 0.17789983000070364, 0.03820888090089253, + 0.09886382235602298, 0.040928698214817066, 0.011741910011905374, + 0.03238572407776885 + ], + [ + 0.09090715517670067, 0.17879608873504022, 0.03880757516893518, + 0.08802369778840635, 0.0400989337042324, 0.012089079430872653, + 0.03195739325691363 + ], + [ + 0.03396956884748498, 0.1393281041940067, 0.04846403407687348, + 0.00906175520332475, 0.02266979260065083, 0.017923681949678343, + 0.02612640422576734 + ] + ], + "velocity_pyro": [ + [ + -0.21002459526062012, -0.05034005641937256, -0.30413150787353516, + -0.2465077042579651, -0.38578009605407715, -0.3922525644302368, + 0.035132408142089844 + ], + [ + -0.22775018215179443, -0.3586944043636322, -0.2804059386253357, + -0.406540185213089, -0.4064575433731079, -0.39667952060699463, + -0.28812670707702637 + ], + [ + -0.200456440448761, -0.37568503618240356, 0.1624056100845337, + -0.4192068874835968, -0.12097316980361938, -0.38820892572402954, + 0.03601408004760742 + ], + [ + -0.4856400489807129, -0.368129163980484, 0.1667325496673584, + -0.2436313033103943, -0.39000028371810913, 0.18071889877319336, + -0.3069190979003906 + ], + [ + -0.18610751628875732, -0.382731556892395, -0.3313249945640564, + -0.42294198274612427, -0.35494840145111084, 0.17228686809539795, + 0.0369417667388916 + ], + [ + -0.1908988356590271, -0.3805288076400757, 0.15905147790908813, + -0.2591515779495239, -0.3613972067832947, -0.383061945438385, + 0.036683082580566406 + ], + [ + -0.44830942153930664, -0.3826626241207123, -0.3311663269996643, + -0.42291316390037537, -0.10399585962295532, 0.1723477840423584, + 0.0369340181350708 + ], + [ + -0.20671862363815308, -0.3721945881843567, -0.30822044610977173, + -0.41692766547203064, -0.1290874481201172, -0.3909830152988434, + 0.03546142578125 + ], + [ + -0.48080354928970337, -0.37046313285827637, -0.3045710623264313, + -0.24678707122802734, -0.13305866718292236, -0.39212408661842346, + 0.03516852855682373 + ], + [ + -0.48427119851112366, -0.05190396308898926, -0.3011058270931244, + -0.414524108171463, -0.3886796236038208, -0.39308643341064453, + 0.03487753868103027 + ], + [ + -0.21136349439620972, -0.051211774349212646, 0.16603869199752808, + -0.24542659521102905, -0.3874083459377289, -0.39272794127464294, + -0.30966806411743164 + ], + [ + -0.4784944951534271, -0.3715212643146515, -0.30679771304130554, + -0.24818623065948486, -0.3831509053707123, 0.17938315868377686, + 0.035349249839782715 + ], + [ + -0.47971656918525696, -0.049566566944122314, -0.3056248128414154, + -0.4160747230052948, -0.38431692123413086, -0.3918083608150482, + 0.035254597663879395 + ], + [ + -0.4693599343299866, -0.3753945231437683, 0.16258996725082397, + -0.2531231641769409, -0.12165558338165283, -0.38846635818481445, + 0.035970091819763184 + ], + [ + -0.4922321140766144, -0.3646714985370636, -0.29255878925323486, + -0.4113878011703491, -0.3964277505874634, -0.3949946165084839, + 0.034108519554138184 + ], + [ + -0.21147674322128296, -0.3693794012069702, -0.30230215191841125, + -0.24533361196517944, -0.38754600286483765, -0.39276739954948425, + 0.03497946262359619 + ], + [ + -0.480980783700943, -0.3703795373439789, -0.3043956458568573, + -0.2466757893562317, -0.13324952125549316, 0.17986643314361572, + -0.3116292357444763 + ], + [ + -0.2119770050048828, -0.05161428451538086, 0.166237473487854, + -0.24492162466049194, -0.3881492614746094, -0.392938494682312, + 0.03492546081542969 + ], + [ + -0.42311108112335205, -0.3888868987560272, -0.34618720412254333, + -0.42448651790618896, -0.33261922001838684, -0.3682481050491333, + 0.03744351863861084 + ], + [ + -0.4516931176185608, -0.037299156188964844, -0.32881781458854675, + -0.26035600900650024, -0.35823723673820496, -0.38162335753440857, + -0.3371325135231018 + ], + [ + -0.19826000928878784, -0.04298681020736694, -0.3182050585746765, + -0.2548972964286804, -0.3710376024246216, 0.1766122579574585, + 0.0361860990524292 + ], + [ + -0.4822859466075897, -0.3697645366191864, 0.16586905717849731, + -0.4152206480503082, -0.3867712914943695, -0.39254477620124817, + -0.31033235788345337 + ], + [ + -0.47213736176490784, -0.04591643810272217, -0.3126349151134491, + -0.41830918192863464, -0.12428605556488037, -0.3894163966178894, + -0.32003170251846313 + ], + [ + -0.21187496185302734, -0.3691374957561493, -0.3017968535423279, + -0.24500608444213867, -0.13608098030090332, -0.3929039239883423, + 0.03493654727935791 + ], + [ + -0.20696943998336792, -0.3720492720603943, -0.3079129755496979, + -0.4168279469013214, -0.3820320963859558, 0.1791476011276245, + 0.03543734550476074 + ], + [ + -0.47446000576019287, -0.04700428247451782, -0.31055259704589844, + -0.2504822611808777, -0.1265508532524109, -0.39018169045448303, + 0.03564107418060303 + ], + [ + -0.22017377614974976, -0.363871693611145, 0.16882872581481934, + -0.2376435399055481, -0.14798378944396973, -0.39528903365135193, + 0.03395271301269531 + ], + [ + -0.19973695278167725, -0.043880581855773926, -0.31651169061660767, + -0.2539522647857666, -0.3729313611984253, -0.38785964250564575, + -0.32405179738998413 + ], + [ + -0.22055977582931519, -0.057412028312683105, 0.16894793510437012, + -0.23727595806121826, -0.1485571265220642, -0.3953781723976135, + -0.2977551221847534 + ], + [ + -0.49781978130340576, -0.36146214604377747, -0.286006897687912, + -0.23413270711898804, -0.401971697807312, -0.3960435688495636, + 0.03347218036651611 + ], + [ + -0.22004830837249756, -0.36395466327667236, -0.2910895347595215, + -0.23776286840438843, -0.39770081639289856, -0.3952596187591553, + 0.03396904468536377 + ], + [ + -0.4776381254196167, -0.3719063103199005, -0.3076108992099762, + -0.4167298674583435, -0.3823379874229431, 0.17921221256256104, + 0.03541362285614014 + ], + [ + -0.48179343342781067, -0.36999714374542236, 0.16574335098266602, + -0.41538792848587036, -0.3863012194633484, 0.18002045154571533, + 0.0350879430770874 + ], + [ + -0.508894681930542, -0.3541759252548218, -0.2713460922241211, + -0.40267854928970337, -0.16975659132003784, -0.39723455905914307, + 0.03191328048706055 + ], + [ + -0.21307462453842163, -0.052338361740112305, -0.3002639412879944, + -0.41422662138938904, -0.1377529501914978, -0.3933033049106598, + 0.0348048210144043 + ], + [ + -0.4706237018108368, -0.04521989822387695, 0.1629069447517395, + -0.2524957060813904, -0.1228402853012085, -0.3889024257659912, + 0.035892605781555176 + ], + [ + -0.497096449136734, -0.3618950843811035, 0.16973590850830078, + -0.40917733311653137, -0.40124452114105225, -0.3959224224090576, + 0.03356003761291504 + ], + [ + -0.480307400226593, -0.04986262321472168, 0.16536259651184082, + -0.4158831536769867, -0.3848799467086792, -0.3919810354709625, + -0.3122934103012085 + ], + [ + -0.4798288643360138, -0.04962170124053955, 0.16523998975753784, + -0.24738597869873047, -0.3844226002693176, -0.39184072613716125, + 0.03524589538574219 + ], + [ + -0.1717991828918457, -0.3883611857891083, -0.3448413610458374, + -0.26669883728027344, -0.08849179744720459, 0.16610896587371826, + 0.03741788864135742 + ], + [ + -0.4819774925708771, -0.3699112832546234, -0.3034142255783081, + -0.24604952335357666, -0.3864768147468567, -0.39245831966400146, + 0.0350726842880249 + ], + [ + -0.4719034731388092, -0.3743649423122406, -0.3128410875797272, + -0.41837143898010254, -0.3769218325614929, -0.38933804631233215, + -0.3202442526817322 + ], + [ + -0.46102073788642883, -0.3785298466682434, -0.3218832015991211, + -0.2568829655647278, -0.3667904734611511, 0.17553460597991943, + 0.0364222526550293 + ], + [ + -0.4878339171409607, -0.36701419949531555, -0.2973853647708893, + -0.24209105968475342, -0.14089679718017578, -0.3939957022666931, + 0.03455150127410889 + ], + [ + -0.20993518829345703, -0.3703061044216156, -0.30424174666404724, + -0.24657797813415527, -0.3856739103794098, 0.17989635467529297, + -0.3114742040634155 + ], + [ + -0.4623970687389374, -0.041611433029174805, -0.3207987844944, + -0.25630730390548706, -0.3680603504180908, 0.17586219310760498, + -0.328551709651947 + ], + [ + -0.4483569860458374, -0.382647842168808, -0.3311326205730438, + -0.26142942905426025, -0.355206161737442, 0.17236065864562988, + -0.339652955532074 + ], + [ + -0.46619275212287903, -0.043242037296295166, -0.3177221417427063, + -0.41978222131729126, -0.11874884366989136, 0.17674648761749268, + -0.3253171443939209 + ], + [ + -0.21440458297729492, -0.05322045087814331, -0.2985529899597168, + -0.413613885641098, -0.13962090015411377, -0.39372387528419495, + 0.034655213356018066 + ], + [ + -0.4778335988521576, -0.04863256216049194, 0.16473162174224854, + -0.24857527017593384, -0.3825230598449707, -0.3912433981895447, + -0.3146968483924866 + ] + ], + "velocity_u": [ + [ + 0.013871114448370895, 0.12802415679307919, 0.0919197246371718, + -0.13828074641968088, 0.0240098384729021, 0.08332838483720134, + 0.09585120381840136 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.05083603838556144, 0.4413840419072413, 0.04000760090681464, + 0.003175357138188317, 0.07839978468746103, 0.02611840262224845, + 0.1712292458111995 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.015738092178754524, 0.17858360972338783, 0.0923913196395026, + 0.00007375724325565144, 0.02808066099116272, 0.07914356599332342, + 0.09824182643092866 + ], + [ + 0.02055120985508018, 0.21049997078827282, 0.08373358255983487, + 0.00011524887192710787, 0.03402332246367175, 0.0681339970707457, + 0.10494664386607859 + ], + [ + 0.040085714298987864, 0.32774917866597797, 0.06176826430454228, + 0.0005674714287350591, 0.05623330398713567, 0.04178665495614378, + 0.12881737520815492 + ], + [ + 0.020867271744994847, 0.22767827689822484, 0.07454740982195827, + 0.00021699068613850498, 0.03465469607070802, 0.05862140214740036, + 0.11235486518910566 + ], + [ + 0.06999405274503946, 0.4875924728069112, 0.03691628686077369, + 0.004977377686010334, 0.09044991634311403, 0.023397148332930898, + 0.18399794467643993 + ], + [ + 0.01694175907566667, 0.17745992801696556, 0.08640125814660347, + 0.00008960995795748715, 0.028710640115182325, 0.07244008432704752, + 0.10209641912173448 + ], + [ + 0.016628633565619787, 0.1872202683640343, 0.08892668971981721, + 0.00009020522338896158, 0.029561580570890655, 0.07477774606306789, + 0.10077071081574364 + ], + [ + 0.07724049748270638, 0.5399655395275437, 0.037150593700428405, + 0.004832129400396117, 0.09979236600494484, 0.021502422452872507, + 0.18922537545489054 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.021594131536364112, 0.23582475583707915, 0.07251204287041335, + 0.0002500388453142937, 0.03707509651602201, 0.05638417435778535, + 0.11311540790023673 + ], + [ + 0.014164151407556844, 0.16105462543577675, 0.0979112344889769, + -0.10283404183335122, 0.025451781246183396, 0.08689412296569128, + 0.09382920751752406 + ], + [ + 0.06165957864579997, 0.491175317818186, 0.0381889172898143, + 0.004172627859732737, 0.08824031697725897, 0.023906332766820592, + 0.18340746976161235 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.07741765944007131, 0.5441981273396671, 0.03629388370068171, + 0.004813733919780079, 0.10064612203830157, 0.021970674742170376, + 0.19070737489092673 + ], + [ + 0.02705645769847576, 0.2659342067104673, 0.06153164906293237, + 0.000588469129602192, 0.04295738868753449, 0.04468109007665975, + 0.12568862925072827 + ], + [ + 0.07813038005929707, 0.5682253043271562, 0.03832946496612539, + 0.004775009628013637, 0.10230854403952883, 0.020800757114951336, + 0.1884887001146246 + ], + [ + 0.02482189940603976, 0.24501742887695963, 0.06580154916496801, + 0.0004171230430351819, 0.040046315837371, 0.04874759645714724, + 0.12044170050957362 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.0760987854229484, 0.5859472207862702, 0.03971813350591733, + 0.00480186829545868, 0.09920555030933721, 0.02113501626301226, + 0.18230930645168994 + ], + [ + 0.053536388896318544, 0.3863716273129177, 0.06131305230232214, + 0.0005971912371561756, 0.06941160053556877, 0.03998897981197061, + 0.1362607083615368 + ], + [ + 0.06593571872497679, 0.48211221232719653, 0.046719479609741384, + 0.0024133317523273167, 0.0845068064750924, 0.027527115159608533, + 0.16087518354604943 + ], + [ + 0.07750639274026401, 0.5453324100627742, 0.03687251912651112, + 0.004810494935648439, 0.10084417767160492, 0.022046535677236787, + 0.1905721694053884 + ], + [ + 0.01589797024141697, 0.17858360972338783, 0.09165285064494469, + 0.00007333951321969978, 0.028259831330941187, 0.07783070285611084, + 0.0986731162037428 + ], + [ + 0.014722473960559992, 0.1444888197605931, 0.08825447592622843, + 0.00007915373285280896, 0.02537925368848026, 0.07927373249255265, + 0.0977423571909879 + ], + [ + 0.055519344429352496, 0.45142439641074017, 0.039159635053877845, + 0.0036693715185487827, 0.08009038258352463, 0.025802549405832483, + 0.17570442608694053 + ], + [ + 0.05709859916772148, 0.423687476729222, 0.04205127732294291, + 0.0027872821572113757, 0.0745221634737063, 0.026987692721217992, + 0.17044849947387486 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.013113978561305039, 0.1435577271431702, 0.09765265171337789, + -0.10757637806029915, 0.022858338689199707, 0.09047589789180382, + 0.09231516065666673 + ], + [ + 0.02265085541911061, 0.21546966778245577, 0.06654100858831724, + 0.00036892699017749945, 0.03550918576201963, 0.05199595068020072, + 0.11791026923812897 + ], + [ + 0.026921200927584706, 0.2760722401695563, 0.06214295606839292, + 0.0005917929443063728, 0.04329297504260784, 0.04510420287279119, + 0.1255216012261891 + ], + [ + 0.07679369453445864, 0.5315988939623454, 0.03835001016005992, + 0.004115045853030041, 0.09859717756099688, 0.02194778773737997, + 0.1858148558673946 + ], + [ + 0.025494721173909392, 0.25232764186877177, 0.06532549111863227, + 0.0004685884416497021, 0.040761942134080915, 0.04810592714745889, + 0.12270402300381607 + ], + [ + 0.07330019085249163, 0.5173331010842822, 0.037094248443364716, + 0.0041437368365318155, 0.09558047939365046, 0.022958727722982488, + 0.1864536136160833 + ], + [ + 0.017499209968328946, 0.19516677834853338, 0.0848741960583676, + 0.00011027088854998786, 0.030080823876772352, 0.07069792410543695, + 0.10373868503677859 + ], + [ + 0.013113978561305039, 0.14348301940008018, 0.09788461698478458, + -0.10592723138527677, 0.02300862185998976, 0.09098409152156059, + 0.09143551004669352 + ], + [ + 0.012831641206985283, 0.1431845770061173, 0.10227675427257697, + -0.08135480924859007, 0.022963433458644864, 0.09429668616654112, + 0.0903397153940486 + ], + [ + 0.07335979793643391, 0.5014926686477557, 0.03625085388397348, + 0.004943987971051908, 0.09438583042916097, 0.023166432831647824, + 0.18465157779527877 + ], + [ + 0.02846001020536981, 0.27962287885019954, 0.059832865262701034, + 0.000718978322162336, 0.045116956332016726, 0.04270658943308242, + 0.1286079594119212 + ], + [ + 0.01590186513402436, 0.15234167793224782, 0.08687555128462451, + 0.00009569717641311334, 0.02644878528737592, 0.07526301211304277, + 0.0995612024223981 + ], + [ + 0.07601166362392643, 0.5338172198985423, 0.03759393475113235, + 0.004849507005558436, 0.09849301520642646, 0.021989615468904624, + 0.18735583897552258 + ], + [ + 0.07185205530162624, 0.5473598861896593, 0.042329547042457796, + 0.004144636645829921, 0.09300930709220222, 0.023619001077238234, + 0.17236190589301986 + ], + [ + 0.024202887028482393, 0.2303312707028526, 0.06347134530281186, + 0.0004784824981918657, 0.037823819125339685, 0.048343541957815, + 0.12110103533924539 + ], + [ + 0.06835341945085548, 0.5044805436185636, 0.04521655383620121, + 0.0027100188629230427, 0.08787241363405843, 0.026159357207770056, + 0.1656119197622568 + ], + [ + 0.06509944904915742, 0.4791101083054455, 0.04632527213035154, + 0.0024128676859606017, 0.08360973908702192, 0.027243933886715043, + 0.1603869437053772 + ], + [ + 0.021467804723024602, 0.23582475583707915, 0.0733349240659943, + 0.00024839552108854823, 0.03682705021220493, 0.057063719509232204, + 0.11247154460680701 + ] + ] + }, + "obs": { + "1-Cytotrace": [ + 0.6, 0.94, 0.18000000000000005, 0.96, 0.7, 0.43999999999999995, + 0.30000000000000004, 0.86, 0.12, 0.76, 0.52, 0.09999999999999998, 0.98, + 0.45999999999999996, 0.84, 0, 0.5, 0.07999999999999996, 0.54, 0.26, 0.78, + 0.020000000000000018, 0.74, 0.28, 0.4, 0.38, 0.06000000000000005, 0.9, + 0.56, 0.14, 0.16000000000000003, 0.6799999999999999, 0.8, + 0.6599999999999999, 0.92, 0.24, 0.8200000000000001, 0.19999999999999996, + 0.5800000000000001, 0.72, 0.64, 0.21999999999999997, 0.42000000000000004, + 0.88, 0.040000000000000036, 0.31999999999999995, 0.62, + 0.33999999999999997, 0.36, 0.48 + ], + "G2M_score": [ + -0.17808695137500763, -0.20500724017620087, -0.05926266312599182, + -0.28532150387763977, -0.24861331284046173, -0.26661795377731323, + 1.390926480293274, -0.23506353795528412, -0.20293928682804108, + -0.222975954413414, -0.15791422128677368, 0.7809014916419983, + -0.24516768753528595, -0.21463991701602936, -0.10996249318122864, + 0.4840411841869354, -0.2309238165616989, 0.3751475512981415, + -0.26815351843833923, 0.9082856178283691, -0.11527934670448303, + 0.7475467920303345, -0.2216024100780487, -0.2054639756679535, + -0.26204442977905273, -0.13194540143013, 0.10288387537002563, + -0.17528025805950165, -0.23461636900901794, -0.1737227439880371, + -0.1606866717338562, -0.2213122844696045, -0.1756855845451355, + -0.23374433815479279, -0.2139715999364853, -0.23751017451286316, + -0.3320413827896118, -0.1540473997592926, -0.17886017262935638, + -0.2009081244468689, -0.21155518293380737, -0.22321660816669464, + -0.2697060704231262, -0.25177180767059326, 1.0252666473388672, + -0.27496808767318726, -0.3082582354545593, -0.15865947306156158, + -0.2577580511569977, -0.24062800407409668 + ], + "S_score": [ + -0.1900176852941513, -0.1798986792564392, 0.2876194417476654, + -0.13059574365615845, -0.19154003262519836, -0.20736166834831238, + 0.055809736251831055, -0.22657276690006256, -0.09854981303215027, + -0.10515359044075012, -0.22417986392974854, -0.13923786580562592, + -0.17192961275577545, -0.210012286901474, -0.24508747458457947, + 0.24464142322540283, -0.2199627012014389, 0.45211780071258545, + -0.2847501337528229, -0.1225256621837616, -0.1853637546300888, + 0.14741107821464539, -0.17434504628181458, -0.06566576659679413, + -0.11917057633399963, 0.0994512140750885, 0.6314109563827515, + -0.2435632348060608, -0.15836980938911438, -0.16285839676856995, + -0.03735727071762085, -0.23504072427749634, -0.1940152645111084, + -0.2763311266899109, -0.10047918558120728, -0.19494567811489105, + -0.15960684418678284, -0.1518237292766571, -0.21157994866371155, + -0.23124836385250092, -0.28817230463027954, 0.01992771029472351, + -0.10988262295722961, -0.1453070193529129, 0.0024125277996063232, + -0.1523832529783249, -0.18731294572353363, -0.23668700456619263, + -0.10470859706401825, -0.16313031315803528 + ], + "cell_time": [ + 1.0111111402511597, 0.9906900525093079, 0.9921244382858276, + 0.9474010467529297, 0.9903291463851929, 1.0146467685699463, + 1.0431679487228394, 0.9742365479469299, 1.0126205682754517, + 1.0182862281799316, 1.018476963043213, 0.9693946242332458, + 0.9668776392936707, 1.029341459274292, 0.9552245736122131, + 1.0237098932266235, 1.0219533443450928, 1.055890679359436, + 1.0118393898010254, 1.0091561079025269, 0.9941914677619934, + 0.9784784913063049, 0.9738691449165344, 1.0064533948898315, + 0.9795732498168945, 1.0003812313079834, 1.0035293102264404, + 0.955602765083313, 1.021865725517273, 0.9662628173828125, + 1.0269787311553955, 0.9767714142799377, 0.9514976143836975, + 0.9475018978118896, 1.0111042261123657, 1.0097986459732056, + 0.9734369516372681, 0.9821793437004089, 0.9726355075836182, + 1.0400032997131348, 0.9894457459449768, 1.0216773748397827, + 0.9748828411102295, 1.011807918548584, 0.9969428777694702, + 1.0145905017852783, 1.015006184577942, 1.0024551153182983, + 1.012247920036316, 0.9762856960296631 + ], + "clusters": [ + "Beta", + "Beta", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Ductal", + "Alpha", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Epsilon", + "Ngn3 low EP", + "Alpha", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Epsilon", + "Epsilon", + "Ductal", + "Ductal", + "Beta", + "Epsilon", + "Beta", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Beta", + "Beta", + "Ductal", + "Ngn3 high EP", + "Beta", + "Ngn3 low EP", + "Ngn3 high EP", + "Beta", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "clusters_coarse": [ + "Endocrine", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Pre-endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Pre-endocrine", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 low EP", + "Endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Ngn3 high EP", + "Ductal", + "Endocrine", + "Endocrine", + "Ductal", + "Ductal", + "Endocrine", + "Endocrine", + "Endocrine", + "Pre-endocrine", + "Ngn3 low EP", + "Pre-endocrine", + "Ductal", + "Pre-endocrine", + "Endocrine", + "Endocrine", + "Ductal", + "Ngn3 high EP", + "Endocrine", + "Ngn3 low EP", + "Ngn3 high EP", + "Endocrine", + "Ngn3 high EP", + "Ngn3 high EP", + "Pre-endocrine" + ], + "counts": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "cytotrace": [ + 0.4, 0.06, 0.82, 0.04, 0.3, 0.56, 0.7, 0.14, 0.88, 0.24, 0.48, 0.9, 0.02, + 0.54, 0.16, 1, 0.5, 0.92, 0.46, 0.74, 0.22, 0.98, 0.26, 0.72, 0.6, 0.62, + 0.94, 0.1, 0.44, 0.86, 0.84, 0.32, 0.2, 0.34, 0.08, 0.76, 0.18, 0.8, 0.42, + 0.28, 0.36, 0.78, 0.58, 0.12, 0.96, 0.68, 0.38, 0.66, 0.64, 0.52 + ], + "gcs": [ + 0.5244778770994014, 0.5129478238473114, 0.7826161375792811, + 0.5117531627909847, 0.5190497171541436, 0.5637573809761884, + 0.6508034788918519, 0.5163066609682956, 0.792511862317284, + 0.5180831231717323, 0.5272142375619158, 0.7943653528500743, + 0.5080274851539491, 0.5504155715457072, 0.5164209907497207, + 0.8171000721142909, 0.5278637955662792, 0.7983229655670726, + 0.5271033034231696, 0.7648695150024483, 0.5168916697412018, + 0.8129651858050949, 0.5186165146826127, 0.7058778301329864, + 0.6094438628814951, 0.6165225824475602, 0.8039459086878185, + 0.5149845542767119, 0.5264451411217966, 0.7917406935263639, + 0.7906617510911822, 0.5196608310422022, 0.5168045107212442, + 0.5198727827700934, 0.5134483607643375, 0.770085958765089, + 0.5167616880623153, 0.781576648442451, 0.524914785735908, + 0.5189291840376982, 0.5216781377810267, 0.7779177850575866, + 0.5999736995265549, 0.515848154152629, 0.8075968260039189, + 0.6341189591468761, 0.5218131201579692, 0.6257739023282144, + 0.6204822485053811, 0.5412388946655619 + ], + "ind_x": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 + ], + "index": [ + "ACGAGGATCATCACCC", + "ATCATGGCAGCTGTGC", + "TGGACGCAGTGTTGAA", + "CAAGGCCAGACGACGT", + "AGCCTAAGTTCCATGA", + "TCCCGATCAGCATGAG", + "GTCATTTTCATAGCAC", + "ACTGTCCCACGTAAGG", + "CGCTGGAGTCCATCCT", + "TGTGTTTGTATATCCG", + "ACTGAGTGTCTTCAAG", + "AGGTCCGTCCTGCAGG", + "TCACAAGTCTGGTTCC", + "CAGCATAGTAATAGCA", + "TTGACTTTCACCGGGT", + "TCGCGTTAGATCTGAA", + "TTCTACATCTACTCAT", + "AGGCCGTGTACCAGTT", + "CCTACCACACGTAAGG", + "GTTCGGGAGTCACGCC", + "CGTTGGGGTTTAAGCC", + "CAAGGCCAGTTGCAGG", + "AAACGGGCAAAGAATC", + "TTTACTGCAGCATACT", + "GGATTACAGACATAAC", + "GATGCTAAGCGATAGC", + "CCCAGTTTCGTATCAG", + "CGAACATTCGGAAACG", + "GGACGTCGTCGAGATG", + "GAACCTAAGAATCTCC", + "TTTGCGCAGACAGACC", + "ATTATCCAGGACATTA", + "AAGGAGCCAAAGGTGC", + "TGGACGCAGCGTCTAT", + "CAGCTAACAGCTTAAC", + "TACTCATAGGCCATAG", + "CAAGTTGGTGTGCCTG", + "CGAACATTCTAACGGT", + "GGATTACGTATCTGCA", + "TTGCGTCCATACCATG", + "ATGAGGGCAAGGTTTC", + "GAAGCAGGTCCGAAGA", + "GACTGCGAGAATCTCC", + "TTGAACGTCTTTAGTC", + "TCAATCTGTCAAAGAT", + "GGGACCTAGCTGCCCA", + "CGGAGTCCATAAAGGT", + "ACTGATGTCTGCGACG", + "AACTCCCAGAACTCGG", + "CTGAAGTCAGCTGGCT" + ], + "initial_size": [ + 9143, 5370, 6068, 4839, 4301, 4267, 6759, 4392, 7418, 4919, 4902, 5793, + 3970, 5221, 4093, 13458, 6526, 9890, 8992, 12844, 5747, 11765, 6370, 7698, + 4909, 5910, 11213, 5391, 5866, 7670, 7960, 5221, 4563, 6628, 4623, 6150, + 5391, 6852, 4766, 4898, 6609, 3409, 5055, 6210, 10712, 6351, 7383, 5536, + 6306, 4849 + ], + "initial_size_spliced": [ + 9143, 5370, 6068, 4839, 4301, 4267, 6759, 4392, 7418, 4919, 4902, 5793, + 3970, 5221, 4093, 13458, 6526, 9890, 8992, 12844, 5747, 11765, 6370, 7698, + 4909, 5910, 11213, 5391, 5866, 7670, 7960, 5221, 4563, 6628, 4623, 6150, + 5391, 6852, 4766, 4898, 6609, 3409, 5055, 6210, 10712, 6351, 7383, 5536, + 6306, 4849 + ], + "initial_size_unspliced": [ + 1782, 1454, 831, 1108, 1365, 1023, 2541, 1169, 1007, 1310, 1301, 696, + 1745, 1510, 1185, 1625, 1591, 800, 2960, 1692, 1217, 1451, 1576, 1120, + 1078, 1038, 1552, 1305, 972, 1211, 974, 1165, 1033, 1380, 1537, 828, 1242, + 1057, 1278, 1054, 1578, 556, 1413, 1327, 1308, 728, 1703, 672, 1043, 1368 + ], + "leiden": [ + "0", + "0", + "1", + "0", + "3", + "2", + "2", + "3", + "1", + "3", + "3", + "1", + "0", + "2", + "3", + "1", + "0", + "1", + "0", + "1", + "3", + "1", + "0", + "1", + "2", + "2", + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "0", + "3", + "1", + "3", + "1", + "3", + "0", + "0", + "1", + "2", + "0", + "1", + "2", + "0", + "2", + "2", + "2" + ], + "n_counts": [ + 1666.6461181640625, 2026.2613525390625, 1516.6356201171875, + 2167.085693359375, 1512.7271728515625, 1672.42919921875, + 1553.2332763671875, 1591.3150634765625, 1688.2955322265625, + 1497.4359130859375, 1608.329833984375, 1415.843994140625, + 1736.7374267578125, 1794.25537109375, 1655.7750244140625, 1471.78125, + 2160.858154296875, 1453.2464599609375, 1877.323974609375, + 1502.2559814453125, 1552.1700439453125, 1564.4613037109375, + 1609.263427734375, 1708.7283935546875, 1621.62890625, 1458.55029296875, + 1430.3856201171875, 1721.2923583984375, 1801.7320556640625, 1496.94921875, + 1719.0595703125, 1583.365478515625, 1864.5977783203125, + 1848.6614990234375, 1592.039794921875, 1483.9674072265625, + 1585.86083984375, 1572.5391845703125, 1651.753173828125, + 1575.983642578125, 1861.103271484375, 1557.927978515625, + 1600.417724609375, 2167.466552734375, 1397.2457275390625, + 1462.0338134765625, 1621.3333740234375, 1499.6533203125, + 1645.2039794921875, 1672.05126953125 + ], + "n_genes_by_counts": [ + 3101, 2265, 2433, 1968, 2102, 1825, 2619, 2088, 2642, 2231, 2158, 2399, + 1904, 2148, 1990, 3594, 2498, 3222, 3323, 3606, 2518, 3443, 2581, 2658, + 2014, 2292, 3415, 2346, 2451, 2848, 2797, 2401, 2069, 2570, 2234, 2437, + 2434, 2573, 2203, 2231, 2509, 1593, 2129, 2418, 3394, 2334, 2806, 2260, + 2257, 2171 + ], + "pct_counts_mt": [ + 0.43749314546585083, 0.6145251393318176, 1.0052735805511475, + 0.4133085310459137, 0.5580097436904907, 0.6561987400054932, + 0.6657789349555969, 0.9335154891014099, 0.5527096390724182, + 0.7318560481071472, 0.5507955551147461, 0.638701856136322, + 1.4357682466506958, 0.8427504301071167, 0.8551185131072998, + 0.5944419503211975, 0.8581060171127319, 0.6572295427322388, + 0.6783807873725891, 0.5839301943778992, 0.5220114588737488, + 0.7479813098907471, 0.6279435157775879, 0.7404520511627197, + 0.9370543956756592, 0.9983079433441162, 0.5529296398162842, + 1.0573177337646484, 0.7841800451278687, 0.795306384563446, + 0.5150753259658813, 0.5554491877555847, 0.4821389317512512, + 0.6336753368377686, 0.9301319718360901, 0.7317073345184326, + 0.9831200242042542, 0.6421482563018799, 0.902224063873291, + 0.8779093623161316, 0.8624603152275085, 1.0266940593719482, + 0.7912957072257996, 0.4508856534957886, 0.7468259930610657, + 0.7085498571395874, 0.9481241106987, 0.7767341136932373, + 0.713606059551239, 0.5155702233314514 + ], + "pct_counts_ribo": [ + 13.98884391784668, 11.340782165527344, 27.14238739013672, + 13.969828605651855, 15.089513778686523, 22.427936553955078, + 15.682792663574219, 16.41621208190918, 29.361013412475586, + 16.0601749420166, 18.0130558013916, 21.508716583251953, 15.2896728515625, + 22.237119674682617, 17.10236930847168, 24.349828720092773, + 18.38798713684082, 24.36804962158203, 14.368327140808105, + 21.325132369995117, 11.031843185424805, 28.601783752441406, + 17.064363479614258, 29.51416015625, 23.283763885498047, + 19.560068130493164, 23.53518295288086, 11.574847221374512, + 14.1663818359375, 24.941329956054688, 29.874372482299805, + 13.96284294128418, 13.434144973754883, 11.270368576049805, + 16.872161865234375, 25.934959411621094, 16.082359313964844, + 27.2037353515625, 16.61771011352539, 15.598203659057617, + 15.584808349609375, 26.60604476928711, 22.116716384887695, + 15.120773315429688, 22.59148597717285, 22.500394821166992, + 14.533387184143066, 21.92919158935547, 26.815731048583984, + 20.97339630126953 + ], + "s_lib_size": [ + 9.1207438382738, 8.58858318768913, 8.710784340633221, 8.484463366999973, + 8.366602833016241, 8.358666283422357, 8.818630229248305, + 8.387539983417053, 8.911664758184344, 8.500860536998633, + 8.497398564292057, 8.664405571269246, 8.286521373933125, + 8.560444233602087, 8.317033476736723, 9.50732900382257, 8.783549477306499, + 9.19927942471787, 9.104090572244683, 9.460632055287261, 8.656433258681746, + 9.372884301246462, 8.759354748723196, 8.948715833973596, 8.49882553426176, + 8.684401110569349, 9.324829098550063, 8.592486175637163, 8.67692824970787, + 8.94507189449168, 8.982184278964057, 8.560444233602087, 8.425735581146556, + 8.799058378697328, 8.438799124204536, 8.724207360963165, + 8.592486175637163, 8.832295859589953, 8.469262657868507, + 8.496582237716279, 8.796187635621761, 8.134174272431244, + 8.528133131652396, 8.733916175088556, 9.279119887464361, + 8.756367559960431, 8.906935339194613, 8.619027497478141, + 8.749256840263586, 8.486527777311581 + ], + "s_lib_size_mean": [ + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886, 8.727997106435886, + 8.727997106435886, 8.727997106435886 + ], + "s_lib_size_raw": [ + 9143, 5370, 6068, 4839, 4301, 4267, 6759, 4392, 7418, 4919, 4902, 5793, + 3970, 5221, 4093, 13458, 6526, 9890, 8992, 12844, 5747, 11765, 6370, 7698, + 4909, 5910, 11213, 5391, 5866, 7670, 7960, 5221, 4563, 6628, 4623, 6150, + 5391, 6852, 4766, 4898, 6609, 3409, 5055, 6210, 10712, 6351, 7383, 5536, + 6306, 4849 + ], + "s_lib_size_scale": [ + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593, 0.31447871714283593, + 0.31447871714283593, 0.31447871714283593 + ], + "total_counts": [ + 9143, 5370, 6068, 4839, 4301, 4267, 6759, 4392, 7418, 4919, 4902, 5793, + 3970, 5221, 4093, 13458, 6526, 9890, 8992, 12844, 5747, 11765, 6370, 7698, + 4909, 5910, 11213, 5391, 5866, 7670, 7960, 5221, 4563, 6628, 4623, 6150, + 5391, 6852, 4766, 4898, 6609, 3409, 5055, 6210, 10712, 6351, 7383, 5536, + 6306, 4849 + ], + "total_counts_mt": [ + 40, 33, 61, 20, 24, 28, 45, 41, 41, 36, 27, 37, 57, 44, 35, 80, 56, 65, + 61, 75, 30, 88, 40, 57, 46, 59, 62, 57, 46, 61, 41, 29, 22, 42, 43, 45, + 53, 44, 43, 43, 57, 35, 40, 28, 80, 45, 70, 43, 45, 25 + ], + "total_counts_ribo": [ + 1279, 609, 1647, 676, 649, 957, 1060, 721, 2178, 790, 883, 1246, 607, + 1161, 700, 3277, 1200, 2410, 1292, 2739, 634, 3365, 1087, 2272, 1143, + 1156, 2639, 624, 831, 1913, 2378, 729, 613, 747, 780, 1595, 867, 1864, + 792, 764, 1030, 907, 1118, 939, 2420, 1429, 1073, 1214, 1691, 1017 + ], + "u_lib_size": [ + 7.485491608591922, 7.282073658781223, 6.7226297960588175, + 7.010311868209756, 7.218909708351661, 6.930494766929144, + 7.8403129837137095, 7.0639039623275, 6.914730893711611, 7.177782416958556, + 7.170888479281145, 6.545349661771201, 7.4645098352095935, + 7.319864930471222, 7.077498054413113, 7.393263095379223, + 7.372118028966322, 6.684611728917927, 7.992944547655944, + 7.433666540757185, 7.10414409380922, 7.280008253573368, 7.362645271052342, + 7.021083965181997, 6.982862752396587, 6.945051064689225, + 7.347299701387494, 7.173958320523077, 6.879355805489245, + 7.099201744378856, 6.881411304669229, 7.06047636685817, 6.940222470087693, + 7.229838778875888, 7.337587744189214, 6.7190131555929895, + 7.1244782632985775, 6.963189986816311, 7.153051635719953, + 6.960347730050074, 7.363913502039533, 6.320768296049144, + 7.253470383392242, 7.1906760350857875, 7.1762545327816705, + 6.5903010495703125, 7.440146681249887, 6.5102583420112445, + 6.949856455959545, 7.22110509891349 + ], + "u_lib_size_mean": [ + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983, 7.113666707042983, + 7.113666707042983, 7.113666707042983 + ], + "u_lib_size_raw": [ + 1782, 1454, 831, 1108, 1365, 1023, 2541, 1169, 1007, 1310, 1301, 696, + 1745, 1510, 1185, 1625, 1591, 800, 2960, 1692, 1217, 1451, 1576, 1120, + 1078, 1038, 1552, 1305, 972, 1211, 974, 1165, 1033, 1380, 1537, 828, 1242, + 1057, 1278, 1054, 1578, 556, 1413, 1327, 1308, 728, 1703, 672, 1043, 1368 + ], + "u_lib_size_scale": [ + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213, 0.31173359020014213, + 0.31173359020014213, 0.31173359020014213 + ], + "velocity_pyro_self_transition": [ + 0.8292303085327148, 0.2321656346321106, 0.4199761152267456, + 0.1280423402786255, 0.7669388651847839, 0.8989084959030151, + 0.5325557589530945, 0.6518641114234924, 0.5630783438682556, + 0.4955666959285736, 0, 0.4880225956439972, 0.8989084959030151, + 0.6715168952941895, 0.569655179977417, 0.7988184094429016, + 0.6503857374191284, 0.8127716183662415, 0.8989084959030151, + 0.8989084959030151, 0.6651722192764282, 0.8989084959030151, + 0.8806236386299133, 0.6308692097663879, 0.8159878253936768, + 0.8406838178634644, 0.7169702053070068, 0.03720211982727051, + 0.27063053846359253, 0.0001042485237121582, 0.5684062242507935, + 0.8989084959030151, 0.8989084959030151, 0.8989084959030151, + 0.34655100107192993, 0.8989084959030151, 0.14897233247756958, + 0.8140642642974854, 0.4675273597240448, 0.7679743766784668, + 0.46773219108581543, 0.2400997281074524, 0.8325155377388, + 0.6556729674339294, 0.33716362714767456, 0.8989084959030151, + 0.8260020017623901, 0.26525527238845825, 0.8710122108459473, + 0.8599246144294739 + ], + "velocity_self_transition": [ + 0.5440033674240112, 0.7888529300689697, 0.013806283473968506, + 0.7888529300689697, 0.04211699962615967, 0.000010073184967041016, 0, + 0.18305939435958862, 0.028307318687438965, 0.40436577796936035, + 0.050437867641448975, 0.020281493663787842, 0.9946298003196716, + 0.12180924415588379, 0.07228374481201172, 0.45309191942214966, + 0.01954209804534912, 0.020969033241271973, 0.028395652770996094, + 0.023566842079162598, 0.1675243377685547, 0.024211585521697998, + 0.01954209804534912, 0.034968554973602295, 0.010215699672698975, + 0.0164758563041687, 0.024211585521697998, 0.04163020849227905, + 0.34288156032562256, 0.41478854417800903, 0.01286768913269043, + 0.8639301061630249, 0.9946298003196716, 0.36953556537628174, + 0.14971566200256348, 0.01855403184890747, 0.02419257164001465, + 0.01325768232345581, 0.208571195602417, 0.8639301061630249, + 0.7888529300689697, 0.02276688814163208, 0.01954209804534912, + 0.10389477014541626, 0.02105790376663208, 0.031654179096221924, + 0.2101317048072815, 0.016947627067565918, 0.019509553909301758, + 0.08077633380889893 + ] + }, + "obsm": { + "X_pca": [ + [ + 1.4144984483718872, 3.997581958770752, -0.19714905321598053, + 0.4733535647392273, -0.2801288068294525, -0.3805229067802429 + ], + [ + 1.5038690567016602, 2.402435779571533, -0.13273057341575623, + 0.02126665972173214, -0.20061729848384857, 0.39061903953552246 + ], + [ + -1.3859983682632446, 0.032538555562496185, 1.0155613422393799, + 0.23975668847560883, 0.10749029368162155, -0.04985477030277252 + ], + [ + 3.119673490524292, -0.5944597125053406, 0.5344879627227783, + -0.2844259440898895, -0.526263952255249, 0.21355965733528137 + ], + [ + -0.020532572641968727, -0.1507239043712616, -0.516022264957428, + -0.02341514825820923, 0.6671254634857178, 0.5990069508552551 + ], + [ + -0.7915133833885193, 0.49787166714668274, 0.20913395285606384, + 0.9034885764122009, -0.432805597782135, -0.2923879623413086 + ], + [ + -0.2615200877189636, -0.2304297536611557, -0.21188436448574066, + -0.057729221880435944, -0.270601361989975, -0.2579212188720703 + ], + [ + 0.63871169090271, 0.006551856175065041, 0.245130255818367, + -0.8283789157867432, 0.11013317108154297, 0.012530306354165077 + ], + [ + -1.3348954916000366, 0.032321058213710785, 1.031253695487976, + 0.3615090250968933, 0.10701531916856766, 0.22371011972427368 + ], + [ + 0.31338122487068176, -0.6409487724304199, -0.6070172190666199, + 0.7315727472305298, -0.8272746205329895, 0.4331108629703522 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + -1.1565064191818237, 0.01069409679621458, 0.25611311197280884, + -0.0017249517841264606, 0.027001159265637398, 0.06149040907621384 + ], + [ + 1.36909818649292, -0.7075638175010681, -0.11205742508172989, + 0.6156367063522339, 0.13621339201927185, -0.6589383482933044 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + 1.0107204914093018, -0.5504703521728516, -0.21137572824954987, + 0.29380467534065247, -0.6373857855796814, 0.25898003578186035 + ], + [ + -1.0895694494247437, 0.0025790061336010695, -0.0347430482506752, + -0.138021320104599, -0.0030225720256567, 0.0006206714897416532 + ], + [ + 1.8526469469070435, -0.36286360025405884, 0.45596715807914734, + -0.4455402195453644, -0.27997514605522156, -0.30699172616004944 + ], + [ + -1.4389859437942505, 0.0408233143389225, 1.3198100328445435, + 0.4179389476776123, 0.1382443904876709, 0.09795086830854416 + ], + [ + 0.5432486534118652, -0.2375839650630951, -0.1763160079717636, + -0.21121077239513397, -0.26059821248054504, 0.5036249756813049 + ], + [ + -1.1137322187423706, -0.0049942294135689735, -0.34744367003440857, + -0.48554059863090515, -0.03162084147334099, -0.5396750569343567 + ], + [ + 0.07395623624324799, -0.424991637468338, -0.6522665619850159, + 0.5525419116020203, 0.5742418766021729, 0.19449357688426971 + ], + [ + -1.2352168560028076, 0.020236533135175705, 0.5981274247169495, + 0.15854430198669434, 0.06230570375919342, 0.13306640088558197 + ], + [ + 1.3914616107940674, -0.3721342980861664, 0.2878263294696808, + -0.2821817696094513, -0.3279727101325989, -0.3341836631298065 + ], + [ + -1.0925209522247314, -0.005243958439677954, -0.34727177023887634, + -0.4410278797149658, -0.03241671621799469, -0.4346628785133362 + ], + [ + -0.9201991558074951, -0.06039751321077347, -0.5740337371826172, + -0.12413540482521057, -0.13944703340530396, 0.5794640183448792 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + -1.3439265489578247, 0.033415935933589935, 1.07049560546875, + 0.37989795207977295, 0.11106608062982559, 0.23192258179187775 + ], + [ + 2.482923746109009, -0.301968514919281, 0.4988579750061035, + -0.6947592496871948, -0.18919619917869568, 0.4282510280609131 + ], + [ + 2.4192910194396973, -0.620490550994873, 0.30157020688056946, + -0.021741235628724098, -0.6096203923225403, 0.07140719890594482 + ], + [ + -1.2018057107925415, 0.01618594489991665, 0.45294860005378723, + 0.0905129536986351, 0.047319572418928146, 0.10268370807170868 + ], + [ + -0.9546421766281128, -0.1948697865009308, 0.07127662003040314, + 0.30180275440216064, -0.23760800063610077, -0.15895408391952515 + ], + [ + 1.8170768022537231, 0.14425498247146606, -0.17469634115695953, + 0.46594566106796265, 0.10337816178798676, 0.1024041548371315 + ], + [ + 3.2633416652679443, -0.904975414276123, 0.24552135169506073, + 0.6290639042854309, 0.9296310544013977, -0.7718920707702637 + ], + [ + 0.3392298221588135, 0.0042601823806762695, 0.13813798129558563, + -0.7299936413764954, 0.08385425060987473, -0.0014247336657717824 + ], + [ + 0.33014771342277527, -0.14078904688358307, -0.3657008111476898, + -0.1666475534439087, 0.6686094999313354, 0.5859480500221252 + ], + [ + -1.0718660354614258, -0.005487137008458376, -0.34710440039634705, + -0.39768269658088684, -0.03319171816110611, -0.3324050009250641 + ], + [ + -0.025394631549715996, -0.3484005033969879, -0.35596564412117004, + 0.2730350196361542, 0.3282395899295807, -0.3583773672580719 + ], + [ + -1.190405249595642, 0.009337078779935837, 0.1859966367483139, + -0.13919758796691895, 0.02167903259396553, -0.2003505975008011 + ], + [ + -0.41971108317375183, -0.6005278825759888, -0.8921835422515869, + 1.0113543272018433, -0.00856749713420868, 0.08504129201173782 + ], + [ + 1.4079724550247192, -0.687839150428772, -0.29125097393989563, + 0.6152310967445374, 0.004797353874891996, 0.05624033510684967 + ], + [ + 1.1617083549499512, 0.7695717215538025, -0.31013190746307373, + 0.09358685463666916, 1.070068597793579, 0.32769280672073364 + ], + [ + -1.313280701637268, 0.029700592160224915, 0.9373324513435364, + 0.3174971640110016, 0.09732026606798172, 0.20405448973178864 + ], + [ + -0.9221647381782532, -0.05930433049798012, -0.5694541335105896, + -0.12735922634601593, -0.13734771311283112, 0.5664900541305542 + ], + [ + 0.8021682500839233, 0.007802647538483143, 0.3035264313220978, + -0.8820773959159851, 0.12447614967823029, 0.020146938040852547 + ], + [ + -1.1241824626922607, -0.0048711951822042465, -0.3475283682346344, + -0.5074707269668579, -0.03122873790562153, -0.5914115309715271 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + 1.0300465822219849, 0.4870644211769104, 0.12514255940914154, + -0.4888507127761841, 0.5843067169189453, -0.08359081298112869 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + -1.0177841186523438, -0.006123865023255348, -0.3466660976409912, + -0.28418970108032227, -0.03522093966603279, -0.06465789675712585 + ], + [ + -0.7698972225189209, -0.29615527391433716, -0.4298935532569885, + 0.23690885305404663, -0.3963005244731903, -0.3430183231830597 + ] + ], + "X_umap": [ + [2.863359212875366, 4.735023021697998], + [4.928004741668701, 2.629343032836914], + [-10.694380760192871, 0.7282713055610657], + [4.215363025665283, 1.0666383504867554], + [5.565277099609375, -3.15651273727417], + [1.876205563545227, -4.090156078338623], + [-2.055039882659912, -2.075582981109619], + [6.112038612365723, -1.3596646785736084], + [-11.404786109924316, -0.3759504556655884], + [7.870038986206055, 0.4022972583770752], + [5.480849266052246, -2.966010808944702], + [-8.208011627197266, 3.705298900604248], + [8.639411926269531, 4.407148838043213], + [3.177371025085449, -4.527858257293701], + [6.2317891120910645, -2.5219004154205322], + [-11.267833709716797, 5.638401031494141], + [2.8690600395202637, 2.0928971767425537], + [-11.246185302734375, 3.945387840270996], + [6.571178913116455, 3.892319679260254], + [-9.088343620300293, 4.181664943695068], + [6.418415069580078, 0.26675549149513245], + [-10.823965072631836, 5.346739768981934], + [4.6938629150390625, 1.3343334197998047], + [-5.790002822875977, -3.077791690826416], + [-0.29139986634254456, -5.114933013916016], + [-0.673973798751831, -3.699603319168091], + [-11.295242309570312, 4.05423641204834], + [2.545789957046509, 0.22083541750907898], + [3.0721657276153564, 1.5921680927276611], + [-10.459954261779785, 0.2934435307979584], + [-10.321405410766602, 0.6823283433914185], + [5.687520980834961, 1.590615153312683], + [3.7333078384399414, 1.4692425727844238], + [5.3746466636657715, 1.7398216724395752], + [5.542148113250732, -1.4525854587554932], + [-7.874664783477783, -1.0265419483184814], + [5.81940221786499, -0.5606408715248108], + [-9.908223152160645, 0.3006816506385803], + [5.979428291320801, -1.5926531553268433], + [6.092731475830078, 0.9632568359375], + [4.219326019287109, 3.8157272338867188], + [-10.517379760742188, -1.2470197677612305], + [1.42355477809906, -4.790363788604736], + [6.245828151702881, 1.5339767932891846], + [-9.472710609436035, 4.53525972366333], + [-2.5874481201171875, -3.81369686126709], + [3.71260404586792, 3.353705406188965], + [-2.136101484298706, -4.025306701660156], + [-1.8059942722320557, -4.994431018829346], + [3.4860620498657227, -3.730013132095337] + ], + "velocity_pyro_pca": [ + [ + 0.12221784437842127, 0.0823470311256546, -0.0954539936105234, + 0.06803431309345034, -0.12870416109089766, 0.048425257706596565 + ], + [ + -0.03719390188201762, -0.08543929426938333, -0.026671433313092165, + -0.01393752368419366, -0.09497273877798161, -0.10239017912798438 + ], + [ + -0.0466245679408246, -0.13007834698431195, 0.11675936731234532, + 0.23141070317444093, 0.05859610349736057, 0.10051032500864272 + ], + [ + -0.08408594576883811, -0.02113524942583219, 0.28105483664455316, + -0.10294507809822802, 0.029893247772535627, -0.14772019362676223 + ], + [ + -0.03300267901910442, -0.12902875838443156, -0.13006911452487718, + -0.017734996765017032, -0.10755124131669007, -0.09445405650549717 + ], + [ + 0.027948834250869775, -0.11790751986974472, 0.1844161679464772, + 0.13959335521397126, -0.07378944237159943, 0.115816107507772 + ], + [ + -0.06426215868798896, -0.08329798494813065, -0.14959409273556998, + -0.06602608173814406, 0.11505515491073315, -0.048625365153914545 + ], + [ + 0.014640192812726226, -0.1332984635556534, -0.148499302171015, + 0.10187188550973073, 0.028182737256689773, 0.04679348774313892 + ], + [ + 0.05816634801538301, -0.06505947982325329, -0.09099598095405255, + -0.049503366990955824, 0.1171164262859652, 0.11559535769496855 + ], + [ + -0.03443703209030432, 0.14700077733597022, -0.1096637493851717, + -0.018304262412114504, -0.056493088458947426, 0.10794863120381021 + ], + [ + 0.03272956304064365, 0.10539134059663721, 0.23786810280453624, + 0.14554566285379109, -0.07144622581080924, -0.08124377380462207 + ], + [ + 0.004932078670433872, -0.048496168813876146, -0.05529247441994139, + -0.1778187979322596, -0.026010601669559555, -0.02082790427584509 + ], + [ + -0.03323981186481713, 0.14692742704577885, -0.11377691350247068, + -0.015710171337659402, -0.05587741462060732, 0.10578180924782124 + ], + [ + -0.0038457055244971636, -0.06427975633450167, 0.17064526943671485, + 0.08263861185413982, 0.14751587483015732, 0.16738520611681668 + ], + [ + -0.06636388298051074, -0.04090135440679309, -0.07877315313663452, + -0.0863538479932823, -0.03859600943696884, 0.13051995770996067 + ], + [ + 0.0912592922917324, -0.11150495271166415, -0.06978927988696774, + 0.0015884943045482817, -0.10949080213040313, 0.06863332279036401 + ], + [ + -0.0006322141807665439, -0.04881461867909232, -0.024993193491092382, + -0.15996998536277457, 0.14850944202272331, -0.22221783898752287 + ], + [ + 0.06096664113815675, 0.08967495033671297, 0.17260041859491984, + 0.19121197784235686, -0.10172887067433199, 0.10510376874680087 + ], + [ + -0.05057611894762345, -0.07781285630936437, -0.12520035128216395, + -0.0590820011760067, -0.02531899412665495, 0.10025917905838785 + ], + [ + 0.04021477568955371, 0.16310987833520685, -0.029865020163276527, + -0.08179256883550748, -0.010810896114736412, -0.10518756882413183 + ], + [ + 0.09339262820197528, 0.08300942538589907, -0.10924856216863262, + 0.012991867930664343, -0.12444901251632307, -0.10677743986517028 + ], + [ + -0.15441149022268832, -0.02415943987921368, 0.2446121844466413, + -0.004339090971248946, 0.02103743420380796, -0.0042760489135737585 + ], + [ + -0.037334167988934124, 0.14521695525073178, -0.09043969939804151, + 0.006542118775915792, 0.12126040412698169, -0.10489793526832517 + ], + [ + 0.11413831883674272, -0.12880246191819925, -0.10724659570174479, + 0.06690045734163769, 0.03487219433665549, 0.0539368350401866 + ], + [ + -0.03865153721634677, -0.1151304589396232, -0.11048478286104191, + -0.02753655894150937, -0.1156443758957235, -0.08834802255677056 + ], + [ + 0.08999345227182992, 0.12988410621283558, -0.1209965962815297, + 0.020471175178891243, 0.09848362102948577, 0.09293957791880934 + ], + [ + 0.05475949621452583, -0.11523050897248562, 0.16370444935229564, + 0.18522913066122945, 0.05826201710710116, 0.1124655245616647 + ], + [ + 0.09373157254857771, 0.09901842478780591, -0.03873676649301512, + 0.02663350587182324, -0.09454458080256313, -0.15186298027234707 + ], + [ + 0.05745095742897874, 0.08669830591055916, 0.2041418296896386, + 0.2034476458565638, 0.06821669904018987, -0.08514842316882976 + ], + [ + 0.03627371245577499, -0.03627801713520421, -0.0364994995706332, + -0.122218428879927, -0.03065938942384387, 0.1375405635565927 + ], + [ + 0.092161177048488, -0.10516883828159905, -0.059916265390607126, + -0.0019912465427914137, -0.11194206741877685, 0.07253721983620968 + ], + [ + -0.0944148422611649, -0.04977259779871666, -0.09153060528022425, + -0.14475773122945818, -0.03457811223543515, -0.02571224226199619 + ], + [ + -0.15657914487870742, -0.039810491328641825, 0.1783422404283296, + -0.021634251917308025, -0.007875904134861323, 0.03126623816714223 + ], + [ + -0.045901972459762894, -0.04583846252733019, -0.0982057205606914, + -0.02859182387771483, 0.09763151865531709, 0.12250901025281145 + ], + [ + 0.044220993097052734, 0.06386902901210478, -0.16558496090398156, + 0.16445208573273062, 0.006119971367489013, 0.030537545877025424 + ], + [ + 0.028183362010051248, 0.13726875165390345, 0.14641900624944904, + 0.1497291792926883, 0.1269785492634171, 0.14773113318691605 + ], + [ + -0.12663441700244987, -0.030342654631353348, 0.18515866503264788, + 0.03347153834581339, -0.01281099846385276, 0.18670659575097692 + ], + [ + -0.12329521239216781, 0.17020187358037925, 0.2200894867790301, + 0.06250835393674979, 0.001973894195068135, -0.025648842174704176 + ], + [ + 0.004956457664258992, 0.15515199864824072, 0.1892686644737708, + 0.07672227755850196, -0.019546200575018588, 0.16642546128141236 + ], + [ + 0.08810389246180063, -0.1540386040599772, -0.14547258456727477, + 0.02335387050345385, 0.048568709060321305, -0.10857829860012996 + ], + [ + 0.03528973758099896, -0.046725937548881775, -0.05200024575923924, + -0.11557118804786642, -0.027779747056561714, 0.13099845643977726 + ], + [ + -0.0921125355113955, -0.03729779322042499, -0.027848779622413347, + -0.12668507690001557, -0.0034979182566761725, -0.07014968080320096 + ], + [ + 0.0064558845630907965, -0.05844944196336371, -0.06904204333364518, + -0.16919226857794797, -0.022878276726797493, -0.025848700980925184 + ], + [ + 0.0582292840678444, -0.06055458793333244, -0.08439884616458276, + -0.052749632907288804, 0.11523430407854755, 0.11861756384952996 + ], + [ + 0.0323708168433056, -0.09648876154360432, -0.005693072403908256, + -0.10813389089343896, -0.07759148097890688, -0.2699179751907275 + ], + [ + 0.009090579354919323, 0.1638527038510284, -0.023789363751942762, + -0.1496086674820362, -0.011923634063657904, -0.24300024744728865 + ], + [ + -0.022356474879821838, -0.04788020675972331, -0.005891443875653894, + -0.2132205856353031, 0.012287704845667446, -0.23264108982293283 + ], + [ + -0.06610594284521162, 0.14553464223527124, -0.09432171165559021, + -0.053877544098253974, 0.12370476526892009, -0.2593772635863067 + ], + [ + 0.04384089664595751, 0.063819023025066, -0.16401594398850847, + 0.16357221203476546, 0.005646397293435684, 0.031259598382954154 + ], + [ + -0.02365630848349457, 0.17104742573960682, 0.2549212542656858, + 0.0313659904168347, 0.011364598388714856, -0.02339151394121487 + ] + ], + "velocity_pyro_umap": [ + [-0.4062442119359055, 0.22457176073832094], + [0.18436913115286616, 0.8698614989989909], + [-0.16543961786167763, 0.04325229493123602], + [-0.20312080676756822, 0.3881186497055023], + [0.08552879643407005, -0.10244844210577658], + [-0.03702053705044594, -0.07531758567250256], + [-0.27937381308341436, -0.1579353732882354], + [-0.04191069246449533, -0.04275102836983401], + [-0.167982610904931, -0.0032744653163221896], + [0.10482883478636049, 0.14557080947631656], + [-0.7468469422485879, -1.0442197512722096], + [-0.22607793536799606, 0.14190615789624347], + [-0.15999711516520587, 0.24201667424218534], + [-0.38827844118809196, -0.18942999902145988], + [-0.14219043582202093, -0.1980111232529203], + [-0.09733352645145903, -0.07320859812000874], + [-0.13726135439389828, 0.02856173279136457], + [-0.22437722588756281, -0.0038633172782555074], + [-0.027866398764890467, 0.1258643423172773], + [-0.3070441111357189, -0.017122075695051624], + [-0.13993945242667732, 0.13772830349511664], + [-0.06215359660272836, 0.05898090689297178], + [-0.07515337057255132, 0.2339427694362926], + [-0.625390960313054, 0.06693380876752697], + [-0.12081347672248684, 0.03712308375984843], + [-0.5761482343345792, -0.10898294036635907], + [-0.2628687259728373, -0.19399765764907026], + [1.0394502480288377, 0.827058756821479], + [-0.5033837141692382, 0.2750176693304736], + [-0.4008905041736459, -0.9048842544320296], + [-0.16352344431572882, 0.16680573109120947], + [-0.03156462174499788, 0.12138946733974831], + [-0.06495110649928967, 0.11803210143381757], + [-0.1426621817669798, 0.1963063386154945], + [-0.344594468569823, -0.42911894715803006], + [-0.00976419121131033, -0.04043047393504607], + [-0.014751233910158174, 0.5640915548131809], + [-0.23214662183312404, 0.08960749311088119], + [-0.055924508634780365, -0.2960091298825358], + [-0.12077274696278975, 0.24151845363422486], + [-0.3248221829858918, 0.35105927228639694], + [0.31360486281913713, -0.433916357513826], + [-0.2309224567126163, 0.033553438853048644], + [-0.19337704834313624, 0.09627989499297565], + [-0.08265303490160218, 0.06362443153839331], + [-0.03612014811141067, -0.091148854731037], + [-0.20183210481329808, 0.279573260164438], + [-0.35781005236532176, -0.08890389626839128], + [-0.13845735461895886, 0.0014580714007541814], + [-0.33364788275951773, -0.15468803617841212] + ], + "velocity_umap": [ + [0.03246533773535059, 0.13792963683470005], + [0.11177127930488494, 0.16019806341797127], + [0.1500439505843519, 0.011039083439909366], + [0.18640312611422402, 0.337719722944636], + [0.3502361259479558, 0.3706825958734048], + [0.5224674075721216, 0.12465978113014825], + [0.45981744627386706, 0.11213221389781806], + [0.28751520921005636, 0.3224131477351831], + [0.10514756625570329, -0.05321501825877582], + [0.030351480109053773, 0.2322669926669677], + [0.34551645129468855, 0.3610376123419269], + [0.35274654760925966, 0.08862534179269195], + [-0.09920571829206068, 0.13629257902744205], + [0.5543750016672278, 0.2636973191327594], + [0.2934654777586604, 0.43607766786908003], + [0.2193140341718346, 0.23553089231654556], + [0.6428065688576395, 0.13173893909146206], + [0.14163059771692976, 0.07832769970909968], + [0.15874635962803205, -0.06638328959414976], + [0.30054761959092147, 0.10726927550851818], + [0.2331741905831108, 0.22168666674168283], + [0.16072266838977148, 0.15697538164673305], + [0.4670464552456354, 0.18919365233894406], + [0.3216136220435616, -0.02468892752348566], + [0.4687571742060243, 0.0349723330024735], + [0.47717568562999935, 0.08959661707307597], + [0.11901482832576075, 0.1337922089653038], + [0.4708219117533795, 0.5087959683547404], + [0.04299729903207144, 0.35577765475086526], + [0.28378089471952606, -0.08175344907052595], + [0.20117424821089033, 0.009431229005195833], + [0.0027532531249208725, 0.2618572316658762], + [-0.031810283236013766, 0.30103388940716164], + [0.21448711717375854, 0.046074735195365986], + [0.44200070227352956, 0.3140897408758923], + [0.3145116804574723, -0.028533809604838124], + [0.34371318176084986, 0.2853720565456881], + [0.23552527859323796, -0.018759389607940737], + [0.281746931502195, 0.46415665209431317], + [0.014332796511918168, 0.2878000677373546], + [0.10360548657791996, 0.11563996913621089], + [0.17468824647883788, -0.0918714393647538], + [0.6041946719107331, 0.18533737844520384], + [0.03430030457624374, 0.2885510675955198], + [0.26357477812758523, 0.13665496762528592], + [0.37027749746174765, 0.041275659230450644], + [0.31565945929050093, -0.017636017511691207], + [0.40670158482824426, 0.03493010364245681], + [0.3942053608843815, -0.007554352053190311], + [0.571302754421609, 0.3258489739828169] + ] + }, + "obsp": { + "connectivities": [ + [ + 0, 0.6791362762451172, 0, 0.07812391966581345, 0.02144891396164894, 0, + 0, 0.07558970898389816, 0, 0.04876202344894409, 0.031230973079800606, 0, + 0.1451297104358673, 0.014769917353987694, 0.042344823479652405, + 0.028303254395723343, 0.18474289774894714, 0, 0.17090272903442383, 0, + 0.11471006274223328, 0, 0.49188312888145447, 0, 0, 0, 0, + 0.06949252635240555, 0.1285085678100586, 0.02144000492990017, 0, + 0.24998600780963898, 0.11007087677717209, 0.3471984565258026, + 0.06200822815299034, 0, 0.12008770555257797, 0, 0.059926457703113556, + 0.16113412380218506, 1, 0, 0.013467581942677498, 0.2987509071826935, 0, + 0, 0.9907876253128052, 0, 0, 0.0178059171885252 + ], + [ + 0.6791362762451172, 0, 0, 0.20224571228027344, 0.014493419788777828, + 0.00038501128437928855, 0, 0.11421184241771698, 0, 0.04948580637574196, + 0.01913343369960785, 0, 0.4177623391151428, 0.0005554701783694327, + 0.046890947967767715, 0, 0.15612344443798065, 0, 0.2960857152938843, 0, + 0.13220441341400146, 0, 0.6618884801864624, 0.00015891517978161573, 0, + 0, 0, 0.09387718886137009, 0.11997374892234802, 0, 0, + 0.9671337008476257, 0.16191846132278442, 0.70816969871521, + 0.0738186165690422, 0, 0.20690108835697174, 0, 0.05038930103182793, + 0.653760552406311, 1, 0, 0.0005185022600926459, 0.9995250105857849, 0, + 0, 0.5491859912872314, 0, 0, 0.016774680465459824 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0.0012495320988819003, 0.9853725433349609, + 0.001316212466917932, 0, 0.3140612542629242, 0.00027922153822146356, 0, + 0, 0.3040197491645813, 0.00181607436388731, 0.3009898364543915, + 0.0016000799369066954, 0.19732710719108582, 0, 0.2878112494945526, + 0.0036734407767653465, 0.5876498222351074, 0.027554288506507874, + 0.0353492833673954, 0.43966227769851685, 0, 0, 1, 0.8518136739730835, 0, + 0.008879635483026505, 0, 0.0011199441505596042, 0.8719430565834045, + 0.0010956863407045603, 0.9610950350761414, 0.0010483257938176394, 0, 0, + 1, 0.010755922645330429, 0.0009603404905647039, 0.1849265694618225, + 0.09242910146713257, 0.010698540136218071, 0.05565764009952545, + 0.030558302998542786, 0 + ], + [ + 0.07812391966581345, 0.20224571228027344, 0, 0, 0.07214521616697311, + 0.01961176097393036, 0.00935482420027256, 0.15387624502182007, 0, + 0.23947127163410187, 0.11093098670244217, 0, 0.06126473471522331, + 0.03352026641368866, 0.09649335592985153, 0, 0.30106890201568604, 0, + 0.23571516573429108, 0, 0.17147499322891235, 0, 0.10709993541240692, 0, + 0, 0, 0, 0.329604834318161, 0.5910395383834839, 0, 0, + 0.18247058987617493, 1, 0.1291138231754303, 0.09661967307329178, 0, + 0.18152134120464325, 0, 0.07522987574338913, 0.3085639774799347, + 0.15369468927383423, 0, 0.019695322960615158, 0.3530711531639099, 0, 0, + 0.06933934986591339, 0, 0, 0.03306076303124428 + ], + [ + 0.02144891396164894, 0.014493419788777828, 0, 0.07214521616697311, 0, + 0.21335484087467194, 0.13383442163467407, 0.5076948404312134, 0, + 0.10981880873441696, 0.9717910885810852, 0, 0.005982398986816406, + 0.3896139860153198, 1, 0, 0.03100520744919777, 0, 0.024939464405179024, + 0, 0.21851761639118195, 0, 0.056161802262067795, 0, + 0.045691486448049545, 0.03550431877374649, 0, 0.13246816396713257, + 0.026214953511953354, 0, 0, 0.048206474632024765, 0.026648024097085, + 0.04446536675095558, 0.6940591931343079, 0, 0.2848610579967499, 0, + 0.8338649272918701, 0.06215371564030647, 0.032233841717243195, 0, + 0.11985591799020767, 0.02467336133122444, 0, 0, 0.03512968122959137, + 0.03350405395030975, 0.019970165565609932, 0.8046245574951172 + ], + [ + 0, 0.00038501128437928855, 0, 0.01961176097393036, 0.21335484087467194, + 0, 0.3663880527019501, 0.06737271696329117, 0, 0.021497394889593124, + 0.20011396706104279, 0, 0.0006810112972743809, 0.9999999403953552, + 0.08654339611530304, 0, 0.02617572620511055, 0, 0.01690363697707653, 0, + 0.048670053482055664, 0, 0.026540391147136688, 0.021124185994267464, + 0.49213680624961853, 0.6492367386817932, 0, 0.061767444014549255, 0, 0, + 0, 0.01903565414249897, 0.01027708686888218, 0.02312624081969261, + 0.0948575884103775, 0, 0.05793692544102669, 0, 0.07561974227428436, + 0.018968036398291588, 0.027632471174001694, 0, 1, 0.014172581024467945, + 0, 0.29717016220092773, 0.023615499958395958, 0.31343939900398254, + 0.4069979190826416, 0.918527364730835 + ], + [ + 0, 0, 0, 0.00935482420027256, 0.13383442163467407, 0.3663880527019501, + 0, 0.05663785710930824, 0, 0, 0.08207796514034271, 0.02477707713842392, + 0, 0.7948756217956543, 0.06668343394994736, 0.07517322152853012, + 0.023108990862965584, 0.045126039534807205, 0.028466930612921715, + 0.38268280029296875, 0.033162735402584076, 0.0768447071313858, + 0.029556700959801674, 0.03323904424905777, 0.3202650249004364, + 0.31088924407958984, 0.040301401168107986, 0.02527793124318123, 0, 0, 0, + 0, 0, 0, 0.07881664484739304, 0, 0.03139596804976463, 0, + 0.06387923657894135, 0, 0.002841273322701454, 0, 1, 0, + 0.17027275264263153, 0.21474185585975647, 0, 0.30868151783943176, + 0.31539255380630493, 0.43790411949157715 + ], + [ + 0.07558970898389816, 0.11421184241771698, 0.0012495320988819003, + 0.15387624502182007, 0.5076948404312134, 0.06737271696329117, + 0.05663785710930824, 0, 0.005810171365737915, 1, 0.710904598236084, + 0.00016170847811736166, 0.0691816657781601, 0.14541222155094147, + 0.6276617050170898, 0, 0.11014789342880249, 0.0011255992576479912, + 0.21028341352939606, 0, 0.2674534320831299, 0.015896840021014214, + 0.4704303443431854, 0.0010361322201788425, 0.028423750773072243, + 0.02370448037981987, 0, 0.24077385663986206, 0.13875338435173035, 0, 0, + 0.19080080091953278, 0.09754791855812073, 0.19362911581993103, 1, + 0.002850563498213887, 0.6659868359565735, 0.006219236180186272, + 0.9808168411254883, 0.45117300748825073, 0.12869766354560852, + 0.010950596071779728, 0.05854101479053497, 0.15462131798267365, 0, 0, + 0.17412947118282318, 0.03252742066979408, 0.01907695271074772, + 0.2103152573108673 + ], + [ + 0, 0, 0.9853725433349609, 0, 0, 0, 0, 0.005810171365737915, 0, + 0.005386829376220703, 0, 0.3428657650947571, 0, 0.005205574911087751, 0, + 0.27913638949394226, 0.008378268219530582, 0.2651313841342926, + 0.0078439861536026, 0.18069520592689514, 0, 0.30754992365837097, + 0.00884583592414856, 0.1933213323354721, 0, 0.0307557862251997, + 0.3581460416316986, 0, 0, 0.9959651231765747, 0.8333876132965088, 0, 0, + 0, 0.005257065407931805, 0.7871606945991516, 0.005785640794783831, 1, 0, + 0, 0, 0.8299233317375183, 0.006809915415942669, 0, 0.17683106660842896, + 0.07009349018335342, 0.006815925240516663, 0.03933485224843025, + 0.026993343606591225, 0.00517085799947381 + ], + [ + 0.04876202344894409, 0.04948580637574196, 0.001316212466917932, + 0.23947127163410187, 0.10981880873441696, 0.021497394889593124, 0, 1, + 0.005386829376220703, 0, 0.264383465051651, 0, 0.1601283997297287, + 0.0729474425315857, 0.5701066851615906, 0, 0.36070185899734497, 0, + 0.3530363440513611, 0, 0.285409539937973, 0, 0.09265436232089996, 0, + 0.022966796532273293, 0, 0, 0.11974124610424042, 0.35630378127098083, 0, + 0, 0.16879796981811523, 0.16824054718017578, 0.2513410747051239, + 0.19239114224910736, 0, 0.22632060945034027, 0, 0.5880057215690613, + 0.5834771394729614, 0.07932436466217041, 0.009031085297465324, + 0.015039695426821709, 0.29868465662002563, 0, 0, 0.10646643489599228, 0, + 0, 0.06567075103521347 + ], + [ + 0.031230973079800606, 0.01913343369960785, 0, 0.11093098670244217, + 0.9717910885810852, 0.20011396706104279, 0.08207796514034271, + 0.710904598236084, 0, 0.264383465051651, 0, 0, 0.008584187366068363, + 0.4952055513858795, 0.5039818286895752, 0, 0.046711720526218414, 0, + 0.04297485202550888, 0, 0.21851181983947754, 0, 0.1182931587100029, 0, + 0.05120934545993805, 0.04451194778084755, 0, 0.15249887108802795, + 0.04413973167538643, 0, 0, 0.04663300886750221, 0.04692128673195839, + 0.04739787057042122, 1, 0, 0.2871333658695221, 0, 0.7023345232009888, + 0.06569325923919678, 0.06118643656373024, 0, 0.13434116542339325, + 0.039479173719882965, 0, 0.03909922018647194, 0.06365905702114105, + 0.03834399953484535, 0.02749062515795231, 0.8421590328216553 + ], + [ + 0, 0, 0.3140612542629242, 0, 0, 0, 0.02477707713842392, + 0.00016170847811736166, 0.3428657650947571, 0, 0, 0, 0, + 0.00013491987192537636, 0, 0.9299803972244263, 0.00015910078946035355, + 0.5218386650085449, 0.0002120040444424376, 0.3880598545074463, + 0.00011581653234316036, 1, 0.0002656305441632867, 0.029749536886811256, + 0, 0.00018270715372636914, 0.47146469354629517, 0, 0, + 0.4037102460861206, 0.5337095856666565, 0, 0, 0, 0.00013214167847763747, + 0.22584299743175507, 0, 0.25113651156425476, 0, 0.00011024037667084485, + 0, 0.19166365265846252, 0.00018443030421622097, 0, 0.7760928869247437, + 0.03829348087310791, 0.00015001643623691052, 0.0005452607292681932, + 0.0002785029646474868, 0 + ], + [ + 0.1451297104358673, 0.4177623391151428, 0.00027922153822146356, + 0.06126473471522331, 0.005982398986816406, 0.0006810112972743809, 0, + 0.0691816657781601, 0, 0.1601283997297287, 0.008584187366068363, 0, 0, + 0.0014508067397400737, 0.03731570765376091, 0, 0.3016144633293152, 0, 1, + 0, 0.01996954157948494, 0, 0.27664726972579956, 0, 0, 0, 0, + 0.02061343938112259, 0.07907620072364807, 0, 0, 0.5680051445960999, + 0.15190793573856354, 0.19222840666770935, 0.03929756581783295, 0, + 0.05985153466463089, 0, 0.029357977211475372, 0.2124132215976715, + 0.7812122106552124, 0, 0.0005644444026984274, 0.2016579508781433, 0, 0, + 0.5393239259719849, 0, 0, 0.0029436794575303793 + ], + [ + 0.014769917353987694, 0.0005554701783694327, 0, 0.03352026641368866, + 0.3896139860153198, 0.9999999403953552, 0.7948756217956543, + 0.14541222155094147, 0.005205574911087751, 0.0729474425315857, + 0.4952055513858795, 0.00013491987192537636, 0.0014508067397400737, 0, + 0.2008797973394394, 0, 0.053275201469659805, 0, 0.043169841170310974, + 0.03286438435316086, 0.07474060356616974, 0, 0.05138448625802994, + 0.027908267453312874, 0.43975451588630676, 0.3510791063308716, 0, + 0.10210555791854858, 0.01559413317590952, 0, 0.016908522695302963, + 0.032999202609062195, 0.018437588587403297, 0.03277759999036789, + 0.1610356867313385, 0.002806064672768116, 0.08239368349313736, 0, + 0.16387921571731567, 0.038588739931583405, 0.03812165558338165, 0, + 0.9884122610092163, 0.02670399099588394, 0.004105167929083109, + 0.18453633785247803, 0.038106419146060944, 0.2179291546344757, + 0.28927695751190186, 1 + ], + [ + 0.042344823479652405, 0.046890947967767715, 0, 0.09649335592985153, 1, + 0.08654339611530304, 0.06668343394994736, 0.6276617050170898, 0, + 0.5701066851615906, 0.5039818286895752, 0, 0.03731570765376091, + 0.2008797973394394, 0, 0, 0.06705866754055023, 0, 0.07598843425512314, + 0, 0.2024589627981186, 0, 0.16257256269454956, 0, 0.033559009432792664, + 0, 0, 0.12520582973957062, 0.059772755950689316, 0, 0, + 0.11264088749885559, 0.042864229530096054, 0.08992739766836166, + 0.6649923324584961, 0, 0.23414351046085358, 0, 0.9999999403953552, + 0.22545357048511505, 0.0664198026061058, 0.008879763074219227, + 0.08891724795103073, 0.05400571972131729, 0, 0, 0.09392549097537994, 0, + 0.015629634261131287, 0.3137980103492737 + ], + [ + 0.028303254395723343, 0, 0.3040197491645813, 0, 0, 0, + 0.07517322152853012, 0, 0.27913638949394226, 0, 0, 0.9299803972244263, + 0, 0, 0, 0, 0.018438370898365974, 0.9139187335968018, + 0.025505512952804565, 0.4413132071495056, 0.021387150511145592, 1, + 0.02340281940996647, 0.08927132934331894, 0, 0.037914689630270004, 1, 0, + 0, 0.38106584548950195, 0.4186657965183258, 0, 0, 0.018773332238197327, + 0.01670587621629238, 0.20645909011363983, 0.018804514780640602, + 0.23161418735980988, 0, 0, 0, 0.11005927622318268, 0.018117565661668777, + 0, 0.8517173528671265, 0.06725174188613892, 0.01847703568637371, + 0.054258473217487335, 0.016234155744314194, 0 + ], + [ + 0.18474289774894714, 0.15612344443798065, 0.00181607436388731, + 0.30106890201568604, 0.03100520744919777, 0.02617572620511055, + 0.023108990862965584, 0.11014789342880249, 0.008378268219530582, + 0.36070185899734497, 0.046711720526218414, 0.00015910078946035355, + 0.3016144633293152, 0.053275201469659805, 0.06705866754055023, + 0.018438370898365974, 0, 0.0019289698684588075, 0.689254879951477, + 0.0274669099599123, 0.11323849111795425, 0.019520431756973267, + 0.09955354034900665, 0.0013507120311260223, 0.02964717335999012, + 0.023272229358553886, 0.024378130212426186, 1, 1, 0.01460428349673748, + 0.02827923744916916, 0.3035382032394409, 0.746188759803772, + 0.2082826793193817, 0.06425170600414276, 0.003695086110383272, + 0.14896807074546814, 0.009321624413132668, 0.055329885333776474, + 0.27120840549468994, 0.1679942011833191, 0.012055137194693089, + 0.020168881863355637, 0.333937406539917, 0.00491121644154191, + 0.03439102694392204, 0.1622658222913742, 0.03126886859536171, + 0.015633108094334602, 0.04277985915541649 + ], + [ + 0, 0, 0.3009898364543915, 0, 0, 0, 0.045126039534807205, + 0.0011255992576479912, 0.2651313841342926, 0, 0, 0.5218386650085449, 0, + 0, 0, 0.9139187335968018, 0.0019289698684588075, 0, + 0.002184642245993018, 0.6445846557617188, 0.0010914010927081108, 1, + 0.0017856115009635687, 0.13612985610961914, 0, 0.02605489455163479, + 0.7805554866790771, 0, 0, 0.2890230715274811, 0.29510724544525146, 0, 0, + 0, 0.0011869218433275819, 0.2229144275188446, 0.0010979834478348494, + 0.2136201113462448, 0, 0, 0, 0.08729308098554611, 0.001477359444834292, + 0, 0.997360110282898, 0.056355852633714676, 0.001442269654944539, + 0.04343654587864876, 0.01886031962931156, 0.001059041591361165 + ], + [ + 0.17090272903442383, 0.2960857152938843, 0.0016000799369066954, + 0.23571516573429108, 0.024939464405179024, 0.01690363697707653, + 0.028466930612921715, 0.21028341352939606, 0.0078439861536026, + 0.3530363440513611, 0.04297485202550888, 0.0002120040444424376, 1, + 0.043169841170310974, 0.07598843425512314, 0.025505512952804565, + 0.689254879951477, 0.002184642245993018, 0, 0.034767765551805496, + 0.20886442065238953, 0.0236651673913002, 0.37703150510787964, + 0.0017967240419238806, 0.02775617502629757, 0, 0.03021959587931633, + 0.24805942177772522, 0.40737175941467285, 0.015703536570072174, + 0.02506457455456257, 0.5809968113899231, 0.2474481165409088, + 0.28685706853866577, 0.10135804116725922, 0.003826739965006709, + 0.2700715661048889, 0.009267306886613369, 0.05210476368665695, + 0.758564293384552, 0.21779228746891022, 0.00908705499023199, + 0.017130514606833458, 1, 0.0067732688039541245, 0.03078370913863182, + 0.2072259783744812, 0.03155025467276573, 0.01571946032345295, + 0.041285112500190735 + ], + [ + 0, 0, 0.19732710719108582, 0, 0, 0, 0.38268280029296875, 0, + 0.18069520592689514, 0, 0, 0.3880598545074463, 0, 0.03286438435316086, + 0, 0.4413132071495056, 0.0274669099599123, 0.6445846557617188, + 0.034767765551805496, 0, 0.02613103948533535, 0.4445185363292694, + 0.026753168553113937, 0.9762439131736755, 0.08398157358169556, + 0.12307630479335785, 0.2840687334537506, 0, 0, 0.2177133858203888, + 0.2214316576719284, 0, 0, 0, 0.02485949546098709, 0.2842165231704712, 0, + 0.1998729556798935, 0, 0, 0, 0.05713701620697975, 0.046372056007385254, + 0, 1, 0.24683813750743866, 0.02508893795311451, 0.1950589418411255, + 0.12957243621349335, 0.029643645510077477 + ], + [ + 0.11471006274223328, 0.13220441341400146, 0, 0.17147499322891235, + 0.21851761639118195, 0.048670053482055664, 0.033162735402584076, + 0.2674534320831299, 0, 0.285409539937973, 0.21851181983947754, + 0.00011581653234316036, 0.01996954157948494, 0.07474060356616974, + 0.2024589627981186, 0.021387150511145592, 0.11323849111795425, + 0.0010914010927081108, 0.20886442065238953, 0.02613103948533535, 0, + 0.01751295104622841, 0.2021736204624176, 0.0008991917711682618, + 0.024021288380026817, 0.023426778614521027, 0.02519667148590088, + 0.2059948444366455, 0.10172009468078613, 0.010686724446713924, + 0.018231170251965523, 0.38907837867736816, 0.10105101764202118, + 0.8818533420562744, 0.32186567783355713, 0.0024063573218882084, + 0.9999999403953552, 0.006374579854309559, 0.45741721987724304, + 0.5757727026939392, 0.17965571582317352, 0, 0.027112610638141632, + 0.8765571117401123, 0.004984310362488031, 0, 0.1328583061695099, 0, 0, + 0.14334078133106232 + ], + [ + 0, 0, 0.2878112494945526, 0, 0, 0, 0.0768447071313858, + 0.015896840021014214, 0.30754992365837097, 0, 0, 1, 0, 0, 0, 1, + 0.019520431756973267, 1, 0.0236651673913002, 0.4445185363292694, + 0.01751295104622841, 0, 0.020781952887773514, 0.07199244946241379, 0, + 0.017558949068188667, 0.9043859243392944, 0, 0, 0.37109941244125366, + 0.40954720973968506, 0, 0, 0.017464742064476013, 0.01631886139512062, + 0.20816075801849365, 0.017373474314808846, 0.2437005341053009, 0, 0, 0, + 0.13927504420280457, 0.018875129520893097, 0, 0.8891154527664185, + 0.05890149995684624, 0.0185126680880785, 0.022024644538760185, + 0.01818682812154293, 0 + ], + [ + 0.49188312888145447, 0.6618884801864624, 0.0036734407767653465, + 0.10709993541240692, 0.056161802262067795, 0.026540391147136688, + 0.029556700959801674, 0.4704303443431854, 0.00884583592414856, + 0.09265436232089996, 0.1182931587100029, 0.0002656305441632867, + 0.27664726972579956, 0.05138448625802994, 0.16257256269454956, + 0.02340281940996647, 0.09955354034900665, 0.0017856115009635687, + 0.37703150510787964, 0.026753168553113937, 0.2021736204624176, + 0.020781952887773514, 0, 0.001218133606016636, 0.025540057569742203, 0, + 0.028196094557642937, 0.11524220556020737, 0.13620159029960632, + 0.013832194730639458, 0.020637858659029007, 0.41739580035209656, + 0.10100237280130386, 0.32429638504981995, 0.5244919657707214, + 0.003490692237392068, 0.46429532766342163, 0.008445119485259056, + 0.30392226576805115, 0.4055541455745697, 0.7333608865737915, + 0.013239700347185135, 0.029902219772338867, 0.26844578981399536, + 0.006291622761636972, 0, 1, 0, 0.014628886245191097, 0.0636901929974556 + ], + [ + 0, 0.00015891517978161573, 0.5876498222351074, 0, 0, + 0.021124185994267464, 0.03323904424905777, 0.0010361322201788425, + 0.1933213323354721, 0, 0, 0.029749536886811256, 0, 0.027908267453312874, + 0, 0.08927132934331894, 0.0013507120311260223, 0.13612985610961914, + 0.0017967240419238806, 0.9762439131736755, 0.0008991917711682618, + 0.07199244946241379, 0.001218133606016636, 0, 0.09315666556358337, + 0.17259857058525085, 0.1068120226264, 0, 0, 0.26572102308273315, + 0.2116999477148056, 0, 0, 0, 0, 1, 0, 0.2977372109889984, 0, 0, 0, + 0.08371987193822861, 0.03625096008181572, 0, 0.1583634316921234, + 0.71632981300354, 0, 0.5602318048477173, 0.3546944260597229, + 0.0018989744130522013 + ], + [ + 0, 0, 0.027554288506507874, 0, 0.045691486448049545, + 0.49213680624961853, 0.3202650249004364, 0.028423750773072243, 0, + 0.022966796532273293, 0.05120934545993805, 0, 0, 0.43975451588630676, + 0.033559009432792664, 0, 0.02964717335999012, 0, 0.02775617502629757, + 0.08398157358169556, 0.024021288380026817, 0, 0.025540057569742203, + 0.09315666556358337, 0, 0.7839905023574829, 0, 0.02622799761593342, 0, + 0.023461680859327316, 0.025054166093468666, 0, 0, 0, + 0.034880418330430984, 0.030071480199694633, 0.029418623074889183, + 0.022567499428987503, 0.03375793620944023, 0, 0, 0, 0.728911280632019, + 0, 0, 0.7185539603233337, 0, 0.7359673976898193, 1, 0.1662016659975052 + ], + [ + 0, 0, 0.0353492833673954, 0, 0.03550431877374649, 0.6492367386817932, + 0.31088924407958984, 0.02370448037981987, 0.0307557862251997, 0, + 0.04451194778084755, 0.00018270715372636914, 0, 0.3510791063308716, 0, + 0.037914689630270004, 0.023272229358553886, 0.02605489455163479, 0, + 0.12307630479335785, 0.023426778614521027, 0.017558949068188667, 0, + 0.17259857058525085, 0.7839905023574829, 0, 0.02436649054288864, + 0.026267029345035553, 0, 0.03577287122607231, 0.05076507106423378, 0, 0, + 0, 0.029426101595163345, 0.03797753527760506, 0.02571367658674717, + 0.036822810769081116, 0.02490823343396187, 0, 0, 0, 0.5054754018783569, + 0, 0.027640050277113914, 0.9590020775794983, 0, 0.9731702208518982, 1, + 0.20542165637016296 + ], + [ + 0, 0, 0.43966227769851685, 0, 0, 0, 0.040301401168107986, 0, + 0.3581460416316986, 0, 0, 0.47146469354629517, 0, 0, 0, 1, + 0.024378130212426186, 0.7805554866790771, 0.03021959587931633, + 0.2840687334537506, 0.02519667148590088, 0.9043859243392944, + 0.028196094557642937, 0.1068120226264, 0, 0.02436649054288864, 0, 0, 0, + 0.5015742182731628, 0.542351245880127, 0, 0, 0.02271716296672821, + 0.02111842669546604, 0.20651717483997345, 0.0232774019241333, + 0.27249351143836975, 0, 0, 0, 0.17491187155246735, 0.02541843056678772, + 0, 0.4343656301498413, 0.0756436437368393, 0.024455303326249123, + 0.060390520840883255, 0.023947538807988167, 0.022560633718967438 + ], + [ + 0.06949252635240555, 0.09387718886137009, 0, 0.329604834318161, + 0.13246816396713257, 0.061767444014549255, 0.02527793124318123, + 0.24077385663986206, 0, 0.11974124610424042, 0.15249887108802795, 0, + 0.02061343938112259, 0.10210555791854858, 0.12520582973957062, 0, 1, 0, + 0.24805942177772522, 0, 0.2059948444366455, 0, 0.11524220556020737, 0, + 0.02622799761593342, 0.026267029345035553, 0, 0, 0.7483385801315308, 0, + 0, 0.25795459747314453, 0.41097885370254517, 0.13520453870296478, + 0.16752244532108307, 0, 0.26733651757240295, 0, 0.12256187200546265, + 0.2243180274963379, 0.07321711629629135, 0, 0.05290177837014198, + 0.19839246571063995, 0, 0.03080074116587639, 0.07025483250617981, + 0.05100482329726219, 0, 0.10961153358221054 + ], + [ + 0.1285085678100586, 0.11997374892234802, 0, 0.5910395383834839, + 0.026214953511953354, 0, 0, 0.13875338435173035, 0, 0.35630378127098083, + 0.04413973167538643, 0, 0.07907620072364807, 0.01559413317590952, + 0.059772755950689316, 0, 1, 0, 0.40737175941467285, 0, + 0.10172009468078613, 0, 0.13620159029960632, 0, 0, 0, 0, + 0.7483385801315308, 0, 0.018829360604286194, 0.00885338056832552, + 0.1520003229379654, 1, 0.16417144238948822, 0.06047642603516579, 0, + 0.10244213044643402, 0, 0.06692980974912643, 0.37826240062713623, + 0.11784204095602036, 0, 0.010443637147545815, 0.2506825923919678, 0, 0, + 0.1350279450416565, 0, 0, 0.013538672588765621 + ], + [ + 0.02144000492990017, 0, 1, 0, 0, 0, 0, 0, 0.9959651231765747, 0, 0, + 0.4037102460861206, 0, 0, 0, 0.38106584548950195, 0.01460428349673748, + 0.2890230715274811, 0.015703536570072174, 0.2177133858203888, + 0.010686724446713924, 0.37109941244125366, 0.013832194730639458, + 0.26572102308273315, 0.023461680859327316, 0.03577287122607231, + 0.5015742182731628, 0, 0.018829360604286194, 0, 1, 0, 0, + 0.010312515310943127, 0, 0.9455955028533936, 0.01058164332062006, + 0.9515382647514343, 0, 0, 0, 0.696255087852478, 0.010204192250967026, + 0.010717598721385002, 0.23379100859165192, 0.07896720618009567, + 0.011151236481964588, 0.05249810591340065, 0.03241368755698204, 0 + ], + [ + 0, 0, 0.8518136739730835, 0, 0, 0, 0, 0, 0.8333876132965088, 0, 0, + 0.5337095856666565, 0, 0.016908522695302963, 0, 0.4186657965183258, + 0.02827923744916916, 0.29510724544525146, 0.02506457455456257, + 0.2214316576719284, 0.018231170251965523, 0.40954720973968506, + 0.020637858659029007, 0.2116999477148056, 0.025054166093468666, + 0.05076507106423378, 0.542351245880127, 0, 0.00885338056832552, 1, 0, + 5.437838126454153e-7, 0, 0.0006110609392635524, 0.01743326522409916, + 0.7371322512626648, 0.019555898383259773, 0.9500006437301636, 0, + 0.000552801473531872, 0, 0.5473710298538208, 0.017859777435660362, + 0.017461437731981277, 0.22718237340450287, 0.09036210179328918, + 0.016952989622950554, 0.06744509190320969, 0.04253024235367775, + 0.017950063571333885 + ], + [ + 0.24998600780963898, 0.9671337008476257, 0, 0.18247058987617493, + 0.048206474632024765, 0.01903565414249897, 0, 0.19080080091953278, 0, + 0.16879796981811523, 0.04663300886750221, 0, 0.5680051445960999, + 0.032999202609062195, 0.11264088749885559, 0, 0.3035382032394409, 0, + 0.5809968113899231, 0, 0.38907837867736816, 0, 0.41739580035209656, 0, + 0, 0, 0, 0.25795459747314453, 0.1520003229379654, 0, + 5.437838126454153e-7, 0, 0.17512710392475128, 0.9234318733215332, + 0.1461091935634613, 0, 1, 0.006144458893686533, 0.11940135061740875, + 0.8420873880386353, 0.44186460971832275, 0, 0.009629735723137856, 1, 0, + 0, 0.2855151295661926, 0, 0, 0.03490826115012169 + ], + [ + 0.11007087677717209, 0.16191846132278442, 0.008879635483026505, 1, + 0.026648024097085, 0.01027708686888218, 0, 0.09754791855812073, 0, + 0.16824054718017578, 0.04692128673195839, 0, 0.15190793573856354, + 0.018437588587403297, 0.042864229530096054, 0, 0.746188759803772, 0, + 0.2474481165409088, 0, 0.10105101764202118, 0, 0.10100237280130386, 0, + 0, 0, 0, 0.41097885370254517, 1, 0, 0, 0.17512710392475128, 0, + 0.13275285065174103, 0.051938746124506, 0, 0.12322665750980377, 0, + 0.04673989117145538, 0.24974161386489868, 0.16144150495529175, 0, + 0.011249779723584652, 0.2994346022605896, 0, 0, 0.08733031153678894, 0, + 0, 0.0174560584127903 + ], + [ + 0.3471984565258026, 0.70816969871521, 0, 0.1291138231754303, + 0.04446536675095558, 0.02312624081969261, 0, 0.19362911581993103, 0, + 0.2513410747051239, 0.04739787057042122, 0, 0.19222840666770935, + 0.03277759999036789, 0.08992739766836166, 0.018773332238197327, + 0.2082826793193817, 0, 0.28685706853866577, 0, 0.8818533420562744, + 0.017464742064476013, 0.32429638504981995, 0, 0, 0, 0.02271716296672821, + 0.13520453870296478, 0.16417144238948822, 0.010312515310943127, + 0.0006110609392635524, 0.9234318733215332, 0.13275285065174103, 0, + 0.12200508266687393, 0, 0.694503128528595, 0.006675111595541239, + 0.19437052309513092, 0.861484944820404, 0.5254873037338257, 0, + 0.01327962800860405, 1, 0, 0, 0.47101539373397827, 0, 0, + 0.039919331669807434 + ], + [ + 0.06200822815299034, 0.0738186165690422, 0.0011199441505596042, + 0.09661967307329178, 0.6940591931343079, 0.0948575884103775, + 0.07881664484739304, 1, 0.005257065407931805, 0.19239114224910736, 1, + 0.00013214167847763747, 0.03929756581783295, 0.1610356867313385, + 0.6649923324584961, 0.01670587621629238, 0.06425170600414276, + 0.0011869218433275819, 0.10135804116725922, 0.02485949546098709, + 0.32186567783355713, 0.01631886139512062, 0.5244919657707214, 0, + 0.034880418330430984, 0.029426101595163345, 0.02111842669546604, + 0.16752244532108307, 0.06047642603516579, 0, 0.01743326522409916, + 0.1461091935634613, 0.051938746124506, 0.12200508266687393, 0, + 0.0028304823208600283, 0.9774037599563599, 0, 1, 0.19908897578716278, + 0.11989229172468185, 0.009808162227272987, 0.0747297927737236, + 0.08595255762338638, 0.004818427842110395, 0.03304995968937874, + 0.17339909076690674, 0.03771812096238136, 0.021337131038308144, + 0.3502250015735626 + ], + [ + 0, 0, 0.8719430565834045, 0, 0, 0, 0, 0.002850563498213887, + 0.7871606945991516, 0, 0, 0.22584299743175507, 0, 0.002806064672768116, + 0, 0.20645909011363983, 0.003695086110383272, 0.2229144275188446, + 0.003826739965006709, 0.2842165231704712, 0.0024063573218882084, + 0.20816075801849365, 0.003490692237392068, 1, 0.030071480199694633, + 0.03797753527760506, 0.20651717483997345, 0, 0, 0.9455955028533936, + 0.7371322512626648, 0, 0, 0, 0.0028304823208600283, 0, + 0.0029489058069884777, 1, 0, 0, 0, 0.5513997673988342, + 0.004505640361458063, 0.0025368917267769575, 0.19224625825881958, + 0.12450051307678223, 0, 0.0748533084988594, 0.036075882613658905, + 0.002600905252620578 + ], + [ + 0.12008770555257797, 0.20690108835697174, 0.0010956863407045603, + 0.18152134120464325, 0.2848610579967499, 0.05793692544102669, + 0.03139596804976463, 0.6659868359565735, 0.005785640794783831, + 0.22632060945034027, 0.2871333658695221, 0, 0.05985153466463089, + 0.08239368349313736, 0.23414351046085358, 0.018804514780640602, + 0.14896807074546814, 0.0010979834478348494, 0.2700715661048889, 0, + 0.9999999403953552, 0.017373474314808846, 0.46429532766342163, 0, + 0.029418623074889183, 0.02571367658674717, 0.0232774019241333, + 0.26733651757240295, 0.10244213044643402, 0.01058164332062006, + 0.019555898383259773, 1, 0.12322665750980377, 0.694503128528595, + 0.9774037599563599, 0.0029489058069884777, 0, 0.007534417789429426, + 0.5693532824516296, 0.48314622044563293, 0.1961330622434616, + 0.009168392978608608, 0.035683102905750275, 0.7394900321960449, + 0.004012812860310078, 0.03156355395913124, 0.1514163613319397, + 0.033496323972940445, 0.015973683446645737, 0.1338818371295929 + ], + [ + 0, 0, 0.9610950350761414, 0, 0, 0, 0, 0.006219236180186272, 1, 0, 0, + 0.25113651156425476, 0, 0, 0, 0.23161418735980988, 0.009321624413132668, + 0.2136201113462448, 0.009267306886613369, 0.1998729556798935, + 0.006374579854309559, 0.2437005341053009, 0.008445119485259056, + 0.2977372109889984, 0.022567499428987503, 0.036822810769081116, + 0.27249351143836975, 0, 0, 0.9515382647514343, 0.9500006437301636, + 0.006144458893686533, 0, 0.006675111595541239, 0, 1, + 0.007534417789429426, 0, 0, 0, 0, 0.6201053857803345, + 0.005915685091167688, 0.00659530283883214, 0.1543998271226883, + 0.08681514859199524, 0.007106306962668896, 0.050784822553396225, + 0.029883606359362602, 0 + ], + [ + 0.059926457703113556, 0.05038930103182793, 0.0010483257938176394, + 0.07522987574338913, 0.8338649272918701, 0.07561974227428436, + 0.06387923657894135, 0.9808168411254883, 0, 0.5880057215690613, + 0.7023345232009888, 0, 0.029357977211475372, 0.16387921571731567, + 0.9999999403953552, 0, 0.055329885333776474, 0, 0.05210476368665695, 0, + 0.45741721987724304, 0, 0.30392226576805115, 0, 0.03375793620944023, + 0.02490823343396187, 0, 0.12256187200546265, 0.06692980974912643, 0, 0, + 0.11940135061740875, 0.04673989117145538, 0.19437052309513092, 1, 0, + 0.5693532824516296, 0, 0, 0.21925468742847443, 0.08252226561307907, + 0.008786330930888653, 0.06942039728164673, 0.06567930430173874, 0, 0, + 0.1447986662387848, 0, 0.018144426867365837, 0.27412593364715576 + ], + [ + 0.16113412380218506, 0.653760552406311, 0, 0.3085639774799347, + 0.06215371564030647, 0.018968036398291588, 0, 0.45117300748825073, 0, + 0.5834771394729614, 0.06569325923919678, 0.00011024037667084485, + 0.2124132215976715, 0.038588739931583405, 0.22545357048511505, 0, + 0.27120840549468994, 0, 0.758564293384552, 0, 0.5757727026939392, 0, + 0.4055541455745697, 0, 0, 0, 0, 0.2243180274963379, 0.37826240062713623, + 0, 0.000552801473531872, 0.8420873880386353, 0.24974161386489868, + 0.861484944820404, 0.19908897578716278, 0, 0.48314622044563293, 0, + 0.21925468742847443, 0, 0.24001871049404144, 0, 0.016243932768702507, 1, + 0, 0, 0.21028023958206177, 0, 0, 0.03497658297419548 + ], + [ + 1, 1, 0, 0.15369468927383423, 0.032233841717243195, + 0.027632471174001694, 0.002841273322701454, 0.12869766354560852, 0, + 0.07932436466217041, 0.06118643656373024, 0, 0.7812122106552124, + 0.03812165558338165, 0.0664198026061058, 0, 0.1679942011833191, 0, + 0.21779228746891022, 0, 0.17965571582317352, 0, 0.7333608865737915, 0, + 0, 0, 0, 0.07321711629629135, 0.11784204095602036, 0, 0, + 0.44186460971832275, 0.16144150495529175, 0.5254873037338257, + 0.11989229172468185, 0, 0.1961330622434616, 0, 0.08252226561307907, + 0.24001871049404144, 0, 0, 0.018580958247184753, 0.4481886327266693, 0, + 0, 1, 0, 0, 0.041517872363328934 + ], + [ + 0, 0, 1, 0, 0, 0, 0, 0.010950596071779728, 0.8299233317375183, + 0.009031085297465324, 0, 0.19166365265846252, 0, 0, + 0.008879763074219227, 0.11005927622318268, 0.012055137194693089, + 0.08729308098554611, 0.00908705499023199, 0.05713701620697975, 0, + 0.13927504420280457, 0.013239700347185135, 0.08371987193822861, 0, 0, + 0.17491187155246735, 0, 0, 0.696255087852478, 0.5473710298538208, 0, 0, + 0, 0.009808162227272987, 0.5513997673988342, 0.009168392978608608, + 0.6201053857803345, 0.008786330930888653, 0, 0, 0, 0.009953700937330723, + 0.008366327732801437, 0.08274251967668533, 0.022566260769963264, + 0.009307265281677246, 0.012327230535447598, 0.011095613241195679, 0 + ], + [ + 0.013467581942677498, 0.0005185022600926459, 0.010755922645330429, + 0.019695322960615158, 0.11985591799020767, 1, 1, 0.05854101479053497, + 0.006809915415942669, 0.015039695426821709, 0.13434116542339325, + 0.00018443030421622097, 0.0005644444026984274, 0.9884122610092163, + 0.08891724795103073, 0.018117565661668777, 0.020168881863355637, + 0.001477359444834292, 0.017130514606833458, 0.046372056007385254, + 0.027112610638141632, 0.018875129520893097, 0.029902219772338867, + 0.03625096008181572, 0.728911280632019, 0.5054754018783569, + 0.02541843056678772, 0.05290177837014198, 0.010443637147545815, + 0.010204192250967026, 0.017859777435660362, 0.009629735723137856, + 0.011249779723584652, 0.01327962800860405, 0.0747297927737236, + 0.004505640361458063, 0.035683102905750275, 0.005915685091167688, + 0.06942039728164673, 0.016243932768702507, 0.018580958247184753, + 0.009953700937330723, 0, 0.00008288140088552609, 0.005284538492560387, + 0.4015503227710724, 0.024490870535373688, 0.45896661281585693, + 0.6748417615890503, 0.7781306505203247 + ], + [ + 0.2987509071826935, 0.9995250105857849, 0.0009603404905647039, + 0.3530711531639099, 0.02467336133122444, 0.014172581024467945, 0, + 0.15462131798267365, 0, 0.29868465662002563, 0.039479173719882965, 0, + 0.2016579508781433, 0.02670399099588394, 0.05400571972131729, 0, + 0.333937406539917, 0, 1, 0, 0.8765571117401123, 0, 0.26844578981399536, + 0, 0, 0, 0, 0.19839246571063995, 0.2506825923919678, + 0.010717598721385002, 0.017461437731981277, 1, 0.2994346022605896, 1, + 0.08595255762338638, 0.0025368917267769575, 0.7394900321960449, + 0.00659530283883214, 0.06567930430173874, 1, 0.4481886327266693, + 0.008366327732801437, 0.00008288140088552609, 0, 0, 0, + 0.22749866545200348, 0, 0, 0.02673187293112278 + ], + [ + 0, 0, 0.1849265694618225, 0, 0, 0, 0.17027275264263153, 0, + 0.17683106660842896, 0, 0, 0.7760928869247437, 0, 0.004105167929083109, + 0, 0.8517173528671265, 0.00491121644154191, 0.997360110282898, + 0.0067732688039541245, 1, 0.004984310362488031, 0.8891154527664185, + 0.006291622761636972, 0.1583634316921234, 0, 0.027640050277113914, + 0.4343656301498413, 0, 0, 0.23379100859165192, 0.22718237340450287, 0, + 0, 0, 0.004818427842110395, 0.19224625825881958, 0.004012812860310078, + 0.1543998271226883, 0, 0, 0, 0.08274251967668533, 0.005284538492560387, + 0, 0, 0.0605071485042572, 0.004709651228040457, 0.04749692231416702, + 0.023140422999858856, 0.004240727983415127 + ], + [ + 0, 0, 0.09242910146713257, 0, 0, 0.29717016220092773, + 0.21474185585975647, 0, 0.07009349018335342, 0, 0.03909922018647194, + 0.03829348087310791, 0, 0.18453633785247803, 0, 0.06725174188613892, + 0.03439102694392204, 0.056355852633714676, 0.03078370913863182, + 0.24683813750743866, 0, 0.05890149995684624, 0, 0.71632981300354, + 0.7185539603233337, 0.9590020775794983, 0.0756436437368393, + 0.03080074116587639, 0, 0.07896720618009567, 0.09036210179328918, 0, 0, + 0, 0.03304995968937874, 0.12450051307678223, 0.03156355395913124, + 0.08681514859199524, 0, 0, 0, 0.022566260769963264, 0.4015503227710724, + 0, 0.0605071485042572, 0, 0, 1, 0.9534573554992676, 0.11607500165700912 + ], + [ + 0.9907876253128052, 0.5491859912872314, 0.010698540136218071, + 0.06933934986591339, 0.03512968122959137, 0.023615499958395958, 0, + 0.17412947118282318, 0.006815925240516663, 0.10646643489599228, + 0.06365905702114105, 0.00015001643623691052, 0.5393239259719849, + 0.038106419146060944, 0.09392549097537994, 0.01847703568637371, + 0.1622658222913742, 0.001442269654944539, 0.2072259783744812, + 0.02508893795311451, 0.1328583061695099, 0.0185126680880785, 1, 0, 0, 0, + 0.024455303326249123, 0.07025483250617981, 0.1350279450416565, + 0.011151236481964588, 0.016952989622950554, 0.2855151295661926, + 0.08733031153678894, 0.47101539373397827, 0.17339909076690674, 0, + 0.1514163613319397, 0.007106306962668896, 0.1447986662387848, + 0.21028023958206177, 1, 0.009307265281677246, 0.024490870535373688, + 0.22749866545200348, 0.004709651228040457, 0, 0, 0, 0, + 0.04925370588898659 + ], + [ + 0, 0, 0.05565764009952545, 0, 0.03350405395030975, 0.31343939900398254, + 0.30868151783943176, 0.03252742066979408, 0.03933485224843025, 0, + 0.03834399953484535, 0.0005452607292681932, 0, 0.2179291546344757, 0, + 0.054258473217487335, 0.03126886859536171, 0.04343654587864876, + 0.03155025467276573, 0.1950589418411255, 0, 0.022024644538760185, 0, + 0.5602318048477173, 0.7359673976898193, 0.9731702208518982, + 0.060390520840883255, 0.05100482329726219, 0, 0.05249810591340065, + 0.06744509190320969, 0, 0, 0, 0.03771812096238136, 0.0748533084988594, + 0.033496323972940445, 0.050784822553396225, 0, 0, 0, + 0.012327230535447598, 0.45896661281585693, 0, 0.04749692231416702, 1, 0, + 0, 0.9999999403953552, 0.12940312922000885 + ], + [ + 0, 0, 0.030558302998542786, 0, 0.019970165565609932, 0.4069979190826416, + 0.31539255380630493, 0.01907695271074772, 0.026993343606591225, 0, + 0.02749062515795231, 0.0002785029646474868, 0, 0.28927695751190186, + 0.015629634261131287, 0.016234155744314194, 0.015633108094334602, + 0.01886031962931156, 0.01571946032345295, 0.12957243621349335, 0, + 0.01818682812154293, 0.014628886245191097, 0.3546944260597229, 1, 1, + 0.023947538807988167, 0, 0, 0.03241368755698204, 0.04253024235367775, 0, + 0, 0, 0.021337131038308144, 0.036075882613658905, 0.015973683446645737, + 0.029883606359362602, 0.018144426867365837, 0, 0, 0.011095613241195679, + 0.6748417615890503, 0, 0.023140422999858856, 0.9534573554992676, 0, + 0.9999999403953552, 0, 0.12287797033786774 + ], + [ + 0.0178059171885252, 0.016774680465459824, 0, 0.03306076303124428, + 0.8046245574951172, 0.918527364730835, 0.43790411949157715, + 0.2103152573108673, 0.00517085799947381, 0.06567075103521347, + 0.8421590328216553, 0, 0.0029436794575303793, 1, 0.3137980103492737, 0, + 0.04277985915541649, 0.001059041591361165, 0.041285112500190735, + 0.029643645510077477, 0.14334078133106232, 0, 0.0636901929974556, + 0.0018989744130522013, 0.1662016659975052, 0.20542165637016296, + 0.022560633718967438, 0.10961153358221054, 0.013538672588765621, 0, + 0.017950063571333885, 0.03490826115012169, 0.0174560584127903, + 0.039919331669807434, 0.3502250015735626, 0.002600905252620578, + 0.1338818371295929, 0, 0.27412593364715576, 0.03497658297419548, + 0.041517872363328934, 0, 0.7781306505203247, 0.02673187293112278, + 0.004240727983415127, 0.11607500165700912, 0.04925370588898659, + 0.12940312922000885, 0.12287797033786774, 0 + ] + ], + "distances": [ + [ + 0, 12.849941520343128, 0, 26.48405280720113, 27.07043938993003, 0, 0, + 22.268582400718806, 0, 23.472213933009872, 25.548520126678255, 0, + 21.923651484175835, 28.16480381600877, 24.833310183211847, + 29.03783951864993, 19.539699378496085, 0, 18.72981359922355, 0, + 20.073223883459505, 0, 14.526528825652365, 0, 0, 0, 0, + 24.615084271901367, 21.721351809441096, 28.962495778454837, 0, + 16.40007030550082, 23.553201066053237, 15.738243545420447, + 22.93943184903329, 0, 19.336404923551108, 0, 22.72045997738406, + 18.809163332562495, 10.406657568471436, 0, 28.553685302842144, + 15.910889453906512, 0, 0, 10.517192611485513, 0, 0, 27.377250572796605 + ], + [ + 12.849941520343128, 0, 0, 20.666671769301303, 22.864954359479306, + 28.3773564560688, 0, 17.231390718692637, 0, 19.770988763178252, + 22.04327371361836, 0, 19.186588368039313, 27.50925016721927, + 20.664638009354665, 0, 18.16460182282174, 0, 15.886753678044158, 0, + 16.577798125339708, 0, 12.063082495241208, 30.473125625989393, 0, 0, 0, + 21.744549888583045, 19.908839647550586, 0, 0, 10.932765693282656, + 20.14904726587086, 11.630055866013738, 18.318118224004873, 0, + 13.732356307763158, 0, 18.740970128374805, 11.989213244006109, + 9.756727226570902, 0, 27.67236064233356, 9.786912151806975, 0, 0, + 12.748219073251114, 0, 0, 25.897095826884026 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 27.79415853618299, 9.996851610662048, + 28.19491590499703, 0, 16.497097663267308, 0, 0, 0, 15.76854947417135, + 26.790921377480622, 15.636962746576545, 27.130668913061637, + 20.08185430950512, 0, 16.37688611985139, 26.958990539463688, + 16.99249188324295, 0, 26.629222684964073, 14.554816015208228, 0, 0, + 9.857634427013819, 10.82474372542942, 0, 0, 0, 28.087932014628276, + 11.697036528950358, 28.146684641618197, 10.194695072045127, + 28.265241428853454, 0, 0, 15.343122968386677, 27.33061854814588, + 28.500449047186166, 17.865531806680156, 22.979915469904746, + 27.647524727178062, 25.172345453621993, 25.913100457245022, 0 + ], + [ + 26.48405280720113, 20.666671769301303, 0, 0, 25.638658445518985, + 31.605945405973046, 35.137795613723, 22.24854070940034, 0, + 20.134505710848657, 23.642968601687503, 0, 26.626537347637356, + 29.048461940659436, 24.53348147613502, 0, 19.60871253142261, 0, + 20.00552316553955, 0, 21.451517115774347, 0, 23.766586622720794, 0, 0, + 0, 0, 20.143632867417566, 16.716570417767294, 0, 0, 20.970460258130906, + 12.847213027748564, 22.794015139894828, 24.345680660234773, 0, + 20.98879508963716, 0, 25.338004486537276, 18.79040392017895, + 22.376854882516824, 0, 31.585657530128934, 17.93328043891365, 0, 0, + 26.472820555822075, 0, 0, 29.11431782424826 + ], + [ + 27.07043938993003, 22.864954359479306, 0, 25.638658445518985, 0, + 18.151810276984925, 24.053219191821558, 13.167077027797502, 0, + 18.71928519083041, 10.665853688171046, 0, 27.36416451646327, + 15.39129594673329, 10.184689485777168, 0, 23.115019439602488, 0, + 21.344888047663133, 0, 15.981352303170091, 0, 19.886623395525564, 0, 0, + 26.711890274243302, 0, 20.917923513920112, 25.529003981468218, 0, 0, + 18.740875959750284, 0, 20.073882238178623, 11.943675501661723, 0, + 13.843061566919712, 0, 11.223917080824888, 19.24850738041037, + 22.469474371992064, 0, 19.62064701311392, 20.84246568207039, 0, 0, + 23.417728205424165, 0, 0, 11.877170591582072 + ], + [ + 0, 0, 0, 0, 18.151810276984925, 0, 21.83753823535509, + 22.611310814825025, 0, 26.2909364550314, 18.361763232472686, 0, 0, + 11.09526444137476, 21.933961222048957, 0, 26.452286508880395, 0, + 27.098834374013535, 0, 23.228357811329975, 0, 25.791371697552588, + 26.728437802756186, 17.135455657564734, 14.48568284159832, 0, + 24.913888757802, 0, 0, 0, 26.633613915606198, 0, 26.117772135054967, + 21.17823730787517, 0, 22.2673460326732, 0, 21.70948185180769, + 26.893477193404728, 26.270032786381062, 0, 11.366833443556132, + 27.810063642339863, 0, 18.798561703256265, 27.703718218552904, + 18.386392491148783, 16.648990789631238, 11.910358459302957 + ], + [ + 0, 0, 0, 0, 24.053219191821558, 21.83753823535509, 0, + 26.217233934042042, 0, 0, 25.23189167668722, 28.0547442897165, 0, + 19.752726007820343, 25.870028195023206, 26.359075305778287, + 28.1459098957701, 26.75319234174944, 27.646919825450087, + 22.050215991310335, 27.317020779871346, 26.626332518666125, + 27.557020357505547, 27.404056794811375, 22.763326286337588, + 22.427332546200134, 28.950127696973706, 27.931234805354862, 0, 0, 0, 0, + 0, 0, 25.3681957099965, 0, 27.412557570469996, 0, 25.786944280162604, 0, + 0, 0, 19.130209984590625, 0, 23.723663153379697, 23.661904592375983, 0, + 22.5121024796873, 22.267841976879904, 21.278286886602437 + ], + [ + 22.268582400718806, 17.231390718692637, 0, 22.24854070940034, + 13.167077027797502, 22.611310814825025, 26.217233934042042, 0, 0, + 14.135708099999455, 11.835038074626038, 0, 22.69532929424212, + 19.472142344332887, 12.575671897748675, 0, 19.644101761795163, 0, + 16.75341152802637, 0, 15.228887052179374, 0, 13.23212631698188, 0, 0, 0, + 0, 18.98968070728672, 19.884082514496015, 0, 0, 14.78471635023286, + 22.696766683300474, 15.787634245288691, 8.513257046055971, 0, + 11.648283514295144, 0, 9.40191295694423, 13.18731878113317, + 17.962135126977838, 0, 22.175640848722487, 15.721810031603862, 0, 0, + 17.543836512382, 0, 0, 17.2002505741782 + ], + [ + 0, 0, 9.996851610662048, 0, 0, 0, 0, 29.731165782867176, 0, + 30.041766343623998, 0, 16.630943779663948, 0, 30.182289189420086, 0, + 16.983870213735578, 28.22837782511334, 16.65862479282771, + 28.49891426787747, 21.326549041548102, 0, 16.86049003327767, + 28.005420515079727, 19.579681642730527, 0, 28.47101242701936, + 16.209558353400293, 0, 0, 8.664402930730914, 10.475236347973741, 0, 0, + 0, 30.141879078254373, 12.196647654604043, 29.748534837239706, + 8.594829717161243, 0, 0, 0, 16.23409137560547, 29.079316207701403, 0, + 18.94234548097743, 25.463361997366913, 29.07569593427811, + 28.02593627287495, 27.908627672646652, 30.20976317917455 + ], + [ + 23.472213933009872, 19.770988763178252, 28.19491590499703, + 20.134505710848657, 18.71928519083041, 26.2909364550314, 0, + 14.135708099999455, 0, 0, 16.89951874990203, 0, 20.994002149491536, + 21.948694736087955, 15.418301877194796, 0, 16.90815824728375, 0, + 16.570304200418526, 0, 16.651520626089972, 0, 18.943184758689632, 0, 0, + 0, 0, 21.1505524691494, 17.194172733176725, 0, 0, 17.190150214406614, + 20.301173206818113, 16.81462471409695, 17.47155726520559, 0, + 16.64486073010959, 0, 15.179707401298078, 15.217994630084638, + 19.714838855997606, 0, 25.901110318722722, 16.306767887948936, 0, 0, + 19.560954307212945, 0, 0, 21.247979035950298 + ], + [ + 25.548520126678255, 22.04327371361836, 0, 23.642968601687503, + 10.665853688171046, 18.361763232472686, 25.23189167668722, + 11.835038074626038, 0, 16.89951874990203, 0, 0, 0, 14.327344847899706, + 13.774666828826705, 0, 21.941687135735975, 0, 20.06747259451722, 0, + 15.939120730410856, 0, 17.730101784772387, 0, 0, 25.63943035088343, 0, + 20.443657334019598, 23.71820151463241, 0, 0, 18.734606171981877, + 25.573484253390504, 19.834377296252242, 10.122019519201233, 0, + 13.759593201632113, 0, 11.878829513489698, 19.036359409798774, + 20.34878088910738, 0, 19.210999130493096, 19.513216936275118, 0, 0, + 21.204123590429788, 0, 0, 11.585672942075657 + ], + [ + 0, 0, 16.497097663267308, 0, 0, 0, 28.054744289716496, + 31.235934170537444, 16.630943779663948, 0, 0, 0, 0, 31.599250976021352, + 0, 13.938975273350417, 31.26854433583127, 15.597499162280663, + 30.69269226816081, 17.600194798637965, 31.905512796346315, + 13.72415422922188, 30.240338245678444, 23.00871737787755, 0, + 30.991021442873638, 16.125474231036417, 0, 0, 16.1495510492163, + 15.492767501162726, 0, 0, 0, 31.640988264107417, 17.830983856747476, 0, + 17.420441754828477, 0, 32.00449914823171, 0, 22.150328583189417, + 30.972191984568383, 0, 14.577565125810017, 27.559735351561923, + 31.386485238533922, 28.79770778513308, 30.145407941800684, 0 + ], + [ + 21.923651484175835, 19.186588368039313, 31.991382578119897, + 26.626537347637356, 27.36416451646327, 30.424015315707948, 0, + 22.69532929424212, 0, 20.994002149491536, 25.969120443659186, 0, 0, + 29.094462247595548, 24.096514461186807, 0, 20.028575556683528, 0, + 17.60494147145746, 0, 24.646047545161032, 0, 19.987061585300538, 0, 0, + 0, 0, 27.20485059063421, 23.30140109854885, 0, 0, 18.602020183078636, + 22.355490682972288, 20.60444653849095, 23.737189634640067, 0, + 22.555220936041266, 0, 24.054917479498958, 20.432304767819808, + 18.076781928306644, 0, 30.754052859218636, 20.444641557488403, 0, 0, + 18.831370566888047, 0, 0, 27.850619057372942 + ], + [ + 0, 0, 0, 0, 15.39129594673329, 11.09526444137476, 19.752726007820343, + 19.472142344332887, 0, 21.948694736087955, 14.327344847899706, 0, 0, 0, + 18.51565962781199, 0, 24.139350440693867, 0, 23.826309271716756, 0, + 21.66892437431638, 0, 23.52742019470351, 26.208298911276874, + 17.599121727424436, 17.481333745679187, 0, 23.18838278617501, 0, 0, 0, + 24.88976354563236, 0, 25.20209579514411, 18.917006228438105, 0, + 20.81099673414083, 0, 18.534848451447605, 24.537290574214065, + 25.384735958871627, 0, 11.487932796659068, 25.86440741640669, 0, + 21.204564636059136, 26.150741414342477, 20.12758331798834, + 18.028303597732428, 9.688432644387529 + ], + [ + 24.833310183211847, 20.664638009354665, 0, 24.53348147613502, + 10.184689485777168, 21.933961222048957, 25.870028195023206, + 12.575671897748675, 0, 15.418301877194796, 13.774666828826705, 0, + 24.096514461186807, 18.51565962781199, 0, 0, 21.47091476001231, 0, + 19.470811251764932, 0, 16.596317763166663, 0, 17.38433503540312, 0, 0, + 0, 0, 21.385303850406668, 23.147534081720792, 0, 0, 17.282412123146013, + 26.28770724566935, 18.862511099037686, 12.28620984208408, 0, + 14.85073439069805, 0, 10.157683913955937, 16.124621739555376, + 20.83626267592767, 0, 21.07677484409414, 19.775628718267818, 0, 0, + 20.418853208845782, 0, 0, 16.162692544447328 + ], + [ + 29.03783951864993, 0, 15.76854947417135, 0, 0, 0, 26.359075305778287, 0, + 16.983870213735578, 0, 0, 13.938975273350417, 0, 0, 0, 0, + 28.465152773166416, 11.76161576443938, 26.796078645318115, + 16.910625527594632, 27.70198366370959, 7.922908250212197, + 27.238671287473455, 22.29457963381019, 0, 28.871861667519774, + 8.250877938219789, 0, 0, 15.221200147898568, 15.028940654306565, 0, 0, + 28.372538887446048, 28.972741730204923, 18.505280984948534, + 28.364002292080603, 17.810840515150307, 0, 0, 0, 25.389286703458204, + 28.55544199091172, 0, 11.98639187503817, 26.797545730229036, + 28.454375775947266, 27.618292554439332, 29.120086324427934, 0 + ], + [ + 19.539699378496085, 18.16460182282174, 0, 19.60871253142261, + 23.115019439602488, 26.452286508880395, 0, 19.644101761795163, 0, + 16.90815824728375, 21.941687135735975, 0, 20.028575556683528, + 24.139350440693867, 21.47091476001231, 0, 0, 0, 14.903416234348441, 0, + 19.150601309552716, 0, 19.734744382203495, 0, 0, 0, 0, + 13.845127174572914, 12.59930912786956, 0, 26.705680122697327, + 15.973315178867248, 14.72434181520013, 17.450258509115276, + 21.106746944623765, 0, 17.817314608749662, 0, 21.145988371955088, + 16.747591396053885, 18.56144264716344, 0, 26.145977681231685, + 15.840888486015748, 0, 0, 19.124515121966812, 0, 0, 23.831994660733894 + ], + [ + 0, 0, 15.636962746576545, 0, 0, 0, 26.753192341749443, + 30.25235451298515, 16.65862479282771, 0, 0, 15.597499162280663, 0, 0, 0, + 11.76161576443938, 28.74563361143481, 0, 28.397491055790248, + 14.643214442738609, 30.338653268562688, 11.261584341273377, + 28.96164132049437, 20.135843412741888, 0, 28.30131287087849, + 12.687009143795144, 0, 0, 16.2648331898737, 16.505048961047116, 0, 0, 0, + 30.10397057962952, 17.418760491613593, 30.32183172859222, + 17.33725353562937, 0, 0, 0, 25.2899950117426, 29.491704429929243, 0, + 11.322092541525874, 25.819989320741964, 29.55894301625801, + 26.686449082947465, 28.29271242133916, 30.422838682599377 + ], + [ + 18.72981359922355, 15.886753678044158, 0, 20.00552316553955, + 21.344888047663133, 0, 0, 16.75341152802637, 0, 16.570304200418526, + 20.06747259451722, 0, 17.60494147145746, 23.826309271716756, + 19.470811251764932, 0, 14.903416234348441, 0, 0, 0, 16.67498151056145, + 0, 15.6011289443145, 0, 0, 0, 0, 18.773422539643054, 16.418441970203332, + 26.624736845010375, 26.23496757698679, 14.583061120089377, + 18.613316990694603, 15.991220224531231, 18.17582359102352, 0, + 15.705321844994135, 0, 19.15520729746998, 14.224664337706033, + 16.818998348657445, 0, 25.340834988856216, 13.691051859664881, 0, 0, + 17.26493407906328, 0, 0, 22.43889803382074 + ], + [ + 0, 0, 20.08185430950512, 0, 0, 0, 22.050215991310335, 0, + 21.326549041548102, 0, 0, 17.600194798637965, 0, 29.187229246317244, 0, + 16.910625527594632, 30.150491352299078, 14.643214442738609, + 28.88494051667922, 0, 30.418186562991583, 17.09978848105303, + 30.29185430952789, 16.00116346057934, 28.37752668228384, + 24.63467459473912, 19.932403630780197, 0, 0, 20.418874172681857, + 20.69948563288281, 0, 0, 0, 30.686020254198947, 18.91805431679237, 0, + 20.715614251682492, 0, 0, 0, 29.58511559615116, 27.338599479651712, 0, + 10.849702599350064, 21.18967584204773, 30.63669246953109, + 22.376486011076434, 23.834205722754586, 29.741010063073826 + ], + [ + 20.073223883459505, 16.577798125339708, 0, 21.451517115774347, + 15.981352303170091, 23.228357811329975, 27.317020779871346, + 15.228887052179374, 0, 16.651520626089972, 15.939120730410856, 0, + 24.646047545161032, 21.66892437431638, 16.596317763166663, 0, + 19.150601309552716, 0, 16.67498151056145, 0, 0, 0, 16.006869906635046, + 0, 0, 0, 0, 19.283882465510466, 20.532538791229246, 0, 0, + 13.668831473309805, 22.132127369027156, 11.75299002372365, + 14.636098275524871, 0, 11.247549343885403, 0, 13.6055697354337, + 13.117071880841443, 16.581299617057315, 0, 23.987080222914244, + 11.69535920413761, 0, 0, 18.141087733032055, 0, 0, 18.263691149488874 + ], + [ + 0, 0, 16.37688611985139, 0, 0, 0, 26.62633251866613, 30.98072439912704, + 16.86049003327767, 0, 0, 13.72415422922188, 0, 0, 0, 7.922908250212197, + 29.83752162421783, 11.261584341273377, 28.765575741274375, + 17.09978848105303, 30.441694564717093, 0, 29.488878607609312, + 23.686574594250875, 0, 30.42709001902128, 10.153091935701774, 0, 0, + 15.711227217180094, 15.476728291320716, 0, 0, 30.457041735701598, + 30.83485242889057, 18.89429075938288, 30.48621031686787, + 17.993066622862248, 0, 0, 0, 24.68213241573816, 30.02467475099812, 0, + 11.754434855746993, 28.167160983298682, 30.132624639152507, + 29.165544466639922, 30.23148880130288, 0 + ], + [ + 14.526528825652365, 12.063082495241208, 26.958990539463688, + 23.766586622720794, 19.886623395525564, 25.791371697552588, 0, + 13.23212631698188, 0, 18.943184758689632, 17.730101784772387, 0, + 19.987061585300538, 23.52742019470351, 17.38433503540312, 0, + 19.734744382203495, 0, 15.6011289443145, 0, 16.006869906635046, 0, 0, 0, + 0, 0, 0, 21.29410484384833, 19.77048012575261, 0, 0, 13.139058351968005, + 22.33878309216717, 14.351210011356912, 12.781735288828143, 0, + 12.53870812363164, 0, 14.456071399861672, 13.773942622716287, + 11.666955452691543, 0, 24.045165840590407, 14.345035992810606, 0, 0, + 9.919418949725976, 0, 0, 21.41699481050503 + ], + [ + 0, 0, 16.99249188324295, 0, 0, 26.728437802756186, 27.404056794811375, + 28.39320542480601, 19.579681642730527, 0, 0, 23.00871737787755, 0, + 26.208298911276874, 0, 22.294579633810194, 27.912363091368476, + 20.135843412741888, 27.39489315054672, 16.00116346057934, + 28.650284561512006, 23.686574594250875, 28.09972619529044, 0, + 24.99544374713989, 20.75369306632103, 22.320447675829143, 0, 0, + 18.858577861486083, 19.595000851996915, 0, 0, 0, 0, 15.929945395531268, + 0, 18.561684703271453, 0, 0, 0, 25.409947663944163, 23.98427574429453, + 0, 20.251257140449685, 16.80919717172426, 0, 17.44277344699125, + 18.478296367747557, 27.29451552167918 + ], + [ + 0, 0, 31.44038691366954, 0, 28.60529330338889, 17.135455657564734, + 22.763326286337588, 31.266237839493318, 0, 32.46122977607978, + 27.966189186947663, 0, 0, 17.599121727424436, 30.33524392719526, 0, + 31.03000496010746, 0, 31.399466172141587, 28.37752668228384, + 32.20958736296237, 0, 31.865914667692756, 24.99544374713989, 0, + 14.003782566566127, 0, 31.71692089736096, 0, 32.341722744267805, + 31.973588184469765, 0, 0, 0, 30.118751946284537, 30.950344061574604, + 31.073386072077746, 32.55954787173299, 30.302112558591496, 0, 0, 0, + 14.591373033867248, 0, 0, 14.71596725579903, 0, 14.472342643965135, + 11.307035793354784, 22.56288326762 + ], + [ + 0, 0, 26.629222684964073, 0, 26.711890274243302, 14.48568284159832, + 22.427332546200134, 28.330999861482812, 28.47101242701936, 0, + 25.63943035088343, 0, 0, 17.481333745679187, 0, 28.871861667519774, + 28.421660473056598, 28.30131287087849, 0, 24.63467459473912, + 28.38905585037954, 0, 0, 20.75369306632103, 14.003782566566127, 0, 0, + 27.825290470978256, 0, 28.105482452908298, 27.095175105986954, 0, 0, 0, + 27.26580156482749, 26.925090346838466, 27.930184478756594, + 27.482514569232233, 28.086969546627092, 0, 0, 0, 15.667767568928351, 0, + 28.879452607354935, 10.857983131006996, 0, 10.603881185593716, + 9.895592413110604, 19.643781455673835 + ], + [ + 0, 0, 14.554816015208228, 0, 0, 0, 28.95012769697371, 0, + 16.209558353400293, 0, 0, 16.125474231036417, 0, 0, 0, + 8.250877938219789, 28.906534530543748, 12.687009143795144, + 27.711906811532323, 19.932403630780197, 28.722862464953995, + 10.153091935701774, 28.097355014469013, 22.320447675829143, 0, + 28.909186534942616, 0, 0, 0, 14.099520107752014, 13.873076996603684, 0, + 0, 29.298981102989092, 29.704828604304296, 19.099796139545287, + 29.163492322382673, 17.58878198270613, 0, 0, 0, 23.726354482511784, + 28.6741292237556, 0, 15.914897917627048, 26.893523894087114, + 28.888954977672967, 27.84849963657422, 29.005644713204983, + 29.33743275037452 + ], + [ + 24.615084271901367, 21.744549888583045, 0, 20.143632867417566, + 20.917923513920112, 24.913888757802, 0, 18.98968070728672, 0, + 21.1505524691494, 20.443657334019598, 0, 27.20485059063421, + 23.18838278617501, 21.385303850406668, 0, 13.845127174572914, 0, + 18.773422539643054, 0, 19.283882465510466, 0, 21.29410484384833, 0, 0, + 0, 0, 0, 15.505799086614834, 0, 0, 18.275935951350892, + 18.464253963467876, 20.635324420329674, 20.145091274734547, 0, + 18.13548930523438, 0, 20.97771694515215, 19.02805322052468, + 23.137520300613325, 0, 24.822014681649026, 19.19628286893724, 0, 0, + 23.785196769379336, 27.270893344193887, 0, 22.338044275545638 + ], + [ + 21.721351809441096, 19.908839647550586, 0, 16.716570417767294, + 25.529003981468218, 0, 0, 19.884082514496015, 0, 17.194172733176725, + 23.71820151463241, 0, 23.30140109854885, 26.792443954851468, + 23.147534081720792, 0, 12.59930912786956, 0, 16.418441970203332, 0, + 20.532538791229246, 0, 19.77048012575261, 0, 0, 0, 0, + 15.505799086614834, 0, 28.71871745494471, 28.808908997974875, + 18.718684428044423, 11.971219022690116, 18.91767354291172, + 22.731150190473056, 0, 20.087329476009863, 0, 22.047747840937927, + 16.039985690041828, 20.66989826924162, 0, 28.22047878934805, + 17.126660312930515, 0, 0, 20.668456136774424, 0, 0, 27.295920398822588 + ], + [ + 28.962495778454837, 0, 9.857634427013819, 0, 0, 0, 0, 0, + 8.664402930730914, 0, 0, 16.1495510492163, 0, 0, 0, 15.221200147898568, + 26.8962275010833, 16.2648331898737, 26.624736845010375, + 20.418874172681857, 28.337082224117783, 15.711227217180094, + 27.146813526537326, 18.858577861486083, 0, 28.1054824529083, + 14.099520107752014, 0, 28.71871745494471, 0, 7.397500051635739, 0, 0, + 28.501527160404866, 0, 11.069909499841813, 28.382671589003102, + 9.233814528997236, 0, 0, 0, 17.029748593093064, 28.550244740737583, + 28.323772095985763, 17.80207493239885, 25.073224365329636, + 28.14078726486668, 26.856324471385747, 27.49333712104603, 0 + ], + [ + 0, 0, 10.82474372542942, 0, 0, 0, 0, 0, 10.475236347973741, 0, 0, + 15.492767501162726, 0, 28.184663268023225, 0, 15.028940654306565, + 26.705680122697327, 16.505048961047116, 26.23496757698679, + 20.69948563288281, 27.800933907263254, 15.476728291320716, + 27.169188240533675, 19.595000851996915, 0, 27.095175105986954, + 13.873076996603684, 0, 0, 7.397500051635739, 0, 0, 0, 0, + 28.028947548007782, 12.474189684176185, 27.44355100037496, + 9.295994088278274, 0, 0, 0, 18.203970558225553, 27.905796485973276, + 28.039388132706275, 18.32193519894335, 24.920020429136198, + 28.171279815464754, 26.181746274427322, 27.051011365646534, + 27.88010553484227 + ], + [ + 16.40007030550082, 10.932765693282656, 0, 20.970460258130906, + 18.740875959750284, 26.633613915606198, 0, 14.78471635023286, 0, + 17.190150214406614, 18.734606171981877, 0, 18.602020183078636, + 24.88976354563236, 17.282412123146013, 0, 15.973315178867248, 0, + 14.583061120089377, 0, 13.668831473309805, 0, 13.139058351968005, 0, 0, + 0, 0, 18.275935951350892, 18.718684428044423, 0, 28.921397647152833, 0, + 19.53739544546099, 11.076061316886236, 15.321517286390788, 0, + 11.071442542426974, 0, 15.451635644094964, 11.369831447450895, + 12.884319136653929, 0, 27.206829529069932, 10.822714079968014, 0, 0, + 14.45556969720284, 0, 0, 22.78601248149393 + ], + [ + 23.553201066053237, 20.14904726587086, 32.43304370726407, + 12.847213027748564, 27.672959981914968, 31.7999722253371, 0, + 22.696766683300474, 0, 20.301173206818113, 25.573484253390504, 0, + 22.355490682972288, 29.268342140123053, 26.28770724566935, 0, + 14.72434181520013, 0, 18.613316990694603, 0, 22.132127369027156, 0, + 22.33878309216717, 0, 0, 0, 0, 18.464253963467876, 11.971219022690116, + 0, 0, 19.53739544546099, 0, 21.0429454766673, 25.255633795932532, 0, + 21.04017086943817, 0, 25.45272251943503, 18.45459709355302, + 20.72365500284163, 0, 31.40827267915402, 17.381019058421096, 0, 0, + 23.82593193004679, 0, 0, 29.505291268181637 + ], + [ + 15.738243545420447, 11.630055866013738, 0, 22.794015139894828, + 20.073882238178623, 26.117772135054967, 0, 15.787634245288691, 0, + 16.81462471409695, 19.834377296252242, 0, 20.60444653849095, + 25.20209579514411, 18.862511099037686, 0, 17.450258509115276, 0, + 15.991220224531231, 0, 11.75299002372365, 0, 14.351210011356912, 0, 0, + 0, 0, 20.635324420329674, 18.91767354291172, 0, 28.286854888019054, + 11.076061316886236, 21.0429454766673, 0, 17.032287204121722, 0, + 11.670330686626743, 0, 15.369803536126001, 10.970044150775129, + 12.731965245150185, 0, 26.44861730433076, 9.714253364929057, 0, 0, + 13.421749367351435, 0, 0, 22.804133530161817 + ], + [ + 22.93943184903329, 18.318118224004873, 0, 24.345680660234773, + 11.943675501661723, 21.17823730787517, 25.3681957099965, + 8.513257046055971, 0, 17.47155726520559, 10.122019519201233, 0, + 23.737189634640067, 18.917006228438105, 12.28620984208408, 0, + 21.106746944623765, 0, 18.17582359102352, 0, 14.636098275524871, 0, + 12.781735288828143, 0, 0, 0, 0, 20.145091274734547, 22.731150190473056, + 0, 0, 15.321517286390788, 25.255633795932532, 17.032287204121722, 0, 0, + 11.101628639255633, 0, 9.169976822375567, 15.667679215470029, + 18.045493111450426, 0, 21.19688421105724, 17.210196494526944, 0, 0, + 17.42030065410262, 0, 0, 15.069987621738921 + ], + [ + 0, 0, 11.697036528950358, 0, 0, 0, 0, 29.66357904661765, + 12.196647654604043, 0, 0, 17.830983856747476, 0, 29.714409179934105, 0, + 18.505280984948534, 28.825335257763236, 17.418760491613593, + 28.712240178615517, 18.91805431679237, 30.21081677948317, + 18.89429075938288, 29.00915856526303, 15.929945395531268, 0, + 26.925090346838466, 19.099796139545287, 0, 0, 11.069909499841813, + 12.474189684176185, 0, 0, 0, 29.686418912607074, 0, 29.554015213176054, + 10.732710767523265, 0, 0, 0, 18.088134387937373, 28.184664627286892, + 30.040170466666858, 18.61019692894546, 22.197534044086094, 0, + 24.3658655049106, 26.013453617307547, 29.959669923759876 + ], + [ + 19.336404923551108, 13.732356307763158, 0, 20.98879508963716, + 13.843061566919712, 22.2673460326732, 27.412557570469996, + 11.648283514295144, 0, 16.64486073010959, 13.759593201632113, 0, + 22.555220936041266, 20.81099673414083, 14.85073439069805, 0, + 17.817314608749662, 0, 15.705321844994135, 0, 11.247549343885403, 0, + 12.53870812363164, 0, 0, 0, 0, 18.13548930523438, 20.087329476009863, 0, + 0, 11.071442542426974, 21.04017086943817, 11.670330686626743, + 11.101628639255633, 0, 0, 0, 11.88689120034189, 12.342541936037893, + 14.587481696559175, 0, 22.73763419897654, 11.477720603930246, 0, 0, + 16.397826357299977, 0, 0, 17.53684109634543 + ], + [ + 0, 0, 10.194695072045127, 0, 0, 0, 0, 28.923013826297566, + 8.594829717161243, 0, 0, 17.420441754828477, 0, 0, 0, + 17.810840515150307, 27.30363570272702, 17.33725353562937, + 27.327022375804024, 20.715614251682492, 28.82429035703401, + 17.993066622862248, 27.698780453243355, 18.561684703271453, 0, + 27.482514569232233, 17.58878198270613, 0, 0, 9.233814528997236, + 9.295994088278274, 28.971418377381788, 0, 28.639949315879615, 0, + 10.732710767523265, 28.1553848792007, 0, 0, 0, 0, 17.538191722567422, + 29.1232490751813, 28.688081311009213, 19.371160024491118, + 24.23759815074455, 28.389467284810525, 26.609402571236526, + 27.293332041222964, 0 + ], + [ + 22.72045997738406, 18.740970128374805, 0, 25.338004486537276, + 11.223917080824888, 21.70948185180769, 25.786944280162604, + 9.40191295694423, 0, 15.179707401298078, 11.878829513489698, 0, + 24.054917479498958, 18.534848451447605, 10.157683913955937, 0, + 21.145988371955088, 0, 19.15520729746998, 0, 13.6055697354337, 0, + 14.456071399861672, 0, 0, 0, 0, 20.97771694515215, 22.047747840937927, + 0, 0, 15.451635644094964, 25.45272251943503, 15.369803536126001, + 9.169976822375567, 0, 11.88689120034189, 0, 0, 15.141312515867149, + 18.848514341887466, 0, 21.07270757557603, 17.322831670243804, 0, 0, + 17.750795886960187, 0, 0, 15.826691194818594 + ], + [ + 18.809163332562495, 11.989213244006109, 0, 18.79040392017895, + 19.24850738041037, 26.893477193404728, 0, 13.18731878113317, 0, + 15.217994630084638, 19.036359409798774, 0, 20.432304767819808, + 24.537290574214065, 16.124621739555376, 0, 16.747591396053885, 0, + 14.224664337706033, 0, 13.117071880841443, 0, 13.773942622716287, 0, 0, + 0, 0, 19.02805322052468, 16.039985690041828, 0, 28.79959767721196, + 11.369831447450895, 18.45459709355302, 10.970044150775129, + 15.667679215470029, 0, 12.342541936037893, 0, 15.141312515867149, 0, + 15.478956623894376, 0, 25.81745956614527, 9.876071838311871, 0, 0, + 16.476134339768716, 0, 0, 23.331353515766324 + ], + [ + 10.406657568471436, 9.756727226570902, 0, 22.376854882516824, + 22.469474371992064, 26.270032786381062, 29.393663599748937, + 17.962135126977838, 0, 19.714838855997606, 20.34878088910738, 0, + 18.076781928306644, 25.384735958871627, 20.83626267592767, 0, + 18.56144264716344, 0, 16.818998348657445, 0, 16.581299617057315, 0, + 11.666955452691543, 0, 0, 0, 0, 23.137520300613325, 20.66989826924162, + 0, 0, 12.884319136653929, 20.72365500284163, 12.731965245150185, + 18.045493111450426, 0, 14.587481696559175, 0, 18.848514341887466, + 15.478956623894376, 0, 0, 26.433425551082898, 12.816243107247592, 0, 0, + 8.735991566747565, 0, 0, 23.69558662955417 + ], + [ + 0, 0, 15.343122968386677, 0, 0, 0, 0, 33.226774779610935, + 16.23409137560547, 33.99024320812101, 0, 22.150328583189417, 0, 0, + 34.0571827711329, 25.389286703458204, 32.84608797783706, + 25.2899950117426, 33.965765449093084, 29.58511559615116, 0, + 24.68213241573816, 32.474782465766936, 25.409947663944163, 0, 0, + 23.726354482511784, 0, 0, 17.029748593093064, 18.203970558225553, 0, 0, + 0, 33.663249998476424, 18.088134387937373, 33.93046658617705, + 17.538191722567422, 34.099088102744105, 0, 0, 0, 33.60489956015297, + 34.293130062012715, 25.942389200186533, 30.362363846824586, + 33.87091218108353, 32.75766905090039, 33.17465884507565, 0 + ], + [ + 0, 0, 27.33061854814588, 0, 19.62064701311392, 11.366833443556132, + 19.130209984590625, 22.175640848722487, 0, 25.901110318722722, + 19.210999130493096, 0, 0, 11.487932796659068, 21.07677484409414, 0, + 26.145977681231685, 0, 25.340834988856216, 0, 23.987080222914244, 0, + 24.045165840590407, 23.98427574429453, 14.591373033867248, + 15.667767568928351, 0, 24.822014681649026, 0, 0, 0, 27.206829529069932, + 0, 26.44861730433076, 21.19688421105724, 0, 22.73763419897654, 0, + 21.07270757557603, 25.81745956614527, 26.433425551082898, 0, 0, 0, 0, + 16.931289967756648, 26.449599374890948, 16.159993024656284, + 13.97394514019245, 13.02912333553558 + ], + [ + 15.910889453906512, 9.786912151806975, 0, 17.93328043891365, + 20.84246568207039, 27.810063642339863, 0, 15.721810031603862, 0, + 16.306767887948936, 19.513216936275118, 0, 20.444641557488403, + 25.86440741640669, 19.775628718267818, 0, 15.840888486015748, 0, + 13.691051859664881, 0, 11.69535920413761, 0, 14.345035992810606, 0, 0, + 0, 0, 19.19628286893724, 17.126660312930515, 0, 28.03938813270627, + 10.822714079968014, 17.381019058421096, 9.714253364929057, + 17.210196494526944, 0, 11.477720603930246, 0, 17.322831670243804, + 9.876071838311871, 12.816243107247592, 0, 27.577039386452135, 0, 0, 0, + 15.492237395110466, 0, 0, 23.90171738596423 + ], + [ + 0, 0, 17.865531806680156, 0, 0, 0, 23.723663153379697, 0, + 18.94234548097743, 0, 0, 14.577565125810017, 0, 30.568077468043008, 0, + 11.98639187503817, 29.924821343523753, 11.322092541525874, + 28.771386973553337, 10.849702599350064, 29.871814611342874, + 11.754434855746993, 29.036061998476278, 20.251257140449685, 0, + 28.879452607354935, 15.914897917627048, 0, 0, 17.80207493239885, + 18.32193519894335, 0, 0, 0, 29.99326176914614, 18.61019692894546, + 30.64972036796634, 19.371160024491118, 0, 0, 0, 25.942389200186533, + 29.66194484176708, 0, 0, 26.236462259211443, 30.075192192124504, + 27.051092128837045, 28.48828350439916, 30.451505011697403 + ], + [ + 0, 0, 22.979915469904746, 0, 0, 18.798561703256265, 23.661904592375983, + 0, 25.463361997366913, 0, 27.302711572525734, 27.559735351561923, 0, + 21.204564636059136, 0, 26.797545730229036, 28.011007421448944, + 25.819989320741964, 28.6227157351418, 21.18967584204773, 0, + 28.167160983298682, 0, 16.80919717172426, 14.715967255799033, + 10.857983131006996, 26.893523894087114, 28.619661654988494, 0, + 25.073224365329636, 24.920020429136198, 0, 0, 0, 28.23057884356382, + 22.197534044086094, 28.48461001559443, 24.23759815074455, 0, 0, 0, 0, + 16.931289967756648, 0, 26.236462259211443, 0, 0, 9.407735904622267, + 10.790710727130678, 22.970883273671742 + ], + [ + 10.517192611485513, 12.748219073251114, 27.647524727178062, + 26.472820555822075, 23.417728205424165, 27.703718218552904, 0, + 17.543836512382, 0, 19.560954307212945, 21.204123590429788, 0, + 18.831370566888047, 26.150741414342477, 20.418853208845782, 0, + 19.124515121966812, 0, 17.26493407906328, 0, 18.141087733032055, 0, + 9.919418949725976, 0, 0, 0, 0, 23.785196769379336, 20.668456136774424, + 0, 0, 14.45556969720284, 23.82593193004679, 13.421749367351435, + 17.42030065410262, 0, 16.397826357299977, 0, 17.750795886960187, + 16.476134339768716, 8.735991566747565, 0, 26.449599374890948, + 15.492237395110466, 0, 0, 0, 0, 0, 23.899596319367618 + ], + [ + 0, 0, 25.172345453621993, 0, 27.57646932023042, 18.386392491148783, + 22.5121024796873, 27.734735681203528, 28.02593627287495, 0, + 26.85459926919281, 0, 0, 20.12758331798834, 0, 27.618292554439332, + 27.945845466270473, 26.686449082947465, 27.897916583506923, + 22.376486011076434, 0, 0, 0, 17.44277344699125, 14.472342643965135, + 10.603881185593716, 27.848499636574225, 27.270893344193887, 0, + 26.856324471385744, 26.181746274427322, 0, 0, 0, 26.942645034688223, + 24.3658655049106, 27.577703293593025, 26.609402571236526, 0, 0, 0, 0, + 16.159993024656284, 0, 27.051092128837045, 9.407735904622267, 0, 0, + 9.721985493445406, 22.15772784631847 + ], + [ + 0, 0, 25.913100457245022, 0, 27.462987331406577, 16.648990789631238, + 22.267841976879904, 27.670423912773924, 27.908627672646656, 0, + 26.014129067989238, 0, 0, 18.028303597732428, 28.57395821768029, 0, + 28.572950728084603, 28.29271242133916, 28.54797978448014, + 23.834205722754586, 0, 0, 28.873924613082032, 18.478296367747557, + 11.307035793354784, 9.895592413110604, 0, 0, 0, 27.49333712104603, + 27.051011365646534, 0, 0, 0, 27.162843498095153, 26.013453617307547, + 28.475252797144492, 27.293332041222964, 27.89761938704114, 0, 0, 0, + 13.97394514019245, 0, 28.48828350439916, 10.790710727130678, 0, + 9.721985493445406, 0, 21.36807055727442 + ], + [ + 0, 25.897095826884026, 0, 0, 11.877170591582072, 11.910358459302957, + 21.278286886602437, 17.2002505741782, 0, 21.247979035950298, + 11.585672942075657, 0, 0, 9.688432644387529, 16.162692544447328, 0, + 23.831994660733894, 0, 22.43889803382074, 0, 18.263691149488874, 0, + 21.41699481050503, 0, 22.56288326762, 19.643781455673835, 0, + 22.338044275545638, 0, 0, 0, 22.78601248149393, 0, 22.804133530161817, + 15.069987621738921, 0, 17.53684109634543, 0, 15.826691194818594, + 23.331353515766324, 23.69558662955417, 0, 13.02912333553558, + 23.90171738596423, 0, 22.970883273671742, 23.899596319367618, + 22.15772784631847, 21.36807055727442, 0 + ] + ] + }, + "shape": [50, 7], + "uns": { + "_scvi_manager_uuid": "b1de4de5-c55a-4ae4-bca1-43da36dfeeeb", + "_scvi_uuid": "905e8908-2945-44e8-bb12-8c61680326d3", + "clusters_coarse_colors": [ + "#031A5C", + "#fa9fb5", + "#fdbf6f", + "#ff7f00", + "#b2df8a" + ], + "clusters_colors": [ + "#8fbc8f", + "#f4a460", + "#fdbf6f", + "#ff7f00", + "#b2df8a", + "#1f78b4", + "#cab2d6" + ], + "day_colors": ["#d62728"], + "leiden": { + "params": { + "n_iterations": -1, + "random_state": 0, + "resolution": 1 + } + }, + "log1p": {}, + "neighbors": { + "connectivities_key": "connectivities", + "distances_key": "distances", + "params": { + "method": "umap", + "metric": "euclidean", + "n_neighbors": 30, + "random_state": 0, + "use_rep": "X_pca" + } + }, + "pca": { + "params": { + "use_highly_variable": false, + "zero_center": true + }, + "variance": [ + 1.7479013993109715, 0.5594183136019781, 0.2509798852194473, + 0.1997510030445023, 0.1323890397528428, 0.11075153295041501 + ], + "variance_ratio": [ + 0.5673146150644114, 0.1815698444810418, 0.08146029119738069, + 0.06483298396900058, 0.04296937868219466, 0.03594651466514435 + ] + }, + "recover_dynamics": { + "fit_connected_states": true, + "use_raw": false + }, + "velocity_graph": [ + [ + 0, 0.22046132385730743, 0, 0.22046132385730743, 0, 0, 0, 0, 0, 0, 0, 0, + 0.450626403093338, 0, 0, 0.04093712940812111, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0.3453138470649719, 0.450626403093338, 0, 0, 0, 0, 0, + 0, 0.3453138470649719, 0.22046132385730743, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.14117367565631866, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2057769000530243, + 0.14117367565631866, 0, 0, 0, 0, 0, 0, 0.2057769000530243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + [ + 0.9473719000816345, 0.9478896856307983, 0, 0.9478896856307983, + 0.9401094317436218, 0.55253005027771, 0.7027125954627991, + 0.9611698985099792, 0, 0.9677510857582092, 0.9386511445045471, 0, + 0.9562760591506958, 0.9311007857322693, 0.9429868459701538, + 0.8775137662887573, 0.9621375799179077, 0, 0.9652383923530579, 0, + 0.9617140293121338, 0, 0.9621375799179077, 0.025671426206827164, + 0.23905545473098755, 0.06676451861858368, 0, 0.9401094317436218, + 0.9570096731185913, 0.905114471912384, 0.2133932113647461, + 0.9497542977333069, 0.9562760591506958, 0.9808235168457031, + 0.9562790393829346, 0, 0.9745998978614807, 0, 0.9512403011322021, + 0.9497542977333069, 0.9478896856307983, 0, 0.9621375799179077, + 0.9517706632614136, 0, 0.05286373198032379, 0.9747084975242615, + 0.03281308338046074, 0.10565642267465591, 0.9415416717529297 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.14117367565631866, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2057769000530243, + 0.14117367565631866, 0, 0, 0, 0, 0, 0, 0.2057769000530243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + [ + 0.8878284096717834, 0.8108709454536438, 0, 0.8108709454536438, 0, 0, 0, + 0, 0, 0, 0, 0, 0.952512800693512, 0, 0.8020811080932617, + 0.09297816455364227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8981965184211731, 0.018391815945506096, 0, 0.8432539105415344, + 0.952512800693512, 0, 0, 0, 0, 0, 0, 0.8432539105415344, + 0.8108709454536438, 0, 0, 0.6447211503982544, 0, 0, 0, 0, 0, 0 + ], + [ + 0.9646341800689697, 0.961211085319519, 0, 0.961211085319519, + 0.9666497707366943, 0, 0.1094990074634552, 0.9846523404121399, 0, + 0.9946197271347046, 0.9677785634994507, 0, 0.9736183285713196, + 0.9640065431594849, 0.9638437628746033, 0.8452783823013306, + 0.9201474189758301, 0, 0.9297657012939453, 0, 0.9633435010910034, 0, + 0.9201474189758301, 0, 0, 0, 0, 0.9666497707366943, 0.9789336919784546, + 0.8648539781570435, 0, 0.9639078378677368, 0.9736183285713196, + 0.9675067663192749, 0.940881609916687, 0, 0.9582109451293945, 0, + 0.982145369052887, 0.9639078378677368, 0.961211085319519, 0, + 0.9201474189758301, 0.9761537909507751, 0, 0, 0.9528877139091492, 0, 0, + 0.9764111042022705 + ], + [ + 0.9463514685630798, 0.9439656734466553, 0, 0.9439656734466553, + 0.9414880275726318, 0.11544811725616455, 0, 0.9818296432495117, 0, + 0.9800933599472046, 0.941167950630188, 0, 0.9572662115097046, + 0.9462907314300537, 0.9420565366744995, 0.8699474930763245, + 0.9862393736839294, 0, 0.9881100654602051, 0, 0.9872932434082031, 0, + 0.9862393736839294, 0, 0, 0, 0, 0.9414880275726318, 0.9600542783737183, + 0.9045330882072449, 0, 0.9466926455497742, 0.9572662115097046, + 0.9951223134994507, 0.9837529063224792, 0, 0.9947364926338196, 0, + 0.9629464745521545, 0.9466926455497742, 0.9439656734466553, 0, + 0.9862393736839294, 0.9550431370735168, 0, 0, 0.9917606711387634, 0, 0, + 0.9578285217285156 + ], + [ + 0.6878268122673035, 0.6746472120285034, 0, 0.6746472120285034, + 0.5407849550247192, 0, 0, 0, 0, 0.811570405960083, 0.4939804673194885, + 0, 0.7464512586593628, 0, 0.6132776737213135, 0.3012204170227051, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5407849550247192, 0.7342384457588196, + 0.24500800669193268, 0, 0.6878073215484619, 0.7464512586593628, 0, 0, 0, + 0, 0, 0.5899852514266968, 0.6878073215484619, 0.6746472120285034, 0, 0, + 0.6615322828292847, 0, 0, 0, 0, 0, 0 + ], + [ + 0.9334027767181396, 0.9357232451438904, 0.1172555685043335, + 0.9357232451438904, 0.9256162643432617, 0.5429917573928833, + 0.6504912972450256, 0.9441931843757629, 0, 0.9525487422943115, + 0.9236162900924683, 0, 0.9430536031723022, 0.9132289886474609, + 0.92960125207901, 0.8522192239761353, 0.9461503624916077, 0, + 0.9498468041419983, 0, 0.9445486068725586, 0, 0.9461503624916077, 0, + 0.2551182508468628, 0.09217452257871628, 0, 0.9256162643432617, + 0.9427808523178101, 0.8885181546211243, 0.3048710525035858, + 0.9374105334281921, 0.9430536031723022, 0.9663224816322327, + 0.9389983415603638, 0, 0.9582626223564148, 0, 0.9354557394981384, + 0.9374105334281921, 0.9357232451438904, 0, 0.9461503624916077, + 0.9375399947166443, 0, 0.040217503905296326, 0.9601296782493591, + 0.00022876086586620659, 0.25992316007614136, 0.923961877822876 + ], + [ + 0.48354795575141907, 0.4774066209793091, 0, 0.4774066209793091, + 0.07743129879236221, 0, 0, 0, 0, 0, 0, 0, 0.5902640223503113, 0, + 0.3123166263103485, 0.12415485829114914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.07743129879236221, 0.5397481322288513, 0.03769519552588463, 0, + 0.49803823232650757, 0.5902640223503113, 0, 0, 0, 0, 0, 0, + 0.49803823232650757, 0.4774066209793091, 0, 0, 0.30379247665405273, 0, + 0, 0, 0, 0, 0 + ], + [ + 0.8827467560768127, 0.8203068971633911, 0, 0.8203068971633911, + 0.8122700452804565, 0, 0, 0, 0, 0.06257428228855133, 0, 0, + 0.9441919326782227, 0, 0.8122710585594177, 0.11487824469804764, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0.8122700452804565, 0.9381545186042786, + 0.04190567880868912, 0, 0.846733033657074, 0.9441919326782227, 0, 0, 0, + 0, 0, 0, 0.846733033657074, 0.8203068971633911, 0, 0, + 0.8834158182144165, 0, 0, 0, 0, 0, 0 + ], + [ + 0.9351792335510254, 0.93697190284729, 0.2073274552822113, + 0.93697190284729, 0.9274756908416748, 0.5476046204566956, + 0.6437081694602966, 0.9492014050483704, 0.2202795296907425, + 0.9556781649589539, 0.9256619215011597, 0, 0.9447311162948608, + 0.9174737334251404, 0.9310952425003052, 0.8746903538703918, + 0.9570953845977783, 0.07548616826534271, 0.9601566195487976, + 0.02327699586749077, 0.9517809748649597, 0.19100739061832428, + 0.9570953845977783, 0.27635231614112854, 0.2897435128688812, + 0.3084721565246582, 0.19100739061832428, 0.9274756908416748, + 0.9448500275611877, 0.9089379906654358, 0.3216802179813385, + 0.9387204647064209, 0.9447311162948608, 0.9743483066558838, + 0.9479241371154785, 0.12254460155963898, 0.966482937335968, 0, + 0.9384366273880005, 0.9387204647064209, 0.93697190284729, + 0.14457936584949493, 0.9570953845977783, 0.9395990371704102, + 0.06080274656414986, 0.4545396566390991, 0.9693624973297119, + 0.2921827733516693, 0.33737316727638245, 0.9278176426887512 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0.825177013874054, 0.8048591017723083, 0, 0.8048591017723083, + 0.7471530437469482, 0, 0, 0.2447403073310852, 0, 0.7956845164299011, + 0.7261441946029663, 0, 0.8660773634910583, 0, 0.7770386338233948, + 0.3051496148109436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.7471530437469482, + 0.8587269186973572, 0.2549494206905365, 0, 0.8156805634498596, + 0.8660773634910583, 0.046289946883916855, 0, 0, 0, 0, + 0.8728205561637878, 0.8156805634498596, 0.8048591017723083, 0, 0, + 0.8344907760620117, 0, 0, 0, 0, 0, 0.20630542933940887 + ], + [ + 0.9169006943702698, 0.789244532585144, 0, 0.789244532585144, 0, 0, 0, 0, + 0, 0, 0, 0, 0.9223460555076599, 0, 0, 0.04651172086596489, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0.415664941072464, 0, 0, 0.846660315990448, + 0.9223460555076599, 0, 0, 0, 0, 0, 0, 0.846660315990448, + 0.789244532585144, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.5188425779342651, 0.5314738750457764, 0, 0.5314738750457764, + 0.3850511610507965, 0, 0, 0.09649436920881271, 0, 0.3446391224861145, + 0.3493833839893341, 0, 0.541537880897522, 0.07422615587711334, + 0.4557618498802185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.3850511610507965, 0.4912339746952057, 0, 0, 0.5339505076408386, + 0.541537880897522, 0, 0, 0, 0, 0, 0.2884923815727234, + 0.5339505076408386, 0.5314738750457764, 0, 0, 0.428748220205307, 0, 0, + 0, 0, 0, 0.09006018191576004 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0, 0.7642062902450562, + 0.7031867504119873, 0, 0, 0.783707857131958, 0, 0.8286955952644348, + 0.6864418983459473, 0, 0.8040765523910522, 0.5586217641830444, + 0.7329409718513489, 0.6091272830963135, 0, 0, 0.9750877022743225, 0, + 0.7425238490104675, 0, 0, 0, 0, 0, 0, 0.7031867504119873, + 0.7965674996376038, 0.6441854238510132, 0, 0.771715521812439, + 0.8040765523910522, 0.9360801577568054, 0.5036059617996216, 0, + 0.7744112610816956, 0, 0.7440190315246582, 0.771715521812439, + 0.7642062902450562, 0, 0, 0.7612676024436951, 0, 0, 0.972480058670044, + 0, 0, 0.6066010594367981 + ], + [ + 0.936473548412323, 0.9384321570396423, 0.2207586169242859, + 0.9384321570396423, 0.92906653881073, 0.5583094358444214, + 0.6540610790252686, 0.9497556090354919, 0.2280030995607376, + 0.9563538432121277, 0.9272958040237427, 0, 0.9458242654800415, + 0.9188054203987122, 0.9326005578041077, 0.8672069907188416, + 0.9566431641578674, 0, 0.9596006870269775, 0, 0.9520301222801208, + 0.2855951189994812, 0.9566431641578674, 0.20953616499900818, + 0.29753920435905457, 0.34055793285369873, 0.2855951189994812, + 0.92906653881073, 0.9459707736968994, 0.9017676711082458, + 0.34528598189353943, 0.9401209354400635, 0.9458242654800415, + 0.9736607670783997, 0.947994589805603, 0.10063133388757706, + 0.9663297533988953, 0, 0.9395089149475098, 0.9401209354400635, + 0.9384321570396423, 0.14157317578792572, 0.9566431641578674, + 0.9409245848655701, 0.031088562682271004, 0.4159625172615051, + 0.9685809016227722, 0.3108071982860565, 0.35651326179504395, + 0.9291922450065613 + ], + [ + 0.743730902671814, 0.7372573018074036, 0, 0.7372573018074036, + 0.666164755821228, 0, 0, 0.729931652545929, 0, 0.7996477484703064, + 0.6463336944580078, 0, 0.7796080708503723, 0.48179891705513, + 0.7012366056442261, 0.5804693102836609, 0, 0, 0, 0, 0.6059209108352661, + 0, 0, 0, 0, 0, 0, 0.666164755821228, 0.7698690891265869, + 0.6086183786392212, 0, 0.7452235817909241, 0.7796080708503723, + 0.9193915128707886, 0.05771923437714577, 0, 0.6429702043533325, 0, + 0.7029128074645996, 0.7452235817909241, 0.7372573018074036, 0, 0, + 0.7295289635658264, 0, 0, 0.9662341475486755, 0, 0, 0.5333138108253479 + ], + [ + 0.9328802824020386, 0.9350316524505615, 0.2319445013999939, + 0.9350316524505615, 0.9256858825683594, 0.5609022974967957, + 0.6623903512954712, 0.9465985894203186, 0.26889052987098694, + 0.9536309838294983, 0.9238928556442261, 0, 0.9424359798431396, + 0.9147626161575317, 0.929265022277832, 0.8602655529975891, + 0.9535108804702759, 0.03979620337486267, 0.9565345048904419, 0, + 0.9488857388496399, 0.20574550330638885, 0.9535108804702759, + 0.2874282896518707, 0.30357226729393005, 0.3697206974029541, + 0.20574550330638885, 0.9256858825683594, 0.9426992535591125, + 0.8967151045799255, 0.36751970648765564, 0.9367465972900391, + 0.9424359798431396, 0.971062958240509, 0.9445900917053223, + 0.15002943575382233, 0.9640179872512817, 0, 0.9361152052879333, + 0.9367465972900391, 0.9350316524505615, 0.19896233081817627, + 0.9535108804702759, 0.9375409483909607, 0.08484230935573578, + 0.5327345728874207, 0.9655148983001709, 0.3787201941013336, + 0.4100457727909088, 0.925638735294342 + ], + [ + 0.7434709668159485, 0.7342777848243713, 0, 0.7342777848243713, + 0.6543235182762146, 0, 0, 0.7862951159477234, 0, 0.8271054625511169, + 0.6304134130477905, 0, 0.7855446338653564, 0.38397884368896484, + 0.6947544813156128, 0.4649379253387451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.6543235182762146, 0.7773599028587341, 0.4569125771522522, 0, + 0.7438362240791321, 0.7855446338653564, 0.69515061378479, 0, 0, 0, 0, + 0.7094954252243042, 0.7438362240791321, 0.7342777848243713, 0, 0, + 0.7319198250770569, 0, 0, 0.39354366064071655, 0, 0, 0.4641243815422058 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0, 0.9556769728660583, 0, 0.9485813975334167, 0, + 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0, + 0.9629393219947815, 0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0, 0.7642062902450562, + 0.7031867504119873, 0, 0, 0.783707857131958, 0, 0.8286955952644348, + 0.6864418983459473, 0, 0.8040765523910522, 0.5586217641830444, + 0.7329409718513489, 0.6091272830963135, 0, 0, 0.9750877022743225, 0, + 0.7425238490104675, 0, 0, 0, 0, 0, 0, 0.7031867504119873, + 0.7965674996376038, 0.6441854238510132, 0, 0.771715521812439, + 0.8040765523910522, 0.9360801577568054, 0.5036059617996216, 0, + 0.7744112610816956, 0, 0.7440190315246582, 0.771715521812439, + 0.7642062902450562, 0, 0, 0.7612676024436951, 0, 0, 0.972480058670044, + 0, 0, 0.6066010594367981 + ], + [ + 0.9195862412452698, 0.9220841526985168, 0.13715824484825134, + 0.9220841526985168, 0.9106405973434448, 0.5163668990135193, + 0.5890920758247375, 0.9314747452735901, 0.09921257197856903, + 0.9407001733779907, 0.9083550572395325, 0, 0.930107593536377, + 0.8967242240905762, 0.9152022004127502, 0.8561992049217224, + 0.9366470575332642, 0, 0.940861165523529, 0, 0.9325706958770752, 0, + 0.9366470575332642, 0, 0.24157372117042542, 0.1206507608294487, 0, + 0.9106405973434448, 0.9297754764556885, 0.893466591835022, + 0.21303364634513855, 0.9239208698272705, 0.930107593536377, + 0.9596612453460693, 0.9270446300506592, 0, 0.9493283629417419, 0, + 0.9212765097618103, 0.9239208698272705, 0.9220841526985168, 0, + 0.9366470575332642, 0.9237295985221863, 0, 0.29278767108917236, + 0.9529325366020203, 0.06505927443504333, 0.19204182922840118, + 0.9081715941429138 + ], + [ + 0.9674855470657349, 0.9686222076416016, 0, 0.9686222076416016, + 0.9661521315574646, 0.6518474221229553, 0.8795127272605896, + 0.9798871278762817, 0, 0.9844141006469727, 0.9658060073852539, 0, + 0.97487473487854, 0.9634808897972107, 0.9667624831199646, + 0.8336988091468811, 0.9620339274406433, 0, 0.9647660255432129, 0, + 0.9753776788711548, 0, 0.9620339274406433, 0, 0, 0, 0, + 0.9661521315574646, 0.976043701171875, 0.8679069876670837, 0, + 0.9700765609741211, 0.97487473487854, 0.9753454923629761, + 0.9682275056838989, 0, 0.9739751219749451, 0, 0.975624144077301, + 0.9700765609741211, 0.9686222076416016, 0, 0.9620339274406433, + 0.973994791507721, 0, 0, 0.9703773856163025, 0, 0, 0.9717084169387817 + ], + [ + 0.934225857257843, 0.9352400898933411, 0.030317040160298347, + 0.9352400898933411, 0.9264477491378784, 0.5123326778411865, + 0.6623035669326782, 0.9520787000656128, 0, 0.9577811360359192, + 0.9248024821281433, 0, 0.9443178772926331, 0.918153703212738, + 0.9297283291816711, 0.879120945930481, 0.9612048864364624, 0, + 0.9640563130378723, 0, 0.9555220603942871, 0, 0.9612048864364624, 0, + 0.20572532713413239, 0, 0, 0.9264477491378784, 0.9449334740638733, + 0.9112521409988403, 0.23013901710510254, 0.9372375011444092, + 0.9443178772926331, 0.9781539440155029, 0.9517093896865845, 0, + 0.9711923599243164, 0, 0.9393836855888367, 0.9372375011444092, + 0.9352400898933411, 0, 0.9612048864364624, 0.9393155574798584, 0, + 0.005231114104390144, 0.9728637933731079, 0, 0.19197078049182892, + 0.929114580154419 + ], + [ + 0.9340850710868835, 0.9362809658050537, 0.21137091517448425, + 0.9362809658050537, 0.9266310930252075, 0.5575418472290039, + 0.651146411895752, 0.94670170545578, 0.21243803203105927, + 0.9538236260414124, 0.9247998595237732, 0, 0.9435486197471619, + 0.9156255722045898, 0.9302861094474792, 0.8591364622116089, + 0.9525703191757202, 0, 0.9556769728660583, 0, 0.9485813975334167, 0, + 0.9525703191757202, 0.13719649612903595, 0.2901017367839813, + 0.31736645102500916, 0, 0.9266310930252075, 0.9436177611351013, + 0.8944913744926453, 0.34244754910469055, 0.9379577040672302, + 0.9435486197471619, 0.9704182147979736, 0.9441695809364319, 0, + 0.9629393219947815, 0, 0.9368109107017517, 0.9379577040672302, + 0.9362809658050537, 0.08466950803995132, 0.9525703191757202, + 0.9385562539100647, 0, 0.3796748220920563, 0.9650062322616577, + 0.26211073994636536, 0.3477627635002136, 0.9262383580207825 + ], + [ + 0.8883063793182373, 0.8116819262504578, 0, 0.8116819262504578, 0, 0, 0, + 0, 0, 0, 0, 0, 0.9529995918273926, 0, 0.8028464317321777, + 0.09172669798135757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8983768224716187, 0.01723295822739601, 0, 0.8440255522727966, + 0.9529995918273926, 0, 0, 0, 0, 0, 0, 0.8440255522727966, + 0.8116819262504578, 0, 0, 0.6447504758834839, 0, 0, 0, 0, 0, 0 + ], + [ + 0.2747211754322052, 0.2936770021915436, 0, 0.2936770021915436, 0, 0, 0, + 0, 0, 0, 0, 0, 0.6517482399940491, 0, 0, 0.032184068113565445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.34475982189178467, + 0.6517482399940491, 0, 0, 0, 0, 0, 0, 0.34475982189178467, + 0.2936770021915436, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.5531019568443298, 0.5641404986381531, 0, 0.5641404986381531, + 0.4168100953102112, 0, 0, 0.1140608862042427, 0, 0.39043787121772766, + 0.3796830475330353, 0, 0.5798412561416626, 0.0826287716627121, + 0.4889662563800812, 0.18057607114315033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.4168100953102112, 0.5310302376747131, 0, 0, 0.5675522685050964, + 0.5798412561416626, 0, 0, 0, 0, 0, 0.32385241985321045, + 0.5675522685050964, 0.5641404986381531, 0, 0, 0.4662861227989197, 0, 0, + 0, 0, 0, 0.10050193965435028 + ], + [ + 0.9420479536056519, 0.9427720904350281, 0, 0.9427720904350281, + 0.9347240328788757, 0.5127102732658386, 0.687716007232666, + 0.9590884447097778, 0, 0.9646003246307373, 0.9331855773925781, 0, + 0.9516794085502625, 0.9269337058067322, 0.9377775192260742, + 0.8794031739234924, 0.9654127359390259, 0, 0.9682632684707642, 0, + 0.9616855382919312, 0, 0.9654127359390259, 0, 0.18039019405841827, 0, 0, + 0.9347240328788757, 0.9522895812988281, 0.9113820195198059, 0, + 0.9447222948074341, 0.9516794085502625, 0.9817621111869812, + 0.9575057625770569, 0, 0.9756044745445251, 0, 0.9473169445991516, + 0.9447222948074341, 0.9427720904350281, 0, 0.9654127359390259, + 0.9469399452209473, 0, 0, 0.9765735268592834, 0, 0, 0.9375110268592834 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13069970905780792, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13069970905780792, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0.5751016139984131, 0.5733153223991394, 0, 0.5733153223991394, + 0.42552366852760315, 0, 0, 0.11649440228939056, 0, 0.570351243019104, + 0.38224679231643677, 0, 0.6250942349433899, 0, 0.5016170740127563, + 0.35801514983177185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.42552366852760315, 0.5966134071350098, 0.3176433742046356, 0, + 0.5833065509796143, 0.6250942349433899, 0, 0, 0, 0, 0, + 0.38370266556739807, 0.5833065509796143, 0.5733153223991394, 0, 0, + 0.5161169171333313, 0, 0, 0, 0, 0, 0 + ], + [ + 0.7787143588066101, 0.7701713442802429, 0, 0.7701713442802429, + 0.7090018391609192, 0, 0, 0.8258630037307739, 0, 0.8449141383171082, + 0.6917063593864441, 0, 0.8138009309768677, 0.5586830973625183, + 0.7390192747116089, 0.55143141746521, 0, 0, 0, 0, 0.8434901833534241, 0, + 0, 0, 0, 0, 0, 0.7090018391609192, 0.8069137334823608, + 0.5675274133682251, 0, 0.7782487869262695, 0.8138009309768677, + 0.8440638780593872, 0, 0, 0.5092626810073853, 0, 0.7631323337554932, + 0.7782487869262695, 0.7701713442802429, 0, 0, 0.7720590829849243, 0, 0, + 0.8145000338554382, 0, 0, 0.6143969893455505 + ], + [ + 0.9376397132873535, 0.9394145607948303, 0.20784924924373627, + 0.9394145607948303, 0.9305175542831421, 0.5572127103805542, + 0.6681869029998779, 0.9522222280502319, 0.21259279549121857, + 0.9583749175071716, 0.9288394451141357, 0, 0.947019100189209, + 0.9209617972373962, 0.9338666796684265, 0.8692113757133484, + 0.9599745869636536, 0, 0.9627288579940796, 0, 0.9549523591995239, + 0.10538123548030853, 0.9599745869636536, 0.17021527886390686, + 0.29417285323143005, 0.3758244216442108, 0.10538123548030853, + 0.9305175542831421, 0.9473679065704346, 0.9040439128875732, + 0.35192927718162537, 0.9411460757255554, 0.947019100189209, + 0.9760757684707642, 0.951150119304657, 0, 0.969430685043335, 0, + 0.9413937926292419, 0.9411460757255554, 0.9394145607948303, + 0.12084345519542694, 0.9599745869636536, 0.9423250555992126, 0, + 0.3530804514884949, 0.9710901379585266, 0.3764790892601013, + 0.38387250900268555, 0.9314559102058411 + ], + [ + 0.7014084458351135, 0.695290744304657, 0, 0.695290744304657, + 0.6028080582618713, 0, 0, 0.6023911237716675, 0, 0.7662052512168884, + 0.5759142637252808, 0, 0.7429336905479431, 0.30479565262794495, + 0.6497153639793396, 0.47929027676582336, 0, 0, 0, 0, + 0.05563047155737877, 0, 0, 0, 0, 0, 0, 0.6028080582618713, + 0.7315650582313538, 0.4775010049343109, 0, 0.7045115232467651, + 0.7429336905479431, 0.970437228679657, 0, 0, 0, 0, 0.6229016780853271, + 0.7045115232467651, 0.695290744304657, 0, 0, 0.677351176738739, 0, 0, + 0.6063860654830933, 0, 0, 0.36758357286453247 + ], + [ + 0.9419844150543213, 0.9431969523429871, 0.19646787643432617, + 0.9431969523429871, 0.9346080422401428, 0.5488399863243103, + 0.6644535064697266, 0.9572911858558655, 0.20402289927005768, + 0.9626659750938416, 0.9329860806465149, 0.045756012201309204, + 0.9511786699295044, 0.9262731671333313, 0.9378437995910645, + 0.8865021467208862, 0.9662277102470398, 0.08664795756340027, + 0.9688546061515808, 0.049190230667591095, 0.9604259133338928, + 0.17472335696220398, 0.9662277102470398, 0.2159879356622696, + 0.29122820496559143, 0.3560408651828766, 0.17472335696220398, + 0.9346080422401428, 0.9515462517738342, 0.9190202951431274, + 0.3313352167606354, 0.9449687004089355, 0.9511786699295044, + 0.9813721179962158, 0.9571552872657776, 0.25822892785072327, + 0.9745647311210632, 0, 0.9460163116455078, 0.9449687004089355, + 0.9431969523429871, 0.1397450864315033, 0.9662277102470398, + 0.9464099407196045, 0.07705214619636536, 0.3572593331336975, + 0.9769449234008789, 0.3615134358406067, 0.3594312369823456, + 0.9362280368804932 + ], + [ + 0.695499062538147, 0.6682927012443542, 0, 0.6682927012443542, + 0.4222148060798645, 0, 0, 0, 0, 0.468534380197525, 0.2862415313720703, + 0, 0.7860586047172546, 0, 0.5762909054756165, 0.167990580201149, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4222148060798645, 0.7809551954269409, + 0.09161896258592606, 0, 0.6892356276512146, 0.7860586047172546, 0, 0, 0, + 0, 0, 0, 0.6892356276512146, 0.6682927012443542, 0, 0, + 0.6810435056686401, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13069970905780792, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13069970905780792, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.14117367565631866, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2057769000530243, + 0.14117367565631866, 0, 0, 0, 0, 0, 0, 0.2057769000530243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + [ + 0.937499463558197, 0.9396012425422668, 0.19444650411605835, + 0.9396012425422668, 0.9303405284881592, 0.5595709085464478, + 0.6769520044326782, 0.9498411417007446, 0.3085106313228607, + 0.9570466876029968, 0.9285362362861633, 0, 0.9468313455581665, + 0.9193881154060364, 0.9339384436607361, 0.8590915203094482, + 0.9542338848114014, 0, 0.9573796391487122, 0, 0.9512461423873901, 0, + 0.9542338848114014, 0.07962363958358765, 0.29162508249282837, + 0.34525856375694275, 0, 0.9303405284881592, 0.9468585252761841, + 0.8953604698181152, 0.40690043568611145, 0.9412654638290405, + 0.9468313455581665, 0.9718629121780396, 0.9465429186820984, 0, + 0.9650187492370605, 0, 0.9403872489929199, 0.9412654638290405, + 0.9396012425422668, 0, 0.9542338848114014, 0.9418666362762451, 0, + 0.26297900080680847, 0.9663037061691284, 0.26931843161582947, + 0.5429947972297668, 0.9299060106277466 + ], + [ + 0.7708969116210938, 0.7642062902450562, 0, 0.7642062902450562, + 0.7031867504119873, 0, 0, 0.783707857131958, 0, 0.8286955952644348, + 0.6864418983459473, 0, 0.8040765523910522, 0.5586217641830444, + 0.7329409718513489, 0.6091272830963135, 0, 0, 0.9750877022743225, 0, + 0.7425238490104675, 0, 0, 0, 0, 0, 0, 0.7031867504119873, + 0.7965674996376038, 0.6441854238510132, 0, 0.771715521812439, + 0.8040765523910522, 0.9360801577568054, 0.5036059617996216, 0, + 0.7744112610816956, 0, 0.7440190315246582, 0.771715521812439, + 0.7642062902450562, 0, 0, 0.7612676024436951, 0, 0, 0.972480058670044, + 0, 0, 0.6066010594367981 + ], + [ + 0.6413818001747131, 0.5942000150680542, 0, 0.5942000150680542, 0, 0, 0, + 0, 0, 0, 0, 0, 0.8526681065559387, 0, 0.26973628997802734, + 0.07907950133085251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8907350301742554, 0.0015237635234370828, 0, 0.6394904255867004, + 0.8526681065559387, 0, 0, 0, 0, 0, 0, 0.6394904255867004, + 0.5942000150680542, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.9363422393798828, 0.9382712244987488, 0.22636201977729797, + 0.9382712244987488, 0.929071307182312, 0.5602494478225708, + 0.6676446199417114, 0.9498655200004578, 0.2629334032535553, + 0.9566150307655334, 0.9273208975791931, 0, 0.9457273483276367, + 0.9186585545539856, 0.9325653910636902, 0.86510169506073, + 0.956407904624939, 0, 0.9593522548675537, 0, 0.9520565271377563, + 0.25211653113365173, 0.956407904624939, 0.20303015410900116, + 0.299277663230896, 0.4186997711658478, 0.25211653113365173, + 0.929071307182312, 0.9459659457206726, 0.899989664554596, + 0.38501429557800293, 0.9399810433387756, 0.9457273483276367, + 0.9735718965530396, 0.9478381276130676, 0.09343190491199493, + 0.9666268825531006, 0, 0.9395412802696228, 0.9399810433387756, + 0.9382712244987488, 0.1826792061328888, 0.956407904624939, + 0.9408669471740723, 0, 0.44101381301879883, 0.968217670917511, + 0.4180064797401428, 0.4314064085483551, 0.9292559027671814 + ], + [ + 0.9206163287162781, 0.9226289391517639, 0.07096190005540848, + 0.9226289391517639, 0.9111737012863159, 0.49438178539276123, + 0.577799379825592, 0.9338856935501099, 0, 0.9424391388893127, + 0.9089133739471436, 0, 0.9313528537750244, 0.8985327482223511, + 0.9156853556632996, 0.8678088188171387, 0.9402933716773987, 0, + 0.944468080997467, 0, 0.9355234503746033, 0, 0.9402933716773987, 0, + 0.20393262803554535, 0.030735453590750694, 0, 0.9111737012863159, + 0.9310257434844971, 0.9023955464363098, 0.1524622142314911, + 0.9245709180831909, 0.9313528537750244, 0.9629756212234497, + 0.9303849339485168, 0, 0.9521950483322144, 0, 0.9228761792182922, + 0.9245709180831909, 0.9226289391517639, 0, 0.9402933716773987, + 0.924801230430603, 0, 0, 0.9566265940666199, 0, 0.11186230927705765, + 0.9097580313682556 + ], + [ + 0.6453346014022827, 0.6412734389305115, 0, 0.6412734389305115, + 0.5264101028442383, 0, 0, 0.41887542605400085, 0, 0.6720107793807983, + 0.49316897988319397, 0, 0.6899288892745972, 0.16491016745567322, + 0.5847526788711548, 0.4520247280597687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5264101028442383, 0.6693958640098572, 0.4429776966571808, 0, + 0.6504871249198914, 0.6899288892745972, 0.7844980955123901, 0, 0, 0, 0, + 0.5258768200874329, 0.6504871249198914, 0.6412734389305115, 0, 0, + 0.6071641445159912, 0, 0, 0, 0, 0, 0.21476638317108154 + ], + [ + 0.9340403079986572, 0.9351713061332703, 0.0795176550745964, + 0.9351713061332703, 0.9262621402740479, 0.5175647735595703, + 0.658846914768219, 0.9513806104660034, 0.006364813540130854, + 0.9573151469230652, 0.924568772315979, 0, 0.9440710544586182, + 0.9174661636352539, 0.9296397566795349, 0.8794582486152649, + 0.9606009125709534, 0, 0.9635049104690552, 0, 0.9547326564788818, 0, + 0.9606009125709534, 0, 0.22523219883441925, 0.22048857808113098, 0, + 0.9262621402740479, 0.9446225166320801, 0.9124925136566162, + 0.251814067363739, 0.9371387362480164, 0.9440710544586182, + 0.9776821732521057, 0.9509009122848511, 0, 0.9706209897994995, 0, + 0.9388790130615234, 0.9371387362480164, 0.9351713061332703, 0, + 0.9606009125709534, 0.9389740228652954, 0, 0.07143048197031021, + 0.972345769405365, 0, 0.30094215273857117, 0.9284132122993469 + ], + [ + 0.9320887923240662, 0.9333378076553345, 0, 0.9333378076553345, + 0.9241817593574524, 0.5038345456123352, 0.6547480225563049, + 0.949235737323761, 0, 0.9555336833000183, 0.9224198460578918, 0, + 0.9423805475234985, 0.9151056408882141, 0.9276909828186035, + 0.8738383650779724, 0.9571296572685242, 0, 0.9603064656257629, 0, + 0.9521613121032715, 0, 0.9571296572685242, 0, 0.1881193071603775, 0, 0, + 0.9241817593574524, 0.9427818059921265, 0.9076824188232422, + 0.1448112577199936, 0.9353305697441101, 0.9423805475234985, + 0.9751202464103699, 0.9479191303253174, 0, 0.9676988124847412, 0, + 0.9369789361953735, 0.9353305697441101, 0.9333378076553345, 0, + 0.9571296572685242, 0.9370989203453064, 0, 0, 0.9695542454719543, 0, 0, + 0.9261722564697266 + ], + [ + 0.8156828284263611, 0.7950649261474609, 0, 0.7950649261474609, + 0.73224276304245, 0, 0, 0.23638135194778442, 0, 0.8773982524871826, + 0.709170401096344, 0, 0.8637153506278992, 0, 0.7650731205940247, + 0.29499053955078125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.73224276304245, + 0.865231454372406, 0.24345846474170685, 0, 0.8075575232505798, + 0.8637153506278992, 0.017279380932450294, 0, 0, 0, 0, + 0.9138534665107727, 0.8075575232505798, 0.7950649261474609, 0, 0, + 0.8345074653625488, 0, 0, 0, 0, 0, 0 + ] + ], + "velocity_graph_neg": [ + [ + 0, 0, -0.7120062112808228, 0, -0.8277276158332825, -0.898493230342865, + -0.7567191123962402, -0.5180003643035889, -0.6580418348312378, + -0.3673422634601593, -0.8121242523193359, -0.6286078095436096, 0, + -0.6898333430290222, -0.8820143938064575, 0, -0.5298582315444946, + -0.6359027028083801, -0.509711503982544, -0.634975790977478, + -0.5376363396644592, -0.6401374340057373, -0.5298582315444946, + -0.6149713397026062, -0.8061617612838745, -0.6687042117118835, + -0.6401374340057373, -0.8277276158332825, -0.2262919843196869, + -0.03380454331636429, -0.6888725161552429, 0, 0, -0.3684532642364502, + -0.5563299059867859, -0.6423702836036682, -0.4768065810203552, + -0.6381706595420837, -0.5825198292732239, 0, 0, -0.6520509123802185, + -0.5298582315444946, -0.5840763449668884, -0.6433370113372803, + -0.6271675229072571, -0.42436861991882324, -0.6576603055000305, + -0.6680506467819214, -0.6693334579467773 + ], + [ + -0.23834073543548584, 0, -0.7372550368309021, 0, -0.7664793133735657, + -0.9120775461196899, -0.7760564088821411, -0.5390255451202393, 0, + -0.40304696559906006, -0.765783429145813, -0.6551263332366943, 0, + -0.68967205286026, -0.7655104398727417, -0.004438602365553379, + -0.5554239749908447, -0.6622011065483093, -0.5365957021713257, + -0.6615182161331177, -0.5607114434242249, -0.6665970683097839, + -0.5554239749908447, -0.6432245373725891, -0.8243244886398315, + -0.6939780712127686, 0, -0.7664793133735657, -0.28802061080932617, + -0.08039788901805878, -0.7142382264137268, 0, 0, -0.40610337257385254, + -0.5785663723945618, 0, -0.5067818760871887, 0, -0.5864721536636353, 0, + 0, 0, -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, -0.016940603032708168, 0, 0, + -0.03389278054237366, 0, 0, 0, 0, 0, -0.04325872287154198, 0, + -0.04747111350297928, 0, -0.036836929619312286, 0, 0, 0, 0, + -0.036836929619312286, 0, 0, 0, 0, 0, 0, 0, 0, -0.037104588001966476, 0, + -0.04293520748615265, 0, 0, 0, -0.05816514790058136, 0, 0, + -0.06126631051301956, 0, 0, 0, 0, 0 + ], + [ + -0.23834073543548584, 0, -0.7372550368309021, 0, -0.7664793133735657, + -0.9120775461196899, -0.7760564088821411, -0.5390255451202393, 0, + -0.40304696559906006, -0.765783429145813, -0.6551263332366943, 0, + -0.68967205286026, -0.7655104398727417, -0.004438602365553379, + -0.5554239749908447, -0.6622011065483093, -0.5365957021713257, + -0.6615182161331177, -0.5607114434242249, -0.6665970683097839, + -0.5554239749908447, -0.6432245373725891, -0.8243244886398315, + -0.6939780712127686, 0, -0.7664793133735657, -0.28802061080932617, + -0.08039788901805878, -0.7142382264137268, 0, 0, -0.40610337257385254, + -0.5785663723945618, 0, -0.5067818760871887, 0, -0.5864721536636353, 0, + 0, 0, -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0, 0, -0.7790889739990234, 0, 0, -0.9505990147590637, + -0.8218083381652832, -0.45774391293525696, -0.7262772917747498, + -0.07310163229703903, -0.8020796179771423, -0.6945830583572388, 0, + -0.6743336915969849, 0, 0, -0.5439357161521912, -0.7018686532974243, + -0.5163518190383911, -0.701633632183075, -0.5312055945396423, + -0.7063853144645691, -0.5439357161521912, -0.6821277737617493, + -0.8697605133056641, -0.7356099486351013, -0.7063853144645691, 0, 0, 0, + -0.7564207315444946, 0, 0, -0.3194757103919983, -0.5653488039970398, + -0.7085943222045898, -0.4695509076118469, -0.7040919065475464, + -0.392999529838562, 0, 0, 0, -0.5439357161521912, 0, + -0.7099944949150085, -0.6941519379615784, -0.39803364872932434, + -0.7247233390808105, -0.7357996106147766, -0.6551039218902588 + ], + [ + 0, 0, -0.25773361325263977, 0, 0, 0, 0, 0, -0.15642055869102478, 0, 0, + -0.10790649056434631, 0, 0, 0, 0, 0, -0.11982513219118118, 0, + -0.11992843449115753, 0, -0.12552791833877563, 0, -0.08309639990329742, + -0.39898252487182617, -0.15044663846492767, -0.12552791833877563, 0, 0, + 0, -0.18084149062633514, 0, 0, 0, 0, -0.1259797215461731, 0, + -0.1203366369009018, 0, 0, 0, -0.14946578443050385, 0, 0, + -0.1342347264289856, -0.09377450495958328, 0, -0.13679127395153046, + -0.1473536491394043, 0 + ], + [ + 0, 0, -0.6457950472831726, 0, 0, 0, 0, 0, -0.5308655500411987, 0, 0, + -0.46221935749053955, 0, 0, 0, 0, 0, -0.47845908999443054, 0, + -0.4866603910923004, 0, -0.48562079668045044, 0, -0.4160946011543274, + -0.9214332699775696, -0.5599440932273865, -0.48562079668045044, 0, 0, 0, + -0.6072580218315125, 0, 0, 0, 0, -0.5000309944152832, 0, + -0.49161800742149353, 0, 0, 0, -0.5337187647819519, 0, 0, + -0.5065746307373047, -0.43407684564590454, 0, -0.5368285775184631, + -0.5576698184013367, 0 + ], + [ + 0, 0, -0.8902036547660828, 0, 0, -0.9844622015953064, + -0.9415452480316162, 0, 0, 0, 0, -0.809356153011322, 0, + -0.25493502616882324, 0, 0, -0.7107474207878113, -0.8168039917945862, + -0.6646102070808411, -0.816710352897644, -0.7487311959266663, + -0.8214905261993408, -0.7107474207878113, -0.7964531183242798, + -0.9662666320800781, -0.8521594405174255, 0, 0, 0, 0, + -0.8721877336502075, 0, 0, -0.10103996843099594, -0.7706180214881897, 0, + -0.5563679337501526, 0, 0, 0, 0, 0, -0.7107474207878113, 0, + -0.8251966238021851, -0.8093149065971375, -0.3745379149913788, + -0.8411516547203064, -0.852289617061615, -0.24696169793605804 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.17498430609703064, 0, 0, 0, 0, 0, + -0.18377886712551117, 0, -0.2093697041273117, 0, -0.16968601942062378, + 0, -0.04626503959298134, 0, 0, -0.16968601942062378, 0, 0, 0, 0, 0, 0, + 0, 0, -0.17362122237682343, 0, -0.1840653270483017, 0, 0, 0, + -0.29040318727493286, 0, 0, -0.22847941517829895, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.8438978791236877, 0, 0, -0.9898490309715271, + -0.8941580057144165, -0.7655117511749268, -0.7913439273834229, 0, + -0.07512039691209793, -0.7589762806892395, 0, -0.799176812171936, 0, 0, + -0.702855110168457, -0.7665252089500427, -0.6798433661460876, + -0.7661380171775818, -0.7383368015289307, -0.7712615132331848, + -0.702855110168457, -0.7465370893478394, -0.9260478019714355, + -0.8017615079879761, -0.7712615132331848, 0, 0, 0, -0.8227463364601135, + 0, 0, -0.4759712815284729, -0.740666925907135, -0.7734407782554626, + -0.6569809913635254, -0.7686947584152222, -0.4876389503479004, 0, 0, + -0.7848285436630249, -0.702855110168457, 0, -0.774767279624939, + -0.7593095302581787, -0.5625927448272705, -0.7905178666114807, + -0.8019222021102905, -0.8746048808097839 + ], + [ + 0, 0, -0.7886513471603394, 0, 0, -0.9574145078659058, + -0.8321628570556641, -0.42440176010131836, 0, 0, 0, -0.7041367888450623, + 0, -0.6637837290763855, 0, 0, -0.5393110513687134, -0.7114424109458923, + -0.5090306997299194, -0.7112796902656555, -0.5197838544845581, + -0.7159545421600342, -0.5393110513687134, -0.6915066838264465, + -0.8797454237937927, -0.7454434037208557, 0, 0, 0, 0, + -0.7662324905395508, 0, 0, -0.2913602590560913, -0.5598525404930115, 0, + -0.45610764622688293, 0, -0.2718837857246399, 0, 0, 0, + -0.5393110513687134, 0, -0.7196633815765381, -0.7035689353942871, + -0.37873131036758423, -0.7345417141914368, -0.7456100583076477, + -0.6429240107536316 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.043637510389089584, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0, 0, -0.8493537306785583, 0, 0, -0.9675696492195129, -0.8997762799263, + 0, -0.7994657754898071, 0, 0, -0.768632709980011, 0, 0, 0, 0, + -0.48608702421188354, -0.7758843898773193, -0.42139869928359985, + -0.7760102152824402, -0.3527677655220032, -0.7803206443786621, + -0.48608702421188354, -0.754727303981781, -0.940492570400238, + -0.8106327056884766, -0.7803206443786621, 0, 0, 0, -0.8305867314338684, + 0, 0, 0, -0.4990590512752533, -0.7833253145217896, -0.26933911442756653, + -0.778824508190155, 0, 0, 0, 0, -0.48608702421188354, 0, + -0.7842989563941956, -0.7671602368354797, -0.137251615524292, + -0.7997639179229736, -0.8106374144554138, 0 + ], + [ + 0, 0, -0.7590404152870178, 0, -0.7814381718635559, -0.9338588118553162, + -0.800162136554718, -0.5049009323120117, 0, -0.27367153763771057, + -0.7814376950263977, -0.6753172874450684, 0, -0.6841118335723877, 0, 0, + -0.5501546859741211, -0.6825063824653625, -0.5272192358970642, + -0.6821213364601135, -0.5475922226905823, -0.686984658241272, + -0.5501546859741211, -0.6631956100463867, -0.8485480546951294, + -0.7154874205589294, 0, -0.7814381718635559, 0, -0.02974291518330574, + -0.7361434698104858, 0, 0, -0.36624231934547424, -0.5725536346435547, 0, + -0.49019038677215576, 0, -0.5211049914360046, 0, 0, 0, + -0.5501546859741211, -0.27827009558677673, -0.6903709173202515, + -0.6750733852386475, -0.42963674664497375, -0.7047054171562195, + -0.7156864404678345, -0.6668528914451599 + ], + [ + 0, 0, -0.8363222479820251, 0, 0, -0.557326078414917, + -0.7607558965682983, 0, -0.8776840567588806, 0, 0, -0.9182469844818115, + 0, 0, 0, 0, -0.3532048463821411, -0.9129555225372314, + -0.30382201075553894, -0.9130634069442749, -0.14029088616371155, + -0.9067401885986328, -0.3532048463821411, -0.9095264673233032, + -0.7763333320617676, -0.8877249956130981, -0.9067401885986328, 0, 0, + -0.14219175279140472, -0.8624013066291809, 0, 0, -0.0062652104534208775, + -0.26513558626174927, -0.9115805625915527, -0.1740998476743698, + -0.9174321293830872, 0, 0, 0, -0.8928236365318298, -0.3532048463821411, + 0, -0.9069894552230835, -0.9019953608512878, -0.12601397931575775, + -0.8965531587600708, -0.8806710243225098, 0 + ], + [ + 0, 0, -0.9518633484840393, 0, 0, -0.8637669086456299, + -0.9882077574729919, 0, -0.9159206748008728, 0, 0, -0.8897854089736938, + 0, 0, 0, 0, 0, -0.896591305732727, 0, -0.8968219757080078, 0, + -0.9007447361946106, 0, -0.8758711814880371, -0.9920739531517029, + -0.929534375667572, -0.9007447361946106, 0, 0, 0, -0.944490909576416, 0, + 0, 0, 0, -0.9040683507919312, 0, -0.899667501449585, 0, 0, 0, + -0.9127002954483032, 0, 0, -0.9044694304466248, -0.8885601162910461, 0, + -0.9199093580245972, -0.9289295077323914, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0781395435333252, 0, 0, 0, 0, 0, 0, + 0, -0.03857885301113129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.09916036576032639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.950827419757843, 0, 0, -0.8844595551490784, + -0.9880902171134949, 0, -0.9135931730270386, 0, 0, -0.8865734934806824, + 0, 0, 0, 0, -0.9721415042877197, -0.8934438228607178, 0, + -0.8935670852661133, 0, -0.8977303504943848, -0.9721415042877197, + -0.8732306957244873, -0.9931602478027344, -0.9264294505119324, + -0.8977303504943848, 0, 0, 0, -0.9420908689498901, 0, 0, 0, 0, + -0.9007306694984436, 0, -0.8962255120277405, 0, 0, 0, + -0.9097959399223328, -0.9721415042877197, 0, -0.9012959003448486, + -0.8859502673149109, 0, -0.9166562557220459, -0.9260559678077698, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.03229356184601784, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.07127412408590317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.9229600429534912, 0, 0, -0.942672610282898, + -0.9728675484657288, 0, 0, 0, 0, -0.8491672873497009, 0, 0, 0, 0, + -0.7070371508598328, -0.8563997745513916, -0.5791441798210144, + -0.8564795851707458, 0, -0.8608670234680176, -0.7070371508598328, + -0.835432767868042, -0.9876035451889038, -0.8912897706031799, 0, 0, 0, + 0, -0.9094429016113281, 0, 0, 0, -0.828541100025177, 0, + -0.05006162449717522, 0, 0, 0, 0, 0, -0.7070371508598328, 0, + -0.8646791577339172, -0.8483649492263794, 0, -0.8807095289230347, + -0.8910755515098572, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.19396281242370605, 0, 0, 0, 0, 0, + -0.2860347628593445, 0, -0.19856363534927368, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -0.10562552511692047, 0, -0.1967938095331192, 0, 0, 0, + 0, 0, 0, -0.2504103183746338, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.9518633484840393, 0, 0, -0.8637669086456299, + -0.9882077574729919, 0, -0.9159206748008728, 0, 0, -0.8897854089736938, + 0, 0, 0, 0, 0, -0.896591305732727, 0, -0.8968219757080078, 0, + -0.9007447361946106, 0, -0.8758711814880371, -0.9920739531517029, + -0.929534375667572, -0.9007447361946106, 0, 0, 0, -0.944490909576416, 0, + 0, 0, 0, -0.9040683507919312, 0, -0.899667501449585, 0, 0, 0, + -0.9127002954483032, 0, 0, -0.9044694304466248, -0.8885601162910461, 0, + -0.9199093580245972, -0.9289295077323914, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.28360113501548767, 0, 0, 0, 0, 0, + -0.21476562321186066, 0, -0.29119864106178284, 0, -0.1389153152704239, + 0, 0, 0, 0, -0.1389153152704239, 0, 0, 0, 0, 0, 0, 0, 0, + -0.17119431495666504, 0, -0.22758157551288605, 0, 0, 0, + -0.055734507739543915, 0, 0, -0.2006107121706009, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.16862812638282776, 0, 0, 0, 0, 0, -0.12566640973091125, 0, 0, + -0.12127087265253067, 0, 0, 0, 0, 0, -0.1282396763563156, 0, + -0.13290779292583466, 0, -0.12560081481933594, 0, -0.0793524906039238, + 0, -0.11729738861322403, -0.12560081481933594, 0, 0, 0, + -0.10490868985652924, 0, 0, 0, 0, -0.1340409368276596, 0, + -0.13616321980953217, 0, 0, 0, -0.1445472240447998, 0, 0, + -0.1419268101453781, -0.07443458586931229, 0, -0.1196354404091835, + -0.10205377638339996, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, -0.08054797351360321, 0, 0, + -0.22542719542980194, 0, 0, 0, 0, 0, -0.25834473967552185, 0, + -0.2817099690437317, 0, -0.24374207854270935, 0, -0.05111048370599747, + 0, 0, -0.24374207854270935, 0, 0, 0, 0, 0, 0, 0, 0, + -0.29975220561027527, 0, -0.2931966781616211, 0, 0, 0, + -0.3110036551952362, 0, 0, -0.3499772250652313, 0, 0, + -0.20354889333248138, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.19396281242370605, 0, 0, 0, 0, 0, + -0.2860347628593445, 0, -0.19856363534927368, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -0.10562552511692047, 0, -0.1967938095331192, 0, 0, 0, + 0, 0, 0, -0.2504103183746338, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.779607892036438, 0, 0, -0.9507688283920288, + -0.8223935961723328, -0.4585617184638977, -0.7268966436386108, + -0.07375258207321167, -0.8028449416160583, 0, 0, -0.6751484274864197, 0, + 0, -0.5447427034378052, -0.7025991678237915, -0.5171564221382141, + -0.7023652791976929, -0.5320048928260803, 0, -0.5447427034378052, + -0.6828439235687256, -0.8702430725097656, -0.7362881302833557, 0, 0, 0, + 0, -0.7570262551307678, 0, 0, -0.32023727893829346, -0.5661568641662598, + -0.7093267440795898, -0.4703267216682434, -0.7048444151878357, + -0.3938210904598236, 0, 0, 0, -0.5447427034378052, 0, + -0.7107083201408386, -0.6948462128639221, -0.3988291323184967, + -0.7254249453544617, -0.7364533543586731, -0.6558814644813538 + ], + [ + 0, 0, -0.766142725944519, 0, -0.9137195348739624, -0.9420938491821289, + -0.8123217821121216, -0.6140885353088379, -0.7126984000205994, + -0.4720381498336792, -0.9392663836479187, -0.6822353601455688, 0, + -0.7770127654075623, -0.44626539945602417, 0, -0.6028193235397339, + -0.6895961165428162, -0.5829227566719055, -0.6888211369514465, + -0.6193459033966064, -0.6940135359764099, -0.6028193235397339, + -0.6692458391189575, -0.8554888367652893, -0.7230241298675537, + -0.6940135359764099, -0.9137195348739624, 0, -0.04988044500350952, + -0.7434952259063721, 0, 0, -0.436565637588501, -0.6325860619544983, + -0.6961170434951782, -0.5545942187309265, -0.6917248964309692, + -0.7225387096405029, 0, 0, -0.7064266800880432, -0.6028193235397339, + -0.8853359818458557, -0.6972513198852539, -0.681575357913971, + -0.49488067626953125, -0.7119417786598206, -0.7226921916007996, + -0.7728641629219055 + ], + [ + 0, 0, -0.8904911279678345, 0, 0, -0.6200758218765259, + -0.8303289413452148, 0, -0.9275062084197998, 0, 0, -0.9574045538902283, + 0, 0, 0, 0, -0.4335181415081024, -0.9529858827590942, + -0.3755953311920166, -0.9542689323425293, -0.17169077694416046, + -0.948471188545227, -0.4335181415081024, -0.951733410358429, + -0.8385818600654602, -0.9354369640350342, -0.948471188545227, 0, 0, 0, + -0.9154114127159119, 0, 0, -0.0037625611294060946, -0.3242562413215637, + -0.9529353976249695, -0.2144426852464676, -0.9570935964584351, 0, 0, 0, + -0.939483106136322, -0.4335181415081024, 0, -0.9491598606109619, + -0.9461429119110107, -0.15509870648384094, -0.9426960349082947, + -0.9311001896858215, 0 + ], + [ + 0, 0, -0.17718777060508728, 0, 0, 0, 0, 0, -0.2566702365875244, 0, 0, + -0.19781999289989471, 0, 0, 0, 0, 0, -0.22233960032463074, 0, + -0.23348161578178406, 0, -0.22508205473423004, 0, -0.09667447209358215, + 0, -0.18350408971309662, -0.22508205473423004, 0, 0, 0, 0, 0, 0, 0, 0, + -0.23277883231639862, 0, -0.2266206294298172, 0, 0, 0, + -0.3173876702785492, 0, 0, -0.2733706831932068, -0.0760316401720047, 0, + -0.18603943288326263, -0.10582669824361801, 0 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0, 0, + -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.41342851519584656, -0.14690133929252625, -0.7563605904579163, + -0.14690133929252625, -0.9337965846061707, -0.9296833276748657, + -0.7991959452629089, -0.6173140406608582, -0.7041651606559753, + -0.5160203576087952, -0.91448974609375, -0.6738287806510925, 0, + -0.767397403717041, -0.9277330636978149, -0.01084802858531475, + -0.6025752425193787, -0.681013286113739, -0.5851115584373474, + -0.6802176833152771, -0.6192402839660645, -0.6854434013366699, + -0.6025752425193787, -0.6616613268852234, -0.8429953455924988, + -0.7133806347846985, -0.6854434013366699, -0.9337965846061707, + -0.642909049987793, -0.09319157898426056, -0.7337019443511963, + -0.13089041411876678, 0, -0.45900464057922363, -0.6306887865066528, + -0.6872028112411499, -0.5594781637191772, -0.6828091740608215, + -0.7136110663414001, -0.13089041411876678, -0.14690133929252625, + -0.6976213455200195, -0.6025752425193787, -0.8312142491340637, + -0.6884456872940063, -0.6736862659454346, -0.5087637305259705, + -0.7025406360626221, -0.7133069038391113, -0.7568762302398682 + ], + [ + 0, 0, -0.946200966835022, 0, 0, -0.9536651372909546, + -0.9815068244934082, 0, -0.9046499729156494, 0, 0, -0.876510739326477, + 0, -0.04644086956977844, 0, 0, -0.9209373593330383, -0.8835890889167786, + -0.9074634313583374, -0.8829982280731201, -0.709896445274353, + -0.8880400657653809, -0.9209373593330383, -0.8647555112838745, + -0.98978590965271, -0.9155617952346802, -0.8880400657653809, 0, 0, 0, + -0.9325156211853027, 0, 0, 0, -0.8544745445251465, -0.8899013996124268, + -0.9691345691680908, -0.8853315711021423, 0, 0, 0, -0.8995015621185303, + -0.9209373593330383, 0, -0.8909935355186462, -0.8772528767585754, + -0.777913510799408, -0.9055085182189941, -0.9152224659919739, + -0.012976855039596558 + ], + [ + 0, 0, -0.9337804913520813, 0, 0, -0.9038553237915039, + -0.9798886775970459, 0, 0, 0, 0, -0.8647330403327942, 0, 0, 0, 0, + -0.4909673035144806, -0.8717935681343079, -0.059610139578580856, + -0.8720062971115112, 0, -0.8761419057846069, -0.4909673035144806, + -0.8506245017051697, -0.9911125302314758, -0.9060645699501038, 0, 0, 0, + 0, -0.923003077507019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4909673035144806, 0, -0.8799822330474854, -0.8635164499282837, 0, + -0.8958193063735962, -0.9057195782661438, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11542823165655136, 0, 0, 0, 0, 0, + -0.0931195393204689, 0, -0.14593791961669922, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -0.27822044491767883, 0, 0, 0, 0, 0, 0, + -0.08928326517343521, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.9477829933166504, 0, 0, -0.9290879368782043, + -0.9872416257858276, 0, 0, 0, 0, -0.8763316869735718, 0, 0, 0, 0, + -0.7609349489212036, -0.8836007714271545, -0.634563148021698, + -0.8836711645126343, 0, -0.8881282210350037, -0.7609349489212036, + -0.8636199235916138, -0.9935269355773926, -0.9180521965026855, 0, 0, 0, + 0, -0.9353630542755127, 0, 0, 0, -0.5171367526054382, 0, 0, 0, 0, 0, 0, + 0, -0.7609349489212036, 0, -0.8918940424919128, -0.8764418363571167, 0, + -0.9078019857406616, -0.9178204536437988, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, -0.8296747207641602, 0, 0, -0.979621946811676, + -0.8788198828697205, -0.5379257202148438, 0, 0, 0, -0.7450671195983887, + 0, -0.848019003868103, 0, 0, -0.6185047626495361, -0.7525266408920288, + -0.5856917500495911, -0.7522907257080078, -0.6195651888847351, + -0.7571994066238403, -0.6185047626495361, -0.732287585735321, + -0.9175415635108948, -0.7874626517295837, 0, 0, 0, 0, + -0.8084316253662109, 0, 0, -0.30985942482948303, -0.6538456678390503, 0, + -0.5232192873954773, 0, 0, 0, 0, 0, -0.6185047626495361, 0, + -0.7608258128166199, -0.7448807954788208, -0.4282705783843994, + -0.7763001918792725, -0.7876691818237305, -0.8818898797035217 + ], + [ + -0.351024866104126, -0.21079127490520477, -0.737686812877655, + -0.21079127490520477, -0.8007361888885498, -0.9138709902763367, + -0.7776497602462769, -0.5494731068611145, -0.6855161786079407, + -0.41944417357444763, -0.7939640879631042, -0.6552514433860779, 0, + -0.7003331780433655, -0.8255835771560669, -0.0024805886205285788, + -0.5603424310684204, -0.6623740792274475, -0.541685938835144, + -0.6616563200950623, -0.5676779747009277, -0.6667582988739014, + -0.5603424310684204, -0.643135666847229, -0.8252645134925842, + -0.6943933963775635, -0.6667582988739014, -0.8007361888885498, + -0.3343330919742584, -0.07911849021911621, -0.7146644592285156, 0, 0, + -0.4119005501270294, -0.5843774080276489, -0.6685243844985962, + -0.5128730535507202, -0.6641805768013, -0.6053502559661865, 0, + -0.21079127490520477, -0.6790238618850708, -0.5603424310684204, + -0.6095131039619446, -0.6698227524757385, -0.6549539566040039, + -0.4625755548477173, -0.6836671829223633, -0.6943556070327759, + -0.6851321458816528 + ], + [ + -0.23834073543548584, 0, -0.7372550368309021, 0, -0.7664793133735657, + -0.9120775461196899, -0.7760564088821411, -0.5390255451202393, 0, + -0.40304696559906006, -0.765783429145813, -0.6551263332366943, 0, + -0.68967205286026, -0.7655104398727417, -0.004438602365553379, + -0.5554239749908447, -0.6622011065483093, -0.5365957021713257, + -0.6615182161331177, -0.5607114434242249, -0.6665970683097839, + -0.5554239749908447, -0.6432245373725891, -0.8243244886398315, + -0.6939780712127686, 0, -0.7664793133735657, -0.28802061080932617, + -0.08039788901805878, -0.7142382264137268, 0, 0, -0.40610337257385254, + -0.5785663723945618, 0, -0.5067818760871887, 0, -0.5864721536636353, 0, + 0, 0, -0.5554239749908447, -0.5675877928733826, -0.6696310043334961, + -0.6549512147903442, -0.4570939540863037, -0.6833208799362183, + -0.6940388083457947, -0.6732928156852722 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1194436103105545, 0, 0, 0, 0, 0, + -0.11758587509393692, 0, -0.15922626852989197, 0, -0.06433702260255814, + 0, 0, 0, 0, -0.06433702260255814, 0, 0, 0, 0, 0, 0, 0, 0, + -0.1005786806344986, 0, -0.13795040547847748, 0, 0, 0, 0, 0, 0, + -0.16794657707214355, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.9518633484840393, 0, 0, -0.8637669086456299, + -0.9882077574729919, 0, -0.9159206748008728, 0, 0, -0.8897854089736938, + 0, 0, 0, 0, 0, -0.896591305732727, 0, -0.8968219757080078, 0, + -0.9007447361946106, 0, -0.8758711814880371, -0.9920739531517029, + -0.929534375667572, -0.9007447361946106, 0, 0, 0, -0.944490909576416, 0, + 0, 0, 0, -0.9040683507919312, 0, -0.899667501449585, 0, 0, 0, + -0.9127002954483032, 0, 0, -0.9044694304466248, -0.8885601162910461, 0, + -0.9199093580245972, -0.9289295077323914, 0 + ], + [ + 0, 0, -0.7722906470298767, 0, -0.672976016998291, -0.9469603300094604, + -0.8185788989067078, -0.5510818362236023, -0.7184768319129944, + -0.2536085247993469, -0.8961593508720398, -0.6879361867904663, 0, + -0.7582013010978699, 0, 0, -0.5780461430549622, -0.6953597664833069, + -0.5537449717521667, -0.6946479678153992, -0.5840862989425659, + -0.6997684836387634, -0.5780461430549622, -0.6744765639305115, + -0.8637142181396484, -0.7291181087493896, -0.6997684836387634, + -0.672976016998291, 0, 0, -0.749650239944458, 0, 0, -0.3723272383213043, + -0.6070451140403748, -0.702041506767273, -0.5134016871452332, + -0.6976483464241028, -0.6282814145088196, 0, 0, -0.7123656868934631, + -0.5780461430549622, 0, -0.703151524066925, -0.6868947148323059, + -0.4462285339832306, -0.7179582715034485, -0.7287024855613708, + -0.7473130226135254 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.05254611745476723, 0, 0, 0, 0, 0, + -0.02149735949933529, 0, -0.06650425493717194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0948498398065567, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, -0.02964828908443451, 0, 0, -0.4420463740825653, + 0, 0, 0, 0, 0, -0.41362714767456055, 0, -0.5241114497184753, 0, + -0.38701164722442627, 0, -0.2589840888977051, 0, 0, + -0.38701164722442627, 0, 0, 0, 0, 0, 0, 0, 0, -0.35662782192230225, 0, + -0.3676978647708893, 0, 0, 0, -0.27744007110595703, 0, 0, + -0.45104897022247314, 0, 0, -0.0540756955742836, 0, 0 + ], + [ + 0, 0, -0.9505603313446045, 0, 0, -0.9277820587158203, + -0.9849429726600647, 0, -0.9117993116378784, 0, 0, -0.8850699663162231, + 0, 0, 0, 0, -0.9644391536712646, -0.8919291496276855, + -0.9608743786811829, -0.8914299011230469, -0.397500604391098, + -0.8962222337722778, -0.9644391536712646, -0.8728280663490295, + -0.99196857213974, -0.9232093095779419, -0.8962222337722778, 0, 0, 0, + -0.9391534328460693, 0, 0, 0, -0.8288756012916565, -0.8983454704284668, + -0.6073521971702576, -0.8938975930213928, 0, 0, 0, -0.9072363972663879, + -0.9644391536712646, 0, -0.8991549015045166, -0.8852534890174866, 0, + -0.9134413599967957, -0.9227463006973267, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.2304457128047943, 0, 0, 0, 0, 0, + -0.2543693780899048, 0, -0.31269365549087524, 0, -0.21807238459587097, + 0, -0.016527514904737473, 0, 0, -0.21807238459587097, 0, 0, 0, 0, 0, 0, + 0, 0, -0.3246256113052368, 0, -0.3199475407600403, 0, 0, 0, + -0.2594970464706421, 0, 0, -0.37568399310112, 0, 0, 0, 0, 0 + ], + [ + 0, 0, -0.024907004088163376, 0, 0, 0, 0, 0, -0.24054409563541412, 0, 0, + -0.25269585847854614, 0, 0, 0, 0, 0, -0.2755926847457886, 0, + -0.3162230849266052, 0, -0.2729381322860718, 0, -0.10839133709669113, 0, + -0.18961884081363678, -0.2729381322860718, 0, 0, 0, 0, 0, 0, 0, 0, + -0.30935370922088623, 0, -0.298736572265625, 0, 0, 0, + -0.49049776792526245, 0, 0, -0.3620716631412506, -0.06655518710613251, + 0, -0.2807464897632599, 0, 0 + ], + [ + 0, 0, -0.8584626913070679, 0, 0, -0.979270875453949, -0.909518301486969, + 0, -0.8076501488685608, 0, 0, -0.7757360935211182, 0, + -0.2061820924282074, 0, 0, -0.5298843383789062, -0.7831470966339111, + -0.4682753086090088, -0.7832844853401184, -0.42705103754997253, + -0.7877506017684937, -0.5298843383789062, -0.762237012386322, + -0.9466448426246643, -0.8186197876930237, -0.7877506017684937, 0, 0, 0, + -0.8391203880310059, 0, 0, 0, -0.5514553189277649, -0.7905962467193604, + -0.32642799615859985, -0.7859317064285278, 0, 0, 0, 0, + -0.5298843383789062, 0, -0.7917589545249939, -0.7748526334762573, + -0.18125492334365845, -0.8075706958770752, -0.8187859654426575, 0 + ] + ], + "velocity_params": { + "embeddings": ["umap"], + "fit_offset": false, + "mode": "dynamical", + "mode_neighbors": "distances", + "n_recurse_neighbors": 2, + "perc": [5, 95] + }, + "velocity_pyro_graph": [ + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.004071583040058613, 0, 0, 0.06967818737030029, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.00795036368072033, 0, 0.03816244378685951, 0, 0.37057480216026306, + 0.31424233317375183, 0.12304452061653137, 0, 0.5099207162857056, + 0.14637379348278046, 0, 0.22236590087413788, 0.6485792398452759, 0, + 0.09660758078098297, 0.21852007508277893, 0, 0.5239341855049133, + 0.56197589635849, 0, 0, 0.05085497722029686, 0.38564348220825195, + 0.2072114795446396, 0.014365563169121742, 0.492018461227417, + 0.6667428612709045, 0, 0.44617557525634766, 0, 0.5331957340240479, + 0.14852222800254822, 0.16258196532726288, 0.028781410306692123, 0, + 0.1420111060142517, 0.10281804949045181, 0.1771513670682907, + 0.12247655540704727, 0, 0.5346837043762207, 0.3132859468460083, + 0.5627900958061218, 0.5254369974136353, 0.08804363757371902, + 0.07948213815689087, 0.31296348571777344, 0.2616971731185913, + 0.045254070311784744, 0.1659335047006607 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06205859035253525, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.010492062196135521, 0, + 0.47893238067626953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.030038006603717804, 0 + ], + [ + 0, 0, 0, 0, 0.033088672906160355, 0.06111519783735275, + 0.5998965501785278, 0, 0, 0, 0, 0, 0, 0.2481466382741928, 0, 0, + 0.3668661415576935, 0, 0.3899056613445282, 0, 0, 0, 0, 0, + 0.3079853653907776, 0, 0, 0, 0, 0, 0, 0.7708661556243896, + 0.7533125281333923, 0, 0, 0, 0, 0, 0.32946765422821045, + 0.11418288946151733, 0, 0, 0.10741600394248962, 0, 0.5450323820114136, + 0.661937415599823, 0.4024731516838074, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13196961581707, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.36635273694992065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.21614427864551544, 0, 0, 0, 0.11671517044305801, 0, 0, 0, 0, + 0.12134965509176254, 0, 0, 0.18430103361606598, 0, 0.2470443993806839, + 0.02123580127954483, 0, 0, 0.1901019811630249, 0.012186776846647263, 0, + 0, 0.0998653843998909, 0, 0, 0.21822309494018555, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01394663192331791, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.3358301520347595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.11552272737026215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.03348592668771744, 0, 0.14667855203151703, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.2925873398780823, 0, 0, 0.40334179997444153, 0.015473522245883942, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0.004376469179987907, 0.6465038657188416, 0, 0, + 0.2920759618282318, 0.2641819715499878, 0, 0, 0.03169291466474533, 0, 0, + 0.24549409747123718, 0, 0.3375695049762726, 0.474714457988739, 0, 0, + 0.46542245149612427, 0.54640793800354, 0, 0, 0.4439295530319214, 0, 0, + 0.023391244933009148, 0, 0.7001542448997498, 0, 0.22126278281211853, + 0.1979888528585434, 0, 0, 0, 0.524625837802887, 0.3408902585506439, + 0.009869460947811604, 0.5747857689857483, 0, 0, 0.08215493708848953, 0, + 0.006392786279320717, 0, 0.3090214431285858, 0.16035501658916473, + 0.9040179252624512 + ], + [ + 0, 0, 0, 0, 0.18980617821216583, 0, 0.0923893079161644, 0, 0, 0, 0, 0, + 0.0200111772865057, 0, 0, 0, 0, 0, 0.08725365251302719, 0, 0, 0, 0, 0, + 0.04768774285912514, 0, 0, 0, 0, 0, 0, 0.1391761302947998, + 0.000037543657526839525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.41088590025901794, + 0, 0, 0, 0.11632488667964935, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.20700833201408386, 0.22739163041114807, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0770355686545372, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.18912170827388763, 0, 0, + 0.026651155203580856, 0, 0, 0.11051385849714279, 0, 0, 0, + 0.12500831484794617, 0, 0, 0.32925331592559814, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.10009006410837173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.21726302802562714, 0.23214365541934967, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.24852275848388672, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.08613687008619308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0.1910976618528366, 0, 0.016145754605531693, 0, 0, + 0.023306993767619133, 0, 0, 0.18506202101707458, 0, 0.15270604193210602, + 0.10090655088424683, 0, 0, 0.08284690976142883, 0.14264853298664093, 0, + 0, 0, 0.2337363064289093, 0.11422358453273773, 0.06586340069770813, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.08965615928173065, 0, 0, + 0.013147308491170406, 0.16067081689834595, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.018284838646650314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2680392861366272, 0, 0, 0, 0, 0, + 0.05715477094054222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0.14824017882347107, 0, 0, 0, 0.05837270990014076, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.08292068541049957, 0.013963812030851841, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.05822468176484108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.13841234147548676, 0, 0, 0.169469952583313, 0, 0, 0, 0, + 0, 0, 0, 0, 0.055101025849580765, 0.1819383054971695, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0.1513923704624176, 0, 0.03663971647620201, 0, 0, 0, 0, + 0, 0, 0, 0.06992833316326141, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0.23166383802890778, 0, 0.148757666349411, 0, 0.3304188847541809, + 0.15672317147254944, 0.1646575629711151, 0, 0.2026979625225067, + 0.3266231417655945, 0, 0, 0.8617063760757446, 0, 0.35137659311294556, + 0.22965016961097717, 0, 0.32872867584228516, 0.5940330624580383, 0, 0, + 0, 0.4729488790035248, 0.5713496804237366, 0.04875604435801506, + 0.5957675576210022, 0.1905413419008255, 0, 0.08657215535640717, 0, + 0.365881085395813, 0.09448840469121933, 0.040820784866809845, + 0.17362649738788605, 0, 0.2758479416370392, 0.2959548830986023, + 0.2686687409877777, 0.08660437911748886, 0, 0.4411461651325226, 0, + 0.5308963060379028, 0.34121668338775635, 0.11419112235307693, + 0.16359524428844452, 0.41255611181259155, 0.2924221158027649, + 0.10941694676876068, 0.06269571185112 + ], + [ + 0, 0, 0, 0, 0, 0.5728544592857361, 0, 0, 0.5150034427642822, 0, 0, 0, 0, + 0, 0, 0.011684229597449303, 0, 0.3243240416049957, 0.28883761167526245, + 0, 0, 0.029590852558612823, 0.17896413803100586, 0, 0, + 0.10812725871801376, 0.06479703634977341, 0, 0, 0, 0.6282779574394226, + 0, 0.20614735782146454, 0, 0, 0, 0, 0.03464657440781593, + 0.08845309168100357, 0.03965872526168823, 0.4437824487686157, 0, 0, 0, + 0, 0, 0, 0, 0, 0.43458133935928345 + ], + [ + 0, 0, 0, 0.18036119639873505, 0.8549780249595642, 0.6651043891906738, + 0.2590107321739197, 0, 0.4019640386104584, 0.5201881527900696, 0, 0, + 0.32590654492378235, 0.06076362356543541, 0, 0.3453299403190613, + 0.17123188078403473, 0.12876439094543457, 0.8248421549797058, 0, 0, + 0.43028920888900757, 0.3566221296787262, 0, 0.35712337493896484, + 0.42032572627067566, 0, 0, 0.00006107874651206657, 0, + 0.5213788151741028, 0.2707797884941101, 0.4897286593914032, + 0.09693335741758347, 0, 0, 0.041322965174913406, 0.1312049925327301, + 0.5436984300613403, 0, 0.3950279951095581, 0.898804247379303, + 0.4462730288505554, 0, 0.5796723961830139, 0.4711175262928009, + 0.5536623597145081, 0.27368032932281494, 0, 0.4306654632091522 + ], + [ + 0, 0, 0, 0, 0, 0.23536251485347748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.3305022418498993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.019633181393146515 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0.03692525625228882, 0.30889692902565, 0.004785030148923397, + 0.3000548779964447, 0, 0, 0, 0, 0, 0, 0.006592811085283756, 0, 0, + 0.1695973128080368, 0, 0.1380985528230667, 0, 0, 0, 0, 0, + 0.5523574948310852, 0, 0, 0, 0, 0, 0, 0.2703239619731903, + 0.4014821946620941, 0, 0, 0, 0, 0, 0.052528299391269684, + 0.07925564050674438, 0, 0, 0.19697298109531403, 0, 0.19232866168022156, + 0.1560107320547104, 0.09699629992246628, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.16343115270137787, 0, 0, 0, 0.5299890637397766, 0, 0, + 0.47787806391716003, 0, 0, 0.03635095804929733, 0, 0, + 0.6929241418838501, 0, 0, 0.46535933017730713, 0.7499361634254456, 0, 0, + 0.5595014691352844, 0, 0, 0, 0, 0.3007443845272064, 0, + 0.036731280386447906, 0.4098612070083618, 0, 0, 0, 0, + 0.12752413749694824, 0, 0.42715343832969666, 0, 0, 0, 0, + 0.158706933259964, 0.15762163698673248, 0.3230120539665222, + 0.10641250014305115, 0.15844808518886566 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.007591532543301582, 0.084844209253788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.10700366646051407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.1710861623287201, 0, 0, 0.03662681207060814, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.43138113617897034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.02685832977294922, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0.13093410432338715, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.11029887199401855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4311763048171997, 0, 0, 0, 0.16731806099414825, 0, 0, + 0.06565765291452408, 0, 0, 0, 0, 0.05764061585068703, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0.23086990416049957, 0.18882326781749725, + 0.06738585233688354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.6588087677955627, 0, 0, 0.008546861819922924, 0, 0, + 0.09107952564954758, 0, 0, 0, 0, 0, 0, 0.20459376275539398, + 0.37035438418388367, 0, 0, 0, 0, 0, 0.11475130915641785, 0, 0, 0, 0, 0, + 0.19488666951656342, 0.31568852066993713, 0.27511098980903625, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.06639297306537628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02008877508342266, 0, 0, 0, 0, + 0.2432355284690857, 0.07108112424612045, 0, 0, 0, 0.09534855931997299, + 0, 0, 0.18842406570911407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0.045605819672346115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.014529434964060783, 0, 0.06913376599550247, 0, 0, 0, 0, 0, + 0.05829592049121857, 0, 0, 0, 0, 0, 0, 0.36336058378219604, + 0.4630824029445648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5617448687553406, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.07290646433830261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.013068095780909061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + ], + [ + 0, 0, 0, 0, 0, 0.1786561757326126, 0, 0, 0, 0.16393592953681946, 0, 0, + 0.00658997381106019, 0, 0, 0, 0, 0, 0.6336532235145569, 0, 0, + 0.35418909788131714, 0.49020400643348694, 0, 0, 0.21880628168582916, 0, + 0, 0, 0, 0.3122732937335968, 0, 0.06763316690921783, 0.2549583613872528, + 0, 0, 0, 0.1907649040222168, 0.09180906414985657, 0, 0.3785912096500397, + 0, 0, 0, 0, 0.008658348582684994, 0, 0, 0.02126331254839897, + 0.17709048092365265 + ], + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.027896257117390633, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + 0, 0, 0, 0, 0, 0.03898387774825096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + ] + ], + "velocity_pyro_graph_neg": [ + [ + 0, -0.75318843126297, -0.40505966544151306, -0.6443485617637634, + -0.3938276171684265, -0.3605928421020508, -0.5097660422325134, + -0.6589710116386414, -0.49472126364707947, -0.2087843120098114, + -0.7688335180282593, -0.6263623833656311, -0.0422743521630764, + -0.5497780442237854, -0.2105669379234314, -0.2020435333251953, + -0.572191596031189, -0.2920074164867401, -0.11730504781007767, + -0.4489373564720154, -0.7108901739120483, -0.1787247657775879, 0, + -0.5161824822425842, -0.5190311670303345, 0, -0.5763046741485596, + -0.743593156337738, -0.6304372549057007, -0.6805385947227478, + -0.3641853630542755, -0.5404181480407715, -0.5199125409126282, + -0.22560562193393707, -0.7582264542579651, -0.13238875567913055, + -0.4941368103027344, -0.020141448825597763, -0.48995476961135864, + -0.6792188286781311, -0.31181204319000244, -0.42898204922676086, + -0.4268321692943573, -0.34716901183128357, -0.5056100487709045, + -0.39863285422325134, -0.3669648766517639, -0.44745057821273804, + -0.2678948938846588, -0.3450411558151245 + ], + [ + 0, 0, 0, -0.03062545694410801, 0, 0, 0, -0.32813096046447754, 0, 0, + -0.204845130443573, 0, 0, -0.060238953679800034, 0, 0, + -0.1461384892463684, 0, 0, -0.21892566978931427, -0.4558822810649872, 0, + 0, 0, 0, 0, 0, -0.15704040229320526, 0, -0.14199946820735931, 0, 0, 0, + 0, -0.431024968624115, 0, 0, 0, 0, -0.05320682376623154, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + ], + [ + -0.24121960997581482, -0.6793631315231323, 0, -0.5306076407432556, + -0.4217309355735779, -0.42479825019836426, -0.32023268938064575, + -0.6148076057434082, -0.4804239273071289, -0.23110711574554443, + -0.6874070763587952, -0.5603253245353699, 0, -0.2990918457508087, + -0.34063446521759033, -0.4035184383392334, -0.4401916265487671, + -0.3530512750148773, -0.053203269839286804, -0.5663507580757141, + -0.7069135308265686, -0.23428146541118622, -0.02332925796508789, + -0.44412270188331604, -0.4644916355609894, -0.10021833330392838, + -0.4818617105484009, -0.6466955542564392, -0.5700961947441101, + -0.6376710534095764, -0.29724395275115967, -0.27730387449264526, + -0.38044413924217224, 0, -0.7506868839263916, 0, -0.37967649102211, + -0.155818372964859, -0.40231242775917053, -0.47252967953681946, + -0.20832034945487976, -0.3914910852909088, -0.27933964133262634, + -0.3409678637981415, -0.43309423327445984, -0.2584586441516876, + -0.2299678474664688, -0.31165415048599243, 0, -0.4394633173942566 + ], + [ + -0.6207340359687805, -0.7123563885688782, -0.5392431616783142, 0, 0, 0, + 0, -0.731366753578186, 0, -0.09216944128274918, -0.7016029357910156, + -0.4065663814544678, -0.19064100086688995, 0, -0.5682823061943054, + -0.3615107834339142, 0, -0.4444737434387207, 0, -0.6896496415138245, + -0.7432505488395691, -0.04644445702433586, -0.20498254895210266, + -0.5543027520179749, 0, -0.2596026062965393, -0.4222186505794525, + -0.7223763465881348, -0.5163118839263916, -0.6554142236709595, + -0.08682971447706223, 0, 0, -0.14874322712421417, -0.6372758150100708, + 0, -0.4778411388397217, 0, 0, 0, -0.15559974312782288, 0, 0, + -0.5389549732208252, 0, 0, 0, -0.2388901710510254, -0.3762195408344269, + -0.25287148356437683 + ], + [ + -0.5218520164489746, -0.7216939330101013, -0.5689562559127808, + -0.6101208329200745, 0, -0.05185006186366081, -0.2503850758075714, + -0.6893272399902344, -0.3531818985939026, -0.3529858887195587, + -0.7931028604507446, -0.6160637140274048, -0.21153785288333893, + -0.4554600119590759, -0.49364957213401794, -0.29214659333229065, + -0.43646878004074097, -0.35811737179756165, 0, -0.5982779860496521, + -0.8215280175209045, -0.3343447744846344, -0.29026663303375244, + -0.5634502172470093, -0.2059859335422516, -0.22626060247421265, + -0.467748761177063, -0.7325413227081299, -0.6298002600669861, + -0.9364544749259949, -0.2881563603878021, -0.12422025203704834, + -0.002787789097055793, -0.4532446563243866, -0.7296769618988037, + -0.4822644293308258, -0.591262936592102, -0.4358231723308563, + -0.3775705397129059, -0.4402477741241455, -0.3267040252685547, 0, + -0.19943854212760925, -0.4364742338657379, -0.34509995579719543, + -0.173798605799675, -0.17491111159324646, -0.49434366822242737, + -0.504186749458313, -0.3657954931259155 + ], + [ + -0.726185142993927, -0.8852093815803528, -0.7425838112831116, + -0.7910334467887878, -0.7604712843894958, 0, -0.6965233683586121, + -0.8540506958961487, -0.7137501835823059, -0.6134632229804993, + -0.8543248772621155, -0.893730640411377, -0.6609352231025696, + -0.5856481790542603, -0.7822906970977783, -0.6112077832221985, + -0.641738772392273, -0.6009281277656555, -0.3240625262260437, + -0.8443289399147034, -0.9806867837905884, -0.34905627369880676, + -0.44658878445625305, -0.9099382162094116, -0.7026328444480896, + -0.5341104865074158, -0.7347691655158997, -0.9159425497055054, + -0.8291812539100647, -0.9665126800537109, -0.5400174856185913, + -0.4624166786670685, -0.1489551067352295, -0.527818500995636, + -0.8415578603744507, -0.6260620951652527, -0.7741369009017944, + -0.5061418414115906, -0.5343806147575378, -0.4627947509288788, + -0.5454625487327576, -0.8275693655014038, -0.7478150129318237, + -0.6674368977546692, -0.69643235206604, -0.48582860827445984, + -0.6822378635406494, -0.6736040711402893, -0.5608459711074829, + -0.34784337878227234 + ], + [ + -0.7279994487762451, -0.8216217160224915, -0.6567648649215698, + -0.9292229413986206, -0.4799116253852844, -0.5713107585906982, 0, + -0.7840044498443604, -0.6639918088912964, -0.5922721028327942, + -0.8921305537223816, -0.6728829145431519, -0.5013026595115662, + -0.41102033853530884, -0.7092795372009277, -0.6752427220344543, + -0.3921654224395752, -0.7150205969810486, -0.3212141692638397, + -0.7504169344902039, -0.7717585563659668, -0.5867455005645752, + -0.6223567128181458, -0.6571959853172302, -0.17178286612033844, + -0.615446925163269, -0.6863164305686951, -0.8131983876228333, + -0.7942646741867065, -0.8523733019828796, -0.6534538269042969, 0, + -0.01378540601581335, -0.5573168396949768, -0.7307076454162598, + -0.6122401356697083, -0.7660695314407349, -0.7276855111122131, + -0.6234266757965088, -0.43725264072418213, -0.6553565263748169, + -0.6332222819328308, -0.4511173367500305, -0.723651647567749, + -0.5395861864089966, -0.0700937882065773, -0.34548285603523254, + -0.7277681231498718, -0.6378564238548279, -0.7365986704826355 + ], + [ + 0, -0.4188603162765503, -0.2011622190475464, -0.2792905867099762, 0, + -0.08196399360895157, -0.09328971058130264, 0, 0, 0, + -0.4356662333011627, -0.2586263418197632, 0, -0.23459000885486603, 0, 0, + -0.18506261706352234, -0.048313964158296585, 0, 0, -0.4001096487045288, + -0.008340179920196533, 0, -0.036100875586271286, -0.01131068542599678, + 0, -0.27203816175460815, -0.3191547989845276, -0.3198256492614746, + -0.27531757950782776, -0.05308781564235687, -0.21078790724277496, + -0.1426066756248474, -0.03991301730275154, -0.41913503408432007, 0, + -0.07132431119680405, 0, -0.13539373874664307, -0.37127453088760376, + -0.058368224650621414, 0, 0, -0.02186158299446106, -0.10171674937009811, + -0.07041586190462112, -0.0213374774903059, -0.08620462566614151, + -0.043066397309303284, -0.05822129547595978 + ], + [ + -0.6197775602340698, -0.8473405838012695, -0.5848261713981628, + -0.5075854063034058, -0.19464920461177826, 0, -0.359737753868103, + -0.7999318838119507, 0, -0.3908068835735321, -0.8130266666412354, + -0.6639474630355835, -0.32085055112838745, -0.3813078701496124, + -0.6405364274978638, -0.29467782378196716, -0.4401700496673584, + -0.234045147895813, 0, -0.7515484094619751, -0.9142014384269714, + -0.27694934606552124, -0.2083955556154251, -0.7547290325164795, + -0.3745490610599518, -0.2223961502313614, -0.41739019751548767, + -0.8605969548225403, -0.7427480220794678, -0.8557478785514832, 0, + -0.12011614441871643, 0, -0.409761518239975, -0.7134440541267395, + -0.46275565028190613, -0.6088541746139526, -0.357951819896698, + -0.19663214683532715, -0.17465265095233917, -0.12676601111888885, + -0.41686776280403137, -0.29384881258010864, -0.4114964008331299, + -0.33778804540634155, -0.260747492313385, -0.3014259338378906, + -0.4035373330116272, -0.4089921712875366, -0.04563147574663162 + ], + [ + -0.49403831362724304, -0.8301295638084412, -0.5882079601287842, + -0.6642987728118896, -0.42113742232322693, -0.13734233379364014, + -0.44817307591438293, -0.7495070099830627, -0.5318483114242554, 0, + -0.8065241575241089, -0.7511616945266724, -0.2978113889694214, + -0.37080976366996765, -0.5490372180938721, -0.33444130420684814, + -0.39978355169296265, -0.47412118315696716, 0, -0.6817209720611572, + -0.8754757642745972, 0, 0, -0.7574418783187866, -0.45832353830337524, + -0.12445554882287979, -0.6704180836677551, -0.8558817505836487, + -0.7094329595565796, -0.8624582290649414, -0.31383007764816284, + -0.30392205715179443, -0.14705488085746765, -0.06589808315038681, + -0.8049314022064209, -0.35502687096595764, -0.7233286499977112, + -0.19292007386684418, -0.2798883318901062, -0.49666398763656616, + -0.3119572103023529, -0.5399094223976135, -0.5136309266090393, + -0.5579896569252014, -0.4109952449798584, -0.039011359214782715, + -0.3152812421321869, -0.5261110067367554, -0.32572874426841736, + -0.21328204870224 + ], + [ + -0.12789031863212585, -0.6645474433898926, -0.29949790239334106, + -0.22814634442329407, 0, 0, -0.3088696002960205, -0.552412748336792, 0, + 0, 0, -0.5029340386390686, 0, -0.0806821659207344, -0.17837613821029663, + 0, -0.18534284830093384, 0, 0, -0.4455547332763672, -0.8106551170349121, + 0, 0, -0.655845046043396, -0.3169258236885071, 0, -0.14272454380989075, + -0.7403433918952942, 0, -0.4688638150691986, 0, -0.13339200615882874, 0, + 0, -0.5913801193237305, -0.0027312266174703836, -0.004504634998738766, + 0, 0, 0, 0, 0, -0.20388753712177277, 0, -0.05780062451958656, 0, + -0.09094559401273727, 0, 0, 0 + ], + [ + -0.44830748438835144, -0.6092856526374817, -0.3961543142795563, + -0.36193934082984924, 0, -0.1400890350341797, 0, -0.5843955874443054, + -0.11399450898170471, -0.32270514965057373, -0.7383249402046204, 0, 0, + -0.33558985590934753, -0.3676089644432068, -0.2252071648836136, + -0.3083454966545105, -0.23029331862926483, 0, -0.44727623462677, + -0.5901286602020264, -0.4044540822505951, -0.2800954580307007, + -0.19657684862613678, 0, -0.1819777488708496, -0.1560760736465454, + -0.5861539840698242, -0.46451660990715027, -0.6754547953605652, + -0.21114055812358856, 0, 0, -0.43565261363983154, -0.5757379531860352, + -0.3821790814399719, -0.48302334547042847, -0.45256468653678894, + -0.32157284021377563, -0.3293688893318176, -0.23088963329792023, + -0.10426142066717148, 0, -0.28964686393737793, -0.1279994547367096, + -0.08644576370716095, 0, -0.39704129099845886, -0.47669777274131775, + -0.43936145305633545 + ], + [ + -0.45308995246887207, -0.8118289709091187, -0.49161389470100403, + -0.6811578869819641, -0.3905564248561859, -0.4518461525440216, + -0.38869187235832214, -0.6652889847755432, -0.5491079092025757, + -0.47361016273498535, -0.8938149213790894, -0.5944361090660095, 0, + -0.551480770111084, -0.4921928346157074, -0.40553948283195496, + -0.5696347951889038, -0.46597573161125183, -0.08734945207834244, + -0.5537706613540649, -0.7051967978477478, -0.4467344880104065, + -0.3362310528755188, -0.5651814341545105, -0.43858686089515686, + -0.26025280356407166, -0.5851502418518066, -0.8352426290512085, + -0.7734151482582092, -0.7992851138114929, -0.5488944053649902, + -0.34767675399780273, -0.4301990866661072, -0.445735901594162, + -0.7238102555274963, -0.3476180136203766, -0.8524552583694458, + -0.489783376455307, -0.5999351739883423, -0.6295632123947144, + -0.572067379951477, -0.5409495830535889, -0.34906283020973206, + -0.4898149073123932, -0.5205532312393188, -0.35770416259765625, + -0.3129086494445801, -0.7270406484603882, -0.4777286648750305, + -0.594677746295929 + ], + [ + -0.7163559198379517, -0.8342462778091431, -0.6753074526786804, + -0.659014105796814, -0.5017507076263428, -0.3907761573791504, + -0.2686847448348999, -0.8041247725486755, -0.5993099808692932, + -0.4208729565143585, -0.7954084277153015, -0.7236210703849792, + -0.5214181542396545, 0, -0.7260757088661194, -0.6459990739822388, + -0.2003067582845688, -0.674071729183197, -0.15563960373401642, + -0.8193667531013489, -0.8604661226272583, -0.29720601439476013, + -0.444094717502594, -0.7687765955924988, -0.35102859139442444, + -0.5274010896682739, -0.6935697197914124, -0.8392383456230164, + -0.7353318333625793, -0.7792588472366333, -0.46734023094177246, 0, 0, + -0.2654585540294647, -0.7641453146934509, -0.518133819103241, + -0.6844009757041931, -0.556355893611908, -0.30490583181381226, + -0.15417778491973877, -0.49186477065086365, -0.5390942096710205, + -0.5012891292572021, -0.7113592624664307, -0.38051778078079224, 0, + -0.35845816135406494, -0.5635129809379578, -0.4329732358455658, + -0.499271422624588 + ], + [ + -0.06954299658536911, -0.6825250387191772, -0.36766740679740906, + -0.5213975310325623, -0.17410366237163544, -0.17061153054237366, + -0.35253116488456726, -0.6331010460853577, 0, -0.05204855278134346, + -0.7211193442344666, -0.49213066697120667, 0, -0.45825085043907166, 0, + 0, -0.45774224400520325, -0.14140745997428894, 0, -0.44650912284851074, + -0.6935350298881531, -0.06770393997430801, 0, -0.4048914611339569, + -0.3535897135734558, 0, -0.4475640058517456, -0.695888340473175, + -0.5263887643814087, -0.6187459826469421, -0.2030477225780487, + -0.37849271297454834, -0.35582372546195984, -0.19990657269954681, + -0.6938463449478149, 0, -0.3881164491176605, 0, -0.35202884674072266, + -0.5854969024658203, -0.15851394832134247, 0, -0.235029399394989, + -0.23418447375297546, -0.34005972743034363, -0.23632320761680603, + -0.1663646399974823, -0.32755133509635925, -0.2861841022968292, + -0.22869060933589935 + ], + [ + -0.5591351985931396, -0.8137857913970947, -0.6692553758621216, + -0.7026897072792053, -0.4582878649234772, 0, -0.6614997982978821, + -0.7876264452934265, -0.41376006603240967, -0.409565269947052, + -0.7441612482070923, -0.7554158568382263, -0.42597490549087524, + -0.6386107802391052, -0.654015302658081, 0, -0.6580685377120972, + -0.28459829092025757, -0.12454316765069962, -0.7615537643432617, + -0.9518237113952637, -0.16115804016590118, -0.16386102139949799, + -0.8313917517662048, -0.6375805139541626, -0.1467001885175705, + -0.5910115838050842, -0.8664408326148987, -0.6478880047798157, + -0.8474283814430237, -0.28410544991493225, -0.5418615937232971, + -0.34845253825187683, -0.47201430797576904, -0.8048458099365234, + -0.5267192125320435, -0.6622834205627441, -0.2604095935821533, + -0.437960684299469, -0.6010326743125916, -0.314637690782547, + -0.5840930342674255, -0.5948081612586975, -0.4679083526134491, + -0.5585717558860779, -0.45833349227905273, -0.5164465308189392, + -0.541870653629303, -0.525001049041748, -0.07034079730510712 + ], + [ + -0.8043900728225708, -0.9119951128959656, -0.7568941116333008, + -0.800499439239502, -0.5748891830444336, -0.514606237411499, + -0.24080319702625275, -0.8667702078819275, -0.7369289994239807, + -0.5156523585319519, -0.901739239692688, -0.7923063039779663, + -0.6423318982124329, -0.18872450292110443, -0.8006290197372437, + -0.7281829118728638, 0, -0.8127855658531189, -0.3223720192909241, + -0.858755886554718, -0.8793551921844482, -0.3917134702205658, + -0.6100295782089233, -0.8172823190689087, -0.25672343373298645, + -0.6666666269302368, -0.813893735408783, -0.901908278465271, + -0.8533837795257568, -0.8776912093162537, -0.6490041613578796, 0, 0, + -0.42294707894325256, -0.7982001900672913, -0.6600204110145569, + -0.7738605737686157, -0.7045255303382874, -0.46190881729125977, + -0.3154061436653137, -0.6653411984443665, -0.6493964195251465, + -0.5990628600120544, -0.8436278700828552, -0.45111411809921265, 0, + -0.4116031527519226, -0.6936972141265869, -0.603665828704834, + -0.6523422002792358 + ], + [ + -0.510877788066864, -0.9197779297828674, -0.6100664138793945, + -0.6608242392539978, -0.3802667260169983, 0, -0.611011266708374, + -0.7806692123413086, -0.300302654504776, -0.3761715888977051, + -0.7945331335067749, -0.7114744782447815, -0.30707377195358276, + -0.5909421443939209, -0.5728095173835754, -0.07056672126054764, + -0.6402040123939514, 0, -0.051229480654001236, -0.6708908677101135, + -0.8845391273498535, -0.2111240178346634, -0.04593533277511597, + -0.8067420125007629, -0.6067235469818115, -0.002354280324652791, + -0.5645776987075806, -0.9197048544883728, -0.7256140112876892, + -0.7868538498878479, -0.13138428330421448, -0.48700451850891113, + -0.3063775599002838, -0.41737931966781616, -0.7816250324249268, + -0.42278680205345154, -0.6288570761680603, -0.15744462609291077, + -0.39609014987945557, -0.5167629718780518, -0.16778792440891266, + -0.5037827491760254, -0.5107594132423401, -0.4927375912666321, + -0.5240308046340942, -0.4594474136829376, -0.46107327938079834, + -0.47921931743621826, -0.42155683040618896, -0.010128404945135117 + ], + [ + -0.6881723403930664, -0.861068069934845, -0.7256573438644409, + -0.813596785068512, -0.546431839466095, -0.22478686273097992, + -0.5761355757713318, -0.799724280834198, -0.5713075995445251, + -0.7001045346260071, -0.8626247048377991, -0.7813980579376221, + -0.5894184708595276, -0.5723534822463989, -0.7201457619667053, + -0.5240583419799805, -0.6056849956512451, -0.5568017959594727, 0, + -0.7607885003089905, -0.8919743895530701, -0.3930113911628723, + -0.45293891429901123, -0.8317278027534485, -0.5547623634338379, + -0.4817964732646942, -0.6781442761421204, -0.900791347026825, + -0.7822792530059814, -0.9150786399841309, -0.5764361023902893, + -0.32314565777778625, -0.12278662621974945, -0.5290050506591797, + -0.7882287502288818, -0.5893641710281372, -0.8775444030761719, + -0.5404203534126282, -0.6173821091651917, -0.4961521327495575, + -0.6277664303779602, -0.8388661742210388, -0.6525171399116516, + -0.6254094839096069, -0.6594725251197815, -0.3702891170978546, + -0.6615173816680908, -0.8351805806159973, -0.5554406642913818, + -0.4339155852794647 + ], + [ + -0.1125650480389595, -0.7012222409248352, -0.4776603579521179, + -0.7077654600143433, -0.3513055443763733, -0.44388994574546814, + -0.5475680828094482, -0.5761334896087646, -0.5401273965835571, + -0.3632483184337616, -0.8067951202392578, -0.579465389251709, + -0.18282034993171692, -0.7071933150291443, -0.04197435826063156, + -0.06777647137641907, -0.6542555093765259, -0.3040710985660553, + -0.3153282105922699, 0, -0.6322089433670044, -0.387016236782074, + -0.2924133241176605, -0.3777369260787964, -0.4788951873779297, + -0.13446961343288422, -0.5896260738372803, -0.6484047174453735, + -0.667186439037323, -0.7150158286094666, -0.5276460647583008, + -0.627821683883667, -0.6481946110725403, -0.5040401816368103, + -0.7200791239738464, -0.4001103639602661, -0.5391964316368103, + -0.31140702962875366, -0.6437694430351257, -0.8229058384895325, + -0.48818355798721313, -0.46985188126564026, -0.4509376287460327, + -0.3357464373111725, -0.5573883652687073, -0.5054667592048645, + -0.4199644923210144, -0.5934978127479553, -0.5316844582557678, + -0.4987635016441345 + ], + [ + -0.03752204403281212, -0.39796385169029236, -0.255961149930954, + -0.28114888072013855, 0, -0.18992924690246582, 0, -0.24635063111782074, + 0, 0, -0.5465397834777832, -0.08527567982673645, 0, -0.3304577171802521, + 0, 0, -0.20009669661521912, -0.15891854465007782, 0, 0, 0, + -0.11342888325452805, -0.08217266201972961, 0, 0, 0, + -0.31485602259635925, -0.2501663863658905, -0.3751544952392578, + -0.27918192744255066, -0.24212242662906647, -0.13073335587978363, + -0.256723016500473, -0.2282472401857376, -0.5175865292549133, 0, + -0.19174666702747345, 0, -0.2752205729484558, -0.562748908996582, + -0.20520064234733582, 0, 0, -0.19508956372737885, -0.03227509185671806, + 0, 0, -0.26201874017715454, -0.36645737290382385, -0.33599862456321716 + ], + [ + -0.7328896522521973, -0.9031445980072021, -0.7814997434616089, + -0.8219537734985352, -0.7537699341773987, -0.3047401010990143, + -0.7860745191574097, -0.8492452502250671, -0.7017662525177002, + -0.8818617463111877, -0.8152698278427124, -0.9076096415519714, + -0.7907546162605286, -0.5924891233444214, -0.8101564049720764, + -0.5738032460212708, -0.6386010646820068, -0.6561952829360962, + -0.48210808634757996, -0.8133049011230469, -0.9432820081710815, 0, + -0.5003546476364136, -0.968775749206543, -0.7611884474754333, + -0.6125362515449524, -0.8089292049407959, -0.9471098184585571, + -0.8051499128341675, -0.9223583340644836, -0.6009542346000671, + -0.5773841738700867, -0.3409709334373474, -0.45710402727127075, + -0.8395239114761353, -0.631572961807251, -0.8932218551635742, + -0.4890364408493042, -0.5702545046806335, -0.5574504137039185, + -0.6367040872573853, -0.854299008846283, -0.8558599352836609, + -0.7354220747947693, -0.7307179570198059, -0.4815899431705475, + -0.7906671762466431, -0.784943699836731, -0.5419227480888367, + -0.3345945179462433 + ], + [ + -0.6023871898651123, -0.9104549884796143, -0.7077670693397522, + -0.7739242911338806, -0.6267712116241455, -0.16747480630874634, + -0.7299788594245911, -0.7953670620918274, -0.5850496292114258, + -0.4709670841693878, -0.8082116842269897, -0.8652291297912598, + -0.6877725720405579, -0.5745803713798523, -0.7118183970451355, + -0.37594324350357056, -0.642769455909729, -0.47708654403686523, + -0.16486699879169464, -0.7287943959236145, -0.9215497374534607, 0, 0, + -0.9362894296646118, -0.7237685322761536, -0.36306309700012207, + -0.7382595539093018, -0.9655452966690063, -0.7736833095550537, + -0.8769108653068542, -0.42360618710517883, -0.5713270902633667, + -0.3724656403064728, -0.28487449884414673, -0.836851179599762, + -0.45303842425346375, -0.9326844215393066, -0.1727035790681839, + -0.4604042172431946, -0.560818076133728, -0.5135915279388428, + -0.7206669449806213, -0.7576563358306885, -0.6037653684616089, + -0.6399491429328918, -0.454166054725647, -0.6461853981018066, + -0.7258458733558655, -0.37190163135528564, -0.13900481164455414 + ], + [ + -0.25346365571022034, -0.7254744172096252, -0.24652951955795288, + -0.40476739406585693, -0.04532420262694359, -0.3264334797859192, + -0.018562620505690575, -0.5443582534790039, -0.31869372725486755, + -0.2127162367105484, -0.7646980881690979, -0.2690853178501129, 0, + -0.3305082321166992, -0.20356737077236176, -0.23851478099822998, + -0.3203769624233246, -0.2725851833820343, 0, -0.38117390871047974, + -0.6014915704727173, -0.3342234492301941, -0.17732535302639008, 0, + -0.08800308406352997, -0.06466315686702728, -0.32090747356414795, + -0.8457335233688354, -0.5402997732162476, -0.6414327621459961, + -0.2944781482219696, -0.08483251184225082, -0.2458953559398651, + -0.2907736301422119, -0.5776082873344421, -0.18875615298748016, + -0.4180324375629425, -0.34181275963783264, -0.38010942935943604, + -0.45973703265190125, -0.25736215710639954, -0.15618030726909637, 0, + -0.2706427276134491, -0.2243080586194992, -0.12292803078889847, 0, + -0.3669922947883606, -0.34132587909698486, -0.4834754765033722 + ], + [ + -0.7242434024810791, -0.80526202917099, -0.6809159517288208, + -0.7375745177268982, -0.46633899211883545, -0.5371295213699341, + -0.12529459595680237, -0.7836596965789795, -0.650364100933075, + -0.5694702863693237, -0.8780088424682617, -0.6688854098320007, + -0.5162107348442078, -0.4107052683830261, -0.7014732956886292, + -0.6570724844932556, -0.34866830706596375, -0.7082264423370361, + -0.3236843943595886, -0.7435122728347778, -0.8050326704978943, + -0.5722473859786987, -0.6222718954086304, -0.6511098742485046, 0, + -0.6084025502204895, -0.6774048805236816, -0.794771134853363, + -0.7771952748298645, -0.8741210103034973, -0.6313307285308838, 0, 0, + -0.5718927979469299, -0.7710428237915039, -0.6437419056892395, + -0.7323472499847412, -0.7197381854057312, -0.5744783282279968, + -0.4426063001155853, -0.6412225365638733, -0.6114957928657532, + -0.4211910665035248, -0.7203128933906555, -0.5070751309394836, + -0.12064482271671295, -0.33952346444129944, -0.6800878643989563, + -0.6499210000038147, -0.7106478810310364 + ], + [ + -0.5334849953651428, -0.8288715481758118, -0.6026281714439392, + -0.6697150468826294, -0.37601521611213684, -0.17611567676067352, + -0.5127474665641785, -0.7285485863685608, -0.4657616913318634, + -0.3759678304195404, -0.874360203742981, -0.664402961730957, + -0.24914811551570892, -0.5626243352890015, -0.6203811168670654, + -0.2811773419380188, -0.5840380191802979, -0.4049433767795563, 0, + -0.6384007334709167, -0.8112552165985107, -0.21257847547531128, + -0.08454781770706177, -0.6935734152793884, -0.5133564472198486, 0, + -0.5936003923416138, -0.8590245246887207, -0.7303032279014587, + -0.8028166890144348, -0.3650818467140198, -0.4406501054763794, + -0.3445664942264557, -0.3870416581630707, -0.7611634135246277, + -0.4128188490867615, -0.7833305597305298, -0.35465094447135925, + -0.46529489755630493, -0.5930774807929993, -0.4027319550514221, + -0.5128482580184937, -0.4513630270957947, -0.5046466588973999, + -0.5027305483818054, -0.36630043387413025, -0.38908544182777405, + -0.6039227843284607, -0.44465959072113037, -0.3193237781524658 + ], + [ + -0.42945224046707153, -0.8378241658210754, -0.4272661507129669, + -0.4224540889263153, -0.05415112152695656, 0, -0.2595785856246948, + -0.6318575143814087, 0, -0.27944067120552063, -0.6193117499351501, + -0.4316258132457733, -0.023107316344976425, -0.34527212381362915, + -0.4163759648799896, -0.15176162123680115, -0.42426708340644836, 0, 0, + -0.5549534559249878, -0.7582060694694519, -0.2519073486328125, + -0.05173356458544731, -0.5473839044570923, -0.31156063079833984, + -0.017220446839928627, 0, -0.7484022378921509, -0.420216828584671, + -0.6120489835739136, 0, -0.08445141464471817, 0, -0.3195573687553406, + -0.6362154483795166, -0.28284981846809387, -0.44402438402175903, + -0.21376121044158936, -0.1852334886789322, -0.18876412510871887, 0, + -0.21680009365081787, -0.0220290869474411, -0.10442506521940231, + -0.2744963765144348, -0.23712486028671265, -0.15655221045017242, + -0.2501201331615448, -0.2852838635444641, -0.07235769927501678 + ], + [ + 0, -0.1929616630077362, 0, -0.05672701075673103, 0, 0, 0, + -0.23906052112579346, 0, 0, -0.2907063364982605, 0, 0, + -0.03665006533265114, 0, 0, -0.09323932975530624, 0, 0, + -0.10599668323993683, -0.39837419986724854, 0, 0, 0, 0, 0, 0, 0, 0, + -0.13356851041316986, 0, 0, 0, 0, -0.4864192605018616, 0, 0, 0, 0, + -0.20852823555469513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ], + [ + -0.4566328525543213, -0.8663488030433655, -0.40757885575294495, + -0.3303620219230652, -0.11523917317390442, 0, -0.35642698407173157, + -0.7039125561714172, 0, -0.17134703695774078, -0.4248131811618805, + -0.5520529747009277, -0.15365147590637207, -0.2111780345439911, + -0.512193500995636, 0, -0.3463863432407379, 0, 0, -0.6525083780288696, + -0.8998594284057617, 0, 0, -0.8278993368148804, -0.4096023440361023, 0, + 0, -0.905790388584137, 0, -0.6760402321815491, 0, -0.07734999805688858, + 0, -0.1494474858045578, -0.602616548538208, -0.22312480211257935, + -0.38268721103668213, 0, 0, 0, 0, -0.23376290500164032, + -0.2314879149198532, -0.030849436298012733, -0.21766512095928192, + -0.1676749885082245, -0.21105554699897766, -0.04272624850273132, + -0.12668514251708984, 0 + ], + [ + -0.1875985562801361, -0.44406551122665405, -0.34282395243644714, 0, 0, + 0, 0, -0.4156270921230316, 0, 0, -0.2553218603134155, + -0.009639172814786434, 0, 0, -0.029869526624679565, 0, 0, 0, 0, + -0.2820349931716919, -0.6066089272499084, 0, 0, -0.20610573887825012, 0, + 0, -0.057571977376937866, -0.46029284596443176, 0, 0, 0, 0, 0, 0, + -0.443211168050766, -0.15472249686717987, 0, 0, 0, + -0.027507852762937546, 0, 0, 0, -0.07539249211549759, 0, 0, 0, 0, + -0.11824899911880493, 0 + ], + [ + -0.5485801696777344, -0.8867602348327637, -0.6201444864273071, + -0.6616087555885315, -0.34731897711753845, 0, -0.48677441477775574, + -0.7553329467773438, -0.38099926710128784, -0.30106401443481445, + -0.8896808624267578, -0.736251711845398, -0.3211447596549988, + -0.435140997171402, -0.5781880617141724, -0.26133859157562256, + -0.4968826472759247, -0.3104032874107361, 0, -0.6810277104377747, + -0.8684873580932617, -0.07002473622560501, -0.01345785241574049, + -0.779239296913147, -0.4932840168476105, -0.10260000824928284, + -0.6143532991409302, -0.896631121635437, -0.8150444626808167, + -0.8558748960494995, 0, -0.2660105526447296, -0.0018423058791086078, + -0.29323869943618774, -0.7707697749137878, -0.41343510150909424, + -0.7055688500404358, -0.22277431190013885, -0.251504510641098, + -0.35968977212905884, -0.19114060699939728, -0.5252982974052429, + -0.48675379157066345, -0.4712103307247162, -0.43008893728256226, + -0.24605531990528107, -0.3689129054546356, -0.5819833874702454, + -0.36241310834884644, 0 + ], + [ + -0.7757822275161743, -0.8202313780784607, -0.7490536570549011, + -0.8677173852920532, -0.565265953540802, -0.5378133654594421, + -0.6232686042785645, -0.8122625946998596, -0.6515464782714844, + -0.6542258858680725, -0.84238600730896, -0.7303893566131592, + -0.6016519069671631, -0.6872564554214478, -0.7562726140022278, + -0.6844573020935059, -0.6905754804611206, -0.7004303336143494, + -0.4164511263370514, -0.7978936433792114, -0.8304444551467896, + -0.6231582760810852, -0.6397246718406677, -0.7440446615219116, + -0.5166071057319641, -0.6408173441886902, -0.7036362886428833, + -0.8243354558944702, -0.7690523862838745, -0.8206853866577148, + -0.6347219347953796, 0, -0.09307219088077545, -0.6514589786529541, + -0.7881914973258972, -0.6941030025482178, -0.7773100137710571, + -0.7249250411987305, -0.6656588912010193, -0.5811077356338501, + -0.6519662737846375, -0.6674274206161499, -0.5904821753501892, + -0.7278342247009277, -0.6623328328132629, -0.4169679880142212, + -0.5661449432373047, -0.7303661108016968, -0.6934934258460999, + -0.6813351511955261 + ], + [ + -0.8462918400764465, -0.9028698801994324, -0.8287986516952515, + -0.9643319845199585, -0.7666454315185547, -0.508699893951416, + -0.820270836353302, -0.8993992805480957, -0.7381163835525513, + -0.735537052154541, -0.8746418952941895, -0.8940334916114807, + -0.7568667531013489, -0.7081716060638428, -0.8539425730705261, + -0.7360186576843262, -0.8185247182846069, -0.7455266118049622, + -0.5468136668205261, -0.8917149305343628, -0.9582398533821106, + -0.6029473543167114, -0.670786440372467, -0.9103380441665649, + -0.8205233216285706, -0.7107397317886353, -0.7982695698738098, + -0.9233341813087463, -0.8328197002410889, -0.9328647255897522, + -0.6776837706565857, -0.46475979685783386, 0, -0.6719779372215271, + -0.8975873589515686, -0.7557767629623413, -0.8440326452255249, + -0.7236230373382568, -0.7671396732330322, -0.5797779560089111, + -0.6951733231544495, -0.8385375738143921, -0.8117124438285828, + -0.7911776304244995, -0.8651096224784851, -0.6007845401763916, + -0.7656955718994141, -0.7866953611373901, -0.703157901763916, + -0.6242180466651917 + ], + [ + -0.47499769926071167, -0.7808855772018433, -0.5964373350143433, + -0.7045677304267883, -0.5186618566513062, -0.3538201153278351, + -0.541253924369812, -0.7132288813591003, -0.5727253556251526, + -0.28486838936805725, -0.7497434020042419, -0.7352520227432251, + -0.33572423458099365, -0.48533689975738525, -0.5225730538368225, + -0.4442509114742279, -0.5336717963218689, -0.49360424280166626, + -0.06978585571050644, -0.6636513471603394, -0.8164282441139221, + -0.042554207146167755, -0.11766623705625534, -0.7008166909217834, + -0.5744220614433289, -0.24773961305618286, -0.6639477014541626, + -0.7837796807289124, -0.6814419627189636, -0.7544535398483276, + -0.3970465064048767, -0.41214409470558167, -0.3227512240409851, 0, + -0.8168179988861084, -0.3139248192310333, -0.6786811351776123, + -0.24600337445735931, -0.4347107708454132, -0.5614476203918457, + -0.37547367811203003, -0.5375643968582153, -0.5508201122283936, + -0.5419331192970276, -0.5246851444244385, -0.2638741731643677, + -0.43033507466316223, -0.5776093006134033, -0.3112291991710663, + -0.3607551157474518 + ], + [ + -0.3857215642929077, -0.3993767499923706, -0.40675026178359985, 0, 0, 0, + 0, -0.348788857460022, 0, -0.08121716231107712, -0.42407721281051636, + -0.013092768378555775, -0.111284539103508, 0, -0.3046916127204895, + -0.23975127935409546, 0, -0.2921766936779022, 0, -0.37740108370780945, + -0.36770907044410706, -0.18533331155776978, -0.22527645528316498, + -0.17549096047878265, 0, -0.17976588010787964, -0.1908530741930008, + -0.3700175881385803, -0.28910210728645325, -0.18623271584510803, + -0.08663737028837204, 0, 0, -0.21989305317401886, 0, 0, + -0.27007436752319336, 0, 0, 0, -0.17316406965255737, 0, 0, + -0.32405734062194824, 0, 0, 0, -0.15482190251350403, + -0.2770763337612152, -0.18001389503479004 + ], + [ + -0.3247140645980835, -0.718275249004364, -0.7136753797531128, + -0.5882127285003662, -0.42051273584365845, -0.3624722957611084, + -0.43389320373535156, -0.616975724697113, -0.48677361011505127, + -0.22443266212940216, -0.6891142725944519, -0.6184067130088806, + -0.10781297087669373, -0.4196108281612396, -0.3780401945114136, + -0.3669169843196869, -0.48742175102233887, -0.3810420036315918, + -0.05415986105799675, -0.5548956990242004, -0.7131390571594238, + -0.1712723821401596, -0.022363098338246346, -0.5512564182281494, + -0.49406707286834717, -0.10597342997789383, -0.5678655505180359, + -0.6985167860984802, -0.6046555638313293, -0.6425421237945557, + -0.3213924169540405, -0.39388909935951233, -0.382267028093338, + -0.06641674041748047, -0.740857720375061, 0, -0.5081047415733337, + -0.14669816195964813, -0.4051278233528137, -0.5480443239212036, + -0.2755076587200165, -0.4196590185165405, -0.3978230357170105, + -0.4195261001586914, -0.4568408131599426, -0.29970890283584595, + -0.323880672454834, -0.4112726151943207, -0.180758997797966, + -0.3612370491027832 + ], + [ + -0.10867654532194138, -0.64898282289505, -0.26090502738952637, + -0.3081949055194855, -0.02889973856508732, 0, -0.13845141232013702, + -0.5570477247238159, 0, 0, -0.5627873539924622, -0.44709792733192444, 0, + -0.08939254283905029, -0.11613532155752182, 0, -0.17663028836250305, + -0.02970544993877411, 0, -0.4459460973739624, -0.6917083859443665, 0, 0, + -0.44595828652381897, -0.21963553130626678, 0, -0.32844793796539307, + -0.7007377743721008, -0.3496977686882019, -0.5164855122566223, 0, + -0.06689649075269699, 0, 0, -0.6684730648994446, 0, 0, 0, 0, + -0.2768684923648834, 0, 0, -0.04269900172948837, -0.1547418087720871, + -0.047605063766241074, 0, 0, 0, 0, 0 + ], + [ + -0.6385821104049683, -0.8719448447227478, -0.6910654902458191, + -0.699173092842102, -0.5188552737236023, -0.13361676037311554, + -0.6567348837852478, -0.792954683303833, -0.4964827299118042, + -0.34077388048171997, -0.8083092570304871, -0.7766565680503845, + -0.46490994095802307, -0.547912061214447, -0.678307056427002, + -0.2965453267097473, -0.6031700968742371, -0.3946872651576996, + -0.10379042476415634, -0.7018344402313232, -0.8853739500045776, 0, 0, + -0.844029426574707, -0.6516764760017395, -0.14033164083957672, + -0.6622881293296814, -0.9205173850059509, -0.6938663125038147, + -0.8024272918701172, -0.30318349599838257, -0.5463526844978333, + -0.3558725118637085, -0.26070767641067505, -0.8051848411560059, + -0.4246358573436737, -0.8122227191925049, 0, -0.40039780735969543, + -0.5450305342674255, -0.32622525095939636, -0.5821897983551025, + -0.6312493681907654, -0.5516664385795593, -0.5611041188240051, + -0.4219612181186676, -0.5343679785728455, -0.5682417750358582, + -0.3463139235973358, -0.07046649605035782 + ], + [ + -0.657936692237854, -0.8379338383674622, -0.681368350982666, + -0.8190008401870728, -0.4523501694202423, 0, -0.48468294739723206, + -0.7965168952941895, 0, -0.327413946390152, -0.7579306364059448, + -0.7863768935203552, -0.5031366348266602, -0.2724371552467346, + -0.6801174879074097, -0.4290078282356262, -0.3544106185436249, + -0.4947482943534851, 0, -0.767749547958374, -0.9149338006973267, 0, + -0.23129504919052124, -0.8482389450073242, -0.4735008180141449, + -0.3513551354408264, -0.6387996673583984, -0.8786300420761108, + -0.6764857769012451, -0.8865638375282288, -0.23182463645935059, + -0.06522735208272934, 0, -0.24002228677272797, -0.7787470817565918, 0, + -0.6908416152000427, 0, 0, -0.17445532977581024, -0.3074609935283661, 0, + -0.5945082306861877, -0.6007460951805115, -0.4691277742385864, 0, + -0.4362872838973999, -0.5426558256149292, -0.39382204413414, + -0.09968236088752747 + ], + [ + -0.7876567840576172, -0.8596165180206299, -0.7614234089851379, + -0.8080930709838867, -0.6736805438995361, -0.36210837960243225, + -0.7193043231964111, -0.8440374135971069, -0.604670524597168, + -0.6386556029319763, -0.7606645226478577, -0.8494359850883484, + -0.729180634021759, -0.5147922039031982, -0.8167128562927246, + -0.6786553859710693, -0.5923925042152405, -0.6517006158828735, + -0.4588528275489807, -0.8547914028167725, -0.9288711547851562, + -0.48064881563186646, -0.5661671757698059, -0.9142051935195923, + -0.6878955960273743, -0.6434999704360962, -0.7182896137237549, + -0.8959729075431824, -0.7315464615821838, -0.8480687737464905, + -0.5142002701759338, -0.2813434898853302, 0, -0.5222598910331726, + -0.8123548030853271, -0.6482765674591064, -0.7662409543991089, + -0.6013593673706055, -0.4751282334327698, 0, -0.5609368681907654, + -0.7301174402236938, -0.7640334367752075, -0.707888126373291, + -0.6475626230239868, -0.4664613902568817, -0.6876668930053711, + -0.6609765291213989, -0.528935432434082, -0.4371735155582428 + ], + [ + -0.4722057580947876, -0.816493034362793, -0.5746155381202698, + -0.5930383205413818, -0.25493407249450684, 0, -0.4086398184299469, + -0.6781546473503113, 0, -0.21917907893657684, -0.8165172934532166, + -0.6230088472366333, -0.13928508758544922, -0.4139971435070038, + -0.4875551164150238, -0.20604076981544495, -0.4678296148777008, + -0.23690520226955414, 0, -0.6079354882240295, -0.791458010673523, + -0.04681597277522087, 0, -0.6698328256607056, -0.4286271333694458, 0, + -0.5188867449760437, -0.8305208683013916, -0.6943293809890747, + -0.7448498606681824, 0, -0.2441105842590332, -0.06747453659772873, + -0.24129781126976013, -0.7167539000511169, 0, -0.6958504915237427, 0, + -0.24346546828746796, -0.3902645707130432, 0, 0, -0.34609219431877136, + -0.39096808433532715, -0.3710416555404663, -0.20720192790031433, + -0.26315730810165405, -0.5460323095321655, -0.31883496046066284, + -0.0540509857237339 + ], + [ + -0.5739691257476807, -0.7982832789421082, -0.5832220911979675, + -0.3344179391860962, 0, 0, 0, -0.7229878902435303, -0.23975946009159088, + -0.02525208704173565, -0.7832098603248596, -0.5451709628105164, + -0.14607307314872742, -0.13117754459381104, -0.5490289330482483, + -0.26185792684555054, -0.05446057766675949, -0.400236040353775, 0, + -0.6687770485877991, -0.8234888315200806, 0, -0.12421194463968277, + -0.6585165858268738, 0, -0.1378057599067688, -0.4849033057689667, + -0.8367404341697693, -0.6177282333374023, -0.938725471496582, + -0.0565652921795845, 0, 0, -0.20945578813552856, -0.6316636800765991, + -0.4314115643501282, -0.5602566003799438, -0.35089540481567383, 0, + -0.18822789192199707, -0.1523645669221878, 0, -0.003657947527244687, + -0.514106035232544, 0, 0, 0, -0.3191816210746765, -0.3901296555995941, + -0.15745949745178223 + ], + [ + -0.5645304322242737, -0.7548551559448242, -0.478507399559021, + -0.7061465978622437, -0.2730044424533844, -0.4245196580886841, + -0.05791162699460983, -0.6707209348678589, -0.47595876455307007, + -0.53984534740448, -0.8740549683570862, -0.5821355581283569, + -0.21583986282348633, -0.41320130228996277, -0.5588357448577881, + -0.5107634663581848, -0.43429821729660034, -0.48119527101516724, + -0.09558934718370438, -0.6109267473220825, -0.7043614983558655, + -0.5727865695953369, -0.46358969807624817, -0.5071448683738708, + -0.17203517258167267, -0.4113435745239258, -0.4693479537963867, + -0.7665615677833557, -0.7296420931816101, -0.8822475671768188, + -0.5041004419326782, 0, -0.1053805872797966, -0.5142247080802917, + -0.6310057640075684, -0.43908748030662537, -0.7128658294677734, + -0.5950283408164978, -0.5674756169319153, -0.3838106393814087, + -0.5012232065200806, -0.588233232498169, 0, -0.48173409700393677, + -0.4421956539154053, -0.23046888411045074, -0.18611600995063782, + -0.6631219983100891, -0.5075228214263916, -0.6341915130615234 + ], + [ + -0.3055974543094635, -0.8325998783111572, -0.42464643716812134, + -0.552126944065094, -0.23493251204490662, -0.01143031194806099, + -0.457199364900589, -0.6900500059127808, -0.15932713449001312, + -0.24976061284542084, -0.703217625617981, -0.5327964425086975, 0, + -0.4890305995941162, -0.33671215176582336, -0.055628012865781784, + -0.5536712408065796, 0, 0, -0.5361887216567993, -0.7712525725364685, + -0.19231681525707245, 0, -0.5795110464096069, -0.4842379093170166, 0, + -0.3508276045322418, -0.7926989793777466, -0.49412596225738525, + -0.6450044512748718, -0.015277767553925514, -0.38569626212120056, + -0.27808934450149536, -0.289703905582428, -0.7234577536582947, + -0.20405420660972595, -0.45270633697509766, -0.019393814727663994, + -0.33171042799949646, -0.4619583189487457, -0.0060355328023433685, + -0.33156514167785645, -0.28137218952178955, 0, -0.42248135805130005, + -0.37098392844200134, -0.29942789673805237, -0.31742605566978455, + -0.2579589784145355, -0.06495845317840576 + ], + [ + -0.7443991899490356, -0.8642652630805969, -0.7105177044868469, + -0.7045994997024536, -0.31151965260505676, -0.20696665346622467, 0, + -0.828636884689331, -0.5713462233543396, -0.35360684990882874, + -0.8752127885818481, -0.6881982684135437, -0.46583208441734314, + -0.16685673594474792, -0.7141944169998169, -0.5421236157417297, 0, + -0.6698984503746033, 0, -0.7842918634414673, -0.8421483039855957, + -0.2233101725578308, -0.45477089285850525, -0.7355024814605713, 0, + -0.494177907705307, -0.6919552087783813, -0.863851010799408, + -0.7726448774337769, -0.8991056680679321, -0.4690530598163605, 0, 0, + -0.38034510612487793, -0.7387014031410217, -0.6135409474372864, + -0.7108531594276428, -0.6098228096961975, -0.21406881511211395, + -0.26928743720054626, -0.5032034516334534, -0.5442574620246887, + -0.37873968482017517, -0.7374531030654907, 0, 0, -0.03803625330328941, + -0.5899379253387451, -0.5827544927597046, -0.4982011914253235 + ], + [ + -0.6961256265640259, -0.8401169776916504, -0.7166458964347839, + -0.8631808161735535, -0.5419191122055054, -0.4618867337703705, + -0.5038301944732666, -0.7940061688423157, -0.6733443737030029, + -0.5107362270355225, -0.8415129780769348, -0.7630786895751953, + -0.5289506912231445, -0.5456134676933289, -0.6859113574028015, + -0.6012983918190002, -0.6122459769248962, -0.6869608759880066, + -0.23287774622440338, -0.7604801654815674, -0.8377055525779724, + -0.372802197933197, -0.5040975213050842, -0.7446141242980957, + -0.46599358320236206, -0.5312148332595825, -0.7496342658996582, + -0.8307077288627625, -0.7872701287269592, -0.8366619944572449, + -0.5960595011711121, -0.1456405073404312, -0.0975620299577713, + -0.4734322130680084, -0.8134074211120605, -0.6117832064628601, + -0.7335518598556519, -0.6061843037605286, -0.6262141466140747, + -0.5739644169807434, -0.6005508899688721, -0.6527207493782043, + -0.5897316336631775, -0.725814700126648, -0.6952294111251831, 0, + -0.5171595215797424, -0.6880175471305847, -0.6072676777839661, + -0.5953465104103088 + ], + [ + -0.5245352387428284, -0.6954187750816345, -0.5248321294784546, + -0.770671546459198, -0.26432639360427856, -0.36688339710235596, + -0.14613518118858337, -0.6541601419448853, -0.48992106318473816, + -0.42935052514076233, -0.8003730773925781, -0.5291515588760376, + -0.1740826517343521, -0.46738138794898987, -0.48809146881103516, + -0.40769901871681213, -0.45089295506477356, -0.47717103362083435, 0, + -0.5681852698326111, -0.6673994660377502, -0.41138651967048645, + -0.3672010600566864, -0.4787036180496216, -0.21815252304077148, + -0.31823816895484924, -0.5277663469314575, -0.6895338892936707, + -0.662233293056488, -0.7772203683853149, -0.4767996668815613, 0, + -0.15207304060459137, -0.45380881428718567, -0.6870837807655334, + -0.45413610339164734, -0.6611533164978027, -0.5208131670951843, + -0.5792758464813232, -0.5388714075088501, -0.4655667245388031, + -0.5253747701644897, -0.21956202387809753, -0.5101304650306702, + -0.4785331189632416, -0.02578837238252163, 0, -0.635278582572937, + -0.5387781262397766, -0.5743478536605835 + ], + [ + -0.3277626931667328, -0.7674992084503174, -0.4181143045425415, + -0.5435906648635864, -0.2508854269981384, 0, -0.37046441435813904, + -0.6668661236763, -0.23691478371620178, 0, -0.6544809341430664, + -0.6587148308753967, 0, -0.18380573391914368, -0.3789028823375702, + -0.13505452871322632, -0.32936879992485046, -0.15149785578250885, 0, + -0.5876275300979614, -0.8271116018295288, 0, 0, -0.6967886090278625, + -0.4308139979839325, 0, -0.46027877926826477, -0.8166689276695251, + -0.49591943621635437, -0.7301188707351685, 0, -0.1530516892671585, 0, 0, + -0.7629597783088684, -0.06228044629096985, -0.5202203989028931, 0, 0, + -0.24847111105918884, 0, -0.28195592761039734, -0.3415657579898834, + -0.29088231921195984, -0.25463929772377014, 0, -0.13524292409420013, 0, + 0, 0 + ], + [ + -0.4342012107372284, -0.7554064989089966, -0.6635830998420715, + -0.585508406162262, -0.4492107629776001, -0.23664413392543793, + -0.504213273525238, -0.6774330139160156, -0.4533509612083435, + -0.21620506048202515, -0.6437506675720215, -0.6868640780448914, + -0.30400851368904114, -0.3624624013900757, -0.4832907021045685, + -0.3828095495700836, -0.45512792468070984, -0.38781940937042236, + -0.04506848007440567, -0.6313057541847229, -0.7907102704048157, + -0.05900784209370613, -0.02532266639173031, -0.6967104077339172, + -0.5336740016937256, -0.16907070577144623, -0.5917235612869263, + -0.7625700235366821, -0.5866953730583191, -0.6633127331733704, + -0.23669393360614777, -0.38824084401130676, -0.23285320401191711, 0, + -0.7538903951644897, -0.24456098675727844, -0.5261361598968506, + -0.09151974320411682, -0.28716784715652466, -0.4066909849643707, + -0.22720876336097717, -0.45029836893081665, -0.49611136317253113, + -0.46035104990005493, -0.4485367238521576, -0.28442662954330444, + -0.403250515460968, -0.3717927932739258, 0, -0.18505823612213135 + ], + [ + -0.7056237459182739, -0.9137551784515381, -0.7021877765655518, + -0.7247911095619202, -0.6782935857772827, 0, -0.681267261505127, + -0.8973693251609802, -0.6449584364891052, -0.5239391922950745, + -0.9365918636322021, -0.8676345944404602, -0.6430609226226807, + -0.5119061470031738, -0.8005380034446716, -0.5318857431411743, + -0.5797595381736755, -0.5855153203010559, -0.25062495470046997, + -0.8615602850914001, -0.9809298515319824, -0.13619865477085114, + -0.3159564137458801, -0.9307789206504822, -0.6871480941772461, + -0.47597068548202515, -0.7312474846839905, -0.9471033215522766, + -0.8222036957740784, -0.9560856223106384, -0.44932249188423157, + -0.479076623916626, -0.17490747570991516, -0.387630820274353, + -0.8382570147514343, -0.5407083630561829, -0.7709830403327942, + -0.37934398651123047, -0.4059196412563324, -0.40806594491004944, + -0.4685990512371063, 0, -0.7327863574028015, -0.6765949130058289, + -0.6110031008720398, -0.43168047070503235, -0.6291455626487732, + -0.6300075650215149, -0.44019514322280884, 0 + ] + ], + "velocity_pyro_params": { + "embeddings": ["umap", "pca", "pca", "pca", "pca"], + "mode_neighbors": "distances", + "n_recurse_neighbors": 2 + } + }, + "var": { + "cytotrace": [true, true, true, true, true, true, true], + "cytotrace_corrs": [ + -0.3162762522697449, 0.12602543830871582, 0.33911263942718506, + -0.17416998744010925, -0.1970590054988861, 0.4442867636680603, + -0.22521816194057465 + ], + "fit_alignment_scaling": [ + 4.0517860942969115, 5.0447962573224165, 6.1221654065369595, + 1.1117752256659805, 4.052555797021417, 4.681411623046014, + 7.155710451659271 + ], + "fit_alpha": [ + 0.578055825622483, 0.651591777491511, 0.19773527763225077, + 15.183010606999385, 0.18743906412046135, 0.06910717038574042, + 0.14353477597866035 + ], + "fit_beta": [ + 0.4049099668591707, 0.06721689604059118, 0.08879185161349923, + 43.92897203508826, 0.09881178802021871, 0.04670353953294745, + 0.026252833832793115 + ], + "fit_gamma": [ + 0.38729631129731246, 0.1752584460495083, 0.15620117163746527, + 1.6089132945721085, 0.2547626138391123, 0.17359121914754694, + 0.16490994664835248 + ], + "fit_likelihood": [ + 1.002161883291577, 1.310290218925134, 1.4029942468112047, + 1.7444948741033333, 0.8744808370953906, 0.8309165800022114, + 0.8589213118338758 + ], + "fit_pval_steady": [ + 0.48175699593728344, 0.47505878843369537, 0.4417070755160214, + 0.4960445338579348, 0.46989657120614525, 0.2156900274261639, + 0.4433311484447805 + ], + "fit_r2": [ + 0.17601728439331055, 0.9843522757291794, 0.8610359579324722, + 0.35933393239974976, 0.8454212546348572, 0.9761226903647184, + 0.5675630867481232 + ], + "fit_s0": [0, 0, 0, 0, 0, 0, 0], + "fit_scaling": [ + 0.3352414518594742, 1.5236610253651937, 0.889136780500412, + 0.009213920929469169, 1.1237630617618561, 2.058192014694214, + 2.9277483224868774 + ], + "fit_std_s": [ + 0.44557344913482666, 1.2542463541030884, 0.3499698340892792, + 2.763092279434204, 0.19915622472763062, 0.1053347960114479, + 0.1731736809015274 + ], + "fit_std_u": [ + 0.27159035205841064, 3.6987993717193604, 0.6131449341773987, + 0.05388129875063896, 0.4736601412296295, 0.48177608847618103, + 0.9218344688415527 + ], + "fit_steady_s": [ + 1.2417789497252167, 2.621232801566607, 0.8708771309847461, + 7.532458611603442, 0.5756215246972338, 0.31594003332329207, + 0.5706063552663245 + ], + "fit_steady_u": [ + 1.069621163147297, 8.285346266574217, 1.8469637619913735, + 0.18266854490783505, 1.2469362668415456, 1.4045267875786112, + 4.535181150675765 + ], + "fit_t_": [ + 50.37974420793462, 30.343073385719205, 29.902327516354887, + 18.98848150277561, 35.231629912306, 26.75929936638391, 27.54325115866323 + ], + "fit_u0": [0, 0, 0, 0, 0, 0, 0], + "fit_variance": [ + 0.04672211969216039, 0.03350176644284047, 0.024939376393277802, + 0.016821777210977044, 0.07356961690049205, 0.08315985286951148, + 0.07052107234977445 + ], + "highly_variable_genes": [ + "True", + "True", + "True", + "True", + "True", + "True", + "True" + ], + "index": ["Pam", "Ins2", "Bicc1", "Isl1", "Kcnmb2", "Grin3a", "Cadps"], + "mean_counts": [ + 0.7799999713897705, 2.6600000858306885, 0.800000011920929, + 4.820000171661377, 0.3400000035762787, 0.3199999928474426, + 0.36000001430511475 + ], + "mt": [false, false, false, false, false, false, false], + "n_cells_by_counts": [19, 6, 12, 24, 11, 7, 16], + "pct_dropout_by_counts": [62, 88, 76, 52, 78, 86, 68], + "ribo": [false, false, false, false, false, false, false], + "total_counts": [39, 133, 40, 241, 17, 16, 18], + "velocity_genes": [true, true, true, true, true, true, true] + }, + "varm": { + "PCs": [ + [ + 0.3118375652338071, -0.36485459723885644, -0.10469872584800483, + 0.6555331641368725, -0.4542319915123436, -0.3501726924954318 + ], + [ + 0.1469306623922775, 0.9221466553038565, -0.11378148075948741, + 0.31148538122262087, -0.09303623582006142, -0.09234942386929398 + ], + [ + -0.19780353246991933, 0.023980667628074936, 0.8595006026907642, + 0.4027654201602662, 0.08872225569825411, 0.17987439279100656 + ], + [ + 0.895201013168479, 0.0068501945360562744, 0.3198177098308584, + -0.2940899218213818, 0.07855205292306053, 0.04171393484606036 + ], + [ + 0.13727707580592058, -0.10565209334398679, -0.2277163524332598, + 0.3933873009113639, 0.8680326585485967, -0.08942099048790654 + ], + [ + -0.08052498840532027, 0.0009480531204208609, -0.0006525758700018848, + -0.16898487317034794, 0.003021402963592881, -0.3986608634871754 + ], + [ + 0.12380772440792052, -0.06885788094203335, -0.2884651363232063, + 0.20306355243812288, -0.13223338403647597, 0.8172081877851298 + ] + ], + "loss": [ + [ + 9.104160033679067, + 5.659526460443428, + 5.550459722719419, + 5.396320195265236, + 5.3961762580106765, + 4.116301105607934, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + [ + 6.317015341927311, + 2.27751548396456, + 2.251766447413078, + 2.0686453244628358, + 1.9726592229148214, + 2.2170730605151823, + 1.1984362175579677, + 1.1976916638409534, + null, + null, + null, + null, + null, + null, + null + ], + [ + 7.607685819139538, + 3.3050926966764838, + 3.293123656747615, + 3.234444031156313, + 4.242694693741616, + 2.9604493032565977, + 1.9976215845001482, + null, + null, + null, + null, + null, + null, + null, + null + ], + [ + 14.568440072912201, + 9.942477624347344, + 9.68524626932793, + 7.984742951579451, + 7.077444617039046, + 4.051191846937932, + 2.283827405921061, + 1.9534221759899146, + 1.9492026061230634, + 1.7482135584451959, + 1.6146536693246771, + null, + null, + null, + null + ], + [ + 21.412436041938207, + 7.761416645729354, + 6.91379705135719, + 5.467017829257656, + 5.508867335138303, + 5.474647635389492, + 5.485316497388145, + 3.624033664987899, + 3.48531264734762, + null, + null, + null, + null, + null, + null + ], + [ + 12.732364166093632, + 7.465932140149446, + 6.594532493211832, + 4.659971139374455, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + [ + 14.533792372310117, + 11.233969501155027, + 10.976554340898659, + 10.57434298427803, + 10.571266018408476, + 8.444505105080426, + 6.2024524038149975, + 5.265923266878386, + 5.265923266878386, + 3.1672689608842206, + 3.166145885312764, + null, + null, + null, + null + ] + ] + } +}