def bsveSearchAnalysis(self, params): currentUser = self.getCurrentUser() datasetName = params['datasetName'] bsveSearchParams = params['bsveSearchParams'] analysis = findAnalysisByName(currentUser, 'bsve search') # TODO in case can't find analysis? try: bsveSearchParams = json.loads(bsveSearchParams) except ValueError: raise RestException('bsveSearchParams is invalid JSON.') minerva_metadata = { 'dataset_type': 'geojson', 'source_type': 'bsve_search', 'bsve_search_params': bsveSearchParams, 'original_type': 'json' } datasetResource = Dataset() dataset = datasetResource.constructDataset(datasetName, minerva_metadata, 'created by bsve search') params = { 'bsveSearchParams': bsveSearchParams } # TODO change token to job token user, token = self.getCurrentUser(returnToken=True) kwargs = { 'params': params, 'user': currentUser, 'dataset': dataset, 'analysis': analysis, 'token': token } job = self.model('job', 'jobs').createLocalJob( title='bsve search: %s' % datasetName, user=currentUser, type='bsve.search', public=False, kwargs=kwargs, module='girder.plugins.minerva.jobs.bsve_search_worker', async=True) addJobOutput(job, dataset) self.model('job', 'jobs').scheduleJob(job) return job
def bsveMMWRAnalysis(self, params): currentUser = self.getCurrentUser() datasetName = params['datasetName'] count = int(params.get('count', 1000)) analysis = findAnalysisByName(currentUser, 'MMWR data import') # TODO in case can't find analysis? minerva_metadata = { 'dataset_type': 'geojson', 'source_type': 'mmwr_data_import', 'original_type': 'json' } datasetResource = Dataset() dataset = datasetResource.constructDataset( datasetName, minerva_metadata, 'created by MMWR data import' ) params = { 'count': count } # TODO change token to job token user, token = self.getCurrentUser(returnToken=True) kwargs = { 'params': params, 'user': currentUser, 'dataset': dataset, 'analysis': analysis, 'token': token } job = self.model('job', 'jobs').createLocalJob( title='MMWR import: %s' % datasetName, user=currentUser, type='bsve.mmwr', public=False, kwargs=kwargs, module='girder.plugins.minerva.jobs.soda_import_worker', async=True) addJobOutput(job, dataset) self.model('job', 'jobs').scheduleJob(job) return job
def bsveSearchAnalysis(self, params): currentUser = self.getCurrentUser() datasetName = params['datasetName'] bsveSearchParams = params['bsveSearchParams'] analysis = findAnalysisByName(currentUser, 'bsve search') # TODO in case can't find analysis? try: bsveSearchParams = json.loads(bsveSearchParams) except ValueError: raise RestException('bsveSearchParams is invalid JSON.') datasetFolder = findDatasetFolder(currentUser, currentUser) # TODO # try findOne earlier # all throughout utility # create a new dataset in the dataset folder with this name # TODO in case of duplicates? dataset = (self.model('item').createItem(datasetName, currentUser, datasetFolder, 'created by bsve search')) params = { 'bsveSearchParams': bsveSearchParams } # create a local job with bsve search # tie in the dataset id with the local job # TODO would we rather create the dataset at the end of the bsve search? # TODO change token to job token user, token = self.getCurrentUser(returnToken=True) kwargs = { 'params': params, 'user': currentUser, 'dataset': dataset, 'analysis': analysis, 'token': token } job = self.model('job', 'jobs').createLocalJob( title='bsve search: %s' % datasetName, user=currentUser, type='bsve.search', public=False, kwargs=kwargs, module='girder.plugins.minerva.jobs.bsve_search_worker', async=True) if 'meta' in dataset: metadata = dataset['meta'] else: metadata = {} minerva_metadata = { 'dataset_id': dataset['_id'], 'source': 'bsve_search', 'bsve_search_params': bsveSearchParams, 'original_type': 'json' } metadata['minerva'] = minerva_metadata self.model('item').setMetadata(dataset, metadata) self.model('job', 'jobs').scheduleJob(job) return minerva_metadata