def Run(self, args): """Run 'operations list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The list of operations for this project. """ both = not args.filter and not args.where outputs = [] if both or args.filter: apitools_client = genomics_util.GetGenomicsClient('v2alpha1') genomics_messages = genomics_util.GetGenomicsMessages('v2alpha1') request = genomics_messages.GenomicsProjectsOperationsListRequest( name='projects/%s/operations' % (genomics_util.GetProjectId(), ), filter=args.filter) outputs.append( list_pager.YieldFromList( apitools_client.projects_operations, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args. limit, # Use limit if any, else server default. field='operations')) if both or args.where: apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() if args.where: args.where += ' AND ' args.where += 'projectId=%s' % genomics_util.GetProjectId() request = genomics_messages.GenomicsOperationsListRequest( name='operations', filter=args.where) outputs.append( list_pager.YieldFromList( apitools_client.operations, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args. limit, # Use limit if any, else server default. field='operations')) return chain.from_iterable(outputs)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() # Look it up first so that we can display the name existing_rgs = apitools_client.readgroupsets.Get( genomics_messages.GenomicsReadgroupsetsGetRequest(readGroupSetId=args.id)) prompt_message = ( 'Deleting read group set {0} ({1}) will delete all objects in the read ' 'group set.').format(args.id, existing_rgs.name) if not console_io.PromptContinue(message=prompt_message): raise GenomicsError('Deletion aborted by user.') apitools_client.readgroupsets.Delete( genomics_messages.GenomicsReadgroupsetsDeleteRequest( readGroupSetId=str(args.id))) log.DeletedResource('{0} ({1})'.format(args.id, existing_rgs.name))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ # Look it up first so that we can display the name existing_ds = genomics_util.GetDataset(args.id) prompt_message = ( 'Deleting dataset {0} ({1}) will delete all objects in the dataset. ' 'Deleted datasets can be recovered with the "restore" command ' 'up to one week after the deletion occurs.').format( existing_ds.id, existing_ds.name) if not console_io.PromptContinue(message=prompt_message): raise GenomicsError('Deletion aborted by user.') apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() dataset = genomics_messages.GenomicsDatasetsDeleteRequest( datasetId=str(args.id), ) apitools_client.datasets.Delete(dataset) log.DeletedResource('{0} ({1})'.format(existing_ds.id, existing_ds.name))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: an Operation message which tracks the asynchronous export """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() try: return apitools_client.readgroupsets.Export( genomics_messages.GenomicsReadgroupsetsExportRequest( readGroupSetId=args.read_group_set_id, exportReadGroupSetRequest=genomics_messages. ExportReadGroupSetRequest( projectId=genomics_util.GetProjectId(), exportUri=args.export_uri, referenceNames=args.reference_names))) except apitools_exceptions.HttpError as error: # Map our error messages (JSON API camelCased) back into flag names. msg = ( exceptions.HttpException(error).payload.status_message.replace( 'exportUri', '--export-uri').replace('referenceNames', '--reference-names')) core_exceptions.reraise(exceptions.HttpException(msg))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() variantset = genomics_messages.VariantSet( datasetId=args.dataset_id, referenceSetId=args.reference_set_id, name=args.name, description=args.description) result = apitools_client.variantsets.Create(variantset) log.CreatedResource('{0}, id: {1}'.format(result.name, result.id), kind='variant set', details='belonging to dataset [id: {0}]'.format( result.datasetId)) return result
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() request = genomics_messages.GenomicsCallsetsPatchRequest( callSet=genomics_messages.CallSet( id=args.id, name=args.name, # Can't construct a callset without the variant id set, but # actually setting the variant id would not do anything, so # use a dummy value. See b/22818510. variantSetIds=['123'], ), callSetId=args.id, ) result = apitools_client.callsets.Patch(request) log.UpdatedResource('{0}, id: {1}'.format(result.name, result.id), kind='call set') return result
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: an ExportVariantSetResponse """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() enum = genomics_messages.ExportVariantSetRequest.FormatValueValuesEnum call_set_ids = args.call_set_ids if args.call_set_ids else [] project_id = args.bigquery_project if not project_id: project_id = genomics_util.GetProjectId() request = genomics_messages.GenomicsVariantsetsExportRequest( variantSetId=args.id, exportVariantSetRequest=genomics_messages.ExportVariantSetRequest( callSetIds=call_set_ids, projectId=project_id, format=enum.FORMAT_BIGQUERY, bigqueryDataset=args.bigquery_dataset, bigqueryTable=args.table)) return apitools_client.variantsets.Export(request)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ prompt_message = ('Restoring dataset {0} will restore all objects in ' 'the dataset.').format(args.id) if not console_io.PromptContinue(message=prompt_message): raise GenomicsError('Restore aborted by user.') apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() dataset = genomics_messages.GenomicsDatasetsUndeleteRequest( datasetId=args.id) result = apitools_client.datasets.Undelete(dataset) log.RestoredResource('{0}, id: {1}'.format(result.name, result.id), kind='dataset') return result
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() name = args.name if not name.startswith(_OPERATIONS_PREFIX): name = _OPERATIONS_PREFIX + name # Look up the operation so we can display it in the confirmation prompt op = apitools_client.operations.Get( genomics_messages.GenomicsOperationsGetRequest(name=name)) operation_string = StringIO() print_format = display.Displayer(self, args).GetFormat() resource_printer.Print(op, print_format, out=operation_string) if not console_io.PromptContinue( message='%s\n%s' % (operation_string.getvalue(), 'This operation will be canceled')): raise GenomicsError('Cancel aborted by user.') apitools_client.operations.Cancel( genomics_messages.GenomicsOperationsCancelRequest(name=name)) log.status.write('Canceled [{0}].\n'.format(name))
def Run(self, args): """Run 'operations list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The list of operations for this project. """ apitools_client = genomics_util.GetGenomicsClient('v2alpha1') genomics_messages = genomics_util.GetGenomicsMessages('v2alpha1') request_filter = None if args.filter: rewriter = filter_rewrite.OperationsBackend() args.filter, request_filter = rewriter.Rewrite(args.filter) log.info('client_filter=%r server_filter=%r', args.filter, request_filter) request = genomics_messages.GenomicsProjectsOperationsListRequest( name='projects/%s/operations' % (genomics_util.GetProjectId(),), filter=request_filter) return list_pager.YieldFromList( apitools_client.projects_operations, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args.limit, # Use limit if any, else server default. field='operations')
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: A list of reads that meet the search criteria. """ apitools_client = genomics_util.GetGenomicsClient() messages = genomics_util.GetGenomicsMessages() fields = genomics_util.GetQueryFields(self.GetReferencedKeyNames(args), 'alignments') if fields: global_params = messages.StandardQueryParameters(fields=fields) else: global_params = None return list_pager.YieldFromList( apitools_client.reads, messages.SearchReadsRequest( readGroupSetIds=[args.read_group_set_id], referenceName=args.reference_name, start=args.start, end=args.end), global_params=global_params, limit=args.limit, method='Search', batch_size_attribute='pageSize', batch_size=args.page_size, field='alignments')
def Run(self, args): """Run 'datasets list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Yields: The list of datasets for this project. Raises: HttpException: An http error response was received while executing api request. """ apitools_client = genomics_util.GetGenomicsClient() request = genomics_util.GetGenomicsMessages( ).GenomicsDatasetsListRequest(projectId=genomics_util.GetProjectId()) try: for resource in list_pager.YieldFromList( apitools_client.datasets, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args. limit, # Use limit if any, else server default. field='datasets'): yield resource except apitools_exceptions.HttpError as error: raise exceptions.HttpException( genomics_util.GetErrorMessage(error))
def Run(self, args): """Run 'variantsets list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Yields: The list of variant sets for this dataset. Raises: HttpException: An http error response was received while executing api request. """ apitools_client = genomics_util.GetGenomicsClient() req_class = genomics_util.GetGenomicsMessages().SearchVariantSetsRequest request = req_class(datasetIds=[args.dataset_id]) try: for resource in list_pager.YieldFromList( apitools_client.variantsets, request, method='Search', limit=args.limit, batch_size_attribute='pageSize', batch_size=args.limit, # Use limit if any, else server default. field='variantSets'): yield resource except apitools_exceptions.HttpError as error: raise exceptions.HttpException(genomics_util.GetErrorMessage(error))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() dataset = genomics_messages.Dataset( name=args.name, projectId=genomics_util.GetProjectId(), ) result = apitools_client.datasets.Create(dataset) log.CreatedResource('{0}, id: {1}'.format(result.name, result.id), kind='dataset') return result
def Run(self, args): """Run 'operations list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The list of operations for this project. """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() if args.where: args.where += ' AND ' args.where += 'projectId=%s' % genomics_util.GetProjectId() request = genomics_messages.GenomicsOperationsListRequest( name='operations', filter=args.where) return list_pager.YieldFromList( apitools_client.operations, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args.limit, # Use limit if any, else server default. field='operations')
def Run(self, args): """Run 'references list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Yields: The list of matching references. Raises: HttpException: An http error response was received while executing api request. """ apitools_client = genomics_util.GetGenomicsClient() req_class = genomics_util.GetGenomicsMessages().SearchReferencesRequest request = req_class(md5checksums=args.md5checksums, accessions=args.accessions, referenceSetId=args.reference_set_id) for resource in list_pager.YieldFromList( apitools_client.references, request, method='Search', limit=args.limit, batch_size_attribute='pageSize', batch_size=args. limit, # Use limit if any, else server default. field='references'): yield resource
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ op = None apitools_client = genomics_util.GetGenomicsClient('v2alpha1') genomics_messages = genomics_util.GetGenomicsMessages('v2alpha1') name, v2 = genomics_util.CanonicalizeOperationName(args.name) if v2: op = apitools_client.projects_operations.Get( genomics_messages.GenomicsProjectsOperationsGetRequest( name=name)) else: apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() op = apitools_client.operations.Get( genomics_messages.GenomicsOperationsGetRequest(name=name)) operation_string = io.StringIO() print_format = display.Displayer(self, args).GetFormat() resource_printer.Print(op, print_format, out=operation_string) if not console_io.PromptContinue( message='%s\n%s' % (operation_string.getvalue(), 'This operation will be canceled')): raise GenomicsError('Cancel aborted by user.') if v2: apitools_client.projects_operations.Cancel( genomics_messages.GenomicsProjectsOperationsCancelRequest( name=name)) else: apitools_client.operations.Cancel( genomics_messages.GenomicsOperationsCancelRequest(name=name)) log.status.write('Canceled [{0}].\n'.format(name))
def Run(self, args): apitools_client = genomics_util.GetGenomicsClient() messages = genomics_util.GetGenomicsMessages() dataset_resource = resources.REGISTRY.Parse( args.id, collection='genomics.datasets') policy_request = messages.GenomicsDatasetsGetIamPolicyRequest( resource='datasets/{0}'.format(dataset_resource.Name()), getIamPolicyRequest=messages.GetIamPolicyRequest(), ) return apitools_client.datasets.GetIamPolicy(policy_request)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: a Operation message """ name, v2 = genomics_util.CanonicalizeOperationName(args.name) if v2: apitools_client = genomics_util.GetGenomicsClient('v2alpha1') genomics_messages = genomics_util.GetGenomicsMessages('v2alpha1') return apitools_client.projects_operations.Get( genomics_messages.GenomicsProjectsOperationsGetRequest( name=name)) apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() return apitools_client.operations.Get( genomics_messages.GenomicsOperationsGetRequest(name=name))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: an Operation message which tracks the asynchronous import """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() if not args.source_uris: raise GenomicsError( 'at least one value is required for --source-uris') partition_enum = (genomics_messages.ImportReadGroupSetsRequest. PartitionStrategyValueValuesEnum) partition_strat = None if args.partition_strategy: if args.partition_strategy not in partition_enum.to_dict(): raise GenomicsError( '--partition-strategy must be one of {0}; received: {1}'. format(sorted(partition_enum.names()), args.partition_strategy)) partition_strat = partition_enum.lookup_by_name( args.partition_strategy) try: return apitools_client.readgroupsets.Import( genomics_messages.ImportReadGroupSetsRequest( datasetId=args.dataset_id, sourceUris=args.source_uris, referenceSetId=args.reference_set_id, partitionStrategy=partition_strat, )) except apitools_exceptions.HttpError as error: # Map our error messages (JSON API camelCased) back into flag names. msg = ( exceptions.HttpException(error).payload.status_message.replace( 'datasetId', '--dataset-id').replace( 'partitionStrategy', '--partition-strategy').replace( 'sourceUris', '--source-uris').replace('referenceSetId', '--reference-set-id')) unused_type, unused_value, traceback = sys.exc_info() raise exceptions.HttpException, msg, traceback
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: a Reference message """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() request = genomics_messages.GenomicsReferencesGetRequest( referenceId=args.id, ) return apitools_client.references.Get(request)
def Run(self, args): apitools_client = genomics_util.GetGenomicsClient() messages = genomics_util.GetGenomicsMessages() dataset_resource = resources.REGISTRY.Parse( args.id, collection='genomics.datasets') policy = iam_util.ParsePolicyFile(args.policy_file, messages.Policy) policy_request = messages.GenomicsDatasetsSetIamPolicyRequest( resource='datasets/{0}'.format(dataset_resource.Name()), setIamPolicyRequest=messages.SetIamPolicyRequest(policy=policy), ) result = apitools_client.datasets.SetIamPolicy(policy_request) iam_util.LogSetIamPolicy(dataset_resource.Name(), 'dataset') return result
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Yields: A list of variants that meet the search criteria. """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() fields = genomics_util.GetQueryFields(self.GetReferencedKeyNames(args), 'variants') if fields: global_params = genomics_messages.StandardQueryParameters( fields=fields) else: global_params = None variant_set_id = [args.variant_set_id] if args.variant_set_id else [] try: for resource in list_pager.YieldFromList( apitools_client.variants, genomics_messages.SearchVariantsRequest( variantSetIds=variant_set_id, callSetIds=args.call_set_ids, referenceName=args.reference_name, start=args.start, end=args.end, maxCalls=args.limit_calls), global_params=global_params, limit=args.limit, method='Search', batch_size_attribute='pageSize', batch_size=args.page_size, field='variants'): yield resource except apitools_exceptions.HttpError as error: msg = ( exceptions.HttpException(error).payload.status_message.replace( 'variantSetIds', '--variant-set-id').replace( 'callSetIds', '--call-set-ids').replace( 'referenceName', '--reference-name').replace( 'start', '--start').replace('end', '--end')) raise exceptions.HttpException(msg)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: a Variant message """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() variant = genomics_messages.Variant(names=args.names, ) request = genomics_messages.GenomicsVariantsPatchRequest( updateMask='names', variant=variant, variantId=args.id) return apitools_client.variants.Patch(request)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: a Operation message """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() name = args.name if not name.startswith(_OPERATIONS_PREFIX): name = _OPERATIONS_PREFIX + name return apitools_client.operations.Get( genomics_messages.GenomicsOperationsGetRequest(name=name))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Returns: The ID of the variant that was deleted. """ vid = args.id apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() request = genomics_messages.GenomicsVariantsDeleteRequest( variantId=vid, ) apitools_client.variants.Delete(request) log.DeletedResource('variant {0}'.format(vid)) return vid
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: None """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() if not (args.name or args.reference_set_id): raise GenomicsError( 'Must specify --name and/or --reference-set-id') updated = genomics_messages.ReadGroupSet() mask = [] # TODO(b/26871577): Consider using resource parser here if args.name: updated.name = args.name mask.append('name') if args.reference_set_id: updated.referenceSetId = args.reference_set_id mask.append('referenceSetId') request = genomics_messages.GenomicsReadgroupsetsPatchRequest( readGroupSet=updated, readGroupSetId=str(args.id), updateMask=','.join(mask)) result = apitools_client.readgroupsets.Patch(request) name = str(result.id) if result.name: name += ', name: {0}'.format(result.name) if result.referenceSetId: name += ', referenceSetId: {0}'.format(result.referenceSetId) log.UpdatedResource(name, kind='readgroupset') return result
def Run(self, args): """Run 'datasets list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The list of datasets for this project. """ apitools_client = genomics_util.GetGenomicsClient() request = genomics_util.GetGenomicsMessages( ).GenomicsDatasetsListRequest(projectId=genomics_util.GetProjectId()) return list_pager.YieldFromList( apitools_client.datasets, request, limit=args.limit, batch_size_attribute='pageSize', batch_size=args.limit, # Use limit if any, else server default. field='datasets')
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace, All the arguments that were provided to this command invocation. Raises: HttpException: An http error response was received while executing api request. Returns: a VariantSet whose id matches args.id. """ apitools_client = genomics_util.GetGenomicsClient() genomics_messages = genomics_util.GetGenomicsMessages() get_request = genomics_messages.GenomicsVariantsetsGetRequest( variantSetId=args.id, ) return apitools_client.variantsets.Get(get_request)
def Run(self, args): apitools_client = genomics_util.GetGenomicsClient() messages = genomics_util.GetGenomicsMessages() dataset_resource = resources.REGISTRY.Parse( args.id, collection='genomics.datasets') policy_request = messages.GenomicsDatasetsGetIamPolicyRequest( resource='datasets/{0}'.format(dataset_resource.Name()), getIamPolicyRequest=messages.GetIamPolicyRequest(), ) policy = apitools_client.datasets.GetIamPolicy(policy_request) iam_util.RemoveBindingFromIamPolicy(policy, args.member, args.role) policy_request = messages.GenomicsDatasetsSetIamPolicyRequest( resource='datasets/{0}'.format(dataset_resource.Name()), setIamPolicyRequest=messages.SetIamPolicyRequest(policy=policy), ) return apitools_client.datasets.SetIamPolicy(policy_request)