Skip to content

Commit c1a424e

Browse files
committed
move toward generic DRS handling
1 parent eb0b53c commit c1a424e

File tree

1 file changed

+21
-53
lines changed

1 file changed

+21
-53
lines changed

bbconf/bbconf.py

Lines changed: 21 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -557,78 +557,46 @@ def add_bed_to_qdrant(
557557
)
558558
return None
559559

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.
579560

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:
589562
"""
590563
Return uri with correct prefix (schema)
591564
592565
: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
594567
:return: full uri path
595568
"""
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)
602571

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)
617583

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:
619586
"""
620587
Get DRS metadata for a bed file
621588
622589
:param object_id: record identifier
623590
:return: DRS metadata
624591
"""
625-
bed_metadata = self.bed.retrieve(object_id)
592+
593+
bed_metadata = self.bed.retrieve_one(record_id)
626594
access_methods = []
627595
for access_id in self.config[CFG_ACCESS_METHOD_KEY].keys():
628596
access_dict = AccessMethod(
629597
type=access_id,
630598
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)),
632600
region=self.config[CFG_ACCESS_METHOD_KEY][access_id].get(
633601
"region", None
634602
),
@@ -638,7 +606,7 @@ def get_bed_drs_metadata(self, object_id: str, base_uri: str) -> DRSModel:
638606
drs_dict = DRSModel(
639607
id=object_id,
640608
self_uri=f"drs://{base_uri}/{object_id}",
641-
size=bed_metadata["bedfile"]["size"],
609+
size=bed_metadata[result_id]["size"],
642610
created_time=bed_metadata["pipestat_created_time"],
643611
updated_time=bed_metadata["pipestat_modified_time"],
644612
checksums=object_id,

0 commit comments

Comments
 (0)