@@ -246,8 +246,9 @@ def get_experiment(id_=None):
246246
247247async def get_multiple_experiments ():
248248 req = await connexion .request .json ()
249- return _get_experiments (req ["experiments" ]), 200
250-
249+ if "experiments" in req :
250+ return _get_experiments (req ["experiments" ]), 200
251+ return _get_experiments (None ), 200
251252
252253def get_program_experiments (program = None ):
253254 headers = {
@@ -310,15 +311,21 @@ def get_pysam_obj(object_id, headers=None):
310311
311312def _get_experiments (experiments ):
312313 result = []
313- experiments_by_program = {}
314- for experiment in experiments :
315- res , status_code = _get_experiment (experiment )
316- if status_code == 200 :
314+ headers = {
315+ "X-Service-Token" : create_service_token ()
316+ }
317+ if experiments is None :
318+ resp = requests .post (f"{ os .getenv ("DRS_URL" )} /ga4gh/drs/v1/experiments" , headers = headers , json = {})
319+ else :
320+ resp = requests .post (f"{ os .getenv ("DRS_URL" )} /ga4gh/drs/v1/experiments" , headers = headers , json = {"submitter_sample_ids" : experiments })
321+ if resp .status_code == 200 :
322+ experiments_by_program = {}
323+ for res in resp .json ():
317324 if res ["program" ] not in experiments_by_program :
318325 experiments_by_program [res ["program" ]] = []
319326 experiments_by_program [res ["program" ]].append (res )
320- for program in experiments_by_program .keys ():
321- result .extend (experiments_by_program [program ])
327+ for program in experiments_by_program .keys ():
328+ result .extend (experiments_by_program [program ])
322329 return result
323330
324331
@@ -335,24 +342,12 @@ def _get_experiment(id_=None):
335342 headers = {
336343 "X-Service-Token" : create_service_token ()
337344 }
338- resp = requests .get (url = f"{ os .getenv ("DRS_URL" )} /ga4gh/drs/v1/objects/{ id_ } " , headers = headers )
345+ resp = requests .post (f"{ os .getenv ("DRS_URL" )} /ga4gh/drs/v1/experiments" , headers = headers , json = {"submitter_sample_ids" : [id_ ]})
346+
339347 if resp .status_code == 200 :
340- experiment_drs_obj = resp .json ()
341- if experiment_drs_obj is not None and "contents" in experiment_drs_obj and experiment_drs_obj ["description" ] in ["wgs" , "wts" ]:
342- if experiment_drs_obj ["description" ] == "wgs" :
343- result ["genomes" ].append (experiment_drs_obj ["id" ])
344- elif experiment_drs_obj ["description" ] == "wts" :
345- result ["transcriptomes" ].append (experiment_drs_obj ["id" ])
346- result ["program" ] = experiment_drs_obj ["program" ]
347- for contents_obj in experiment_drs_obj ["contents" ]:
348- drs_obj = _describe_drs_object (contents_obj ["id" ])
349- if drs_obj is not None and "type" in drs_obj :
350- if drs_obj ["type" ] == "variant" :
351- result ["variants" ].append (drs_obj ["name" ])
352- elif drs_obj ["type" ] == "read" :
353- result ["reads" ].append (drs_obj ["name" ])
354- return result , 200
355- return f"{ id_ } is not an Experiment" , 404
348+ if len (resp .json ()) == 0 :
349+ return f"{ id_ } is not an Experiment" , 404
350+ return resp .json (), 200
356351 return resp .text , resp .status_code
357352
358353
0 commit comments