{"action":"created","comment":{"url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/comments/143286711","pull_request_review_id":67783393,"id":143286711,"diff_hunk":"@@ -16,16 +16,19 @@\n \n import {ChunkManager} from 'neuroglancer/chunk_manager/frontend';\n import {registerDataSourceFactory} from 'neuroglancer/datasource/factory';\n-import {MeshSourceParameters, VolumeChunkEncoding, VolumeChunkSourceParameters} from 'neuroglancer/datasource/precomputed/base';\n+import {MeshSourceParameters, SkeletonSourceParameters, VolumeChunkEncoding, VolumeChunkSourceParameters} from 'neuroglancer/datasource/precomputed/base';\n+import {parameterizedSkeletonSource} from 'neuroglancer/skeleton/frontend';","path":"src/neuroglancer/datasource/precomputed/frontend.ts","position":6,"original_position":6,"commit_id":"46f5bd925c34a85246c122e0b0757934df12b8b1","original_commit_id":"46f5bd925c34a85246c122e0b0757934df12b8b1","user":{"login":"tartavull","id":4648166,"avatar_url":"https://avatars2.githubusercontent.com/u/4648166?v=4","gravatar_id":"","url":"https://api.github.com/users/tartavull","html_url":"https://github.com/tartavull","followers_url":"https://api.github.com/users/tartavull/followers","following_url":"https://api.github.com/users/tartavull/following{/other_user}","gists_url":"https://api.github.com/users/tartavull/gists{/gist_id}","starred_url":"https://api.github.com/users/tartavull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tartavull/subscriptions","organizations_url":"https://api.github.com/users/tartavull/orgs","repos_url":"https://api.github.com/users/tartavull/repos","events_url":"https://api.github.com/users/tartavull/events{/privacy}","received_events_url":"https://api.github.com/users/tartavull/received_events","type":"User","site_admin":false},"body":"good idea","created_at":"2017-10-06T20:23:22Z","updated_at":"2017-10-06T20:23:22Z","html_url":"https://github.com/seung-lab/neuroglancer/pull/182#discussion_r143286711","pull_request_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/comments/143286711"},"html":{"href":"https://github.com/seung-lab/neuroglancer/pull/182#discussion_r143286711"},"pull_request":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182"}},"in_reply_to_id":143056361},"pull_request":{"url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182","id":145002138,"html_url":"https://github.com/seung-lab/neuroglancer/pull/182","diff_url":"https://github.com/seung-lab/neuroglancer/pull/182.diff","patch_url":"https://github.com/seung-lab/neuroglancer/pull/182.patch","issue_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/182","number":182,"state":"open","locked":false,"title":"feat(skeletons): precomputed support for skeletons","user":{"login":"tartavull","id":4648166,"avatar_url":"https://avatars2.githubusercontent.com/u/4648166?v=4","gravatar_id":"","url":"https://api.github.com/users/tartavull","html_url":"https://github.com/tartavull","followers_url":"https://api.github.com/users/tartavull/followers","following_url":"https://api.github.com/users/tartavull/following{/other_user}","gists_url":"https://api.github.com/users/tartavull/gists{/gist_id}","starred_url":"https://api.github.com/users/tartavull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tartavull/subscriptions","organizations_url":"https://api.github.com/users/tartavull/orgs","repos_url":"https://api.github.com/users/tartavull/repos","events_url":"https://api.github.com/users/tartavull/events{/privacy}","received_events_url":"https://api.github.com/users/tartavull/received_events","type":"User","site_admin":false},"body":"Skeletons were supported by the python backend.\r\nBut not all the code necesary for doing so was available.\r\n\r\nWe were instead using the synapse layer to display skeletons\r\nbut the problem is that large skeletons were not able to be\r\ndisplayed given the max lenght of an url.\r\n\r\nBoth solutions above required running a local server, the precomputed\r\ndatasource let us use s3 or gcs to serve large amounts of data directly,\r\nbut precomputed only supported images and meshes, it can now supporty\r\nskeletons.\r\n\r\nskeletons.py implements encoding for a very simple binary format for\r\nskeletons, which is similar in nature to how meshes are saved.\r\nWe don't yet have any decoder implementation.\r\n\r\nThe neuroglancer frontend it's very flexible in how to display skeletons,\r\nit allows you to store abitrary information for every vertex, and that\r\ncan be used to represent skeletons in complex ways.\r\nThe data is tranform into the visual represetantion by means of a\r\nfragment shader that can be modify by ther users.\r\n./src/neuroglancer/sliceview/image_layer_rendering.md\r\n\r\nWe currently only support specifying the vertex position and nothing else.\r\nBut this limitation can be easily lift. We would need to store metadata\r\nabout the vertex attributes in the info file. And we will do it if the\r\nneed for this arises. Our current strategy was to deployed what it's\r\ncurrently required.\r\n\r\nAll we store in the info file now is the relative path to the folder\r\ncontaining the skeletons, analogously as how we store meshes.\r\nfor example a new info file might look like:\r\n\r\n{\r\n\t\"num_channels\": 1,\r\n\t\"type\": \"segmentation\",\r\n\t\"data_type\": \"uint32\",\r\n\t\"skeletons\": \"skeletons\",\r\n\t\"mesh\": \"mesh_mip_3_err_40\",\r\n\t\"scales\": [{\r\n\t\t\"encoding\": \"raw\",\r\n\t\t\"chunk_sizes\": [\r\n\t\t\t[64,...\r\n\r\ninformation on how to write shaders can be found here:\r\n./src/neuroglancer/sliceview/image_layer_rendering.md","created_at":"2017-10-05T19:35:46Z","updated_at":"2017-10-06T20:23:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5cafc16c065223eb2e0a29624f8dd5650f9defbe","assignee":{"login":"tartavull","id":4648166,"avatar_url":"https://avatars2.githubusercontent.com/u/4648166?v=4","gravatar_id":"","url":"https://api.github.com/users/tartavull","html_url":"https://github.com/tartavull","followers_url":"https://api.github.com/users/tartavull/followers","following_url":"https://api.github.com/users/tartavull/following{/other_user}","gists_url":"https://api.github.com/users/tartavull/gists{/gist_id}","starred_url":"https://api.github.com/users/tartavull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tartavull/subscriptions","organizations_url":"https://api.github.com/users/tartavull/orgs","repos_url":"https://api.github.com/users/tartavull/repos","events_url":"https://api.github.com/users/tartavull/events{/privacy}","received_events_url":"https://api.github.com/users/tartavull/received_events","type":"User","site_admin":false},"assignees":[{"login":"tartavull","id":4648166,"avatar_url":"https://avatars2.githubusercontent.com/u/4648166?v=4","gravatar_id":"","url":"https://api.github.com/users/tartavull","html_url":"https://github.com/tartavull","followers_url":"https://api.github.com/users/tartavull/followers","following_url":"https://api.github.com/users/tartavull/following{/other_user}","gists_url":"https://api.github.com/users/tartavull/gists{/gist_id}","starred_url":"https://api.github.com/users/tartavull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tartavull/subscriptions","organizations_url":"https://api.github.com/users/tartavull/orgs","repos_url":"https://api.github.com/users/tartavull/repos","events_url":"https://api.github.com/users/tartavull/events{/privacy}","received_events_url":"https://api.github.com/users/tartavull/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"jabae","id":18710780,"avatar_url":"https://avatars3.githubusercontent.com/u/18710780?v=4","gravatar_id":"","url":"https://api.github.com/users/jabae","html_url":"https://github.com/jabae","followers_url":"https://api.github.com/users/jabae/followers","following_url":"https://api.github.com/users/jabae/following{/other_user}","gists_url":"https://api.github.com/users/jabae/gists{/gist_id}","starred_url":"https://api.github.com/users/jabae/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jabae/subscriptions","organizations_url":"https://api.github.com/users/jabae/orgs","repos_url":"https://api.github.com/users/jabae/repos","events_url":"https://api.github.com/users/jabae/events{/privacy}","received_events_url":"https://api.github.com/users/jabae/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182/commits","review_comments_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182/comments","review_comment_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/comments{/number}","comments_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/182/comments","statuses_url":"https://api.github.com/repos/seung-lab/neuroglancer/statuses/46f5bd925c34a85246c122e0b0757934df12b8b1","head":{"label":"seung-lab:it_precomputed_skeletons","ref":"it_precomputed_skeletons","sha":"46f5bd925c34a85246c122e0b0757934df12b8b1","user":{"login":"seung-lab","id":796718,"avatar_url":"https://avatars0.githubusercontent.com/u/796718?v=4","gravatar_id":"","url":"https://api.github.com/users/seung-lab","html_url":"https://github.com/seung-lab","followers_url":"https://api.github.com/users/seung-lab/followers","following_url":"https://api.github.com/users/seung-lab/following{/other_user}","gists_url":"https://api.github.com/users/seung-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/seung-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seung-lab/subscriptions","organizations_url":"https://api.github.com/users/seung-lab/orgs","repos_url":"https://api.github.com/users/seung-lab/repos","events_url":"https://api.github.com/users/seung-lab/events{/privacy}","received_events_url":"https://api.github.com/users/seung-lab/received_events","type":"Organization","site_admin":false},"repo":{"id":76393283,"name":"neuroglancer","full_name":"seung-lab/neuroglancer","owner":{"login":"seung-lab","id":796718,"avatar_url":"https://avatars0.githubusercontent.com/u/796718?v=4","gravatar_id":"","url":"https://api.github.com/users/seung-lab","html_url":"https://github.com/seung-lab","followers_url":"https://api.github.com/users/seung-lab/followers","following_url":"https://api.github.com/users/seung-lab/following{/other_user}","gists_url":"https://api.github.com/users/seung-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/seung-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seung-lab/subscriptions","organizations_url":"https://api.github.com/users/seung-lab/orgs","repos_url":"https://api.github.com/users/seung-lab/repos","events_url":"https://api.github.com/users/seung-lab/events{/privacy}","received_events_url":"https://api.github.com/users/seung-lab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/seung-lab/neuroglancer","description":"WebGL-based viewer for volumetric data","fork":true,"url":"https://api.github.com/repos/seung-lab/neuroglancer","forks_url":"https://api.github.com/repos/seung-lab/neuroglancer/forks","keys_url":"https://api.github.com/repos/seung-lab/neuroglancer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/seung-lab/neuroglancer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/seung-lab/neuroglancer/teams","hooks_url":"https://api.github.com/repos/seung-lab/neuroglancer/hooks","issue_events_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/events{/number}","events_url":"https://api.github.com/repos/seung-lab/neuroglancer/events","assignees_url":"https://api.github.com/repos/seung-lab/neuroglancer/assignees{/user}","branches_url":"https://api.github.com/repos/seung-lab/neuroglancer/branches{/branch}","tags_url":"https://api.github.com/repos/seung-lab/neuroglancer/tags","blobs_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/refs{/sha}","trees_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/seung-lab/neuroglancer/statuses/{sha}","languages_url":"https://api.github.com/repos/seung-lab/neuroglancer/languages","stargazers_url":"https://api.github.com/repos/seung-lab/neuroglancer/stargazers","contributors_url":"https://api.github.com/repos/seung-lab/neuroglancer/contributors","subscribers_url":"https://api.github.com/repos/seung-lab/neuroglancer/subscribers","subscription_url":"https://api.github.com/repos/seung-lab/neuroglancer/subscription","commits_url":"https://api.github.com/repos/seung-lab/neuroglancer/commits{/sha}","git_commits_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/commits{/sha}","comments_url":"https://api.github.com/repos/seung-lab/neuroglancer/comments{/number}","issue_comment_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/comments{/number}","contents_url":"https://api.github.com/repos/seung-lab/neuroglancer/contents/{+path}","compare_url":"https://api.github.com/repos/seung-lab/neuroglancer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/seung-lab/neuroglancer/merges","archive_url":"https://api.github.com/repos/seung-lab/neuroglancer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/seung-lab/neuroglancer/downloads","issues_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues{/number}","pulls_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls{/number}","milestones_url":"https://api.github.com/repos/seung-lab/neuroglancer/milestones{/number}","notifications_url":"https://api.github.com/repos/seung-lab/neuroglancer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/seung-lab/neuroglancer/labels{/name}","releases_url":"https://api.github.com/repos/seung-lab/neuroglancer/releases{/id}","deployments_url":"https://api.github.com/repos/seung-lab/neuroglancer/deployments","created_at":"2016-12-13T19:54:36Z","updated_at":"2017-09-03T16:18:47Z","pushed_at":"2017-10-06T02:51:47Z","git_url":"git://github.com/seung-lab/neuroglancer.git","ssh_url":"git@github.com:seung-lab/neuroglancer.git","clone_url":"https://github.com/seung-lab/neuroglancer.git","svn_url":"https://github.com/seung-lab/neuroglancer","homepage":"https://neuromancer-seung-import.appspot.com/","size":7468,"stargazers_count":6,"watchers_count":6,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":71,"forks":2,"open_issues":71,"watchers":6,"default_branch":"master"}},"base":{"label":"seung-lab:master","ref":"master","sha":"0ce604f18be3387466e5acb0b82906c200a17ff6","user":{"login":"seung-lab","id":796718,"avatar_url":"https://avatars0.githubusercontent.com/u/796718?v=4","gravatar_id":"","url":"https://api.github.com/users/seung-lab","html_url":"https://github.com/seung-lab","followers_url":"https://api.github.com/users/seung-lab/followers","following_url":"https://api.github.com/users/seung-lab/following{/other_user}","gists_url":"https://api.github.com/users/seung-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/seung-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seung-lab/subscriptions","organizations_url":"https://api.github.com/users/seung-lab/orgs","repos_url":"https://api.github.com/users/seung-lab/repos","events_url":"https://api.github.com/users/seung-lab/events{/privacy}","received_events_url":"https://api.github.com/users/seung-lab/received_events","type":"Organization","site_admin":false},"repo":{"id":76393283,"name":"neuroglancer","full_name":"seung-lab/neuroglancer","owner":{"login":"seung-lab","id":796718,"avatar_url":"https://avatars0.githubusercontent.com/u/796718?v=4","gravatar_id":"","url":"https://api.github.com/users/seung-lab","html_url":"https://github.com/seung-lab","followers_url":"https://api.github.com/users/seung-lab/followers","following_url":"https://api.github.com/users/seung-lab/following{/other_user}","gists_url":"https://api.github.com/users/seung-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/seung-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seung-lab/subscriptions","organizations_url":"https://api.github.com/users/seung-lab/orgs","repos_url":"https://api.github.com/users/seung-lab/repos","events_url":"https://api.github.com/users/seung-lab/events{/privacy}","received_events_url":"https://api.github.com/users/seung-lab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/seung-lab/neuroglancer","description":"WebGL-based viewer for volumetric data","fork":true,"url":"https://api.github.com/repos/seung-lab/neuroglancer","forks_url":"https://api.github.com/repos/seung-lab/neuroglancer/forks","keys_url":"https://api.github.com/repos/seung-lab/neuroglancer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/seung-lab/neuroglancer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/seung-lab/neuroglancer/teams","hooks_url":"https://api.github.com/repos/seung-lab/neuroglancer/hooks","issue_events_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/events{/number}","events_url":"https://api.github.com/repos/seung-lab/neuroglancer/events","assignees_url":"https://api.github.com/repos/seung-lab/neuroglancer/assignees{/user}","branches_url":"https://api.github.com/repos/seung-lab/neuroglancer/branches{/branch}","tags_url":"https://api.github.com/repos/seung-lab/neuroglancer/tags","blobs_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/refs{/sha}","trees_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/seung-lab/neuroglancer/statuses/{sha}","languages_url":"https://api.github.com/repos/seung-lab/neuroglancer/languages","stargazers_url":"https://api.github.com/repos/seung-lab/neuroglancer/stargazers","contributors_url":"https://api.github.com/repos/seung-lab/neuroglancer/contributors","subscribers_url":"https://api.github.com/repos/seung-lab/neuroglancer/subscribers","subscription_url":"https://api.github.com/repos/seung-lab/neuroglancer/subscription","commits_url":"https://api.github.com/repos/seung-lab/neuroglancer/commits{/sha}","git_commits_url":"https://api.github.com/repos/seung-lab/neuroglancer/git/commits{/sha}","comments_url":"https://api.github.com/repos/seung-lab/neuroglancer/comments{/number}","issue_comment_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues/comments{/number}","contents_url":"https://api.github.com/repos/seung-lab/neuroglancer/contents/{+path}","compare_url":"https://api.github.com/repos/seung-lab/neuroglancer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/seung-lab/neuroglancer/merges","archive_url":"https://api.github.com/repos/seung-lab/neuroglancer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/seung-lab/neuroglancer/downloads","issues_url":"https://api.github.com/repos/seung-lab/neuroglancer/issues{/number}","pulls_url":"https://api.github.com/repos/seung-lab/neuroglancer/pulls{/number}","milestones_url":"https://api.github.com/repos/seung-lab/neuroglancer/milestones{/number}","notifications_url":"https://api.github.com/repos/seung-lab/neuroglancer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/seung-lab/neuroglancer/labels{/name}","releases_url":"https://api.github.com/repos/seung-lab/neuroglancer/releases{/id}","deployments_url":"https://api.github.com/repos/seung-lab/neuroglancer/deployments","created_at":"2016-12-13T19:54:36Z","updated_at":"2017-09-03T16:18:47Z","pushed_at":"2017-10-06T02:51:47Z","git_url":"git://github.com/seung-lab/neuroglancer.git","ssh_url":"git@github.com:seung-lab/neuroglancer.git","clone_url":"https://github.com/seung-lab/neuroglancer.git","svn_url":"https://github.com/seung-lab/neuroglancer","homepage":"https://neuromancer-seung-import.appspot.com/","size":7468,"stargazers_count":6,"watchers_count":6,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":71,"forks":2,"open_issues":71,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182"},"html":{"href":"https://github.com/seung-lab/neuroglancer/pull/182"},"issue":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/issues/182"},"comments":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/issues/182/comments"},"review_comments":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182/comments"},"review_comment":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/pulls/182/commits"},"statuses":{"href":"https://api.github.com/repos/seung-lab/neuroglancer/statuses/46f5bd925c34a85246c122e0b0757934df12b8b1"}},"author_association":"NONE"}}
{"actor":{"display_login":"tartavull"}}