diff --git a/biopb/lacss/detection_settings.proto b/biopb/lacss/detection_settings.proto index c7f8719..b159bbf 100644 --- a/biopb/lacss/detection_settings.proto +++ b/biopb/lacss/detection_settings.proto @@ -5,6 +5,7 @@ package biopb.lacss; option java_package = "biopb.lacss"; option java_multiple_files = true; +import "google/protobuf/any.proto"; message DetectionSettings { @@ -44,4 +45,15 @@ message DetectionSettings { } + // Specify the model name for servers that support more than one model + // variants. + string model_name = 8; + + + // An opaque data structure that specify a server side model configuration. + // An important use case is to perform few-shot model adaptations. The model + // adaptation call returns a new model configuration. This stucture should + // be included in all new inference requests, so that the server understand + // that it should perform computation using the adapted model. + google.protobuf.Any model_configuration = 9; } diff --git a/biopb/lacss/image_data.proto b/biopb/lacss/image_data.proto index 21c8aa7..d0825f1 100644 --- a/biopb/lacss/image_data.proto +++ b/biopb/lacss/image_data.proto @@ -49,7 +49,7 @@ message Pixels { // physical size unit, default "µm" string physical_size_unit = 17; - // TimeIncrement is used for time series that have a global timing + // time_increment is used for time series that have a global timing // specification instead of per-timepoint timing info. For example in a // video stream. Units are set by TimeIncrementUnit. optional float time_increment = 18; @@ -57,6 +57,18 @@ message Pixels { // time unit, default "s" string time_increment_unit = 21; + // for large image dataset, it is necessary to send a stream of image + // patches instead of one monolithic data structure of the whole dataset. + // The offset values allows one to specify the relative locations of each + // patch. + optional uint32 offset_x = 22; + + optional uint32 offset_y = 23; + + optional uint32 offset_z = 24; + + optional uint32 offset_t = 25; + } // Additional annotation of the image, which may be used for the analysis. diff --git a/biopb/lacss/lacss.proto b/biopb/lacss/lacss.proto index 03d1508..623d8da 100644 --- a/biopb/lacss/lacss.proto +++ b/biopb/lacss/lacss.proto @@ -6,14 +6,19 @@ option java_package = "biopb.lacss"; option java_multiple_files = true; +import "google/protobuf/any.proto"; + import "biopb/lacss/detection_request.proto"; import "biopb/lacss/detection_response.proto"; service Lacss { - // Unitary call for computing cell detection / segmentation + // Implementing the `RunDetection` call is mandatory. The rest are optional. + + // Unitary call for computing cell detection / segmentation. rpc RunDetection(DetectionRequest) returns (DetectionResponse) ; + // The streaming version allows dynamic updating of the DetectionRequest and // getting updated results. For example, a client may request analyses at // several different settings on the same image. After initial request, the @@ -22,5 +27,22 @@ service Lacss { // bandwidth. rpc RunDetectionStream(stream DetectionRequest) returns (stream DetectionResponse) ; + + // Send the image dataset as a stream of (partially overlapping) image + // patches, instead of one large chunk of binary data. There are two use + // cases for this call: (1) The image dataset is too large therefore sending + // all data in one message would exceed GRPC message size limit; (2) The + // original data were taken as a grid scan so it is convinent to read/write + // as patches. + rpc RunDetectionOnGrid(stream DetectionRequest) returns (DetectionResponse) ; + + + // Run model adaptation based on the submitted stream of DetectionReqeust, + // which may or may not contain ROI annotations. The all returns an opaque + // data strcuture representing the model configuration after model + // adaptation, which in turn should be included in future inference reuest + // as a DetectionSetting field. + rpc RunModelAdaptation(stream DetectionRequest) returns (google.protobuf.Any) ; + }