@jbrowse/plugin-sequence 2.3.1 → 2.3.3

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 (28) hide show
  1. package/dist/DivSequenceRenderer/components/DivSequenceRendering.d.ts +8 -10
  2. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +1 -1
  3. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -1
  4. package/dist/LinearReferenceSequenceDisplay/model.d.ts +42 -7
  5. package/dist/LinearReferenceSequenceDisplay/model.js +65 -23
  6. package/dist/LinearReferenceSequenceDisplay/model.js.map +1 -1
  7. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js +2 -1
  8. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js.map +1 -1
  9. package/esm/DivSequenceRenderer/components/DivSequenceRendering.d.ts +8 -10
  10. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js +1 -1
  11. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -1
  12. package/esm/LinearReferenceSequenceDisplay/model.d.ts +42 -7
  13. package/esm/LinearReferenceSequenceDisplay/model.js +66 -24
  14. package/esm/LinearReferenceSequenceDisplay/model.js.map +1 -1
  15. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js +2 -1
  16. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js.map +1 -1
  17. package/package.json +3 -3
  18. package/src/DivSequenceRenderer/components/DivSequenceRendering.test.tsx +161 -0
  19. package/src/DivSequenceRenderer/components/DivSequenceRendering.tsx +16 -19
  20. package/src/DivSequenceRenderer/components/__snapshots__/DivSequenceRendering.test.tsx.snap +1426 -0
  21. package/src/IndexedFastaAdapter/IndexedFastaAdapter.test.ts +4 -3
  22. package/src/LinearReferenceSequenceDisplay/model.ts +69 -25
  23. package/src/SequenceSearchAdapter/SequenceSearchAdapter.ts +2 -1
  24. package/src/TwoBitAdapter/TwoBitAdapter.test.ts +4 -3
  25. package/src/__snapshots__/{index.test.js.snap → index.test.ts.snap} +0 -0
  26. package/src/{index.test.js → index.test.ts} +5 -10
  27. package/src/DivSequenceRenderer/components/DivSequenceRendering.test.js +0 -211
  28. package/src/DivSequenceRenderer/components/__snapshots__/DivSequenceRendering.test.js.snap +0 -67
@@ -1,20 +1,42 @@
1
- import { types } from 'mobx-state-tree';
1
+ import { addDisposer, types } from 'mobx-state-tree';
2
2
  import { BaseLinearDisplay, } from '@jbrowse/plugin-linear-genome-view';
3
3
  import { ConfigurationReference, } from '@jbrowse/core/configuration';
4
4
  import { getContainingView } from '@jbrowse/core/util';
