diff --git a/README.md b/README.md index ab4da8af..f6202147 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Gene Normalizer ## Overview -The Gene Normalizer provides tools for resolving ambiguous human gene references to consistently-structured, normalized terms. For gene concepts extracted from [NCBI Gene](https://www.ncbi.nlm.nih.gov/gene/), [Ensembl](https://useast.ensembl.org/index.html), and [HGNC](https://www.genenames.org/), it designates a [CURIE](https://en.wikipedia.org/wiki/CURIE), and provides additional metadata like current and previously-used symbols, aliases, database cross-references and associations, and coordinates. +The Gene Normalizer provides tools for resolving ambiguous human gene references to consistently-structured, normalized terms. For gene concepts extracted from [NCBI Gene](https://www.ncbi.nlm.nih.gov/gene/), [Ensembl](https://useast.ensembl.org/index.html), and [HGNC](https://www.genenames.org/), it designates a [CURIE](https://en.wikipedia.org/wiki/CURIE), and provides additional metadata like current and previously-used symbols, aliases, database cross-references, and coordinates. --- diff --git a/docs/scripts/generate_normalize_figure.py b/docs/scripts/generate_normalize_figure.py index bb05c7c1..54696855 100644 --- a/docs/scripts/generate_normalize_figure.py +++ b/docs/scripts/generate_normalize_figure.py @@ -111,7 +111,7 @@ def gen_norm_figure() -> None: ) fig.export_html( ( - APP_ROOT.parents[0] + APP_ROOT.parents[2] / "docs" / "source" / "_static" diff --git a/docs/source/_static/html/normalize_example.html b/docs/source/_static/html/normalize_example.html index b22e5b3a..dc09c719 100644 --- a/docs/source/_static/html/normalize_example.html +++ b/docs/source/_static/html/normalize_example.html @@ -6,25 +6,25 @@
-{\n \"concept_id\": \"hgnc:33281\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": \"approved\",\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": null,\n \"location_annotations\": [],\n \"locations\": [],\n \"aliases\": [],\n \"previous_symbols\": [\n \"OTX2P\"\n ],\n \"xrefs\": [\n \"ncbigene:100033409\",\n \"ensembl:ENSG00000234644\"\n ],\n \"associated_with\": [\n \"refseq:NG_032194\",\n \"vega:OTTHUMG00000020037\",\n \"homeodb:8593\",\n \"pseudogene.org:PGOHUM00000303938\"\n ],\n \"gene_type\": \"pseudogene\"\n}
"}}, "ncbigene:100033409": {"metadata": {"color": "#00BA38", "hover": "ncbigene:100033409\nOTX2P1\nOTX2 pseudogene 1", "click": "{\n \"concept_id\": \"ncbigene:100033409\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": \"-\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.nfBggPI8ffYAIbf7DKA8IcL95VNeUzQ6\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.KEO-4XBcm1cxeo_DIQ8_ofqGUkp4iZhI\",\n \"residueAlphabet\": null\n },\n \"start\": 75724170,\n \"end\": 75724811\n }\n ],\n \"aliases\": [\n \"OTX2P\"\n ],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:33281\"\n ],\n \"associated_with\": [],\n \"gene_type\": \"pseudo\"\n}
"}}, "ensembl:ENSG00000234644": {"metadata": {"color": "#00B9E3", "hover": "ensembl:ENSG00000234644\nOTX2P1\nOTX2 pseudogene 1", "click": "{\n \"concept_id\": \"ensembl:ENSG00000234644\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": \"-\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL._CHxr4orI5x27KUc2VPGa0JnGJ0MEMms\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.KEO-4XBcm1cxeo_DIQ8_ofqGUkp4iZhI\",\n \"residueAlphabet\": null\n },\n \"start\": 75724221,\n \"end\": 75724575\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:33281\"\n ],\n \"associated_with\": [],\n \"gene_type\": \"processed_pseudogene\"\n}
"}}, "hgnc:54560": {"metadata": {"color": "#F8766D", "hover": "hgnc:54560\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"hgnc:54560\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": \"approved\",\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": null,\n \"location_annotations\": [],\n \"locations\": [],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"ncbigene:100419816\",\n \"ensembl:ENSG00000227134\"\n ],\n \"associated_with\": [\n \"refseq:NG_023739\"\n ],\n \"gene_type\": \"pseudogene\"\n}
"}}, "ensembl:ENSG00000227134": {"metadata": {"color": "#00BA38", "hover": "ensembl:ENSG00000227134\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"ensembl:ENSG00000227134\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": \"+\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.JvQZZy4EBCYE2uCSnDfeOpAau8XfbIlq\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.pnAqCRBrTsUoBghSD1yp_jXWSmlbdh4g\",\n \"residueAlphabet\": null\n },\n \"start\": 146477426,\n \"end\": 146478113\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:54560\"\n ],\n \"associated_with\": [],\n \"gene_type\": \"processed_pseudogene\"\n}
"}}, "ncbigene:100419816": {"metadata": {"color": "#00B9E3", "hover": "ncbigene:100419816\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"ncbigene:100419816\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": \"+\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.9zWoRFYc-hnhG5xUfCxB2hU_JTj3Bw3Z\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.pnAqCRBrTsUoBghSD1yp_jXWSmlbdh4g\",\n \"residueAlphabet\": null\n },\n \"start\": 146477354,\n \"end\": 146478110\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"ensembl:ENSG00000227134\",\n \"hgnc:54560\"\n ],\n \"associated_with\": [],\n \"gene_type\": \"pseudo\"\n}
"}}}, "edges": [{"source": "hgnc:33281", "target": "ncbigene:100033409"}, {"source": "hgnc:33281", "target": "ensembl:ENSG00000234644"}, {"source": "ncbigene:100033409", "target": "hgnc:33281"}, {"source": "ensembl:ENSG00000234644", "target": "hgnc:33281"}, {"source": "hgnc:54560", "target": "ncbigene:100419816"}, {"source": "hgnc:54560", "target": "ensembl:ENSG00000227134"}, {"source": "ensembl:ENSG00000227134", "target": "hgnc:54560"}, {"source": "ncbigene:100419816", "target": "ensembl:ENSG00000227134"}, {"source": "ncbigene:100419816", "target": "hgnc:54560"}]}]; + state.rawData = [{"label": "Reference network for OTX2P1 and OTX2P2", "metadata": {"arrow_size": 15, "node_size": 15, "node_label_size": 20, "edge_size": 2}, "nodes": {"hgnc:33281": {"metadata": {"color": "#F8766D", "hover": "hgnc:33281\nOTX2P1\nOTX2 pseudogene 1", "click": "{\n \"concept_id\": \"hgnc:33281\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": \"approved\",\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": null,\n \"location_annotations\": [],\n \"locations\": [],\n \"aliases\": [],\n \"previous_symbols\": [\n \"OTX2P\"\n ],\n \"xrefs\": [\n \"vega:OTTHUMG00000020037\",\n \"refseq:NG_032194\",\n \"homeodb:8593\",\n \"pseudogene.org:PGOHUM00000303938\",\n \"ensembl:ENSG00000234644\",\n \"ncbigene:100033409\"\n ],\n \"gene_type\": \"pseudogene\"\n}
"}}, "ensembl:ENSG00000234644": {"metadata": {"color": "#00BA38", "hover": "ensembl:ENSG00000234644\nOTX2P1\nOTX2 pseudogene 1", "click": "{\n \"concept_id\": \"ensembl:ENSG00000234644\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": \"-\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL._CHxr4orI5x27KUc2VPGa0JnGJ0MEMms\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.KEO-4XBcm1cxeo_DIQ8_ofqGUkp4iZhI\",\n \"residueAlphabet\": null\n },\n \"start\": 75724221,\n \"end\": 75724575\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:33281\"\n ],\n \"gene_type\": \"processed_pseudogene\"\n}
"}}, "ncbigene:100033409": {"metadata": {"color": "#00B9E3", "hover": "ncbigene:100033409\nOTX2P1\nOTX2 pseudogene 1", "click": "{\n \"concept_id\": \"ncbigene:100033409\",\n \"symbol\": \"OTX2P1\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 1\",\n \"strand\": \"-\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.nfBggPI8ffYAIbf7DKA8IcL95VNeUzQ6\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.KEO-4XBcm1cxeo_DIQ8_ofqGUkp4iZhI\",\n \"residueAlphabet\": null\n },\n \"start\": 75724170,\n \"end\": 75724811\n }\n ],\n \"aliases\": [\n \"OTX2P\"\n ],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:33281\"\n ],\n \"gene_type\": \"pseudo\"\n}
"}}, "hgnc:54560": {"metadata": {"color": "#F8766D", "hover": "hgnc:54560\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"hgnc:54560\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": \"approved\",\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": null,\n \"location_annotations\": [],\n \"locations\": [],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"refseq:NG_023739\",\n \"ncbigene:100419816\",\n \"ensembl:ENSG00000227134\"\n ],\n \"gene_type\": \"pseudogene\"\n}
"}}, "ncbigene:100419816": {"metadata": {"color": "#00BA38", "hover": "ncbigene:100419816\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"ncbigene:100419816\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": \"+\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.9zWoRFYc-hnhG5xUfCxB2hU_JTj3Bw3Z\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.pnAqCRBrTsUoBghSD1yp_jXWSmlbdh4g\",\n \"residueAlphabet\": null\n },\n \"start\": 146477354,\n \"end\": 146478110\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"ensembl:ENSG00000227134\",\n \"hgnc:54560\"\n ],\n \"gene_type\": \"pseudo\"\n}
"}}, "ensembl:ENSG00000227134": {"metadata": {"color": "#00B9E3", "hover": "ensembl:ENSG00000227134\nOTX2P2\nOTX2 pseudogene 2", "click": "{\n \"concept_id\": \"ensembl:ENSG00000227134\",\n \"symbol\": \"OTX2P2\",\n \"symbol_status\": null,\n \"label\": \"OTX2 pseudogene 2\",\n \"strand\": \"+\",\n \"location_annotations\": [],\n \"locations\": [\n {\n \"id\": \"ga4gh:SL.JvQZZy4EBCYE2uCSnDfeOpAau8XfbIlq\",\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceLocation\",\n \"sequenceReference\": {\n \"id\": null,\n \"label\": null,\n \"description\": null,\n \"extensions\": null,\n \"digest\": null,\n \"type\": \"SequenceReference\",\n \"refgetAccession\": \"SQ.pnAqCRBrTsUoBghSD1yp_jXWSmlbdh4g\",\n \"residueAlphabet\": null\n },\n \"start\": 146477426,\n \"end\": 146478113\n }\n ],\n \"aliases\": [],\n \"previous_symbols\": [],\n \"xrefs\": [\n \"hgnc:54560\"\n ],\n \"gene_type\": \"processed_pseudogene\"\n}
"}}}, "edges": [{"source": "hgnc:33281", "target": "ensembl:ENSG00000234644"}, {"source": "hgnc:33281", "target": "ncbigene:100033409"}, {"source": "ensembl:ENSG00000234644", "target": "hgnc:33281"}, {"source": "ncbigene:100033409", "target": "hgnc:33281"}, {"source": "hgnc:54560", "target": "ncbigene:100419816"}, {"source": "hgnc:54560", "target": "ensembl:ENSG00000227134"}, {"source": "ncbigene:100419816", "target": "ensembl:ENSG00000227134"}, {"source": "ncbigene:100419816", "target": "hgnc:54560"}, {"source": "ensembl:ENSG00000227134", "target": "hgnc:54560"}]}]; // Data selection and normalization state.nodeSizeDataSource = "size"; state.useNodeSizeNormalization = false; @@ -2000,126 +2000,126 @@ elements:{ // Containers - mainContainer: document.getElementById("i8EK4UFXUqNxcNnZd-main-div"), - tooltipContainer: document.getElementById("i8EK4UFXUqNxcNnZd-tooltip-div"), - leftContainer: document.getElementById("i8EK4UFXUqNxcNnZd-left-div"), - rightContainer: document.getElementById("i8EK4UFXUqNxcNnZd-right-div"), - graphContainer: document.getElementById("i8EK4UFXUqNxcNnZd-graph-div"), - detailsContainer: document.getElementById("i8EK4UFXUqNxcNnZd-details-div"), - detailsHead: document.getElementById("i8EK4UFXUqNxcNnZd-details-head"), - detailsBody: document.getElementById("i8EK4UFXUqNxcNnZd-details-body"), + mainContainer: document.getElementById("imev8OqzlOAPljR9j-main-div"), + tooltipContainer: document.getElementById("imev8OqzlOAPljR9j-tooltip-div"), + leftContainer: document.getElementById("imev8OqzlOAPljR9j-left-div"), + rightContainer: document.getElementById("imev8OqzlOAPljR9j-right-div"), + graphContainer: document.getElementById("imev8OqzlOAPljR9j-graph-div"), + detailsContainer: document.getElementById("imev8OqzlOAPljR9j-details-div"), + detailsHead: document.getElementById("imev8OqzlOAPljR9j-details-head"), + detailsBody: document.getElementById("imev8OqzlOAPljR9j-details-body"), // Data sources - dataHead: document.getElementById("i8EK4UFXUqNxcNnZd-data-head"), - dataBody: document.getElementById("i8EK4UFXUqNxcNnZd-data-body"), - graphSelectionContainer: document.getElementById("i8EK4UFXUqNxcNnZd-graph-select-div"), - graphSelection: document.getElementById("i8EK4UFXUqNxcNnZd-graph-select"), - nodeSizeDataSourceSelect: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-data-source-select"), - nodeSizeNormalizationCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-normalization-checkbox"), - nodeSizeNormalizationContainer: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-norm-div"), - nodeSizeNormalizationMinText: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-normalization-min-text"), - nodeSizeNormalizationMinSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-normalization-min-slider"), - nodeSizeNormalizationMaxText: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-normalization-max-text"), - nodeSizeNormalizationMaxSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-normalization-max-slider"), - edgeSizeDataSourceSelect: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-data-source-select"), - edgeSizeNormalizationCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-normalization-checkbox"), - edgeSizeNormalizationContainer: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-norm-div"), - edgeSizeNormalizationMinText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-normalization-min-text"), - edgeSizeNormalizationMinSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-normalization-min-slider"), - edgeSizeNormalizationMaxText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-normalization-max-text"), - edgeSizeNormalizationMaxSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-normalization-max-slider"), + dataHead: document.getElementById("imev8OqzlOAPljR9j-data-head"), + dataBody: document.getElementById("imev8OqzlOAPljR9j-data-body"), + graphSelectionContainer: document.getElementById("imev8OqzlOAPljR9j-graph-select-div"), + graphSelection: document.getElementById("imev8OqzlOAPljR9j-graph-select"), + nodeSizeDataSourceSelect: document.getElementById("imev8OqzlOAPljR9j-node-size-data-source-select"), + nodeSizeNormalizationCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-size-normalization-checkbox"), + nodeSizeNormalizationContainer: document.getElementById("imev8OqzlOAPljR9j-node-size-norm-div"), + nodeSizeNormalizationMinText: document.getElementById("imev8OqzlOAPljR9j-node-size-normalization-min-text"), + nodeSizeNormalizationMinSlider: document.getElementById("imev8OqzlOAPljR9j-node-size-normalization-min-slider"), + nodeSizeNormalizationMaxText: document.getElementById("imev8OqzlOAPljR9j-node-size-normalization-max-text"), + nodeSizeNormalizationMaxSlider: document.getElementById("imev8OqzlOAPljR9j-node-size-normalization-max-slider"), + edgeSizeDataSourceSelect: document.getElementById("imev8OqzlOAPljR9j-edge-size-data-source-select"), + edgeSizeNormalizationCheckbox: document.getElementById("imev8OqzlOAPljR9j-edge-size-normalization-checkbox"), + edgeSizeNormalizationContainer: document.getElementById("imev8OqzlOAPljR9j-edge-size-norm-div"), + edgeSizeNormalizationMinText: document.getElementById("imev8OqzlOAPljR9j-edge-size-normalization-min-text"), + edgeSizeNormalizationMinSlider: document.getElementById("imev8OqzlOAPljR9j-edge-size-normalization-min-slider"), + edgeSizeNormalizationMaxText: document.getElementById("imev8OqzlOAPljR9j-edge-size-normalization-max-text"), + edgeSizeNormalizationMaxSlider: document.getElementById("imev8OqzlOAPljR9j-edge-size-normalization-max-slider"), // General - generalHead: document.getElementById("i8EK4UFXUqNxcNnZd-general-head"), - generalBody: document.getElementById("i8EK4UFXUqNxcNnZd-general-body"), - resetButton: document.getElementById("i8EK4UFXUqNxcNnZd-reset"), - fullscreenButton: document.getElementById("i8EK4UFXUqNxcNnZd-fullscreen-button"), - svgExportButton: document.getElementById("i8EK4UFXUqNxcNnZd-svg"), - pngExportButton: document.getElementById("i8EK4UFXUqNxcNnZd-png"), - jpgExportButton: document.getElementById("i8EK4UFXUqNxcNnZd-jpg"), + generalHead: document.getElementById("imev8OqzlOAPljR9j-general-head"), + generalBody: document.getElementById("imev8OqzlOAPljR9j-general-body"), + resetButton: document.getElementById("imev8OqzlOAPljR9j-reset"), + fullscreenButton: document.getElementById("imev8OqzlOAPljR9j-fullscreen-button"), + svgExportButton: document.getElementById("imev8OqzlOAPljR9j-svg"), + pngExportButton: document.getElementById("imev8OqzlOAPljR9j-png"), + jpgExportButton: document.getElementById("imev8OqzlOAPljR9j-jpg"), // Nodes - nodeHead: document.getElementById("i8EK4UFXUqNxcNnZd-node-head"), - nodeBody: document.getElementById("i8EK4UFXUqNxcNnZd-node-body"), - nodeCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-checkbox"), - nodeSizeFactorText: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-factor-text"), - nodeSizeFactorSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-size-factor-slider"), - nodeDragFixCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-drag-fix-checkbox"), - nodeHoverNeighborhoodCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-hover-neighborhood-checkbox"), - nodeHoverTooltipCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-hover-tooltip-checkbox"), - nodeReleaseButton: document.getElementById("i8EK4UFXUqNxcNnZd-node-release-button"), + nodeHead: document.getElementById("imev8OqzlOAPljR9j-node-head"), + nodeBody: document.getElementById("imev8OqzlOAPljR9j-node-body"), + nodeCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-checkbox"), + nodeSizeFactorText: document.getElementById("imev8OqzlOAPljR9j-node-size-factor-text"), + nodeSizeFactorSlider: document.getElementById("imev8OqzlOAPljR9j-node-size-factor-slider"), + nodeDragFixCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-drag-fix-checkbox"), + nodeHoverNeighborhoodCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-hover-neighborhood-checkbox"), + nodeHoverTooltipCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-hover-tooltip-checkbox"), + nodeReleaseButton: document.getElementById("imev8OqzlOAPljR9j-node-release-button"), // Node images - nodeImageHead: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-head"), - nodeImageBody: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-body"), - nodeImageCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-checkbox"), - nodeImageMetaControl: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-meta-control"), - nodeImageSizeFactorText: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-size-factor-text"), - nodeImageSizeFactorSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-image-size-factor-slider"), + nodeImageHead: document.getElementById("imev8OqzlOAPljR9j-node-image-head"), + nodeImageBody: document.getElementById("imev8OqzlOAPljR9j-node-image-body"), + nodeImageCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-image-checkbox"), + nodeImageMetaControl: document.getElementById("imev8OqzlOAPljR9j-node-image-meta-control"), + nodeImageSizeFactorText: document.getElementById("imev8OqzlOAPljR9j-node-image-size-factor-text"), + nodeImageSizeFactorSlider: document.getElementById("imev8OqzlOAPljR9j-node-image-size-factor-slider"), // Node labels - nodeLabelHead: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-head"), - nodeLabelBody: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-body"), - nodeLabelCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-checkbox"), - nodeLabelBorderCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-border-checkbox"), - nodeLabelTextDataSourceSelect: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-data-source-select"), - nodeLabelSizeFactorText: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-size-factor-text"), - nodeLabelSizeFactorSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-size-factor-slider"), - nodeLabelRotationText: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-rotation-text"), - nodeLabelRotationSlider: document.getElementById("i8EK4UFXUqNxcNnZd-node-label-rotation-slider"), + nodeLabelHead: document.getElementById("imev8OqzlOAPljR9j-node-label-head"), + nodeLabelBody: document.getElementById("imev8OqzlOAPljR9j-node-label-body"), + nodeLabelCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-label-checkbox"), + nodeLabelBorderCheckbox: document.getElementById("imev8OqzlOAPljR9j-node-label-border-checkbox"), + nodeLabelTextDataSourceSelect: document.getElementById("imev8OqzlOAPljR9j-node-label-data-source-select"), + nodeLabelSizeFactorText: document.getElementById("imev8OqzlOAPljR9j-node-label-size-factor-text"), + nodeLabelSizeFactorSlider: document.getElementById("imev8OqzlOAPljR9j-node-label-size-factor-slider"), + nodeLabelRotationText: document.getElementById("imev8OqzlOAPljR9j-node-label-rotation-text"), + nodeLabelRotationSlider: document.getElementById("imev8OqzlOAPljR9j-node-label-rotation-slider"), // Edges - edgeHead: document.getElementById("i8EK4UFXUqNxcNnZd-edge-head"), - edgeBody: document.getElementById("i8EK4UFXUqNxcNnZd-edge-body"), - edgeCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-edge-checkbox"), - edgeSizeFactorText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-factor-text"), - edgeSizeFactorSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-size-factor-slider"), - edgeCurvatureText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-curvature-text"), - edgeCurvatureSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-curvature-slider"), - edgeHoverTooltipCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-edge-hover-tooltip-checkbox"), + edgeHead: document.getElementById("imev8OqzlOAPljR9j-edge-head"), + edgeBody: document.getElementById("imev8OqzlOAPljR9j-edge-body"), + edgeCheckbox: document.getElementById("imev8OqzlOAPljR9j-edge-checkbox"), + edgeSizeFactorText: document.getElementById("imev8OqzlOAPljR9j-edge-size-factor-text"), + edgeSizeFactorSlider: document.getElementById("imev8OqzlOAPljR9j-edge-size-factor-slider"), + edgeCurvatureText: document.getElementById("imev8OqzlOAPljR9j-edge-curvature-text"), + edgeCurvatureSlider: document.getElementById("imev8OqzlOAPljR9j-edge-curvature-slider"), + edgeHoverTooltipCheckbox: document.getElementById("imev8OqzlOAPljR9j-edge-hover-tooltip-checkbox"), // Edge labels - edgeLabelHead: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-head"), - edgeLabelBody: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-body"), - edgeLabelCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-checkbox"), - edgeLabelBorderCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-border-checkbox"), - edgeLabelTextDataSourceSelect: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-data-source-select"), - edgeLabelSizeFactorText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-size-factor-text"), - edgeLabelSizeFactorSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-size-factor-slider"), - edgeLabelRotationText: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-rotation-text"), - edgeLabelRotationSlider: document.getElementById("i8EK4UFXUqNxcNnZd-edge-label-rotation-slider"), + edgeLabelHead: document.getElementById("imev8OqzlOAPljR9j-edge-label-head"), + edgeLabelBody: document.getElementById("imev8OqzlOAPljR9j-edge-label-body"), + edgeLabelCheckbox: document.getElementById("imev8OqzlOAPljR9j-edge-label-checkbox"), + edgeLabelBorderCheckbox: document.getElementById("imev8OqzlOAPljR9j-edge-label-border-checkbox"), + edgeLabelTextDataSourceSelect: document.getElementById("imev8OqzlOAPljR9j-edge-label-data-source-select"), + edgeLabelSizeFactorText: document.getElementById("imev8OqzlOAPljR9j-edge-label-size-factor-text"), + edgeLabelSizeFactorSlider: document.getElementById("imev8OqzlOAPljR9j-edge-label-size-factor-slider"), + edgeLabelRotationText: document.getElementById("imev8OqzlOAPljR9j-edge-label-rotation-text"), + edgeLabelRotationSlider: document.getElementById("imev8OqzlOAPljR9j-edge-label-rotation-slider"), // Layout algorithm - layoutAlgorithmHead: document.getElementById("i8EK4UFXUqNxcNnZd-layout-algorithm-head"), - layoutAlgorithmBody: document.getElementById("i8EK4UFXUqNxcNnZd-layout-algorithm-body"), - simulationCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-simulation-active-checkbox"), - manyBodyForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-checkbox"), - manyBodyForceContainer: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-div"), - manyBodyForceStrengthText: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-strength-text"), - manyBodyForceStrengthSlider: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-strength-slider"), - manyBodyForceThetaText: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-theta-text"), - manyBodyForceThetaSlider: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-theta-slider"), - manyBodyForceMinDistCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-min-distance-checkbox"), - manyBodyForceMinDistContainer: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-min-distance-div"), - manyBodyForceMinDistText: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-min-distance-text"), - manyBodyForceMinDistSlider: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-min-distance-slider"), - manyBodyForceMaxDistCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-max-distance-checkbox"), - manyBodyForceMaxDistContainer: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-max-distance-div"), - manyBodyForceMaxDistText: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-max-distance-text"), - manyBodyForceMaxDistSlider: document.getElementById("i8EK4UFXUqNxcNnZd-many-body-force-max-distance-slider"), - linksForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-checkbox"), - linksForceContainer: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-div"), - linksForceDistanceText: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-distance-text"), - linksForceDistanceSlider: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-distance-slider"), - linksForceStrengthText: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-strength-text"), - linksForceStrengthSlider: document.getElementById("i8EK4UFXUqNxcNnZd-links-force-strength-slider"), - collisionForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-checkbox"), - collisionForceContainer: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-div"), - collisionForceRadiusText: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-radius-text"), - collisionForceRadiusSlider: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-radius-slider"), - collisionForceStrengthText: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-strength-text"), - collisionForceStrengthSlider: document.getElementById("i8EK4UFXUqNxcNnZd-collision-force-strength-slider"), - xPositioningForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-x-positioning-force-checkbox"), - xPositioningForceContainer: document.getElementById("i8EK4UFXUqNxcNnZd-x-positioning-force-div"), - xPositioningForceStrengthText: document.getElementById("i8EK4UFXUqNxcNnZd-x-positioning-force-strength-text"), - xPositioningForceStrengthSlider: document.getElementById("i8EK4UFXUqNxcNnZd-x-positioning-force-strength-slider"), - yPositioningForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-y-positioning-force-checkbox"), - yPositioningForceContainer: document.getElementById("i8EK4UFXUqNxcNnZd-y-positioning-force-div"), - yPositioningForceStrengthText: document.getElementById("i8EK4UFXUqNxcNnZd-y-positioning-force-strength-text"), - yPositioningForceStrengthSlider: document.getElementById("i8EK4UFXUqNxcNnZd-y-positioning-force-strength-slider"), - centeringForceCheckbox: document.getElementById("i8EK4UFXUqNxcNnZd-centering-force-checkbox"), + layoutAlgorithmHead: document.getElementById("imev8OqzlOAPljR9j-layout-algorithm-head"), + layoutAlgorithmBody: document.getElementById("imev8OqzlOAPljR9j-layout-algorithm-body"), + simulationCheckbox: document.getElementById("imev8OqzlOAPljR9j-simulation-active-checkbox"), + manyBodyForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-many-body-force-checkbox"), + manyBodyForceContainer: document.getElementById("imev8OqzlOAPljR9j-many-body-force-div"), + manyBodyForceStrengthText: document.getElementById("imev8OqzlOAPljR9j-many-body-force-strength-text"), + manyBodyForceStrengthSlider: document.getElementById("imev8OqzlOAPljR9j-many-body-force-strength-slider"), + manyBodyForceThetaText: document.getElementById("imev8OqzlOAPljR9j-many-body-force-theta-text"), + manyBodyForceThetaSlider: document.getElementById("imev8OqzlOAPljR9j-many-body-force-theta-slider"), + manyBodyForceMinDistCheckbox: document.getElementById("imev8OqzlOAPljR9j-many-body-force-min-distance-checkbox"), + manyBodyForceMinDistContainer: document.getElementById("imev8OqzlOAPljR9j-many-body-force-min-distance-div"), + manyBodyForceMinDistText: document.getElementById("imev8OqzlOAPljR9j-many-body-force-min-distance-text"), + manyBodyForceMinDistSlider: document.getElementById("imev8OqzlOAPljR9j-many-body-force-min-distance-slider"), + manyBodyForceMaxDistCheckbox: document.getElementById("imev8OqzlOAPljR9j-many-body-force-max-distance-checkbox"), + manyBodyForceMaxDistContainer: document.getElementById("imev8OqzlOAPljR9j-many-body-force-max-distance-div"), + manyBodyForceMaxDistText: document.getElementById("imev8OqzlOAPljR9j-many-body-force-max-distance-text"), + manyBodyForceMaxDistSlider: document.getElementById("imev8OqzlOAPljR9j-many-body-force-max-distance-slider"), + linksForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-links-force-checkbox"), + linksForceContainer: document.getElementById("imev8OqzlOAPljR9j-links-force-div"), + linksForceDistanceText: document.getElementById("imev8OqzlOAPljR9j-links-force-distance-text"), + linksForceDistanceSlider: document.getElementById("imev8OqzlOAPljR9j-links-force-distance-slider"), + linksForceStrengthText: document.getElementById("imev8OqzlOAPljR9j-links-force-strength-text"), + linksForceStrengthSlider: document.getElementById("imev8OqzlOAPljR9j-links-force-strength-slider"), + collisionForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-collision-force-checkbox"), + collisionForceContainer: document.getElementById("imev8OqzlOAPljR9j-collision-force-div"), + collisionForceRadiusText: document.getElementById("imev8OqzlOAPljR9j-collision-force-radius-text"), + collisionForceRadiusSlider: document.getElementById("imev8OqzlOAPljR9j-collision-force-radius-slider"), + collisionForceStrengthText: document.getElementById("imev8OqzlOAPljR9j-collision-force-strength-text"), + collisionForceStrengthSlider: document.getElementById("imev8OqzlOAPljR9j-collision-force-strength-slider"), + xPositioningForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-x-positioning-force-checkbox"), + xPositioningForceContainer: document.getElementById("imev8OqzlOAPljR9j-x-positioning-force-div"), + xPositioningForceStrengthText: document.getElementById("imev8OqzlOAPljR9j-x-positioning-force-strength-text"), + xPositioningForceStrengthSlider: document.getElementById("imev8OqzlOAPljR9j-x-positioning-force-strength-slider"), + yPositioningForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-y-positioning-force-checkbox"), + yPositioningForceContainer: document.getElementById("imev8OqzlOAPljR9j-y-positioning-force-div"), + yPositioningForceStrengthText: document.getElementById("imev8OqzlOAPljR9j-y-positioning-force-strength-text"), + yPositioningForceStrengthSlider: document.getElementById("imev8OqzlOAPljR9j-y-positioning-force-strength-slider"), + centeringForceCheckbox: document.getElementById("imev8OqzlOAPljR9j-centering-force-checkbox"), }, composites:{ @@ -2481,7 +2481,7 @@ create(){ // Main container this.mainContainer = document.createElement("div"); - this.mainContainer.id = "i8EK4UFXUqNxcNnZd-progress-container"; + this.mainContainer.id = "imev8OqzlOAPljR9j-progress-container"; this.mainContainer.style.backgroundColor = state.shownData.general.background_color; ui.elements.graphContainer.style.backgroundColor = state.shownData.general.background_color; // Text container @@ -2530,7 +2530,7 @@ } else { menuDiv.innerText = ui.symbols.menuHidden; } - menuDiv.id = "i8EK4UFXUqNxcNnZd-menu-toggle-button"; + menuDiv.id = "imev8OqzlOAPljR9j-menu-toggle-button"; menuDiv.onclick = ui.composites.menu.toggle; ui.elements.graphContainer.appendChild(menuDiv); ui.elements.menuToggleDiv = menuDiv; @@ -2544,27 +2544,27 @@ } else { detailsDiv.innerText = ui.symbols.detailsHidden; } - detailsDiv.id = "i8EK4UFXUqNxcNnZd-details-toggle-button"; + detailsDiv.id = "imev8OqzlOAPljR9j-details-toggle-button"; detailsDiv.onclick = ui.composites.details.toggle; ui.elements.graphContainer.appendChild(detailsDiv); ui.elements.detailsToggleDiv = detailsDiv; } // - Graph drawing area - const svg = d3.select("#i8EK4UFXUqNxcNnZd-graph-div").append("svg"); + const svg = d3.select("#imev8OqzlOAPljR9j-graph-div").append("svg"); state.currentGraphParts.svg = svg; svg .attr("width", state.graphContainerWidth) .attr("height", state.graphContainerHeight); // - Background rectangle const backgroundRect = svg.append("rect") - .attr("id", "i8EK4UFXUqNxcNnZd-background") + .attr("id", "imev8OqzlOAPljR9j-background") .attr("width", state.graphContainerWidth) .attr("height", state.graphContainerHeight) .attr("fill", state.shownData.general.background_color); state.currentGraphParts.backgroundRect = backgroundRect; // - Zoomable and draggable group as graph drawing area - const view = svg.append("g").attr("id", "i8EK4UFXUqNxcNnZd-zoomable-graph-group"); + const view = svg.append("g").attr("id", "imev8OqzlOAPljR9j-zoomable-graph-group"); state.currentGraphParts.view = view; function zoomed(event) { view.attr("transform", event.transform); @@ -2623,7 +2623,7 @@ // in back and which are drawn in front (there is no z-order property in SVG) // Edges state.currentGraphParts.edgeMainGroup = view.append("g") - .attr("id", "i8EK4UFXUqNxcNnZd-edge-group") + .attr("id", "imev8OqzlOAPljR9j-edge-group") .style("display", ui.convert.boolToDisplayStyle(state.showEdges)); state.currentGraphParts.edgeGroups = state.currentGraphParts.edgeMainGroup .selectAll("g") @@ -2631,7 +2631,7 @@ .join("g"); // Nodes state.currentGraphParts.nodeMainGroup = view.append("g") - .attr("id", "i8EK4UFXUqNxcNnZd-node-group") + .attr("id", "imev8OqzlOAPljR9j-node-group") .style("display", ui.convert.boolToDisplayStyle(state.showNodes)); state.currentGraphParts.nodeGroups = state.currentGraphParts.nodeMainGroup .selectAll("g") @@ -2643,7 +2643,7 @@ edgeLabelData.push(i); } state.currentGraphParts.edgeLabelMainGroup = view.append("g") - .attr("id", "i8EK4UFXUqNxcNnZd-edge-label-group") + .attr("id", "imev8OqzlOAPljR9j-edge-label-group") .style("display", ui.convert.boolToDisplayStyle(state.showEdgeLabels)); state.currentGraphParts.edgeLabelGroups = state.currentGraphParts.edgeLabelMainGroup .selectAll("g") @@ -2655,7 +2655,7 @@ nodeLabelData.push(i); } state.currentGraphParts.nodeLabelMainGroup = view.append("g") - .attr("id", "i8EK4UFXUqNxcNnZd-node-label-group"); + .attr("id", "imev8OqzlOAPljR9j-node-label-group"); state.currentGraphParts.nodeLabelGroups = state.currentGraphParts.nodeLabelMainGroup .style("display", ui.convert.boolToDisplayStyle(state.showNodeLabels)) .selectAll("g") @@ -2672,7 +2672,7 @@ } } state.currentGraphParts.nodeImageMainGroup = view.append("g") - .attr("id", "i8EK4UFXUqNxcNnZd-node-image-group") + .attr("id", "imev8OqzlOAPljR9j-node-image-group") .style("display", ui.convert.boolToDisplayStyle(state.showNodeImages)); state.currentGraphParts.nodeImageGroups = state.currentGraphParts.nodeImageMainGroup .selectAll("g") @@ -2903,7 +2903,7 @@ function nodeClicked(event, node){ let htmlText = "