From bf2780a09853b15be7fc7d27bd392281ee9b6249 Mon Sep 17 00:00:00 2001 From: Jin wook Lee Date: Tue, 15 Mar 2022 21:47:03 +0000 Subject: [PATCH 1/3] add ucsc browser support for hic --- src/encoded/static/vis_defs/HiC_vis_def.json | 8 +++++++- src/encoded/vis_defines.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/encoded/static/vis_defs/HiC_vis_def.json b/src/encoded/static/vis_defs/HiC_vis_def.json index cf25416a50c..0fae1e12569 100644 --- a/src/encoded/static/vis_defs/HiC_vis_def.json +++ b/src/encoded/static/vis_defs/HiC_vis_def.json @@ -10,7 +10,7 @@ "sortOrder": [ "Biosample", "Targets", "Replicates", "Views" ], "Views": { "tag": "view", - "group_order": [ "Topologically associated domains", "Nested TADs", "Genome compartments" ], + "group_order": [ "Topologically associated domains", "Nested TADs", "Genome compartments", "HiC" ], "groups": { "Topologically associated domains": { "tag": "aTADS", @@ -34,6 +34,12 @@ "maxHeightPixels": "64:18:8", "windowingFunction": "mean+whiskers", "output_type": [ "genome compartments" ] + }, + "HiC": { + "tag": "dHIC", + "visibility": "dense", + "type": "hic", + "output_type": [ "chromatin interactions" ] } } }, diff --git a/src/encoded/vis_defines.py b/src/encoded/vis_defines.py index 287757df50f..8ae958b3df8 100644 --- a/src/encoded/vis_defines.py +++ b/src/encoded/vis_defines.py @@ -125,7 +125,7 @@ } BROWSER_FILE_TYPES = { - 'ucsc': {'bigWig', 'bigBed', 'bigInteract'}, + 'ucsc': {'bigWig', 'bigBed', 'bigInteract', 'hic'}, 'ensembl': {'bigWig', 'bigBed'}, 'quickview': {'bigWig', 'bigBed'}, 'hic': {'hic'}, From 69ef66ec02504574de4add7d405e3b36b6bd0a22 Mon Sep 17 00:00:00 2001 From: Jin wook Lee Date: Wed, 23 Mar 2022 23:08:29 +0000 Subject: [PATCH 2/3] use juicebox session for hic vis (instead of urlencoded parameters) --- package-lock.json | 4 ++++ package.json | 1 + src/encoded/static/components/vis_defines.js | 15 ++++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05d49a514d6..3ce83722f77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9594,6 +9594,10 @@ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, + "igv-utils": { + "version": "github:igvteam/igv-utils#22ee3f784d698e4ca8228db22f9b39db052d00b8", + "from": "github:igvteam/igv-utils#v1.2.10-jb" + }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", diff --git a/package.json b/package.json index 142bca1ef13..6f4d37e76ce 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "genome-visualizer": "ENCODE-DCC/valis-hpgv#1.9.0", "google-analytics": "file:node_shims/google-analytics", "graphlib": "ENCODE-DCC/graphlib#v1.0.8", + "igv-utils": "github:igvteam/igv-utils#v1.2.10-jb", "immutable": "^3.7.5", "install": "^0.13.0", "js-cookie": "^2.2.1", diff --git a/src/encoded/static/components/vis_defines.js b/src/encoded/static/components/vis_defines.js index 89ac4f9888a..61f7c09708b 100644 --- a/src/encoded/static/components/vis_defines.js +++ b/src/encoded/static/components/vis_defines.js @@ -8,6 +8,7 @@ import url from 'url'; import * as encoding from '../libs/query_encoding'; import { Modal, ModalHeader, ModalBody, ModalFooter } from '../libs/ui/modal'; import * as globals from './globals'; +import { StringUtils } from 'igv-utils'; /** @@ -116,12 +117,16 @@ export const visOpenBrowser = (dataset, browser, assembly, files, datasetUrl) => delete parsedUrl.path; delete parsedUrl.search; delete parsedUrl.query; - const fileQueries = files.map((file) => { - parsedUrl.pathname = file.href; - const name = file.biological_replicates && file.biological_replicates.length > 0 ? `&name=${dataset.accession} / ${file.title}, Replicate ${file.biological_replicates.join(',')}` : ''; - return encoding.encodedURIComponentOLD(`{hicUrl=${url.format(parsedUrl)}${name}}`, { encodeEquals: true }); + const juiceboxSessionJsonString = JSON.stringify({ + "browsers": files.map((file) => { + parsedUrl.pathname = file.href; + return { + "name": file.biological_replicates && file.biological_replicates.length > 0 ? `${dataset.accession} / ${file.title}, Replicate ${file.biological_replicates.join(',')}` : '', + "url": url.format(parsedUrl), + } + }) }); - href = `http://aidenlab.org/juicebox/?juicebox=${fileQueries.join(',')}`; + href = `http://aidenlab.org/juicebox/?session=blob:${StringUtils.compressString(juiceboxSessionJsonString)}`; break; } case 'Ensembl': { From bb3b48fc1f94b1aa9fa27cafc2d05ce13d5f5dfe Mon Sep 17 00:00:00 2001 From: Jin wook Lee Date: Thu, 24 Mar 2022 00:19:56 +0000 Subject: [PATCH 3/3] lint --- src/encoded/static/components/vis_defines.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/encoded/static/components/vis_defines.js b/src/encoded/static/components/vis_defines.js index 61f7c09708b..6dd877aa366 100644 --- a/src/encoded/static/components/vis_defines.js +++ b/src/encoded/static/components/vis_defines.js @@ -5,10 +5,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import _ from 'underscore'; import url from 'url'; +import { StringUtils } from 'igv-utils'; import * as encoding from '../libs/query_encoding'; import { Modal, ModalHeader, ModalBody, ModalFooter } from '../libs/ui/modal'; import * as globals from './globals'; -import { StringUtils } from 'igv-utils'; /** @@ -118,13 +118,13 @@ export const visOpenBrowser = (dataset, browser, assembly, files, datasetUrl) => delete parsedUrl.search; delete parsedUrl.query; const juiceboxSessionJsonString = JSON.stringify({ - "browsers": files.map((file) => { + browsers: files.map((file) => { parsedUrl.pathname = file.href; return { - "name": file.biological_replicates && file.biological_replicates.length > 0 ? `${dataset.accession} / ${file.title}, Replicate ${file.biological_replicates.join(',')}` : '', - "url": url.format(parsedUrl), - } - }) + name: file.biological_replicates && file.biological_replicates.length > 0 ? `${dataset.accession} / ${file.title}, Replicate ${file.biological_replicates.join(',')}` : '', + url: url.format(parsedUrl), + }; + }), }); href = `http://aidenlab.org/juicebox/?session=blob:${StringUtils.compressString(juiceboxSessionJsonString)}`; break;