5
+ import { autorun } from 'mobx';
6
+ /**
7
+ * #stateModel LinearReferenceSequenceDisplay
8
+ * base model `BaseLinearDisplay`
9
+ */
5
10
  export function modelFactory(configSchema) {
6
11
  return types
7
12
  .compose('LinearReferenceSequenceDisplay', BaseLinearDisplay, types.model({
13
+ /**
14
+ * #property
15
+ */
8
16
  type: types.literal('LinearReferenceSequenceDisplay'),
17
+ /**
18
+ * #property
19
+ */
9
20
  configuration: ConfigurationReference(configSchema),
10
- showForward: types.optional(types.boolean, true),
11
- showReverse: types.optional(types.boolean, true),
12
- showTranslation: types.optional(types.boolean, true),
13
- height: 180,
21
+ /**
22
+ * #property
23
+ */
24
+ showForward: true,
25
+ /**
26
+ * #property
27
+ */
28
+ showReverse: true,
29
+ /**
30
+ * #property
31
+ */
32
+ showTranslation: true,
14
33
  }))
15
34
  .views(self => {
16
35
  const { renderProps: superRenderProps } = self;
17
36
  return {
37
+ /**
38
+ * #method
39
+ */
18
40
  renderProps() {
19
41
  const { showForward, showReverse, showTranslation } = self;
20
42
  return {
@@ -26,55 +48,75 @@ export function modelFactory(configSchema) {
26
48
  showTranslation,
27
49
  };
28
50
  },
29
- regionCannotBeRendered( /* region */) {
30
- const view = getContainingView(self);
31
- if (view && view.bpPerPx >= 1) {
32
- return 'Zoom in to see sequence';
33
- }
34
- return undefined;
35
- },
36
- get rendererTypeName() {
37
- return self.configuration.renderer.type;
38
- },
39
51
  };
40
52
  })
53
+ .views(self => ({
54
+ /**
55
+ * #method
56
+ */
57
+ regionCannotBeRendered( /* region */) {
58
+ const view = getContainingView(self);
59
+ return (view === null || view === void 0 ? void 0 : view.bpPerPx) >= 1 ? 'Zoom in to see sequence' : undefined;
60
+ },
61
+ /**
62
+ * #getter
63
+ */
64
+ get rendererTypeName() {
65
+ return self.configuration.renderer.type;
66
+ },
67
+ }))
41
68
  .actions(self => ({
69
+ /**
70
+ * #action
71
+ */
42
72
  toggleShowForward() {
43
73
  self.showForward = !self.showForward;
44
74
  },
75
+ /**
76
+ * #action
77
+ */
45
78
  toggleShowReverse() {
46
79
  self.showReverse = !self.showReverse;
47
80
  },
81
+ /**
82
+ * #action
83
+ */
48
84
  toggleShowTranslation() {
49
85
  self.showTranslation = !self.showTranslation;
50
86
  },
87
+ afterAttach() {
88
+ // auto-adjust height depending on settings
89
+ addDisposer(self, autorun(() => {
90
+ const t = self.showTranslation ? 100 : 0;
91
+ const r = self.showReverse ? 20 : 0;
92
+ const s = self.showForward ? 20 : 0;
93
+ self.setHeight(t + r + s);
94
+ }));
95
+ },
51
96
  }))
52
97
  .views(self => ({
98
+ /**
99
+ * #method
100
+ */
53
101
  trackMenuItems() {
54
102
  return [
55
103
  {
56
104
  label: 'Show forward',
57
105
  type: 'checkbox',
58
106
  checked: self.showForward,
59
- onClick: () => {
60
- self.toggleShowForward();
61
- },
107
+ onClick: () => self.toggleShowForward(),
62
108
  },
63
109
  {
64
110
  label: 'Show reverse',
65
111
  type: 'checkbox',
66
112
  checked: self.showReverse,
67
- onClick: () => {
68
- self.toggleShowReverse();
69
- },
113
+ onClick: () => self.toggleShowReverse(),
70
114
  },
71
115
  {
72
116
  label: 'Show translation',
73
117
  type: 'checkbox',
74
118
  checked: self.showTranslation,
75
- onClick: () => {
76
- self.toggleShowTranslation();
77
- },
119
+ onClick: () => self.toggleShowTranslation(),
78
120
  },
79
121
  ];
80
122
  },
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/LinearReferenceSequenceDisplay/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/LinearReferenceSequenceDisplay/model.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter
2
2
  import { ObservableCreate } from '@jbrowse/core/util/rxjs';
3
3
  import { SimpleFeature, revcom, doesIntersect2, } from '@jbrowse/core/util';
4
4
  import { toArray } from 'rxjs/operators';
5
+ import { firstValueFrom } from 'rxjs';
5
6
  export default class extends BaseFeatureDataAdapter {
6
7
  async configure() {
7
8
  var _a;
@@ -32,7 +33,7 @@ export default class extends BaseFeatureDataAdapter {
32
33
  start: queryStart,
33
34
  end: queryEnd,
34
35
  }, opts);
35
- const feats = await ret.pipe(toArray()).toPromise();
36
+ const feats = await firstValueFrom(ret.pipe(toArray()));
36
37
  const residues = ((_a = feats[0]) === null || _a === void 0 ? void 0 : _a.get('seq')) || '';
37
38
  const search = this.getConf('search');
38
39
  const searchForward = this.getConf('searchForward');
@@ -1 +1 @@
1
- {"version":3,"file":"SequenceSearchAdapter.js","sourceRoot":"","sources":["../../src/SequenceSearchAdapter/SequenceSearchAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SequenceSearchAdapter.js","sourceRoot":"","sources":["../../src/SequenceSearchAdapter/SequenceSearchAdapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-sequence",
3
- "version": "2.3.1",
3
+ "version": "2.3.3",
4
4
  "description": "JBrowse 2 sequence adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -50,7 +50,7 @@
50
50
  "mobx-react": "^7.0.0",
51
51
  "mobx-state-tree": "^5.0.0",
52
52
  "react": ">=16.8.0",
53
- "rxjs": "^6.0.0"
53
+ "rxjs": "^7.0.0"
54
54
  },
55
55
  "publishConfig": {
56
56
  "access": "public"
@@ -58,5 +58,5 @@
58
58
  "distModule": "esm/index.js",
59
59
  "srcModule": "src/index.ts",
60
60
  "module": "esm/index.js",
61
- "gitHead": "75c4cba2f50c626c62881abd5851dbf2435c2401"
61
+ "gitHead": "283e0387ccd5acc9f092cf00804d1fcac212e68d"
62
62
  }
@@ -0,0 +1,161 @@
1
+ import React from 'react'
2
+ import { render } from '@testing-library/react'
3
+ import SimpleFeature from '@jbrowse/core/util/simpleFeature'
4
+ import DivSequenceRendering from './DivSequenceRendering'
5
+ import DivRenderingConfigSchema from '../configSchema'
6
+
7
+ // This just keeps our testing logs clean by not displaying `console.error`s
8
+ // from errors we intentionally throw in our tests. Hopefully React will
9
+ // someday provide a way for error boundaries to prevent error logging so we
10
+ // won't have to do this: https://github.com/facebook/react/issues/15069
11
+ const originalError = console.error
12
+ beforeAll(() => {
13
+ console.error = (...args) => {
14
+ if (
15
+ args[0].includes('feature one did not contain a valid `seq` attribute') ||
16
+ args[0].includes(
17
+ 'The above error occurred in the <SequenceDivs> component',
18
+ )
19
+ ) {
20
+ return
21
+ }
22
+ originalError.call(console, ...args)
23
+ }
24
+ })
25
+
26
+ afterAll(() => {
27
+ console.error = originalError
28
+ })
29
+
30
+ test('renders with one, zoomed way out', () => {
31
+ const { container } = render(
32
+ <DivSequenceRendering
33
+ regions={[
34
+ { assemblyName: 'volvox', refName: 'zonk', start: 0, end: 1000 },
35
+ ]}
36
+ features={
37
+ new Map([
38
+ [
39
+ 'one',
40
+ new SimpleFeature({
41
+ uniqueId: 'one',
42
+ start: 1,
43
+ end: 3,
44
+ seq: 'AB',
45
+ }),
46
+ ],
47
+ ])
48
+ }
49
+ config={DivRenderingConfigSchema.create({})}
50
+ bpPerPx={3}
51
+ />,
52
+ )
53
+
54
+ expect(container).toMatchSnapshot()
55
+ })
56
+
57
+ test('renders with one feature with no seq, zoomed in, should throw', () => {
58
+ const { container } = render(
59
+ <DivSequenceRendering
60
+ regions={[
61
+ { assemblyName: 'volvox', refName: 'zonk', start: 0, end: 1000 },
62
+ ]}
63
+ features={
64
+ new Map([
65
+ ['one', new SimpleFeature({ uniqueId: 'one', start: 1, end: 3 })],
66
+ ])
67
+ }
68
+ config={DivRenderingConfigSchema.create({})}
69
+ bpPerPx={0.05}
70
+ />,
71
+ )
72
+
73
+ expect(container).toMatchSnapshot()
74
+ })
75
+
76
+ test('renders with one feature with an incorrect seq, zoomed in, should throw', () => {
77
+ const { container } = render(
78
+ <DivSequenceRendering
79
+ regions={[
80
+ { assemblyName: 'volvox', refName: 'zonk', start: 0, end: 1000 },
81
+ ]}
82
+ features={
83
+ new Map([
84
+ [
85
+ 'one',
86
+ new SimpleFeature({
87
+ uniqueId: 'one',
88
+ start: 1,
89
+ end: 3,
90
+ seq: 'ABC',
91
+ }),
92
+ ],
93
+ ])
94
+ }
95
+ config={DivRenderingConfigSchema.create({})}
96
+ bpPerPx={0.05}
97
+ />,
98
+ )
99
+
100
+ expect(container).toMatchSnapshot()
101
+ })
102
+
103
+ test('renders with one feature with a correct seq, zoomed in, should render nicely', () => {
104
+ const { container } = render(
105
+ <DivSequenceRendering
106
+ regions={[
107
+ { assemblyName: 'volvox', refName: 'zonk', start: 0, end: 1000 },
108
+ ]}
109
+ features={
110
+ new Map([
111
+ [
112
+ 'one',
113
+ new SimpleFeature({
114
+ uniqueId: 'one',
115
+ start: 1,
116
+ end: 10,
117
+ seq: 'ABCDEFGHI',
118
+ }),
119
+ ],
120
+ ])
121
+ }
122
+ config={DivRenderingConfigSchema.create({})}
123
+ bpPerPx={0.05}
124
+ />,
125
+ )
126
+
127
+ expect(container).toMatchSnapshot()
128
+ })
129
+
130
+ test('renders with one feature reversed with a correct seq, zoomed in, should render nicely', () => {
131
+ const { container } = render(
132
+ <DivSequenceRendering
133
+ regions={[
134
+ {
135
+ assemblyName: 'volvox',
136
+ refName: 'zonk',
137
+ start: 0,
138
+ end: 1000,
139
+ reversed: true,
140
+ },
141
+ ]}
142
+ features={
143
+ new Map([
144
+ [
145
+ 'one',
146
+ new SimpleFeature({
147
+ uniqueId: 'one',
148
+ start: 1,
149
+ end: 10,
150
+ seq: 'ABCDEFGHI',
151
+ }),
152
+ ],
153
+ ])
154
+ }
155
+ config={DivRenderingConfigSchema.create({})}
156
+ bpPerPx={0.05}
157
+ />,
158
+ )
159
+
160
+ expect(container).toMatchSnapshot()
161
+ })
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import React from 'react'
3
- import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'
3
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration'
4
4
  import { contrastingTextColor } from '@jbrowse/core/util/color'
5
- import { Feature } from '@jbrowse/core/util/simpleFeature'
5
+ import { Feature } from '@jbrowse/core/util'
6
6
  import { Region } from '@jbrowse/core/util/types'
7
7
  import { createJBrowseTheme } from '@jbrowse/core/ui'
8
8
  import { observer } from 'mobx-react'
@@ -16,19 +16,6 @@ import {
16
16
  generateCodonTable,
17
17
  } from '@jbrowse/core/util'
18
18
 
19
- interface MyProps {
20
- exportSVG?: { rasterizeLayers: boolean }
21
- features: Map<string, Feature>
22
- regions: Region[]
23
- bpPerPx: number
24
- config: AnyConfigurationModel
25
- highResolutionScaling: number
26
- theme: any
27
- showForward: boolean
28
- showReverse: boolean
29
- showTranslation: boolean
30
- }
31
-
32
19
  function Translation(props: {
33
20
  codonTable: any
34
21
  seq: string
@@ -179,9 +166,9 @@ const SequenceSVG = ({
179
166
  regions,
180
167
  theme: configTheme,
181
168
  features = new Map(),
182
- showReverse,
183
- showForward,
184
- showTranslation,
169
+ showReverse = true,
170
+ showForward = true,
171
+ showTranslation = true,
185
172
  bpPerPx,
186
173
  }: any) => {
187
174
  const [region] = regions
@@ -283,7 +270,17 @@ const Wrapper = ({ exportSVG, width, totalHeight, children }: any) => {
283
270
  )
284
271
  }
285
272
 
286
- function Sequence(props: MyProps) {
273
+ function Sequence(props: {
274
+ exportSVG?: { rasterizeLayers: boolean }
275
+ features: Map<string, Feature>
276
+ regions: Region[]
277
+ bpPerPx: number
278
+ config: AnyConfigurationModel
279
+ theme?: any
280
+ showForward?: boolean
281
+ showReverse?: boolean
282
+ showTranslation?: boolean
283
+ }) {
287
284
  const { regions, bpPerPx } = props
288
285
  const [region] = regions
289
286
  const width = (region.end - region.start) / bpPerPx