Skip to content

Commit

Permalink
Assembly loading error
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Aug 19, 2021
1 parent 2dafe61 commit 5a457f2
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import AssemblySelector from '@jbrowse/core/ui/AssemblySelector'
import BaseResult from '@jbrowse/core/TextSearch/BaseResults'
import {
Button,
Card,
CardContent,
CircularProgress,
Container,
Grid,
Expand Down Expand Up @@ -48,40 +46,40 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
const { assemblyNames, assemblyManager } = session
const { pluginManager } = getEnv(session)
const { textSearchManager } = pluginManager.rootModel
const { rankSearchResults } = model
const [selectedAssembly, setSelectedAssembly] = useState<string>(
assemblyNames[0],
)
const {
rankSearchResults,
isSearchDialogDisplayed,
error: modelError,
} = model
const [selectedAsm, setSelectedAsm] = useState<string>(assemblyNames[0])
const [selectedRegion, setSelectedRegion] = useState<string>()
const [assemblyRegions, setAssemblyRegions] = useState<Region[]>([])
const [error, setError] = useState<Error>()
const [error, setError] = useState<Error | undefined>(modelError)
const message = !assemblyNames.length ? 'No configured assemblies' : ''
const searchScope = model.searchScope(selectedAssembly)
const searchScope = model.searchScope(selectedAsm)

useEffect(() => {
let done = false
;(async () => {
try {
if (selectedAssembly) {
const assembly = await assemblyManager.waitForAssembly(
selectedAssembly,
)
if (selectedAsm) {
const assembly = await assemblyManager.waitForAssembly(selectedAsm)
if (assembly && assembly.regions) {
const regions = assembly.regions
if (!done && regions) {
if (regions) {
setSelectedRegion(regions[0].refName)
setAssemblyRegions(regions)
}
}
}
setError(undefined)
} catch (e) {
console.error(e)
setError(e)
setSelectedRegion(undefined)
setAssemblyRegions([])
}
})()
return () => {
done = true
}
}, [assemblyManager, selectedAssembly])
}, [assemblyManager, selectedAsm])

function setSelectedValue(selectedOption: BaseResult) {
setSelectedRegion(selectedOption.getLocation())
Expand All @@ -108,7 +106,7 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
model.setSearchResults(results, input.toLocaleLowerCase())
} else {
try {
input && model.navToLocString(input, selectedAssembly)
input && model.navToLocString(input, selectedAsm)
} catch (e) {
if (`${e}` === `Error: Unknown reference sequence "${input}"`) {
model.setSearchResults(results, input.toLocaleLowerCase())
Expand All @@ -123,32 +121,26 @@ const ImportForm = observer(({ model }: { model: LGV }) => {

return (
<div>
{model.isSearchDialogDisplayed ? (
<SearchResultsDialog
model={model}
optAssemblyName={selectedAssembly}
handleClose={() => {
model.setSearchResults(undefined, undefined)
}}
/>
) : null}
{error ? <ErrorDisplay error={error} /> : null}

<Container className={classes.importFormContainer}>
<Grid container spacing={1} justifyContent="center" alignItems="center">
<Grid item>
<AssemblySelector
onChange={val => setSelectedAssembly(val)}
onChange={val => {
setError(undefined)
setSelectedAsm(val)
}}
session={session}
selected={selectedAssembly}
selected={selectedAsm}
/>
</Grid>
<Grid item>
{error ? (
<ErrorDisplay error={error} />
) : selectedAssembly ? (
selectedRegion && model.volatileWidth ? (
{selectedAsm ? (
selectedRegion && model.volatileWidth && !error ? (
<RefNameAutocomplete
model={model}
assemblyName={message ? undefined : selectedAssembly}
assemblyName={message ? undefined : selectedAsm}
value={selectedRegion}
onSelect={option => setSelectedValue(option)}
TextFieldProps={{
Expand All @@ -173,13 +165,15 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
},
}}
/>
) : (
) : !error ? (
<CircularProgress
role="progressbar"
color="inherit"
size={20}
disableShrink
/>
) : (
<Typography color="error">X</Typography>
)
) : null}
</Grid>
Expand All @@ -188,6 +182,7 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
disabled={!selectedRegion}
className={classes.button}
onClick={() => {
model.setError(undefined)
if (selectedRegion) {
handleSelectedRegion(selectedRegion)
}
Expand All @@ -200,7 +195,10 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
<Button
disabled={!selectedRegion}
className={classes.button}
onClick={() => model.showAllRegionsInAssembly(selectedAssembly)}
onClick={() => {
model.setError(undefined)
model.showAllRegionsInAssembly(selectedAsm)
}}
variant="contained"
color="secondary"
>
Expand All @@ -209,6 +207,15 @@ const ImportForm = observer(({ model }: { model: LGV }) => {
</Grid>
</Grid>
</Container>
{isSearchDialogDisplayed ? (
<SearchResultsDialog
model={model}
optAssemblyName={selectedAsm}
handleClose={() => {
model.setSearchResults(undefined, undefined)
}}
/>
) : null}
</div>
)
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,11 @@ const ErrorDisplay = observer(({ error }: { error: Error }) => {
const LinearGenomeView = observer(({ model }: { model: LGV }) => {
const { tracks, error, hideHeader, initialized, hasDisplayedRegions } = model
const classes = useStyles()
if (error) {
return <ErrorDisplay error={error} />
}
if (!initialized) {

if (!initialized && !error) {
return null
}
if (!hasDisplayedRegions) {
if (!hasDisplayedRegions || error) {
return <ImportForm model={model} />
}
return (
Expand Down
12 changes: 5 additions & 7 deletions plugins/sequence/src/TwoBitAdapter/TwoBitAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,11 @@ export default class TwoBitAdapter

public async getRegions(): Promise<NoAssemblyRegion[]> {
const refSizes = await this.twobit.getSequenceSizes()
return Object.keys(refSizes).map(
(refName: string): NoAssemblyRegion => ({
refName,
start: 0,
end: refSizes[refName],
}),
)
return Object.keys(refSizes).map(refName => ({
refName,
start: 0,
end: refSizes[refName],
}))
}

/**
Expand Down
13 changes: 13 additions & 0 deletions test_data/volvox/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@
}
}
}
},
{
"name": "volvox404",
"sequence": {
"type": "ReferenceSequenceTrack",
"trackId": "volvox_refseq404",
"adapter": {
"type": "TwoBitAdapter",
"twoBitLocation": {
"uri": "volvox.2bit_404"
}
}
}
}
],
"aggregateTextSearchAdapters": [
Expand Down

0 comments on commit 5a457f2

Please sign in to comment.