From bf016bfb0fc542e99da86eaa3f3e12ce1ddd7ec9 Mon Sep 17 00:00:00 2001 From: Christopher Henry Date: Tue, 5 Nov 2024 00:08:07 -0600 Subject: [PATCH 1/3] Adding support for reference chains to KBase API --- cobrakbase/kbaseapi.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cobrakbase/kbaseapi.py b/cobrakbase/kbaseapi.py index 830dc08..4f9c6b9 100755 --- a/cobrakbase/kbaseapi.py +++ b/cobrakbase/kbaseapi.py @@ -62,6 +62,10 @@ def process_workspace_identifiers(id_or_ref, workspace=None): refs, IDs, and names for workspaces and objects """ objspec = {} + if len(id_or_ref.split(";")) > 1: + objspec["to_obj_ref_path"] = id_or_ref.split(";")[0:-1] + print(objspec["to_obj_ref_path"]) + id_or_ref = id_or_ref.split(";")[-1] if workspace is None: objspec["ref"] = id_or_ref else: From f0b3aa300fb153fc83b2fd5e83be231fc6992fae Mon Sep 17 00:00:00 2001 From: Christopher Henry Date: Tue, 19 Nov 2024 23:29:13 -0600 Subject: [PATCH 2/3] Fixing defaults when data is missing --- .../kbasefba/newmodeltemplate_metabolite.py | 18 +++++++++--------- cobrakbase/core/kbasegenome/genome.py | 8 ++++---- .../core/kbasegenome/genome_cds_feature.py | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/cobrakbase/core/kbasefba/newmodeltemplate_metabolite.py b/cobrakbase/core/kbasefba/newmodeltemplate_metabolite.py index fd74c8b..87ec1e1 100755 --- a/cobrakbase/core/kbasefba/newmodeltemplate_metabolite.py +++ b/cobrakbase/core/kbasefba/newmodeltemplate_metabolite.py @@ -50,15 +50,15 @@ def __init__( def from_dict(d): return NewModelTemplateCompound( d["id"], - d["formula"], - d["name"], - d["defaultCharge"], - d["mass"], - d["deltaG"], - d["deltaGErr"], - d["isCofactor"] == 1, - d["abbreviation"], - d["aliases"], + d.get("formula",None), + d.get("name",d["id"]), + d.get("defaultCharge",None), + d.get("mass",None), + d.get("deltaG",None), + d.get("deltaGErr",None), + d.get("isCofactor",0) == 1, + d.get("abbreviation",d["id"]), + d.get("aliases",[]), ) def __repr__(self): diff --git a/cobrakbase/core/kbasegenome/genome.py b/cobrakbase/core/kbasegenome/genome.py index b849dca..7d8f0bd 100644 --- a/cobrakbase/core/kbasegenome/genome.py +++ b/cobrakbase/core/kbasegenome/genome.py @@ -191,14 +191,14 @@ def from_kbase_data(kbase_data: dict, info=None, args=None): kbase_data["id"], kbase_data["scientific_name"], kbase_data["domain"], - kbase_data["genome_tiers"], - kbase_data["feature_counts"], + kbase_data.get("genome_tiers",None), + kbase_data.get("feature_counts",None), kbase_data["genetic_code"], kbase_data["dna_size"], kbase_data["num_contigs"], - kbase_data["molecule_type"], + kbase_data.get("molecule_type",None), kbase_data["source"], - kbase_data["md5"], + kbase_data.get("md5",None), kbase_data["gc_content"], kbase_data.get("taxonomy", None), kbase_data.get("assembly_ref", None), diff --git a/cobrakbase/core/kbasegenome/genome_cds_feature.py b/cobrakbase/core/kbasegenome/genome_cds_feature.py index 131361a..54615e6 100644 --- a/cobrakbase/core/kbasegenome/genome_cds_feature.py +++ b/cobrakbase/core/kbasegenome/genome_cds_feature.py @@ -294,7 +294,7 @@ def _repr_html_(self): def from_kbase_data(kbase_data): functions = KBaseGenomeFeature.extract_functions(kbase_data) functions_split = KBaseGenomeFeature.split_annotation(functions) - protein_translation = kbase_data["protein_translation"] + protein_translation = kbase_data.get("protein_translation",None) dna_sequence = kbase_data["dna_sequence"] if protein_translation: protein_translation = protein_translation.upper() @@ -305,7 +305,7 @@ def from_kbase_data(kbase_data): protein_translation, dna_sequence, kbase_data["location"], - kbase_data["cdss"], + kbase_data.get("cdss",None), functions, kbase_data.get("aliases") ) From f463d0df63a240ebd74ae1f4392addf86df46592 Mon Sep 17 00:00:00 2001 From: Christopher Henry Date: Thu, 6 Mar 2025 23:44:01 -0600 Subject: [PATCH 3/3] Enabling listing of hidden objects and adding pigment and carbohydrate to biomass --- cobrakbase/core/kbasefba/newmodeltemplate_biomass.py | 2 ++ cobrakbase/kbaseapi.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cobrakbase/core/kbasefba/newmodeltemplate_biomass.py b/cobrakbase/core/kbasefba/newmodeltemplate_biomass.py index 5171b63..c68d354 100644 --- a/cobrakbase/core/kbasefba/newmodeltemplate_biomass.py +++ b/cobrakbase/core/kbasefba/newmodeltemplate_biomass.py @@ -14,6 +14,8 @@ def from_dict(d, template): d["lipid"], d["cellwall"], d["cofactor"], + d.get("pigment",0), + d.get("carbohydrate",0), d["energy"], d["other"], ) diff --git a/cobrakbase/kbaseapi.py b/cobrakbase/kbaseapi.py index 4f9c6b9..d1b0b3f 100755 --- a/cobrakbase/kbaseapi.py +++ b/cobrakbase/kbaseapi.py @@ -288,7 +288,7 @@ def save_object(self, object_id, ws, object_type, data, meta=None): params["workspace"] = ws return KBaseObjectInfo(self.ws_client.save_objects(params)[0]) - def list_objects(self, ws, object_type=None, include_metadata=False): + def list_objects(self, ws, object_type=None, include_metadata=False,showHidden=False): """ List objects of a workspace (i.e., narrative) with either numerical id (e.g., 12345) or string id (e.g., user:narrative_1111111111111) @@ -298,7 +298,7 @@ def list_objects(self, ws, object_type=None, include_metadata=False): :param include_metadata: :return: """ - params = {"includeMetadata": 0} + params = {"includeMetadata": 0, "showHidden": 0} if type(ws) == int: params["ids"] = [ws] else: @@ -307,6 +307,8 @@ def list_objects(self, ws, object_type=None, include_metadata=False): params["type"] = object_type if include_metadata: params["includeMetadata"] = 1 + if showHidden: + params["showHidden"] = 1 return self.ws_client.list_objects(params) def list_workspace(self, ws, object_type=None, include_metadata=False):