@@ -154,6 +154,8 @@ PrepareCyteTypeR <- function(obj,
154154# ' (in seconds). Default is 30.
155155# ' @param timeout_seconds Integer specifying maximum wait time for job completion
156156# ' (in seconds). Default is 1200 (20 minutes).
157+ # ' @param n_parallel_clusters Number of parallel requests to make to the model. Maximum is 50. Note than high values can lead to rate limit errors.
158+
157159# ' @param api_url Optional character string specifying custom API URL.
158160# ' If `NULL`, uses default URL. Default is `NULL`.
159161# ' @param save_query Logical indicating whether to save the query as JSON file.
@@ -213,6 +215,7 @@ CyteTypeR <- function(obj,
213215 results_prefix = " cytetype" ,
214216 poll_interval_seconds = 30 ,
215217 timeout_seconds = 1200 ,
218+ n_parallel_clusters = 2 ,
216219 api_url = NULL ,
217220 save_query = TRUE ,
218221 query_filename = " query.json" ,
@@ -222,6 +225,7 @@ CyteTypeR <- function(obj,
222225 api_url <- api_url %|| % .get_default_api_url()
223226 prepped_data $ studyInfo <- study_context %|| % " "
224227 prepped_data $ infoTags <- metadata %|| % list ()
228+ prepped_data $ nParallelClusters <- n_parallel_clusters
225229
226230 group_key <- prepped_data $ group_key
227231 prepped_data $ group_key <- NULL
@@ -245,21 +249,18 @@ CyteTypeR <- function(obj,
245249 llm_configs = llm_configs
246250 )
247251
248- if (save_query ){
249- query_for_json <- .prepare_query_for_json(query_list )
250- write_json(query_for_json , path = query_filename , auto_unbox = TRUE , pretty = TRUE )
251- }
252+ # Prep query for submission
253+ query_for_json <- .prepare_query_for_json(query_list )
254+
252255 # # NA value check on all data before submitting job
253256
254257
255258 # Job submission
256-
257259 job_id <- .submit_job(query_for_json , api_url , auth_token )
258260 if (is.na(job_id )) {
259261 stop(" Job submission failed." )
260262 }
261263
262-
263264 # Save job details
264265 report_url <- file.path(api_url , ' report' ,job_id )
265266
@@ -270,6 +271,16 @@ CyteTypeR <- function(obj,
270271 auth_token = auth_token
271272 )
272273
274+ if (exists(" prepped_data" , envir = .GlobalEnv )){
275+ job_detail_fieldname <- paste0(results_prefix ,' _jobDetails' )
276+ prepped_data [[job_detail_fieldname ]] <<- job_details
277+ }
278+
279+ # Save the query as json file if true
280+ if (save_query ){
281+ write_json(query_for_json , path = query_filename , auto_unbox = TRUE , pretty = TRUE )
282+ }
283+
273284 # poll for results
274285 result <- .poll_for_results(
275286 job_id ,
@@ -287,15 +298,19 @@ CyteTypeR <- function(obj,
287298 obj @ misc $ cytetype_results <- transformed_results
288299
289300 ann_colname <- paste(results_prefix , group_key , sep = " _" )
290- onto_colname <- paste(" cytetype_cell_ontology" , group_key , sep = " _" )
301+ onto_colname <- paste(results_prefix , " ontologyTerm" , group_key , sep = " _" )
302+ ontoID_colname <- paste(results_prefix , " ontologyID" , group_key , sep = " _" )
291303
292304 cluster_ann_map <- setNames(transformed_results $ annotation ,
293305 transformed_results $ clusterId )
294306 cluster_onto_map <- setNames(transformed_results $ ontologyTerm ,
295307 transformed_results $ clusterId )
308+ cluster_onto_id_map <- setNames(transformed_results $ ontologyTermID ,
309+ transformed_results $ clusterId )
296310
297311 obj @ meta.data [[ann_colname ]] <- factor (cluster_ann_map [as.vector(obj @ meta.data [[group_key ]])])
298312 obj @ meta.data [[onto_colname ]] <- factor (cluster_onto_map [as.vector(obj @ meta.data [[group_key ]])])
313+ obj @ meta.data [[ontoID_colname ]] <- factor (cluster_onto_id_map [as.vector(obj @ meta.data [[group_key ]])])
299314
300315
301316 return (obj )
@@ -336,6 +351,11 @@ CyteTypeR <- function(obj,
336351# ' @importFrom jsonlite write_json
337352# ' @export
338353GetResults <- function (job_id = NULL ){
354+
355+ if (is.null(job_id )){
356+ stop(" Please provide the job_id for your CyteType run." )
357+ }
358+
339359 tryCatch({
340360 # if (is.null(job_id)){
341361 # job_details <- fromJSON(paste0('job_details_', job_id, '.json'))
0 commit comments