11import type { AuspiceJsonV2 } from 'auspice'
22import { concurrent } from 'fasy'
3- import { isEmpty , isNil } from 'lodash'
3+ import { isEmpty , isNil , omitBy } from 'lodash'
4+ import pProps from 'p-props'
45import { useRouter } from 'next/router'
56import { useRecoilCallback } from 'recoil'
67import { REF_NODE_CLADE_FOUNDER , REF_NODE_PARENT , REF_NODE_ROOT } from 'src/constants'
78import { ErrorInternal } from 'src/helpers/ErrorInternal'
8- import { filterValuesNotUndefinedOrNull } from 'src/helpers/notUndefined'
9- import { promiseAllObject } from 'src/helpers/promise'
109import {
1110 seqIndexToTopDatasetNameAtom ,
1211 seqIndicesWithoutDatasetSuggestionsAtom ,
@@ -237,24 +236,31 @@ async function resolveParams(
237236 datasets : Dataset [ ] | undefined ,
238237) : Promise < NextcladeParamsRaw > {
239238 if ( tree ) {
240- return resolveInputsForAuspiceDataset ( tree , overrides )
239+ if ( ! datasets ?. [ 0 ] ) {
240+ throw new ErrorInternal ( 'Attempted to start analysis with Auspice JSON, but without dataset info resolved' )
241+ }
242+ return resolveInputsForAuspiceDataset ( tree , overrides , datasets [ 0 ] . path )
241243 }
242244 return resolveInputsForNextcladeDataset ( overrides , datasets )
243245}
244246
245- async function resolveInputsForAuspiceDataset ( tree : AuspiceTree | undefined , overrides : DatasetFilesOverrides ) {
246- const resolvedOverrides = await promiseAllObject ( {
247- genomeAnnotation : async ( ) => resolveOverride ( overrides . genomeAnnotation ) ,
248- reference : async ( ) => resolveOverride ( overrides . reference ) ,
249- treeJson : async ( ) => resolveOverride ( overrides . treeJson ) ,
250- pathogenJson : async ( ) => resolveOverride ( overrides . pathogenJson ) ,
247+ async function resolveInputsForAuspiceDataset (
248+ tree : AuspiceTree | undefined ,
249+ overrides : DatasetFilesOverrides ,
250+ datasetName : string ,
251+ ) : Promise < NextcladeParamsRaw > {
252+ const resolvedOverrides = await pProps ( {
253+ genomeAnnotation : resolveOverride ( overrides . genomeAnnotation ) ,
254+ reference : resolveOverride ( overrides . reference ) ,
255+ treeJson : resolveOverride ( overrides . treeJson ) ,
256+ pathogenJson : resolveOverride ( overrides . pathogenJson ) ,
251257 } )
252- const filteredOverrides = filterValuesNotUndefinedOrNull ( resolvedOverrides )
258+ const filteredOverrides = omitBy ( resolvedOverrides , isNil )
253259 return {
254260 Auspice : {
255261 auspiceJson : JSON . stringify ( tree ) ,
256262 ...filteredOverrides ,
257- datasetName : 'Auspice JSON' ,
263+ datasetName,
258264 } ,
259265 }
260266}
@@ -281,13 +287,13 @@ async function getDatasetsFiles(
281287/** Resolves all dataset files into strings */
282288async function getDatasetFiles ( datasets : Dataset [ ] ) : Promise < NextcladeParamsRawDir [ ] > {
283289 return concurrent . map ( async ( dataset ) => {
284- return promiseAllObject ( {
290+ return {
285291 datasetName : dataset . path ,
286292 genomeAnnotation : await axiosFetchRawMaybe ( dataset . files ?. genomeAnnotation ) ,
287293 reference : await axiosFetchRaw ( dataset . files ?. reference ) ,
288294 treeJson : await axiosFetchRawMaybe ( dataset . files ?. treeJson ) ,
289295 pathogenJson : await axiosFetchRaw ( dataset . files ?. pathogenJson ) ,
290- } )
296+ }
291297 } , datasets )
292298}
293299
@@ -296,13 +302,13 @@ async function getDatasetFilesWithOverrides(
296302 overrides : DatasetFilesOverrides ,
297303 dataset : Dataset ,
298304) : Promise < NextcladeParamsRawDir > {
299- return promiseAllObject ( {
305+ return {
300306 datasetName : dataset . path ,
301- genomeAnnotation : resolveOverrideOrDatasetFile ( overrides . genomeAnnotation , dataset . files ?. genomeAnnotation ) ,
302- reference : resolveOverrideOrDatasetFileRequired ( overrides . reference , dataset . files ?. reference ) ,
303- treeJson : resolveOverrideOrDatasetFile ( overrides . treeJson , dataset . files ?. treeJson ) ,
304- pathogenJson : resolveOverrideOrDatasetFileRequired ( overrides . pathogenJson , dataset . files ?. pathogenJson ) ,
305- } )
307+ genomeAnnotation : await resolveOverrideOrDatasetFile ( overrides . genomeAnnotation , dataset . files ?. genomeAnnotation ) ,
308+ reference : await resolveOverrideOrDatasetFileRequired ( overrides . reference , dataset . files ?. reference ) ,
309+ treeJson : await resolveOverrideOrDatasetFile ( overrides . treeJson , dataset . files ?. treeJson ) ,
310+ pathogenJson : await resolveOverrideOrDatasetFileRequired ( overrides . pathogenJson , dataset . files ?. pathogenJson ) ,
311+ }
306312}
307313
308314async function resolveOverrideOrDatasetFileRequired (
0 commit comments