@jbrowse/plugin-wiggle 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.js +1 -1
  2. package/dist/LinearWiggleDisplay/model.d.ts +10 -10
  3. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +2 -2
  4. package/dist/MultiLineRenderer/MultiLineRenderer.js +2 -2
  5. package/dist/MultiLinearWiggleDisplay/components/SourcesGrid.js +4 -4
  6. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.d.ts +6 -0
  7. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.js +29 -0
  8. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.d.ts +7 -0
  9. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +79 -0
  10. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.d.ts +7 -0
  11. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.js +145 -0
  12. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +7 -0
  13. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.js +2 -0
  14. package/dist/MultiLinearWiggleDisplay/components/util.d.ts +3 -2
  15. package/dist/MultiLinearWiggleDisplay/model.d.ts +15 -9
  16. package/dist/MultiLinearWiggleDisplay/model.js +29 -15
  17. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +2 -2
  18. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +2 -2
  19. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +3 -3
  20. package/dist/WiggleBaseRenderer.d.ts +1 -0
  21. package/dist/WiggleBaseRenderer.js +4 -4
  22. package/dist/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +14 -0
  23. package/dist/WiggleRPC/MultiWiggleClusterScoreMatrix.js +31 -0
  24. package/dist/WiggleRPC/MultiWiggleGetScoreMatrix.d.ts +2 -13
  25. package/dist/WiggleRPC/MultiWiggleGetScoreMatrix.js +5 -37
  26. package/dist/WiggleRPC/getScoreMatrix.d.ts +6 -0
  27. package/dist/WiggleRPC/getScoreMatrix.js +35 -0
  28. package/dist/WiggleRPC/rpcMethods.d.ts +1 -0
  29. package/dist/WiggleRPC/rpcMethods.js +1 -0
  30. package/dist/WiggleRPC/type.d.ts +0 -0
  31. package/dist/WiggleRPC/type.js +1 -0
  32. package/dist/WiggleRPC/types.d.ts +13 -0
  33. package/dist/WiggleRPC/types.js +2 -0
  34. package/dist/drawDensity.d.ts +1 -0
  35. package/dist/drawDensity.js +12 -2
  36. package/dist/drawLine.d.ts +1 -0
  37. package/dist/drawLine.js +9 -3
  38. package/dist/drawXY.js +8 -8
  39. package/dist/index.js +1 -0
  40. package/dist/shared/SharedWiggleMixin.d.ts +8 -8
  41. package/dist/shared/SharedWiggleMixin.js +11 -8
  42. package/esm/BigWigAdapter/BigWigAdapter.js +1 -1
  43. package/esm/LinearWiggleDisplay/model.d.ts +10 -10
  44. package/esm/MultiDensityRenderer/MultiDensityRenderer.js +3 -3
  45. package/esm/MultiLineRenderer/MultiLineRenderer.js +3 -3
  46. package/esm/MultiLinearWiggleDisplay/components/SourcesGrid.js +4 -4
  47. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.d.ts +6 -0
  48. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.js +24 -0
  49. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.d.ts +7 -0
  50. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +77 -0
  51. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.d.ts +7 -0
  52. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.js +140 -0
  53. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +7 -0
  54. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.js +1 -0
  55. package/esm/MultiLinearWiggleDisplay/components/util.d.ts +3 -2
  56. package/esm/MultiLinearWiggleDisplay/model.d.ts +15 -9
  57. package/esm/MultiLinearWiggleDisplay/model.js +29 -15
  58. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +3 -3
  59. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +3 -3
  60. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +4 -4
  61. package/esm/WiggleBaseRenderer.d.ts +1 -0
  62. package/esm/WiggleBaseRenderer.js +5 -5
  63. package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +14 -0
  64. package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.js +24 -0
  65. package/esm/WiggleRPC/MultiWiggleGetScoreMatrix.d.ts +2 -13
  66. package/esm/WiggleRPC/MultiWiggleGetScoreMatrix.js +5 -37
  67. package/esm/WiggleRPC/getScoreMatrix.d.ts +6 -0
  68. package/esm/WiggleRPC/getScoreMatrix.js +32 -0
  69. package/esm/WiggleRPC/rpcMethods.d.ts +1 -0
  70. package/esm/WiggleRPC/rpcMethods.js +1 -0
  71. package/esm/WiggleRPC/type.d.ts +0 -0
  72. package/esm/WiggleRPC/type.js +1 -0
  73. package/esm/WiggleRPC/types.d.ts +13 -0
  74. package/esm/WiggleRPC/types.js +1 -0
  75. package/esm/drawDensity.d.ts +1 -0
  76. package/esm/drawDensity.js +12 -2
  77. package/esm/drawLine.d.ts +1 -0
  78. package/esm/drawLine.js +9 -3
  79. package/esm/drawXY.js +8 -8
  80. package/esm/index.js +2 -1
  81. package/esm/shared/SharedWiggleMixin.d.ts +8 -8
  82. package/esm/shared/SharedWiggleMixin.js +11 -8
  83. package/package.json +9 -9
  84. package/dist/MultiLinearWiggleDisplay/components/ClusterDialog.d.ts +0 -11
  85. package/dist/MultiLinearWiggleDisplay/components/ClusterDialog.js +0 -115
  86. package/esm/MultiLinearWiggleDisplay/components/ClusterDialog.d.ts +0 -11
  87. package/esm/MultiLinearWiggleDisplay/components/ClusterDialog.js +0 -109
