From c1a03a1860fdbecab96e912688f1a1f39e2d0c7e Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Thu, 20 Mar 2025 15:30:46 +0000 Subject: [PATCH 1/9] added helix regions beta regions activet site --- src/pyeed/adapter/uniprot_mapper.py | 80 +++++++++++++++++++++++++++-- src/pyeed/model.py | 4 ++ 2 files changed, 79 insertions(+), 5 deletions(-) diff --git a/src/pyeed/adapter/uniprot_mapper.py b/src/pyeed/adapter/uniprot_mapper.py index 5a285adb..98604bfe 100644 --- a/src/pyeed/adapter/uniprot_mapper.py +++ b/src/pyeed/adapter/uniprot_mapper.py @@ -12,6 +12,7 @@ GOAnnotation, Organism, Protein, + Region, Site, ) @@ -59,26 +60,95 @@ def add_to_db(self, response: Response) -> None: protein.organism.connect(organism) self.add_sites(record, protein) + self.add_regions(record, protein) self.add_catalytic_activity(record, protein) self.add_go(record, protein) def add_sites(self, record: dict[str, Any], protein: Protein) -> None: - ligand_dict: dict[str, list[int]] = defaultdict(list) + data_dict: dict[str, list[int]] = defaultdict(list) for feature in record.get("features", []): if feature["type"] == "BINDING": for position in range(int(feature["begin"]), int(feature["end"]) + 1): - ligand_dict[feature["ligand"]["name"]].append(position) + data_dict[feature["ligand"]["name"] + "$binding"].append(position) + elif feature["type"] == "ACT_SITE": + for position in range(int(feature["begin"]), int(feature["end"]) + 1): + data_dict[feature["category"] + "$site"].append(position) + + for entry, positions in data_dict.items(): + if entry.split("$")[1] == "binding": + annotation = Annotation.BINDING_SITE.value + elif entry.split("$")[1] == "site": + annotation = Annotation.ACTIVE_SITE.value - for ligand, positions in ligand_dict.items(): site = Site( - name=ligand, - annotation=Annotation.BINDING_SITE.value, + name=entry.split("$")[0], + annotation=annotation, ) site.save() protein.site.connect(site, {"positions": positions}) + def add_regions(self, record: dict[str, Any], protein: Protein) -> None: + data_list: list[tuple[str, tuple[int, int]]] = [] + + for feature in record.get("features", []): + if feature["type"] == "HELIX": + data_list.append( + ( + feature["category"] + "$helix", + (int(feature["begin"]), int(feature["end"])), + ) + ) + elif feature["type"] == "STRAND": + data_list.append( + ( + feature["category"] + "$strand", + (int(feature["begin"]), int(feature["end"])), + ) + ) + elif feature["type"] == "TURN": + data_list.append( + ( + feature["category"] + "$turn", + (int(feature["begin"]), int(feature["end"])), + ) + ) + elif feature["type"] == "SIGNAL": + data_list.append( + ( + feature["category"] + "$signal", + (int(feature["begin"]), int(feature["end"])), + ) + ) + elif feature["type"] == "PROPEP": + data_list.append( + ( + feature["category"] + "$propep", + (int(feature["begin"]), int(feature["end"])), + ) + ) + + for name, positions in data_list: + if name.split("$")[1] == "helix": + annotation = Annotation.ALPHAHELIX.value + elif name.split("$")[1] == "strand": + annotation = Annotation.BETASTRAND.value + elif name.split("$")[1] == "turn": + annotation = Annotation.TURN.value + elif name.split("$")[1] == "signal": + annotation = Annotation.SIGNAL.value + elif name.split("$")[1] == "propep": + annotation = Annotation.PROPEP.value + + region = Region( + name=name, + annotation=annotation, + ) + region.save() + + protein.region.connect(region, {"start": positions[0], "end": positions[1]}) + def add_catalytic_activity(self, record: dict[str, Any], protein: Protein) -> None: try: for reference in record["comments"]: diff --git a/src/pyeed/model.py b/src/pyeed/model.py index aa374669..48991048 100644 --- a/src/pyeed/model.py +++ b/src/pyeed/model.py @@ -140,6 +140,9 @@ class Annotation(Enum): FAMILY = "family" MOTIVE = "motive" PROTEIN = "protein" + TURN = "turn" + SIGNAL = "signal" + PROPEP = "propep" class Organism(StrictStructuredNode): @@ -296,6 +299,7 @@ class Site(StrictStructuredNode): class Region(StrictStructuredNode): region_id = UniqueIdProperty() + name = StringProperty() annotation = StringProperty( choices=[(e.value, e.name) for e in Annotation], required=True ) From 1386e0ecce47e045892f8a5b8c319fd9173d3b62 Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Tue, 25 Mar 2025 08:46:38 +0000 Subject: [PATCH 2/9] update esm3 calbilities for last layer --- docs/usage/embeddings_analysis.ipynb | 969 ++++----------------------- src/pyeed/embedding.py | 103 ++- 2 files changed, 222 insertions(+), 850 deletions(-) diff --git a/docs/usage/embeddings_analysis.ipynb b/docs/usage/embeddings_analysis.ipynb index 65a2398c..e609174f 100644 --- a/docs/usage/embeddings_analysis.ipynb +++ b/docs/usage/embeddings_analysis.ipynb @@ -18,9 +18,18 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], "source": [ "import sys\n", "\n", @@ -47,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -68,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -85,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -109,836 +118,84 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2025-02-07 15:21:19.142\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 0 sequences in the database.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:19.143\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:19.167\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:19.168\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m142\u001b[0m - \u001b[34m\u001b[1mPrepared 7 request payloads.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:19.170\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'AAP20891.1,CAJ85677.1,SAQ02853.1,CDR98216.1,WP_109963600.1,CAA41038.1,WP_109874025.1,CAA46344.1,APG33178.1,AKC98298.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:19.671\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'KJO56189.1,KLP91446.1,CAA46346.1,CAA74912.2,AFN21551.1,ACB22021.1,CAA76794.1,CAA76795.1,CCG28759.1,KLG19745.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.171\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'AAC32891.1,CAA76796.1,CAD24670.1,ARF45649.1,CTA52364.1,ADL13944.1,AGQ50511.1,AKA60778.1,APT65830.1,HAH6232254.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.672\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'QDO66746.1,CBX53726.1,AAC32889.2,CAA64682.1,CAA71322.1,CAA71323.1,CAA71324.1,AEC32455.1,AAD22538.1,AAD22539.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.749\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAP20891.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.750\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Taxonomy ID: 470\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.751\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Mapped organism 'Acinetobacter baumannii' with taxonomy ID 470.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.787\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAP20891.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.788\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Mapped protein with name 'beta-lactamase TEM-1' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.900\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.901\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAP20891.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.902\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.902\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.940\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAP20891.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:20.999\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAP20891.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.000\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.001\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAJ85677.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.001\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Taxonomy ID: 35419\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.002\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Mapped organism 'Birmingham IncP-alpha plasmid' with taxonomy ID 35419.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.007\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAJ85677.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.008\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Mapped protein with name 'beta lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.018\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.018\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAJ85677.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.019\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.019\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.024\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAJ85677.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.061\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAJ85677.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.061\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.062\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record SAQ02853.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.063\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Taxonomy ID: 571\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.063\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Mapped organism 'Klebsiella oxytoca' with taxonomy ID 571.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.068\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord SAQ02853.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.069\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.078\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.079\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein SAQ02853.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.080\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.080\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.113\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord SAQ02853.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.123\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein SAQ02853.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.124\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.124\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CDR98216.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.125\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.126\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.131\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CDR98216.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.131\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Mapped protein with name 'beta-lactamase TEM-4' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.142\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.143\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CDR98216.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.144\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.144\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.149\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CDR98216.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.159\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CDR98216.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.160\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.160\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record WP_109963600.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.161\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.162\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.167\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: Mapped protein with name 'extended-spectrum class A beta-lactamase TEM-5' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.206\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.207\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein WP_109963600.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.207\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m174\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: No CDS feature found.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.208\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord WP_109963600.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.218\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein WP_109963600.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.219\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.220\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA41038.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.220\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.221\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.265\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA41038.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.265\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Mapped protein with name 'beta lactamase TEM6' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.277\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.278\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA41038.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.278\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.279\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.284\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA41038.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.295\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA41038.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.296\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.296\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record WP_109874025.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.297\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: Taxonomy ID: 543\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.298\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: Mapped organism 'Enterobacteriaceae' with taxonomy ID 543.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.302\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: Mapped protein with name 'extended-spectrum class A beta-lactamase TEM-7' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.314\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.314\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein WP_109874025.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.315\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m174\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: No CDS feature found.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.316\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord WP_109874025.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.327\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein WP_109874025.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.328\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.329\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA46344.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.329\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.330\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.336\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA46344.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.337\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Mapped protein with name 'extended spectrum beta-lactamase CAZ-2' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.349\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.350\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA46344.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.350\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.351\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.356\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA46344.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.367\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA46344.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.368\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.369\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record APG33178.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.369\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.370\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.376\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord APG33178.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.377\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Mapped protein with name 'class A extended-spectrum beta-lactamase TEM-9' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.389\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.389\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein APG33178.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.390\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.390\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.395\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord APG33178.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.407\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein APG33178.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.408\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.408\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AKC98298.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.409\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.410\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.417\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AKC98298.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.418\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Mapped protein with name 'TEM-1' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.429\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.430\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AKC98298.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.430\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.431\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.482\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AKC98298.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.494\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AKC98298.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.495\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.502\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'ABB97007.1,ACJ43254.1,AAC05975.1,BCD58813.1,AAK17194.1,AAD33116.2,CAB92324.1,AAL03985.1,AAF19151.1,AAF05613.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.509\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record KJO56189.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.509\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Taxonomy ID: 299766\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.510\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Mapped organism 'Enterobacter hormaechei subsp. steigerwaltii' with taxonomy ID 299766.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.519\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord KJO56189.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.519\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Mapped protein with name 'beta-lactamase TEM' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.541\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.542\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein KJO56189.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.542\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.543\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.547\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord KJO56189.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.567\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein KJO56189.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.568\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.568\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record KLP91446.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.569\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Taxonomy ID: 1812934\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.569\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Mapped organism 'Enterobacter hormaechei subsp. hoffmannii' with taxonomy ID 1812934.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.574\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord KLP91446.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.575\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Mapped protein with name 'class A beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.586\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.587\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein KLP91446.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.587\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.588\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.592\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord KLP91446.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.608\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein KLP91446.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.609\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.609\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA46346.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.610\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.610\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.616\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA46346.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.617\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Mapped protein with name 'extended spectrum beta-lactamase CAZ-7' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.631\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.632\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA46346.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.633\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.633\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.638\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA46346.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.648\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA46346.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.649\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.649\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA74912.2\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.650\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Taxonomy ID: 1018\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.650\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Mapped organism 'Capnocytophaga ochracea' with taxonomy ID 1018.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.655\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA74912.2: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.656\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Mapped protein with name 'beta-lactamase class A' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.666\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.667\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA74912.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.668\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.668\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.673\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA74912.2: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.683\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA74912.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.684\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.686\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AFN21551.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.686\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Taxonomy ID: 470\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.687\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Mapped organism 'Acinetobacter baumannii' with taxonomy ID 470.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.692\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AFN21551.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.693\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Mapped protein with name 'beta-lactamase TEM-19' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.703\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.704\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AFN21551.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.705\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.705\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.710\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AFN21551.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.720\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AFN21551.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.721\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.721\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record ACB22021.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.722\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.722\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.728\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord ACB22021.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.729\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Mapped protein with name 'extended spectrum beta-lactamase blaTEM-20' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.741\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.742\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein ACB22021.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.742\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.743\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.747\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord ACB22021.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.757\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein ACB22021.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.758\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.758\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA76794.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.759\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.759\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.766\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA76794.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.766\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Mapped protein with name 'beta-lactamase class A' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.777\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.778\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA76794.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.778\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.779\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.790\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA76794.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.804\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA76794.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.805\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.805\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA76795.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.806\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.807\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.813\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA76795.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.814\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Mapped protein with name 'beta-lactamase class A' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.825\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.826\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA76795.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.826\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.827\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.832\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA76795.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.843\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA76795.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.843\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.844\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CCG28759.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.844\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Taxonomy ID: 935296\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.845\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Mapped organism 'Klebsiella aerogenes EA1509E' with taxonomy ID 935296.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.849\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CCG28759.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.850\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Mapped protein with name 'Beta-lactamase (EC 3.5.2.6)' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.862\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.862\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CCG28759.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.863\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.864\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.914\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CCG28759.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.925\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CCG28759.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.926\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.926\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record KLG19745.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.927\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Taxonomy ID: 208224\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.927\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Mapped organism 'Enterobacter kobei' with taxonomy ID 208224.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.932\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord KLG19745.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.933\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Mapped protein with name 'beta-lactamase TEM' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.944\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.945\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein KLG19745.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.945\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.946\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.951\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord KLG19745.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.962\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein KLG19745.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.963\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.970\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAC32891.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.971\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.971\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.977\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAC32891.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.978\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Mapped protein with name 'beta-lactamase TEM-28' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.990\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.991\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAC32891.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.991\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.992\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:21.997\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAC32891.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.007\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAC32891.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.008\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.008\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA76796.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.009\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.010\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.021\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA76796.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.022\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Mapped protein with name 'beta-lactamase class A' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.033\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.034\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA76796.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.035\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.035\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.041\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA76796.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.051\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA76796.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.052\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.053\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAD24670.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.053\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.054\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.060\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAD24670.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.061\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.073\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.074\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAD24670.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.074\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.075\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.080\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAD24670.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.091\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAD24670.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.091\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.092\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record ARF45649.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.092\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Taxonomy ID: 32630\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.093\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Mapped organism 'synthetic construct' with taxonomy ID 32630.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.098\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord ARF45649.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.098\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Mapped protein with name 'beta-lactamase TEM-1 variant' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.109\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.110\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein ARF45649.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.110\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.111\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.116\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord ARF45649.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.127\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein ARF45649.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.128\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.129\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CTA52364.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.129\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Taxonomy ID: 624\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.130\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Mapped organism 'Shigella sonnei' with taxonomy ID 624.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.135\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CTA52364.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.136\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Mapped protein with name 'Beta-lactamase TEM precursor' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.147\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.148\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CTA52364.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.148\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.149\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.154\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CTA52364.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.165\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CTA52364.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.166\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.166\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record ADL13944.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.167\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.168\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.174\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord ADL13944.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.175\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Mapped protein with name 'TEM-33' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.187\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.188\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein ADL13944.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.188\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.189\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.193\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord ADL13944.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.205\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein ADL13944.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.206\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.206\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AGQ50511.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.207\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.207\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.213\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AGQ50511.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.214\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Mapped protein with name 'beta lactamase blaTEM-34' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.225\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.225\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AGQ50511.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.226\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.226\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.231\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AGQ50511.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.242\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AGQ50511.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.243\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.244\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AKA60778.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.244\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.245\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.252\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AKA60778.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.253\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.263\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.264\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AKA60778.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.265\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.266\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.270\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AKA60778.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.281\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AKA60778.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.282\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.282\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record APT65830.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.283\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.284\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.290\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord APT65830.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.291\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Mapped protein with name 'inhibitor-resistant class A broad-spectrum beta-lactamase TEM-36' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.303\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.303\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein APT65830.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.304\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.304\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.309\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord APT65830.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.320\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein APT65830.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.321\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.321\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record HAH6232254.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.322\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.322\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.328\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord HAH6232254.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.329\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Mapped protein with name 'TEM family class A beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.340\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.341\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein HAH6232254.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.341\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.342\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.391\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord HAH6232254.1: Mapped 0 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.392\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 0 region(s) to protein HAH6232254.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.392\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.398\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'AAF05614.1,AAF05612.1,AAF05611.1,AAM15527.1,AAL29433.1,AAL29434.1,AAL29435.1,AAL29436.1,CAC43229.1,CAC43230.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.495\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record ABB97007.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.495\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.496\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.503\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord ABB97007.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.504\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Mapped protein with name 'beta-lactamase TEM-55' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.516\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.517\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein ABB97007.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.517\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.518\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.522\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord ABB97007.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.532\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein ABB97007.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.533\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.534\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record ACJ43254.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.534\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.535\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.542\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord ACJ43254.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.542\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Mapped protein with name 'TEM-57 beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.555\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.555\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein ACJ43254.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.556\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.557\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.561\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord ACJ43254.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.572\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein ACJ43254.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.573\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.573\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAC05975.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.574\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Taxonomy ID: 588\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.574\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Mapped organism 'Providencia stuartii' with taxonomy ID 588.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.579\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAC05975.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.580\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Mapped protein with name 'beta-lactamase TEM-60' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.591\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.592\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAC05975.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.593\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.593\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.598\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAC05975.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.609\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAC05975.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.609\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.610\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record BCD58813.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.610\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Taxonomy ID: 615\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.611\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Mapped organism 'Serratia marcescens' with taxonomy ID 615.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.616\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord BCD58813.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.616\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Mapped protein with name 'class A extended-spectrum beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.627\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.628\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein BCD58813.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.629\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.629\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.634\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord BCD58813.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.645\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein BCD58813.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.646\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.646\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAK17194.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.647\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.647\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.654\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAK17194.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.654\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Mapped protein with name 'extended spectrum beta-lactamase TEM-63' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.666\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.666\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAK17194.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.667\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.667\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.672\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAK17194.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.683\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAK17194.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.684\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.684\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAD33116.2\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.685\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Taxonomy ID: 584\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.685\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Mapped organism 'Proteus mirabilis' with taxonomy ID 584.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.690\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAD33116.2: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.691\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.702\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.702\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAD33116.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.703\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.703\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.709\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAD33116.2: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.719\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAD33116.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.720\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.720\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAB92324.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.721\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Taxonomy ID: 72407\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.721\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Mapped organism 'Klebsiella pneumoniae subsp. pneumoniae' with taxonomy ID 72407.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.727\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAB92324.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.727\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Mapped protein with name 'TEM-68 ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.739\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.740\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAB92324.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.740\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.741\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.746\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAB92324.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.756\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAB92324.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.757\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.758\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAL03985.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.758\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.759\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.765\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAL03985.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.766\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Mapped protein with name 'extended-spectrum beta-lactamase TEM-71' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.779\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.780\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAL03985.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.781\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.782\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.786\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAL03985.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.798\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAL03985.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.798\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.799\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF19151.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.800\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Taxonomy ID: 582\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.800\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Mapped organism 'Morganella morganii' with taxonomy ID 582.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.805\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF19151.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.806\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Mapped protein with name 'beta-lactamase TEM-72' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.817\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.819\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF19151.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.819\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.820\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.825\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF19151.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.837\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF19151.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.838\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.838\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF05613.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.838\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.839\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.846\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF05613.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.847\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-76' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.858\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.859\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF05613.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.859\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.860\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.865\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF05613.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.878\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF05613.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.879\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.891\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record QDO66746.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.892\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.893\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.899\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord QDO66746.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.900\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Mapped protein with name 'beta-lactamase TEM-39' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.913\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.914\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein QDO66746.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.915\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.915\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.921\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord QDO66746.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.932\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein QDO66746.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.933\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.933\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CBX53726.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.934\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.934\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.941\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CBX53726.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.942\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Mapped protein with name 'beta-lactamase TEM-40' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.954\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.955\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CBX53726.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.955\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.956\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.961\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CBX53726.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.972\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CBX53726.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.973\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.974\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAC32889.2\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.974\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.974\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.981\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAC32889.2: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.982\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Mapped protein with name 'beta-lactamase TEM-43' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.995\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.995\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAC32889.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.997\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:22.997\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.002\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAC32889.2: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.013\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAC32889.2.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.014\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.015\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA64682.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.015\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.016\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.022\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA64682.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.023\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.035\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.036\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA64682.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.037\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.037\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.042\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA64682.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.054\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA64682.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.055\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.055\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA71322.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.056\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.056\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.063\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA71322.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.063\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Mapped protein with name 'ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.076\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.076\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA71322.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.077\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.077\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.082\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA71322.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.095\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA71322.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.095\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.096\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA71323.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.096\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.097\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.103\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA71323.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.104\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Mapped protein with name 'ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.116\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.116\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA71323.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.117\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.117\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.122\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA71323.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.135\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA71323.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.136\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.137\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAA71324.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.138\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.139\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.146\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAA71324.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.147\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Mapped protein with name 'ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.159\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.160\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAA71324.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.161\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.161\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.167\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAA71324.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.179\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAA71324.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.180\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.180\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AEC32455.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.181\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.182\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.189\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AEC32455.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.190\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Mapped protein with name 'beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.202\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.203\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AEC32455.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.204\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.205\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.211\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AEC32455.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.223\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AEC32455.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.224\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.224\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAD22538.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.225\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.226\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.233\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAD22538.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.234\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Mapped protein with name 'extended spectrum beta-lactamase TEM-53' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.246\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.247\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAD22538.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.247\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.248\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.253\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAD22538.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.263\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAD22538.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.264\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.265\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAD22539.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.266\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.266\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.273\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAD22539.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.273\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Mapped protein with name 'inhibitor resistant beta lactamase TEM-54' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.286\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.287\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAD22539.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.288\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.288\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.293\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAD22539.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.304\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAD22539.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.305\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.309\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF05614.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.310\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.310\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.317\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF05614.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.318\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-77' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.329\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.330\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF05614.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.330\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.331\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.335\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF05614.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.346\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF05614.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.347\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.348\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF05612.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.348\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.349\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.356\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF05612.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.356\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-78' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.368\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.369\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF05612.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.370\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.370\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.375\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF05612.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.388\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF05612.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.388\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.389\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF05611.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.389\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.390\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.396\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF05611.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.397\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-79' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.408\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.409\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF05611.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.410\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.410\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.415\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF05611.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.426\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF05611.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.427\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.428\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAM15527.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.428\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Taxonomy ID: 550\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.429\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Mapped organism 'Enterobacter cloacae' with taxonomy ID 550.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.434\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAM15527.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.435\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-80' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.449\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.449\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAM15527.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.450\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.451\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.456\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAM15527.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.467\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAM15527.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.468\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.469\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAL29433.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.470\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.471\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.477\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAL29433.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.478\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-81' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.490\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.491\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAL29433.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.491\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.492\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.496\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAL29433.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.507\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAL29433.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.508\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.509\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAL29434.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.509\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.510\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.516\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAL29434.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.517\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-82' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.529\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.530\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAL29434.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.531\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.531\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.536\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAL29434.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.547\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAL29434.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.547\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.548\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAL29435.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.549\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.549\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.556\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAL29435.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.556\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-83' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.567\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.568\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAL29435.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.569\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.569\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.574\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAL29435.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.586\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAL29435.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.586\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.587\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAL29436.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.588\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.588\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.594\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAL29436.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.595\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Mapped protein with name 'inhibitor-resistant beta-lactamase TEM-84' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.606\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.607\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAL29436.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.607\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.608\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.613\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAL29436.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.623\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAL29436.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.624\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.625\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAC43229.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.625\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.626\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.632\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAC43229.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.633\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Mapped protein with name 'TEM-85 ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.644\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.645\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAC43229.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.645\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.646\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.651\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAC43229.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.663\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAC43229.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.663\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.664\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAC43230.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.664\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.665\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.671\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAC43230.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.672\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Mapped protein with name 'TEM-86 ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.683\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.684\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAC43230.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.684\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.685\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.689\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAC43230.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.699\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAC43230.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.700\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:23.701\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36m_fetch_response\u001b[0m:\u001b[36m121\u001b[0m - \u001b[34m\u001b[1mSending request to https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi with parameters: {'retmode': 'text', 'rettype': 'genbank', 'db': 'protein', 'id': 'AAG44570.1,AAK14792.1,AAK30619.1,BAB16308.1,AAF66653.1,CAC85660.1,CAC85661.1,CAC67290.1'}\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.377\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAG44570.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.377\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Taxonomy ID: 584\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.378\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Mapped organism 'Proteus mirabilis' with taxonomy ID 584.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.385\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAG44570.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.386\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Mapped protein with name 'class A beta-lactamase TEM-87' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.398\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.399\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAG44570.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.399\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.400\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.405\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAG44570.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.416\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAG44570.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.417\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.417\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAK14792.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.418\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Taxonomy ID: 573\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.418\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Mapped organism 'Klebsiella pneumoniae' with taxonomy ID 573.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.425\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAK14792.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.425\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Mapped protein with name 'extended-spectrum beta-lactamase TEM-88' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.437\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.437\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAK14792.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.438\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.439\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.443\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAK14792.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.455\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAK14792.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.456\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.456\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAK30619.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.457\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.457\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.464\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAK30619.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.464\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Mapped protein with name 'TEM-90 beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.477\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.479\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAK30619.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.479\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.480\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.486\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAK30619.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.497\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAK30619.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.498\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.499\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record BAB16308.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.499\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.500\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.507\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord BAB16308.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.507\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Mapped protein with name 'TEM-derived extended-spectrum beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.519\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.520\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein BAB16308.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.521\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.522\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.527\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord BAB16308.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.540\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein BAB16308.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.541\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.542\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record AAF66653.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.543\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Taxonomy ID: 584\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.543\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Mapped organism 'Proteus mirabilis' with taxonomy ID 584.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.550\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord AAF66653.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.551\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Mapped protein with name 'class A beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.564\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.565\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein AAF66653.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.566\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.566\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.571\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord AAF66653.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.583\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein AAF66653.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.584\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.584\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAC85660.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.585\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.585\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.592\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAC85660.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.593\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Mapped protein with name 'TEM-93 ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.606\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.606\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAC85660.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.607\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.608\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.613\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAC85660.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.625\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAC85660.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.626\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.626\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAC85661.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.627\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.627\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.634\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAC85661.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.634\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Mapped protein with name 'TEM-94 ES-beta-lactamase' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.646\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.647\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAC85661.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.647\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.648\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.653\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAC85661.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.663\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAC85661.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.664\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.664\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m259\u001b[0m - \u001b[34m\u001b[1mProcessing NCBI protein record CAC67290.1\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.665\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m49\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Taxonomy ID: 562\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.665\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_organism\u001b[0m:\u001b[36m77\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Mapped organism 'Escherichia coli' with taxonomy ID 562.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.671\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m115\u001b[0m - \u001b[33m\u001b[1mRecord CAC67290.1: Molecular weight missing or invalid; setting to None.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.672\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_protein\u001b[0m:\u001b[36m128\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Mapped protein with name 'beta lactamase TEM-95' to 'Protein' object.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.684\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_sites\u001b[0m:\u001b[36m149\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Mapped 0 site(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.684\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_sites\u001b[0m:\u001b[36m160\u001b[0m - \u001b[34m\u001b[1mConnected 0 site(s) to protein CAC67290.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.685\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_cds\u001b[0m:\u001b[36m183\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Processing CDS feature with qualifiers.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.685\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mget_cds_regions\u001b[0m:\u001b[36m211\u001b[0m - \u001b[34m\u001b[1mExtracted 1 CDS region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.690\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36mmap_regions\u001b[0m:\u001b[36m234\u001b[0m - \u001b[34m\u001b[1mRecord CAC67290.1: Mapped 1 region(s).\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.701\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_regions\u001b[0m:\u001b[36m247\u001b[0m - \u001b[34m\u001b[1mConnected 1 region(s) to protein CAC67290.1.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:24.702\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n" + "\u001b[32m2025-03-21 10:35:45.248\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 2 sequences in the database.\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:45.248\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:45.263\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.789\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.832\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.878\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.903\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.928\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:46.980\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.006\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.031\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.113\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.138\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.174\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.199\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.224\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.249\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.300\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.325\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.346\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.370\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.396\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.470\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.501\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.525\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.549\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.573\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.598\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.623\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.649\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.675\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.699\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:47.766\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.031\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.056\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.094\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.120\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.146\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.173\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.198\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.224\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.250\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.275\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.340\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.365\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.390\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.415\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.440\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.464\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.488\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.514\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.540\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.569\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.782\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.809\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.836\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.861\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.887\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.913\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.939\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.965\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:48.992\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.018\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.585\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.613\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.639\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.667\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.694\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.721\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.748\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n", + "\u001b[32m2025-03-21 10:35:49.776\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n" ] } ], @@ -957,19 +214,14 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2025-02-07 15:21:25.789\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m222\u001b[0m - \u001b[34m\u001b[1mCalculating embeddings for 68 sequences.\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:25.789\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m229\u001b[0m - \u001b[34m\u001b[1mProcessing batch 1/6\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:26.421\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m229\u001b[0m - \u001b[34m\u001b[1mProcessing batch 2/6\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:27.004\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m229\u001b[0m - \u001b[34m\u001b[1mProcessing batch 3/6\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:27.575\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m229\u001b[0m - \u001b[34m\u001b[1mProcessing batch 4/6\u001b[0m\n", - "\u001b[32m2025-02-07 15:21:28.145\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mcalculate_sequence_embeddings\u001b[0m:\u001b[36m229\u001b[0m - \u001b[34m\u001b[1mProcessing batch 5/6\u001b[0m\n" + "Fetching 4 files: 100%|██████████| 4/4 [00:00<00:00, 284.23it/s]\n" ] } ], @@ -988,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -1000,7 +252,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmGFJREFUeJzs3Xlc1HX+wPHXHMzAAANyDoqIBxZ4datdmhXEZsrY2nbremxrHpX5K2uXzIXWbduubUtby4rKDttGW8PAMo9Ku0zLxhJNRZQRRGGEgRlm5vv7g5h1Ag0UHMD38/Hw8XC+3+98v+85mHnP53h/VIqiKAghhBBCiE5PHegAhBBCCCFE25DETgghhBCii5DETgghhBCii5DETgghhBCii5DETgghhBCii5DETgghhBCii5DETgghhBCii5DETgghhBCii5DETgghhBCii5DETogzyMSJE0lOTg50GM3GoVKpePjhh097LIG6bmt8+eWXXHzxxYSGhqJSqdiyZUugQ2oTneG5b86ePXtQqVT84x//aPdrvfzyy6hUKvbs2fOrxyYnJzNx4kTf7bVr16JSqVi7dm27xSc6HknsRMB9+eWXzJgxgwEDBhAaGkpSUhI33HADO3bsaHLsyJEjUalUqFQq1Go1RqORs846i9tuu43Vq1e3+JpLly7lqaeealWce/bs4fe//z19+/YlODgYk8nE5Zdfzrx585qN8brrrmv2HL/8Qmj88D3evzfffLPZeOrr64mJieHSSy89bsyKotCzZ0/OO++8Vj3WriY/P79TJhDQ8DqPHz+ew4cP8+STT/Lqq6/Sq1evZo/95XspKCiIPn36cPvtt/PTTz+1aVzPPfccL7/8cpue81RNnDjxuH9HwcHBgQ5PiNNCG+gAhHj00Uf59NNPGT9+PIMHD8Zms/Gvf/2L8847j02bNjFw4EC/4xMTE1mwYAEANTU17Ny5k3fffZfXXnuNG264gddee42goKATXnPp0qVs27aNu+++u0Ux7ty5kwsvvJCQkBAmTZpEcnIypaWlbN68mUcffZT58+c3uc/KlSv5+uuvOf/881t0jVmzZnHhhRc22T58+PBmjw8KCmL8+PE8//zz7N27t9kv+/Xr11NSUsI999wDwOLFi/F6vS2K53Srra1Fq22fj6T8/HyeffbZZpO79rxuW9i1axd79+5l8eLFTJkypUX3aXwv1dfXs3nzZv7973/z/vvv891339G9e/c2ieu5554jJibGr4Wotdrjudfr9bzwwgtNtms0mja9Tmdw+eWXU1tbi06nC3Qo4jTquJ9m4owxe/Zsli5d6vfh87vf/Y5Bgwbxt7/9jddee83v+IiICG699Va/bX/729+YNWsWzz33HMnJyTz66KNtGuOTTz5JdXU1W7ZsaZJAlZWVNTk+KSmJo0ePMn/+fN57770WXeOyyy7jt7/9baviuuWWW1i0aBFvvPEGc+fObbJ/6dKlqNVqbrzxRoBfTXgDKVAtKh29Jafx/RUZGdni+xz7Xvr9739P//79mTVrFq+88goPPPBAs/epqakhNDT0lONtjfZ47rVabZPPhzOVWq3u8O9v0fakK1YE3MUXX9zkF2VKSgoDBgxg+/btLTqHRqPhn//8J2lpafzrX/+iqqrquMeOHDmS999/n7179/q6aX5t3NmuXbtITExstlUsLi6uybbw8HDuuece/vvf/7J58+YWPYaTcckll5CcnMzSpUub7Kuvr+edd97hiiuu8LXSNDe27c033+T8888nPDwco9HIoEGDePrpp337H374YVQqVZPzNzf2Z8WKFVx77bV0794dvV5P3759ycnJwePx/OpjOXa8VWOX9fH+NdqwYQPjx48nKSkJvV5Pz549ueeee6itrfUdM3HiRJ599lnfNX55jubGeX3zzTdkZmZiNBoJCwvjyiuvZNOmTc0+/k8//ZTZs2cTGxtLaGgoZrOZ8vLyX328AGvWrOGyyy4jNDSUyMhIxo4d6/eenzhxIiNGjABg/PjxqFQqRo4c2aJzH2vUqFEA7N69G/jfa2q1Wrn55pvp1q2br0vf7XaTk5ND37590ev1JCcn8+CDD+J0On3nS05O5vvvv2fdunW+5/PYuCorK7n77rvp2bMner2efv368eijjzZpLf7lc98Y186dO5k4cSKRkZFERETw+9//HofD0erHfTyNr90nn3zCrFmziI2NJTIykjvuuAOXy0VlZSW333473bp1o1u3btx3330oitLsuZ588kl69epFSEgII0aMYNu2bU2O+eGHH/jtb39LVFQUwcHBXHDBBc3+4Pv+++8ZNWoUISEhJCYmkpub22wLu6Io5ObmkpiYiMFg4IorruD7779vclxzY+xGjhzJwIEDsVqtXHHFFRgMBnr06MHf//73Jvffu3cvY8aMITQ0lLi4OO655x4KCgqanLOoqIjrr78ek8lEcHAwiYmJ3HjjjSf8HBbtR1rsRIekKAoHDx5kwIABLb6PRqPhpptuIjs7m08++YRrr7222eP+9Kc/UVVVRUlJCU8++SQAYWFhJzx3r169+PDDD1mzZo3vS/LX3HXXXTz55JM8/PDDLWq1O3r0KIcOHWqyPTo6utnEChq+GG+++Wb++te/8v333/s9Xx988AGHDx/mlltuOe41V69ezU033cSVV17pa+Xcvn07n376KXfdddevxvxLL7/8MmFhYcyePZuwsDDWrFnDQw89hN1u57HHHmvxeWJjY3n11Vf9ttXX13PPPff4/QhYtmwZDoeDadOmER0dzRdffMEzzzxDSUkJy5YtA+COO+7gwIEDrF69usk5m/P9999z2WWXYTQaue+++wgKCuL5559n5MiRrFu3jqFDh/odP3PmTLp168a8efPYs2cPTz31FDNmzOCtt9464XU+/PBDMjMz6dOnDw8//DC1tbU888wzXHLJJWzevJnk5GTuuOMOevTowV//+ldf92p8fHxLn0afXbt2AQ3vpWONHz+elJQU/vrXv/oSlylTpvDKK6/w29/+lnvvvZfPP/+cBQsWsH37diwWCwBPPfUUM2fOJCwsjD/96U8AvrgcDgcjRoxg//793HHHHSQlJfHZZ5/xwAMPUFpa2qKxrTfccAO9e/dmwYIFbN68mRdeeIG4uLgWt8Q393ek0+kwGo1+22bOnInJZGL+/Pls2rSJf//730RGRvLZZ5+RlJTEX//6V/Lz83nssccYOHAgt99+u9/98/LyOHr0KNOnT6euro6nn36aUaNG8d133/mej++//55LLrmEHj16MHfuXEJDQ3n77bfJysriP//5D2azGQCbzcYVV1yB2+32Hffvf/+bkJCQJo/loYceIjc3l9/85jf85je/YfPmzaSnp+NyuVr0/Bw5coRrrrmGcePGccMNN/DOO+9w//33M2jQIDIzM4GGFtxRo0ZRWlrKXXfdhclkYunSpXz88cd+53K5XGRkZOB0On3P5/79+1m5ciWVlZVERES0KCbRhhQhOqBXX31VAZQXX3zRb/uIESOUAQMGHPd+FotFAZSnn376hOe/9tprlV69erU4nm3btikhISEKoJxzzjnKXXfdpSxfvlypqalpcuyxMc6fP18BlK+//lpRFEXZvXu3AiiPPfaY7/iPP/5YAY77r7S09ISxff/99wqgPPDAA37bb7zxRiU4OFipqqrybZswYYLf477rrrsUo9GouN3u455/3rx5SnMfFS+99JICKLt37/ZtczgcTY674447FIPBoNTV1R03DkVRFECZN2/eceO48847FY1Go6xZs+aE11uwYIGiUqmUvXv3+rZNnz692cfQ3HWzsrIUnU6n7Nq1y7ftwIEDSnh4uHL55Zf7tjU+/quuukrxer2+7ffcc4+i0WiUysrK4z4WRVGUc845R4mLi1MqKip827Zu3aqo1Wrl9ttv921rfH8sW7bshOc79tglS5Yo5eXlyoEDB5T3339fSU5OVlQqlfLll18qivK/1/Smm27yu/+WLVsUQJkyZYrf9jlz5iiA33M/YMAAZcSIEU1iyMnJUUJDQ5UdO3b4bZ87d66i0WiU4uJi37ZfPveNcU2aNMnvvmazWYmOjv7Vxz9hwoTj/h1lZGT4jmt87TIyMvxeu+HDhysqlUr54x//6NvmdruVxMREv8fa+HccEhKilJSU+LZ//vnnCqDcc889vm1XXnmlMmjQIL/3v9frVS6++GIlJSXFt+3uu+9WAOXzzz/3bSsrK1MiIiL8/s7KysoUnU6nXHvttX6xP/jggwqgTJgwwbet8f3w8ccf+7aNGDFCAZS8vDzfNqfTqZhMJuX666/3bXv88ccVQFm+fLlvW21trXL22Wf7nfObb75p8ftTnB7SFSs6nB9++IHp06czfPhwJkyY0Kr7Nra8HT16tE1jGjBgAFu2bOHWW29lz549PP3002RlZREfH8/ixYuPe7+77rqLbt26NTu54pceeughVq9e3eRfVFTUCe+XlpbGueee6zd7tqamhvfee4/Ro0c3aaU4VmRkJDU1Na2aUXwix7YuNLZAXnbZZTgcDn744YeTPm9eXh7PPfccf//737niiiuavV5NTQ2HDh3i4osvRlEUvvnmm1Zfx+PxUFhYSFZWFn369PFtT0hI4Oabb+aTTz7Bbrf73ecPf/iDX4vqZZddhsfjYe/evce9TmlpKVu2bGHixIl+r+/gwYO5+uqryc/Pb3Xsx5o0aRKxsbF0796da6+9lpqaGl555RUuuOACv+P++Mc/+t1uvO7s2bP9tt97770AvP/++7967WXLlnHZZZfRrVs3Dh065Pt31VVX4fF4WL9+/a+e45dxXXbZZVRUVDR57psTHBzc7N/R3/72tybHTp482e+1Gzp0KIqiMHnyZN82jUbDBRdc0Oys4qysLHr06OG7fdFFFzF06FDf83j48GHWrFnDDTfc4Pt7OHToEBUVFWRkZFBUVMT+/fuBhud+2LBhXHTRRb7zxcbGNmlx//DDD3G5XMycOdMv9pZOBIOGz8ljxyHqdDouuugiv8f4wQcf0KNHD8aMGePbFhwczNSpU/3O1dgiV1BQ0Kbd5eLkSVes6FBsNhvXXnstERERvPPOO62eyVZdXQ00jHE72esfKyIiwpc89O/fn1dffRWPx4PVamXlypX8/e9/5w9/+AO9e/fmqquuanK+iIgI7r77bubNm8c333xDt27djnvtQYMGNXuOlrjllluYM2cOn332GRdffDHLly/H4XCcsBsW4M477+Ttt98mMzOTHj16kJ6ezg033MA111xzUnF8//33/PnPf2bNmjVNvoRPdrzNli1b+OMf/8hNN93UJOEoLi7moYce4r333uPIkSOnfL3y8nIcDgdnnXVWk32pqal4vV727dvn1+WdlJTkd1zja/zLeI7VmPQd7zoFBQWnNJnhoYce4rLLLkOj0RATE0Nqamqzs0979+7dJC61Wk2/fv38tptMJiIjI0+YrDYqKiri22+/JTY2ttn9zU02+qUTPacn+qECDYlYS/+OfnmdxiSlZ8+eTbY393qmpKQ02da/f3/efvttoGE2vaIoZGdnk52d3WwMZWVl9OjRg7179zbp5oem75HG1+CX146NjT3h58uxEhMTmwzv6NatG99++63fdfr27dvkuF++N3r37s3s2bN54okneP3117nssssYM2YMt956q3TDBogkdqLDqKqqIjMzk8rKSjZs2HBSZRkaBy7/8sOnpRISEvxuv/TSS03KOWg0GgYNGsSgQYMYPnw4V1xxBa+//vpxv0wax9rNnz+/1bXzWuqmm27ivvvuY+nSpVx88cUsXbqUbt268Zvf/OaE94uLi2PLli0UFBSwatUqVq1axUsvvcTtt9/OK6+8AnDc8X2/nBBRWVnJiBEjMBqN/OUvf/HV+9u8eTP333//SZVZOXLkCNdffz39+/dvUsLC4/Fw9dVXc/jwYe6//37OPvtsQkND2b9/PxMnTjxtZV2O9+NDOc5g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o6Oh0+nw3HPPYfPmzXj88cdRVlaGTz/9FFOnTsWYMWPu2UdBQQGys7MRExMDPz8/FBQU4NatWza/fu7Tpw+Sk5OxZMkSeHl5ISgoCJs3b8bt27cxe/bsBzqW0tJSVFdXo7S0FC0tLTAYDACA0NDQX31eIxF1Dgs7IupSr7/+OhITExEeHo76+noUFxcjJCSkTVx0dDR2796N7du3o6qqCj4+PtDpdMjOzm5zHtov+9++fbvNk/ttzbDt378fL7zwQrv9zZo1C8Cd++X1798fTz75JM6cOYPIyMhOHG3nyWQypKenY+XKlZg1axZu3boFrVaLp556ChqNplN9qNVqnDhxAlu3boXJZEJwcDDeeustxMbG2oxPSUmBxWJBQkICamtrMWbMGGRmZto8J+9+rF69Gnv37pVejxo1CgCQk5ODiRMnPlDfRNQxmWjvOngiIiIi6lF4jh0RERGRg2BhR0REROQgWNgREREROQgWdkREREQOgoUdERERkYNgYUdERETkIFjYERERETkIFnZEREREDoKFHREREZGDYGFHRERE5CBY2BERERE5CBZ2RERERA7i/wFzTeeukt6EmQAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlOhJREFUeJzs3XlcVOX+B/DPObPBAMMmmyLigglqWlmJ5pYGkaaMZustzeWWqbnkTe1G5cWy3br9SstSozK7WiNdRcGy1Fva4lY2LmgpoowgCgMMzHp+fxiTI4iAMyzj5/168bqXc56Z850B6TPPeRZBkiQJRERERNTqic1dABERERG5B4MdERERkZdgsCMiIiLyEgx2RERERF6CwY6IiIjISzDYEREREXkJBjsiIiIiL8FgR0REROQlGOyIiIiIvASDHdFVZPz48YiNjW3uMmqtQxAEPPfcc01eS3NdtyF++ukn9OvXD35+fhAEAXv37m3uktyiNbz3tTl27BgEQcCrr77q8WutXLkSgiDg2LFjl20bGxuL8ePHO7//9ttvIQgCvv32W4/VRy0Pgx01u59++gnTpk1D9+7d4efnh5iYGNx99904fPhwjbaDBw+GIAgQBAGiKEKj0eCaa67Bgw8+iM2bN9f7mqtWrcIbb7zRoDqPHTuGhx9+GJ07d4aPjw8iIyMxcOBAPPvss7XWeOedd9b6HBf/B6H6j++lvlavXl1rPVarFW3atMEtt9xyyZolSUL79u1x/fXXN+i1epusrKxWGSCA8z/nsWPH4uzZs1i8eDE++ugjdOjQoda2F/8uKRQKdOrUCQ899BB+//13t9b1zjvvYOXKlW59zis1fvz4S/478vHxae7yiJqEvLkLIHrppZfw3XffYezYsbj22mthMBjwf//3f7j++uuxc+dO9OjRw6V9dHQ0Fi1aBACoqKjAkSNH8MUXX+Djjz/G3XffjY8//hgKhaLOa65atQr79+/HzJkz61XjkSNHcOONN8LX1xcTJkxAbGwsCgoKsHv3brz00ktYsGBBjcesX78eu3btwg033FCvazz++OO48cYbaxxPTEystb1CocDYsWPx7rvv4vjx47X+x37btm3Iz8/HrFmzAADLli2Dw+GoVz1NrbKyEnK5Z/4kZWVl4e2336413Hnyuu5w9OhRHD9+HMuWLcOkSZPq9Zjq3yWr1Yrdu3fjvffew4YNG/Drr7+ibdu2bqnrnXfeQZs2bVx6iBrKE++9SqXC+++/X+O4TCZz63Vag4EDB6KyshJKpbK5S6Em1HL/mtFVY/bs2Vi1apXLH5977rkHPXv2xIsvvoiPP/7YpX1gYCD+9re/uRx78cUX8fjjj+Odd95BbGwsXnrpJbfWuHjxYpSXl2Pv3r01AlRhYWGN9jExMSgrK8OCBQvw5Zdf1usaAwYMwF133dWguh544AEsXboUn376KebNm1fj/KpVqyCKIu69914AuGzgbU7N1aPS0ntyqn+/goKC6v2YC3+XHn74YXTt2hWPP/44PvzwQ8yfP7/Wx1RUVMDPz++K620IT7z3crm8xt+Hq5Uoii3+95vcj7diqdn169evxifKuLg4dO/eHQcOHKjXc8hkMvz73/9GQkIC/u///g+lpaWXbDt48GBs2LABx48fd96mudy4s6NHjyI6OrrWXrHw8PAaxwICAjBr1iz897//xe7du+v1Ghqjf//+iI2NxapVq2qcs1qtWLt2LYYMGeLspaltbNvq1atxww03ICAgABqNBj179sSbb77pPP/cc89BEIQaz1/b2J/MzEwMHz4cbdu2hUqlQufOnZGeng673X7Z13LheKvqW9aX+qq2fft2jB07FjExMVCpVGjfvj1mzZqFyspKZ5vx48fj7bffdl7j4ueobZzXnj17kJKSAo1GA39/fwwdOhQ7d+6s9fV/9913mD17NsLCwuDn5wetVouioqLLvl4A2LJlCwYMGAA/Pz8EBQVh1KhRLr/z48ePx6BBgwAAY8eOhSAIGDx4cL2e+0K33norAOCPP/4A8NfPVK/X4/7770dwcLDzlr7NZkN6ejo6d+4MlUqF2NhYPPXUUzCbzc7ni42NxW+//YatW7c6388L6yopKcHMmTPRvn17qFQqdOnSBS+99FKN3uKL3/vquo4cOYLx48cjKCgIgYGBePjhh2EymRr8ui+l+mf3v//9D48//jjCwsIQFBSERx55BBaLBSUlJXjooYcQHByM4OBgPPnkk5AkqdbnWrx4MTp06ABfX18MGjQI+/fvr9Hm4MGDuOuuuxASEgIfHx/06dOn1g98v/32G2699Vb4+voiOjoaCxcurLWHXZIkLFy4ENHR0VCr1RgyZAh+++23Gu1qG2M3ePBg9OjRA3q9HkOGDIFarUa7du3w8ssv13j88ePHMXLkSPj5+SE8PByzZs1CdnZ2jefMzc3FmDFjEBkZCR8fH0RHR+Pee++t8+8weQ577KhFkiQJp0+fRvfu3ev9GJlMhvvuuw9paWn43//+h+HDh9fa7p///CdKS0uRn5+PxYsXAwD8/f3rfO4OHTrgq6++wpYtW5z/kbycGTNmYPHixXjuuefq1WtXVlaGM2fO1DgeGhpaa7ACzv+H8f7778cLL7yA3377zeX92rRpE86ePYsHHnjgktfcvHkz7rvvPgwdOtTZy3ngwAF89913mDFjxmVrvtjKlSvh7++P2bNnw9/fH1u2bMEzzzwDo9GIV155pd7PExYWho8++sjlmNVqxaxZs1w+BKxZswYmkwlTpkxBaGgofvzxR7z11lvIz8/HmjVrAACPPPIITp06hc2bN9d4ztr89ttvGDBgADQaDZ588kkoFAq8++67GDx4MLZu3Yqbb77Zpf306dMRHByMZ599FseOHcMbb7yBadOm4bPPPqvzOl999RVSUlLQqVMnPPfcc6isrMRbb72F/v37Y/fu3YiNjcUjjzyCdu3a4YUXXnDeXo2IiKjv2+h09OhRAOd/ly40duxYxMXF4YUXXnAGl0mTJuHDDz/EXXfdhSeeeAI//PADFi1ahAMHDkCn0wEA3njjDUyfPh3+/v745z//CQDOukwmEwYNGoSTJ0/ikUceQUxMDL7//nvMnz8fBQUF9Rrbevfdd6Njx45YtGgRdu/ejffffx/h4eH17omv7d+RUqmERqNxOTZ9+nRERkZiwYIF2LlzJ9577z0EBQXh+++/R0xMDF544QVkZWXhlVdeQY8ePfDQQw+5PD4jIwNlZWWYOnUqqqqq8Oabb+LWW2/Fr7/+6nw/fvvtN/Tv3x/t2rXDvHnz4Ofnh//85z9ITU3F559/Dq1WCwAwGAwYMmQIbDabs917770HX1/fGq/lmWeewcKFC3HHHXfgjjvuwO7du5GUlASLxVKv9+fcuXO4/fbbMXr0aNx9991Yu3Yt5s6di549eyIlJQXA+R7cW2+9FQUFBZgxYwYiIyOxatUqfPPNNy7PZbFYkJycDLPZ7Hw/T548ifXr16OkpASBgYH1qoncSCJqgT766CMJgPTBBx+4HB80aJDUvXv3Sz5Op9NJAKQ333yzzucfPny41KFDh3rXs3//fsnX11cCIPXu3VuaMWOGtG7dOqmioqJG2wtrXLBggQRA2rVrlyRJkvTHH39IAKRXXnnF2f6bb76RAFzyq6CgoM7afvvtNwmANH/+fJfj9957r+Tj4yOVlpY6j40bN87ldc+YMUPSaDSSzWa75PM/++yzUm1/KlasWCEBkP744w/nMZPJVKPdI488IqnVaqmqquqSdUiSJAGQnn322UvW8dhjj0kymUzasmVLnddbtGiRJAiCdPz4ceexqVOn1voaartuamqqpFQqpaNHjzqPnTp1SgoICJAGDhzoPFb9+ocNGyY5HA7n8VmzZkkymUwqKSm55GuRJEnq3bu3FB4eLhUXFzuP7du3TxJFUXrooYecx6p/P9asWVPn813Ydvny5VJRUZF06tQpacOGDVJsbKwkCIL0008/SZL018/0vvvuc3n83r17JQDSpEmTXI7PmTNHAuDy3nfv3l0aNGhQjRrS09MlPz8/6fDhwy7H582bJ8lkMikvL8957OL3vrquCRMmuDxWq9VKoaGhl33948aNu+S/o+TkZGe76p9dcnKyy88uMTFREgRBevTRR53HbDabFB0d7fJaq/8d+/r6Svn5+c7jP/zwgwRAmjVrlvPY0KFDpZ49e7r8/jscDqlfv35SXFyc89jMmTMlANIPP/zgPFZYWCgFBga6/DsrLCyUlEqlNHz4cJfan3rqKQmANG7cOOex6t+Hb775xnls0KBBEgApIyPDecxsNkuRkZHSmDFjnMdee+01CYC0bt0657HKykqpW7duLs+5Z8+eev9+UtPgrVhqcQ4ePIipU6ciMTER48aNa9Bjq3veysrK3FpT9+7dsXfvXvztb3/DsWPH8OabbyI1NRURERFYtmzZJR83Y8YMBAcH1zq54mLPPPMMNm/eXOMrJCSkzsclJCTguuuuc5k9W1FRgS+//BIjRoyo0UtxoaCgIFRUVDRoRnFdLuxdqO6BHDBgAEwmEw4ePNjo583IyMA777yDl19+GUOGDKn1ehUVFThz5gz69esHSZKwZ8+eBl/HbrcjJycHqamp6NSpk/N4VFQU7r//fvzvf/+D0Wh0eczf//53lx7VAQMGwG634/jx45e8TkFBAfbu3Yvx48e7/HyvvfZa3HbbbcjKympw7ReaMGECwsLC0LZtWwwfPhwVFRX48MMP0adPH5d2jz76qMv31dedPXu2y/EnnngCALBhw4bL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MZlMzp0njh49invvvRfp6emXveYNN9yAzz77DLNnz8aNN94If3//WrcAq/bSSy9h165dGD16tDP47N69GxkZGQgJCbnswOXAwEDMmDGjzkkU27dvR1VVVY3j1157rfOadRkzZgwee+wxZGZmon379i69ZpcyadIknD17Frfeeiuio6Nx/PhxvPXWW+jdu7ezxyYpKQkxMTGYOHEi/vGPf0Amk2H58uUICwtDXl6e87n69euH4OBgjBs3Do8//jgEQcBHH33UqNs7v/76K9LT0zFw4EAUFhbW+jvRrVs3dO7cGXPmzMHJkyeh0Wjw+eef19prUb37x+OPP47k5GTIZDLnos0XW7hwITZv3oxbbrkFjz32GORyOd59912YzeZa1/pqrFdeeQUpKSlITEzExIkTncudBAYGNtv2Z7169cK4cePw3nvvOW+t//jjj/jwww+RmprqMnHlhhtuwJIlS7Bw4UJ06dIF4eHhuPXWW/GPf/zDOXFn/PjxuOGGG1BRUYFff/0Va9euxbFjx9CmTRuPvQabzVbj96WaVqt1a09oly5dcMstt2DKlCkwm8144403EBoa6nIb+u2338Ytt9yCnj17YvLkyejUqRNOnz6NHTt2ID8/H/v27QMAPPnkk/joo49w++23Y8aMGc7lTjp06OAy9i0sLAxz5szBokWLMGLECNxxxx3Ys2cPNm7c6Nb39ZFHHsH//d//4b777sOMGTMQFRWFTz75xLngcXUv3pYtWzBt2jSMHTsWXbt2hc1mw0cffQSZTIYxY8a4rR5qgGaZi0t0gerp95f6qqutv7+/FBcXJ/3tb3+TcnJy6n3N8vJy6f7775eCgoIkAJdd+uS7776Tpk6dKvXo0UMKDAyUFAqFFBMTI40fP95lWYzqGmtbkuXcuXPOpQsastxJXUuAXGzs2LESAOnJJ5+s9fzFy4ysXbtWSkpKksLDwyWlUinFxMRIjzzySI0lVnbt2iXdfPPNzjavv/56rcudfPfdd1Lfvn0lX19fqW3bttKTTz4pZWdn11hy4XLLnVzuPamm1+ulYcOGSf7+/lKbNm2kyZMnS/v27ZMASCtWrHC2s9ls0vTp06WwsDBJEASX56jtPd69e7eUnJws+fv7S2q1WhoyZIj0/fffu7Spfv3VS4hUq22JiUv56quvpP79+0u+vr6SRqOR7rzzTkmv19f6fA1Z7uRybauXFSkqKqpxzmq1SgsWLJA6duwoKRQKqX379tL8+fNdluuQJEkyGAzS8OHDpYCAAAmAy3IgZWVl0vz586UuXbpISqVSatOmjdSvXz/p1VdflSwWi7Pdxe/9peqq7XetNnUtd3Lh4y/1s7vU9ceNGyf5+fk5v79w2aLXXntNat++vaRSqaQBAwZI+/btq1HX0aNHpYceekiKjIyUFAqF1K5dO2nEiBHS2rVrXdr98ssv0qBBgyQfHx+pXbt2Unp6uvTBBx/UeO12u11asGCBFBUVJfn6+kqDBw+W9u/fL3Xo0KFey53U9veptn+Tv//+uzR8+HDJ19dXCgsLk5544gnp888/lwBIO3fudLaZMGGC1LlzZ8nHx0cKCQmRhgwZIn311Vc1rkFNQ5CkZhzhS0RERK3GG2+8gVmzZiE/P99lqRdqORjsiIiIqIbKykqXmdNVVVW47rrrYLfbcfjw4WasjOrCMXZERERUw+jRoxETE4PevXs7xzYfPHiwxoQOalkY7IiIiKiG5ORkvP/++/jkk09gt9uRkJCA1atX45577mnu0qgOvBVLRERE5CW4jh0RERGRl2CwIyIiIvISrXaM3Ysvvoj58+djxowZzhW3q6qq8MQTT2D16tUwm81ITk7GO++8g4iICOfj8vLyMGXKFHzzzTfw9/fHuHHjsGjRolo3yK6Nw+HAqVOnEBAQcEX7KRIRERHVhyRJKCsrQ9u2bSGKdffJtcpg99NPP+Hdd9+tsRr/rFmzsGHDBqxZswaBgYGYNm0aRo8eje+++w7A+W2nhg8fjsjISHz//fcoKCjAQw89BIVCgRdeeKFe1z516pRb9ookIiIiaogTJ04gOjq6zjatbvJEeXk5rr/+erzzzjtYuHAhevfujTfeeAOlpaUICwvDqlWrcNdddwE4v5l2fHw8duzYgb59+2Ljxo0YMWIETp065ezFW7p0KebOnYuioqJ6bZheWlqKoKAgnDhxwi17RhIRERHVxWg0on379igpKUFgYGCdbVtdj93UqVMxfPhwDBs2DAsXLnQe37VrF6xWK4YNG+Y81q1bN8TExDiD3Y4dO9CzZ0+XW7PJycmYMmUKfvvtN1x33XWXvX717VeNRsNgR0RERE2mPkPAWlWwW716NXbv3o2ffvqpxjmDwQClUomgoCCX4xERETAYDM42F4a66vPV52pjNpthNpud3xuNxit5CUREREQe02pmxZ44cQIzZszAJ598Ah8fnya77qJFixAYGOj84vg6IiIiaqlaTbDbtWsXCgsLcf3110Mul0Mul2Pr1q3497//DblcjoiICFgsFpSUlLg87vTp04iMjAQAREZG4vTp0zXOV5+rzfz581FaWur8OnHihPtfHBEREZEbtJpbsUOHDsWvv/7qcuzhhx9Gt27dMHfuXLRv3x4KhQJff/01xowZAwA4dOgQ8vLykJiYCABITEzE888/j8LCQoSHhwMANm/eDI1Gg4SEhFqvq1KpoFKpGlyv3W6H1Wpt8OOudgqFAjKZrLnLICIiapVaTbALCAhAjx49XI75+fkhNDTUeXzixImYPXs2QkJCoNFoMH36dCQmJqJv374AgKSkJCQkJODBBx/Eyy+/DIPBgKeffhpTp05tVHirjSRJMBgMNXoOqf6CgoIQGRnJdQKJiIgaqNUEu/pYvHgxRFHEmDFjXBYoriaTybB+/XpMmTIFiYmJ8PPzw7hx4/Cvf/3LbTVUh7rw8HCo1WqGkwaQJAkmkwmFhYUAgKioqGauiIiIqHVpdevYNTej0YjAwECUlpbWWO7Ebrfj8OHDCA8PR2hoaDNV2PoVFxejsLAQXbt25W1ZIiK66tWVPS7WaiZPtAbVY+rUanUzV9K6Vb9/HKNIRETUMAx2HsDbr1eG7x8REVHjMNgRERERNVL1UmsWi6W5SwHgZZMnyLMEQYBOp0Nqampzl0JERNSs9Ho9MnU67MzJgcNshqhSoW9SElJHj0Z8fHyz1cUeuxasKT8FLFq0CDfeeCMCAgIQHh6O1NRUHDp0yOPXJSIiam2ysrIwb9IknMjIwASTCWlyOSaYTDiRkYG5Eydi48aNzVYbe+xaIL1eD50uEzk5O2E2O6BSiUhK6ovRo1M99ilg69atmDp1Km688UbYbDY89dRTSEpKgl6vh5+fn0euSURE1Nro9XosXbgQI8rLMTkuzmVc+MiICCzLy8OS9HTExsY2S88de+xamKysLEyaNA8ZGSdgMk2AXJ4Gk2kCMjJOYOLEuR77FLBp0yaMHz8e3bt3R69evbBy5Urk5eVh165dLu0KCgqQkpICX19fdOrUCWvXrnU5f+LECdx9990ICgpCSEgIRo0ahWPHjnmkZiIioqaWqdMhurgYk2Niakz2EwQBk2NiEF1cjEydrlnqY7BrQfR6PRYuXIry8hGIi3sbkZGjEBx8EyIjRyEu7m2Ul49AevoSHDhwwOO1lJaWAgBCQkJcjqelpWHMmDHYt28fHnjgAdx7773OeqxWK5KTkxEQEIDt27fju+++g7+/P26//fYWM6iUiIiosSwWC3bm5CBZo7nkCg6CICBZo8GO7Oxm+W8fg10LotNlorg4GjExk2v9FBATMxnFxdHQ6TI9WofD4cDMmTPRv3//Gtu4jR07FpMmTULXrl2Rnp6OPn364K233gIAfPbZZ3A4HHj//ffRs2dPxMfHY8WKFcjLy8O3337r0ZqJiIg8zWQywWE2I+oy25BGqlRwmM0wmUxNVNlfGOxaCIvFgpycndBokuv8FKDRJCM7e4dHPwVMnToV+/fvx+rVq2ucS0xMrPF9dY/dvn37cOTIEQQEBMDf3x/+/v4ICQlBVVUVjh496rF6iYiImoJarYaoUqHAbK6zneHPWbLNsWEBJ0+0ECaT6c+JEnXvj6pSRcJsdsBkMkGpVLq9jmnTpmH9+vXYtm0boqOjG/TY8vJy3HDDDfjkk09qnAsLC3NXiURERM1CqVSib1ISsjMyMDIiotaOGEmSkG00IlGr9ch/py+HPXYthFqthkolwmwuqLOd2WyASiW6/VOAJEmYNm0adDodtmzZgo4dO9babufOnTW+r571c/311yM3Nxfh4eHo0qWLy1dgYKBb6yUiImoOo7Ra5IeGYlleHiRJcjknSRKW5eUhPzQUo7TaZqmPwa6FUCqVSErqC6Mxu8YvSjVJkmA0ZiM5OdHtnwKmTp2Kjz/+GKtWrUJAQAAMBgMMBgMqKytd2q1ZswbLly/H4cOH8eyzz+LHH3/EtGnTAAAPPPAA2rRpg1GjRmH79u34448/8O233+Lxxx9Hfn6+W+slIiJqDgkJCZiSlob1/v6YmpuLTIMBP5w7h0yDAVNzc7He3x9T0tKabZFiBrsWRKsdhdDQfOTlLav1U0Be3jKEhuZDqx3l9msvWbIEpaWlGDx4MKKiopxfn332mUu7BQsWYPXq1bj22muRkZGBTz/9FAkJCQDO9zpu27YNMTExGP3nytsTJ05EVVUVNBqN22smIiJqDikpKXjpgw8QM24clqvVWGizYblajZhx4/DSBx8gJSWl2WoTpEt1D1GtjEYjAgMDUVpaWiOsVFVV4Y8//kDHjh3h4+PTqOffuHEj0tOXoLg4GhpN8p9j6gwwGrMRGpqPtLQpzfoL0xTc8T4SERE1BYvFApPJBLVa7bExdXVlj4tx8kQLk5KSgtjYWOh0mcjOXg6z2QG1WoRWmwitdnqz7j9HRERErpRKZbNMkrgUBrsWKD4+HvHx8Zgzx/OfAoiIiMh7MNi1YC3tUwARERG1bJw8QUREROQlGOyIiIiIvASDHREREZGXYLAjIiIi8hIMdkRERERegsGOiIiIyEsw2FG9CYKAdevWNXcZREREdAkMdi2YxWJBSUkJLBaLx6+1aNEi3HjjjQgICEB4eDhSU1Nx6NAhj1+XiIiI3IcLFLdAer0emToddubkwGE2Q1Sp0DcpCamjR3tsS7GtW7di6tSpuPHGG2Gz2fDUU08hKSkJer0efn5+jX5eq9UKhULhxkqJiIjoUthj18JkZWVh3qRJOJGRgQkmE9LkckwwmXAiIwNzJ07Exo0bPXLdTZs2Yfz48ejevTt69eqFlStXIi8vD7t27XJpV1BQgJSUFPj6+qJTp05Yu3at89yxY8cgCAI+++wzDBo0CD4+Pvjkk088Ui8RERHVxGDXguj1eixduBAjysvxdlwcRkVG4qbgYIyKjMTbcXEYUV6OJenpOHDggMdrKS0tBQCEhIS4HE9LS8OYMWOwb98+PPDAA7j33ntr1DNv3jzMmDEDBw4cQHJyssdrJSIiovMY7FqQTJ0O0cXFmBwTA0EQXM4JgoDJMTGILi5Gpk7n0TocDgdmzpyJ/v37o0ePHi7nxo4di0mTJqFr165IT09Hnz598NZbb7m0mTlzJkaPHo2OHTsiKirKo7USERHRXxjsWgiLxYKdOTlI1mhqhLpqgiAgWaPBjuxsj06omDp1Kvbv34/Vq1fXOJeYmFjj+4t77Pr06eOx2oiIiOjSGOxaCJPJBIfZjCiVqs52kSoVHGYzTCaTR+qYNm0a1q9fj2+++QbR0dGNeo4rmWxBREREjcdg10Ko1WqIKhUKzOY62xn+nCWrVqvden1JkjBt2jTodDps2bIFHTt2rLXdzp07a3zvqZm6RERE1DAMdi2EUqlE36QkZBuNkCSp1jaSJCHbaERicjKUSqVbrz916lR8/PHHWLVqFQICAmAwGGAwGFBZWenSbs2aNVi+fDkOHz6MZ599Fj/++COmTZvm1lqIiIiocRjsWpBRWi3yQ0OxLC+vRriTJAnL8vKQHxqKUVqt26+9ZMkSlJaWYvDgwYiKinJ+ffbZZy7tFixYgNWrV+Paa69FRkYGPv30UyQkJLi9HiIiImo4LlDcgiQkJGBKWhqWpKdjb24ukjUaRKpUMJjNyDYakR8aiilpaR659XmpXsLa2jz22GO1no+Nja3X8xAREZFnMNi1MCkpKYiNjUWmTofl2dnnd55Qq5Go1WK6VsvxbERERHRJDHYtUHx8POLj42GZMwcmkwlqtdrtY+qIiIjI+zDYtWBKpZKBjoiIiOqNkyeIiIiIvASDHREREbmwWCwoKSnx6C5H5Bm8FUtEREQAAL1eD50uEzk5O2E2O6BSiUhK6ovRo1M5ea+VYI8dERERISsrC5MmzUNGxgmYTBMgl6fBZJqAjIwTmDhxLjZu3NjcJVI9sMeOiIjoKqfX67Fw4VKUl49AXNxkCILgPBcRMRJ5ecuQnr4EsbGx7Llr4dhjR0REdJXT6TJRXByNmBjXUAcAgiAgJmYyioujodNlNlOFVF8MdlRvgiBg3bp1zV0GERG5kcViQU7OTmg0yTVCXTVBEKDRJCM7ewcnVLRwDHYtWFPOSlq0aBFuvPFGBAQEIDw8HKmpqTh06JDHr0tERM3LZDL9OVEiqs52KlUkzGYHTCZTE1VGjcExdi2QXq+Hbp0OOVtzYLaaoVKokDQoCaO1oz02tmHr1q2YOnUqbrzxRthsNjz11FNISkqCXq+Hn5+fR65JRETNT61WQ6USYTIV1NnObDZArRahVqubqDJqDPbYtTBZWVmY9PgkZGzPgKmHCfIhcph6mJCxPQMTp0/02KykTZs2Yfz48ejevTt69eqFlStXIi8vD7t27XJpV1BQgJSUFPj6+qJTp05Yu3atR+ohIqKmoVQqkZTUF0ZjNiRJqrWNJEkwGrORnJzIHZFaOAa7FkSv12Ph6wtRHluOuAfjENknEsFdghHZJxJxD8ahPLYc6a+l48CBAx6vpbS0FAAQEhLicjwtLQ1jxozBvn378MADD+Dee+9tknqIiMhztNpRCA3NR17eshrhTpIk5OUtQ2hoPrTaUc1UIdUXg10LolunQ7GiGDG3xtQ+K+nWGBQriqFbp/NoHQ6HAzNnzkT//v3Ro0cPl3Njx47FpEmT0LVrV6Snp6NPnz546623PFoPERF5VkJCAtLSpsDffz1yc6fCYMjEuXM/wGDIRG7uVPj7r0da2hQuddIKcIxdC2GxWJCzNQeaHpq6ZyUlaJD9bTbmPDHHY93hU6dOxf79+/G///2vxrnExMQa3+/du9cjdRARUdNJSUlBbGwsdLpMZGcvh9nsgFotQqtNhFY7naGulWCwayFMJtP5iRJBqjrbqYJUMFvNMJlMHgl206ZNw/r167Ft2zZER0e7/fmJiKjlio+PR3x8PObMscBkMkGtVnNMXSvDW7EthFqthkqhgrnEXGc7c8n5WbLunpUkSRKmTZsGnU6HLVu2oGPHjrW227lzZ43v+SmOiMi7KJVKBAUFMdS1Qgx2LYRSqUTSoCQY9ca6ZyXpjUgenOz2f2xTp07Fxx9/jFWrViEgIAAGgwEGgwGVlZUu7dasWYPly5fj8OHDePbZZ/Hjjz9i2rRpbq2FiIiIGofBrgXRpmoRag1F3pa82mclbclDqDUU2lSt26+9ZMkSlJaWYvDgwYiKinJ+ffbZZy7tFixYgNWrV+Paa69FRkYGPv30UyQkJLi9HiIiImo4jrFrQRISEpD2RBrSX0tH7ke50CRozo+pKzHDqDci1BqKtCfSPHLr81K9hLW1eeyxx9x+fSIiIrpyDHYtjHNW0jodsr/NhtlqhlqhhnawFtpULcezERER0SUx2LVAzllJT8zhrCQiIiKqNwa7FkypVDLQERERUb1x8gQRERGRl2CwIyIiIvISDHZEREREXoLBjoiIiMhLMNgREREReQkGOyIiIiIvwWBH9SYIAtatW9fcZRAREdElMNi1YBaLBSUlJbBYLB6/1qJFi3DjjTciICAA4eHhSE1NxaFDhzx+XSIiInIfLlDcAun1emSu02Hn9hw4bGaIchX6DkhCqna0x7YU27p1K6ZOnYobb7wRNpsNTz31FJKSkqDX6+Hn5+eRawLnwysXYSYiInIP9ti1MFlZWZg3axJO/JyBCf1NSBstx4T+Jpz4OQNzZ07Exo0bPXLdTZs2Yfz48ejevTt69eqFlStXIi8vD7t27XJpV1BQgJSUFPj6+qJTp05Yu3aty/kTJ07g7rvvRlBQEEJCQjBq1CgcO3bMeX78+PFITU3F888/j7Zt2+Kaa67xyOshIiK6GjHYtSB6vR5L31yIET3K8fb0OIy6JRI3xQdj1C2ReHt6HEb0KMeSN9Jx4MABj9dSWloKAAgJCXE5npaWhjFjxmDfvn144IEHcO+99zrrsVqtSE5ORkBAALZv347vvvsO/v7+uP32211uJ3/99dc4dOgQNm/ejPXr13v8tRAREV0tWk2wq88YsKqqKkydOhWhoaHw9/fHmDFjcPr0aZc2eXl5GD58ONRqNcLDw/GPf/wDNputKV/KJWWu0yHarxiTR8RAEASXc4IgYPKIGET7FSNznc6jdTgcDsycORP9+/dHjx49XM6NHTsWkyZNQteuXZGeno4+ffrgrbfeAgB89tlncDgceP/999GzZ0/Ex8djxYoVyMvLw7fffut8Dj8/P7z//vvo3r07unfv7tHXQkREdDVpNcGuegzYzp07sXnzZlitViQlJaGiosLZZtasWfjvf/+LNWvWYOvWrTh16hRGjx7tPG+32zF8+HBYLBZ8//33+PDDD7Fy5Uo888wzzfGSXFgsFuzcnoPk6zU1Ql01QRCQfL0GO7Zle3RCxdSpU7F//36sXr26xrnExMQa31f32O3btw9HjhxBQEAA/P394e/vj5CQEFRVVeHo0aPOx/Ts2ZPj6oiIiDyg1Uye2LRpk8v3K1euRHh4OHbt2oWBAweitLQUH3zwAVatWoVbb70VALBixQrEx8dj586d6Nu3L3JycqDX6/HVV18hIiICvXv3Rnp6OubOnYvnnnuuWcOGyWSCw2ZGVKiqznaRISo4bGaYTCaP1Dtt2jSsX78e27ZtQ3R0dIMeW15ejhtuuAGffPJJjXNhYWHO/+/JyRhERERXs1bTY3exi8eA7dq1C1arFcOGDXO26datG2JiYrBjxw4AwI4dO9CzZ09EREQ42yQnJ8NoNOK3336r9TpmsxlGo9HlyxPUajVEuQoFxeY62xnOnp8lq1ar3Xp9SZIwbdo06HQ6bNmyBR07dqy13c6dO2t8Xz1T9/rrr0dubi7Cw8PRpUsXl6/AwEC31ktEREQ1tcpgV9sYMIPBAKVSiaCgIJe2ERERMBgMzjYXhrrq89XnarNo0SIEBgY6v9q3b+/mV3OeUqlE3wFJyN5thCRJtbaRJAnZu41IHJjs9t66qVOn4uOPP8aqVasQEBAAg8EAg8GAyspKl3Zr1qzB8uXLcfjwYTz77LP48ccfMW3aNADAAw88gDZt2mDUqFHYvn07/vjjD3z77bd4/PHHkZ+f79Z6iYiIqKZWGezqGgPmbvPnz0dpaanz68SJEx671qhULfIrQrFsfV6NcCdJEpatz0N+RShGpWrdfu0lS5agtLQUgwcPRlRUlPPrs88+c2m3YMECrF69Gtdeey0yMjLw6aefIiEhAcD5Xsdt27YhJiYGo0efX3Nv4sSJqKqqgkajcXvNRERE5KrVjLGrdqkxYJGRkc6dGi7stTt9+jQiIyOdbX788UeX56ueNVvd5mIqlQoqVd3j3twlISEBU2amYckb6dj7Ry6Sr9cgMkQFw1kzsncbkV8Riikz0zyySPGleglra/PYY49dsk1kZCQ+/PDDS55fuXJlg2sjIiKi+mk1wU6SJEyfPh06nQ7ffvttjTFgN9xwAxQKBb7++muMGTMGAHDo0CHk5eU5Z3ImJibi+eefR2FhIcLDwwEAmzdvhkajcfY6NbeUlBTExsYic50Oy7dl/7nzhBqJA7WYnqr12M4TRERE1Pq1mmA3depUrFq1CpmZmc4xYAAQGBgIX19fBAYGYuLEiZg9ezZCQkKg0Wgwffp0JCYmom/fvgCApKQkJCQk4MEHH8TLL78Mg8GAp59+GlOnTm2yXrn6iI+PR3x8PCxPzIHJZIJarebyIERERHRZrSbYLVmyBAAwePBgl+MrVqzA+PHjAQCLFy+GKIoYM2YMzGYzkpOT8c477zjbymQyrF+/HlOmTEFiYiL8/Pwwbtw4/Otf/2qql9EgSqWSgY6IiIjqTZDqM7iKnIxGIwIDA1FaWlpjQkBVVRX++OMPdOzYET4+Ps1UYevH95GIiOgvdWWPi7XKWbEtHbPyleH7R0RE1DgMdm6kUCgAnN9Fghqv+v2rfj+JiIioflrNGLvWQCaTISgoCIWFhQDOr+t2qX1fqSZJkmAymVBYWIigoCDIZLLmLomIiKhVYbBzs+r18KrDHTVcUFDQJdcVJCIioktjsHMzQRAQFRWF8PBwWK3W5i6n1VEoFOypIyIiaiQGOw+RyWQMKERERNSkOHmCiIiIyEsw2BERERF5CQY7IiIiIi/BYEdERETkJRjsiIiIiLwEgx0RERGRl2CwIyIiIvISDHZErYzFYkFJSQksFktzl0JERC0MFygmaiX0ej10ukzk5OyE2eyASiUiKakvRo9ORXx8fHOXR62cxWKByWSCWq2GUqls7nKIqJEESZKk5i6iNTEajQgMDERpaSk0Gk1zl0NXiaysLCxcuBTFxdHQaJKhUkXBbC6A0ZiN0NB8pKVNQUpKSnOXSX9qTSGJHxiIWr6GZA8GuwZisKOmptfrMWnSPJSXj0BMzGQIguA8J0kS8vKWwd9/PT744CX+h7iZtbaQxA8MRK1DQ7IHx9gRtXA6XSaKi6NrhDoAEAQBMTGTUVwcDZ0us5kqJOB8SJo0aR4yMk7AZJoAuTwNJtMEZGScwMSJc7Fx48bmLtGFXq/HwoVLUV4+AnFxbyMychSCg29CZOQoxMW9jfLyEUhPX4IDBw40d6lE1AAMdkQtmMViQU7OTmg0yTVCXTVBEKDRJCM7ewcnVDSTC0NS585vITT0DgQG9mnRIenCDwySJMFqtcLhcADgBwai1oyTJ4haMJPJ9Octvag626lUkTCbHTCZTC1+TJc30ukyUVAQBqVyMH74YRccDkAUgbCwYERFRSImZjJyc/dCp8tsEbdkqz8wKBT34ciRIygqOlejZn//gD8/MCzHnDkW/l4RtRLssSNqwdRqNVQqEWZzQZ3tzGYDVCoRarW6iSqjahaLBatXZ6GoqBtOnjTDbo+BIMTBbo9Bfn4V9u07gKKiohbVq2oymWAwnEVeXiXy86tqrbmwsNDlAwMRtQ4MdkQtmFKpRFJSXxiN2bjUPCdJkmA0ZiM5OZG9Ks1g9+7dOHbsNCSpK9TqHlAqw6FQBEGlioSfXw/YbBHIzT0GhyOg2ULSxWsfHjt2DAUFp2C12uDn1wMqVSQUiuAaNZeW/sEPDEStDG/FErVwWu0obNgwD3l5yy45KzY0NB9a7fRmrPLqlZ29GVarDEAlSkpKIEmAIABKpQI+Pj7w9Y1BRYURBsNudOnStCFJr9cjc50OO7fnwGEzQ5Sr0HdAEgynz0CpDIfDsRuS5ADggCDIcP6zvgBf3xiUl5fCYNDhvvv4gYGoNWGwI2rhEhISkJY2BenpS5Cbu/fPZSkiYTYbXJalaAljt642FosFa9fmwOHoCJttM0RxFERRBklyoKrKAoulDH5+ashkbXDu3EYMG3ZTk4WkrKwsLH1zIaL9ijGhvwZRoSoUFJuQ9eOHWLvVDJWvFhUV23H27NMAUiGKApTK8712Mpk/JCkbZvMeDB/+VJPUS0TuwWBH1AqkpKQgNjYWOl0msrOXw2x2QK0WodUmQqudzlDXTKpvw8pkd0OSciBJGQD+DlEUAKhgt1eivLwCcvmnkMsPICmpaUKSXq/H0jcXYkSPckweEefSy3vLtUFYt3UfCgt3QCaLALAdknQadvtAVFYqUFV1CnL5r1Aq89G2bTA6dOjQJDUTkXsw2BG1EvHx8YiPj8ecOa1nVwNv9/HHq1BVBUhSCCTpQTgcK+Fw7IEoJkMQ2kIQCmC3/xeCsB9duoTguuuua5K6MtfpEO1X7BLqysrLYDCcxvf7ClFuUkJyDIdDmAZ//5Ow2TbAYtFBkuyQpEIIQjkiIkYjIuJXjq8jamUY7IhaGaVSyUDXAmRmZiIjYwMkKQGStBWi+BYEoSscjnWw29+HTAaIohwKRXcIwh+4++6hTfJzs1gs2Lk9BxP6a5yh7nRhIXJzj8Ni8cH/DqihkHeHxXYb7HY7ysvbQaGYAkl6GJJUCcAHdvvTOHMmGw8/PIa/a0StDIMdEVED6fV6PP/8UthsbeDn9wBMplWQpA8hipMhk/WCzVYKQSiBv38YzOb3IIr5SEoa1iS1mUwmOGxmRIWqAJzvqcvNPQ67PRwqn/b4+feDCA0YAqvdhEpLEez2aNjtFshkARDFYEiSA1br9TAasxAYGNAkNROR+3C5EyKiBtLpMlFSEgNf30gIgi/8/KZAENbD4ZgKh+NLiOJBOBw7UF4+A4LwOWJjG3cb9uJlSupDrVZDlKtQUGwGABgMp2Gx+MDXtwOqrHZYbTIE+IYj1B+AdArAHwCMkKQSSNJZSFIuZDIfyOWh+PDD9S1qtwwiujz22BERNUD1rg2BgRMgCHqcPJkNtfptyGSxMJszYbEshyQ5IAg2yGSd0KZNNO67r3eDbmnq9XrodJnIydn5584jIpKS+mL06NTLTpRRKpXoOyAJ2T9nYES/MBQVnYNC0R5WmwNWmwNymR1m2xlUWWMAIQQyUQ27vQAOhxkymT9UqhAIghpKZSeUlES2mN0yiKh+GOyIiBrgwm3eoqLiUFQ0D1VVy+DjMxl+fvFQqy2QJBOs1ipYLG8iPPwPaLWj6v38WVlZWLhwKc6ciYKf393w9Y2FyXQGGRnZ2LBhLtLSpiAlJaXO5xiVqsW8rRvw3n+Pw99uwfYDxfjp6FlYbTIUl5Wi1LQZVvv1EMUOkMlCIQihAA4jMLAXBEEJk+l1hIUlIiAgnluKEbUyDHZERA1Qvc2byVSA4OBRiIubgtzcJTCZ9kIuT4YoRsLhMKCqai2Uyh/w9NOv1rvHS6/X46mnXoHBEAyr1YCiotUQRRFt2vRFZOQ0nDv3P6SnL0FsbGydz5mQkIApM9Pw7FOzkJurgFzsCj+fQRCEEJSb96PSsgnAJohitz8fYYEgiBAEOaqqlkGpzEdk5HTYbEbuQUzUyjDYERE1QPU2bxkZ2YiIGInw8BT4+sbCYMhEUdFyOBwOyGQi/P0L8be/jcDIkSPr/dwvvvgyDh0qgkzWDXL57RDFKNjtBTh5MhtFRfPQpcujKC6Ortft0Q4dOsBYGQaT9Q44bENRVimDA4Ag9IKvb19UVi6Gw3EIdvv9kCQ7FIoymEwroVTmIy5uCgIC4mEwZEKt5pZiRK0Jgx0RUQNdvM1bQEA8AgLi0bmzBTZbBU6e/BQazSY88sjkej/nvn37sG7d9xCEyVCr57gsKqxUjkRV1TIcObIUbdsmITt782Vvj7744ss4fjwEovggbPCHw+ELURThcBRDssVBoXgJVutcOBxpEEUBPj4dEBk5FJGR0xEQEO/cg1ir5ZZiRK0Jgx0RUQN5Ypu3NWs+h9XaDT4+E11CHQAIggAfn8kwmfairOwA/P3rvj26d+9erFu3HcA8aDS9YbFYUFFhgsMhgyCEwG4/BcACYCyA/0OPHi+iXbuxEMXzz8c9iIlaLwY7IqJGcOc2bxaLBVu37oFcPhCSVPvSJoIgQC5PxtmzryAmJrjO26Nr134Bq9UXvr7XAhCgVKogk8lQVWWGxVIJUQyGw3EGanUgACXKy7egsNCfexATeQEGOyKiRnLXNm8mkwlWKxAS0hHFxUVQqSIACDXaiWIEzOYSDB586V0s/gqJQXA4DM7jMpkcfn5y+PmpIUkSLJb2sNu3omvXWIwa1RFff809iIm8AYMdEdEVutJt3qpn2gYE2FBWVonKyjz4+sbANdxJqKz8FQpFJe66a/Qln+uvkHgtiouzoVSOvOjWrgBBECAIKths2zF8+C145pmnMW8e9yAm8gb13nnCarXiySefRJcuXXDTTTdh+fLlLudPnz4NmUzm9gKJiLxd9Uxbq3UbunTpALn8NCoq9sNsNsBqPQez2YDy8l8BrIdWOxC9evW65HP9FRIToFTmo6pqGSRJcmkjSRLM5g+gUBzEmDGjnTUEBQUx1BG1cvUOds8//zwyMjLw6KOPIikpCbNnz8Yjjzzi0ubiPx5ERJ7WmG23WiKtdhRCQ/NRVZWJa6/thuhoX8hkeZCkXIjicQQEfIlrrjFh3rwn63yev0KiHl26PAq5fD1MpqkwmzNhtf4AszkTJtNjkKQPodX2rzMkElHrI0j1TGNxcXFYvHgxRowYAQA4cuQIUlJScMstt2D58uUoLCxE27ZtYbfbPVpwczMajQgMDERpaSk0Gk1zl0N01bqSbbdaqo0bNyI9fQmKi6Oh0SRDqQxHZeUpVFR8hdDQk/XadQI4/95MmjQP5eUjEBx8C06f/hJFRTvgcDggiiIUChkiI8/h00/f8ch7ZbHwti6ROzUke9Q72KnVauj1esTGxjqPnTx5ErfeeituvPFGvPzyy2jfvj2DHRF5XPW2W9UBSKWKgtlc4DKbsz4BqCU6cODAnzNtdzgDa3JyIrTaUQ0KYReHRIUiFJWVx1FRsQ1t2hR45D3yxrBN1BJ4JNh16tQJy5Ytw9ChQ12Onzp1CkOGDEGHDh3w9ddfM9gRkUdd2BsVEzPZZWJA9fpr/v7r8cEHL7XqMOGOXi93hcT68OawTdTcPBLsJk2aBEmS8MEHH9Q4d/LkSQwePBi///47gx0RedTzzy9CRsYJdO781p/bd8kgin8NF5YkCbm5UzFuXAyeempeM1bacnj61mh12C4ruwNt206AXC53/ky8KWwTNZeGZI96L3eSlpaGgwcP1nquXbt22Lp1KzZv3tywSomIGsBisUCn24Ly8tH44YddcDgAUQTCwoIRFRUJf/8ACIIAjSYZ2dnLL7vt1tXiSpdjuZx3312Gw4d94XBch/z8vTV+JjExk5Gbu7dee9wS0ZWp96zYDh06IDk5+ZLn27Zti3HjxrmlKCKi2qxbtw6HDh3H2bOBsNtjIAhxsNtjkJ9fhX37DqCwsBAA/txB4fy2W+RZmZmZWLHiS5SX97vkz+SvsL2j1c9eJmrpuEAxEbUKer0er7+eAYcjEAqFr8vuDCpVBCor85CbewxqtS/MZgPUarHObbfoyun1ejz99GJUVgZCkrrDbveBIABKpT9UqlBYraecP5MLwzZ7UYk8p949dkREzendd5fh6BE/CI4bYKrIxLmzZ1FRUQ673QZAgK9vDCwWX5w6dX6v0+TkRAYID3vxxZeRmxsAhyMEknQOguAHSfJFVZUDZWXlEMVIWCy+KCg4DbPZAJWKYZvI0xjsiKjFy8zMxMcrvoBQ3gOx8v5QC8chd3wIe2UlyoxGWCxmAAJksjbIz1+O4OA8aLWjmrtsr7Z3716sW7cdgjASvr63QhC+AaCAKPpAJguAw6GCyWSCKIagsLAYRuOmKwrb3rIQNZGn8VYsEbVoer0eS59/Hhob0E4djWDFNfCTjUJuxZewSPsB+xCUl0XAV10Oq/W/kMu/wxNPPM9B+h62du0XsFp94et7LQQhAGbzPDgcyyCK55egkcl8YbfbYLEANts6BAYeh1b7eIOvw7XxiBqm0cHOYrGgsLAQDofD5XhMTMwVF0VEVC1Tp0NMSQkqfOWotJ8BAISr+sFXFgWDeRuKLCtQbrfDZlMhNDQSUVHRGDWKvXWeZLFYsHXrHsjlQXA4DFCpboaf3xRUVCyBw7EXgpAMIBKSlAeL5XP4++/G00+/2uAg5ro23gQoFG1gNB7Dhx9uw4YNc7k2HlEtGhzscnNzMWHCBHz//fcuxyVJgiAIXr+OHRE1HYvFgp05OZgQGIgYoQIZJ7cjQjkQgiAgQN4RAfKO6Ky24pS5FCdFNfz8PoNWm8SxdR5mMplgtQIhIdeiuDgbSuVIqFQpkMliYTZnwmJZDklyQBDsEIRjeOCBYRg5cmSDrqHX67Fw4VKUl49AZGR/GAxf4syZnc5t0YxGOebPfxmxsbHsuSO6QIOD3fjx4yGXy7F+/XpERUW5rPpOROROJpMJDrMZUSoV4qL8sKHoIPKq1iHGJ9X5t0cUFFCLGlSZv2z07T53uhr2SVWr1VCpRAQEJKCsLAdVVcvg4zMZcnk85PJ4qNUWOBwVqKhYCoXiCB599JEGX0Ony0RxcTQCA9vh11/nw2KJhlw+AaIYBbu9AGbzJhw6dBgvvvgyPvxwhQdeJVHr1OBgt3fvXuzatQvdunXzRD1ERE5qtRqiSoUCkwmjgoORFheM9NzPkWv6DRr5AKjEUJgdxThV9Q3kykN4+unFzdZ7o9frkanTYWdODhxmM0SVCn2TkpA6erTX9SgplUokJfVFRoYeXbo8iiNHlsJk2gu5PBmiGAmHwwCbbROA7dBq+6NXr14Nen6LxYKcnJ1QKG7DkSPvwmYbAbXadfs4pXIkystfhU63DLNn72vwNYi8VYNnxSYkJODMmTOeqIWIyIVSqUTfpCRkG42QJAkp4eH44Nq2GBd9BGrZUtikF+ErW4po/58xfsKdDb7d5y5ZWVmYN2kSTmRkYILJhDS5HBNMJpzIyMDciROxceNGt1ynJc0M1WpHITQ0H1VV+ejZ80VER8dAJlsOSVoImWw5/P1P45prwjBv3pMNfm6TyQSz2YGyMj0slmj4+EyucXdIEASoVBNhtXbD559/4a6XRdTq1Xuv2GpbtmzB008/jRdeeAE9e/aEQqFwOe/t+6dyr1iipqXX6zFv0iSMKC/H5JgY53/gLQ4HKmw2fHryJDZpNHjpgw8a3DPmjtumtdVncThgstvhK4r4MD8f6/39G1XfhddoiTNDN27ciPT0JX9ObkiGQhGKysrjqKjYhjZtCho9ucFisWDo0DHYu/ccZLJ/QKWqfTKM2WyA3f4Revfehq+//txrb30TeWSv2GrDhg0DAAwdOtTlOCdPEJEnJCQkYEpaGpakp2Nvbi6SNRpEqlQwmM3INhqRHxqKKWlpDQo47gxKmTodoouLMTkuDgfKy5FZUICdZ844B/nf3KYN/IxGZOp0jQphLXlmaEpKCmJjY6HTZSI7eznMZgc0GhFjxyZCq53Z6NCpVCoxaNB1+PnnL6BQRF6ilQSbrQihoR1htW7jjhZEf2pwj93WrVvrPD9o0KArKqilY48dUfM4cOAAMnU67MjOdo5hS0xOxiittkEBwjUoJUOlioLZXACjMRuhofkNCkoWiwVjb7sNE0wmKAQBS48cQbTFgmS5HFGiiAKHA9k2G34BYOvYEdt27WpQ+NDr9Zg0aR7Ky0cgOLjmzFC5XEB4+Bl8/PHbzT7GzN2TRvbu3YuBA8fAap0HjWYSqrePO09CZWUe5PLTaNfud4SEfIrNm9cw2JHX8miPnbcHNyJqmeLj4xEfHw/LnDmNDhAXLqERF+c6bisiYiTy8pYhPX1JvZfQqJ61W2m344NjxzDCZsNktRpWACZJQm+5HCOVSrxRUYElx45hz549uPnmm+td76VmhkpSJSors2C1/oyiogokJd2Dxx8f16y3ZpVKpVuDVe/evaHVDsR//rMe5eU3Q6EIhyiq4HCYYbMVQamsRJcuHVBaupLbxxFdoFELFJeUlOCDDz7AgQMHAADdu3fHhAkTEBgY6NbiiIgudiUBojooxcVNhiRJsNlskMlkEEURgiAgJmYycnP3QqfLrFdAqp61m3XiBKItFvRXKvGiyYSdFgsckgRRENBXqUR/QUC83Y6vcnLqHewuNTPUYtkIk+kDSFI0RPEF2O12nDmjx7Jluc1+a9bd5s79B/btmwGD4UtYLLdBkgTIZEBkZAgiIzvg7NnVCA3Nh1Y7vblLJWoxGjwr9ueff0bnzp2xePFinD17FmfPnsXrr7+Ozp07Y/fu3Z6okYjoiv0VlAbiyJEj2LnzZ/zwwx7s3PkzcnNzUV5eBkEQoNEkIzt7R71mniqVSvS59Vb8fO4cQiUJ88vKcKKqChMkCWkAJkgS8qqq8K/KSrT39cWPX31V7xmtF84MNZujoFSOhc32CyoqlkKSRkAU34YopkImuxNAMhSKJ1FePgLp6UucH7pbu4SEBCxaNBudOv2IsLCV6NjxBLp1syMg4DcUFMyDv/96pKVN8brlZIiuRIN77GbNmoWRI0di2bJlkMvPP9xms2HSpEmYOXMmtm3b5vYiiYiulMlkgsFwFgUFlXA4qiCXx0AUVbDbzcjPL0Jh4QHExcVCpYqE2eyo92D825KT8f7LL+Obqio8KAj4+5+9fwAgARhms+E9QcC6qioIJSX1fl61Wg2rtQwFBRvhcLSDxfIQHI7fIUk9IJPde8FtZAcEIQTFxWfRt+9EHD1a/x7H1sB1gkYGzGYH1GoRWm0itNrpXvM6idylwcHu559/dgl1ACCXy/Hkk0+iT58+bi2OiMhdjh07hoKCU7BabQgI6AFA+jMcCVCpIlBZmYfc3GNo1+4PhISIUKvV9Xre66+/HjJ/f0RXVuJeAGZJggjAIUmwSBLsMhmmqNXYXVWF3UZjvZ/3q6++wunTpbBau0Em+xskKRYOx1wA/WG3HwQQC1EMgyRZoFCoIUln4XA4/uxxXI45cyxeM+6senzlnDnev6sH0ZVq8K1YjUaDvLy8GsdPnDiBgIAAtxRFRORuGzZshEwWArv9B5w7dw7nzpXi3LkSVFSUw263w9c3BmazDwwGXYMH4weq1bhZoYDM1xeVgoAKSUKlIEDm44MAjQYqlQo3AqjvM1ZP8vD1/RsE4RE4HDdBFBMgCMEAboYkRcBuPwab7QxE0Q6FQoIoAjKZzKXH0dsolUoEBQUx1BHVocE9dvfccw8mTpyIV199Ff369QMAfPfdd/jHP/6B++67z+0FEhFdKYvFgtWrs2A2D4LdvhfApxDFSZAkCVVVFlgsZVCrfSFJ2TCb92D48Kfq/dwmkwmhAQEIUqlQDCAmKAgSzu+MIOD87di8ykr4K5UI1WjqdSv23Xffw+HDRZCkbZDLN8BqBazWfgBMAE4B6ANJOgdBMECt7gqbLR9hYSEQRRFmswFqdf17HInIuzQ42L366qsQBAEPPfQQbDYbAEChUGDKlCl48cUX3V4gEdGV2r17N44dOw1BGICAgFv/nIDwGwQhGYIQAbs9D2Vlm+DjcxRt2wajQ4cO9X5utVoNv+BgiFVVOH3mDIwmE8LkcqhEEWaHA0U2GyqVSsjatIFfUNBlA1dmZiZWrMiCxXIzfHzugq9vGOz23+FwfAvgJIAvANwBUQyDKObDbi+AUlmJqKhYSJIEozEbWi2X/yC6WjU42CmVSrz55ptYtGgRjh49CgDo3LkzPx0SUYuVnb0ZdrscSqUEpXIYBCEUFstmWK3LIUkOyGQigI7w8xuMiIi9Dfp7Vr2f7Q8ZGdBeey0KDQbkFRUBDgcgkyEkMhIdIiOxsqAAicnJdQYuvV6P559/FzbbGPj6/gNKZQgAQBRvQHn5HbDZXgGwFqL4DoD74HBUQiY7jbi4jvDz80de3jIu/0F0lWvUOnbA+U+pPXv2dGctRERuZ7FYsGXLz/D374KSkpdQUbEC52eSilAoboRSeRsUiutgNhejvPxRDBt2U4N7u0ZptZi3YQNWnz2LyV26oFPnzrDb7ZDJZBAEAcvy8pAfGorpWm2dz6PTZaK0tAN8fFLhcPy1LIpSqUJgoAyVlf9EZeUuSNJyAD9AoeiJjh37wuHYgdzcv3bO4ExRoqtXvYLd6NGjsXLlSmg0GowePbrOtl988YVbCiMicgeTyYTTpwtQUSGH3R4OYARE8VpIkgFmczYsluehVj8Km+0QZLIDSEqq//i6au7Yz7Z6nT2NZgIEIQT5+UVQqSJQvZWWTCaHv78/FIrH4HC8AaXyDwQEHIJKtRMqFZf/IKLz6hXsAgMDnWsmcXcJImpNjh8/jlOnSiBJkxEQ8BBMpuNwOHwhCDdDEAbA4fgA5eVPQqVSIjY2BNddd12jrlO93lqmTofl1fvZqtVI1GoxvR772VYvSKxSRcHPLxKFhQdQWZkHX98YXLhPqihGwmIxoVu3UCxb9iI6dOjg8eU/3L0PLBF5Tr2C3YoVK2r9/63Z22+/jVdeeQUGgwG9evXCW2+9hZtuuqm5yyIiN1u/PgtK5XWw25OhUoVDJlPDbD4NiyUPkgSI4kAIws9QKg/hvvtSryi4XMl+tmq1GiqVCJOpAMHBNyEuLha5ucdQUWGEXB7m3Ce1qupHKJXFePrpp9GrV69G11ofer0eOl0mcnJ2/hk6RSQl9W3WPWmJqG4NXseusrLSZX2k48eP44033kBOTo5bC/Okzz77DLNnz8azzz6L3bt3o1evXkhOTkZhYWFzl0ZEblR9ezMyUguVqgqVlXmQy/3h59cFwcF9EBx8HYKD+0AmGwaHowzDh7tnj9XGrLemVCqRlNQXRmM2JElCeHg4evWKR3S0L2SyPEhSLkTxOAICvsOECaMwcuRIt9R6KVlZWZg0aR4yMk7AZJoAuTwNJtMEZGScwMSJc7Fx40aPXp+IGqfBwW7UqFHIyMgAAJSUlOCmm27Ca6+9hlGjRmHJkiVuL9ATXn/9dUyePBkPP/wwEhISsHTpUqjVaixfvry5SyMiN6q+vRkU1AlxcbGQy0+jomI/zGYDrNZSWCzFMJn0UChkaNu2bYOWOfEErXYUQkPzkZe3DJIkwd8/AHFxXdC3bx/cdFNvtGu3B3FxlXjkkckeraN6geTy8hHo3HkxQkMHITCwNyIjRyEu7m2P7ElrsVhQUlJS7710iah2DZ4Vu3v3bixevBgAsHbtWkRGRmLPnj34/PPP8cwzz2DKlCluL9KdLBYLdu3ahfnz5zuPiaKIYcOGYceOHTXam81mmM1m5/dGo7FJ6iSiK3fh7c3IyJugVvuioOA0ioryqlcjQWRkCBQKNUJCQpp92aaEhASkpU1BevoS5ObuhUaT/OdOEgYYjU0361Wny8SpU2qoVGfwww93w+FwQBRFtGnTF1FRqYiJmYzcXPfsScvbvUTu1eBgZzKZnFuH5eTkYPTo0RBFEX379sXx48fdXqC7nTlzBna7HRERES7HIyIicPDgwRrtFy1ahAULFjRVeUTkRtW3NzMyshERMfLPHrAAdO7scFmOJDf39QZvI+YprpveL2/yTe/P79KRiTNn5ABCIJdPgChGwW4vwMmT2Sgqmou4uClu2ZM2KysLCxcuRXFxNPz9H4RCEYzy8nPIyNiCDRvmIi1tClJS3HN7nOhq0eBg16VLF6xbtw5arRbZ2dmYNWsWAKCwsBAajcbtBTa3+fPnY/bs2c7vjUYj2rdv34wVEVFDaLWjsGHDPOTlLUNMzGQIggBRFCGKIiRJapGL+jbnpvfnd+k4C0maAj+/mc4VEQBAqRyJqqplyM1dgtjY+5170jamturbvWfOXA9BUOLYsY8u6Bm8GWfORCA9fQliY2PZc0fUAA0Ods888wzuv/9+zJo1C0OHDkViYiKA8713jV0moCm1adMGMpkMp0+fdjl++vRpREZG1mivUqmgUqmaqjwicrOWcnuzMZRKZZP3ImZlbYLN1g1K5T0uoQ44v/+tj89kmEx7UViYhc6dG78nrU6XiePH7TCZdsNqja7RM6hQ5MNksrvldi/R1aTBkyfuuusu5OXl4eeff8amTZucx4cOHeoce9eSKZVK3HDDDfj666+dxxwOB77++mtnSCUi75KSkoIPPngJ48bFQK1eDpttIdTq5Rg3LgYffPASb/fhfA/agn8twL/fWgm7ow/Ky/NRUVEOu93m0k4QBMjlSTh79mcMHXpjo4KnxWKBTrcZpaWlsNtHQK1+GyrVKCgUN0GlGgW1+m3Y7SNQUlIKnS6HEyqIGqBRW4pFRkbW6N1qTWvAzZ49G+PGjUOfPn1w00034Y033kBFRQUefvjh5i6NiDykOW9vtnRZWVlY+PpCFKIQNh8BSt8IVBYXo6LyV1SZYxHgHwKlsvrOhQSrFZDJbEhOvq1R1zu/G4gBdntfqNWTL9kzWFa2AwbDD42+3Ut0NWpwsKuoqMCLL76Ir7/+GoWFhXA4HC7nf//9d7cV5yn33HMPioqK8Mwzz8BgMKB3797YtGlTjQkVROR9muP2Zkum1+ux8PWFKI8tR9eBXXHmuV9RVaKDoDYANjPsNh+UGgfD1ycVcnkkbLYKCEIuYmMjGj38Ri6Xo6zM8ufi0EKtbc6PhRyEsrLtkMsbva050VWnwf9aJk2ahK1bt+LBBx9EVFTUJf9RtnTTpk3DtGnTmrsMIqJmpVunQ7GiGHG3xqFwbyHMtmJYQv8HWef2kPko4TCWQDq2HKai9yBa20DlEw4lHBg6dFCjA7LNZkNAQCDOnFECkHDhlml/keBwKBAQEAibzVbLeSKqTYOD3caNG7Fhwwb079/fE/UQEZGbXG6PV4vFgpytOdD00KD8ZDmO5ByBeJ0AWZgESbJCEEQgqBjobAGOShCOnIU9xoaqs6X49ic7Nm7c2KjxiWq1GhERITh37mSt++ECEior8yCTnUJkZPOvL0jUmjQ42AUHByMkJMQTtRARkRvo9Xpk6nTYmZMDh9kMUaVC36QkpI4e7TLD1GQywWw1QxWkQsHPBbD4WeB3ix+UZVaUnTwJm9UOBIiAnxIIssNxrgoKu4Sef09A1f4qpL+W3qjlSJRKJbTaW7Fkya+oqBhYYz9cm60ICoUJGs2v0GqH8tY5UQM0eFZseno6nnnmGZf9YomIqGXIysrCvEmTcCIjAxNMJqTJ5ZhgMuFERgbmTpzosserWq2GSqFCZXElzhw+A3mcHPYqO6wmKyS7BVBaAV8LIFUAQhWU3WRQVcgRFhqGmFtjUKwohm6drlF1arWjEBNTgvDwH9CunY9zP1yZLA/t2vkgPPwHxMSUQKsd5a63huiqIEiSJDXkAddddx2OHj0KSZIQGxsLhULhcn737t1uLbClMRqNCAwMRGlpqVcuyExEDXe5W55NRa/XY96kSRhRXo7JMTEuY6AlScKyvDys9/fHSx984Oxle/6F57FiywoUFxXDeoMVFqUFdpkdjioHEAQIagGSVYIIEeoSNeQ75Lh5+s1Q+Clg+NkA9X41Nv93c6Ne98aNG5GevgTFxdEICLgNcnk4bLZClJVtdq4vyKVoiBqWPRp8KzY1NbWxdREReZX63vJsKpk6HaKLizE5Ls4Z6hyOv7ZPmxwTg725ucjU6Zz1aVO1+O9X/8XJsydhOWWB0F2ATCODdFIClIAkkyCIAgSHgMriSvhL/pCpZAAAVZAKZqu50cuRuG6fthJmswN+fiJGj26a7dOIvFGDe+yuduyxIyLg/C3PpQsXol1xMYb5+aGdry9OWyzINhqRHxqKKWlpTdrbZLFYMPa22zDBZMKoyEiUlZXBYDDgXFER4HAAoojgsDDsUijwaUgI1mz+q5dt48aNuPdv98IYZoTs7vP759oKbEAAIPgLzj11bTobQkNC0XdiXwC44h67i+tvCb2eRC2RR3vsAKCkpARr167F0aNH8Y9//AMhISHYvXs3IiIi0K5du0YVTUTUWuj1eix+6ikMNBiQZLFAKCwERBEJYWEYEhWF1WfPYkl64yYWNJbJZILDbEaUSoXThYU4npsLX4sFMXI5VKKIKpsNRfn5MIkiii0WFBQUICoqCkqlEkOHDkX72PY4fOYwHD87IPWWICpESJUS5IFyQAAcPzsglouwdrfC4XBAEAQY9UZoB2vdEsS4viCRezQ42P3yyy8YNmwYAgMDcezYMUyePBkhISH44osvkJeXh4yMDE/USUTUYrz84otQHzqEUaKIcIUCKlGE2W5HUX4+DhYWYlSXLthbXOxyy9PT1Go1RJUKvxcXA6dOIcJmQ1uVCmazGVaLBT6ShFAARQ4HDh05hhEjHkZISACSkvpi2LBb4R/oj7iEOJz65RQsJRaIsSIqKythP2kHDIBYJsLnJh8IwQJsNhsKthcg1BoKbaq2SV4fEdVPg2fFzp49G+PHj0dubi58fHycx++44w5s27bNrcUREbU0e/fuxfZ16zACQE9/f0SqVAhWKBCpUqGHnx8ibDYcP3IEA5VK7MjObrJ9TpVKJfomJUFnMMDHbEaEKKK8rAyOqir4ShIqJQlHbAK+cahQ4eiHwsKHYTJNQEbGCcyYkY6Kkgqow9Xo9WAvtI9pD+UBJXx+9YH4nQiZQQafrj6QFBJsv9tw7NNj8D/mj7Qn0jgOjqiFaXCP3U8//YR33323xvF27drBYDC4pSgiopbqi7Vr4Wu14lpf3xr7JQgAYnx9YayogNxohMPPr0n3Ob1jxAiseOklZNlsaGc2wxeAr0yGcknCUZuI/yIAvyMc7YV7kF/cBupu/RARMRJ5ectQWrIUZT8WIWJKBOJGxaGzrTPsZjtMZ0wo3FuIokNFMP1kQqQmEuMeGgdtqpahjqgFanCwU6lUMBqNNY4fPnwYYWFhbimKiKglslgs2LN1K4Lkchgu2ie7mgAgTC7HprNngZiYJts1Qa/X4/M1a1Bms+E9qxXfSRLuEEVcY7fjkCQhEz74HeEIlj8AhRCLU3Y7CgoKoNEEIiZmMsrKfoD91NfI25KHmFtjIMpFiHIRgX6B0MRoIN8sh/p3NZb9exl69erVJK+JiBquwcFu5MiR+Ne//oX//Oc/AM5v1JyXl4e5c+dizJgxbi+QiKilMJlMgNWKa0NCkF1cjJFKZa37ZSsFAdttNlw/ZEiT9NZlZmZi6fPPo31JCWaLIpQAfgTwlsMBG4AKyCAKfdFJfi8ChA447XBAIYgoPVMMR5wDoiiiTZuRqKo6DPXvVuSezIUmQXN+OZMSM4x6I0KtoUibl8ZQR9TCNXiM3WuvvYby8nKEh4ejsrISgwYNQpcuXRAQEIDnn3/eEzUSEbUI1RMUEgICkK9UYllVFS5eMUqSJHxgNuOgQoHRHv6wq9frMWPmDEyY/CAO/rEfByuKcdJHhUgAK+Ry7JHLMUkQIAPgJ/WBwxaFEqsFJ+12+MrlgCTBbrcDAFSqSPj5BeHNRW9i3MBxUO9Xw/aNDer9aowbOA4fvPUBFwsmagUa3GMXGBiIzZs343//+x9++eUXlJeX4/rrr8ewYcM8UR8RUYtRPUFBn5GBR7t0wdIjR7DXZEKyXI5IUYTB4cAmmw3bJQn9tVqP9m5lZWVh4esLkWs8DFlvC9qFqlFZYceGoxZsrpRQXmnHAzIZJkoSvoWEvfgRsRiAPAkogwTRaoWoVEAmO7/YsNlsgFot4rrrrsPNN9+MOU/M4bpyRK1Qo9axA4BbbrkFt9xyiztrISJq8UZptZi3YQPyy8vxYs+e+PL0aSwvKoLD4YAok0Hm44OwyEg8OW+ex2rQ6/VY+PpClHUog+jrQIzDB8Gq89s7RnRS4vBPVry+1wZ/kw19ASTDgV3YC71kgUVQIl4mQ4ndgdNWG0ymCvj5+cNozIZWm+gMcVxXjqh1alSw++mnn/DNN9+gsLAQjosGEL/++utuKYyIqCVKSEjAlLQ0LElPx16DAckaDW4JCcHxykpsq6hAQZs2eDLNs8uA6NbpUKwoRuzAWBT+mA8f8a9RNYIgoNN1AfjNcA5f/Q50FASoJQkiymHGJnSTaaGQAKVMhipBQMGpAihV3yI0NB9a7XSP1UxETaPBwe6FF17A008/jWuuuQYREREuA4drG0RMRORtqvc4zdTpsDw7+/w+sRoNEseOxUytZ5cBsVgsyNmaA00PDeRyOQRRRNWf4+SqyeUK+MeI2HfKgY5m4HdRRCwcMCMTx+2/Qy32R4BPWygdxcg/sRg9rgXS0qZy+RIiL9DgYPfmm29i+fLlGD9+vAfKISJqHeLj4xEfHw/LnKYdi2YymWC2mqEKUkH8c//Xovx8RKpUzjaSJEHlK8CuEGEWVMgxm3G9QoGBPmb8qPgFO61HYBeUCHCYIdcAb775H9x8880er52IPK/BwU4URfTv398TtRARtTpNPRZNrVZDpVDBVGICAERERuLg6UIcr6xEB19fAOfvnliqgECHgC9lMhRpNHi+e3f0CAzEPaIIi8MBk92Or4qK8JG/P6677romq5+IPKvBy53MmjULb7/9tidqISKiy1AqlUgalASj3ghJkhAQEIAOXeNQKJPj14oKGMxmnLNaUJwPGKskbJLL8VjXrrg2OBjin2PxlKKIQLkcW8rLkZiczEkSRF6kwT12c+bMwfDhw9G5c2ckJCRAoVC4nP/iiy/cVhwREdWkTdViw5YNzl0iwsPDofZVw2AoQF5hISr3V0Es8UFVWABuCAjA7RftCiRJEpbl5SE/NBTTtdpmehVE5AkNDnaPP/44vvnmGwwZMgShoaGcMEFE1MQSEhKQ9kQa0l9LR+5Hf+0S4V8aAMcRCR0QiKfffxoKhQJL0tMxNTcXyRoNIlUqGMxmZBuNyA8NxRQPz94loqYnSBcvm34ZAQEBWL16NYYPH+6pmlo0o9GIwMBAlJaWQqPRNHc5RHQVO3DgAHTrdMj+Nvv8hAqFCsmDk6FN/Wtm7oEDB5Cp02FH9exdlQqJyckY5eHZu0TkPg3JHg0Odh06dEB2dja6det2RUW2Vgx2RNTSWCyWy87MrU8bImqZGpI9Gjx54rnnnsOzzz57fjNsIiJqdkqlEkFBQXUGtvq0IaLWr8Fj7P7973/j6NGjiIiIQGxsbI3JE7t373ZbcURERERUfw0OdqmpqR4og4iIiIiuVIPH2F3tOMaOiIiImpJHx9gRERERUctUr1uxISEhOHz4MNq0aYPg4OA61647e/as24ojIiIiovqrV7BbvHgxAgICAABvvPGGJ+shIiIiokbiGLsG4hg7IiIiakoNyR4NnhVbWlqKzZs349ixYxAEAZ06dcLQoUMZcoiIiIiaWYOC3ccff4xp06bBaDS6HA8MDMTSpUtxzz33uLU4IiIiIqq/es+K3b17Nx5++GGkpqZiz549qKyshMlkws8//4w777wTDz74IPbt2+fJWomIiIioDvUeY/fwww+jvLwca9asqfX8XXfdBY1Gg+XLl7u1wJaGY+yIqKWp3gdWLpfDZrNxP1giL+ORMXbfffcd3nnnnUuef/TRR/HYY4/Vv0oiIroier0emTodNut0MJw+DUtZGQIDAhASGYlbU1OROno04uPjm7tMImpC9Q52p06dQteuXS95vmvXrjh58qRbiiIiorplZWVh6cKFsB8/DktpKfra7RgoilCeOYOT587h14IC7NiwAVPS0pCSktLc5RJRE6l3sDOZTPDx8bnkeZVKhaqqKrcURUREl6bX67F04UJcf+YMdptMeEgUMVmthiAIkADkVVZiYEUFfiguxpL0dMTGxrLnjugq0aBZsdnZ2QgMDKz1XElJiTvqISKiy8jU6RBdXAylICDaanWGOgAQAMT4+sJYUYEUAAeLi5Gp0zHYEV0l6j15QhQvP4FWEATY7fYrLqol4+QJImpOFosFY2+7DQ+Wl+OjY8cwwW7HKJWqRjuD2Yw8mQwnO3bESj8/rNm8mRMqiFopj0yecDgcV1wYERFdGZPJBIfZjGCFAg6HA1GX+NCtEkXA4UC4XA6H2QyTyXRFwa565i1n3BK1bA3eeYKIiJqPWq2GqFLhXHk5RFFEwSXukpgdDkAmQ6HNBtHPD2q1ulHXq555uzMnBw6zGaJKhb5JSZxxS9RC1XuBYiIi8gyLxYKSkhJYLJbLtlUqleiblIQt5eW4uU0bZNtsuHhEjQSgyGZDcJs22FxWhsTk5Eb1smVlZWHepEk4kZGBCSYT0uRyTDCZcCIjA3MnTsTGjRsb/JxE5FnssSMiaiZ6vR46XSZycnbCbHZApRKRlNQXo0en1tkbNkqrxbwNGxB+5gzyFQosq6rCZB8fl1mxJoUC3wDIDw3FdK22UbUtXbgQI8rLMTkuzjk5AwBGRkRgWV4eZ9wStUDssSMiagZZWVmYNGkeMjJOoKJiPID5qKgYj4yME5g4cW6dvWEJCQmYkpaG3W3awO7nhwyHAxPKyrCyvByrjEb8x+HA235++Co0FFPS0hoVvKpn3k6OiYEkSbBarc6x1oIgYHJMDKL/nHFLRC1HvWfF0nmcFUtEV0qv12PSpHk4c2YYBOF2nDlTAocDEEWgTZsgAJsQGvoVPvjgpTpD2YEDB5Cp0yFHp4PBYHDZeWKoVotRWm2jQl15eTnuTk7G/efO4WaHA+eKilBdYHBYGCKjohDg749MgwHL1WrOuCXyMI/Miv3xxx9xww03QCaT1XrebDYjMzMTd999d8OqJSK6yuh0mcjLC0JFxc2wWs2Qy2MgiirY7WacPFkEheJmVFT8DJ0us85gFh8fj/j4eMyeM8cte8Xu27cPn69Zg5++/hqH9+7FW1YrfhJFjFGp0FOhQJnNhhMnTqDw9GnEde2KSJXKLTNuich96t1jJ5PJUFBQgPDwcACARqPB3r170alTJwDA6dOn0bZtW65jR0RUB4vFgn79huPgwSSI4t3w9Y3B+WWFq0morMyDw/EfxMfn4LvvNng8NOn1erz84ov4ft06dLNa0V8QoK6shEoQsEcUcQRAO7kc5xwOOCQJFklCZ4UCnaOjsa1tW/bYEXmYR3rsasy6qiUP8q4uEVHdTCYTTp8+C7u9Hfz8/gp1kmSBJJkgCGr4+sbAaGwLg+Gsx3vDsrKy8MpTT6Ho0CFMFgRM9PGBsbISxwCoJQkpDgfekST8127HozIZbhIEnBIEfGk2Y9mxY0js14+hjqgFceus2AtnTRERUU1yuRxlZaUQRQsAATabHmaLDhYhB5JohuBQQSklARBQVlYKudxzixdUz3wNNhjQTSbDHLUaEAQIFRXoKZNhv92O3yUJfwdQAqBcknCTTAYJQHe7HUvsduzbuxcHDhzgzFiiFoLLnRARNSGbzYaAACXOnNmGqqowmPA8pMhiCDEawFcFqdKEyrwMSAXn4Cf3gc1m81gtmTodos6cgcFqxe1yOQRBgEOSAElCgCgi0OGAWZIQDOBWACsdDtxvt6MUQLkoIlWlQoXJxL1oiVqQBgU7vV4Pg8EA4Pxt14MHD6K8vBwAcObMGfdXR0TkZdRqNSIiIlFcvBfl0lYIPfwgdr1gnTgJcLStAnIrUPW7GcePH0dQUJDb67BYLNiZk4O7/fywuqjIuTWZIAiAIMAuSbAAiARgAxAEwAQgVxDQQaWCvyCgSKnE7YGBWJmdDcucObwlS9QCNCjYDR061GUc3YgRIwCc/0MgSRJvxRIRXYZSqYRWexsO566AOew0pE6hkKTTgKSCBDMkRxFEsQqyeD/4OiRsyNqAXr16ub2O6j1nY319XbYmEwAolEpUVlYCANQAZIKAclFEgCCgf3AwVIKA/RUVCAkLg+Tjw5mxRC1IvYPdH3/84ck6iIiuGsOHp+ClN1+FolMg5Go1LJYTzg/HKt9gQFJBqSxFZJ8wZH+bjTlPuL83rHrP2TMmE/q2aYPskycxUqmEIAjwUalgMZvhsNlQBcBPkpADoJ9KBZUgIK+yEpVKJWKjovBbeTlEtbrRe9ESkXvVO9h16NDBk3UQEV01YmNj0TY6DKc0RXBAAV/faIiiAg6HFXb7GSiVVYjr2gEKowLmg57pDaveczY7IwNTIyMxv6jIuTWZXC6Hn78//IxGnHI4sFMQcBzAfX/21FUqlYiNi4O/nx+yT51ColbL3jqiFqLewS4vL69e7WJiYhpdDBHR1UCtViMiLAKKcAWskTYUFeXD4ZAglwuIigpGVGRH+Af4w5BngFrhud6w6j1nvzt3Do926YKlR45gr8mEZLkcEaKIn+VyrLdYUABgvEoFH6USvmFhiI2Kgr+fH5bl5TV6L1oi8ox6B7vY2Nhax9BdOLZOEASPzuAiIvIGSqUSSYOSkLE9A3G3xKFzZwl2ux0ymQzin5MYJEmCUW+EdrDnesOq95xdkp6O6OJiJLVtiwNlZXjl7FmUmM2oVKnQacAABBUV4aDJhNjAQEg+PvitvBzZp04h/wr2oiUiz6h3sNuzZ0+txyVJwurVq/Hvf/8b/v7+biuMiMibaVO12LBlA/K25CHm1hgoFArnOUmSkLclD6HWUGhTPdsblpKSgtjYWGTqdNicnQ2Hvz+CY2IwdPBgjL7rLvTq1cu5J+3K7Gw4zGaIajUStVpMb+RetETkOfXeUqw2X331FebNm4fDhw9j9uzZeOKJJxAQEODO+locbilGRO6yceNGpL+WjmJFMTQJGqiCVDCXmGHUGxFqDUXaE2lISUlpsnosFgtMJtMl95q93Hki8gyPbCl2od27d2Pu3LnYvn07Jk2ahKysLOceskREVD/VvWW6dTpkf5sNs9UMtUIN7WAttKlN3xumVCrrDGyXO09Eza9Bwe7o0aN46qmn8Pnnn+Puu++GXq9Hp06dPFUbEZHXi4+PR3x8POY8MYe9YUR0xcT6NnzssceQkJCA0tJS/Pzzz1i1ahVDHRGRmyiVSgQFBTHUEdEVqfcYO1EU4ePjg27dutXZbvfu3W4prKXiGDsiIiJqSh4ZY/fss89ecWFERERE5DlXNCv2asQeOyIiImpKHp8Ve6GtW7eioqICiYmJCA4OvtKnIyIiIqJGqnewe+mll1BeXo709HQA5xfQTElJQU5ODgAgPDwcX3/9Nbp37+6ZSomIiIioTvWeFfvZZ5+hR48ezu/Xrl2Lbdu2Yfv27Thz5gz69OmDBQsWeKRIIiIiIrq8ege7P/74A9dee63z+6ysLNx1113o378/QkJC8PTTT2PHjh0eKZKIiIiILq/ewc5ms0GlUjm/37FjB/r16+f8vm3btjhz5ox7q/vTsWPHMHHiRHTs2BG+vr7o3Lkznn32WVgsFpd2v/zyCwYMGAAfHx+0b98eL7/8co3nWrNmDbp16wYfHx/07NkTWVlZHqmZiIiIqKnVO9h17twZ27ZtAwDk5eXh8OHDGDhwoPN8fn4+QkND3V8hgIMHD8LhcODdd9/Fb7/9hsWLF2Pp0qV46qmnnG2MRiOSkpLQoUMH7Nq1C6+88gqee+45vPfee84233//Pe677z5MnDgRe/bsQWpqKlJTU7F//36P1E1ERETUlOq93MmyZcswa9Ys3HPPPdi5cyeCgoLw3XffOc8vXLgQP/zwA/773/96rNgLvfLKK1iyZAl+//13AMCSJUvwz3/+EwaDwbly+7x587Bu3TocPHgQAHDPPfegoqIC69evdz5P37590bt3byxdurRe1+VyJ0RERNSUGpI96t1jN3nyZPz73//G2bNnMXDgQHz++ecu50+dOoUJEyY0ruJGKC0tRUhIiPP7HTt2YODAgS7b8SQnJ+PQoUM4d+6cs82wYcNcnic5ObnOsYFmsxlGo9Hli4ioNbBYLCgpKakxbIWIvFeD1rGbMGHCJcPbO++845aC6uPIkSN466238OqrrzqPGQwGdOzY0aVdRESE81xwcDAMBoPz2IVtDAbDJa+1aNEizvYlolZFr9cjU6fDzpwcOMxmiCoV+iYlIXX0aMTHxzd3eUTkQfXusavN8OHDUVBQ0OjHz5s3D4Ig1PlVfRu12smTJ3H77bdj7NixmDx58pWUXy/z589HaWmp8+vEiRMevyYRUWNlZWVh3qRJOJGRgQkmE9LkckwwmXAiIwNzJ07Exo0bm7tEIvKgK9p5Ytu2baisrGz045944gmMHz++zjadOnVy/v9Tp05hyJAh6Nevn8ukCACIjIzE6dOnXY5Vfx8ZGVlnm+rztVGpVC6zgYmIWiq9Xo+lCxdiRHk5JsfFQRAE57mRERFYlpeHJenpiI2NZc8dkZe64i3FrkRYWBjCwsLq1fbkyZMYMmQIbrjhBqxYsQKi6NrZmJiYiH/+85+wWq1QKBQAgM2bN+Oaa65xbnWWmJiIr7/+GjNnznQ+bvPmzUhMTHTPCyIiakaZOh2ii4trhDoAEAQBk2NisDc3F5k6HYMdkZe6oluxHTp0cIYoTzp58iQGDx6MmJgYvPrqqygqKoLBYHAZG3f//fdDqVRi4sSJ+O233/DZZ5/hzTffxOzZs51tZsyYgU2bNuG1117DwYMH8dxzz+Hnn3/GtGnTPP4aiIg8yWKxYGdODpI1mhqhrpogCEjWaLAjO5sTKoi8VIN77PLy8tC+fXsIguCy/pskSThx4gRiYmLcWiBwvlftyJEjOHLkCKKjo13OVa/WEhgYiJycHEydOhU33HAD2rRpg2eeeQZ///vfnW379euHVatW4emnn8ZTTz2FuLg4rFu3zmWrNCKi1shkMsFhNiPqMkNHIlUqOMxmmEwml1UEiMg71Hsdu2oymQwFBQUIDw93OV5cXIzw8HDY7Xa3FtjScB07ImqJLBYLxt52GyaYTBhVx7jhTIMBy9VqrNm8mcGOqJXwyDp21SRJqrWbv7y8HD4+Pg19OiIicgOlUom+SUnINhpxqc/rkiQh22hEYnIyQx2Rl6r3rdjqsWqCICAtLQ1qtdp5zm6344cffkDv3r3dXiAREdXPKK0W8zZswLK8PEyOiXH5EC5JEpbl5SE/NBTTtdpmrJKIPKnewW7Pnj0Azv9x+PXXX10+7SmVSvTq1Qtz5sxxf4VERFQvCQkJmJKWhiXp6dibm4tkjQaRKhUMZjOyjUbkh4ZiSloaZ8QSebEGj7F7+OGH8eabb16148s4xo6IWroDBw4gU6fDjuxs584TicnJGKXVMtQRtUINyR4NDnZXOwY7ImotLBYLTCYT1Go1x9QRtWINyR7NukAxERF5jlKpZKAjuspc0QLFRERERNRyMNgREREReQkGOyIiIiIvwWBHRERE5CUY7IiIiIi8BIMdERERkZdgsCMiIiLyEgx2RERERF6CwY6IiIjISzDYEREREXkJBjsiIiIiL8FgR0REROQlGOyIiIiIvASDHREREZGXYLAjIiIi8hIMdkRERERegsGOiIiIyEsw2BERERF5CQY7IiIiIi/BYEdERETkJRjsiIiIiLwEgx0RERGRl2CwIyIiIvISDHZEREREXoLBjoiIPM5isaCkpAQWi6W5SyHyavLmLoCIiLyXXq+HTpeJnJydMJsdUKlEJCX1xejRqYiPj2/u8oi8DnvsiIjII7KysjBp0jxkZJyAyTQBcnkaTKYJyMg4gYkT52Ljxo3NXSKR12GPHRERuZ1er8fChUtRXj4CcXGTIQiC81xExEjk5S1DevoSxMbGsueOyI3YY0dERG6n02WiuDgaMTGuoQ4ABEFATMxkFBdHQ6fLbKYKibwTgx0REbmVxWJBTs5OaDTJNUJdNUEQoNEkIzt7BydUELkRgx0REbmVyWT6c6JEVJ3tVKpImM0OmEymJqqMyPsx2BERkVup1WqoVCLM5oI625nNBqhUItRqdRNVRuT9GOyIiMitlEolkpL6wmjMhiRJtbaRJAlGYzaSkxOhVCqbuEIi78VgR0REbqfVjkJoaD7y8pbVCHeSJCEvbxlCQ/Oh1Y5qpgqJvBOXOyGiq47FYoHJZIJarWZvkYckJCQgLW0K0tOXIDd3LzSa5D/H1BlgNGYjNDQfaWlTuNQJkZsx2BHRVUOv1yNTp8POnBw4zGaIKhX6JiUhdfRoBgwPSElJQWxsLHS6TGRnL4fZ7IBaLUKrTYRWO53vOZEHCNKlBkBQrYxGIwIDA1FaWgqNRtPc5RBRPWVlZWHpwoWILi5GskaDKJUKBWYzso1G5IeGYkpaGlJSUpq7TK/FXlKixmtI9mCPHRF5Pb1ej6ULF2JEeTkmx8W5rK02MiICy/LysCQ9nbsgeJBSqWSgI2oCnDxBRF4vU6dDdHExJsfE1LoLwuSYGEQXFyNTp2umComI3IPBjoi8msViwc6cHCRrNHXugpCs0WBHdjZ3QSCiVo3Bjoi8mslkgsNsRpRKVWe7SJUKDrOZuyAQUavGYEdEXk2tVkP8c6JEXQx/zpLlLghE1Jox2BGRV1MqleiblIRso7HOXRCyjUYkJidzgD8RtWoMdkTk9UZptcgPDcWyvLxad0FYlpeH/NBQjNJqm6lCIiL34HInROT1EhISMCUtDUvS07E3NxfJGg0iVSoYLlrHjkudEFFrx2BHRFeF6l0QMnU6LM/OPr/zhFqNRK0W07Vahjoi8grceaKBuPMEUevHXRCIqDXhzhNERHXgLghE5K04eYKIiIjISzDYEREREXkJBjsiIiIiL8FgR0REROQlGOyIiIiIvASDHREREZGXYLAjIiIi8hIMdkRERERegsGOiIiIyEsw2BERERF5CQY7IiIiIi/BYEdERETkJRjsiIiIiLwEgx0RERGRl2CwIyIiIvISDHZEREREXqLVBTuz2YzevXtDEATs3bvX5dwvv/yCAQMGwMfHB+3bt8fLL79c4/Fr1qxBt27d4OPjg549eyIrK6uJKiciIiLyrFYX7J588km0bdu2xnGj0YikpCR06NABu3btwiuvvILnnnsO7733nrPN999/j/vuuw8TJ07Enj17kJqaitTUVOzfv78pXwIRERGRRwiSJEnNXUR9bdy4EbNnz8bnn3+O7t27Y8+ePejduzcAYMmSJfjnP/8Jg8EApVIJAJg3bx7WrVuHgwcPAgDuueceVFRUYP369c7n7Nu3L3r37o2lS5fWqwaj0YjAwECUlpZCo9G49wUSERERXaQh2aPV9NidPn0akydPxkcffQS1Wl3j/I4dOzBw4EBnqAOA5ORkHDp0COfOnXO2GTZsmMvjkpOTsWPHjkte12w2w2g0unwRERERtUStIthJkoTx48fj0UcfRZ8+fWptYzAYEBER4XKs+nuDwVBnm+rztVm0aBECAwOdX+3bt7+Sl0JERETkMc0a7ObNmwdBEOr8OnjwIN566y2UlZVh/vz5TV7j/PnzUVpa6vw6ceJEk9dAREREVB/y5rz4E088gfHjx9fZplOnTtiyZQt27NgBlUrlcq5Pnz544IEH8OGHHyIyMhKnT592OV/9fWRkpPN/a2tTfb42KpWqxnWJiIiIWqJmDXZhYWEICwu7bLt///vfWLhwofP7U6dOITk5GZ999hluvvlmAEBiYiL++c9/wmq1QqFQAAA2b96Ma665BsHBwc42X3/9NWbOnOl8rs2bNyMxMdGNr4qIiIioeTRrsKuvmJgYl+/9/f0BAJ07d0Z0dDQA4P7778eCBQswceJEzJ07F/v378ebb76JxYsXOx83Y8YMDBo0CK+99hqGDx+O1atX4+eff3ZZEoWIiIiotWoVkyfqIzAwEDk5Ofjjjz9www034IknnsAzzzyDv//97842/fr1w6pVq/Dee++hV69eWLt2LdatW4cePXo0Y+VERERE7tGq1rFrCbiOHRERETUlr1zHjoiIiIjqxmBHRERE5CUY7IiIiIi8BIMdERERkZdgsCMiIiLyEgx2RERERF6CwY6IiIjISzDYEREREXkJBjsiIiIiL8FgR0REROQlGOyIiIiIvASDHREREZGXYLAjIiIi8hIMdkRERERegsGOiIiIyEsw2BERERF5CQY7IiIiIi/BYEdERETkJRjsiIiIiLwEgx0RERGRl2CwIyIiIvISDHZEREREXoLBjoiIiMhLMNgREREReQkGOyIiIiIvwWBHRERE5CUY7Fogi8WCkpISWCyW5i6FiIiIWhF5cxdAf9Hr9cjU6bAzJwcOsxmiSoW+SUlIHT0a8fHxzV0eERERtXDssWshsrKyMG/SJJzIyMAEkwlpcjkmmEw4kZGBuRMnYuPGjc1dIhEREbVw7LFrAfR6PZYuXIgR5eWYHBcHQRCc50ZGRGBZXh6WpKcjNjaWPXdERER0SeyxawEydTpEFxdjckyMS6gDAEEQMDkmBtHFxcjU6ZqpQiIiImoNGOyamcViwc6cHCRrNDVCXTVBEJCs0WBHdjYnVBAREdElMdg1M5PJBIfZjCiVqs52kSoVHGYzTCZTE1VGRERErQ2DXTNTq9UQVSoUmM11tjP8OUtWrVY3UWVERETU2jDYNTOlUom+SUnINhohSVKtbSRJQrbRiMTkZCiVyiaukIiIiFoLBrsWYJRWi/zQUCzLy6sR7iRJwrK8POSHhmKUVttMFRIREVFrwOVOWoCEhARMSUvDkvR07M3NRbJGg0iVCgazGdlGI/JDQzElLY1LnRAREVGdGOxaiJSUFMTGxiJTp8Py7OzzO0+o1UjUajFdq2WoIyIiossSpEsN7KJaGY1GBAYGorS0FBqNxiPXsFgsMJlMUKvVHFNHRER0lWtI9mCPXQukVCoZ6IiIiKjBOHmCiIiIyEsw2BERERF5CQY7IiIiIi/BYEdERETkJRjsiIiIiLwEgx0RERGRl2CwIyIiIvISDHZEREREXoLBjoiIiMhLcOeJBqregc1oNDZzJURERHQ1qM4c9dkFlsGugcrKygAA7du3b+ZKiIiI6GpSVlaGwMDAOtsIUn3iHzk5HA6cOnUKAQEBEAShucupldFoRPv27XHixInLbhbsja7m1381v3bg6n79fO1X52sHru7Xf7W8dkmSUFZWhrZt20IU6x5Fxx67BhJFEdHR0c1dxv+3d+9RUdZpHMC/w2WGGWEYLs6ABKKCIEIKshJeSpdZidxWsiXzmCvGoUBaZTNvR1fac3QltD12yMhMAXc7UujJWuQSGkopgiCYIIIpZBoXV0SgUC7z7B8e3ngdUPLCZXg+58zpzPs+85vfdwZen955f0OfKJVKg/5Bv5/hnH84ZweGd37OPjyzA8M7/3DIfr8zdV148QRjjDHGmIHgxo4xxhhjzEBwY2eAZDIZYmJiIJPJBnoqA2I45x/O2YHhnZ+zD8/swPDOP5yz94YXTzDGGGOMGQg+Y8cYY4wxZiC4sWOMMcYYMxDc2DHGGGOMGQhu7Ia4yspKzJs3D7a2tlAqlZgxYwZycnJENZcvX8bcuXOhUCigVquxatUqdHR0iGqOHj0KHx8fyGQyuLi4ICkpqR9TPLhDhw7Bz88PcrkcVlZWCA4OFu035Oxdbt++jcmTJ0MikaCkpES077vvvsPMmTNhZmYGR0dHxMXF6T0+NTUV7u7uMDMzg5eXF9LT0/tp5g+muroaYWFhGDNmDORyOcaNG4eYmBi0tbWJ6gwxe2927NgBZ2dnmJmZwc/PDwUFBQM9pYe2ZcsW/O53v4OFhQXUajWCg4NRUVEhqrl16xaioqJgY2MDc3NzvPjii6irqxPV9OUYMNjFxsZCIpEgOjpa2Gbo2a9evYpXXnkFNjY2kMvl8PLyQmFhobCfiLBx40bY29tDLpdDq9XiwoULojEaGhqwaNEiKJVKqFQqhIWFoaWlpb+j9D9iQ5qrqys999xzdObMGaqsrKRly5aRQqGgmpoaIiLq6OggT09P0mq1VFxcTOnp6WRra0vr1q0Txrh06RIpFAp688036dy5cxQfH0/GxsaUmZk5ULH6ZP/+/WRlZUUJCQlUUVFBZWVl9Omnnwr7DTl7d8uXL6egoCACQMXFxcL2mzdvkkajoUWLFlFpaSnt27eP5HI57dy5U6g5fvw4GRsbU1xcHJ07d442bNhApqamdPbs2QFI0jcZGRkUGhpKWVlZdPHiRfriiy9IrVbTypUrhRpDzd6TlJQUkkqltGfPHiorK6Pw8HBSqVRUV1c30FN7KIGBgZSYmEilpaVUUlJCzz33HDk5OVFLS4tQExERQY6OjnTkyBEqLCykp556iqZNmybs78sxYLArKCggZ2dnevLJJ2nFihXCdkPO3tDQQKNHj6bQ0FDKz8+nS5cuUVZWFn3//fdCTWxsLFlaWtLBgwfpzJkz9Kc//YnGjBlDra2tQs2zzz5LkyZNopMnT9I333xDLi4utHDhwoGI1K+4sRvCrl27RgAoNzdX2NbU1EQAKDs7m4iI0tPTycjIiGpra4WahIQEUiqVdPv2bSIiWr16NU2cOFE09oIFCygwMLAfUjyY9vZ2cnBwoI8//rjXGkPN3l16ejq5u7tTWVmZXmP3wQcfkJWVlZCViGjNmjXk5uYm3H/ppZdo7ty5ojH9/Pzo9ddff+xzf5Ti4uJozJgxwv3hlH3q1KkUFRUl3O/s7KRRo0bRli1bBnBWj159fT0BoGPHjhERUWNjI5mamlJqaqpQU15eTgAoLy+PiPp2DBjMmpubydXVlbKzs+mZZ54RGjtDz75mzRqaMWNGr/t1Oh3Z2dnR1q1bhW2NjY0kk8lo3759RER07tw5AkCnTp0SajIyMkgikdDVq1cf3+QHAf4odgizsbGBm5sb9u7di59//hkdHR3YuXMn1Go1pkyZAgDIy8uDl5cXNBqN8LjAwEA0NTWhrKxMqNFqtaKxAwMDkZeX139hfqPTp0/j6tWrMDIygre3N+zt7REUFITS0lKhxlCzd6mrq0N4eDj+/e9/Q6FQ6O3Py8vD008/DalUKmwLDAxERUUFbty4IdQM1fzd3bx5E9bW1sL94ZK9ra0NRUVFohxGRkbQarVDKkdf3Lx5EwCE97moqAjt7e2i7O7u7nBychKy9+UYMJhFRUVh7ty5ej+nhp79yy+/hK+vL0JCQqBWq+Ht7Y1du3YJ+6uqqlBbWyvKb2lpCT8/P1F+lUoFX19foUar1cLIyAj5+fn9F2YAcGM3hEkkEhw+fBjFxcWwsLCAmZkZ/vWvfyEzMxNWVlYAgNraWtEvNgDhfm1t7T1rmpqa0Nra2g9JfrtLly4BAN5++21s2LABaWlpsLKywqxZs9DQ0ADAcLMDd64vCQ0NRUREhOjA1d3D5O/aPxR8//33iI+Px+uvvy5sGy7Z//e//6Gzs3PI57gfnU6H6OhoTJ8+HZ6engDuvH9SqRQqlUpU2z17X34OBquUlBScPn0aW7Zs0dtn6NkvXbqEhIQEuLq6IisrC5GRkVi+fDmSk5MB/Dr/e/3c19bWQq1Wi/abmJjA2tp60Od/WNzYDUJr166FRCK55+38+fMgIkRFRUGtVuObb75BQUEBgoOD8fzzz6OmpmagYzyQvmbX6XQAgPXr1+PFF1/ElClTkJiYCIlEgtTU1AFO8eD6mj8+Ph7Nzc1Yt27dQE/5kelr9u6uXr2KZ599FiEhIQgPDx+gmbPHLSoqCqWlpUhJSRnoqfSLH3/8EStWrMAnn3wCMzOzgZ5Ov9PpdPDx8cE///lPeHt747XXXkN4eDg+/PDDgZ7akGAy0BNg+lauXInQ0NB71owdOxZff/010tLScOPGDSiVSgDABx98gOzsbCQnJ2Pt2rWws7PTWyHXtXLKzs5O+O/dq6nq6uqgVCohl8sfUaq+6Wv2rsbVw8ND2C6TyTB27FhcvnwZAIZcduC3vfd5eXl6f0bH19cXixYtQnJycq/ZgPvn79rfn/qavctPP/2E2bNnY9q0afjoo49EdUMt+4OytbWFsbHxkM9xL2+88QbS0tKQm5uLJ554QthuZ2eHtrY2NDY2is5cdc/el2PAYFRUVIT6+nr4+PgI2zo7O5Gbm4v3338fWVlZBpsdAOzt7UXHdgCYMGECDhw4AODX+dfV1cHe3l6oqaurw+TJk4Wa+vp60RgdHR1oaGgY9Pkf2kBf5Mce3JdffklGRkbU3Nws2j5+/HjavHkzEf16AW33FXI7d+4kpVJJt27dIqI7Cwg8PT1FYyxcuHBQLyC4efMmyWQy0eKJtrY2UqvVwspHQ81ORPTDDz/Q2bNnhVtWVhYBoP3799OPP/5IRL8uIGhraxMet27dOr0FBH/84x9FY/v7+w/6BQRXrlwhV1dXevnll6mjo0NvvyFnv9vUqVPpjTfeEO53dnaSg4PDkF88odPpKCoqikaNGkWVlZV6+7sWEOzfv1/Ydv78+R4XENzrGDAYNTU1iX6/z549S76+vvTKK6/Q2bNnDTo70Z1j8N2LJ6Kjo8nf35+Ifl08sW3bNmF/178Jdy+eKCwsFGqysrKGxeIJbuyGsGvXrpGNjQ3Nnz+fSkpKqKKigt566y0yNTWlkpISIvp1yfucOXOopKSEMjMzaeTIkT1+5ceqVauovLycduzYMSS+8mPFihXk4OBAWVlZdP78eQoLCyO1Wk0NDQ1EZNjZ71ZVVaW3KraxsZE0Gg0tXryYSktLKSUlhRQKhd5XfpiYmNC2bduovLycYmJiBv1Xfly5coVcXFwoICCArly5QjU1NcKti6Fm70lKSgrJZDJKSkqic+fO0WuvvUYqlUq0GnIoioyMJEtLSzp69KjoPf7ll1+EmoiICHJycqKvv/6aCgsLyd/fX/jHn6hvx4ChovuqWCLDzl5QUEAmJia0efNmunDhAn3yySekUCjoP//5j1ATGxtLKpWKvvjiC/ruu+9o3rx5PX7dibe3N+Xn59O3335Lrq6u/HUnbPA7deoUzZkzh6ytrcnCwoKeeuopSk9PF9VUV1dTUFAQyeVysrW1pZUrV1J7e7uoJicnhyZPnkxSqZTGjh1LiYmJ/ZjiwbS1tdHKlStJrVaThYUFabVaKi0tFdUYava79dTYERGdOXOGZsyYQTKZjBwcHCg2NlbvsZ999hmNHz+epFIpTZw4kQ4dOtRPs34wiYmJBKDHW3eGmL038fHx5OTkRFKplKZOnUonT54c6Ck9tN7e4+6/n62trbRs2TKysrIihUJBL7zwgqjBJ+rbMWAouLuxM/Ts//3vf8nT05NkMhm5u7vTRx99JNqv0+no73//O2k0GpLJZBQQEEAVFRWimuvXr9PChQvJ3NyclEolLV26VO8TLkMkISLq749/GWOMMcbYo8erYhljjDHGDAQ3dowxxhhjBoIbO8YYY4wxA8GNHWOMMcaYgeDGjjHGGGPMQHBjxxhjjDFmILixY4wxxhgzENzYMcYYY4wZCG7sGGPsISUlJYn+GPtgFRoaiuDg4IGeBmPsMeLGjjHWr2bNmoXo6Og+1e7atQuTJk2Cubk5VCoVvL29sWXLFmH/22+/DYlEgoiICNHjSkpKIJFIUF1dDQCorq6GRCLp8Xby5Mlen7973YgRI+Dq6orQ0FAUFRWJ6hYsWIDKysq+vQAD6L333kNSUtJjf57Nmzdj2rRpUCgUQ6LhZcyQcGPHGBuU9uzZg+joaCxfvhwlJSU4fvw4Vq9ejZaWFlGdmZkZdu/ejQsXLtx3zMOHD6OmpkZ0mzJlyj0fk5iYiJqaGpSVlWHHjh1oaWmBn58f9u7dK9TI5XKo1eoHC9qPLC0t+6XRamtrQ0hICCIjIx/7czHG7jLQf6yWMTZ8LFmyRO+PuldVVfVYO2/ePAoNDb3neDExMTRp0iT6wx/+QCEhIcL24uJi0dhVVVUEgIqLi3/TfAHQ559/rrf9L3/5C1lYWFBDQwMRESUmJpKlpaXevHbv3k2Ojo40YsQIioyMpI6ODnrnnXdIo9HQyJEjadOmTaJxb9y4QWFhYWRra0sWFhY0e/ZsKikp0Rt37969NHr0aFIqlbRgwQJqamoSalJTU8nT05PMzMzI2tqaAgICqKWlhYjuvP7z5s0Tam/dukV//etfaeTIkSSTyWj69OlUUFAg7M/JySEAdPjwYZoyZQrJ5XLy9/en8+fP9+n1u/t1YYw9fnzGjjHWb9577z34+/sjPDxcOGPm6OjYY62dnR1OnjyJH3744b7jxsbG4sCBAygsLHzUU+7R3/72NzQ3NyM7O7vXmosXLyIjIwOZmZnYt28fdu/ejblz5+LKlSs4duwY3nnnHWzYsAH5+fnCY0JCQlBfX4+MjAwUFRXBx8cHAQEBaGhoEI178OBBpKWlIS0tDceOHUNsbCwAoKamBgsXLsSrr76K8vJyHD16FPPnzwcR9TjH1atX48CBA0hOTsbp06fh4uKCwMBA0fMBwPr16/Huu++isLAQJiYmePXVVx/m5WOMPUbc2DHG+o2lpSWkUikUCgXs7OxgZ2cHY2PjHmtjYmKgUqng7OwMNzc3hIaG4rPPPoNOp9Or9fHxwUsvvYQ1a9bc8/mnTZsGc3Nz0e1BuLu7A4BwDV9PdDod9uzZAw8PDzz//POYPXs2KioqsH37dri5uWHp0qVwc3NDTk4OAODbb79FQUEBUlNT4evrC1dXV2zbtg0qlQr79+8XjZuUlARPT0/MnDkTixcvxpEjRwDcaew6Ojowf/58ODs7w8vLC8uWLesx588//4yEhARs3boVQUFB8PDwwK5duyCXy7F7925R7ebNm/HMM8/Aw8MDa9euxYkTJ3Dr1q0Heu0YY4+XyUBPgDHGJk6cKJyZmzlzJjIyMmBvb4+8vDyUlpYiNzcXJ06cwJIlS/Dxxx8jMzMTRkbi/y/dtGkTJkyYgK+++qrX690+/fRTTJgw4aHn23UGTCKR9Frj7OwMCwsL4b5Go4GxsbFo3hqNBvX19QCAM2fOoKWlBTY2NqJxWltbcfHixV7Htbe3F8aYNGkSAgIC4OXlhcDAQMyZMwd//vOfYWVlpTe/ixcvor29HdOnTxe2mZqaYurUqSgvLxfVPvnkk6LnA4D6+no4OTn1mp8xNjC4sWOMDbj09HS0t7cDuLMQoTtPT094enpi2bJliIiIwMyZM3Hs2DHMnj1bVDdu3DiEh4dj7dq1emecujg6OsLFxeWh59vV+IwZM6bXGlNTU9F9iUTS47auM5AtLS2wt7fH0aNH9cbqvuDhXmMYGxsjOzsbJ06cwFdffYX4+HisX78e+fn595zr/XR/zq5mtqczp4yxgccfxTLG+pVUKkVnZ6do2+jRo+Hi4gIXFxc4ODj0+lgPDw8Adz5G7MnGjRtRWVmJlJSURzfhHmzfvh1KpRJarfaRjenj44Pa2lqYmJgIr0XXzdbWts/jSCQSTJ8+Hf/4xz9QXFwMqVSKzz//XK9u3LhxkEqlOH78uLCtvb0dp06dEl5nxtjQw2fsGGP9ytnZGfn5+aiuroa5uTmsra31PlYFgMjISIwaNQq///3v8cQTT6CmpgabNm3CyJEj4e/v3+PYGo0Gb775JrZu3drj/uvXr6O2tla0TaVSwczMrNf5NjY2ora2Frdv30ZlZSV27tyJgwcPYu/evY/0q0O0Wi38/f0RHByMuLg4jB8/Hj/99BMOHTqEF154Ab6+vvcdIz8/H0eOHMGcOXOgVquRn5+Pa9eu9fjx84gRIxAZGYlVq1bB2toaTk5OiIuLwy+//IKwsLCHynL58mU0NDTg8uXL6OzsRElJCQDAxcXlga9rZIz1DTd2jLF+9dZbb2HJkiXw8PBAa2srqqqq4OzsrFen1WqxZ88eJCQk4Pr167C1tYW/vz+OHDmidx3a3eMnJCT0eHF/T2fY9u3bh5dffrnX8ZYuXQrgzvflOTg4YMaMGSgoKICPj08f0vadRCJBeno61q9fj6VLl+LatWuws7PD008/DY1G06cxlEolcnNzsX37djQ1NWH06NF49913ERQU1GN9bGwsdDodFi9ejObmZvj6+iIrK6vHa/J+i40bNyI5OVm47+3tDQDIycnBrFmzHmpsxti9Sai3dfCMMcYYY2xI4WvsGGOMMcYMBDd2jDHGGGMGghs7xhhjjDEDwY0dY4wxxpiB4MaOMcYYY8xAcGPHGGOMMWYguLFjjDHGGDMQ3NgxxhhjjBkIbuwYY4wxxgwEN3aMMcYYYwaCGzvGGGOMMQPBjR1jjDHGmIH4P+HFMO4Q0hNzAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -1070,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1078,7 +330,7 @@ "output_type": "stream", "text": [ "Resulst for index AAP20891.1 are:\n", - "[('AAP20891.1', 0.0), ('AGQ50511.1', 0.00016200621801287785), ('ABB97007.1', 0.0001810048295400879), ('AFN21551.1', 0.00018909362988450695), ('CAC67290.1', 0.00021654775310264718), ('ADL13944.1', 0.0002567003210336427), ('AAK30619.1', 0.0002616398020808264), ('AAL29433.1', 0.0002646931927183793), ('ACJ43254.1', 0.0002669990760338914), ('ACB22021.1', 0.0002755243601859636)]\n" + "[('AAP20891.1', 0.0), ('P62593', 0.0), ('AGQ50511.1', 0.00016200621801287785), ('ABB97007.1', 0.0001810048295400879), ('AFN21551.1', 0.00018909362988450695), ('CAC67290.1', 0.00021654775310264718), ('ADL13944.1', 0.0002567003210336427), ('AAK30619.1', 0.0002616398020808264), ('AAL29433.1', 0.0002646931927183793), ('ACJ43254.1', 0.0002669990760338914)]\n" ] } ], @@ -1122,7 +374,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -1171,14 +423,41 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 10, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "
/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n",
+       "\"ipywidgets\" for Jupyter support\n",
+       "  warnings.warn('install \"ipywidgets\" for Jupyter support')\n",
+       "
\n" + ], + "text/plain": [ + "/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n", + "\"ipywidgets\" for Jupyter support\n", + " warnings.warn('install \"ipywidgets\" for Jupyter support')\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "[('AAP20891.1', 1.0), ('AGQ50511.1', 0.9999189376831055), ('ABB97007.1', 0.999909520149231), ('AFN21551.1', 0.9999054670333862), ('CAC67290.1', 0.9998918771743774), ('ADL13944.1', 0.9998717904090881), ('AAK30619.1', 0.9998692274093628), ('AAL29433.1', 0.9998676776885986), ('ACJ43254.1', 0.9998666048049927), ('CBX53726.1', 0.9998624920845032)]\n"
+      "[('AAP20891.1', 1.0), ('P62593', 1.0), ('AGQ50511.1', 0.9999189376831055), ('ABB97007.1', 0.999909520149231), ('AFN21551.1', 0.9999054670333862), ('CAC67290.1', 0.9998918771743774), ('ADL13944.1', 0.9998717904090881), ('AAK30619.1', 0.9998692274093628), ('AAL29433.1', 0.9998676776885986), ('ACJ43254.1', 0.9998666048049927)]\n"
      ]
     }
    ],
@@ -1223,7 +502,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "pyeed_niklas",
+   "display_name": "Python 3",
    "language": "python",
    "name": "python3"
   },
@@ -1237,7 +516,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.12.8"
+   "version": "3.10.16"
   }
  },
  "nbformat": 4,
diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py
index 82b5c6d7..0cb6770e 100644
--- a/src/pyeed/embedding.py
+++ b/src/pyeed/embedding.py
@@ -4,8 +4,9 @@
 
 import numpy as np
 import torch
+from esm.models.esm3 import ESM3
 from esm.models.esmc import ESMC
-from esm.sdk.api import ESMProtein, LogitsConfig
+from esm.sdk.api import ESM3InferenceClient, ESMProtein, LogitsConfig
 from huggingface_hub import HfFolder, login
 from numpy.typing import NDArray
 from transformers import EsmModel, EsmTokenizer
@@ -33,7 +34,7 @@ def get_hf_token() -> str:
 def load_model_and_tokenizer(
     model_name: str,
 ) -> Tuple[
-    Union[EsmModel, ESMC],  # Changed from ESM3InferenceClient to ESMC
+    Union[EsmModel, ESMC, ESM3InferenceClient],  # Added ESMC to the Union type
     Union[EsmTokenizer, None],
     torch.device,
 ]:
@@ -54,8 +55,12 @@ def load_model_and_tokenizer(
     # Check if this is an ESM-3 variant
     if "esmc" in model_name.lower():
         # Using ESMC from_pretrained
-        model = ESMC.from_pretrained(model_name)
+        model: Any = ESMC.from_pretrained(model_name)
         model = model.to(device)
+        return model, None, device
+    elif "esm3-sm-open-v1" in model_name.lower():
+        model: Any = ESM3.from_pretrained("esm3_sm_open_v1").to(device)
+
         return model, None, device
     else:
         # Otherwise, assume it's an ESM-2 model on Hugging Face
@@ -64,7 +69,7 @@ def load_model_and_tokenizer(
             if model_name.startswith("facebook/")
             else f"facebook/{model_name}"
         )
-        model = EsmModel.from_pretrained(full_model_name, use_auth_token=token)
+        model: Any = EsmModel.from_pretrained(full_model_name, use_auth_token=token)
         tokenizer = EsmTokenizer.from_pretrained(full_model_name, use_auth_token=token)
         model = model.to(device)
         return model, tokenizer, device
@@ -160,6 +165,74 @@ def calculate_single_sequence_embedding_all_layers(
     return get_single_embedding_all_layers(sequence, model, tokenizer, device)
 
 
+def calculate_single_sequence_embedding_first_layer(
+    sequence: str, model_name: str = "facebook/esm2_t33_650M_UR50D"
+) -> NDArray[np.float64]:
+    """
+    Calculates an embedding for a single sequence using the first layer.
+    """
+    model, tokenizer, device = load_model_and_tokenizer(model_name)
+    return get_single_embedding_first_layer(sequence, model, tokenizer, device)
+
+
+def get_single_embedding_first_layer(
+    sequence: str, model: Any, tokenizer: Any, device: torch.device
+) -> NDArray[np.float64]:
+    """
+    Generates normalized embeddings for each token in the sequence across all layers.
+    """
+    embeddings_list = []
+
+    with torch.no_grad():
+        if isinstance(model, ESMC):
+            # ESM-3 logic
+            from esm.sdk.api import ESMProtein, LogitsConfig
+
+            protein = ESMProtein(sequence=sequence)
+            protein_tensor = model.encode(protein)
+            logits_output = model.logits(
+                protein_tensor,
+                LogitsConfig(
+                    sequence=True,
+                    return_embeddings=True,
+                    return_hidden_states=True,
+                ),
+            )
+            if logits_output.hidden_states is None:
+                raise ValueError(
+                    "Model did not return hidden states. Check LogitsConfig settings."
+                )
+            embedding = (
+                logits_output.hidden_states[0][0].to(torch.float32).cpu().numpy()
+            )
+
+        elif isinstance(model, ESM3):
+            # ESM-3 logic
+            from esm.sdk.api import ESMProtein, SamplingConfig
+
+            protein = ESMProtein(sequence=sequence)
+            protein_tensor = model.encode(protein)
+            embedding = model.forward_and_sample(
+                protein_tensor,
+                SamplingConfig(return_per_residue_embeddings=True),
+            )
+            if embedding is None or embedding.per_residue_embedding is None:
+                raise ValueError("Model did not return embeddings")
+            embedding = embedding.per_residue_embedding.to(torch.float32).cpu().numpy()
+
+        else:
+            # ESM-2 logic
+            inputs = tokenizer(sequence, return_tensors="pt").to(device)
+            outputs = model(**inputs, output_hidden_states=True)
+            # Get the first layer's hidden states for all residues (excluding special tokens)
+            embedding = outputs.hidden_states[0][0, 1:-1, :].detach().cpu().numpy()
+
+    # Ensure embedding is a numpy array and normalize it
+    embedding = np.asarray(embedding, dtype=np.float64)
+    embedding = embedding / np.linalg.norm(embedding, axis=1, keepdims=True)
+    return embedding
+
+
 def get_single_embedding_last_hidden_state(
     sequence: str, model: Any, tokenizer: Any, device: torch.device
 ) -> NDArray[np.float64]:
@@ -200,10 +273,27 @@ def get_single_embedding_last_hidden_state(
             embedding = (
                 logits_output.hidden_states[-1][0].to(torch.float32).cpu().numpy()
             )
+        elif isinstance(model, ESM3):
+            # ESM-3 logic
+            from esm.sdk.api import ESMProtein, SamplingConfig
+
+            protein = ESMProtein(sequence=sequence)
+            sequence_encoding = model.encode(protein)
+
+            embedding = model.forward_and_sample(
+                sequence_encoding, SamplingConfig(return_per_residue_embeddings=True)
+            )
+
+            if embedding is None or embedding.per_residue_embedding is None:
+                raise ValueError("Model did not return embeddings")
+            embedding = embedding.per_residue_embedding.to(torch.float32).cpu().numpy()
+
         else:
             # ESM-2 logic
             inputs = tokenizer(sequence, return_tensors="pt").to(device)
-            outputs = model(**inputs)
+            outputs = model(**inputs, output_hidden_states=True, return_dict=True)
+            # Extract per-residue embeddings (excluding special tokens)
+            # [0] to get first batch, [1:-1] to remove start/end tokens
             embedding = outputs.last_hidden_state[0, 1:-1, :].detach().cpu().numpy()
 
     # normalize the embedding
@@ -260,6 +350,9 @@ def get_single_embedding_all_layers(
                 emb = emb / np.linalg.norm(emb, axis=1, keepdims=True)
                 embeddings_list.append(emb)
 
+        elif isinstance(model, ESM3):
+            raise NotImplementedError("ESM3 is not supported for all layers")
+
         else:
             # For ESM-2: Get hidden states with output_hidden_states=True
             inputs = tokenizer(sequence, return_tensors="pt").to(device)

From f157a46f0c0d297ed4f083171f0861ca235a6ee3 Mon Sep 17 00:00:00 2001
From: Niklas Abraham GPU 
Date: Wed, 26 Mar 2025 11:39:13 +0000
Subject: [PATCH 3/9] working on three GPUS

---
 docs/usage/embeddings_analysis.ipynb | 296 +++++++++++++++------------
 src/pyeed/embedding.py               | 114 +++++++----
 src/pyeed/main.py                    |  51 ++++-
 3 files changed, 284 insertions(+), 177 deletions(-)

diff --git a/docs/usage/embeddings_analysis.ipynb b/docs/usage/embeddings_analysis.ipynb
index e609174f..d831243c 100644
--- a/docs/usage/embeddings_analysis.ipynb
+++ b/docs/usage/embeddings_analysis.ipynb
@@ -18,21 +18,12 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 7,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
-      "  from .autonotebook import tqdm as notebook_tqdm\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "import sys\n",
-    "\n",
+    "import numpy as np\n",
     "from loguru import logger\n",
     "import pandas as pd\n",
     "import matplotlib.pyplot as plt\n",
@@ -56,14 +47,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "📡 Connected to database.\n"
+      "📡 Connected to database.\n",
+      "All data has been wiped from the database.\n"
      ]
     }
    ],
@@ -72,12 +64,13 @@
     "user = \"neo4j\"\n",
     "password = \"12345678\"\n",
     "\n",
-    "eedb = Pyeed(uri, user=user, password=password)"
+    "eedb = Pyeed(uri, user=user, password=password)\n",
+    "eedb.db.wipe_database(date='2025-03-26')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 9,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -94,7 +87,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 10,
    "metadata": {},
    "outputs": [
     {
@@ -118,84 +111,84 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 11,
    "metadata": {},
    "outputs": [
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "\u001b[32m2025-03-21 10:35:45.248\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 2 sequences in the database.\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:45.248\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:45.263\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.789\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.832\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.878\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.903\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.928\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:46.980\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.006\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.031\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.113\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.138\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.174\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.199\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.224\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.249\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.300\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.325\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.346\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.370\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.396\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.470\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.501\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.525\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.549\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.573\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.598\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.623\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.649\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.675\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.699\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:47.766\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.031\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.056\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.094\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.120\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.146\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.173\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.198\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.224\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.250\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.275\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.340\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.365\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.390\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.415\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.440\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.464\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.488\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.514\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.540\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.569\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.782\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.809\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.836\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.861\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.887\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.913\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.939\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.965\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:48.992\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.018\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.585\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.613\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.639\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.667\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.694\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.721\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.748\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-21 10:35:49.776\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n"
+      "\u001b[32m2025-03-26 11:33:06.267\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 0 sequences in the database.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:06.268\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:06.282\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.458\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.484\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.507\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.530\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.552\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.576\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.600\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.624\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.647\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.669\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.797\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.820\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.842\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.866\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.913\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.937\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.956\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:07.981\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.005\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.029\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.475\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.499\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.523\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.546\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.570\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.595\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.619\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.643\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.668\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.684\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.718\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.742\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.767\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.791\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.816\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.840\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.864\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.890\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.914\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:08.937\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.646\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.669\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.695\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.718\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.743\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.767\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.790\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.815\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.838\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:09.863\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.058\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.083\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.107\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.129\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.152\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.176\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.200\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.224\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.248\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.273\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.366\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.390\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.414\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.438\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.462\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.486\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.509\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:33:10.534\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n"
      ]
     }
    ],
@@ -214,19 +207,54 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "metadata": {},
    "outputs": [
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "Fetching 4 files: 100%|██████████| 4/4 [00:00<00:00, 284.23it/s]\n"
+      "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/modeling_utils.py:3437: FutureWarning: The `use_auth_token` argument is deprecated and will be removed in v5 of Transformers. Please use `token` instead.\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "ename": "OSError",
+     "evalue": "facebook/esm2_t48_3B_UR50D is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=`",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mHTTPError\u001b[0m                                 Traceback (most recent call last)",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_http.py:409\u001b[0m, in \u001b[0;36mhf_raise_for_status\u001b[0;34m(response, endpoint_name)\u001b[0m\n\u001b[1;32m    408\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 409\u001b[0m     \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    410\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/requests/models.py:1024\u001b[0m, in \u001b[0;36mResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1023\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m http_error_msg:\n\u001b[0;32m-> 1024\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m HTTPError(http_error_msg, response\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n",
+      "\u001b[0;31mHTTPError\u001b[0m: 404 Client Error: Not Found for url: https://huggingface.co/facebook/esm2_t48_3B_UR50D/resolve/main/config.json",
+      "\nThe above exception was the direct cause of the following exception:\n",
+      "\u001b[0;31mRepositoryNotFoundError\u001b[0m                   Traceback (most recent call last)",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/utils/hub.py:403\u001b[0m, in \u001b[0;36mcached_file\u001b[0;34m(path_or_repo_id, filename, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, subfolder, repo_type, user_agent, _raise_exceptions_for_gated_repo, _raise_exceptions_for_missing_entries, _raise_exceptions_for_connection_errors, _commit_hash, **deprecated_kwargs)\u001b[0m\n\u001b[1;32m    401\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m    402\u001b[0m     \u001b[38;5;66;03m# Load from URL or cache if already cached\u001b[39;00m\n\u001b[0;32m--> 403\u001b[0m     resolved_file \u001b[38;5;241m=\u001b[39m \u001b[43mhf_hub_download\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    404\u001b[0m \u001b[43m        \u001b[49m\u001b[43mpath_or_repo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    405\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    406\u001b[0m \u001b[43m        \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msubfolder\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    407\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    408\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    409\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    410\u001b[0m \u001b[43m        \u001b[49m\u001b[43muser_agent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43muser_agent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    411\u001b[0m \u001b[43m        \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    412\u001b[0m \u001b[43m        \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    413\u001b[0m \u001b[43m        \u001b[49m\u001b[43mresume_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    414\u001b[0m \u001b[43m        \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    415\u001b[0m \u001b[43m        \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    416\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    417\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m GatedRepoError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py:114\u001b[0m, in \u001b[0;36mvalidate_hf_hub_args.._inner_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    112\u001b[0m     kwargs \u001b[38;5;241m=\u001b[39m smoothly_deprecate_use_auth_token(fn_name\u001b[38;5;241m=\u001b[39mfn\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m, has_token\u001b[38;5;241m=\u001b[39mhas_token, kwargs\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[0;32m--> 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:862\u001b[0m, in \u001b[0;36mhf_hub_download\u001b[0;34m(repo_id, filename, subfolder, repo_type, revision, library_name, library_version, cache_dir, local_dir, user_agent, force_download, proxies, etag_timeout, token, local_files_only, headers, endpoint, resume_download, force_filename, local_dir_use_symlinks)\u001b[0m\n\u001b[1;32m    861\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 862\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_hf_hub_download_to_cache_dir\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    863\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# Destination\u001b[39;49;00m\n\u001b[1;32m    864\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    865\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# File info\u001b[39;49;00m\n\u001b[1;32m    866\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    867\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfilename\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    868\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    869\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    870\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# HTTP info\u001b[39;49;00m\n\u001b[1;32m    871\u001b[0m \u001b[43m        \u001b[49m\u001b[43mendpoint\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mendpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    872\u001b[0m \u001b[43m        \u001b[49m\u001b[43metag_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43metag_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    873\u001b[0m \u001b[43m        \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhf_headers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    874\u001b[0m \u001b[43m        \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    875\u001b[0m \u001b[43m        \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    876\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# Additional options\u001b[39;49;00m\n\u001b[1;32m    877\u001b[0m \u001b[43m        \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    878\u001b[0m \u001b[43m        \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    879\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:969\u001b[0m, in \u001b[0;36m_hf_hub_download_to_cache_dir\u001b[0;34m(cache_dir, repo_id, filename, repo_type, revision, endpoint, etag_timeout, headers, proxies, token, local_files_only, force_download)\u001b[0m\n\u001b[1;32m    968\u001b[0m     \u001b[38;5;66;03m# Otherwise, raise appropriate error\u001b[39;00m\n\u001b[0;32m--> 969\u001b[0m     \u001b[43m_raise_on_head_call_error\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhead_call_error\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    971\u001b[0m \u001b[38;5;66;03m# From now on, etag, commit_hash, url and size are not None.\u001b[39;00m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1486\u001b[0m, in \u001b[0;36m_raise_on_head_call_error\u001b[0;34m(head_call_error, force_download, local_files_only)\u001b[0m\n\u001b[1;32m   1481\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(head_call_error, (RepositoryNotFoundError, GatedRepoError)) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[1;32m   1482\u001b[0m     \u001b[38;5;28misinstance\u001b[39m(head_call_error, HfHubHTTPError) \u001b[38;5;129;01mand\u001b[39;00m head_call_error\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m401\u001b[39m\n\u001b[1;32m   1483\u001b[0m ):\n\u001b[1;32m   1484\u001b[0m     \u001b[38;5;66;03m# Repo not found or gated => let's raise the actual error\u001b[39;00m\n\u001b[1;32m   1485\u001b[0m     \u001b[38;5;66;03m# Unauthorized => likely a token issue => let's raise the actual error\u001b[39;00m\n\u001b[0;32m-> 1486\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m head_call_error\n\u001b[1;32m   1487\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m   1488\u001b[0m     \u001b[38;5;66;03m# Otherwise: most likely a connection issue or Hub downtime => let's warn the user\u001b[39;00m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1376\u001b[0m, in \u001b[0;36m_get_metadata_or_catch_error\u001b[0;34m(repo_id, filename, repo_type, revision, endpoint, proxies, etag_timeout, headers, token, local_files_only, relative_filename, storage_folder)\u001b[0m\n\u001b[1;32m   1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1376\u001b[0m     metadata \u001b[38;5;241m=\u001b[39m \u001b[43mget_hf_file_metadata\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1377\u001b[0m \u001b[43m        \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43metag_timeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\n\u001b[1;32m   1378\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1379\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m EntryNotFoundError \u001b[38;5;28;01mas\u001b[39;00m http_error:\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py:114\u001b[0m, in \u001b[0;36mvalidate_hf_hub_args.._inner_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    112\u001b[0m     kwargs \u001b[38;5;241m=\u001b[39m smoothly_deprecate_use_auth_token(fn_name\u001b[38;5;241m=\u001b[39mfn\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m, has_token\u001b[38;5;241m=\u001b[39mhas_token, kwargs\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[0;32m--> 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1296\u001b[0m, in \u001b[0;36mget_hf_file_metadata\u001b[0;34m(url, token, proxies, timeout, library_name, library_version, user_agent, headers)\u001b[0m\n\u001b[1;32m   1295\u001b[0m \u001b[38;5;66;03m# Retrieve metadata\u001b[39;00m\n\u001b[0;32m-> 1296\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43m_request_wrapper\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1297\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHEAD\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1298\u001b[0m \u001b[43m    \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1299\u001b[0m \u001b[43m    \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhf_headers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1300\u001b[0m \u001b[43m    \u001b[49m\u001b[43mallow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1301\u001b[0m \u001b[43m    \u001b[49m\u001b[43mfollow_relative_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1302\u001b[0m \u001b[43m    \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1303\u001b[0m \u001b[43m    \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1304\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1305\u001b[0m hf_raise_for_status(r)\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:280\u001b[0m, in \u001b[0;36m_request_wrapper\u001b[0;34m(method, url, follow_relative_redirects, **params)\u001b[0m\n\u001b[1;32m    279\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m follow_relative_redirects:\n\u001b[0;32m--> 280\u001b[0m     response \u001b[38;5;241m=\u001b[39m \u001b[43m_request_wrapper\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    281\u001b[0m \u001b[43m        \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    282\u001b[0m \u001b[43m        \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    283\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfollow_relative_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m    284\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    285\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    287\u001b[0m     \u001b[38;5;66;03m# If redirection, we redirect only relative paths.\u001b[39;00m\n\u001b[1;32m    288\u001b[0m     \u001b[38;5;66;03m# This is useful in case of a renamed repository.\u001b[39;00m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:304\u001b[0m, in \u001b[0;36m_request_wrapper\u001b[0;34m(method, url, follow_relative_redirects, **params)\u001b[0m\n\u001b[1;32m    303\u001b[0m response \u001b[38;5;241m=\u001b[39m get_session()\u001b[38;5;241m.\u001b[39mrequest(method\u001b[38;5;241m=\u001b[39mmethod, url\u001b[38;5;241m=\u001b[39murl, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams)\n\u001b[0;32m--> 304\u001b[0m \u001b[43mhf_raise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    305\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_http.py:458\u001b[0m, in \u001b[0;36mhf_raise_for_status\u001b[0;34m(response, endpoint_name)\u001b[0m\n\u001b[1;32m    450\u001b[0m     message \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m    451\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse\u001b[38;5;241m.\u001b[39mstatus_code\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m Client Error.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    452\u001b[0m         \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    456\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m make sure you are authenticated.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    457\u001b[0m     )\n\u001b[0;32m--> 458\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m _format(RepositoryNotFoundError, message, response) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    460\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m400\u001b[39m:\n",
+      "\u001b[0;31mRepositoryNotFoundError\u001b[0m: 404 Client Error. (Request ID: Root=1-67e3e5f6-44cf0d8d57a4fe053b72a484;c071d07d-bc72-4882-a792-4d6486057291)\n\nRepository Not Found for url: https://huggingface.co/facebook/esm2_t48_3B_UR50D/resolve/main/config.json.\nPlease make sure you specified the correct `repo_id` and `repo_type`.\nIf you are trying to access a private or gated repo, make sure you are authenticated.",
+      "\nThe above exception was the direct cause of the following exception:\n",
+      "\u001b[0;31mOSError\u001b[0m                                   Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[12], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43meedb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalculate_sequence_embeddings\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfacebook/esm2_t48_3B_UR50D\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/main.py:208\u001b[0m, in \u001b[0;36mPyeed.calculate_sequence_embeddings\u001b[0;34m(self, batch_size, model_name)\u001b[0m\n\u001b[1;32m    197\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    198\u001b[0m \u001b[38;5;124;03mCalculates embeddings for all sequences in the database that do not have embeddings, processing in batches.\u001b[39;00m\n\u001b[1;32m    199\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    204\u001b[0m \u001b[38;5;124;03m        Available models can be found at https://huggingface.co/facebook/esm2_t6_8M_UR50D.\u001b[39;00m\n\u001b[1;32m    205\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    207\u001b[0m \u001b[38;5;66;03m# Load the model, tokenizer, and device\u001b[39;00m\n\u001b[0;32m--> 208\u001b[0m model, tokenizer, device \u001b[38;5;241m=\u001b[39m \u001b[43mload_model_and_tokenizer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    210\u001b[0m \u001b[38;5;66;03m# Cypher query to retrieve proteins without embeddings and with valid sequences\u001b[39;00m\n\u001b[1;32m    211\u001b[0m query \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m    212\u001b[0m \u001b[38;5;124mMATCH (p:Protein)\u001b[39m\n\u001b[1;32m    213\u001b[0m \u001b[38;5;124mWHERE p.embedding IS NULL AND p.sequence IS NOT NULL\u001b[39m\n\u001b[1;32m    214\u001b[0m \u001b[38;5;124mRETURN p.accession_id AS accession, p.sequence AS sequence\u001b[39m\n\u001b[1;32m    215\u001b[0m \u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\"\"\u001b[39m\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/embedding.py:72\u001b[0m, in \u001b[0;36mload_model_and_tokenizer\u001b[0;34m(model_name)\u001b[0m\n\u001b[1;32m     65\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m     66\u001b[0m     \u001b[38;5;66;03m# Otherwise, assume it's an ESM-2 model on Hugging Face\u001b[39;00m\n\u001b[1;32m     67\u001b[0m     full_model_name \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m     68\u001b[0m         model_name\n\u001b[1;32m     69\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m model_name\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacebook/\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m     70\u001b[0m         \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacebook/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m     71\u001b[0m     )\n\u001b[0;32m---> 72\u001b[0m     model: Any \u001b[38;5;241m=\u001b[39m \u001b[43mEsmModel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_pretrained\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfull_model_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43muse_auth_token\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     73\u001b[0m     tokenizer \u001b[38;5;241m=\u001b[39m EsmTokenizer\u001b[38;5;241m.\u001b[39mfrom_pretrained(full_model_name, use_auth_token\u001b[38;5;241m=\u001b[39mtoken)\n\u001b[1;32m     74\u001b[0m     model \u001b[38;5;241m=\u001b[39m model\u001b[38;5;241m.\u001b[39mto(device)\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/modeling_utils.py:3464\u001b[0m, in \u001b[0;36mPreTrainedModel.from_pretrained\u001b[0;34m(cls, pretrained_model_name_or_path, config, cache_dir, ignore_mismatched_sizes, force_download, local_files_only, token, revision, use_safetensors, weights_only, *model_args, **kwargs)\u001b[0m\n\u001b[1;32m   3461\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m commit_hash \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m   3462\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(config, PretrainedConfig):\n\u001b[1;32m   3463\u001b[0m         \u001b[38;5;66;03m# We make a call to the config file first (which may be absent) to get the commit hash as soon as possible\u001b[39;00m\n\u001b[0;32m-> 3464\u001b[0m         resolved_config_file \u001b[38;5;241m=\u001b[39m \u001b[43mcached_file\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   3465\u001b[0m \u001b[43m            \u001b[49m\u001b[43mpretrained_model_name_or_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3466\u001b[0m \u001b[43m            \u001b[49m\u001b[43mCONFIG_NAME\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3467\u001b[0m \u001b[43m            \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3468\u001b[0m \u001b[43m            \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3469\u001b[0m \u001b[43m            \u001b[49m\u001b[43mresume_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3470\u001b[0m \u001b[43m            \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3471\u001b[0m \u001b[43m            \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3472\u001b[0m \u001b[43m            \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3473\u001b[0m \u001b[43m            \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3474\u001b[0m \u001b[43m            \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msubfolder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3475\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_gated_repo\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3476\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_missing_entries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3477\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_connection_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3478\u001b[0m \u001b[43m        \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   3479\u001b[0m         commit_hash \u001b[38;5;241m=\u001b[39m extract_commit_hash(resolved_config_file, commit_hash)\n\u001b[1;32m   3480\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/utils/hub.py:426\u001b[0m, in \u001b[0;36mcached_file\u001b[0;34m(path_or_repo_id, filename, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, subfolder, repo_type, user_agent, _raise_exceptions_for_gated_repo, _raise_exceptions_for_missing_entries, _raise_exceptions_for_connection_errors, _commit_hash, **deprecated_kwargs)\u001b[0m\n\u001b[1;32m    421\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    422\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYou are trying to access a gated repo.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mMake sure to have access to it at \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    423\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://huggingface.co/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mstr\u001b[39m(e)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    424\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    425\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RepositoryNotFoundError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 426\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    427\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is not a local folder and is not a valid model identifier \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    428\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlisted on \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://huggingface.co/models\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mIf this is a private repository, make sure to pass a token \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    429\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhaving permission to this repo either by logging in with `huggingface-cli login` or by passing \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    430\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`token=`\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    431\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    432\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RevisionNotFoundError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m    433\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    434\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrevision\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is not a valid git identifier (branch name, tag name or commit id) that exists \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    435\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfor this model name. Check the model page at \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    436\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://huggingface.co/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m for available revisions.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    437\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n",
+      "\u001b[0;31mOSError\u001b[0m: facebook/esm2_t48_3B_UR50D is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=`"
      ]
     }
    ],
    "source": [
-    "eedb.calculate_sequence_embeddings(model_name=\"esmc_300m\")"
+    "eedb.calculate_sequence_embeddings(model_name=\"facebook/esm2_t36_3B_UR50D\")"
    ]
   },
   {
@@ -242,6 +270,28 @@
    "cell_type": "code",
    "execution_count": 7,
    "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(1152,)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# get the dimensions of the embeddings get one protein and then get the dimensions of the embedding\n",
+    "# any random protein will do\n",
+    "query = \"MATCH (p:Protein) RETURN p.embedding LIMIT 1\"\n",
+    "result = eedb.db.execute_read(query)\n",
+    "dimensions = np.array(result[0]['p.embedding']).shape\n",
+    "print(dimensions)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -252,7 +302,7 @@
     },
     {
      "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlOhJREFUeJzs3XlcVOX+B/DPObPBAMMmmyLigglqWlmJ5pYGkaaMZustzeWWqbnkTe1G5cWy3br9SstSozK7WiNdRcGy1Fva4lY2LmgpoowgCgMMzHp+fxiTI4iAMyzj5/168bqXc56Z850B6TPPeRZBkiQJRERERNTqic1dABERERG5B4MdERERkZdgsCMiIiLyEgx2RERERF6CwY6IiIjISzDYEREREXkJBjsiIiIiL8FgR0REROQlGOyIiIiIvASDHdFVZPz48YiNjW3uMmqtQxAEPPfcc01eS3NdtyF++ukn9OvXD35+fhAEAXv37m3uktyiNbz3tTl27BgEQcCrr77q8WutXLkSgiDg2LFjl20bGxuL8ePHO7//9ttvIQgCvv32W4/VRy0Pgx01u59++gnTpk1D9+7d4efnh5iYGNx99904fPhwjbaDBw+GIAgQBAGiKEKj0eCaa67Bgw8+iM2bN9f7mqtWrcIbb7zRoDqPHTuGhx9+GJ07d4aPjw8iIyMxcOBAPPvss7XWeOedd9b6HBf/B6H6j++lvlavXl1rPVarFW3atMEtt9xyyZolSUL79u1x/fXXN+i1epusrKxWGSCA8z/nsWPH4uzZs1i8eDE++ugjdOjQoda2F/8uKRQKdOrUCQ899BB+//13t9b1zjvvYOXKlW59zis1fvz4S/478vHxae7yiJqEvLkLIHrppZfw3XffYezYsbj22mthMBjwf//3f7j++uuxc+dO9OjRw6V9dHQ0Fi1aBACoqKjAkSNH8MUXX+Djjz/G3XffjY8//hgKhaLOa65atQr79+/HzJkz61XjkSNHcOONN8LX1xcTJkxAbGwsCgoKsHv3brz00ktYsGBBjcesX78eu3btwg033FCvazz++OO48cYbaxxPTEystb1CocDYsWPx7rvv4vjx47X+x37btm3Iz8/HrFmzAADLli2Dw+GoVz1NrbKyEnK5Z/4kZWVl4e2336413Hnyuu5w9OhRHD9+HMuWLcOkSZPq9Zjq3yWr1Yrdu3fjvffew4YNG/Drr7+ibdu2bqnrnXfeQZs2bVx6iBrKE++9SqXC+++/X+O4TCZz63Vag4EDB6KyshJKpbK5S6Em1HL/mtFVY/bs2Vi1apXLH5977rkHPXv2xIsvvoiPP/7YpX1gYCD+9re/uRx78cUX8fjjj+Odd95BbGwsXnrpJbfWuHjxYpSXl2Pv3r01AlRhYWGN9jExMSgrK8OCBQvw5Zdf1usaAwYMwF133dWguh544AEsXboUn376KebNm1fj/KpVqyCKIu69914AuGzgbU7N1aPS0ntyqn+/goKC6v2YC3+XHn74YXTt2hWPP/44PvzwQ8yfP7/Wx1RUVMDPz++K620IT7z3crm8xt+Hq5Uoii3+95vcj7diqdn169evxifKuLg4dO/eHQcOHKjXc8hkMvz73/9GQkIC/u///g+lpaWXbDt48GBs2LABx48fd96mudy4s6NHjyI6OrrWXrHw8PAaxwICAjBr1iz897//xe7du+v1Ghqjf//+iI2NxapVq2qcs1qtWLt2LYYMGeLspaltbNvq1atxww03ICAgABqNBj179sSbb77pPP/cc89BEIQaz1/b2J/MzEwMHz4cbdu2hUqlQufOnZGeng673X7Z13LheKvqW9aX+qq2fft2jB07FjExMVCpVGjfvj1mzZqFyspKZ5vx48fj7bffdl7j4ueobZzXnj17kJKSAo1GA39/fwwdOhQ7d+6s9fV/9913mD17NsLCwuDn5wetVouioqLLvl4A2LJlCwYMGAA/Pz8EBQVh1KhRLr/z48ePx6BBgwAAY8eOhSAIGDx4cL2e+0K33norAOCPP/4A8NfPVK/X4/7770dwcLDzlr7NZkN6ejo6d+4MlUqF2NhYPPXUUzCbzc7ni42NxW+//YatW7c6388L6yopKcHMmTPRvn17qFQqdOnSBS+99FKN3uKL3/vquo4cOYLx48cjKCgIgYGBePjhh2EymRr8ui+l+mf3v//9D48//jjCwsIQFBSERx55BBaLBSUlJXjooYcQHByM4OBgPPnkk5AkqdbnWrx4MTp06ABfX18MGjQI+/fvr9Hm4MGDuOuuuxASEgIfHx/06dOn1g98v/32G2699Vb4+voiOjoaCxcurLWHXZIkLFy4ENHR0VCr1RgyZAh+++23Gu1qG2M3ePBg9OjRA3q9HkOGDIFarUa7du3w8ssv13j88ePHMXLkSPj5+SE8PByzZs1CdnZ2jefMzc3FmDFjEBkZCR8fH0RHR+Pee++t8+8weQ577KhFkiQJp0+fRvfu3ev9GJlMhvvuuw9paWn43//+h+HDh9fa7p///CdKS0uRn5+PxYsXAwD8/f3rfO4OHTrgq6++wpYtW5z/kbycGTNmYPHixXjuuefq1WtXVlaGM2fO1DgeGhpaa7ACzv+H8f7778cLL7yA3377zeX92rRpE86ePYsHHnjgktfcvHkz7rvvPgwdOtTZy3ngwAF89913mDFjxmVrvtjKlSvh7++P2bNnw9/fH1u2bMEzzzwDo9GIV155pd7PExYWho8++sjlmNVqxaxZs1w+BKxZswYmkwlTpkxBaGgofvzxR7z11lvIz8/HmjVrAACPPPIITp06hc2bN9d4ztr89ttvGDBgADQaDZ588kkoFAq8++67GDx4MLZu3Yqbb77Zpf306dMRHByMZ599FseOHcMbb7yBadOm4bPPPqvzOl999RVSUlLQqVMnPPfcc6isrMRbb72F/v37Y/fu3YiNjcUjjzyCdu3a4YUXXnDeXo2IiKjv2+h09OhRAOd/ly40duxYxMXF4YUXXnAGl0mTJuHDDz/EXXfdhSeeeAI//PADFi1ahAMHDkCn0wEA3njjDUyfPh3+/v745z//CQDOukwmEwYNGoSTJ0/ikUceQUxMDL7//nvMnz8fBQUF9Rrbevfdd6Njx45YtGgRdu/ejffffx/h4eH17omv7d+RUqmERqNxOTZ9+nRERkZiwYIF2LlzJ9577z0EBQXh+++/R0xMDF544QVkZWXhlVdeQY8ePfDQQw+5PD4jIwNlZWWYOnUqqqqq8Oabb+LWW2/Fr7/+6nw/fvvtN/Tv3x/t2rXDvHnz4Ofnh//85z9ITU3F559/Dq1WCwAwGAwYMmQIbDabs917770HX1/fGq/lmWeewcKFC3HHHXfgjjvuwO7du5GUlASLxVKv9+fcuXO4/fbbMXr0aNx9991Yu3Yt5s6di549eyIlJQXA+R7cW2+9FQUFBZgxYwYiIyOxatUqfPPNNy7PZbFYkJycDLPZ7Hw/T548ifXr16OkpASBgYH1qoncSCJqgT766CMJgPTBBx+4HB80aJDUvXv3Sz5Op9NJAKQ333yzzucfPny41KFDh3rXs3//fsnX11cCIPXu3VuaMWOGtG7dOqmioqJG2wtrXLBggQRA2rVrlyRJkvTHH39IAKRXXnnF2f6bb76RAFzyq6CgoM7afvvtNwmANH/+fJfj9957r+Tj4yOVlpY6j40bN87ldc+YMUPSaDSSzWa75PM/++yzUm1/KlasWCEBkP744w/nMZPJVKPdI488IqnVaqmqquqSdUiSJAGQnn322UvW8dhjj0kymUzasmVLnddbtGiRJAiCdPz4ceexqVOn1voaartuamqqpFQqpaNHjzqPnTp1SgoICJAGDhzoPFb9+ocNGyY5HA7n8VmzZkkymUwqKSm55GuRJEnq3bu3FB4eLhUXFzuP7du3TxJFUXrooYecx6p/P9asWVPn813Ydvny5VJRUZF06tQpacOGDVJsbKwkCIL0008/SZL018/0vvvuc3n83r17JQDSpEmTXI7PmTNHAuDy3nfv3l0aNGhQjRrS09MlPz8/6fDhwy7H582bJ8lkMikvL8957OL3vrquCRMmuDxWq9VKoaGhl33948aNu+S/o+TkZGe76p9dcnKyy88uMTFREgRBevTRR53HbDabFB0d7fJaq/8d+/r6Svn5+c7jP/zwgwRAmjVrlvPY0KFDpZ49e7r8/jscDqlfv35SXFyc89jMmTMlANIPP/zgPFZYWCgFBga6/DsrLCyUlEqlNHz4cJfan3rqKQmANG7cOOex6t+Hb775xnls0KBBEgApIyPDecxsNkuRkZHSmDFjnMdee+01CYC0bt0657HKykqpW7duLs+5Z8+eev9+UtPgrVhqcQ4ePIipU6ciMTER48aNa9Bjq3veysrK3FpT9+7dsXfvXvztb3/DsWPH8OabbyI1NRURERFYtmzZJR83Y8YMBAcH1zq54mLPPPMMNm/eXOMrJCSkzsclJCTguuuuc5k9W1FRgS+//BIjRoyo0UtxoaCgIFRUVDRoRnFdLuxdqO6BHDBgAEwmEw4ePNjo583IyMA777yDl19+GUOGDKn1ehUVFThz5gz69esHSZKwZ8+eBl/HbrcjJycHqamp6NSpk/N4VFQU7r//fvzvf/+D0Wh0eczf//53lx7VAQMGwG634/jx45e8TkFBAfbu3Yvx48e7/HyvvfZa3HbbbcjKympw7ReaMGECwsLC0LZtWwwfPhwVFRX48MMP0adPH5d2jz76qMv31dedPXu2y/EnnngCALBhw4bL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MZlMzp0njh49invvvRfp6emXveYNN9yAzz77DLNnz8aNN94If3//WrcAq/bSSy9h165dGD16tDP47N69GxkZGQgJCbnswOXAwEDMmDGjzkkU27dvR1VVVY3j1157rfOadRkzZgwee+wxZGZmon379i69ZpcyadIknD17Frfeeiuio6Nx/PhxvPXWW+jdu7ezxyYpKQkxMTGYOHEi/vGPf0Amk2H58uUICwtDXl6e87n69euH4OBgjBs3Do8//jgEQcBHH33UqNs7v/76K9LT0zFw4EAUFhbW+jvRrVs3dO7cGXPmzMHJkyeh0Wjw+eef19prUb37x+OPP47k5GTIZDLnos0XW7hwITZv3oxbbrkFjz32GORyOd59912YzeZa1/pqrFdeeQUpKSlITEzExIkTncudBAYGNtv2Z7169cK4cePw3nvvOW+t//jjj/jwww+RmprqMnHlhhtuwJIlS7Bw4UJ06dIF4eHhuPXWW/GPf/zDOXFn/PjxuOGGG1BRUYFff/0Va9euxbFjx9CmTRuPvQabzVbj96WaVqt1a09oly5dcMstt2DKlCkwm8144403EBoa6nIb+u2338Ytt9yCnj17YvLkyejUqRNOnz6NHTt2ID8/H/v27QMAPPnkk/joo49w++23Y8aMGc7lTjp06OAy9i0sLAxz5szBokWLMGLECNxxxx3Ys2cPNm7c6Nb39ZFHHsH//d//4b777sOMGTMQFRWFTz75xLngcXUv3pYtWzBt2jSMHTsWXbt2hc1mw0cffQSZTIYxY8a4rR5qgGaZi0t0gerp95f6qqutv7+/FBcXJ/3tb3+TcnJy6n3N8vJy6f7775eCgoIkAJdd+uS7776Tpk6dKvXo0UMKDAyUFAqFFBMTI40fP95lWYzqGmtbkuXcuXPOpQsastxJXUuAXGzs2LESAOnJJ5+s9fzFy4ysXbtWSkpKksLDwyWlUinFxMRIjzzySI0lVnbt2iXdfPPNzjavv/56rcudfPfdd1Lfvn0lX19fqW3bttKTTz4pZWdn11hy4XLLnVzuPamm1+ulYcOGSf7+/lKbNm2kyZMnS/v27ZMASCtWrHC2s9ls0vTp06WwsDBJEASX56jtPd69e7eUnJws+fv7S2q1WhoyZIj0/fffu7Spfv3VS4hUq22JiUv56quvpP79+0u+vr6SRqOR7rzzTkmv19f6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",
+      "image/png": "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+OOPP3DvvffikUcewb59+1wZKxERERHVos5j7B577DEUFxdj7dq11e6///77oVarsWLFigYNsLnhGDsiIiJqTPXJPercY/frr79i0qRJNe5//PHH8csvv9Q9SiIiIiJqUHVO7M6ePYtOnTrVuL9Tp044c+ZMgwRFRERERPVX58TOZDLBw8Ojxv1KpRJlZWUNEhQRERER1V+9ZsWmp6fD19e32n0FBQUNEQ8RERERXaV6JXZjxoypdb8gCNcUDBERERFdvTondna73ZVxEBEREdE1qvMYu6Z08uRJjB8/Hu3bt4enpyciIyOxYMECWCwWp3b79+9Hv3794OHhgbZt2+KVV16pcqy1a9fixhtvhIeHB7p27Yq0tLTGugwiIiIil2oRid3hw4dht9vx/vvv4+DBg3jjjTewbNkyzJ8/39HGaDQiLi4O7dq1w65du/Dqq6/iueeewwcffOBos23bNjz00EMYP3489uzZg/j4eMTHx+PAgQNNcVlEREREDarOBYqbm1dffRVLly7FX3/9BQBYunQpnn76aRgMBsfSLXPnzsW6detw+PBhAMADDzyAkpISrF+/3nGc3r17o3v37li2bFmdzssCxURERNSYXFKguLkpLCxEQECA4/H27dvRv39/p/X4tFotjhw5gosXLzraDBo0yOk4Wq0W27dvr/E8ZrMZRqPR6YeIiIioOWqRid2xY8fwzjvvOK2EYTAYEBIS4tSu8rHBYKi1TeX+6ixevBi+vr6On7Zt2zbUZRARERE1qDondjt37oTNZqtxv9lsxpdfflmvk8+dOxeCINT6U3kbtdKZM2dw9913Y+TIkZg4cWK9znc15s2bh8LCQsfP6dOnXX5OIiIioqtR53InsbGxyMnJQXBwMABArVZj79696NChA4CKAsUPPfQQRo0aVeeTP/XUUxg7dmytbSqPD1QsazZw4ED06dPHaVIEAGg0Gpw7d85pW+VjjUZTa5vK/dVRKpVQKpVXvBYiIiKiplbnxO7yORbVzbmo7zyMoKAgBAUF1antmTNnMHDgQPTo0QMff/wxJBLnzsbY2Fg8/fTTKC8vh1wuBwBs2rQJN9xwA/z9/R1tfvjhB8yYMcPxvE2bNiE2NrZecRMRERE1Rw06xs5VK0+cOXMGAwYMQHh4OP7v//4PeXl5MBgMTmPjHn74YSgUCowfPx4HDx7EmjVr8NZbb2HmzJmONtOnT8d3332H1157DYcPH8Zzzz2HP/74A1OmTHFJ3ERERESNqV5LijWVTZs24dixYzh27BjCwsKc9lX2Evr6+iIjIwOJiYno0aMHWrVqhWeffRb/+c9/HG379OmD1atX45lnnsH8+fMRFRWFdevWoUuXLo16PURERESuUOc6dhKJBJs3b3aUGOnTpw++/PJLR6J1/vx53HXXXbVOsHAHrGNHREREjak+uUe9EjtBEKodR1e5XRAEJnZEREREDag+uUedb8WeOHHimgMjIiIiItepc2LXrl07V8ZBRERERNeozoldVlZWndqFh4dfdTBEREREdPXqnNhFRERUW86kcmwdUDHWzmq1Nlx0RERERFRndU7s9uzZU+12URTxxRdf4O2334a3t3eDBUZERERE9VPnxK5bt25Vtn3//feYO3cujh49itmzZ+Opp55q0OCIiIiIqO6uqkDx7t27MWfOHGzduhUTJkxAWlqaYw1ZIiIiImoa9VpS7Pjx43jggQdw2223ISgoCHq9Hu+++y6TOiIiIqJmoM6J3RNPPIGYmBgUFhbijz/+wOrVq9GhQwdXxkZERERE9VCvlSc8PDxw44031tpu9+7dDRJYc8WVJ4iIiKgxuWTliQULFlxzYERERETkOnXusaMK7LEjIiKixuSSHrua/PzzzygpKUFsbCz8/f2v9XBEREREdJXqnNi9/PLLKC4uRnJyMoCKwsSDBw9GRkYGACA4OBg//PADOnfu7JpIiYiIiKhWdZ4Vu2bNGnTp0sXx+KuvvsKWLVuwdetWnD9/Hj179sTChQtdEiQRERERXVmdE7sTJ07gpptucjxOS0vD/fffj759+yIgIADPPPMMtm/f7pIgiYiIiOjK6pzYWa1WKJVKx+Pt27ejT58+jsetW7fG+fPnGzY6IiIiIqqzOid2kZGR2LJlCwAgKysLR48eRf/+/R37s7OzERgY2PAREhEREVGd1HnyRGJiIqZMmYKtW7dix44diI2NRUxMjGP/5s2bcfPNN7skSCIiIiK6sjondhMnToRUKsX//vc/9O/fv0rB4rNnz2LcuHENHiARERER1Q0LFNcTCxQTERFRY6pP7lHnMXbVGTJkCHJycq7lEERERETUQK4psduyZQtKS0sbKhYiIiIiugbXlNgRERERUfNxTYldu3btIJfLGyoWIiIiIroG9U7ssrKyUDnf4sCBA2jbti2AirVjs7KyGjY6IiIiIqqzeid27du3R15eXpXtFy5cQPv27RskKCIiIiKqv3ondqIoQhCEKtuLi4vh4eHRIEERERERUf3VuUDxzJkzAQCCICApKQkqlcqxz2az4bfffkP37t0bPEAiIiIiqps6J3Z79uwBUNFj9+eff0KhUDj2KRQKdOvWDbNmzWr4CImIiIioTuqc2P34448AgMceewxvvfUWV10gIiIiambqnNhV+vjjj10RBxERERFdIxYoJiIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichNM7IiIiIjcBBM7IiIiIjfBxI6IiIjITTCxIyIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichNM7IiIiIjcBBM7IiIiIjfBxI6IiIjITTCxIyIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichMtLrEzm83o3r07BEHA3r17nfbt378f/fr1g4eHB9q2bYtXXnmlyvPXrl2LG2+8ER4eHujatSvS0tIaKXIiIiIi12pxid3s2bPRunXrKtuNRiPi4uLQrl077Nq1C6+++iqee+45fPDBB44227Ztw0MPPYTx48djz549iI+PR3x8PA4cONCYl0BERETkEoIoimJTB1FXGzduxMyZM/H111+jc+fO2LNnD7p37w4AWLp0KZ5++mkYDAYoFAoAwNy5c7Fu3TocPnwYAPDAAw+gpKQE69evdxyzd+/e6N69O5YtW1anGIxGI3x9fVFYWAi1Wt2wF0hERER0mfrkHi2mx+7cuXOYOHEiPvnkE6hUqir7t2/fjv79+zuSOgDQarU4cuQILl686GgzaNAgp+dptVps377dtcETERERNYIWkdiJooixY8fi8ccfR8+ePattYzAYEBIS4rSt8rHBYKi1TeX+6pjNZhiNRqcfIiIiouaoSRO7uXPnQhCEWn8OHz6Md955B0VFRZg3b16jx7h48WL4+vo6ftq2bdvoMRARERHVhawpT/7UU09h7Nixtbbp0KEDNm/ejO3bt0OpVDrt69mzJ0aPHo1Vq1ZBo9Hg3LlzTvsrH2s0Gsd/q2tTub868+bNw8yZMx2PjUYjkzsiIiJqlpo0sQsKCkJQUNAV27399ttYtGiR4/HZs2eh1WqxZs0a9OrVCwAQGxuLp59+GuXl5ZDL5QCATZs24YYbboC/v7+jzQ8//IAZM2Y4jrVp0ybExsbWeG6lUlkloSQiIiJqjpo0saur8PBwp8fe3t4AgMjISISFhQEAHn74YSxcuBDjx4/HnDlzcODAAbz11lt44403HM+bPn067rjjDrz22msYMmQIvvjiC/zxxx9OJVGIiIiIWqoWMXmiLnx9fZGRkYETJ06gR48eeOqpp/Dss8/iP//5j6NNnz59sHr1anzwwQfo1q0bvvrqK6xbtw5dunRpwsiJiIiIGkaLqmPXHLCOHRERETUmt6xjR0RERES1Y2JHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREdXAYrGgoKAAFoulqUOpE1lTB0BERETU3Oj1eqTqdNiRkQG72QyJUonecXGIHz4c0dHRTR1ejdhjR0RERHSJtLQ0zJ0wAadTUjDOZEKSTIZxJhNOp6Rgzvjx2LhxY1OHWCP22BERERH9Ta/XY9miRRhaXIyJUVEQBMGx776QECzPysLS5GREREQ0y5479tgRERER/S1Vp0NYfj4mhoc7JXUAIAgCJoaHIyw/H6k6XRNFWDsmdkRERESomCixIyMDWrW6SlJXSRAEaNVqbE9Pb5YTKpjYEREREQEwmUywm80IVSprbadRKmE3m2EymRopsrpjYkdEREQEQKVSQaJUIsdsrrWd4e9ZsiqVqpEiqzsmdkREREQAFAoFesfFId1ohCiK1bYRRRHpRiNitVooFIpGjvDKWlRit2HDBvTq1Quenp7w9/dHfHy80/6srCwMGTIEKpUKwcHB+O9//wur1erU5qeffsItt9wCpVKJjh07YuXKlY13AURERNSsDUtIQHZgIJZnZVVJ7kRRxPKsLGQHBmJYQkITRVi7FlPu5Ouvv8bEiRPx4osv4s4774TVasWBAwcc+202G4YMGQKNRoNt27YhJycHjz76KORyOV588UUAwIkTJzBkyBA8/vjj+Oyzz/DDDz9gwoQJCA0NhVarbapLIyIiomYiJiYGk5OSsDQ5GXszM6FVq6FRKmEwm5FuNCI7MBCTk5KaZakTABDEmvoamxGr1YqIiAgsXLgQ48ePr7bNxo0bMXToUJw9exYhISEAgGXLlmHOnDnIy8uDQqHAnDlzsGHDBqeE8MEHH0RBQQG+++67OsViNBrh6+uLwsJCqNXqa784IiIianYOHTqEVJ0O29PTHStPxGq1GJaQ0OhJXX1yjxbRY7d7926cOXMGEokEN998MwwGA7p3745XX30VXbp0AQBs374dXbt2dSR1AKDVajF58mQcPHgQN998M7Zv345BgwY5HVur1WLGjBk1nttsNsN8ySBKo9HYsBdHREREzU50dDSio6NhmTULJpMJKpWqWY6pu1yLGGP3119/AQCee+45PPPMM1i/fj38/f0xYMAAXLhwAQBgMBickjoAjscGg6HWNkajEaWlpdWee/HixfD19XX8tG3btkGvjYiIiJovhUIBPz+/FpHUAU2c2M2dOxeCINT6c/jwYdjtdgDA008/jREjRqBHjx74+OOPIQgC1q5d69IY582bh8LCQsfP6dOnXXo+IiIioqvVpLdin3rqKYwdO7bWNh06dEBOTg6AigGNlZRKJTp06ICsrCwAgEajwc6dO52ee+7cOce+yv9Wbru0jVqthqenZ7XnVyqVUF6hUCERERFRc9CkiV1QUBCCgoKu2K5Hjx5QKpU4cuQIbr/9dgBAeXk5Tp48iXbt2gEAYmNj8cILLyA3NxfBwcEAgE2bNkGtVjsSwtjYWKSlpTkde9OmTYiNjW3IyyIiIiJqEi1ijJ1arcbjjz+OBQsWICMjA0eOHMHkyZMBACNHjgQAxMXFISYmBo888gj27duH9PR0PPPMM0hMTHT0uD3++OP466+/MHv2bBw+fBjvvfcevvzySzz55JNNdm1EREREDaVFzIoFgFdffRUymQyPPPIISktL0atXL2zevBn+/v4AAKlUivXr12Py5MmIjY2Fl5cXxowZg+eff95xjPbt22PDhg148skn8dZbbyEsLAwffvgha9gRERGRW2gRdeyaE9axIyIiosZUn9yjRdyKJSIiIqIrY2JHRERE5CaY2BERERG5iRYzeaK5qBySyKXFiIiIqDFU5hx1mRbBxK6eioqKAIBLixEREVGjKioqgq+vb61tOCu2nux2O86ePQsfHx8IgtDU4bgVo9GItm3b4vTp05xx7Ib4/rovvrfuje9v0xNFEUVFRWjdujUkktpH0bHHrp4kEgnCwsKaOgy3plar+cvDjfH9dV98b90b39+mdaWeukqcPEFERETkJpjYEREREbkJJnbUbCiVSixYsMCxti+5F76/7ovvrXvj+9uycPIEERERkZtgjx0RERGRm2BiR0REROQmmNgRERERuQkmdtToTp48ifHjx6N9+/bw9PREZGQkFixYAIvF4tRu//796NevHzw8PNC2bVu88sorVY61du1a3HjjjfDw8EDXrl2RlpbWWJdBNXjhhRfQp08fqFQq+Pn5VdsmKysLQ4YMgUqlQnBwMP773//CarU6tfnpp59wyy23QKlUomPHjli5cqXrg6ersmTJEkRERMDDwwO9evXCzp07mzokuoItW7bg3nvvRevWrSEIAtatW+e0XxRFPPvsswgNDYWnpycGDRqEzMxMpzYXLlzA6NGjoVar4efnh/Hjx6O4uLgRr4Kqw8SOGt3hw4dht9vx/vvv4+DBg3jjjTewbNkyzJ8/39HGaDQiLi4O7dq1w65du/Dqq6/iueeewwcffOBos23bNjz00EMYP3489uzZg/j4eMTHx+PAgQNNcVn0N4vFgpEjR2Ly5MnV7rfZbBgyZAgsFgu2bduGVatWYeXKlXj22WcdbU6cOIEhQ4Zg4MCB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",
       "text/plain": [
        "
" ] @@ -322,7 +372,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -330,7 +380,7 @@ "output_type": "stream", "text": [ "Resulst for index AAP20891.1 are:\n", - "[('AAP20891.1', 0.0), ('P62593', 0.0), ('AGQ50511.1', 0.00016200621801287785), ('ABB97007.1', 0.0001810048295400879), ('AFN21551.1', 0.00018909362988450695), ('CAC67290.1', 0.00021654775310264718), ('ADL13944.1', 0.0002567003210336427), ('AAK30619.1', 0.0002616398020808264), ('AAL29433.1', 0.0002646931927183793), ('ACJ43254.1', 0.0002669990760338914)]\n" + "[('AAP20891.1', 0.0), ('ADL13944.1', 5.6168107638088216e-05), ('AFN21551.1', 6.611455559601964e-05), ('AAF05613.1', 0.00010320505315297712), ('CAC67290.1', 0.00012422009260193434), ('AAL29433.1', 0.00012499919288500028), ('ABB97007.1', 0.00012965265937237014), ('CAA74912.2', 0.00013823680560853813), ('CBX53726.1', 0.00015387097994867815), ('AGQ50511.1', 0.00015501224370340072)]\n" ] } ], @@ -374,7 +424,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -423,41 +473,29 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n",
-       "\"ipywidgets\" for Jupyter support\n",
-       "  warnings.warn('install \"ipywidgets\" for Jupyter support')\n",
-       "
\n" - ], - "text/plain": [ - "/home/nab/anaconda3/envs/pyeed_niklas/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n", - "\"ipywidgets\" for Jupyter support\n", - " warnings.warn('install \"ipywidgets\" for Jupyter support')\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[('AAP20891.1', 1.0), ('P62593', 1.0), ('AGQ50511.1', 0.9999189376831055), ('ABB97007.1', 0.999909520149231), ('AFN21551.1', 0.9999054670333862), ('CAC67290.1', 0.9998918771743774), ('ADL13944.1', 0.9998717904090881), ('AAK30619.1', 0.9998692274093628), ('AAL29433.1', 0.9998676776885986), ('ACJ43254.1', 0.9998666048049927)]\n"
+     "ename": "ClientError",
+     "evalue": "{code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 1152 dimensions, but indexed vectors have 960.}",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mClientError\u001b[0m                               Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[11], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;66;03m# here we use the vector index to find the closest matches\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43met\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfind_nearest_neighbors_based_on_vector_index\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m      3\u001b[0m \u001b[43m    \u001b[49m\u001b[43mdb\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meedb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdb\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m      4\u001b[0m \u001b[43m    \u001b[49m\u001b[43mquery_protein_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprotein_id_database\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtolist\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m      5\u001b[0m \u001b[43m    \u001b[49m\u001b[43mindex_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvector_index_Protein_embedding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m      6\u001b[0m \u001b[43m    \u001b[49m\u001b[43mnumber_of_neighbors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m      7\u001b[0m \u001b[43m)\u001b[49m\n\u001b[1;32m      9\u001b[0m \u001b[38;5;28mprint\u001b[39m(results)\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/analysis/embedding_analysis.py:415\u001b[0m, in \u001b[0;36mEmbeddingTool.find_nearest_neighbors_based_on_vector_index\u001b[0;34m(self, db, query_protein_id, index_name, number_of_neighbors)\u001b[0m\n\u001b[1;32m    406\u001b[0m     logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIndex \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mindex_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is populated, finding nearest neighbors\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m    408\u001b[0m query_find_nearest_neighbors \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m    409\u001b[0m \u001b[38;5;124mMATCH (source:Protein \u001b[39m\u001b[38;5;130;01m{{\u001b[39;00m\u001b[38;5;124maccession_id: \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mquery_protein_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m}}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\n\u001b[1;32m    410\u001b[0m \u001b[38;5;124mWITH source.embedding AS embedding\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    413\u001b[0m \u001b[38;5;124mRETURN fprotein.accession_id, score\u001b[39m\n\u001b[1;32m    414\u001b[0m \u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[0;32m--> 415\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mdb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mquery_find_nearest_neighbors\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    416\u001b[0m neighbors: \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mtuple\u001b[39m[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mfloat\u001b[39m]] \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m    417\u001b[0m     (\u001b[38;5;28mstr\u001b[39m(record[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfprotein.accession_id\u001b[39m\u001b[38;5;124m\"\u001b[39m]), \u001b[38;5;28mfloat\u001b[39m(record[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mscore\u001b[39m\u001b[38;5;124m\"\u001b[39m]))\n\u001b[1;32m    418\u001b[0m     \u001b[38;5;28;01mfor\u001b[39;00m record \u001b[38;5;129;01min\u001b[39;00m results\n\u001b[1;32m    419\u001b[0m ]\n\u001b[1;32m    420\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m neighbors\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/dbconnect.py:45\u001b[0m, in \u001b[0;36mDatabaseConnector.execute_read\u001b[0;34m(self, query, parameters)\u001b[0m\n\u001b[1;32m     34\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     35\u001b[0m \u001b[38;5;124;03mExecutes a read (MATCH) query using the Neo4j driver.\u001b[39;00m\n\u001b[1;32m     36\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     42\u001b[0m \u001b[38;5;124;03m    list[dict]: The result of the query as a list of dictionaries.\u001b[39;00m\n\u001b[1;32m     43\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     44\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdriver\u001b[38;5;241m.\u001b[39msession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 45\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute_read\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquery\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/work/session.py:661\u001b[0m, in \u001b[0;36mSession.execute_read\u001b[0;34m(self, transaction_function, *args, **kwargs)\u001b[0m\n\u001b[1;32m    592\u001b[0m \u001b[38;5;129m@NonConcurrentMethodChecker\u001b[39m\u001b[38;5;241m.\u001b[39mnon_concurrent_method\n\u001b[1;32m    593\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mexecute_read\u001b[39m(\n\u001b[1;32m    594\u001b[0m     \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    598\u001b[0m     \u001b[38;5;241m*\u001b[39margs: _P\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: _P\u001b[38;5;241m.\u001b[39mkwargs\n\u001b[1;32m    599\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m _R:\n\u001b[1;32m    600\u001b[0m \u001b[38;5;250m    \u001b[39m\u001b[38;5;124;03m\"\"\"Execute a unit of work in a managed read transaction.\u001b[39;00m\n\u001b[1;32m    601\u001b[0m \n\u001b[1;32m    602\u001b[0m \u001b[38;5;124;03m    .. note::\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    659\u001b[0m \u001b[38;5;124;03m    .. versionadded:: 5.0\u001b[39;00m\n\u001b[1;32m    660\u001b[0m \u001b[38;5;124;03m    \"\"\"\u001b[39;00m\n\u001b[0;32m--> 661\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_transaction\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    662\u001b[0m \u001b[43m        \u001b[49m\u001b[43mREAD_ACCESS\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mTelemetryAPI\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTX_FUNC\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    663\u001b[0m \u001b[43m        \u001b[49m\u001b[43mtransaction_function\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m    664\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/work/session.py:552\u001b[0m, in \u001b[0;36mSession._run_transaction\u001b[0;34m(self, access_mode, api, transaction_function, args, kwargs)\u001b[0m\n\u001b[1;32m    550\u001b[0m tx \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_transaction\n\u001b[1;32m    551\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 552\u001b[0m     result \u001b[38;5;241m=\u001b[39m \u001b[43mtransaction_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    553\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mCancelledError:\n\u001b[1;32m    554\u001b[0m     \u001b[38;5;66;03m# if cancellation callback has not been called yet:\u001b[39;00m\n\u001b[1;32m    555\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_transaction \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/dbconnect.py:222\u001b[0m, in \u001b[0;36mDatabaseConnector._run_query\u001b[0;34m(tx, query, parameters)\u001b[0m\n\u001b[1;32m    220\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Executes a Cypher query in the provided transaction.\"\"\"\u001b[39;00m\n\u001b[1;32m    221\u001b[0m result \u001b[38;5;241m=\u001b[39m tx\u001b[38;5;241m.\u001b[39mrun(query, parameters)\n\u001b[0;32m--> 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [record\u001b[38;5;241m.\u001b[39mdata() \u001b[38;5;28;01mfor\u001b[39;00m record \u001b[38;5;129;01min\u001b[39;00m result]\n",
+      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/dbconnect.py:222\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m    220\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Executes a Cypher query in the provided transaction.\"\"\"\u001b[39;00m\n\u001b[1;32m    221\u001b[0m result \u001b[38;5;241m=\u001b[39m tx\u001b[38;5;241m.\u001b[39mrun(query, parameters)\n\u001b[0;32m--> 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [record\u001b[38;5;241m.\u001b[39mdata() \u001b[38;5;28;01mfor\u001b[39;00m record \u001b[38;5;129;01min\u001b[39;00m result]\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/work/result.py:270\u001b[0m, in \u001b[0;36mResult.__iter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    268\u001b[0m     \u001b[38;5;28;01myield\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_record_buffer\u001b[38;5;241m.\u001b[39mpopleft()\n\u001b[1;32m    269\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_streaming:\n\u001b[0;32m--> 270\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfetch_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    271\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_discarding:\n\u001b[1;32m    272\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_discard()\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_common.py:178\u001b[0m, in \u001b[0;36mConnectionErrorHandler.__getattr__..outer..inner\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    176\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21minner\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m    177\u001b[0m     \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 178\u001b[0m         \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    179\u001b[0m     \u001b[38;5;28;01mexcept\u001b[39;00m (Neo4jError, ServiceUnavailable, SessionExpired) \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m    180\u001b[0m         \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39miscoroutinefunction(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__on_error)\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py:850\u001b[0m, in \u001b[0;36mBolt.fetch_message\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    846\u001b[0m \u001b[38;5;66;03m# Receive exactly one message\u001b[39;00m\n\u001b[1;32m    847\u001b[0m tag, fields \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minbox\u001b[38;5;241m.\u001b[39mpop(\n\u001b[1;32m    848\u001b[0m     hydration_hooks\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mresponses[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mhydration_hooks\n\u001b[1;32m    849\u001b[0m )\n\u001b[0;32m--> 850\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtag\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfields\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    851\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39midle_since \u001b[38;5;241m=\u001b[39m monotonic()\n\u001b[1;32m    852\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m res\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_bolt5.py:369\u001b[0m, in \u001b[0;36mBolt5x0._process_message\u001b[0;34m(self, tag, fields)\u001b[0m\n\u001b[1;32m    367\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_server_state_manager\u001b[38;5;241m.\u001b[39mstate \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbolt_states\u001b[38;5;241m.\u001b[39mFAILED\n\u001b[1;32m    368\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 369\u001b[0m     \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_failure\u001b[49m\u001b[43m(\u001b[49m\u001b[43msummary_metadata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    370\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ServiceUnavailable, DatabaseUnavailable):\n\u001b[1;32m    371\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool:\n",
+      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_common.py:245\u001b[0m, in \u001b[0;36mResponse.on_failure\u001b[0;34m(self, metadata)\u001b[0m\n\u001b[1;32m    243\u001b[0m handler \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandlers\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_summary\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m    244\u001b[0m Util\u001b[38;5;241m.\u001b[39mcallback(handler)\n\u001b[0;32m--> 245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m Neo4jError\u001b[38;5;241m.\u001b[39mhydrate(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mmetadata)\n",
+      "\u001b[0;31mClientError\u001b[0m: {code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 1152 dimensions, but indexed vectors have 960.}"
      ]
     }
    ],
@@ -502,7 +540,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "pyeed_niklas_env",
    "language": "python",
    "name": "python3"
   },
diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py
index 0cb6770e..fc1cb79a 100644
--- a/src/pyeed/embedding.py
+++ b/src/pyeed/embedding.py
@@ -1,4 +1,5 @@
 import gc
+import logging
 import os
 from typing import Any, Tuple, Union
 
@@ -6,13 +7,15 @@
 import torch
 from esm.models.esm3 import ESM3
 from esm.models.esmc import ESMC
-from esm.sdk.api import ESM3InferenceClient, ESMProtein, LogitsConfig
+from esm.sdk.api import ESM3InferenceClient, ESMProtein, LogitsConfig, SamplingConfig
 from huggingface_hub import HfFolder, login
 from numpy.typing import NDArray
 from transformers import EsmModel, EsmTokenizer
 
 from pyeed.dbconnect import DatabaseConnector
 
+logger = logging.getLogger(__name__)
+
 
 def get_hf_token() -> str:
     """Get or request Hugging Face token."""
@@ -34,36 +37,37 @@ def get_hf_token() -> str:
 def load_model_and_tokenizer(
     model_name: str,
 ) -> Tuple[
-    Union[EsmModel, ESMC, ESM3InferenceClient],  # Added ESMC to the Union type
+    Union[
+        EsmModel,
+        ESMC,
+        ESM3InferenceClient,
+        torch.nn.DataParallel,
+        ESM3,
+    ],  # Updated return type
     Union[EsmTokenizer, None],
     torch.device,
 ]:
     """
-    Loads either an ESM-3 (using ESMC) or an ESM-2 (using Transformers) model,
-    depending on the `model_name` provided.
+    Loads either an ESM++, ESM-3 (using ESMC or ESM3) or an ESM-2 (using Transformers) model,
+    depending on the `model_name` provided. Uses multiple GPUs in parallel if available.
 
     Args:
-        model_name (str): The model name or identifier (e.g., 'esmc' or 'esm2_t12_35M_UR50D').
+        model_name (str): The model name or identifier.
 
     Returns:
         Tuple of (model, tokenizer, device)
     """
-    # Get token only when loading model
     token = get_hf_token()
+    # Default device is the first CUDA device if available, else CPU.
     device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+    tokenizer = None
 
-    # Check if this is an ESM-3 variant
     if "esmc" in model_name.lower():
-        # Using ESMC from_pretrained
         model: Any = ESMC.from_pretrained(model_name)
         model = model.to(device)
-        return model, None, device
     elif "esm3-sm-open-v1" in model_name.lower():
         model: Any = ESM3.from_pretrained("esm3_sm_open_v1").to(device)
-
-        return model, None, device
     else:
-        # Otherwise, assume it's an ESM-2 model on Hugging Face
         full_model_name = (
             model_name
             if model_name.startswith("facebook/")
@@ -72,40 +76,56 @@ def load_model_and_tokenizer(
         model: Any = EsmModel.from_pretrained(full_model_name, use_auth_token=token)
         tokenizer = EsmTokenizer.from_pretrained(full_model_name, use_auth_token=token)
         model = model.to(device)
-        return model, tokenizer, device
+
+    # Check if multiple GPUs are available and wrap the model accordingly
+    if torch.cuda.device_count() > 1 and device.type == "cuda":
+        logger.info(f"Using {torch.cuda.device_count()} GPUs for parallel inference.")
+        model = torch.nn.DataParallel(model)
+
+    return model, tokenizer, device
 
 
 def get_batch_embeddings(
     batch_sequences: list[str],
-    model: Union[EsmModel, ESMC],
+    model: Union[
+        EsmModel,
+        ESMC,
+        torch.nn.DataParallel,
+        ESM3InferenceClient,
+        ESM3,
+    ],
     tokenizer_or_alphabet: Union[EsmTokenizer, None],
     device: torch.device,
     pool_embeddings: bool = True,
 ) -> list[NDArray[np.float64]]:
     """
     Generates mean-pooled embeddings for a batch of sequences.
+    Supports ESM++, ESM-2 and ESM-3 models.
 
     Args:
-        batch_sequences (list[str]): List of sequence strings to be embedded.
-        model (Union[EsmModel, ESMC]): Loaded model (ESM-2 or ESM-3).
-        tokenizer_or_alphabet (Union[EsmTokenizer, None]): Tokenizer if ESM-2, None if ESM-3.
-        device (torch.device): Device on which to run inference (CPU or GPU).
-        pool_embeddings (bool): Whether to pool embeddings across sequence length.
+        batch_sequences (list[str]): List of sequence strings.
+        model: Loaded model (could be wrapped in DataParallel).
+        tokenizer_or_alphabet: Tokenizer if needed.
+        device: Inference device (CPU/GPU).
+        pool_embeddings (bool): Whether to average embeddings across the sequence length.
 
     Returns:
-        list[NDArray[np.float64]]: A list of embeddings as NumPy arrays.
+        List of embeddings as NumPy arrays.
     """
-    if isinstance(model, ESMC):
+    # First, determine the base model type
+    base_model = model.module if isinstance(model, torch.nn.DataParallel) else model
+
+    if isinstance(base_model, ESMC):
+        # For ESMC models
+        embedding_list = []
         with torch.no_grad():
-            embedding_list = []
             for sequence in batch_sequences:
-                # Process each sequence individually
                 protein = ESMProtein(sequence=sequence)
-                protein_tensor = model.encode(protein)
-                logits_output = model.logits(
+                # Use the model directly - DataParallel handles internal distribution
+                protein_tensor = base_model.encode(protein)
+                logits_output = base_model.logits(
                     protein_tensor, LogitsConfig(sequence=True, return_embeddings=True)
                 )
-                # Convert embeddings to numpy array - ensure embeddings is not None
                 if logits_output.embeddings is None:
                     raise ValueError(
                         "Model did not return embeddings. Check LogitsConfig settings."
@@ -114,9 +134,27 @@ def get_batch_embeddings(
                 if pool_embeddings:
                     embeddings = embeddings.mean(axis=1)
                 embedding_list.append(embeddings[0])
-
         return embedding_list
-
+    elif isinstance(base_model, ESM3):
+        # For ESM3 models
+        embedding_list = []
+        with torch.no_grad():
+            for sequence in batch_sequences:
+                protein = ESMProtein(sequence=sequence)
+                sequence_encoding = base_model.encode(protein)
+                result = base_model.forward_and_sample(
+                    sequence_encoding,
+                    SamplingConfig(return_per_residue_embeddings=True),
+                )
+                if result is None or result.per_residue_embedding is None:
+                    raise ValueError("Model did not return embeddings")
+                embeddings = (
+                    result.per_residue_embedding.to(torch.float32).cpu().numpy()
+                )
+                if pool_embeddings:
+                    embeddings = embeddings.mean(axis=0)
+                embedding_list.append(embeddings)
+        return embedding_list
     else:
         # ESM-2 logic
         assert tokenizer_or_alphabet is not None, "Tokenizer required for ESM-2 models"
@@ -124,11 +162,15 @@ def get_batch_embeddings(
             batch_sequences, padding=True, truncation=True, return_tensors="pt"
         ).to(device)
         with torch.no_grad():
-            outputs = model(**inputs)
-        embeddings = outputs.last_hidden_state.cpu().numpy()
+            outputs = model(**inputs, output_hidden_states=True)
+
+        # Get last hidden state for each sequence
+        hidden_states = outputs.last_hidden_state.cpu().numpy()
+
         if pool_embeddings:
-            return [embedding.mean(axis=0) for embedding in embeddings]
-        return list(embeddings)
+            # Mean pooling across sequence length
+            return [embedding.mean(axis=0) for embedding in hidden_states]
+        return list(hidden_states)
 
 
 def calculate_single_sequence_embedding_last_hidden_state(
@@ -259,12 +301,9 @@ def get_single_embedding_last_hidden_state(
             logits_output = model.logits(
                 protein_tensor,
                 LogitsConfig(
-                    sequence=True,
-                    return_embeddings=True,
-                    return_hidden_states=True,
+                    sequence=True, return_embeddings=True, return_hidden_states=True
                 ),
             )
-            # Ensure hidden_states is not None before accessing it
             if logits_output.hidden_states is None:
                 raise ValueError(
                     "Model did not return hidden states. Check LogitsConfig settings."
@@ -287,13 +326,10 @@ def get_single_embedding_last_hidden_state(
             if embedding is None or embedding.per_residue_embedding is None:
                 raise ValueError("Model did not return embeddings")
             embedding = embedding.per_residue_embedding.to(torch.float32).cpu().numpy()
-
         else:
             # ESM-2 logic
             inputs = tokenizer(sequence, return_tensors="pt").to(device)
             outputs = model(**inputs, output_hidden_states=True, return_dict=True)
-            # Extract per-residue embeddings (excluding special tokens)
-            # [0] to get first batch, [1:-1] to remove start/end tokens
             embedding = outputs.last_hidden_state[0, 1:-1, :].detach().cpu().numpy()
 
     # normalize the embedding
diff --git a/src/pyeed/main.py b/src/pyeed/main.py
index d4a520b9..18c83fc6 100644
--- a/src/pyeed/main.py
+++ b/src/pyeed/main.py
@@ -347,9 +347,9 @@ def fetch_dna_entries_for_proteins(self, ids: list[str] | None = None) -> None:
             try:
                 batch_ids = nucleotide_ids[i : i + BATCH_SIZE]
                 self.fetch_ncbi_nucleotide(batch_ids)
-                logger.info(f"Successfully fetched batch {i//BATCH_SIZE + 1}")
+                logger.info(f"Successfully fetched batch {i // BATCH_SIZE + 1}")
             except Exception as e:
-                logger.error(f"Error fetching batch {i//BATCH_SIZE + 1}: {str(e)}")
+                logger.error(f"Error fetching batch {i // BATCH_SIZE + 1}: {str(e)}")
                 continue
 
         # Process protein-DNA relationships in batches
@@ -419,11 +419,11 @@ def fetch_dna_entries_for_proteins(self, ids: list[str] | None = None) -> None:
                         batch_create_query, {"relationships": new_relationships}
                     )
                     logger.info(
-                        f"Successfully processed relationship batch {i//BATCH_SIZE + 1}"
+                        f"Successfully processed relationship batch {i // BATCH_SIZE + 1}"
                     )
             except Exception as e:
                 logger.error(
-                    f"Error processing relationship batch {i//BATCH_SIZE + 1}: {str(e)}"
+                    f"Error processing relationship batch {i // BATCH_SIZE + 1}: {str(e)}"
                 )
                 continue
 
@@ -434,12 +434,45 @@ def create_coding_sequences_regions(self) -> None:
         It finds the nucleotide start and end positions and create a Region object for the corresponding DNA sequence.
         Create the region object with the right annotation. And then connect it to the DNA sequence.
         """
+
+        # in case of multiple DNA entires per Protein we need to create a Region for each DNA entry
+        # some of the DNA entries might even not have start and end vlaues on the ENCODES endge, in this case please take the entire sequence length
+        """
+        This Cypher query creates coding sequence regions for DNA sequences that don't already have them.
+        
+        The query:
+        1. Finds all Protein-DNA pairs connected by an ENCODES relationship
+        2. Filters for cases where the DNA doesn't already have a coding sequence Region for that protein
+        3. Creates a new Region node with 'coding sequence' annotation and the protein's ID
+        4. Creates a HAS_REGION relationship from the DNA to the new Region
+        5. Sets the start position to either:
+           - The start value from the ENCODES relationship if it exists
+           - 0 (beginning of sequence) if no start value is specified
+        6. Sets the end position to either:
+           - The end value from the ENCODES relationship if it exists
+           - The full DNA sequence length minus 1 if no end value is specified
+        """
         query = """
-        MATCH (p:Protein)
-        WHERE p.nucleotide_id IS NOT NULL
+        MATCH (d:DNA)-[rel_encode:ENCODES]->(p:Protein)
+        WHERE NOT EXISTS((d)-[:HAS_REGION]->(:Region {annotation: 'coding sequence', sequence_id: p.accession_id}))
         CREATE (r:Region {annotation: 'coding sequence', sequence_id: p.accession_id})
-        WITH p, r
-        MATCH (d:DNA {accession_id: p.nucleotide_id})
-        CREATE (d)-[:HAS_REGION {start: p.nucleotide_start, end: p.nucleotide_end}]->(r)
+        CREATE (d)-[rel:HAS_REGION {
+            start: CASE 
+                WHEN rel_encode.start IS NOT NULL THEN rel_encode.start 
+                ELSE 0 
+            END, 
+            end: CASE 
+                WHEN rel_encode.end IS NOT NULL THEN rel_encode.end 
+                ELSE size(d.sequence) - 1 
+            END
+        }]->(r)
         """
         self.db.execute_write(query)
+
+        # Log the number of regions created
+        count_query = """
+        MATCH (d:DNA)-[:HAS_REGION]->(r:Region {annotation: 'coding sequence'})
+        RETURN count(r) as region_count
+        """
+        result = self.db.execute_read(count_query)
+        logger.info(f"Created {result[0]['region_count']} coding sequence regions")

From 5c87e130478db5c77fb9aa68aadd1b7ea270947e Mon Sep 17 00:00:00 2001
From: Niklas Abraham GPU 
Date: Wed, 26 Mar 2025 16:58:54 +0000
Subject: [PATCH 4/9] fixed standard error

---
 docs/usage/embeddings_analysis.ipynb     | 217 +++++++++++------------
 docs/usage/mutation_analysis.ipynb       |  32 +++-
 src/pyeed/analysis/sequence_alignment.py |  20 ++-
 src/pyeed/analysis/standard_numbering.py |   5 +-
 4 files changed, 139 insertions(+), 135 deletions(-)

diff --git a/docs/usage/embeddings_analysis.ipynb b/docs/usage/embeddings_analysis.ipynb
index d831243c..b7fa1f61 100644
--- a/docs/usage/embeddings_analysis.ipynb
+++ b/docs/usage/embeddings_analysis.ipynb
@@ -18,9 +18,18 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 1,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+      "  from .autonotebook import tqdm as notebook_tqdm\n"
+     ]
+    }
+   ],
    "source": [
     "import sys\n",
     "import numpy as np\n",
@@ -47,7 +56,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [
     {
@@ -70,7 +79,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -87,7 +96,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [
     {
@@ -111,84 +120,84 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "\u001b[32m2025-03-26 11:33:06.267\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 0 sequences in the database.\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:06.268\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:06.282\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.458\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.484\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.507\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.530\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.552\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.576\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.600\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.624\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.647\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.669\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.797\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.820\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.842\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.866\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.913\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.937\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.956\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:07.981\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.005\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.029\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.475\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.499\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.523\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.546\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.570\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.595\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.619\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.643\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.668\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.684\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.718\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.742\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.767\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.791\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.816\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.840\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.864\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.890\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.914\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:08.937\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.646\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.669\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.695\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.718\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.743\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.767\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.790\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.815\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.838\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:09.863\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.058\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.083\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.107\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.129\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.152\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.176\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.200\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.224\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.248\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.273\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.366\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.390\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.414\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.438\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.462\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.486\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.509\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n",
-      "\u001b[32m2025-03-26 11:33:10.534\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n"
+      "\u001b[32m2025-03-26 11:37:31.838\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m87\u001b[0m - \u001b[1mFound 0 sequences in the database.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:31.839\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.main\u001b[0m:\u001b[36mfetch_from_primary_db\u001b[0m:\u001b[36m89\u001b[0m - \u001b[1mFetching 68 sequences from ncbi_protein.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:31.880\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.primary_db_adapter\u001b[0m:\u001b[36mexecute_requests\u001b[0m:\u001b[36m140\u001b[0m - \u001b[1mStarting requests for 7 batches.\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:32.848\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAP20891.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:32.891\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAJ85677.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:32.937\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein SAQ02853.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:32.957\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CDR98216.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.001\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109963600.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.050\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA41038.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.068\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein WP_109874025.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.087\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46344.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.107\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APG33178.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.159\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKC98298.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.212\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KJO56189.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.238\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLP91446.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.263\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA46346.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.287\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA74912.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.311\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AFN21551.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.334\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACB22021.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.362\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76794.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.385\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76795.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.440\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CCG28759.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.464\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein KLG19745.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:33.980\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32891.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.008\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA76796.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.032\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAD24670.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.055\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ARF45649.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.079\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CTA52364.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.102\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ADL13944.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.127\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AGQ50511.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.152\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AKA60778.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.177\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein APT65830.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.229\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein HAH6232254.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.263\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein QDO66746.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.288\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CBX53726.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.312\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC32889.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.337\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA64682.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.361\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71322.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.386\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71323.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.409\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAA71324.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.433\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AEC32455.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.456\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22538.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.479\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD22539.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:34.997\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ABB97007.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.021\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein ACJ43254.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.046\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAC05975.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.069\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BCD58813.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.093\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK17194.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.126\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAD33116.2 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.150\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAB92324.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.175\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL03985.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.200\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF19151.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.224\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05613.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.257\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05614.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.282\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05612.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.307\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF05611.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.330\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAM15527.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.354\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29433.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.378\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29434.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.403\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29435.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.427\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAL29436.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.451\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43229.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.475\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC43230.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.893\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAG44570.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.911\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK14792.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.928\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAK30619.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.946\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein BAB16308.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.964\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein AAF66653.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:35.983\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85660.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:36.004\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC85661.1 in database\u001b[0m\n",
+      "\u001b[32m2025-03-26 11:37:36.025\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mpyeed.adapter.ncbi_protein_mapper\u001b[0m:\u001b[36madd_to_db\u001b[0m:\u001b[36m301\u001b[0m - \u001b[1mAdded/updated NCBI protein CAC67290.1 in database\u001b[0m\n"
      ]
     }
    ],
@@ -207,7 +216,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
@@ -215,41 +224,13 @@
      "output_type": "stream",
      "text": [
       "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/modeling_utils.py:3437: FutureWarning: The `use_auth_token` argument is deprecated and will be removed in v5 of Transformers. Please use `token` instead.\n",
-      "  warnings.warn(\n"
-     ]
-    },
-    {
-     "ename": "OSError",
-     "evalue": "facebook/esm2_t48_3B_UR50D is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=`",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mHTTPError\u001b[0m                                 Traceback (most recent call last)",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_http.py:409\u001b[0m, in \u001b[0;36mhf_raise_for_status\u001b[0;34m(response, endpoint_name)\u001b[0m\n\u001b[1;32m    408\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 409\u001b[0m     \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    410\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/requests/models.py:1024\u001b[0m, in \u001b[0;36mResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1023\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m http_error_msg:\n\u001b[0;32m-> 1024\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m HTTPError(http_error_msg, response\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n",
-      "\u001b[0;31mHTTPError\u001b[0m: 404 Client Error: Not Found for url: https://huggingface.co/facebook/esm2_t48_3B_UR50D/resolve/main/config.json",
-      "\nThe above exception was the direct cause of the following exception:\n",
-      "\u001b[0;31mRepositoryNotFoundError\u001b[0m                   Traceback (most recent call last)",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/utils/hub.py:403\u001b[0m, in \u001b[0;36mcached_file\u001b[0;34m(path_or_repo_id, filename, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, subfolder, repo_type, user_agent, _raise_exceptions_for_gated_repo, _raise_exceptions_for_missing_entries, _raise_exceptions_for_connection_errors, _commit_hash, **deprecated_kwargs)\u001b[0m\n\u001b[1;32m    401\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m    402\u001b[0m     \u001b[38;5;66;03m# Load from URL or cache if already cached\u001b[39;00m\n\u001b[0;32m--> 403\u001b[0m     resolved_file \u001b[38;5;241m=\u001b[39m \u001b[43mhf_hub_download\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    404\u001b[0m \u001b[43m        \u001b[49m\u001b[43mpath_or_repo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    405\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    406\u001b[0m \u001b[43m        \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msubfolder\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    407\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    408\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    409\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    410\u001b[0m \u001b[43m        \u001b[49m\u001b[43muser_agent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43muser_agent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    411\u001b[0m \u001b[43m        \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    412\u001b[0m \u001b[43m        \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    413\u001b[0m \u001b[43m        \u001b[49m\u001b[43mresume_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    414\u001b[0m \u001b[43m        \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    415\u001b[0m \u001b[43m        \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    416\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    417\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m GatedRepoError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py:114\u001b[0m, in \u001b[0;36mvalidate_hf_hub_args.._inner_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    112\u001b[0m     kwargs \u001b[38;5;241m=\u001b[39m smoothly_deprecate_use_auth_token(fn_name\u001b[38;5;241m=\u001b[39mfn\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m, has_token\u001b[38;5;241m=\u001b[39mhas_token, kwargs\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[0;32m--> 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:862\u001b[0m, in \u001b[0;36mhf_hub_download\u001b[0;34m(repo_id, filename, subfolder, repo_type, revision, library_name, library_version, cache_dir, local_dir, user_agent, force_download, proxies, etag_timeout, token, local_files_only, headers, endpoint, resume_download, force_filename, local_dir_use_symlinks)\u001b[0m\n\u001b[1;32m    861\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 862\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_hf_hub_download_to_cache_dir\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    863\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# Destination\u001b[39;49;00m\n\u001b[1;32m    864\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    865\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# File info\u001b[39;49;00m\n\u001b[1;32m    866\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    867\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfilename\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    868\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    869\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    870\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# HTTP info\u001b[39;49;00m\n\u001b[1;32m    871\u001b[0m \u001b[43m        \u001b[49m\u001b[43mendpoint\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mendpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    872\u001b[0m \u001b[43m        \u001b[49m\u001b[43metag_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43metag_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    873\u001b[0m \u001b[43m        \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhf_headers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    874\u001b[0m \u001b[43m        \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    875\u001b[0m \u001b[43m        \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    876\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# Additional options\u001b[39;49;00m\n\u001b[1;32m    877\u001b[0m \u001b[43m        \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    878\u001b[0m \u001b[43m        \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    879\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:969\u001b[0m, in \u001b[0;36m_hf_hub_download_to_cache_dir\u001b[0;34m(cache_dir, repo_id, filename, repo_type, revision, endpoint, etag_timeout, headers, proxies, token, local_files_only, force_download)\u001b[0m\n\u001b[1;32m    968\u001b[0m     \u001b[38;5;66;03m# Otherwise, raise appropriate error\u001b[39;00m\n\u001b[0;32m--> 969\u001b[0m     \u001b[43m_raise_on_head_call_error\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhead_call_error\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    971\u001b[0m \u001b[38;5;66;03m# From now on, etag, commit_hash, url and size are not None.\u001b[39;00m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1486\u001b[0m, in \u001b[0;36m_raise_on_head_call_error\u001b[0;34m(head_call_error, force_download, local_files_only)\u001b[0m\n\u001b[1;32m   1481\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(head_call_error, (RepositoryNotFoundError, GatedRepoError)) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[1;32m   1482\u001b[0m     \u001b[38;5;28misinstance\u001b[39m(head_call_error, HfHubHTTPError) \u001b[38;5;129;01mand\u001b[39;00m head_call_error\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m401\u001b[39m\n\u001b[1;32m   1483\u001b[0m ):\n\u001b[1;32m   1484\u001b[0m     \u001b[38;5;66;03m# Repo not found or gated => let's raise the actual error\u001b[39;00m\n\u001b[1;32m   1485\u001b[0m     \u001b[38;5;66;03m# Unauthorized => likely a token issue => let's raise the actual error\u001b[39;00m\n\u001b[0;32m-> 1486\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m head_call_error\n\u001b[1;32m   1487\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m   1488\u001b[0m     \u001b[38;5;66;03m# Otherwise: most likely a connection issue or Hub downtime => let's warn the user\u001b[39;00m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1376\u001b[0m, in \u001b[0;36m_get_metadata_or_catch_error\u001b[0;34m(repo_id, filename, repo_type, revision, endpoint, proxies, etag_timeout, headers, token, local_files_only, relative_filename, storage_folder)\u001b[0m\n\u001b[1;32m   1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1376\u001b[0m     metadata \u001b[38;5;241m=\u001b[39m \u001b[43mget_hf_file_metadata\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1377\u001b[0m \u001b[43m        \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43metag_timeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\n\u001b[1;32m   1378\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1379\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m EntryNotFoundError \u001b[38;5;28;01mas\u001b[39;00m http_error:\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py:114\u001b[0m, in \u001b[0;36mvalidate_hf_hub_args.._inner_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    112\u001b[0m     kwargs \u001b[38;5;241m=\u001b[39m smoothly_deprecate_use_auth_token(fn_name\u001b[38;5;241m=\u001b[39mfn\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m, has_token\u001b[38;5;241m=\u001b[39mhas_token, kwargs\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[0;32m--> 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1296\u001b[0m, in \u001b[0;36mget_hf_file_metadata\u001b[0;34m(url, token, proxies, timeout, library_name, library_version, user_agent, headers)\u001b[0m\n\u001b[1;32m   1295\u001b[0m \u001b[38;5;66;03m# Retrieve metadata\u001b[39;00m\n\u001b[0;32m-> 1296\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43m_request_wrapper\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1297\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHEAD\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1298\u001b[0m \u001b[43m    \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1299\u001b[0m \u001b[43m    \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhf_headers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1300\u001b[0m \u001b[43m    \u001b[49m\u001b[43mallow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1301\u001b[0m \u001b[43m    \u001b[49m\u001b[43mfollow_relative_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1302\u001b[0m \u001b[43m    \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1303\u001b[0m \u001b[43m    \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1304\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1305\u001b[0m hf_raise_for_status(r)\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:280\u001b[0m, in \u001b[0;36m_request_wrapper\u001b[0;34m(method, url, follow_relative_redirects, **params)\u001b[0m\n\u001b[1;32m    279\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m follow_relative_redirects:\n\u001b[0;32m--> 280\u001b[0m     response \u001b[38;5;241m=\u001b[39m \u001b[43m_request_wrapper\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    281\u001b[0m \u001b[43m        \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    282\u001b[0m \u001b[43m        \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    283\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfollow_relative_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m    284\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    285\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    287\u001b[0m     \u001b[38;5;66;03m# If redirection, we redirect only relative paths.\u001b[39;00m\n\u001b[1;32m    288\u001b[0m     \u001b[38;5;66;03m# This is useful in case of a renamed repository.\u001b[39;00m\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:304\u001b[0m, in \u001b[0;36m_request_wrapper\u001b[0;34m(method, url, follow_relative_redirects, **params)\u001b[0m\n\u001b[1;32m    303\u001b[0m response \u001b[38;5;241m=\u001b[39m get_session()\u001b[38;5;241m.\u001b[39mrequest(method\u001b[38;5;241m=\u001b[39mmethod, url\u001b[38;5;241m=\u001b[39murl, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams)\n\u001b[0;32m--> 304\u001b[0m \u001b[43mhf_raise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    305\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/huggingface_hub/utils/_http.py:458\u001b[0m, in \u001b[0;36mhf_raise_for_status\u001b[0;34m(response, endpoint_name)\u001b[0m\n\u001b[1;32m    450\u001b[0m     message \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m    451\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse\u001b[38;5;241m.\u001b[39mstatus_code\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m Client Error.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    452\u001b[0m         \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    456\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m make sure you are authenticated.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    457\u001b[0m     )\n\u001b[0;32m--> 458\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m _format(RepositoryNotFoundError, message, response) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    460\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m400\u001b[39m:\n",
-      "\u001b[0;31mRepositoryNotFoundError\u001b[0m: 404 Client Error. (Request ID: Root=1-67e3e5f6-44cf0d8d57a4fe053b72a484;c071d07d-bc72-4882-a792-4d6486057291)\n\nRepository Not Found for url: https://huggingface.co/facebook/esm2_t48_3B_UR50D/resolve/main/config.json.\nPlease make sure you specified the correct `repo_id` and `repo_type`.\nIf you are trying to access a private or gated repo, make sure you are authenticated.",
-      "\nThe above exception was the direct cause of the following exception:\n",
-      "\u001b[0;31mOSError\u001b[0m                                   Traceback (most recent call last)",
-      "Cell \u001b[0;32mIn[12], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43meedb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalculate_sequence_embeddings\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfacebook/esm2_t48_3B_UR50D\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/main.py:208\u001b[0m, in \u001b[0;36mPyeed.calculate_sequence_embeddings\u001b[0;34m(self, batch_size, model_name)\u001b[0m\n\u001b[1;32m    197\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    198\u001b[0m \u001b[38;5;124;03mCalculates embeddings for all sequences in the database that do not have embeddings, processing in batches.\u001b[39;00m\n\u001b[1;32m    199\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    204\u001b[0m \u001b[38;5;124;03m        Available models can be found at https://huggingface.co/facebook/esm2_t6_8M_UR50D.\u001b[39;00m\n\u001b[1;32m    205\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    207\u001b[0m \u001b[38;5;66;03m# Load the model, tokenizer, and device\u001b[39;00m\n\u001b[0;32m--> 208\u001b[0m model, tokenizer, device \u001b[38;5;241m=\u001b[39m \u001b[43mload_model_and_tokenizer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    210\u001b[0m \u001b[38;5;66;03m# Cypher query to retrieve proteins without embeddings and with valid sequences\u001b[39;00m\n\u001b[1;32m    211\u001b[0m query \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m    212\u001b[0m \u001b[38;5;124mMATCH (p:Protein)\u001b[39m\n\u001b[1;32m    213\u001b[0m \u001b[38;5;124mWHERE p.embedding IS NULL AND p.sequence IS NOT NULL\u001b[39m\n\u001b[1;32m    214\u001b[0m \u001b[38;5;124mRETURN p.accession_id AS accession, p.sequence AS sequence\u001b[39m\n\u001b[1;32m    215\u001b[0m \u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\"\"\u001b[39m\n",
-      "File \u001b[0;32m~/Niklas/pyeed/src/pyeed/embedding.py:72\u001b[0m, in \u001b[0;36mload_model_and_tokenizer\u001b[0;34m(model_name)\u001b[0m\n\u001b[1;32m     65\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m     66\u001b[0m     \u001b[38;5;66;03m# Otherwise, assume it's an ESM-2 model on Hugging Face\u001b[39;00m\n\u001b[1;32m     67\u001b[0m     full_model_name \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m     68\u001b[0m         model_name\n\u001b[1;32m     69\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m model_name\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacebook/\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m     70\u001b[0m         \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacebook/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m     71\u001b[0m     )\n\u001b[0;32m---> 72\u001b[0m     model: Any \u001b[38;5;241m=\u001b[39m \u001b[43mEsmModel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_pretrained\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfull_model_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43muse_auth_token\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     73\u001b[0m     tokenizer \u001b[38;5;241m=\u001b[39m EsmTokenizer\u001b[38;5;241m.\u001b[39mfrom_pretrained(full_model_name, use_auth_token\u001b[38;5;241m=\u001b[39mtoken)\n\u001b[1;32m     74\u001b[0m     model \u001b[38;5;241m=\u001b[39m model\u001b[38;5;241m.\u001b[39mto(device)\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/modeling_utils.py:3464\u001b[0m, in \u001b[0;36mPreTrainedModel.from_pretrained\u001b[0;34m(cls, pretrained_model_name_or_path, config, cache_dir, ignore_mismatched_sizes, force_download, local_files_only, token, revision, use_safetensors, weights_only, *model_args, **kwargs)\u001b[0m\n\u001b[1;32m   3461\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m commit_hash \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m   3462\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(config, PretrainedConfig):\n\u001b[1;32m   3463\u001b[0m         \u001b[38;5;66;03m# We make a call to the config file first (which may be absent) to get the commit hash as soon as possible\u001b[39;00m\n\u001b[0;32m-> 3464\u001b[0m         resolved_config_file \u001b[38;5;241m=\u001b[39m \u001b[43mcached_file\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   3465\u001b[0m \u001b[43m            \u001b[49m\u001b[43mpretrained_model_name_or_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3466\u001b[0m \u001b[43m            \u001b[49m\u001b[43mCONFIG_NAME\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3467\u001b[0m \u001b[43m            \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3468\u001b[0m \u001b[43m            \u001b[49m\u001b[43mforce_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3469\u001b[0m \u001b[43m            \u001b[49m\u001b[43mresume_download\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_download\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3470\u001b[0m \u001b[43m            \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3471\u001b[0m \u001b[43m            \u001b[49m\u001b[43mlocal_files_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_files_only\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3472\u001b[0m \u001b[43m            \u001b[49m\u001b[43mtoken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3473\u001b[0m \u001b[43m            \u001b[49m\u001b[43mrevision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3474\u001b[0m \u001b[43m            \u001b[49m\u001b[43msubfolder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msubfolder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3475\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_gated_repo\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3476\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_missing_entries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3477\u001b[0m \u001b[43m            \u001b[49m\u001b[43m_raise_exceptions_for_connection_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   3478\u001b[0m \u001b[43m        \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   3479\u001b[0m         commit_hash \u001b[38;5;241m=\u001b[39m extract_commit_hash(resolved_config_file, commit_hash)\n\u001b[1;32m   3480\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n",
-      "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/utils/hub.py:426\u001b[0m, in \u001b[0;36mcached_file\u001b[0;34m(path_or_repo_id, filename, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, subfolder, repo_type, user_agent, _raise_exceptions_for_gated_repo, _raise_exceptions_for_missing_entries, _raise_exceptions_for_connection_errors, _commit_hash, **deprecated_kwargs)\u001b[0m\n\u001b[1;32m    421\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    422\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYou are trying to access a gated repo.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mMake sure to have access to it at \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    423\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://huggingface.co/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mstr\u001b[39m(e)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    424\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    425\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RepositoryNotFoundError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 426\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    427\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is not a local folder and is not a valid model identifier \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    428\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlisted on \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://huggingface.co/models\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mIf this is a private repository, make sure to pass a token \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    429\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhaving permission to this repo either by logging in with `huggingface-cli login` or by passing \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    430\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`token=`\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    431\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m    432\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RevisionNotFoundError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m    433\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mEnvironmentError\u001b[39;00m(\n\u001b[1;32m    434\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrevision\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is not a valid git identifier (branch name, tag name or commit id) that exists \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    435\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfor this model name. Check the model page at \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    436\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://huggingface.co/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath_or_repo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m for available revisions.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    437\u001b[0m     ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n",
-      "\u001b[0;31mOSError\u001b[0m: facebook/esm2_t48_3B_UR50D is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=`"
+      "  warnings.warn(\n",
+      "Loading checkpoint shards: 100%|██████████| 2/2 [00:00<00:00,  3.69it/s]\n",
+      "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t36_3B_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n",
+      "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n",
+      "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:1899: FutureWarning: The `use_auth_token` argument is deprecated and will be removed in v5 of Transformers. Please use `token` instead.\n",
+      "  warnings.warn(\n",
+      "Asking to truncate to max_length but no maximum length is provided and the model has no predefined maximum length. Default to no truncation.\n"
      ]
     }
    ],
@@ -275,7 +256,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "(1152,)\n"
+      "(2560,)\n"
      ]
     }
    ],
@@ -302,7 +283,7 @@
     },
     {
      "data": {
-      "image/png": "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+OOPP3DvvffikUcewb59+1wZKxERERHVos5j7B577DEUFxdj7dq11e6///77oVarsWLFigYNsLnhGDsiIiJqTPXJPercY/frr79i0qRJNe5//PHH8csvv9Q9SiIiIiJqUHVO7M6ePYtOnTrVuL9Tp044c+ZMgwRFRERERPVX58TOZDLBw8Ojxv1KpRJlZWUNEhQRERER1V+9ZsWmp6fD19e32n0FBQUNEQ8RERERXaV6JXZjxoypdb8gCNcUDBERERFdvTondna73ZVxEBEREdE1qvMYu6Z08uRJjB8/Hu3bt4enpyciIyOxYMECWCwWp3b79+9Hv3794OHhgbZt2+KVV16pcqy1a9fixhtvhIeHB7p27Yq0tLTGugwiIiIil2oRid3hw4dht9vx/vvv4+DBg3jjjTewbNkyzJ8/39HGaDQiLi4O7dq1w65du/Dqq6/iueeewwcffOBos23bNjz00EMYP3489uzZg/j4eMTHx+PAgQNNcVlEREREDarOBYqbm1dffRVLly7FX3/9BQBYunQpnn76aRgMBsfSLXPnzsW6detw+PBhAMADDzyAkpISrF+/3nGc3r17o3v37li2bFmdzssCxURERNSYXFKguLkpLCxEQECA4/H27dvRv39/p/X4tFotjhw5gosXLzraDBo0yOk4Wq0W27dvr/E8ZrMZRqPR6YeIiIioOWqRid2xY8fwzjvvOK2EYTAYEBIS4tSu8rHBYKi1TeX+6ixevBi+vr6On7Zt2zbUZRARERE1qDondjt37oTNZqtxv9lsxpdfflmvk8+dOxeCINT6U3kbtdKZM2dw9913Y+TIkZg4cWK9znc15s2bh8LCQsfP6dOnXX5OIiIioqtR53InsbGxyMnJQXBwMABArVZj79696NChA4CKAsUPPfQQRo0aVeeTP/XUUxg7dmytbSqPD1QsazZw4ED06dPHaVIEAGg0Gpw7d85pW+VjjUZTa5vK/dVRKpVQKpVXvBYiIiKiplbnxO7yORbVzbmo7zyMoKAgBAUF1antmTNnMHDgQPTo0QMff/wxJBLnzsbY2Fg8/fTTKC8vh1wuBwBs2rQJN9xwA/z9/R1tfvjhB8yYMcPxvE2bNiE2NrZecRMRERE1Rw06xs5VK0+cOXMGAwYMQHh4OP7v//4PeXl5MBgMTmPjHn74YSgUCowfPx4HDx7EmjVr8NZbb2HmzJmONtOnT8d3332H1157DYcPH8Zzzz2HP/74A1OmTHFJ3ERERESNqV5LijWVTZs24dixYzh27BjCwsKc9lX2Evr6+iIjIwOJiYno0aMHWrVqhWeffRb/+c9/HG379OmD1atX45lnnsH8+fMRFRWFdevWoUuXLo16PURERESuUOc6dhKJBJs3b3aUGOnTpw++/PJLR6J1/vx53HXXXbVOsHAHrGNHREREjak+uUe9EjtBEKodR1e5XRAEJnZEREREDag+uUedb8WeOHHimgMjIiIiItepc2LXrl07V8ZBRERERNeozoldVlZWndqFh4dfdTBEREREdPXqnNhFRERUW86kcmwdUDHWzmq1Nlx0RERERFRndU7s9uzZU+12URTxxRdf4O2334a3t3eDBUZERERE9VPnxK5bt25Vtn3//feYO3cujh49itmzZ+Opp55q0OCIiIiIqO6uqkDx7t27MWfOHGzduhUTJkxAWlqaYw1ZIiIiImoa9VpS7Pjx43jggQdw2223ISgoCHq9Hu+++y6TOiIiIqJmoM6J3RNPPIGYmBgUFhbijz/+wOrVq9GhQwdXxkZERERE9VCvlSc8PDxw44031tpu9+7dDRJYc8WVJ4iIiKgxuWTliQULFlxzYERERETkOnXusaMK7LEjIiKixuSSHrua/PzzzygpKUFsbCz8/f2v9XBEREREdJXqnNi9/PLLKC4uRnJyMoCKwsSDBw9GRkYGACA4OBg//PADOnfu7JpIiYiIiKhWdZ4Vu2bNGnTp0sXx+KuvvsKWLVuwdetWnD9/Hj179sTChQtdEiQRERERXVmdE7sTJ07gpptucjxOS0vD/fffj759+yIgIADPPPMMtm/f7pIgiYiIiOjK6pzYWa1WKJVKx+Pt27ejT58+jsetW7fG+fPnGzY6IiIiIqqzOid2kZGR2LJlCwAgKysLR48eRf/+/R37s7OzERgY2PAREhEREVGd1HnyRGJiIqZMmYKtW7dix44diI2NRUxMjGP/5s2bcfPNN7skSCIiIiK6sjondhMnToRUKsX//vc/9O/fv0rB4rNnz2LcuHENHiARERER1Q0LFNcTCxQTERFRY6pP7lHnMXbVGTJkCHJycq7lEERERETUQK4psduyZQtKS0sbKhYiIiIiugbXlNgRERERUfNxTYldu3btIJfLGyoWIiIiIroG9U7ssrKyUDnf4sCBA2jbti2AirVjs7KyGjY6IiIiIqqzeid27du3R15eXpXtFy5cQPv27RskKCIiIiKqv3ondqIoQhCEKtuLi4vh4eHRIEERERERUf3VuUDxzJkzAQCCICApKQkqlcqxz2az4bfffkP37t0bPEAiIiIiqps6J3Z79uwBUNFj9+eff0KhUDj2KRQKdOvWDbNmzWr4CImIiIioTuqc2P34448AgMceewxvvfUWV10gIiIiambqnNhV+vjjj10RBxERERFdIxYoJiIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichNM7IiIiIjcBBM7IiIiIjfBxI6IiIjITTCxIyIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichNM7IiIiIjcBBM7IiIiIjfBxI6IiIjITTCxIyIiInITTOyIiIiI3AQTOyIiIiI3wcSOiIiIyE0wsSMiIiJyE0zsiIiIiNwEEzsiIiIiN8HEjoiIiMhNMLEjIiIichMtLrEzm83o3r07BEHA3r17nfbt378f/fr1g4eHB9q2bYtXXnmlyvPXrl2LG2+8ER4eHujatSvS0tIaKXIiIiIi12pxid3s2bPRunXrKtuNRiPi4uLQrl077Nq1C6+++iqee+45fPDBB44227Ztw0MPPYTx48djz549iI+PR3x8PA4cONCYl0BERETkEoIoimJTB1FXGzduxMyZM/H111+jc+fO2LNnD7p37w4AWLp0KZ5++mkYDAYoFAoAwNy5c7Fu3TocPnwYAPDAAw+gpKQE69evdxyzd+/e6N69O5YtW1anGIxGI3x9fVFYWAi1Wt2wF0hERER0mfrkHi2mx+7cuXOYOHEiPvnkE6hUqir7t2/fjv79+zuSOgDQarU4cuQILl686GgzaNAgp+dptVps377dtcETERERNYIWkdiJooixY8fi8ccfR8+ePattYzAYEBIS4rSt8rHBYKi1TeX+6pjNZhiNRqcfIiIiouaoSRO7uXPnQhCEWn8OHz6Md955B0VFRZg3b16jx7h48WL4+vo6ftq2bdvoMRARERHVhawpT/7UU09h7Nixtbbp0KEDNm/ejO3bt0OpVDrt69mzJ0aPHo1Vq1ZBo9Hg3LlzTvsrH2s0Gsd/q2tTub868+bNw8yZMx2PjUYjkzsiIiJqlpo0sQsKCkJQUNAV27399ttYtGiR4/HZs2eh1WqxZs0a9OrVCwAQGxuLp59+GuXl5ZDL5QCATZs24YYbboC/v7+jzQ8//IAZM2Y4jrVp0ybExsbWeG6lUlkloSQiIiJqjpo0saur8PBwp8fe3t4AgMjISISFhQEAHn74YSxcuBDjx4/HnDlzcODAAbz11lt44403HM+bPn067rjjDrz22msYMmQIvvjiC/zxxx9OJVGIiIiIWqoWMXmiLnx9fZGRkYETJ06gR48eeOqpp/Dss8/iP//5j6NNnz59sHr1anzwwQfo1q0bvvrqK6xbtw5dunRpwsiJiIiIGkaLqmPXHLCOHRERETUmt6xjR0RERES1Y2JHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREbkJJnZEREREboKJHREREZGbYGJHRERE5CaY2BERERG5CSZ2RERERG6CiR0RERGRm2BiR0REROQmmNgRERERuQkmdkRERERugokdERERkZtgYkdERETkJpjYEREREdXAYrGgoKAAFoulqUOpE1lTB0BERETU3Oj1eqTqdNiRkQG72QyJUonecXGIHz4c0dHRTR1ejdhjR0RERHSJtLQ0zJ0wAadTUjDOZEKSTIZxJhNOp6Rgzvjx2LhxY1OHWCP22BERERH9Ta/XY9miRRhaXIyJUVEQBMGx776QECzPysLS5GREREQ0y5479tgRERER/S1Vp0NYfj4mhoc7JXUAIAgCJoaHIyw/H6k6XRNFWDsmdkRERESomCixIyMDWrW6SlJXSRAEaNVqbE9Pb5YTKpjYEREREQEwmUywm80IVSprbadRKmE3m2EymRopsrpjYkdEREQEQKVSQaJUIsdsrrWd4e9ZsiqVqpEiqzsmdkREREQAFAoFesfFId1ohCiK1bYRRRHpRiNitVooFIpGjvDKWlRit2HDBvTq1Quenp7w9/dHfHy80/6srCwMGTIEKpUKwcHB+O9//wur1erU5qeffsItt9wCpVKJjh07YuXKlY13AURERNSsDUtIQHZgIJZnZVVJ7kRRxPKsLGQHBmJYQkITRVi7FlPu5Ouvv8bEiRPx4osv4s4774TVasWBAwcc+202G4YMGQKNRoNt27YhJycHjz76KORyOV588UUAwIkTJzBkyBA8/vjj+Oyzz/DDDz9gwoQJCA0NhVarbapLIyIiomYiJiYGk5OSsDQ5GXszM6FVq6FRKmEwm5FuNCI7MBCTk5KaZakTABDEmvoamxGr1YqIiAgsXLgQ48ePr7bNxo0bMXToUJw9exYhISEAgGXLlmHOnDnIy8uDQqHAnDlzsGHDBqeE8MEHH0RBQQG+++67OsViNBrh6+uLwsJCqNXqa784IiIianYOHTqEVJ0O29PTHStPxGq1GJaQ0OhJXX1yjxbRY7d7926cOXMGEokEN998MwwGA7p3745XX30VXbp0AQBs374dXbt2dSR1AKDVajF58mQcPHgQN998M7Zv345BgwY5HVur1WLGjBk1nttsNsN8ySBKo9HYsBdHREREzU50dDSio6NhmTULJpMJKpWqWY6pu1yLGGP3119/AQCee+45PPPMM1i/fj38/f0xYMAAXLhwAQBgMBickjoAjscGg6HWNkajEaWlpdWee/HixfD19XX8tG3btkGvjYiIiJovhUIBPz+/FpHUAU2c2M2dOxeCINT6c/jwYdjtdgDA008/jREjRqBHjx74+OOPIQgC1q5d69IY582bh8LCQsfP6dOnXXo+IiIioqvVpLdin3rqKYwdO7bWNh06dEBOTg6AigGNlZRKJTp06ICsrCwAgEajwc6dO52ee+7cOce+yv9Wbru0jVqthqenZ7XnVyqVUF6hUCERERFRc9CkiV1QUBCCgoKu2K5Hjx5QKpU4cuQIbr/9dgBAeXk5Tp48iXbt2gEAYmNj8cILLyA3NxfBwcEAgE2bNkGtVjsSwtjYWKSlpTkde9OmTYiNjW3IyyIiIiJqEi1ijJ1arcbjjz+OBQsWICMjA0eOHMHkyZMBACNHjgQAxMXFISYmBo888gj27duH9PR0PPPMM0hMTHT0uD3++OP466+/MHv2bBw+fBjvvfcevvzySzz55JNNdm1EREREDaVFzIoFgFdffRUymQyPPPIISktL0atXL2zevBn+/v4AAKlUivXr12Py5MmIjY2Fl5cXxowZg+eff95xjPbt22PDhg148skn8dZbbyEsLAwffvgha9gRERGRW2gRdeyaE9axIyIiosZUn9yjRdyKJSIiIqIrY2JHRERE5CaY2BERERG5iRYzeaK5qBySyKXFiIiIqDFU5hx1mRbBxK6eioqKAIBLixEREVGjKioqgq+vb61tOCu2nux2O86ePQsfHx8IgtDU4bgVo9GItm3b4vTp05xx7Ib4/rovvrfuje9v0xNFEUVFRWjdujUkktpH0bHHrp4kEgnCwsKaOgy3plar+cvDjfH9dV98b90b39+mdaWeukqcPEFERETkJpjYEREREbkJJnbUbCiVSixYsMCxti+5F76/7ovvrXvj+9uycPIEERERkZtgjx0RERGRm2BiR0REROQmmNgRERERuQkmdtToTp48ifHjx6N9+/bw9PREZGQkFixYAIvF4tRu//796NevHzw8PNC2bVu88sorVY61du1a3HjjjfDw8EDXrl2RlpbWWJdBNXjhhRfQp08fqFQq+Pn5VdsmKysLQ4YMgUqlQnBwMP773//CarU6tfnpp59wyy23QKlUomPHjli5cqXrg6ersmTJEkRERMDDwwO9evXCzp07mzokuoItW7bg3nvvRevWrSEIAtatW+e0XxRFPPvsswgNDYWnpycGDRqEzMxMpzYXLlzA6NGjoVar4efnh/Hjx6O4uLgRr4Kqw8SOGt3hw4dht9vx/vvv4+DBg3jjjTewbNkyzJ8/39HGaDQiLi4O7dq1w65du/Dqq6/iueeewwcffOBos23bNjz00EMYP3489uzZg/j4eMTHx+PAgQNNcVn0N4vFgpEjR2Ly5MnV7rfZbBgyZAgsFgu2bduGVatWYeXKlXj22WcdbU6cOIEhQ4Zg4MCB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",
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAm0JJREFUeJzs3Xtc0/X+wPHXNthgwAARGIqIFzyBt+5KZfcgytTpsdNd83I6ppaZp6zfofJgxzrndD+lHdOKTlanzpl0FAPLzC5qF8MyLNFURBkgChMGG9u+vz+I5QQVFNyA9/Px2KP4fj/b970x5nufy/ujUhRFQQghhBBCdHpqXwcghBBCCCHahyR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QgghhBBdhCR2QnQjkydPJjEx0ddhtBiHSqXiscceO+Ox+Oq6bfHVV19x0UUXERISgkqloqCgwNchtYvO8Nq3ZM+ePahUKv7+9793+LVee+01VCoVe/bsOWnbxMREJk+e7Pl5/fr1qFQq1q9f32HxCf8jiZ3wua+++opZs2YxePBgQkJCSEhI4MYbb2THjh3N2l5++eWoVCpUKhVqtRqDwcBvfvMbbr/9dtauXdvqa65YsYJnn322TXHu2bOHO++8kwEDBhAUFITRaOTSSy/l0UcfbTHGG264ocXHOPYfhKYP3+Pd3n777RbjaWhooGfPnlxyySXHjVlRFPr06cO5557bpufa1eTm5nbKBAIaf88TJ07k0KFDPPPMM7zxxhv07du3xbbHvpcCAwPp378/d9xxBz///HO7xvXSSy/x2muvtetjnq7Jkycf9+8oKCjI1+EJcUYE+DoAIZ588kk+//xzJk6cyLBhw7BYLPzjH//g3HPPZdOmTQwZMsSrfXx8PIsWLQKgtraWnTt38t///pd//etf3HjjjfzrX/8iMDDwhNdcsWIF27ZtY86cOa2KcefOnVxwwQUEBwczZcoUEhMTKS0tZcuWLTz55JMsWLCg2X1WrVrFN998w3nnndeqa9xzzz1ccMEFzY6npqa22D4wMJCJEyfy8ssvs3fv3hb/sd+wYQMlJSXcd999ACxduhS3292qeM60uro6AgI65iMpNzeXF198scXkriOv2x527drF3r17Wbp0KdOmTWvVfZreSw0NDWzZsoV//vOfrF69mu+//55evXq1S1wvvfQSPXv29OohaquOeO11Oh2vvPJKs+MajaZdr9MZXHrppdTV1aHVan0dijiD/PfTTHQbc+fOZcWKFV4fPr/73e8YOnQoTzzxBP/617+82oeHh3Pbbbd5HXviiSe45557eOmll0hMTOTJJ59s1xifeeYZampqKCgoaJZAlZeXN2ufkJDAkSNHWLBgAe+//36rrjFq1Ch++9vftimuW2+9lSVLlvDWW28xf/78ZudXrFiBWq3mpptuAjhpwutLvupR8feenKb3V0RERKvvc/R76c4772TQoEHcc889vP766zz00EMt3qe2tpaQkJDTjrctOuK1DwgIaPb50F2p1Wq/f3+L9idDscLnLrroombfKJOSkhg8eDDbt29v1WNoNBqef/55UlJS+Mc//kF1dfVx215++eWsXr2avXv3eoZpTjbvbNeuXcTHx7fYKxYTE9PsWFhYGPfddx//+9//2LJlS6uew6m4+OKLSUxMZMWKFc3ONTQ08N5773HFFVd4emlamtv29ttvc9555xEWFobBYGDo0KE899xznvOPPfYYKpWq2eO3NPcnJyeH66+/nl69eqHT6RgwYABZWVm4XK6TPpej51s1DVkf79bk008/ZeLEiSQkJKDT6ejTpw/33XcfdXV1njaTJ0/mxRdf9Fzj2MdoaZ7Xt99+S0ZGBgaDgdDQUK666io2bdrU4vP//PPPmTt3LtHR0YSEhGAymaioqDjp8wVYt24do0aNIiQkhIiICMaOHev1np88eTKXXXYZABMnTkSlUnH55Ze36rGPduWVVwKwe/du4NffaWFhIbfccguRkZGeIX2n00lWVhYDBgxAp9ORmJjIww8/jN1u9zxeYmIiP/zwA5988onn9Tw6rqqqKubMmUOfPn3Q6XQMHDiQJ598sllv8bGvfVNcO3fuZPLkyURERBAeHs6dd96JzWZr8/M+nqbf3WeffcY999xDdHQ0ERER3HXXXTgcDqqqqrjjjjuIjIwkMjKSBx54AEVRWnysZ555hr59+xIcHMxll13Gtm3bmrX58ccf+e1vf0uPHj0ICgri/PPPb/EL3w8//MCVV15JcHAw8fHxLFy4sMUedkVRWLhwIfHx8ej1eq644gp++OGHZu1ammN3+eWXM2TIEAoLC7niiivQ6/X07t2bv/71r83uv3fvXsaMGUNISAgxMTHcd9995OXlNXvMoqIiJkyYgNFoJCgoiPj4eG666aYTfg6LjiM9dsIvKYpCWVkZgwcPbvV9NBoNN998M5mZmXz22Wdcf/31Lbb7v//7P6qrqykpKeGZZ54BIDQ09ISP3bdvXz788EPWrVvn+UfyZO69916eeeYZHnvssVb12h05coSDBw82Ox4VFdViYgWN/zDecsst/OUvf+GHH37wer0++OADDh06xK233nrca65du5abb76Zq666ytPLuX37dj7//HPuvffek8Z8rNdee43Q0FDmzp1LaGgo69at45FHHsFqtfK3v/2t1Y8THR3NG2+84XWsoaGB++67z+tLwLvvvovNZmPGjBlERUXx5Zdf8sILL1BSUsK7774LwF133cWBAwdYu3Zts8dsyQ8//MCoUaMwGAw88MADBAYG8vLLL3P55ZfzySefMGLECK/2s2fPJjIykkcffZQ9e/bw7LPPMmvWLN55550TXufDDz8kIyOD/v3789hjj1FXV8cLL7zAxRdfzJYtW0hMTOSuu+6id+/e/OUvf/EMr8bGxrb2ZfTYtWsX0PheOtrEiRNJSkriL3/5iydxmTZtGq+//jq//e1vuf/++9m8eTOLFi1i+/btmM1mAJ599llmz55NaGgo//d//wfgictms3HZZZexf/9+7rrrLhISEvjiiy946KGHKC0tbdXc1htvvJF+/fqxaNEitmzZwiuvvEJMTEyre+Jb+jvSarUYDAavY7Nnz8ZoNLJgwQI2bdrEP//5TyIiIvjiiy9ISEjgL3/5C7m5ufztb39jyJAh3HHHHV73z87O5siRI8ycOZP6+nqee+45rrzySr7//nvP6/HDDz9w8cUX07t3b+bPn09ISAj//ve/GTduHP/5z38wmUwAWCwWrrjiCpxOp6fdP//5T4KDg5s9l0ceeYSFCxdy3XXXcd1117FlyxbS0tJwOByten0OHz7Mtddey/jx47nxxht57733ePDBBxk6dCgZGRlAYw/ulVdeSWlpKffeey9Go5EVK1bw8ccfez2Ww+EgPT0du93ueT3379/PqlWrqKqqIjw8vFUxiXakCOGH3njjDQVQli1b5nX8sssuUwYPHnzc+5nNZgVQnnvuuRM+/vXXX6/07du31fFs27ZNCQ4OVgDl7LPPVu69915l5cqVSm1tbbO2R8e4YMECBVC++eYbRVEUZffu3Qqg/O1vf/O0//jjjxXguLfS0tITxvbDDz8ogPLQQw95Hb/pppuUoKAgpbq62nNs0qRJXs/73nvvVQwGg+J0Oo/7+I8++qjS0kfFq6++qgDK7t27PcdsNluzdnfddZei1+uV+vr648ahKIoCKI8++uhx47j77rsVjUajrFu37oTXW7RokaJSqZS9e/d6js2cObPF59DSdceNG6dotVpl165dnmMHDhxQwsLClEsvvdRzrOn5X3311Yrb7fYcv++++xSNRqNUVVUd97koiqKcffbZSkxMjFJZWek5tnXrVkWtVit33HGH51jT++Pdd9894eMd3Xb58uVKRUWFcuDAAWX16tVKYmKiolKplK+++kpRlF9/pzfffLPX/QsKChRAmTZtmtfxefPmKYDXaz948GDlsssuaxZDVlaWEhISouzYscPr+Pz58xWNRqMUFxd7jh372jfFNWXKFK/7mkwmJSoq6qTPf9KkScf9O0pPT/e0a/rdpaene/3uUlNTFZVKpfzhD3/wHHM6nUp8fLzXc236Ow4ODlZKSko8xzdv3qwAyn333ec5dtVVVylDhw71ev+73W7loosuUpKSkjzH5syZowDK5s2bPcfKy8uV8PBwr7+z8vJyRavVKtdff71X7A8//LACKJMmTfIca3o/fPzxx55jl112mQIo2dnZnmN2u10xGo3KhAkTPMeeeuopBVBWrlzpOVZXV6ecddZZXo/57bfftvr9Kc4MGYoVfufHH39k5syZpKamMmnSpDbdt6nn7ciRI+0a0+DBgykoKOC2225jz549PPfcc4wbN47Y2FiWLl163Pvde++9REZGtri44liPPPIIa9eubXbr0aPHCe+XkpLCOeec47V6tra2lvfff5/Ro0c366U4WkREBLW1tW1aUXwiR/cuNPVAjho1CpvNxo8//njKj5udnc1LL73EX//6V6644ooWr1dbW8vBgwe56KKLUBSFb7/9ts3Xcblc5OfnM27cOPr37+85HhcXxy233MJnn32G1Wr1us/vf/97rx7VUaNG4XK52Lt373GvU1paSkFBAZMnT/b6/Q4bNoxrrrmG3NzcNsd+tClTphAdHU2vXr24/vrrqa2t5fXXX+f888/3aveHP/zB6+em686dO9fr+P333w/A6tWrT3rtd999l1GjRhEZGcnBgwc9t6uvvhqXy8WGDRtO+hjHxjVq1CgqKyubvfYtCQoKavHv6IknnmjWdurUqV6/uxEjRqAoClOnTvUc02g0nH/++S2uKh43bhy9e/f2/HzhhRcyYsQIz+t46NAh1q1bx4033uj5ezh48CCVlZWkp6dTVFTE/v37gcbXfuTIkVx44YWex4uOjm7W4/7hhx/icDiYPXu2V+ytXQgGjZ+TR89D1Gq1XHjhhV7P8YMPPqB3796MGTPGcywoKIjp06d7PVZTj1xeXl67DpeLUydDscKvWCwWrr/+esLDw3nvvffavJKtpqYGaJzjdqrXP1p4eLgneRg0aBBvvPEGLpeLwsJCVq1axV//+ld+//vf069fP66++upmjxceHs6cOXN49NFH+fbbb4mMjDzutYcOHdriY7TGrbfeyrx58/jiiy+46KKLWLlyJTab7YTDsAB33303//73v8nIyKB3796kpaVx4403cu21155SHD/88AN/+tOfWLduXbN/hE91vk1BQQF/+MMfuPnmm5slHMXFxTzyyCO8//77HD58+LSvV1FRgc1m4ze/+U2zc8nJybjdbvbt2+c15J2QkODVrul3fGw8R2tK+o53nby8vNNazPDII48watQoNBoNPXv2JDk5ucXVp/369WsWl1qtZuDAgV7HjUYjERERJ0xWmxQVFfHdd98RHR3d4vmWFhsd60Sv6Ym+qEBjItbav6Njr9OUpPTp06fZ8ZZ+n0lJSc2ODRo0iH//+99A42p6RVHIzMwkMzOzxRjKy8vp3bs3e/fubTbMD83fI02/g2OvHR0dfcLPl6PFx8c3m94RGRnJd99953WdAQMGNGt37HujX79+zJ07l6effpo333yTUaNGMWbMGG677TYZhvURSeyE36iuriYjI4Oqqio+/fTTUyrL0DRx+dgPn9aKi4vz+vnVV19tVs5Bo9EwdOhQhg4dSmpqKldccQVvvvnmcf8xaZprt2DBgjbXzmutm2++mQceeIAVK1Zw0UUXsWLFCiIjI7nuuutOeL+YmBgKCgrIy8tjzZo1rFmzhldffZU77riD119/HeC48/uOXRBRVVXFZZddhsFg4M9//rOn3t+WLVt48MEHT6nMyuHDh5kwYQKDBg1qVsLC5XJxzTXXcOjQIR588EHOOussQkJC2L9/P5MnTz5jZV2O9+VDOc5k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",
       "text/plain": [
        "
" ] @@ -380,7 +361,7 @@ "output_type": "stream", "text": [ "Resulst for index AAP20891.1 are:\n", - "[('AAP20891.1', 0.0), ('ADL13944.1', 5.6168107638088216e-05), ('AFN21551.1', 6.611455559601964e-05), ('AAF05613.1', 0.00010320505315297712), ('CAC67290.1', 0.00012422009260193434), ('AAL29433.1', 0.00012499919288500028), ('ABB97007.1', 0.00012965265937237014), ('CAA74912.2', 0.00013823680560853813), ('CBX53726.1', 0.00015387097994867815), ('AGQ50511.1', 0.00015501224370340072)]\n" + "[('AAP20891.1', 0.0), ('ADL13944.1', 1.2696941380951898e-05), ('AGQ50511.1', 2.3084859425925863e-05), ('CBX53726.1', 2.3443578533011156e-05), ('AAL29433.1', 3.0809776502382924e-05), ('CAA76796.1', 3.2400445545976986e-05), ('CAC67290.1', 4.856582147116928e-05), ('AFN21551.1', 4.953471590429803e-05), ('CAA74912.2', 5.021707417551813e-05), ('CTA52364.1', 6.113568903631794e-05)]\n" ] } ], @@ -478,7 +459,7 @@ "outputs": [ { "ename": "ClientError", - "evalue": "{code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 1152 dimensions, but indexed vectors have 960.}", + "evalue": "{code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 2560 dimensions, but indexed vectors have 960.}", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", @@ -495,7 +476,7 @@ "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py:850\u001b[0m, in \u001b[0;36mBolt.fetch_message\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 846\u001b[0m \u001b[38;5;66;03m# Receive exactly one message\u001b[39;00m\n\u001b[1;32m 847\u001b[0m tag, fields \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minbox\u001b[38;5;241m.\u001b[39mpop(\n\u001b[1;32m 848\u001b[0m hydration_hooks\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mresponses[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mhydration_hooks\n\u001b[1;32m 849\u001b[0m )\n\u001b[0;32m--> 850\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtag\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfields\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 851\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39midle_since \u001b[38;5;241m=\u001b[39m monotonic()\n\u001b[1;32m 852\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m res\n", "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_bolt5.py:369\u001b[0m, in \u001b[0;36mBolt5x0._process_message\u001b[0;34m(self, tag, fields)\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_server_state_manager\u001b[38;5;241m.\u001b[39mstate \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbolt_states\u001b[38;5;241m.\u001b[39mFAILED\n\u001b[1;32m 368\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 369\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_failure\u001b[49m\u001b[43m(\u001b[49m\u001b[43msummary_metadata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 370\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ServiceUnavailable, DatabaseUnavailable):\n\u001b[1;32m 371\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool:\n", "File \u001b[0;32m~/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/neo4j/_sync/io/_common.py:245\u001b[0m, in \u001b[0;36mResponse.on_failure\u001b[0;34m(self, metadata)\u001b[0m\n\u001b[1;32m 243\u001b[0m handler \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandlers\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_summary\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 244\u001b[0m Util\u001b[38;5;241m.\u001b[39mcallback(handler)\n\u001b[0;32m--> 245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m Neo4jError\u001b[38;5;241m.\u001b[39mhydrate(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mmetadata)\n", - "\u001b[0;31mClientError\u001b[0m: {code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 1152 dimensions, but indexed vectors have 960.}" + "\u001b[0;31mClientError\u001b[0m: {code: Neo.ClientError.Procedure.ProcedureCallFailed} {message: Failed to invoke procedure `db.index.vector.queryNodes`: Caused by: java.lang.IllegalArgumentException: Index query vector has 2560 dimensions, but indexed vectors have 960.}" ] } ], diff --git a/docs/usage/mutation_analysis.ipynb b/docs/usage/mutation_analysis.ipynb index 9b31c996..e2c3d066 100644 --- a/docs/usage/mutation_analysis.ipynb +++ b/docs/usage/mutation_analysis.ipynb @@ -229,19 +229,35 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'from_positions': [241, 125, 272], 'to_positions': [241, 125, 272], 'from_monomers': ['R', 'V', 'D'], 'to_monomers': ['S', 'I', 'N']}\n" + "ename": "NameError", + "evalue": "name 'mutations_protein' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mmutations_protein\u001b[49m)\n", + "\u001b[0;31mNameError\u001b[0m: name 'mutations_protein' is not defined" ] } ], "source": [ - "print(mutations_protein)" + "print(mutations_protein)\n", + "\n", + "\n", + "# remove double realtionship, there are many doubles between the same DNA and the same Organismen\n", + "# just keep the first one and remove the rest\n", + "query_remove_double_relationship = \"\"\"\n", + "MATCH (d:DNA {accession_id: 'KT405476.1'})-[r:ORIGINATES_FROM]-(e)\n", + "WITH d, r, e\n", + "ORDER BY id(r)\n", + "LIMIT 1\n", + "DELETE r\n", + "\"\"\"\n", + "\n" ] }, { @@ -295,7 +311,7 @@ ], "metadata": { "kernelspec": { - "display_name": "pyeed_niklas", + "display_name": "pyeed_niklas_env", "language": "python", "name": "python3" }, @@ -309,7 +325,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.10.16" } }, "nbformat": 4, diff --git a/src/pyeed/analysis/sequence_alignment.py b/src/pyeed/analysis/sequence_alignment.py index 3bfd019c..09e8aab1 100644 --- a/src/pyeed/analysis/sequence_alignment.py +++ b/src/pyeed/analysis/sequence_alignment.py @@ -5,9 +5,11 @@ from Bio.Align import PairwiseAligner as BioPairwiseAligner from Bio.Align.substitution_matrices import Array as BioSubstitutionMatrix from joblib import Parallel, cpu_count, delayed +from loguru import logger +from rich.progress import Progress + from pyeed.dbconnect import DatabaseConnector from pyeed.tools.utility import chunks -from rich.progress import Progress class PairwiseAligner: @@ -126,6 +128,14 @@ def align_multipairwise( if ids is not None and db is not None: sequences = self._get_id_sequence_dict(db, ids, node_type, region_ids_neo4j) + logger.info( + f"Length of sequences: {len(sequences)} and length of pairs: {len(pairs)} and length of ids: {len(ids)} and the length of the region_ids_neo4j: {len(region_ids_neo4j)}" + ) + logger.info(f"IDS: {ids}") + logger.info(f"Region IDs: {region_ids_neo4j}") + logger.info(f"Pairs: {pairs}") + logger.info(f"Sequences: {sequences.keys()}") + if not sequences: raise ValueError( "Either sequences or ids (with a database connection) must be provided." @@ -290,13 +300,11 @@ def _get_id_sequence_dict( if region_ids_neo4j is not None: query = f""" MATCH (p:{node_type})-[e:HAS_REGION]->(r:Region) - WHERE id(r) IN $region_ids_neo4j AND p.accession_id IN $ids + WHERE id(r) IN {region_ids_neo4j} AND p.accession_id IN {ids} RETURN p.accession_id AS accession_id, e.start AS start, e.end AS end, p.sequence AS sequence """ - nodes = db.execute_read( - query, - parameters={"region_ids_neo4j": region_ids_neo4j, "ids": ids}, - ) + nodes = db.execute_read(query) + else: query = f""" MATCH (p:{node_type}) diff --git a/src/pyeed/analysis/standard_numbering.py b/src/pyeed/analysis/standard_numbering.py index 6f81869f..88450be6 100644 --- a/src/pyeed/analysis/standard_numbering.py +++ b/src/pyeed/analysis/standard_numbering.py @@ -13,6 +13,7 @@ from typing import Any, Dict, List, Optional, Tuple from loguru import logger + from pyeed.analysis.sequence_alignment import PairwiseAligner from pyeed.dbconnect import DatabaseConnector from pyeed.model import StandardNumbering @@ -458,7 +459,7 @@ def apply_standard_numbering_pairwise( region_ids_neo4j=region_ids_neo4j, ) - logger.info(f"Pairwise alignment results: {results_pairwise}") + # logger.info(f"Pairwise alignment results: {results_pairwise}") if results_pairwise is None: raise ValueError("Pairwise alignment failed - no results returned") @@ -484,8 +485,6 @@ def apply_standard_numbering_pairwise( base_sequence_id, converted_alignment ) - logger.info(f"Positions: {positions}") - # Ensure the standard numbering node exists in the database. StandardNumbering.get_or_save( name=self.name, From ee613422ff001e07bc1a3a0516d1d690f231ddfe Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Wed, 23 Apr 2025 16:02:24 +0000 Subject: [PATCH 5/9] bug fixing --- docs/usage/mutation_analysis.ipynb | 68 +- src/pyeed/analysis/embedding_analysis.py | 5 +- src/pyeed/analysis/mutation_detection.py | 1745 ++++++++++++++++++++++ src/pyeed/analysis/sequence_alignment.py | 68 +- src/pyeed/analysis/standard_numbering.py | 10 +- src/pyeed/embedding.py | 20 +- src/pyeed/main.py | 14 +- 7 files changed, 1857 insertions(+), 73 deletions(-) diff --git a/docs/usage/mutation_analysis.ipynb b/docs/usage/mutation_analysis.ipynb index e2c3d066..a086d7d6 100644 --- a/docs/usage/mutation_analysis.ipynb +++ b/docs/usage/mutation_analysis.ipynb @@ -11,9 +11,18 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], "source": [ "import sys\n", "from loguru import logger\n", @@ -37,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -45,7 +54,7 @@ "output_type": "stream", "text": [ "📡 Connected to database.\n", - "All data has been wiped from the database.\n" + "The provided date does not match the current date. Date is you gave is 2025-03-19 actual date is 2025-04-09\n" ] } ], @@ -75,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -101,18 +110,21 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "6ed852d438ab480fa4d1c6129eacfd26", - "version_major": 2, - "version_minor": 0 - }, + "text/html": [ + "
/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n",
+       "\"ipywidgets\" for Jupyter support\n",
+       "  warnings.warn('install \"ipywidgets\" for Jupyter support')\n",
+       "
\n" + ], "text/plain": [ - "Output()" + "/home/nab/anaconda3/envs/pyeed_niklas_env/lib/python3.10/site-packages/rich/live.py:231: UserWarning: install \n", + "\"ipywidgets\" for Jupyter support\n", + " warnings.warn('install \"ipywidgets\" for Jupyter support')\n" ] }, "metadata": {}, @@ -122,7 +134,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Region ids: [143, 129, 128, 69, 9]\n", + "Region ids: [5206, 5205, 5203, 5201, 5207]\n", "len of ids: 5\n" ] }, @@ -181,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -198,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -229,18 +241,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'mutations_protein' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mmutations_protein\u001b[49m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'mutations_protein' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "{'from_positions': [272, 241, 125], 'to_positions': [272, 241, 125], 'from_monomers': ['D', 'R', 'V'], 'to_monomers': ['N', 'S', 'I']}\n" ] } ], @@ -278,21 +286,21 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Mutation on position 705 -> 705 with a nucleotide change of G -> A\n", - "Mutation on position 395 -> 395 with a nucleotide change of T -> G\n", - "Mutation on position 137 -> 137 with a nucleotide change of A -> G\n", "Mutation on position 17 -> 17 with a nucleotide change of T -> C\n", - "Mutation on position 473 -> 473 with a nucleotide change of T -> C\n", + "Mutation on position 395 -> 395 with a nucleotide change of T -> G\n", + "Mutation on position 198 -> 198 with a nucleotide change of C -> A\n", "Mutation on position 716 -> 716 with a nucleotide change of G -> A\n", + "Mutation on position 705 -> 705 with a nucleotide change of G -> A\n", + "Mutation on position 473 -> 473 with a nucleotide change of T -> C\n", "Mutation on position 720 -> 720 with a nucleotide change of A -> C\n", - "Mutation on position 198 -> 198 with a nucleotide change of C -> A\n" + "Mutation on position 137 -> 137 with a nucleotide change of A -> G\n" ] } ], diff --git a/src/pyeed/analysis/embedding_analysis.py b/src/pyeed/analysis/embedding_analysis.py index fa9d6c0e..ebcac96a 100644 --- a/src/pyeed/analysis/embedding_analysis.py +++ b/src/pyeed/analysis/embedding_analysis.py @@ -6,9 +6,10 @@ import scipy.spatial as sp from matplotlib.figure import Figure from numpy.typing import NDArray -from pyeed.dbconnect import DatabaseConnector from scipy.spatial.distance import cosine +from pyeed.dbconnect import DatabaseConnector + logger = logging.getLogger(__name__) @@ -352,6 +353,7 @@ def find_nearest_neighbors_based_on_vector_index( query_protein_id: str, index_name: str = "embedding_index", number_of_neighbors: int = 50, + skip: int = 0, ) -> list[tuple[str, float]]: """ This function finds the nearest neighbors of a query protein based on the vector index. @@ -411,6 +413,7 @@ def find_nearest_neighbors_based_on_vector_index( CALL db.index.vector.queryNodes('{index_name}', {number_of_neighbors}, embedding) YIELD node AS fprotein, score RETURN fprotein.accession_id, score + SKIP {skip} """ results = db.execute_read(query_find_nearest_neighbors) neighbors: list[tuple[str, float]] = [ diff --git a/src/pyeed/analysis/mutation_detection.py b/src/pyeed/analysis/mutation_detection.py index c2562ae1..74c5e0fb 100644 --- a/src/pyeed/analysis/mutation_detection.py +++ b/src/pyeed/analysis/mutation_detection.py @@ -1,6 +1,7 @@ from typing import Any, Optional from loguru import logger + from pyeed.dbconnect import DatabaseConnector @@ -292,3 +293,1747 @@ def get_mutations_between_sequences( ) return mutations + + +if __name__ == "__main__": + # debugging + + seq_a = "TGAGTATTCAACATTTTCGTGTCGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGTGCGGTATTATCCCGTGTTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGCAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACGACGGGGAGTCAGGCAACTATGGATGAACGAAATAGACAGATCGCTGAGATAGGTGCCTCACTGATTAAGCATTGGTAA" + seq_b = "CACAGATAAAACACTCTCCAGGAAACCCGGGGCGGTTCAATCTGTCTATTTCGTTCATCCATAGTTGCCTGACTCCCCGTCGTGTAGATAACTACGATACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTGCAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCAGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGCGACCGAGTTGCTCTTGCCCGGCGTCAACACGGGATAATACCGCACCACATAGCAGAACTTTAAAAGTGCTCATCATTGGAAAACGTTCTTCGGGGCGAAAACTCTCAAGGATCTTACCGCTGTTGAGATCCAGTTCGATGTAACCCACTCGTGCACCCAACTGATCTTCAGCATCTTTTACTTTCACCAGCGTTTCTGGGTGAGCAAAAACAGGAAGGCAAAATGCCGCAAAAAAGGGAATAAGGGCGACACGAAAATGTTGAATACTCAT" + pos_a = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + ] + pos_b = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 46.1, + 47, + 48, + 49, + 50, + 51, + 52, + 52.1, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 193.1, + 193.2, + 193.3, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 242.1, + 242.2, + 242.3, + 242.4, + 242.5, + 242.6, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 253.1, + 253.2, + 253.3, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 421.1, + 421.2, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 466.1, + 467, + 468, + 468.1, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 561.1, + 561.2, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 572.1, + 572.2, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 616.1, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + ] + + pos_a = [str(i) for i in pos_a] + pos_b = [str(i) for i in pos_b] + + print(seq_a) + print(seq_b) + + mutation_detection = MutationDetection() + + print(mutation_detection.find_mutations(seq_a, seq_b, pos_a, pos_b)) diff --git a/src/pyeed/analysis/sequence_alignment.py b/src/pyeed/analysis/sequence_alignment.py index 09e8aab1..0b5537a1 100644 --- a/src/pyeed/analysis/sequence_alignment.py +++ b/src/pyeed/analysis/sequence_alignment.py @@ -5,7 +5,6 @@ from Bio.Align import PairwiseAligner as BioPairwiseAligner from Bio.Align.substitution_matrices import Array as BioSubstitutionMatrix from joblib import Parallel, cpu_count, delayed -from loguru import logger from rich.progress import Progress from pyeed.dbconnect import DatabaseConnector @@ -21,18 +20,42 @@ class PairwiseAligner: def __init__( self, mode: str = "global", - match: int = 1, - mismatch: int = -1, - gap_open: int = -1, - gap_exted: int = 0, - substitution_matrix: str = "None", + match: float = 1.0, + mismatch: float = -1.0, + gap_open: float = -10.0, + gap_extend: float = -0.5, + node_type: str = "Protein", ) -> None: + """Initialize the PairwiseAligner. + + Args: + mode (str): Alignment mode ('global' or 'local'). Defaults to 'global'. + match (float): Match score for DNA. Defaults to 1.0. + mismatch (float): Mismatch penalty for DNA. Defaults to -1.0. + gap_open (float): Gap opening penalty. Defaults to -10.0. + gap_extend (float): Gap extension penalty. Defaults to -0.5. + sequence_type (str): Type of sequence ('protein' or 'dna'). Defaults to 'protein'. + node_type (str): Type of node in database. Defaults to 'Protein'. + """ + self.node_type = node_type + self.mode = mode - self.match = match - self.mismatch = mismatch - self.gap_open = gap_open - self.gap_extend = gap_exted - self.substitution_matrix = substitution_matrix + + # Set parameters based on sequence type + if self.node_type == "DNA": + # DNA-specific parameters + self.match = 1.0 + self.mismatch = -1.0 + self.gap_open = -5.0 + self.gap_extend = -2.0 + self.substitution_matrix = "None" + else: # protein + # Protein-specific parameters with BLOSUM62 + self.match = None # Not used when using substitution matrix + self.mismatch = None # Not used when using substitution matrix + self.gap_open = -10.0 + self.gap_extend = -0.5 + self.substitution_matrix = "BLOSUM62" def _align( self, @@ -128,14 +151,6 @@ def align_multipairwise( if ids is not None and db is not None: sequences = self._get_id_sequence_dict(db, ids, node_type, region_ids_neo4j) - logger.info( - f"Length of sequences: {len(sequences)} and length of pairs: {len(pairs)} and length of ids: {len(ids)} and the length of the region_ids_neo4j: {len(region_ids_neo4j)}" - ) - logger.info(f"IDS: {ids}") - logger.info(f"Region IDs: {region_ids_neo4j}") - logger.info(f"Pairs: {pairs}") - logger.info(f"Sequences: {sequences.keys()}") - if not sequences: raise ValueError( "Either sequences or ids (with a database connection) must be provided." @@ -234,14 +249,19 @@ def _get_aligner(self) -> BioPairwiseAligner: from the class instance.""" aligner = BioPairwiseAligner() # type: ignore aligner.mode = self.mode - aligner.match_score = self.match - aligner.mismatch_score = self.mismatch + + if self.node_type == "DNA": + aligner.match_score = self.match + aligner.mismatch_score = self.mismatch + else: # protein + # Load BLOSUM62 matrix for proteins + from Bio.Align import substitution_matrices + + aligner.substitution_matrix = substitution_matrices.load("BLOSUM62") + aligner.open_gap_score = self.gap_open aligner.extend_gap_score = self.gap_extend - if self.substitution_matrix != "None": - aligner.substitution_matrix = self._load_substitution_matrix() - return aligner def _map_alignment_results( diff --git a/src/pyeed/analysis/standard_numbering.py b/src/pyeed/analysis/standard_numbering.py index 88450be6..fef383e7 100644 --- a/src/pyeed/analysis/standard_numbering.py +++ b/src/pyeed/analysis/standard_numbering.py @@ -402,11 +402,10 @@ def apply_standard_numbering_pairwise( if node_type == "DNA" and region_ids_neo4j is not None: query = """ MATCH (s:StandardNumbering {name: $name}) - MATCH (r:Region) + MATCH (d:DNA)-[e:HAS_REGION]-(r:Region)-[:HAS_STANDARD_NUMBERING]-(s) WHERE id(r) IN $region_ids_neo4j - MATCH (r:Region)<-[:HAS_STANDARD_NUMBERING]-(s) - WHERE r.accession_id IN $list_of_seq_ids - RETURN r.accession_id AS accession_id + AND d.accession_id IN $list_of_seq_ids + RETURN d.accession_id AS accession_id """ results = db.execute_read( @@ -443,8 +442,7 @@ def apply_standard_numbering_pairwise( logger.info(f"Pairs: {pairs}") # Run the pairwise alignment using the PairwiseAligner. - pairwise_aligner = PairwiseAligner() - + pairwise_aligner = PairwiseAligner(node_type=node_type) input = (list_of_seq_ids or []) + [base_sequence_id] if not input: raise ValueError("No input sequences provided") diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py index fc1cb79a..bc92eb3c 100644 --- a/src/pyeed/embedding.py +++ b/src/pyeed/embedding.py @@ -78,9 +78,9 @@ def load_model_and_tokenizer( model = model.to(device) # Check if multiple GPUs are available and wrap the model accordingly - if torch.cuda.device_count() > 1 and device.type == "cuda": - logger.info(f"Using {torch.cuda.device_count()} GPUs for parallel inference.") - model = torch.nn.DataParallel(model) + # if torch.cuda.device_count() > 1 and device.type == "cuda": + # logger.info(f"Using {torch.cuda.device_count()} GPUs for parallel inference.") + # model = torch.nn.DataParallel(model) return model, tokenizer, device @@ -113,17 +113,17 @@ def get_batch_embeddings( List of embeddings as NumPy arrays. """ # First, determine the base model type - base_model = model.module if isinstance(model, torch.nn.DataParallel) else model + # base_model = model.module if isinstance(model, torch.nn.DataParallel) else model - if isinstance(base_model, ESMC): + if isinstance(model, ESMC): # For ESMC models embedding_list = [] with torch.no_grad(): for sequence in batch_sequences: protein = ESMProtein(sequence=sequence) # Use the model directly - DataParallel handles internal distribution - protein_tensor = base_model.encode(protein) - logits_output = base_model.logits( + protein_tensor = model.encode(protein) + logits_output = model.logits( protein_tensor, LogitsConfig(sequence=True, return_embeddings=True) ) if logits_output.embeddings is None: @@ -135,14 +135,14 @@ def get_batch_embeddings( embeddings = embeddings.mean(axis=1) embedding_list.append(embeddings[0]) return embedding_list - elif isinstance(base_model, ESM3): + elif isinstance(model, ESM3): # For ESM3 models embedding_list = [] with torch.no_grad(): for sequence in batch_sequences: protein = ESMProtein(sequence=sequence) - sequence_encoding = base_model.encode(protein) - result = base_model.forward_and_sample( + sequence_encoding = model.encode(protein) + result = model.forward_and_sample( sequence_encoding, SamplingConfig(return_per_residue_embeddings=True), ) diff --git a/src/pyeed/main.py b/src/pyeed/main.py index 18c83fc6..40f570cd 100644 --- a/src/pyeed/main.py +++ b/src/pyeed/main.py @@ -458,17 +458,27 @@ def create_coding_sequences_regions(self) -> None: CREATE (r:Region {annotation: 'coding sequence', sequence_id: p.accession_id}) CREATE (d)-[rel:HAS_REGION { start: CASE - WHEN rel_encode.start IS NOT NULL THEN rel_encode.start + WHEN rel_encode.start IS NOT NULL THEN rel_encode.start - 1 ELSE 0 END, end: CASE - WHEN rel_encode.end IS NOT NULL THEN rel_encode.end + WHEN rel_encode.end IS NOT NULL THEN rel_encode.end - 1 ELSE size(d.sequence) - 1 END }]->(r) """ self.db.execute_write(query) + # for dna where ther is no protein encoded and no Region with coding sequence annotation, create a Region with the entire sequence length + # make the start at 0 and the end at the sequence length minus 1 + query = """ + MATCH (d:DNA) + WHERE NOT EXISTS((d)-[:HAS_REGION]->(:Region {annotation: 'coding sequence', sequence_id: d.accession_id})) + CREATE (r:Region {annotation: 'coding sequence', sequence_id: d.accession_id}) + CREATE (d)-[:HAS_REGION {start: 0, end: size(d.sequence) - 1}]->(r) + """ + self.db.execute_write(query) + # Log the number of regions created count_query = """ MATCH (d:DNA)-[:HAS_REGION]->(r:Region {annotation: 'coding sequence'}) From 1470beacbec943e5a0e32f635122153f7b1b5fa6 Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Thu, 8 May 2025 11:21:58 +0000 Subject: [PATCH 6/9] okay passed all ruff stuff --- src/pyeed/adapter/uniprot_mapper.py | 15 ++++---- src/pyeed/analysis/embedding_analysis.py | 3 +- src/pyeed/analysis/mutation_detection.py | 1 - src/pyeed/analysis/sequence_alignment.py | 3 +- src/pyeed/analysis/standard_numbering.py | 1 - src/pyeed/embedding.py | 45 +++++++++++------------- 6 files changed, 31 insertions(+), 37 deletions(-) diff --git a/src/pyeed/adapter/uniprot_mapper.py b/src/pyeed/adapter/uniprot_mapper.py index 7964d6da..23d8533a 100644 --- a/src/pyeed/adapter/uniprot_mapper.py +++ b/src/pyeed/adapter/uniprot_mapper.py @@ -15,8 +15,8 @@ Molecule, Organism, Protein, - Region, Reaction, + Region, Site, ) @@ -158,17 +158,18 @@ def add_catalytic_activity(self, record: dict[str, Any], protein: Protein) -> No try: for reference in record["comments"]: if reference["type"] == "CATALYTIC_ACTIVITY": - catalytic_annotation = CatalyticActivity.get_or_save( - catalytic_id=int(reference["id"]) - if reference.get("id") - else None, - name=reference["reaction"]["name"], + catalytic_annotation = Reaction.get_or_save( + rhea_id=str(reference["id"]) if reference.get("id") else None, + # Optionally, you can add name=reference["reaction"]["name"] if Reaction supports it ) - protein.catalytic_annotation.connect(catalytic_annotation) + # If protein has a reaction relationship, connect it + if hasattr(protein, "reaction"): + protein.reaction.connect(catalytic_annotation) except Exception as e: logger.error( f"Error saving catalytic activity for {protein.accession_id}: {e}" + ) def get_substrates_and_products_from_rhea( self, rhea_id: str diff --git a/src/pyeed/analysis/embedding_analysis.py b/src/pyeed/analysis/embedding_analysis.py index d8d104c0..73aaefb3 100644 --- a/src/pyeed/analysis/embedding_analysis.py +++ b/src/pyeed/analysis/embedding_analysis.py @@ -6,9 +6,8 @@ import scipy.spatial as sp from matplotlib.figure import Figure from numpy.typing import NDArray -from scipy.spatial.distance import cosine - from pyeed.dbconnect import DatabaseConnector +from scipy.spatial.distance import cosine logger = logging.getLogger(__name__) diff --git a/src/pyeed/analysis/mutation_detection.py b/src/pyeed/analysis/mutation_detection.py index 74c5e0fb..16829cbb 100644 --- a/src/pyeed/analysis/mutation_detection.py +++ b/src/pyeed/analysis/mutation_detection.py @@ -1,7 +1,6 @@ from typing import Any, Optional from loguru import logger - from pyeed.dbconnect import DatabaseConnector diff --git a/src/pyeed/analysis/sequence_alignment.py b/src/pyeed/analysis/sequence_alignment.py index a19e0cee..b0e94ed1 100644 --- a/src/pyeed/analysis/sequence_alignment.py +++ b/src/pyeed/analysis/sequence_alignment.py @@ -5,10 +5,9 @@ from Bio.Align import PairwiseAligner as BioPairwiseAligner from Bio.Align.substitution_matrices import Array as BioSubstitutionMatrix from joblib import Parallel, cpu_count, delayed -from rich.progress import Progress - from pyeed.dbconnect import DatabaseConnector from pyeed.tools.utility import chunks +from rich.progress import Progress class PairwiseAligner: diff --git a/src/pyeed/analysis/standard_numbering.py b/src/pyeed/analysis/standard_numbering.py index fef383e7..4bf9a8e8 100644 --- a/src/pyeed/analysis/standard_numbering.py +++ b/src/pyeed/analysis/standard_numbering.py @@ -13,7 +13,6 @@ from typing import Any, Dict, List, Optional, Tuple from loguru import logger - from pyeed.analysis.sequence_alignment import PairwiseAligner from pyeed.dbconnect import DatabaseConnector from pyeed.model import StandardNumbering diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py index 5b8a7b92..ad73ada3 100644 --- a/src/pyeed/embedding.py +++ b/src/pyeed/embedding.py @@ -1,22 +1,23 @@ import gc -import logging import os -from typing import Any, Tuple, Union +from typing import TYPE_CHECKING, Any, Tuple, Union import numpy as np import torch from esm.models.esm3 import ESM3 from esm.models.esmc import ESMC -from esm.sdk.api import ESM3InferenceClient, ESMProtein, LogitsConfig, SamplingConfig +from esm.sdk.api import ESMProtein, LogitsConfig, SamplingConfig from huggingface_hub import HfFolder, login from loguru import logger from numpy.typing import NDArray -from torch.nn import DataParallel, Module from transformers import EsmModel, EsmTokenizer from pyeed.dbconnect import DatabaseConnector -logger = logging.getLogger(__name__) +if TYPE_CHECKING: + from esm.models.esm3 import ESM3 + from esm.models.esmc import ESMC + from transformers import EsmModel def get_hf_token() -> str: @@ -39,7 +40,7 @@ def get_hf_token() -> str: def process_batches_on_gpu( data: list[tuple[str, str]], batch_size: int, - model: Module, + model: Union["EsmModel", "ESMC", torch.nn.DataParallel, "ESM3"], tokenizer: EsmTokenizer, db: DatabaseConnector, device: torch.device, @@ -57,8 +58,9 @@ def process_batches_on_gpu( """ logger.debug(f"Processing {len(data)} sequences on {device}.") - model = model.to(device) - + # Only call .to(device) if the model is ESMC or DataParallel + if isinstance(model, (ESMC, torch.nn.DataParallel)): + model = model.to(device) # Split data into smaller batches for batch_start in range(0, len(data), batch_size): batch_end = min(batch_start + batch_size, len(data)) @@ -120,10 +122,8 @@ def load_model_and_tokenizer( model: Any = ESMC.from_pretrained(model_name) model = model.to(device) elif "esm3-sm-open-v1" in model_name.lower(): - model: Any = ESM3.from_pretrained("esm3_sm_open_v1").to(device) - - tokenizer = None - + model: Any = ESM3.from_pretrained("esm3_sm_open_v1") + model = model.to(device) else: full_model_name = ( model_name @@ -147,7 +147,6 @@ def get_batch_embeddings( EsmModel, ESMC, torch.nn.DataParallel, - ESM3InferenceClient, ESM3, ], tokenizer_or_alphabet: Union[EsmTokenizer, None], @@ -269,12 +268,12 @@ def calculate_single_sequence_embedding_all_layers( def calculate_single_sequence_embedding_first_layer( - sequence: str, model_name: str = "facebook/esm2_t33_650M_UR50D" + sequence: str, device: torch.device, model_name: str = "facebook/esm2_t33_650M_UR50D" ) -> NDArray[np.float64]: """ Calculates an embedding for a single sequence using the first layer. """ - model, tokenizer, device = load_model_and_tokenizer(model_name) + model, tokenizer, device = load_model_and_tokenizer(model_name, device) return get_single_embedding_first_layer(sequence, model, tokenizer, device) @@ -284,7 +283,6 @@ def get_single_embedding_first_layer( """ Generates normalized embeddings for each token in the sequence across all layers. """ - embeddings_list = [] with torch.no_grad(): if isinstance(model, ESMC): @@ -419,7 +417,6 @@ def get_single_embedding_all_layers( NDArray[np.float64]: A numpy array containing the normalized token embeddings concatenated across all layers. """ - embeddings_list = [] with torch.no_grad(): if isinstance(model, ESMC): # For ESM-3: Use ESMProtein and request hidden states via LogitsConfig @@ -440,12 +437,14 @@ def get_single_embedding_all_layers( ) # logits_output.hidden_states should be a tuple of tensors: (layer, batch, seq_len, hidden_dim) + embeddings_list = [] for layer_tensor in logits_output.hidden_states: # Remove batch dimension and (if applicable) any special tokens emb = layer_tensor[0].to(torch.float32).cpu().numpy() # If your model adds special tokens, adjust the slicing (e.g., emb[1:-1]) emb = emb / np.linalg.norm(emb, axis=1, keepdims=True) embeddings_list.append(emb) + return np.array(embeddings_list) elif isinstance(model, ESM3): raise NotImplementedError("ESM3 is not supported for all layers") @@ -457,13 +456,11 @@ def get_single_embedding_all_layers( hidden_states = ( outputs.hidden_states ) # Tuple: (layer0, layer1, ..., layerN) - for layer_tensor in hidden_states: - # Remove batch dimension and special tokens ([CLS] and [SEP]) - emb = layer_tensor[0, 1:-1, :].detach().cpu().numpy() - emb = emb / np.linalg.norm(emb, axis=1, keepdims=True) - embeddings_list.append(emb) - - return np.array(embeddings_list) + # Remove the unused variable 'embeddings_list' and directly return the result + return np.array([ + layer_tensor[0, 1:-1, :].detach().cpu().numpy() / np.linalg.norm(layer_tensor[0, 1:-1, :].detach().cpu().numpy(), axis=1, keepdims=True) + for layer_tensor in hidden_states + ]) # The rest of your existing functions will need to be adapted in a similar way From 82b51216a808804efa4fd8d08c3b53245356bdc0 Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Thu, 8 May 2025 11:41:36 +0000 Subject: [PATCH 7/9] fixed ruff format --- src/pyeed/embedding.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py index ad73ada3..f20e4e17 100644 --- a/src/pyeed/embedding.py +++ b/src/pyeed/embedding.py @@ -190,7 +190,7 @@ def get_batch_embeddings( embeddings = embeddings.mean(axis=1) embedding_list.append(embeddings[0]) return embedding_list - + elif isinstance(base_model, ESM3): # For ESM3 models embedding_list = [] @@ -268,7 +268,9 @@ def calculate_single_sequence_embedding_all_layers( def calculate_single_sequence_embedding_first_layer( - sequence: str, device: torch.device, model_name: str = "facebook/esm2_t33_650M_UR50D" + sequence: str, + device: torch.device, + model_name: str = "facebook/esm2_t33_650M_UR50D", ) -> NDArray[np.float64]: """ Calculates an embedding for a single sequence using the first layer. @@ -457,10 +459,17 @@ def get_single_embedding_all_layers( outputs.hidden_states ) # Tuple: (layer0, layer1, ..., layerN) # Remove the unused variable 'embeddings_list' and directly return the result - return np.array([ - layer_tensor[0, 1:-1, :].detach().cpu().numpy() / np.linalg.norm(layer_tensor[0, 1:-1, :].detach().cpu().numpy(), axis=1, keepdims=True) - for layer_tensor in hidden_states - ]) + return np.array( + [ + layer_tensor[0, 1:-1, :].detach().cpu().numpy() + / np.linalg.norm( + layer_tensor[0, 1:-1, :].detach().cpu().numpy(), + axis=1, + keepdims=True, + ) + for layer_tensor in hidden_states + ] + ) # The rest of your existing functions will need to be adapted in a similar way From daead6de3113d8f508a7f0e803a621fbe5e74dd3 Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Thu, 8 May 2025 11:58:01 +0000 Subject: [PATCH 8/9] fixes mypy --- src/pyeed/analysis/mutation_detection.py | 1745 +--------------------- src/pyeed/analysis/sequence_alignment.py | 68 +- src/pyeed/embedding.py | 154 +- 3 files changed, 48 insertions(+), 1919 deletions(-) diff --git a/src/pyeed/analysis/mutation_detection.py b/src/pyeed/analysis/mutation_detection.py index 16829cbb..5fdc9dd7 100644 --- a/src/pyeed/analysis/mutation_detection.py +++ b/src/pyeed/analysis/mutation_detection.py @@ -292,1747 +292,4 @@ def get_mutations_between_sequences( ) return mutations - - -if __name__ == "__main__": - # debugging - - seq_a = "TGAGTATTCAACATTTTCGTGTCGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGTGCGGTATTATCCCGTGTTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGCAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACGACGGGGAGTCAGGCAACTATGGATGAACGAAATAGACAGATCGCTGAGATAGGTGCCTCACTGATTAAGCATTGGTAA" - seq_b = "CACAGATAAAACACTCTCCAGGAAACCCGGGGCGGTTCAATCTGTCTATTTCGTTCATCCATAGTTGCCTGACTCCCCGTCGTGTAGATAACTACGATACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTGCAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCAGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGCGACCGAGTTGCTCTTGCCCGGCGTCAACACGGGATAATACCGCACCACATAGCAGAACTTTAAAAGTGCTCATCATTGGAAAACGTTCTTCGGGGCGAAAACTCTCAAGGATCTTACCGCTGTTGAGATCCAGTTCGATGTAACCCACTCGTGCACCCAACTGATCTTCAGCATCTTTTACTTTCACCAGCGTTTCTGGGTGAGCAAAAACAGGAAGGCAAAATGCCGCAAAAAAGGGAATAAGGGCGACACGAAAATGTTGAATACTCAT" - pos_a = [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - ] - pos_b = [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 46.1, - 47, - 48, - 49, - 50, - 51, - 52, - 52.1, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 193.1, - 193.2, - 193.3, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 242.1, - 242.2, - 242.3, - 242.4, - 242.5, - 242.6, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 253.1, - 253.2, - 253.3, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 421.1, - 421.2, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 466.1, - 467, - 468, - 468.1, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 561.1, - 561.2, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 572.1, - 572.2, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 616.1, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - ] - - pos_a = [str(i) for i in pos_a] - pos_b = [str(i) for i in pos_b] - - print(seq_a) - print(seq_b) - - mutation_detection = MutationDetection() - - print(mutation_detection.find_mutations(seq_a, seq_b, pos_a, pos_b)) + \ No newline at end of file diff --git a/src/pyeed/analysis/sequence_alignment.py b/src/pyeed/analysis/sequence_alignment.py index b0e94ed1..e6b9d565 100644 --- a/src/pyeed/analysis/sequence_alignment.py +++ b/src/pyeed/analysis/sequence_alignment.py @@ -19,43 +19,20 @@ class PairwiseAligner: def __init__( self, mode: str = "global", - match: float = 1.0, - mismatch: float = -1.0, - gap_open: float = -10.0, - gap_extend: float = -0.5, + match: int = 1, + mismatch: int = -1, + gap_open: int = -1, + gap_exted: int = 0, + substitution_matrix: str = "None", node_type: str = "Protein", ) -> None: - """Initialize the PairwiseAligner. - - Args: - mode (str): Alignment mode ('global' or 'local'). Defaults to 'global'. - match (float): Match score for DNA. Defaults to 1.0. - mismatch (float): Mismatch penalty for DNA. Defaults to -1.0. - gap_open (float): Gap opening penalty. Defaults to -10.0. - gap_extend (float): Gap extension penalty. Defaults to -0.5. - sequence_type (str): Type of sequence ('protein' or 'dna'). Defaults to 'protein'. - node_type (str): Type of node in database. Defaults to 'Protein'. - """ - self.node_type = node_type - self.mode = mode - - # Set parameters based on sequence type - if self.node_type == "DNA": - # DNA-specific parameters - self.match = 1.0 - self.mismatch = -1.0 - self.gap_open = -5.0 - self.gap_extend = -2.0 - self.substitution_matrix = "None" - else: # protein - # Protein-specific parameters with BLOSUM62 - self.match = None # Not used when using substitution matrix - self.mismatch = None # Not used when using substitution matrix - self.gap_open = -10.0 - self.gap_extend = -0.5 - self.substitution_matrix = "BLOSUM62" - + self.match = match + self.mismatch = mismatch + self.gap_open = gap_open + self.gap_extend = gap_exted + self.substitution_matrix = substitution_matrix + self.node_type = node_type def _align( self, seq1: Dict[str, str], @@ -270,19 +247,14 @@ def _get_aligner(self) -> BioPairwiseAligner: from the class instance.""" aligner = BioPairwiseAligner() # type: ignore aligner.mode = self.mode - - if self.node_type == "DNA": - aligner.match_score = self.match - aligner.mismatch_score = self.mismatch - else: # protein - # Load BLOSUM62 matrix for proteins - from Bio.Align import substitution_matrices - - aligner.substitution_matrix = substitution_matrices.load("BLOSUM62") - + aligner.match_score = self.match + aligner.mismatch_score = self.mismatch aligner.open_gap_score = self.gap_open aligner.extend_gap_score = self.gap_extend + if self.substitution_matrix != "None": + aligner.substitution_matrix = self._load_substitution_matrix() + return aligner def _map_alignment_results( @@ -341,11 +313,13 @@ def _get_id_sequence_dict( if region_ids_neo4j is not None: query = f""" MATCH (p:{node_type})-[e:HAS_REGION]->(r:Region) - WHERE id(r) IN {region_ids_neo4j} AND p.accession_id IN {ids} + WHERE id(r) IN $region_ids_neo4j AND p.accession_id IN $ids RETURN p.accession_id AS accession_id, e.start AS start, e.end AS end, p.sequence AS sequence """ - nodes = db.execute_read(query) - + nodes = db.execute_read( + query, + parameters={"region_ids_neo4j": region_ids_neo4j, "ids": ids}, + ) else: query = f""" MATCH (p:{node_type}) diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py index f20e4e17..5d1ff5a9 100644 --- a/src/pyeed/embedding.py +++ b/src/pyeed/embedding.py @@ -1,24 +1,20 @@ import gc import os -from typing import TYPE_CHECKING, Any, Tuple, Union +from typing import Any, Tuple, Union import numpy as np import torch from esm.models.esm3 import ESM3 from esm.models.esmc import ESMC -from esm.sdk.api import ESMProtein, LogitsConfig, SamplingConfig +from esm.sdk.api import ESM3InferenceClient, ESMProtein, LogitsConfig, SamplingConfig from huggingface_hub import HfFolder, login from loguru import logger from numpy.typing import NDArray +from torch.nn import DataParallel, Module from transformers import EsmModel, EsmTokenizer from pyeed.dbconnect import DatabaseConnector -if TYPE_CHECKING: - from esm.models.esm3 import ESM3 - from esm.models.esmc import ESMC - from transformers import EsmModel - def get_hf_token() -> str: """Get or request Hugging Face token.""" @@ -40,7 +36,7 @@ def get_hf_token() -> str: def process_batches_on_gpu( data: list[tuple[str, str]], batch_size: int, - model: Union["EsmModel", "ESMC", torch.nn.DataParallel, "ESM3"], + model: Module, tokenizer: EsmTokenizer, db: DatabaseConnector, device: torch.device, @@ -58,9 +54,8 @@ def process_batches_on_gpu( """ logger.debug(f"Processing {len(data)} sequences on {device}.") - # Only call .to(device) if the model is ESMC or DataParallel - if isinstance(model, (ESMC, torch.nn.DataParallel)): - model = model.to(device) + model = model.to(device) + # Split data into smaller batches for batch_start in range(0, len(data), batch_size): batch_end = min(batch_start + batch_size, len(data)) @@ -114,30 +109,22 @@ def load_model_and_tokenizer( Tuple: (model, tokenizer, device) """ token = get_hf_token() - # Default device is the first CUDA device if available, else CPU. - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") tokenizer = None if "esmc" in model_name.lower(): - model: Any = ESMC.from_pretrained(model_name) - model = model.to(device) + model = ESMC.from_pretrained(model_name) elif "esm3-sm-open-v1" in model_name.lower(): - model: Any = ESM3.from_pretrained("esm3_sm_open_v1") - model = model.to(device) + model = ESM3.from_pretrained("esm3_sm_open_v1") else: full_model_name = ( model_name if model_name.startswith("facebook/") else f"facebook/{model_name}" ) - model: Any = EsmModel.from_pretrained(full_model_name, use_auth_token=token) + model = EsmModel.from_pretrained(full_model_name, use_auth_token=token) tokenizer = EsmTokenizer.from_pretrained(full_model_name, use_auth_token=token) - model = model.to(device) - # Check if multiple GPUs are available and wrap the model accordingly - # if torch.cuda.device_count() > 1 and device.type == "cuda": - # logger.info(f"Using {torch.cuda.device_count()} GPUs for parallel inference.") - # model = torch.nn.DataParallel(model) + model = model.to(device) return model, tokenizer, device @@ -146,7 +133,8 @@ def get_batch_embeddings( model: Union[ EsmModel, ESMC, - torch.nn.DataParallel, + DataParallel[Module], + ESM3InferenceClient, ESM3, ], tokenizer_or_alphabet: Union[EsmTokenizer, None], @@ -190,7 +178,6 @@ def get_batch_embeddings( embeddings = embeddings.mean(axis=1) embedding_list.append(embeddings[0]) return embedding_list - elif isinstance(base_model, ESM3): # For ESM3 models embedding_list = [] @@ -267,75 +254,6 @@ def calculate_single_sequence_embedding_all_layers( return get_single_embedding_all_layers(sequence, model, tokenizer, device) -def calculate_single_sequence_embedding_first_layer( - sequence: str, - device: torch.device, - model_name: str = "facebook/esm2_t33_650M_UR50D", -) -> NDArray[np.float64]: - """ - Calculates an embedding for a single sequence using the first layer. - """ - model, tokenizer, device = load_model_and_tokenizer(model_name, device) - return get_single_embedding_first_layer(sequence, model, tokenizer, device) - - -def get_single_embedding_first_layer( - sequence: str, model: Any, tokenizer: Any, device: torch.device -) -> NDArray[np.float64]: - """ - Generates normalized embeddings for each token in the sequence across all layers. - """ - - with torch.no_grad(): - if isinstance(model, ESMC): - # ESM-3 logic - from esm.sdk.api import ESMProtein, LogitsConfig - - protein = ESMProtein(sequence=sequence) - protein_tensor = model.encode(protein) - logits_output = model.logits( - protein_tensor, - LogitsConfig( - sequence=True, - return_embeddings=True, - return_hidden_states=True, - ), - ) - if logits_output.hidden_states is None: - raise ValueError( - "Model did not return hidden states. Check LogitsConfig settings." - ) - embedding = ( - logits_output.hidden_states[0][0].to(torch.float32).cpu().numpy() - ) - - elif isinstance(model, ESM3): - # ESM-3 logic - from esm.sdk.api import ESMProtein, SamplingConfig - - protein = ESMProtein(sequence=sequence) - protein_tensor = model.encode(protein) - embedding = model.forward_and_sample( - protein_tensor, - SamplingConfig(return_per_residue_embeddings=True), - ) - if embedding is None or embedding.per_residue_embedding is None: - raise ValueError("Model did not return embeddings") - embedding = embedding.per_residue_embedding.to(torch.float32).cpu().numpy() - - else: - # ESM-2 logic - inputs = tokenizer(sequence, return_tensors="pt").to(device) - outputs = model(**inputs, output_hidden_states=True) - # Get the first layer's hidden states for all residues (excluding special tokens) - embedding = outputs.hidden_states[0][0, 1:-1, :].detach().cpu().numpy() - - # Ensure embedding is a numpy array and normalize it - embedding = np.asarray(embedding, dtype=np.float64) - embedding = embedding / np.linalg.norm(embedding, axis=1, keepdims=True) - return embedding - - def get_single_embedding_last_hidden_state( sequence: str, model: Any, tokenizer: Any, device: torch.device ) -> NDArray[np.float64]: @@ -362,9 +280,12 @@ def get_single_embedding_last_hidden_state( logits_output = model.logits( protein_tensor, LogitsConfig( - sequence=True, return_embeddings=True, return_hidden_states=True + sequence=True, + return_embeddings=True, + return_hidden_states=True, ), ) + # Ensure hidden_states is not None before accessing it if logits_output.hidden_states is None: raise ValueError( "Model did not return hidden states. Check LogitsConfig settings." @@ -373,24 +294,10 @@ def get_single_embedding_last_hidden_state( embedding = ( logits_output.hidden_states[-1][0].to(torch.float32).cpu().numpy() ) - elif isinstance(model, ESM3): - # ESM-3 logic - from esm.sdk.api import ESMProtein, SamplingConfig - - protein = ESMProtein(sequence=sequence) - sequence_encoding = model.encode(protein) - - embedding = model.forward_and_sample( - sequence_encoding, SamplingConfig(return_per_residue_embeddings=True) - ) - - if embedding is None or embedding.per_residue_embedding is None: - raise ValueError("Model did not return embeddings") - embedding = embedding.per_residue_embedding.to(torch.float32).cpu().numpy() else: # ESM-2 logic inputs = tokenizer(sequence, return_tensors="pt").to(device) - outputs = model(**inputs, output_hidden_states=True, return_dict=True) + outputs = model(**inputs) embedding = outputs.last_hidden_state[0, 1:-1, :].detach().cpu().numpy() # normalize the embedding @@ -419,6 +326,7 @@ def get_single_embedding_all_layers( NDArray[np.float64]: A numpy array containing the normalized token embeddings concatenated across all layers. """ + embeddings_list = [] with torch.no_grad(): if isinstance(model, ESMC): # For ESM-3: Use ESMProtein and request hidden states via LogitsConfig @@ -439,17 +347,12 @@ def get_single_embedding_all_layers( ) # logits_output.hidden_states should be a tuple of tensors: (layer, batch, seq_len, hidden_dim) - embeddings_list = [] for layer_tensor in logits_output.hidden_states: # Remove batch dimension and (if applicable) any special tokens emb = layer_tensor[0].to(torch.float32).cpu().numpy() # If your model adds special tokens, adjust the slicing (e.g., emb[1:-1]) emb = emb / np.linalg.norm(emb, axis=1, keepdims=True) embeddings_list.append(emb) - return np.array(embeddings_list) - - elif isinstance(model, ESM3): - raise NotImplementedError("ESM3 is not supported for all layers") else: # For ESM-2: Get hidden states with output_hidden_states=True @@ -458,18 +361,13 @@ def get_single_embedding_all_layers( hidden_states = ( outputs.hidden_states ) # Tuple: (layer0, layer1, ..., layerN) - # Remove the unused variable 'embeddings_list' and directly return the result - return np.array( - [ - layer_tensor[0, 1:-1, :].detach().cpu().numpy() - / np.linalg.norm( - layer_tensor[0, 1:-1, :].detach().cpu().numpy(), - axis=1, - keepdims=True, - ) - for layer_tensor in hidden_states - ] - ) + for layer_tensor in hidden_states: + # Remove batch dimension and special tokens ([CLS] and [SEP]) + emb = layer_tensor[0, 1:-1, :].detach().cpu().numpy() + emb = emb / np.linalg.norm(emb, axis=1, keepdims=True) + embeddings_list.append(emb) + + return np.array(embeddings_list) # The rest of your existing functions will need to be adapted in a similar way @@ -514,4 +412,4 @@ def update_protein_embeddings_in_db( """ # Execute the update query with parameters - db.execute_write(query, {"updates": updates}) + db.execute_write(query, {"updates": updates}) \ No newline at end of file From bc7ac9801d8a517dbcc66ef0e33d39b6b75ad53b Mon Sep 17 00:00:00 2001 From: Niklas Abraham GPU Date: Thu, 8 May 2025 12:08:15 +0000 Subject: [PATCH 9/9] fixed ruff format --- src/pyeed/analysis/mutation_detection.py | 1 - src/pyeed/analysis/sequence_alignment.py | 1 + src/pyeed/embedding.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyeed/analysis/mutation_detection.py b/src/pyeed/analysis/mutation_detection.py index 5fdc9dd7..c2562ae1 100644 --- a/src/pyeed/analysis/mutation_detection.py +++ b/src/pyeed/analysis/mutation_detection.py @@ -292,4 +292,3 @@ def get_mutations_between_sequences( ) return mutations - \ No newline at end of file diff --git a/src/pyeed/analysis/sequence_alignment.py b/src/pyeed/analysis/sequence_alignment.py index e6b9d565..0ca43d02 100644 --- a/src/pyeed/analysis/sequence_alignment.py +++ b/src/pyeed/analysis/sequence_alignment.py @@ -33,6 +33,7 @@ def __init__( self.gap_extend = gap_exted self.substitution_matrix = substitution_matrix self.node_type = node_type + def _align( self, seq1: Dict[str, str], diff --git a/src/pyeed/embedding.py b/src/pyeed/embedding.py index 5d1ff5a9..28f66a1b 100644 --- a/src/pyeed/embedding.py +++ b/src/pyeed/embedding.py @@ -412,4 +412,4 @@ def update_protein_embeddings_in_db( """ # Execute the update query with parameters - db.execute_write(query, {"updates": updates}) \ No newline at end of file + db.execute_write(query, {"updates": updates})