From 4077eb054a302ec055e53c31a144b3cd10217f83 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Tue, 7 Apr 2026 16:47:10 +0000 Subject: [PATCH 1/3] Exclude demo directory when deploying website --- .github/workflows/website.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 292623be8..0a8672456 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -30,5 +30,5 @@ jobs: - name: Upload working-directory: packages/website run: | - aws s3 sync --delete build/ s3://apollo.jbrowse.org/ + aws s3 sync --exclude "demo/*" --delete build/ s3://apollo.jbrowse.org/ aws cloudfront create-invalidation --distribution-id EL84YTOVCGNJZ --paths '/*' From 990d0c0b57d5e99dd97babae168ff0c299363f28 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Tue, 7 Apr 2026 16:47:27 +0000 Subject: [PATCH 2/3] Only open the stores we need --- .../BackendDrivers/LocalDriver/LocalDriver.ts | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/jbrowse-plugin-apollo/src/BackendDrivers/LocalDriver/LocalDriver.ts b/packages/jbrowse-plugin-apollo/src/BackendDrivers/LocalDriver/LocalDriver.ts index 973984ccb..4c84ec24c 100644 --- a/packages/jbrowse-plugin-apollo/src/BackendDrivers/LocalDriver/LocalDriver.ts +++ b/packages/jbrowse-plugin-apollo/src/BackendDrivers/LocalDriver/LocalDriver.ts @@ -2,7 +2,6 @@ /* eslint-disable @typescript-eslint/require-await */ import { type Change, - FeatureChange, type SerializedChange, checkRegistry, isFeatureChange, @@ -162,14 +161,9 @@ export class LocalDriver extends BackendDriver { const regions = await this.getRegions(assembly) const refNames = regions.map((r) => r.refName) const db = await openDb(assembly, refNames) - const storeNames = refNames.flatMap((r) => [ - `features-${r}`, - `checkresults-${r}`, - ]) - storeNames.push('changes') - const tx = db.transaction(storeNames, 'readwrite') const topLevelFeatures = new Set() const deletedFeatureIds: { refSeq: string; featureId: string }[] = [] + const neededRefNames = new Set() if (isDeleteFeatureChange(change)) { for (const c of change.changes) { if (c.parentFeatureId) { @@ -179,8 +173,8 @@ export class LocalDriver extends BackendDriver { } } else { const { refSeq, _id } = c.deletedFeature - void tx.objectStore(`features-${refSeq}`).delete(c.deletedFeature._id) deletedFeatureIds.push({ refSeq, featureId: _id }) + neededRefNames.add(refSeq) } } } else { @@ -188,9 +182,19 @@ export class LocalDriver extends BackendDriver { const feature = this.clientStore.getFeature(changedId) if (feature) { topLevelFeatures.add(feature.topLevelFeature) + neededRefNames.add(feature.refSeq) } } } + const storeNames = [...neededRefNames].flatMap((r) => [ + `features-${r}`, + `checkresults-${r}`, + ]) + storeNames.push('changes') + const tx = db.transaction(storeNames, 'readwrite') + for (const { refSeq, featureId } of deletedFeatureIds) { + void tx.objectStore(`features-${refSeq}`).delete(featureId) + } for (const feature of topLevelFeatures) { const snapshot = getSnapshot(feature) void tx From 6ab7dfd2469e05f06d98bc5aed7b9cecd77101e1 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Tue, 7 Apr 2026 16:48:02 +0000 Subject: [PATCH 3/3] Fix and simplify annot from read workflow --- .../jbrowse-plugin-apollo/local.config.json | 21 +++++ .../src/extensions/annotationFromPileup.ts | 76 +++++++++--------- .../test_data/paired_end_stranded_rnaseq.bam | Bin 0 -> 38926 bytes .../paired_end_stranded_rnaseq.bam.bai | Bin 0 -> 96 bytes 4 files changed, 59 insertions(+), 38 deletions(-) create mode 100644 packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam create mode 100644 packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam.bai diff --git a/packages/jbrowse-plugin-apollo/local.config.json b/packages/jbrowse-plugin-apollo/local.config.json index cd4bc9dc7..b198c627b 100644 --- a/packages/jbrowse-plugin-apollo/local.config.json +++ b/packages/jbrowse-plugin-apollo/local.config.json @@ -38,6 +38,27 @@ } } } + }, + { + "type": "AlignmentsTrack", + "trackId": "paired_end_stranded_rnaseq", + "name": "volvox-stranded-rnaseq", + "category": ["Alignments"], + "adapter": { + "type": "BamAdapter", + "bamLocation": { + "uri": "test_data/paired_end_stranded_rnaseq.bam", + "locationType": "UriLocation" + }, + "index": { + "location": { + "uri": "test_data/paired_end_stranded_rnaseq.bam.bai", + "locationType": "UriLocation" + }, + "indexType": "BAI" + } + }, + "assemblyNames": ["volvox"] } ], "plugins": [ diff --git a/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts b/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts index 8887ccfb7..b9f48000e 100644 --- a/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts +++ b/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts @@ -4,7 +4,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-return */ import type { AnnotationFeatureSnapshot } from '@apollo-annotation/mst' -import type { Assembly } from '@jbrowse/core/assemblyManager/assembly' import type { DisplayType, PluggableElementType, @@ -14,11 +13,14 @@ import { getContainingView, getSession, } from '@jbrowse/core/util' +import type { Feature } from '@jbrowse/core/util/simpleFeature' import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view' import AddIcon from '@mui/icons-material/Add' import ObjectID from 'bson-objectid' +import { CollaborationServerDriver } from '../BackendDrivers' import { CreateApolloAnnotation } from '../components/CreateApolloAnnotation' +import type { ApolloSessionModel } from '../session' function parseCigar(cigar: string): [string, number][] { const regex = /(\d+)([MIDNSHPX=])/g @@ -44,7 +46,7 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { return lgv.dynamicBlocks.contentBlocks[0] }, getAssembly() { - const firstRegion = self.getFirstRegion() + const firstRegion = this.getFirstRegion() const session = getSession(self) const { assemblyManager } = session const { assemblyName } = firstRegion @@ -54,35 +56,13 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { } return assembly }, - getRefSeqId(assembly: Assembly) { - const firstRegion = self.getFirstRegion() - const { refName } = firstRegion - const { refNameAliases } = assembly - if (!refNameAliases) { - throw new Error(`Could not find aliases for ${assembly.name}`) - } - const newRefNames = [...Object.entries(refNameAliases)] - .filter(([id, refName]) => id !== refName) - .map(([id, refName]) => ({ - _id: id, - name: refName, - })) - const refSeqId = newRefNames.find((item) => item.name === refName)?._id - if (!refSeqId) { - throw new Error(`Could not find refSeqId named ${refName}`) - } - return refSeqId - }, - getAnnotationFeature() { - const feature = self.contextMenuFeature - const assembly = self.getAssembly() - const refSeqId = self.getRefSeqId(assembly) - const start: number = feature.get('start') - const end: number = feature.get('end') - const strand = feature.get('strand') - const name = feature.get('name') + getAnnotationFeature(jbrowseFeature: Feature, refSeqId: string) { + const start: number = jbrowseFeature.get('start') + const end: number = jbrowseFeature.get('end') + const strand = jbrowseFeature.get('strand') as 1 | -1 | undefined + const name = jbrowseFeature.get('name') as string | undefined - const cigarData: string = feature.get('CIGAR') + const cigarData = jbrowseFeature.get('CIGAR') as string const ops = parseCigar(cigarData) let position = start let currentExonStart: number | undefined @@ -151,9 +131,10 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { max: end, type: 'mRNA', strand, - attributes: { - name: [name], - }, + } + if (name) { + newFeature.attributes = {} + newFeature.attributes.gff_name = [name] } if (exons.length === 0) { return newFeature @@ -183,8 +164,8 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { const session = getSession(self) const assembly = self.getAssembly() const region = self.getFirstRegion() - const feature = self.contextMenuFeature - if (!feature) { + const jbrowseFeature = self.contextMenuFeature + if (!jbrowseFeature) { return superContextMenuItems() } return [ @@ -192,7 +173,23 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { { label: 'Create Apollo annotation', icon: AddIcon, - onClick: () => { + onClick: async () => { + const backendDriver = ( + session as unknown as ApolloSessionModel + ).apolloDataStore.getBackendDriver(region.assemblyName) + let refSeqId = region.refName + if (backendDriver instanceof CollaborationServerDriver) { + const backendRefSeqId = await backendDriver.getRefSeqId( + region.assemblyName, + region.refName, + ) + if (!backendRefSeqId) { + throw new Error( + `Could not find refSeq for "${region.refName}"`, + ) + } + refSeqId = backendRefSeqId + } ;(session as unknown as AbstractSessionModel).queueDialog( (doneCallback) => [ CreateApolloAnnotation, @@ -201,9 +198,12 @@ export function annotationFromPileup(pluggableElement: PluggableElementType) { handleClose: () => { doneCallback() }, - annotationFeature: self.getAnnotationFeature(assembly), + annotationFeature: self.getAnnotationFeature( + jbrowseFeature, + refSeqId, + ), assembly, - refSeqId: self.getRefSeqId(assembly), + refSeqId, region, }, ], diff --git a/packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam b/packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam new file mode 100644 index 0000000000000000000000000000000000000000..5c8683ba1b3e1451d4b6803882c37c40eed54e4f GIT binary patch literal 38926 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 literal 0 HcmV?d00001 diff --git a/packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam.bai b/packages/jbrowse-plugin-apollo/test_data/paired_end_stranded_rnaseq.bam.bai new file mode 100644 index 0000000000000000000000000000000000000000..3131436a54da461d70e8785bce308e9711427b0e GIT binary patch literal 96 xcmZ>A^kigYU|?VZVoxCk1`wNp;V+nEVE8m0#PFH~kw+KjW`-(*QmA?%f&k7I2qORh literal 0 HcmV?d00001