@apollo-annotation/jbrowse-plugin-apollo 1.0.0 → 1.1.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.
- package/dist/ApolloInternetAccount/components/AuthTypeSelector.d.ts +8 -2
- package/dist/ApolloInternetAccount/components/AuthTypeSelector.d.ts.map +1 -1
- package/dist/ApolloInternetAccount/components/LoginButtons.d.ts +8 -3
- package/dist/ApolloInternetAccount/components/LoginButtons.d.ts.map +1 -1
- package/dist/ApolloInternetAccount/configSchema.d.ts +44 -0
- package/dist/ApolloInternetAccount/configSchema.d.ts.map +1 -0
- package/dist/ApolloInternetAccount/model.d.ts +174 -0
- package/dist/ApolloInternetAccount/model.d.ts.map +1 -0
- package/dist/ApolloJobModel.d.ts.map +1 -1
- package/dist/ApolloRefNameAliasAdapter/configSchema.d.ts +8 -0
- package/dist/ApolloRefNameAliasAdapter/configSchema.d.ts.map +1 -0
- package/dist/ApolloSequenceAdapter/configSchema.d.ts +8 -0
- package/dist/ApolloSequenceAdapter/configSchema.d.ts.map +1 -0
- package/dist/ApolloTextSearchAdapter/configSchema.d.ts +20 -0
- package/dist/ApolloTextSearchAdapter/configSchema.d.ts.map +1 -0
- package/dist/BackendDrivers/CollaborationServerDriver.d.ts +1 -1
- package/dist/BackendDrivers/CollaborationServerDriver.d.ts.map +1 -1
- package/dist/BackendDrivers/LocalDriver/LocalDriver.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/ApolloFeatureDetailsWidget.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/Attributes.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/DefaultAttributeEditor.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/DefaultAttributeViewer.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/NumberTextField.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/StringTextField.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/TranscriptSequence.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/TranscriptWidgetEditLocation.d.ts.map +1 -1
- package/dist/FeatureDetailsWidget/Translation.d.ts +14 -0
- package/dist/FeatureDetailsWidget/Translation.d.ts.map +1 -0
- package/dist/LinearApolloDisplay/components/CheckResultWarnings.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/configSchema.d.ts +2 -0
- package/dist/LinearApolloDisplay/configSchema.d.ts.map +1 -0
- package/dist/LinearApolloDisplay/glyphs/ExonGlyph.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/glyphs/GeneGlyph.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/glyphs/TranscriptGlyph.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/stateModel/base.d.ts +1 -18
- package/dist/LinearApolloDisplay/stateModel/base.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/stateModel/index.d.ts +1 -17
- package/dist/LinearApolloDisplay/stateModel/index.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/stateModel/layouts.d.ts +2 -19
- package/dist/LinearApolloDisplay/stateModel/layouts.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/stateModel/mouseEvents.d.ts +2 -34
- package/dist/LinearApolloDisplay/stateModel/mouseEvents.d.ts.map +1 -1
- package/dist/LinearApolloDisplay/stateModel/rendering.d.ts +2 -19
- package/dist/LinearApolloDisplay/stateModel/rendering.d.ts.map +1 -1
- package/dist/LinearApolloReferenceSequenceDisplay/configSchema.d.ts +2 -0
- package/dist/LinearApolloReferenceSequenceDisplay/configSchema.d.ts.map +1 -0
- package/dist/LinearApolloReferenceSequenceDisplay/stateModel/base.d.ts +1 -1
- package/dist/LinearApolloReferenceSequenceDisplay/stateModel/base.d.ts.map +1 -1
- package/dist/LinearApolloReferenceSequenceDisplay/stateModel/index.d.ts +1 -1
- package/dist/LinearApolloReferenceSequenceDisplay/stateModel/rendering.d.ts +1 -1
- package/dist/LinearApolloSixFrameDisplay/components/LinearApolloSixFrameDisplay.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/configSchema.d.ts +2 -0
- package/dist/LinearApolloSixFrameDisplay/configSchema.d.ts.map +1 -0
- package/dist/LinearApolloSixFrameDisplay/glyphs/GeneGlyph.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/base.d.ts +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/base.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/index.d.ts +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/index.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/layouts.d.ts +2 -3
- package/dist/LinearApolloSixFrameDisplay/stateModel/layouts.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/mouseEvents.d.ts +2 -2
- package/dist/LinearApolloSixFrameDisplay/stateModel/mouseEvents.d.ts.map +1 -1
- package/dist/LinearApolloSixFrameDisplay/stateModel/rendering.d.ts +2 -3
- package/dist/LinearApolloSixFrameDisplay/stateModel/rendering.d.ts.map +1 -1
- package/dist/OntologyManager/OntologyStore/fulltext.d.ts.map +1 -1
- package/dist/OntologyManager/index.d.ts +734 -0
- package/dist/OntologyManager/index.d.ts.map +1 -0
- package/dist/TabularEditor/HybridGrid/NumberCell.d.ts.map +1 -1
- package/dist/components/AddCodingSequence.d.ts +14 -0
- package/dist/components/AddCodingSequence.d.ts.map +1 -0
- package/dist/components/AddRefSeqAliases.d.ts.map +1 -1
- package/dist/components/CopyFeature.d.ts.map +1 -1
- package/dist/components/CreateApolloAnnotation.d.ts.map +1 -1
- package/dist/components/DeleteFeature.d.ts.map +1 -1
- package/dist/components/DownloadGFF3.d.ts.map +1 -1
- package/dist/components/DuplicateFeatureDialog.d.ts +12 -0
- package/dist/components/DuplicateFeatureDialog.d.ts.map +1 -0
- package/dist/components/ImportAnnotations.d.ts +9 -0
- package/dist/components/ImportAnnotations.d.ts.map +1 -0
- package/dist/components/ManageUsers.d.ts.map +1 -1
- package/dist/components/OntologyTermMultiSelect.d.ts.map +1 -1
- package/dist/components/ViewChangeLog.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/extensions/annotationFromPileup.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +830 -434
- package/dist/index.esm.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.development.js +825 -429
- package/dist/jbrowse-plugin-apollo.cjs.development.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.production.min.js +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.production.min.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.umd.development.js +863 -468
- package/dist/jbrowse-plugin-apollo.umd.development.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.umd.production.min.js +1 -1
- package/dist/jbrowse-plugin-apollo.umd.production.min.js.map +1 -1
- package/dist/session/ClientDataStore.d.ts +2194 -0
- package/dist/session/ClientDataStore.d.ts.map +1 -0
- package/dist/session/handleApolloFeaturesUrlParam.d.ts +8 -0
- package/dist/session/handleApolloFeaturesUrlParam.d.ts.map +1 -0
- package/dist/session/session.d.ts +6788 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/util/displayUtils.d.ts +36 -0
- package/dist/util/displayUtils.d.ts.map +1 -0
- package/dist/util/sequenceUtils.d.ts +2 -0
- package/dist/util/sequenceUtils.d.ts.map +1 -0
- package/package.json +14 -14
- package/src/ApolloInternetAccount/components/AuthTypeSelector.tsx +73 -38
- package/src/ApolloInternetAccount/components/LoginButtons.tsx +31 -10
- package/src/ApolloInternetAccount/model.ts +8 -5
- package/src/ApolloJobModel.ts +3 -8
- package/src/ApolloTextSearchAdapter/ApolloTextSearchAdapter.ts +1 -1
- package/src/BackendDrivers/CollaborationServerDriver.ts +7 -11
- package/src/BackendDrivers/LocalDriver/LocalDriver.ts +13 -4
- package/src/FeatureDetailsWidget/ApolloFeatureDetailsWidget.tsx +1 -0
- package/src/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.tsx +4 -2
- package/src/FeatureDetailsWidget/Attributes.tsx +1 -0
- package/src/FeatureDetailsWidget/DefaultAttributeEditor.tsx +1 -0
- package/src/FeatureDetailsWidget/DefaultAttributeViewer.tsx +1 -0
- package/src/FeatureDetailsWidget/NumberTextField.tsx +1 -0
- package/src/FeatureDetailsWidget/StringTextField.tsx +1 -0
- package/src/FeatureDetailsWidget/TranscriptSequence.tsx +2 -1
- package/src/FeatureDetailsWidget/TranscriptWidgetEditLocation.tsx +17 -354
- package/src/FeatureDetailsWidget/Translation.tsx +358 -0
- package/src/LinearApolloDisplay/components/CheckResultWarnings.tsx +4 -1
- package/src/LinearApolloDisplay/glyphs/ExonGlyph.ts +2 -5
- package/src/LinearApolloDisplay/glyphs/GeneGlyph.ts +4 -6
- package/src/LinearApolloDisplay/glyphs/TranscriptGlyph.ts +39 -6
- package/src/LinearApolloDisplay/stateModel/base.ts +47 -23
- package/src/LinearApolloDisplay/stateModel/layouts.ts +7 -5
- package/src/LinearApolloDisplay/stateModel/mouseEvents.ts +4 -1
- package/src/LinearApolloDisplay/stateModel/rendering.ts +1 -5
- package/src/LinearApolloReferenceSequenceDisplay/stateModel/base.ts +10 -10
- package/src/LinearApolloSixFrameDisplay/components/LinearApolloSixFrameDisplay.tsx +5 -3
- package/src/LinearApolloSixFrameDisplay/components/TrackLines.tsx +1 -1
- package/src/LinearApolloSixFrameDisplay/glyphs/GeneGlyph.ts +2 -3
- package/src/LinearApolloSixFrameDisplay/stateModel/base.ts +12 -20
- package/src/LinearApolloSixFrameDisplay/stateModel/layouts.ts +10 -6
- package/src/LinearApolloSixFrameDisplay/stateModel/mouseEvents.ts +38 -45
- package/src/LinearApolloSixFrameDisplay/stateModel/rendering.ts +1 -4
- package/src/OntologyManager/OntologyStore/fulltext.ts +0 -2
- package/src/OntologyManager/OntologyStore/index.ts +1 -1
- package/src/TabularEditor/HybridGrid/ChangeHandling.ts +2 -2
- package/src/TabularEditor/HybridGrid/NumberCell.tsx +2 -1
- package/src/components/AddAssemblyAliases.tsx +1 -1
- package/src/components/AddCodingSequence.tsx +255 -0
- package/src/components/AddFeature.tsx +1 -1
- package/src/components/AddRefSeqAliases.tsx +3 -2
- package/src/components/CopyFeature.tsx +9 -7
- package/src/components/CreateApolloAnnotation.tsx +28 -23
- package/src/components/DeleteAssembly.tsx +2 -2
- package/src/components/DeleteFeature.tsx +1 -4
- package/src/components/DownloadGFF3.tsx +4 -3
- package/src/components/DuplicateFeatureDialog.tsx +154 -0
- package/src/components/DuplicateTranscript.tsx +1 -1
- package/src/components/FilterTranscripts.tsx +1 -1
- package/src/components/ImportAnnotations.tsx +108 -0
- package/src/components/ManageUsers.tsx +1 -2
- package/src/components/OntologyTermAutocomplete.tsx +1 -3
- package/src/components/OntologyTermMultiSelect.tsx +3 -1
- package/src/components/ViewChangeLog.tsx +2 -1
- package/src/components/index.ts +2 -0
- package/src/extensions/annotationFromPileup.ts +34 -26
- package/src/index.ts +9 -8
- package/src/session/ClientDataStore.ts +16 -21
- package/src/session/handleApolloFeaturesUrlParam.ts +122 -0
- package/src/session/session.ts +49 -9
- package/src/util/annotationFeatureUtils.ts +1 -1
- package/src/util/displayUtils.ts +1 -1
- package/src/util/glyphUtils.ts +3 -3
- package/src/util/sequenceUtils.ts +29 -0
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import type { AnnotationFeature } from '@apollo-annotation/mst'
|
|
4
4
|
import type PluginManager from '@jbrowse/core/PluginManager'
|
|
5
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
5
6
|
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'
|
|
6
7
|
import { type AbstractSessionModel, doesIntersect2 } from '@jbrowse/core/util'
|
|
7
8
|
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree'
|
|
8
9
|
import { autorun, observable } from 'mobx'
|
|
9
10
|
|
|
10
|
-
import type { ApolloSessionModel } from '../../session'
|
|
11
11
|
import {
|
|
12
12
|
isCDSFeature,
|
|
13
13
|
isExonFeature,
|
|
@@ -72,7 +72,9 @@ export function layoutsModelFactory(
|
|
|
72
72
|
getCanonicalRefName(assemblyName: string, refSeq: string) {
|
|
73
73
|
const { assemblyManager } =
|
|
74
74
|
self.session as unknown as AbstractSessionModel
|
|
75
|
-
const assembly = assemblyManager.get(assemblyName)
|
|
75
|
+
const assembly = assemblyManager.get(assemblyName) as
|
|
76
|
+
| Assembly
|
|
77
|
+
| undefined
|
|
76
78
|
if (!assembly) {
|
|
77
79
|
throw new Error('no assembly in layout')
|
|
78
80
|
}
|
|
@@ -298,9 +300,9 @@ export function layoutsModelFactory(
|
|
|
298
300
|
}
|
|
299
301
|
// Add features that are in the current view
|
|
300
302
|
for (const region of self.regions) {
|
|
301
|
-
const assembly = (
|
|
302
|
-
|
|
303
|
-
)
|
|
303
|
+
const assembly = self.session.apolloDataStore.assemblies.get(
|
|
304
|
+
region.assemblyName,
|
|
305
|
+
)
|
|
304
306
|
const ref = assembly?.getByRefName(region.refName)
|
|
305
307
|
const features = ref?.features
|
|
306
308
|
if (!features) {
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
LocationStartChange,
|
|
5
5
|
} from '@apollo-annotation/shared'
|
|
6
6
|
import type PluginManager from '@jbrowse/core/PluginManager'
|
|
7
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
7
8
|
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'
|
|
8
9
|
import type { MenuItem } from '@jbrowse/core/ui'
|
|
9
10
|
import { doesIntersect2 } from '@jbrowse/core/util'
|
|
@@ -189,7 +190,9 @@ export function mouseEventsModelFactory(
|
|
|
189
190
|
}
|
|
190
191
|
const { displayedRegions } = self.lgv
|
|
191
192
|
const region = displayedRegions[start.regionNumber]
|
|
192
|
-
const assembly = self.getAssemblyId(region.assemblyName)
|
|
193
|
+
const assembly = self.getAssemblyId(region.assemblyName) as
|
|
194
|
+
| Assembly
|
|
195
|
+
| undefined
|
|
193
196
|
const changes = getPropagatedLocationChanges(
|
|
194
197
|
feature,
|
|
195
198
|
current.bp,
|
|
@@ -6,8 +6,6 @@ import { type Instance, addDisposer, types } from '@jbrowse/mobx-state-tree'
|
|
|
6
6
|
import { type Theme, createTheme } from '@mui/material'
|
|
7
7
|
import { autorun } from 'mobx'
|
|
8
8
|
|
|
9
|
-
import type { ApolloSessionModel } from '../../session'
|
|
10
|
-
|
|
11
9
|
import { layoutsModelFactory } from './layouts'
|
|
12
10
|
|
|
13
11
|
export function renderingModelFactory(
|
|
@@ -125,9 +123,7 @@ export function renderingModelFactory(
|
|
|
125
123
|
self.lgv.dynamicBlocks.totalWidthPx,
|
|
126
124
|
self.featuresHeight(self.lgv.assemblyNames[0]),
|
|
127
125
|
)
|
|
128
|
-
for (const collaborator of
|
|
129
|
-
self.session as unknown as ApolloSessionModel
|
|
130
|
-
).collaborators) {
|
|
126
|
+
for (const collaborator of self.session.collaborators) {
|
|
131
127
|
const { locations } = collaborator
|
|
132
128
|
if (locations.length === 0) {
|
|
133
129
|
continue
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
6
6
|
import type { AnnotationFeature } from '@apollo-annotation/mst'
|
|
7
7
|
import type PluginManager from '@jbrowse/core/PluginManager'
|
|
8
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
8
9
|
import {
|
|
9
10
|
type AnyConfigurationSchemaType,
|
|
10
11
|
ConfigurationReference,
|
|
@@ -115,7 +116,9 @@ export function baseModelFactory(
|
|
|
115
116
|
const { assemblyName } = region
|
|
116
117
|
const { assemblyManager } =
|
|
117
118
|
self.session as unknown as AbstractSessionModel
|
|
118
|
-
const assembly = assemblyManager.get(assemblyName)
|
|
119
|
+
const assembly = assemblyManager.get(assemblyName) as
|
|
120
|
+
| Assembly
|
|
121
|
+
| undefined
|
|
119
122
|
if (!assembly) {
|
|
120
123
|
throw new Error(`No assembly found with name ${assemblyName}`)
|
|
121
124
|
}
|
|
@@ -128,8 +131,7 @@ export function baseModelFactory(
|
|
|
128
131
|
) as ApolloInternetAccountModel | undefined
|
|
129
132
|
},
|
|
130
133
|
get changeManager() {
|
|
131
|
-
return
|
|
132
|
-
.changeManager
|
|
134
|
+
return self.session.apolloDataStore.changeManager
|
|
133
135
|
},
|
|
134
136
|
getAssemblyId(assemblyName: string) {
|
|
135
137
|
const { assemblyManager } =
|
|
@@ -141,12 +143,10 @@ export function baseModelFactory(
|
|
|
141
143
|
return assembly.name
|
|
142
144
|
},
|
|
143
145
|
get selectedFeature(): AnnotationFeature | undefined {
|
|
144
|
-
return
|
|
145
|
-
.apolloSelectedFeature
|
|
146
|
+
return self.session.apolloSelectedFeature
|
|
146
147
|
},
|
|
147
148
|
get hoveredFeature(): HoveredFeature | undefined {
|
|
148
|
-
return
|
|
149
|
-
.apolloHoveredFeature
|
|
149
|
+
return self.session.apolloHoveredFeature
|
|
150
150
|
},
|
|
151
151
|
get height() {
|
|
152
152
|
const { sequenceRowHeight } = self
|
|
@@ -232,9 +232,9 @@ export function baseModelFactory(
|
|
|
232
232
|
return
|
|
233
233
|
}
|
|
234
234
|
if (self.lgv.bpPerPx <= 3) {
|
|
235
|
-
void (
|
|
236
|
-
self.
|
|
237
|
-
)
|
|
235
|
+
void self.session.apolloDataStore.loadRefSeq(
|
|
236
|
+
self.expandedRegions,
|
|
237
|
+
)
|
|
238
238
|
}
|
|
239
239
|
},
|
|
240
240
|
{
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-misused-promises */
|
|
4
4
|
|
|
5
5
|
import type { CheckResultI } from '@apollo-annotation/mst'
|
|
6
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
6
7
|
import { Menu, type MenuItem } from '@jbrowse/core/ui'
|
|
7
8
|
import {
|
|
8
9
|
type AbstractSessionModel,
|
|
@@ -157,7 +158,9 @@ export const LinearApolloSixFrameDisplay = observer(
|
|
|
157
158
|
/>
|
|
158
159
|
{lgv.displayedRegions.flatMap((region, idx) => {
|
|
159
160
|
const widthBp = lgv.bpPerPx * apolloRowHeight
|
|
160
|
-
const assembly = assemblyManager.get(region.assemblyName)
|
|
161
|
+
const assembly = assemblyManager.get(region.assemblyName) as
|
|
162
|
+
| Assembly
|
|
163
|
+
| undefined
|
|
161
164
|
if (showCheckResults) {
|
|
162
165
|
const filteredCheckResults = [
|
|
163
166
|
...session.apolloDataStore.checkResults.values(),
|
|
@@ -187,8 +190,7 @@ export const LinearApolloSixFrameDisplay = observer(
|
|
|
187
190
|
})?.offsetPx ?? 0) - lgv.offsetPx
|
|
188
191
|
const [feature] = checkResult.featureIds
|
|
189
192
|
if (
|
|
190
|
-
!feature ||
|
|
191
|
-
!feature.parent ||
|
|
193
|
+
!feature?.parent ||
|
|
192
194
|
!looksLikeGene(feature.parent, session)
|
|
193
195
|
) {
|
|
194
196
|
return null
|
|
@@ -6,7 +6,7 @@ import type { LinearApolloSixFrameDisplay } from '../stateModel'
|
|
|
6
6
|
export const TrackLines = observer(function TrackLines({
|
|
7
7
|
model,
|
|
8
8
|
hrStyle = { margin: 0, top: 0, color: 'black' },
|
|
9
|
-
idx
|
|
9
|
+
idx,
|
|
10
10
|
}: {
|
|
11
11
|
model: LinearApolloSixFrameDisplay
|
|
12
12
|
hrStyle?: React.CSSProperties
|
|
@@ -2,7 +2,6 @@ import type {
|
|
|
2
2
|
AnnotationFeature,
|
|
3
3
|
TranscriptPartCoding,
|
|
4
4
|
} from '@apollo-annotation/mst'
|
|
5
|
-
import type { BaseDisplayModel } from '@jbrowse/core/pluggableElementTypes'
|
|
6
5
|
import type { MenuItem } from '@jbrowse/core/ui'
|
|
7
6
|
import {
|
|
8
7
|
type AbstractSessionModel,
|
|
@@ -856,7 +855,7 @@ function getContextMenuItems(
|
|
|
856
855
|
session,
|
|
857
856
|
} = display
|
|
858
857
|
const [region] = regions
|
|
859
|
-
const currentAssemblyId = display.getAssemblyId(region.assemblyName)
|
|
858
|
+
const currentAssemblyId = display.getAssemblyId(region.assemblyName) as string
|
|
860
859
|
const menuItems: MenuItem[] = []
|
|
861
860
|
const role = internetAccount ? internetAccount.role : 'admin'
|
|
862
861
|
const readOnly = !(role && ['admin', 'user'].includes(role))
|
|
@@ -888,7 +887,7 @@ function getContextMenuItems(
|
|
|
888
887
|
if (isExonFeature(feature, session)) {
|
|
889
888
|
const adjacentExons = getAdjacentExons(feature, display)
|
|
890
889
|
const lgv = getContainingView(
|
|
891
|
-
display
|
|
890
|
+
display,
|
|
892
891
|
) as unknown as LinearGenomeViewModel
|
|
893
892
|
if (adjacentExons.upstream) {
|
|
894
893
|
const exon = adjacentExons.upstream
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
6
6
|
import type { AnnotationFeature } from '@apollo-annotation/mst'
|
|
7
7
|
import type PluginManager from '@jbrowse/core/PluginManager'
|
|
8
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
8
9
|
import {
|
|
9
10
|
type AnyConfigurationSchemaType,
|
|
10
11
|
ConfigurationReference,
|
|
@@ -128,7 +129,9 @@ export function baseModelFactory(
|
|
|
128
129
|
const { assemblyName } = region
|
|
129
130
|
const { assemblyManager } =
|
|
130
131
|
self.session as unknown as AbstractSessionModel
|
|
131
|
-
const assembly = assemblyManager.get(assemblyName)
|
|
132
|
+
const assembly = assemblyManager.get(assemblyName) as
|
|
133
|
+
| Assembly
|
|
134
|
+
| undefined
|
|
132
135
|
if (!assembly) {
|
|
133
136
|
throw new Error(`No assembly found with name ${assemblyName}`)
|
|
134
137
|
}
|
|
@@ -141,8 +144,7 @@ export function baseModelFactory(
|
|
|
141
144
|
) as ApolloInternetAccountModel | undefined
|
|
142
145
|
},
|
|
143
146
|
get changeManager() {
|
|
144
|
-
return
|
|
145
|
-
.changeManager
|
|
147
|
+
return self.session.apolloDataStore.changeManager
|
|
146
148
|
},
|
|
147
149
|
getAssemblyId(assemblyName: string) {
|
|
148
150
|
const { assemblyManager } =
|
|
@@ -154,12 +156,10 @@ export function baseModelFactory(
|
|
|
154
156
|
return assembly.name
|
|
155
157
|
},
|
|
156
158
|
get selectedFeature(): AnnotationFeature | undefined {
|
|
157
|
-
return
|
|
158
|
-
.apolloSelectedFeature
|
|
159
|
+
return self.session.apolloSelectedFeature
|
|
159
160
|
},
|
|
160
161
|
get hoveredFeature(): HoveredFeature | undefined {
|
|
161
|
-
return
|
|
162
|
-
.apolloHoveredFeature
|
|
162
|
+
return self.session.apolloHoveredFeature
|
|
163
163
|
},
|
|
164
164
|
}))
|
|
165
165
|
.actions((self) => ({
|
|
@@ -294,7 +294,7 @@ export function baseModelFactory(
|
|
|
294
294
|
{
|
|
295
295
|
label: 'Filter features by type',
|
|
296
296
|
onClick: () => {
|
|
297
|
-
const session = self
|
|
297
|
+
const { session } = self
|
|
298
298
|
;(self.session as unknown as AbstractSessionModel).queueDialog(
|
|
299
299
|
(doneCallback) => [
|
|
300
300
|
FilterFeatures,
|
|
@@ -318,14 +318,10 @@ export function baseModelFactory(
|
|
|
318
318
|
})
|
|
319
319
|
.actions((self) => ({
|
|
320
320
|
setSelectedFeature(feature?: AnnotationFeature) {
|
|
321
|
-
|
|
322
|
-
self.session as unknown as ApolloSessionModel
|
|
323
|
-
).apolloSetSelectedFeature(feature)
|
|
321
|
+
self.session.apolloSetSelectedFeature(feature)
|
|
324
322
|
},
|
|
325
323
|
setHoveredFeature(hoveredFeature?: HoveredFeature) {
|
|
326
|
-
|
|
327
|
-
self.session as unknown as ApolloSessionModel
|
|
328
|
-
).apolloSetHoveredFeature(hoveredFeature)
|
|
324
|
+
self.session.apolloSetHoveredFeature(hoveredFeature)
|
|
329
325
|
},
|
|
330
326
|
showFeatureDetailsWidget(
|
|
331
327
|
feature: AnnotationFeature,
|
|
@@ -363,13 +359,9 @@ export function baseModelFactory(
|
|
|
363
359
|
if (!self.lgv.initialized || self.regionCannotBeRendered()) {
|
|
364
360
|
return
|
|
365
361
|
}
|
|
366
|
-
void (
|
|
367
|
-
self.session as unknown as ApolloSessionModel
|
|
368
|
-
).apolloDataStore.loadFeatures(self.regions)
|
|
362
|
+
void self.session.apolloDataStore.loadFeatures(self.regions)
|
|
369
363
|
if (self.lgv.bpPerPx <= self.zoomThreshold) {
|
|
370
|
-
void (
|
|
371
|
-
self.session as unknown as ApolloSessionModel
|
|
372
|
-
).apolloDataStore.loadRefSeq(self.regions)
|
|
364
|
+
void self.session.apolloDataStore.loadRefSeq(self.regions)
|
|
373
365
|
}
|
|
374
366
|
},
|
|
375
367
|
{ name: 'LinearApolloSixFrameDisplayLoadFeatures', delay: 1000 },
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { AnnotationFeature } from '@apollo-annotation/mst'
|
|
4
4
|
import type PluginManager from '@jbrowse/core/PluginManager'
|
|
5
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
5
6
|
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'
|
|
6
7
|
import {
|
|
7
8
|
type AbstractSessionModel,
|
|
@@ -11,7 +12,6 @@ import {
|
|
|
11
12
|
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree'
|
|
12
13
|
import { autorun, observable } from 'mobx'
|
|
13
14
|
|
|
14
|
-
import type { ApolloSessionModel } from '../../session'
|
|
15
15
|
import { looksLikeGene } from '../../util/glyphUtils'
|
|
16
16
|
import { geneGlyph } from '../glyphs/GeneGlyph'
|
|
17
17
|
|
|
@@ -45,7 +45,9 @@ export function layoutsModelFactory(
|
|
|
45
45
|
const { assemblyManager } =
|
|
46
46
|
self.session as unknown as AbstractSessionModel
|
|
47
47
|
return self.lgv.displayedRegions.map((region) => {
|
|
48
|
-
const assembly = assemblyManager.get(region.assemblyName)
|
|
48
|
+
const assembly = assemblyManager.get(region.assemblyName) as
|
|
49
|
+
| Assembly
|
|
50
|
+
| undefined
|
|
49
51
|
let min: number | undefined
|
|
50
52
|
let max: number | undefined
|
|
51
53
|
const { end, refName, start } = region
|
|
@@ -101,7 +103,9 @@ export function layoutsModelFactory(
|
|
|
101
103
|
const { assemblyManager } =
|
|
102
104
|
self.session as unknown as AbstractSessionModel
|
|
103
105
|
return self.lgv.displayedRegions.map((region, idx) => {
|
|
104
|
-
const assembly = assemblyManager.get(region.assemblyName)
|
|
106
|
+
const assembly = assemblyManager.get(region.assemblyName) as
|
|
107
|
+
| Assembly
|
|
108
|
+
| undefined
|
|
105
109
|
const featureLayout = new Map<number, LayoutRow[]>()
|
|
106
110
|
const minMax = self.featuresMinMax[idx]
|
|
107
111
|
if (!minMax) {
|
|
@@ -222,9 +226,9 @@ export function layoutsModelFactory(
|
|
|
222
226
|
return
|
|
223
227
|
}
|
|
224
228
|
for (const region of self.regions) {
|
|
225
|
-
const assembly = (
|
|
226
|
-
|
|
227
|
-
)
|
|
229
|
+
const assembly = self.session.apolloDataStore.assemblies.get(
|
|
230
|
+
region.assemblyName,
|
|
231
|
+
)
|
|
228
232
|
const ref = assembly?.getByRefName(region.refName)
|
|
229
233
|
const features = ref?.features
|
|
230
234
|
if (!features) {
|
|
@@ -60,53 +60,46 @@ export function mouseEventsModelIntermediateFactory(
|
|
|
60
60
|
if (!featureTypeOntology) {
|
|
61
61
|
throw new Error('featureTypeOntology is undefined')
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
feature.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
for (const cds of loc) {
|
|
89
|
-
const frame = getFrame(
|
|
90
|
-
cds.min,
|
|
91
|
-
cds.max,
|
|
92
|
-
feature.strand ?? 1,
|
|
93
|
-
cds.phase,
|
|
94
|
-
)
|
|
95
|
-
const frameOffsets = self.showFeatureLabels
|
|
96
|
-
? [0, 5, 3, 1, 15, 13, 11]
|
|
97
|
-
: [0, 2, 1, 0, 8, 7, 6]
|
|
98
|
-
const rowNum = frameOffsets.at(frame)
|
|
99
|
-
if (row === rowNum && bp >= cds.min && bp <= cds.max) {
|
|
100
|
-
return (
|
|
101
|
-
featureID === undefined ||
|
|
102
|
-
!self.filteredTranscripts.includes(featureID)
|
|
63
|
+
const foundFeature = self.geneTrackRowNums.includes(row)
|
|
64
|
+
? layoutRow.find(
|
|
65
|
+
(f) =>
|
|
66
|
+
f.feature.type == 'exon' &&
|
|
67
|
+
bp >= f.feature.min &&
|
|
68
|
+
bp <= f.feature.max,
|
|
69
|
+
) ??
|
|
70
|
+
layoutRow.find((f) => bp >= f.feature.min && bp <= f.feature.max)
|
|
71
|
+
: layoutRow.find((f) => {
|
|
72
|
+
const { feature } = f
|
|
73
|
+
const featureID = feature.attributes.get('gff_id')?.toString()
|
|
74
|
+
const isTranscript = featureTypeOntology.isTypeOf(
|
|
75
|
+
feature.type,
|
|
76
|
+
'transcript',
|
|
77
|
+
)
|
|
78
|
+
if (!isTranscript) {
|
|
79
|
+
return false
|
|
80
|
+
}
|
|
81
|
+
for (const loc of feature.cdsLocations) {
|
|
82
|
+
for (const cds of loc) {
|
|
83
|
+
const frame = getFrame(
|
|
84
|
+
cds.min,
|
|
85
|
+
cds.max,
|
|
86
|
+
feature.strand ?? 1,
|
|
87
|
+
cds.phase,
|
|
103
88
|
)
|
|
89
|
+
const frameOffsets = self.showFeatureLabels
|
|
90
|
+
? [0, 5, 3, 1, 15, 13, 11]
|
|
91
|
+
: [0, 2, 1, 0, 8, 7, 6]
|
|
92
|
+
const rowNum = frameOffsets.at(frame)
|
|
93
|
+
if (row === rowNum && bp >= cds.min && bp <= cds.max) {
|
|
94
|
+
return (
|
|
95
|
+
featureID === undefined ||
|
|
96
|
+
!self.filteredTranscripts.includes(featureID)
|
|
97
|
+
)
|
|
98
|
+
}
|
|
104
99
|
}
|
|
105
100
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
})
|
|
109
|
-
}
|
|
101
|
+
return false
|
|
102
|
+
})
|
|
110
103
|
if (!foundFeature) {
|
|
111
104
|
return mousePosition
|
|
112
105
|
}
|
|
@@ -202,7 +195,7 @@ export function mouseEventsModelFactory(
|
|
|
202
195
|
}
|
|
203
196
|
const { displayedRegions } = self.lgv
|
|
204
197
|
const region = displayedRegions[start.regionNumber]
|
|
205
|
-
const assembly = self.getAssemblyId(region.assemblyName)
|
|
198
|
+
const assembly = self.getAssemblyId(region.assemblyName) as string
|
|
206
199
|
const changes = getPropagatedLocationChanges(
|
|
207
200
|
feature,
|
|
208
201
|
current.bp,
|
|
@@ -11,7 +11,6 @@ import { type Instance, addDisposer, types } from '@jbrowse/mobx-state-tree'
|
|
|
11
11
|
import { type Theme, createTheme } from '@mui/material'
|
|
12
12
|
import { autorun } from 'mobx'
|
|
13
13
|
|
|
14
|
-
import type { ApolloSessionModel } from '../../session'
|
|
15
14
|
import { codonColorCode } from '../../util/displayUtils'
|
|
16
15
|
import { looksLikeGene } from '../../util/glyphUtils'
|
|
17
16
|
|
|
@@ -137,9 +136,7 @@ export function renderingModelFactory(
|
|
|
137
136
|
self.lgv.dynamicBlocks.totalWidthPx,
|
|
138
137
|
self.featuresHeight,
|
|
139
138
|
)
|
|
140
|
-
for (const collaborator of
|
|
141
|
-
self.session as unknown as ApolloSessionModel
|
|
142
|
-
).collaborators) {
|
|
139
|
+
for (const collaborator of self.session.collaborators) {
|
|
143
140
|
const { locations } = collaborator
|
|
144
141
|
if (locations.length === 0) {
|
|
145
142
|
continue
|
|
@@ -10,9 +10,7 @@ import type { OntologyDBNode } from './indexeddb-schema'
|
|
|
10
10
|
import { applyPrefixes } from './prefixes'
|
|
11
11
|
import type { TextIndexFieldDefinition } from './types'
|
|
12
12
|
|
|
13
|
-
// eslint-disable-next-line import/no-duplicates
|
|
14
13
|
import type OntologyStore from '.'
|
|
15
|
-
// eslint-disable-next-line import/no-duplicates
|
|
16
14
|
import type { Transaction } from '.'
|
|
17
15
|
|
|
18
16
|
/** special value of jsonPath that gets the IRI (that is, ID) of the node with the configured prefixes applied */
|
|
@@ -357,7 +357,7 @@ export default class OntologyStore {
|
|
|
357
357
|
startingNodes,
|
|
358
358
|
(edge) => edge.pred === subclassRelation,
|
|
359
359
|
direction === 'subclasses' ? 'sub' : 'obj',
|
|
360
|
-
myTx
|
|
360
|
+
myTx,
|
|
361
361
|
)
|
|
362
362
|
for (const n of startingNodes) {
|
|
363
363
|
yield n
|
|
@@ -18,8 +18,8 @@ export function handleFeatureTypeChange(
|
|
|
18
18
|
typeName: 'TypeChange',
|
|
19
19
|
changedIds: [featureId],
|
|
20
20
|
featureId,
|
|
21
|
-
oldType
|
|
22
|
-
newType
|
|
21
|
+
oldType,
|
|
22
|
+
newType,
|
|
23
23
|
assembly: feature.assemblyId,
|
|
24
24
|
})
|
|
25
25
|
return changeManager.submit(change)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @eslint-react/set-state-in-effect */
|
|
1
2
|
/* eslint-disable @typescript-eslint/unbound-method */
|
|
2
3
|
import { makeStyles } from '@jbrowse/core/util/tss-react'
|
|
3
4
|
import { observer } from 'mobx-react'
|
|
@@ -41,7 +42,7 @@ export const NumberCell = observer(function NumberCell({
|
|
|
41
42
|
if (initialValue !== value) {
|
|
42
43
|
setValue(initialValue)
|
|
43
44
|
}
|
|
44
|
-
// eslint-disable-next-line react
|
|
45
|
+
// eslint-disable-next-line @eslint-react/exhaustive-deps
|
|
45
46
|
}, [initialValue])
|
|
46
47
|
|
|
47
48
|
useEffect(() => {
|