-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into lane/pnpm-update
- Loading branch information
Showing
24 changed files
with
4,985 additions
and
5,355 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<!doctype html> | ||
<html> | ||
<body> | ||
<div | ||
id="sidebar" | ||
style="top: 0; left: 0; width: 15%; height: 100%; position: absolute" | ||
></div> | ||
<div | ||
id="main" | ||
style="top: 0; left: 15%; width: 85%; height: 100%; position: absolute" | ||
/> | ||
</body> | ||
</html> | ||
<script | ||
type="module" | ||
src="./src/omezarr/omezarr.ts" | ||
></script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import React, { useEffect, useState } from 'react'; | ||
import { RenderServerProvider } from '~/common/react/render-server-provider'; | ||
import { SliceView } from './sliceview'; | ||
import { type OmeZarrDataset, loadOmeZarr } from '@alleninstitute/vis-omezarr'; | ||
|
||
const demo_versa = 'https://neuroglancer-vis-prototype.s3.amazonaws.com/VERSA/scratch/0500408166/'; | ||
|
||
export function AppUi() { | ||
return <DataPlease />; | ||
} | ||
|
||
function DataPlease() { | ||
// load our canned data for now: | ||
const [omezarr, setfile] = useState<OmeZarrDataset | undefined>(undefined); | ||
useEffect(() => { | ||
loadOmeZarr(demo_versa).then((dataset) => { | ||
setfile(dataset); | ||
console.log('loaded!'); | ||
}); | ||
}, []); | ||
return ( | ||
<RenderServerProvider> | ||
<SliceView omezarr={omezarr} /> | ||
</RenderServerProvider> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import { createRoot } from 'react-dom/client'; | ||
import { AppUi } from './app'; | ||
|
||
const uiroot = createRoot(document.getElementById('main')!); | ||
uiroot.render(AppUi()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
import { type box2D, Box2D, Vec2 } from '@alleninstitute/vis-geometry'; | ||
import { | ||
buildAsyncOmezarrRenderer, | ||
defaultDecoder, | ||
type VoxelTile, | ||
type ZarrDataset, | ||
type RenderSettings, | ||
} from '@alleninstitute/vis-omezarr'; | ||
import type { RenderFrameFn } from '@alleninstitute/vis-scatterbrain'; | ||
import React, { useState } from 'react'; | ||
import { useContext, useEffect, useRef } from 'react'; | ||
import { renderServerContext } from '~/common/react/render-server-provider'; | ||
type Props = { | ||
omezarr: ZarrDataset | undefined; | ||
}; | ||
const settings: RenderSettings = { | ||
tileSize: 256, | ||
gamut: { | ||
R: { gamut: { min: 0, max: 80 }, index: 0 }, | ||
G: { gamut: { min: 0, max: 100 }, index: 1 }, | ||
B: { gamut: { min: 0, max: 100 }, index: 2 }, | ||
}, | ||
plane: 'xy', | ||
planeIndex: 0, | ||
camera: { | ||
view: Box2D.create([0, 0], [250, 120]), | ||
screenSize: [500, 500], | ||
}, | ||
}; | ||
function compose(ctx: CanvasRenderingContext2D, image: ImageData) { | ||
ctx.putImageData(image, 0, 0); | ||
} | ||
|
||
export function SliceView(props: Props) { | ||
const { omezarr } = props; | ||
const server = useContext(renderServerContext); | ||
const cnvs = useRef<HTMLCanvasElement>(null); | ||
const renderer = useRef<ReturnType<typeof buildAsyncOmezarrRenderer>>(); | ||
const [view, setView] = useState<box2D>(Box2D.create([0, 0], [250, 120])); | ||
useEffect(() => { | ||
if (server && server.regl) { | ||
renderer.current = buildAsyncOmezarrRenderer(server.regl, defaultDecoder); | ||
} | ||
return () => { | ||
if (cnvs.current) { | ||
server?.destroyClient(cnvs.current); | ||
} | ||
}; | ||
}, [server]); | ||
|
||
useEffect(() => { | ||
if (server && renderer.current && cnvs.current && omezarr) { | ||
const hey: RenderFrameFn<ZarrDataset, VoxelTile> = (target, cache, callback) => { | ||
if (renderer.current) { | ||
return renderer.current( | ||
omezarr, | ||
{ ...settings, camera: { ...settings.camera, view } }, | ||
callback, | ||
target, | ||
cache | ||
); | ||
} | ||
return null; | ||
}; | ||
server.beginRendering( | ||
hey, | ||
(e) => { | ||
switch (e.status) { | ||
case 'begin': | ||
server.regl?.clear({ framebuffer: e.target, color: [0, 0, 0, 0], depth: 1 }); | ||
break; | ||
case 'progress': | ||
// wanna see the tiles as they arrive? | ||
e.server.copyToClient(compose); | ||
break; | ||
case 'finished': { | ||
e.server.copyToClient(compose); | ||
} | ||
} | ||
}, | ||
cnvs.current | ||
); | ||
} | ||
}, [server, renderer.current, cnvs.current, omezarr, view]); | ||
return ( | ||
<canvas | ||
id={'hey there'} | ||
ref={cnvs} | ||
onWheel={(e) => { | ||
const scale = e.deltaY > 0 ? 1.1 : 0.9; | ||
const m = Box2D.midpoint(view); | ||
const v = Box2D.translate(Box2D.scale(Box2D.translate(view, Vec2.scale(m, -1)), [scale, scale]), m); | ||
setView(v); | ||
}} | ||
width={settings.camera.screenSize[0]} | ||
height={settings.camera.screenSize[1]} | ||
></canvas> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
{ | ||
"name": "@alleninstitute/vis-omezarr", | ||
"version": "0.0.1", | ||
"contributors": [ | ||
{ | ||
"name": "Lane Sawyer", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Noah Shepard", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Skyler Moosman", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Su Li", | ||
"email": "[email protected]" | ||
} | ||
], | ||
"license": "BSD-3-Clause", | ||
"source": "src/index.ts", | ||
"main": "dist/main.js", | ||
"module": "dist/module.js", | ||
"types": "dist/types.d.ts", | ||
"files": [ | ||
"dist" | ||
], | ||
"scripts": { | ||
"preinstall": "npx only-allow pnpm", | ||
"typecheck": "tsc --noEmit", | ||
"build": "parcel build --no-cache", | ||
"dev": "vite", | ||
"test": "vitest --watch" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/AllenInstitute/vis.git" | ||
}, | ||
"publishConfig": { | ||
"registry": "https://npm.pkg.github.com/AllenInstitute" | ||
}, | ||
"devDependencies": { | ||
"@types/lodash": "^4.14.202", | ||
"typescript": "^5.3.3", | ||
"parcel": "2.12.0", | ||
"@parcel/packager-ts": "^2.12.0", | ||
"@parcel/transformer-typescript-types": "^2.12.0" | ||
}, | ||
"dependencies": { | ||
"@alleninstitute/vis-geometry": "workspace:*", | ||
"@alleninstitute/vis-scatterbrain": "workspace:*", | ||
"lodash": "^4.17.21", | ||
"regl": "^2.1.0", | ||
"zarrita": "0.4.0-next.14" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
export { | ||
type OmeZarrDataset, | ||
buildOmeZarrSliceRenderer, | ||
buildAsyncOmezarrRenderer, | ||
type VoxelTileImage, | ||
} from './sliceview/slice-renderer'; | ||
export { type VoxelTile, defaultDecoder, getVisibleTiles } from './sliceview/loader'; | ||
export { buildTileRenderer } from './sliceview/tile-renderer'; | ||
export { load as loadOmeZarr } from './zarr-data'; | ||
export { | ||
loadMetadata, | ||
pickBestScale, | ||
getSlice, | ||
sizeInUnits, | ||
sizeInVoxels, | ||
sliceDimensionForPlane, | ||
uvForPlane, | ||
planeSizeInVoxels, | ||
type ZarrDataset, | ||
type ZarrRequest, | ||
} from './zarr-data'; |
Oops, something went wrong.