@@ -1,109 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Dialog, ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui';
4
- import { getContainingView, getSession, isAbortException, } from '@jbrowse/core/util';
5
- import { getRpcSessionId } from '@jbrowse/core/util/tracks';
6
- import { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, TextField, Typography, } from '@mui/material';
7
- import copy from 'copy-to-clipboard';
8
- import { saveAs } from 'file-saver';
9
- import { isAlive } from 'mobx-state-tree';
10
- import { makeStyles } from 'tss-react/mui';
11
- const useStyles = makeStyles()(theme => ({
12
- textAreaFont: {
13
- fontFamily: 'Courier New',
14
- },
15
- mgap: {
16
- display: 'flex',
17
- flexDirection: 'column',
18
- gap: theme.spacing(4),
19
- },
20
- }));
21
- export default function ClusterDialog({ model, handleClose, }) {
22
- const { classes } = useStyles();
23
- const [results, setResults] = useState();
24
- const [error, setError] = useState();
25
- const [paste, setPaste] = useState('');
26
- const [useCompleteMethod, setUseCompleteMethod] = useState(false);
27
- useEffect(() => {
28
- ;
29
- (async () => {
30
- try {
31
- setError(undefined);
32
- const view = getContainingView(model);
33
- if (!view.initialized) {
34
- return;
35
- }
36
- const { rpcManager } = getSession(model);
37
- const { sources, minorAlleleFrequencyFilter, adapterConfig } = model;
38
- const sessionId = getRpcSessionId(model);
39
- const { bpPerPx } = view;
40
- const ret = (await rpcManager.call(sessionId, 'MultiWiggleGetScoreMatrix', {
41
- regions: view.dynamicBlocks.contentBlocks,
42
- sources,
43
- minorAlleleFrequencyFilter,
44
- sessionId,
45
- adapterConfig,
46
- bpPerPx,
47
- }));
48
- const entries = Object.values(ret);
49
- const keys = Object.keys(ret);
50
- const clusterMethod = useCompleteMethod ? 'complete' : 'single';
51
- const text = `try(library(fastcluster), silent=TRUE)
52
- inputMatrix<-matrix(c(${entries.map(val => val.scores.join(',')).join(',\n')}
53
- ),nrow=${entries.length},byrow=TRUE)
54
- rownames(inputMatrix)<-c(${keys.map(key => `'${key}'`).join(',')})
55
- resultClusters<-hclust(dist(inputMatrix), method='${clusterMethod}')
56
- cat(resultClusters$order,sep='\\n')`;
57
- setResults(text);
58
- }
59
- catch (e) {
60
- if (!isAbortException(e) && isAlive(model)) {
61
- console.error(e);
62
- setError(e);
63
- }
64
- }
65
- })();
66
- }, [model, useCompleteMethod]);
67
- return (_jsxs(Dialog, { open: true, title: "Cluster by score", onClose: handleClose, children: [_jsx(DialogContent, { children: _jsxs("div", { className: classes.mgap, children: [_jsx(Typography, { children: "This page will produce an R script that will perform hierarchical clustering on the visible score data using `hclust`." }), _jsx(Typography, { children: "You can then paste the results in this form to specify the row ordering." }), results ? (_jsx("div", { children: _jsxs("div", { children: ["Step 1:", ' ', _jsx(Button, { variant: "contained", onClick: () => {
68
- saveAs(new Blob([results || ''], {
69
- type: 'text/plain;charset=utf-8',
70
- }), 'cluster.R');
71
- }, children: "Download Rscript" }), ' ', "or", ' ', _jsx(Button, { variant: "contained", onClick: () => {
72
- copy(results || '');
73
- }, children: "Copy Rscript to clipboard" }), _jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: useCompleteMethod, onChange: e => {
74
- setUseCompleteMethod(e.target.checked);
75
- } }), label: "Use 'complete' linkage method instead of 'single'" }), _jsx("div", { children: _jsx(TextField, { multiline: true, fullWidth: true, variant: "outlined", placeholder: "Step 2. Paste results from Rscript here (sequence of numbers, one per line, specifying the new ordering)", rows: 10, value: paste, onChange: event => {
76
- setPaste(event.target.value);
77
- }, slotProps: {
78
- input: {
79
- classes: {
80
- input: classes.textAreaFont,
81
- },
82
- },
83
- } }) })] }) })) : (_jsx(LoadingEllipses, { variant: "h6", title: "Generating score matrix" })), error ? _jsx(ErrorMessage, { error: error }) : null] }) }), _jsxs(DialogActions, { children: [_jsx(Button, { disabled: !results, variant: "contained", onClick: () => {
84
- const { sources } = model;
85
- if (sources) {
86
- try {
87
- model.setLayout(paste
88
- .split('\n')
89
- .map(t => t.trim())
90
- .filter(f => !!f)
91
- .map(r => +r)
92
- .map(idx => {
93
- const ret = sources[idx - 1];
94
- if (!ret) {
95
- throw new Error(`out of bounds at ${idx}`);
96
- }
97
- return ret;
98
- }));
99
- }
100
- catch (e) {
101
- console.error(e);
102
- setError(e);
103
- }
104
- }
105
- handleClose();
106
- }, children: "Apply clustering" }), _jsx(Button, { variant: "contained", color: "secondary", onClick: () => {
107
- handleClose();
108
- }, children: "Cancel" })] })] }));
109
- }