@@ -557,78 +557,46 @@ def add_bed_to_qdrant(
557
557
)
558
558
return None
559
559
560
- def is_remote (self ) -> bool :
561
- """
562
- Return whether remotes are configured with 'remotes' key,
563
-
564
- :param BedBaseConf bbc: server config object
565
- :return bool: whether remote data source is configured
566
- """
567
-
568
- if CFG_REMOTE_KEY in self .config and isinstance (
569
- self .config [CFG_REMOTE_KEY ], dict
570
- ):
571
- return True
572
- else :
573
- return False
574
-
575
- def prefix (self , remote_class = "http" ) -> str :
576
- """
577
- Return URL prefix, modulated by whether remotes
578
- are configured, and remote class requested.
579
560
580
- :param remote_class: remote class to use (schema. e.g. http, s3, etc.)
581
- :return str: URL prefix (schema)
582
- """
583
- if CFG_REMOTE_KEY in self .config :
584
- return self .config [CFG_REMOTE_KEY ][remote_class ]["prefix" ]
585
- else :
586
- return self .config [CFG_PATH_KEY ][CFG_PATH_PIPELINE_OUTPUT_KEY ]
587
-
588
- def get_prefixed_uri (self , postfix : str , remote_class : str = "http" ) -> str :
561
+ def get_prefixed_uri (self , postfix : str , access_id : str ) -> str :
589
562
"""
590
563
Return uri with correct prefix (schema)
591
564
592
565
:param postfix: postfix of the uri (or everything after uri schema)
593
- :param remote_class: schema of the uri
566
+ :param access_id: access method name
594
567
:return: full uri path
595
568
"""
596
- return os .path .join (self .prefix (remote_class ), postfix )
597
-
598
- # TODO: fix it - url is incorrect
599
- def get_bed_url (self , object_id : str , access_id : str = "https" ) -> str :
600
- """
601
- Build bed file url using drs standard
569
+ prefix = self .config [CFG_ACCESS_METHOD_KEY ][access_id ]["prefix" ]
570
+ return os .path .join (prefix , postfix )
602
571
603
- :param object_id: digest of the bed file
604
- :param access_id: https or s3
605
- :return: bed file url
606
- """
607
- # access_url = DRS_ACCESS_URL.format(
608
- # server_url=self.config[CFG_ACCESS_METHOD_KEY][access_id]["server_url"],
609
- # object_id=object_id,
610
- # access_id=access_id,
611
- # )
612
- # return access_url
613
- return os .path .join (
614
- self .config [CFG_ACCESS_METHOD_KEY ][access_id ]["server_url" ],
615
- self .bed .retrieve (object_id )["bedfile" ]["path" ],
616
- )
572
+ def get_object_uri (
573
+ record_type : str ,
574
+ record_id : str ,
575
+ result_id : str ,
576
+ access_id : str
577
+ ):
578
+ if record_type == "bed" :
579
+ result = bbc .bed .retrieve_one (record_id , result_id )
580
+ elif record_type == "bedset" :
581
+ result = bbc .bedset .retrieve_one (record_id , result_id )
582
+ return self .get_prefixed_uri (result ["path" ], access_id )
617
583
618
- def get_bed_drs_metadata (self , object_id : str , base_uri : str ) -> DRSModel :
584
+
585
+ def get_drs_metadata (self , record_id : str , result_id : str , base_uri : str ) -> DRSModel :
619
586
"""
620
587
Get DRS metadata for a bed file
621
588
622
589
:param object_id: record identifier
623
590
:return: DRS metadata
624
591
"""
625
- bed_metadata = self .bed .retrieve (object_id )
592
+
593
+ bed_metadata = self .bed .retrieve_one (record_id )
626
594
access_methods = []
627
595
for access_id in self .config [CFG_ACCESS_METHOD_KEY ].keys ():
628
596
access_dict = AccessMethod (
629
597
type = access_id ,
630
598
access_id = access_id ,
631
- access_url = AccessURL (url = self .get_bed_url ( object_id , access_id )),
599
+ access_url = AccessURL (url = self .get_object_uri ( record_type = "bed" , record_id , result_id , access_id )),
632
600
region = self .config [CFG_ACCESS_METHOD_KEY ][access_id ].get (
633
601
"region" , None
634
602
),
@@ -638,7 +606,7 @@ def get_bed_drs_metadata(self, object_id: str, base_uri: str) -> DRSModel:
638
606
drs_dict = DRSModel (
639
607
id = object_id ,
640
608
self_uri = f"drs://{ base_uri } /{ object_id } " ,
641
- size = bed_metadata ["bedfile" ]["size" ],
609
+ size = bed_metadata [result_id ]["size" ],
642
610
created_time = bed_metadata ["pipestat_created_time" ],
643
611
updated_time = bed_metadata ["pipestat_modified_time" ],
644
612
checksums = object_id ,
0 commit comments