|
19 | 19 | { |
20 | 20 | "cell_type": "code", |
21 | 21 | "execution_count": null, |
22 | | - "metadata": { |
23 | | - "tags": [] |
24 | | - }, |
25 | | - "outputs": [], |
26 | | - "source": [ |
27 | | - "#!pip install \"vitessce[all]==3.3.0\" esbuild_py anndata\n", |
28 | | - "!pip install \"mlxtend~=0.23.0\"\n", |
29 | | - "#!pip install -i \"https://test.pypi.org/simple/\" SpatialQuery\n", |
30 | | - "!pip install \"SpatialQuery @ git+https://github.com/ShaokunAn/Spatial-Query@main\"" |
31 | | - ] |
32 | | - }, |
33 | | - { |
34 | | - "cell_type": "code", |
35 | | - "execution_count": 1, |
36 | 22 | "metadata": {}, |
37 | 23 | "outputs": [], |
38 | 24 | "source": [ |
|
44 | 30 | " ViewType as vt,\n", |
45 | 31 | " CoordinationType as ct,\n", |
46 | 32 | " CoordinationLevel as CL,\n", |
| 33 | + " hconcat,\n", |
| 34 | + " vconcat,\n", |
47 | 35 | ")\n", |
48 | 36 | "from vitessce.widget_plugins import SpatialQueryPlugin" |
49 | 37 | ] |
50 | 38 | }, |
| 39 | + { |
| 40 | + "cell_type": "markdown", |
| 41 | + "metadata": {}, |
| 42 | + "source": [ |
| 43 | + "## Download example dataset\n", |
| 44 | + "\n", |
| 45 | + "Download the `secondary_analysis.h5ad` file for sample `HBM838.LDFP.578` from the HuBMAP Portal at https://portal.hubmapconsortium.org/browse/dataset/5bf1e7b295343c4537206beda25aa4ca" |
| 46 | + ] |
| 47 | + }, |
51 | 48 | { |
52 | 49 | "cell_type": "code", |
53 | | - "execution_count": 2, |
| 50 | + "execution_count": null, |
54 | 51 | "metadata": {}, |
55 | 52 | "outputs": [], |
56 | 53 | "source": [ |
57 | | - "adata = read_h5ad(join(\"data\", \"HBM987_KWLK_254\", \"secondary_analysis.h5ad\"))\n", |
| 54 | + "import os\n", |
| 55 | + "from os.path import join, isfile, isdir\n", |
| 56 | + "from urllib.request import urlretrieve\n", |
| 57 | + "\n", |
| 58 | + "adata_path = join(\"data\", \"HBM987_KWLK_254\", \"secondary_analysis.h5ad\")\n", |
58 | 59 | "zarr_path = join(\"data\", \"HBM987_KWLK_254\", \"secondary_analysis.h5ad.zarr\")\n", |
| 60 | + "\n", |
| 61 | + "if not isdir(join(\"data\")):\n", |
| 62 | + " os.makedirs(join(\"data\"), exist_ok=True)\n", |
| 63 | + " if not isdir(join(\"data\", \"HBM987_KWLK_254\")):\n", |
| 64 | + " os.makedirs(join(\"data\", \"HBM987_KWLK_254\"), exist_ok=True)\n", |
| 65 | + " if not isfile(adata_path):\n", |
| 66 | + " urlretrieve('https://assets.hubmapconsortium.org/0a21f3fa27109790483f2a0729be53de/secondary_analysis.h5ad', adata_path)" |
| 67 | + ] |
| 68 | + }, |
| 69 | + { |
| 70 | + "cell_type": "code", |
| 71 | + "execution_count": null, |
| 72 | + "metadata": {}, |
| 73 | + "outputs": [], |
| 74 | + "source": [ |
| 75 | + "adata = read_h5ad(adata_path)\n", |
59 | 76 | "adata.write_zarr(zarr_path)" |
60 | 77 | ] |
61 | 78 | }, |
62 | 79 | { |
63 | 80 | "cell_type": "code", |
64 | | - "execution_count": 3, |
| 81 | + "execution_count": null, |
| 82 | + "metadata": {}, |
| 83 | + "outputs": [], |
| 84 | + "source": [ |
| 85 | + "adata" |
| 86 | + ] |
| 87 | + }, |
| 88 | + { |
| 89 | + "cell_type": "code", |
| 90 | + "execution_count": null, |
65 | 91 | "metadata": {}, |
66 | 92 | "outputs": [], |
67 | 93 | "source": [ |
68 | | - "plugin = SpatialQueryPlugin(adata)" |
| 94 | + "plugin = SpatialQueryPlugin(adata, label_key=\"predicted_label\", spatial_key=\"X_spatial\", feature_name=\"hugo_symbol\")" |
69 | 95 | ] |
70 | 96 | }, |
71 | 97 | { |
72 | 98 | "cell_type": "code", |
73 | | - "execution_count": 12, |
| 99 | + "execution_count": null, |
74 | 100 | "metadata": {}, |
75 | 101 | "outputs": [], |
76 | 102 | "source": [ |
77 | 103 | "vc = VitessceConfig(schema_version=\"1.0.16\", name=\"Spatial-Query\")\n", |
78 | 104 | "dataset = vc.add_dataset(\"Query results\").add_object(AnnDataWrapper(\n", |
79 | 105 | " adata_path=zarr_path,\n", |
80 | 106 | " obs_feature_matrix_path=\"X\",\n", |
81 | | - " obs_set_paths=[\"obs/predicted.ASCT.celltype\"],\n", |
| 107 | + " obs_set_paths=[\"obs/predicted_label\"],\n", |
82 | 108 | " obs_set_names=[\"Cell Type\"],\n", |
83 | 109 | " obs_spots_path=\"obsm/X_spatial\",\n", |
84 | 110 | " feature_labels_path=\"var/hugo_symbol\",\n", |
|
92 | 118 | "sets_view = vc.add_view(\"obsSets\", dataset=dataset)\n", |
93 | 119 | "features_view = vc.add_view(\"featureList\", dataset=dataset)\n", |
94 | 120 | "sq_view = vc.add_view(\"spatialQuery\", dataset=dataset)\n", |
| 121 | + "sq_heatmap = vc.add_view(\"spatialQueryHeatmap\", dataset=dataset)\n", |
| 122 | + "\n", |
95 | 123 | "\n", |
96 | 124 | "obs_set_selection_scope, = vc.add_coordination(\"obsSetSelection\",)\n", |
97 | 125 | "obs_set_selection_scope.set_value(None)\n", |
|
114 | 142 | " ])\n", |
115 | 143 | "})\n", |
116 | 144 | "\n", |
117 | | - "vc.layout((spatial_view | (lc_view / features_view)) / (sets_view | sq_view));" |
| 145 | + "vc.layout((spatial_view | (lc_view / features_view)) / hconcat(sets_view, sq_heatmap, sq_view, split=[1, 1, 1]));" |
118 | 146 | ] |
119 | 147 | }, |
120 | 148 | { |
121 | 149 | "cell_type": "code", |
122 | | - "execution_count": 13, |
| 150 | + "execution_count": null, |
123 | 151 | "metadata": {}, |
124 | 152 | "outputs": [], |
125 | 153 | "source": [ |
126 | 154 | "vw = vc.widget(height=900, plugins=[plugin], remount_on_uid_change=False)\n", |
127 | 155 | "vw" |
128 | 156 | ] |
| 157 | + }, |
| 158 | + { |
| 159 | + "cell_type": "code", |
| 160 | + "execution_count": null, |
| 161 | + "metadata": {}, |
| 162 | + "outputs": [], |
| 163 | + "source": [] |
129 | 164 | } |
130 | 165 | ], |
131 | 166 | "metadata": { |
|
144 | 179 | "name": "python", |
145 | 180 | "nbconvert_exporter": "python", |
146 | 181 | "pygments_lexer": "ipython3", |
147 | | - "version": "3.10.14" |
| 182 | + "version": "3.12.13" |
148 | 183 | } |
149 | 184 | }, |
150 | 185 | "nbformat": 4, |
|
0 commit comments