From ed4e674143ace1305108bcd0ca24d956e02cff93 Mon Sep 17 00:00:00 2001 From: jkobject Date: Thu, 5 Sep 2024 17:14:12 +0200 Subject: [PATCH 1/6] work on multiple updates --- ...h_omni copy.ipynb => updates_on_grn.ipynb} | 700 ++++++++--- scprint/model/hyper_attn/__init__.py | 4 + .../model/hyper_attn/angular_lsh_triton.py | 215 ++++ scprint/model/hyper_attn/attn_utils.py | 52 + scprint/model/hyper_attn/hyperattention.py | 1055 +++++++++++++++++ scprint/model/hyper_attn/hyperformer.py | 177 +++ scprint/tasks/grn.py | 6 +- 7 files changed, 2046 insertions(+), 163 deletions(-) rename notebooks/additional/{bench_omni copy.ipynb => updates_on_grn.ipynb} (89%) create mode 100644 scprint/model/hyper_attn/__init__.py create mode 100644 scprint/model/hyper_attn/angular_lsh_triton.py create mode 100644 scprint/model/hyper_attn/attn_utils.py create mode 100644 scprint/model/hyper_attn/hyperattention.py create mode 100644 scprint/model/hyper_attn/hyperformer.py diff --git a/notebooks/additional/bench_omni copy.ipynb b/notebooks/additional/updates_on_grn.ipynb similarity index 89% rename from notebooks/additional/bench_omni copy.ipynb rename to notebooks/additional/updates_on_grn.ipynb index abef63c..f6f8e54 100644 --- a/notebooks/additional/bench_omni copy.ipynb +++ b/notebooks/additional/updates_on_grn.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "id": "5af23ef8", "metadata": { "execution": { @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 66, "id": "e1d05202", "metadata": { "execution": { @@ -101,17 +101,17 @@ ], "source": [ "model = scPrint.load_from_checkpoint(\n", - "# '../data/temp/o2uniqsx/epoch=18-step=133000.ckpt', precpt_gene_emb=None)\n", - "# '../data/temp/vbd8bavn/epoch=19-step=100000.ckpt', precpt_gene_emb=None)\n", - " '../../data/temp/1tghqqzx_dir/epoch=18-step=133000.ckpt', precpt_gene_emb=None)\n", + " '../../data/temp/o2uniqsx/epoch=18-step=133000.ckpt', precpt_gene_emb=None)\n", + "# '../../data/temp/vbd8bavn/epoch=19-step=100000.ckpt', precpt_gene_emb=None)\n", + "# '../../data/temp/1tghqqzx_dir/epoch=18-step=133000.ckpt', precpt_gene_emb=None)\n", " #'/pasteur/zeus/projets/p02/ml4ig_hot/Users/jkalfon/scprint_scale/o2uniqsx/checkpoints/epoch=18-step=133000.ckpt', precpt_gene_emb=None)\n", - "NUM_GENES = 3000\n", + "NUM_GENES = 8000\n", "MAXCELLS = 1024" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 67, "id": "de65e859", "metadata": { "execution": { @@ -147,7 +147,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "id": "7a31e4ea", "metadata": { "execution": { @@ -178,7 +178,7 @@ " obsp: 'T_fwd', 'connectivities', 'distances'" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -193,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "id": "9622cc6a", "metadata": { "execution": { @@ -219,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "id": "2e9b2755", "metadata": {}, "outputs": [], @@ -259,7 +259,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "05f7e16e", "metadata": {}, "outputs": [ @@ -324,9 +324,17 @@ "adata" ] }, + { + "cell_type": "markdown", + "id": "6d33422f", + "metadata": {}, + "source": [ + "## array sparsification and seeing the smoothness of the attention matrix" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 68, "id": "c9ec3a94", "metadata": {}, "outputs": [ @@ -341,24 +349,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 54/54 [01:03<00:00, 1.18s/it]\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "module 'scipy.sparse' has no attribute 'COO'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[10], line 14\u001b[0m\n\u001b[1;32m 1\u001b[0m grn_inferer \u001b[38;5;241m=\u001b[39m GNInfer(\n\u001b[1;32m 2\u001b[0m layer\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mlist\u001b[39m(\u001b[38;5;28mrange\u001b[39m(model\u001b[38;5;241m.\u001b[39mnlayers))[:],\n\u001b[1;32m 3\u001b[0m how\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmost var across\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m batch_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m16\u001b[39m,\n\u001b[1;32m 13\u001b[0m )\n\u001b[0;32m---> 14\u001b[0m grn \u001b[38;5;241m=\u001b[39m \u001b[43mgrn_inferer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43madata\u001b[49m\u001b[43m[\u001b[49m\u001b[43madata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mX\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msum\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;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;43m500\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcell_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcelltype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m grn\u001b[38;5;241m.\u001b[39mvar\u001b[38;5;241m.\u001b[39mindex \u001b[38;5;241m=\u001b[39m make_index_unique(grn\u001b[38;5;241m.\u001b[39mvar[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msymbol\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mstr\u001b[39m))\n\u001b[1;32m 16\u001b[0m grn\u001b[38;5;241m.\u001b[39mvarp[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mall\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m grn\u001b[38;5;241m.\u001b[39mvarp[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGRN\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", - "File \u001b[0;32m~/Documents code/scPRINT/scprint/tasks/grn.py:146\u001b[0m, in \u001b[0;36mGNInfer.__call__\u001b[0;34m(self, model, adata, cell_type)\u001b[0m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlayer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(\u001b[38;5;28mrange\u001b[39m(model\u001b[38;5;241m.\u001b[39mnlayers))\n\u001b[1;32m 145\u001b[0m subadata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpredict(model, adata, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlayer, cell_type)\n\u001b[0;32m--> 146\u001b[0m adjacencies \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maggregate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mattn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgenes\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhead_agg \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave(adjacencies[\u001b[38;5;241m8\u001b[39m:, \u001b[38;5;241m8\u001b[39m:, :], subadata)\n", - "File \u001b[0;32m~/Documents code/scPRINT/scprint/tasks/grn.py:322\u001b[0m, in \u001b[0;36mGNInfer.aggregate\u001b[0;34m(self, attn, genes)\u001b[0m\n\u001b[1;32m 320\u001b[0m attn[attn \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m0.01\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 321\u001b[0m attn \u001b[38;5;241m=\u001b[39m attn\u001b[38;5;241m.\u001b[39mreshape(attn\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m], attn\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m1\u001b[39m], \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m--> 322\u001b[0m attn \u001b[38;5;241m=\u001b[39m \u001b[43msparse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCOO\u001b[49m\u001b[38;5;241m.\u001b[39mfrom_numpy(attn)\n\u001b[1;32m 323\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m attns \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\u001b[1;32m 324\u001b[0m attns \u001b[38;5;241m=\u001b[39m sparse\u001b[38;5;241m.\u001b[39mconcat([attns, attn], axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n", - "\u001b[0;31mAttributeError\u001b[0m: module 'scipy.sparse' has no attribute 'COO'" + "100%|██████████| 54/54 [04:06<00:00, 4.56s/it]\n" ] } ], "source": [ + "\n", "grn_inferer = GNInfer(\n", " layer=list(range(model.nlayers))[:],\n", " how=\"most var across\",\n", @@ -367,274 +363,658 @@ " filtration=\"none\",\n", " forward_mode=\"none\",\n", " num_genes=NUM_GENES,\n", - " max_cells=1024,\n", + " max_cells=MAXCELLS,\n", " drop_unexpressed=True,\n", " doplot=False,\n", " batch_size=16,\n", " )\n", "grn = grn_inferer(model, adata[adata.X.sum(1) > 500], cell_type=celltype)\n", "grn.var.index = make_index_unique(grn.var['symbol'].astype(str))\n", - "grn.varp['all'] = grn.varp['GRN']\n", - "grn.varp['GRN'] = grn.varp['GRN'][:,:,:].mean(-1)\n", - "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "00aaa1b1", - "metadata": {}, - "outputs": [], - "source": [ - "grn" + "grn.varp['all'] = grn.varp['GRN']" ] }, { "cell_type": "code", - "execution_count": 25, - "id": "4cc316e9", + "execution_count": 69, + "id": "708a7dd4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'kidney distal convoluted tubule epithelial cell_scprint_mean': {'TF_enr': False,\n", - " 'significant_enriched_TFtargets': 36.8421052631579,\n", - " 'precision': 0.0007712089230724747,\n", - " 'recall': 1.0,\n", - " 'rand_precision': 0.0007715756415332794,\n", - " 'auprc': 0.0007887667116478179,\n", - " 'ap': 0.0007893938689669899,\n", - " 'epr': 0.3792641825789932}}" + "0.971824" ] }, - "execution_count": 25, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "metrics" + "grn.varp['all'][:,:,5].sum(1).max()" ] }, { "cell_type": "code", - "execution_count": 39, - "id": "688b4b0f", + "execution_count": 97, + "id": "728a3771", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0" + "0.06559217" ] }, - "execution_count": 39, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(grn.varp['GRN']>0.1).sum()" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "483910ba", - "metadata": {}, - "outputs": [], - "source": [ - "import sparse" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "3ede61bc", - "metadata": {}, - "outputs": [], - "source": [ - "grn.varp['GRN'] = attns" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "567e0929", - "metadata": {}, - "outputs": [], - "source": [ - "grn.varp['all'] = attns" + "grn.varp['all'][:,:,12].sum(1).mean()" ] }, { "cell_type": "code", - "execution_count": 96, - "id": "dbe7a6ba", + "execution_count": 34, + "id": "014d364f", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { - "text/html": [ - "
Formatcoo
Data Typefloat32
Shape(3000, 3000)
nnz796357
Density0.08848411111111111
Read-onlyTrue
Size15.2M
Storage ratio0.44
" - ], + "image/png": "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", "text/plain": [ - "" + "
" ] }, - "execution_count": 96, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-05 15:19:05,769 [ERROR] No gene sets passed through filtering condition !!! \n", + "Hint 1: Try to lower min_size or increase max_size !\n", + "Hint 2: Check gene symbols are identifiable to your gmt input.\n", + "Hint 3: Gene symbols curated in Enrichr web services are all upcases.\n", + "\n", + "2024-09-05 15:19:05,770 [ERROR] The first entry of your gene_sets (gmt) look like this : { 0__TFs: [AC008770, AC023509, AC092835, AC138696, ADNP, ADNP2, AEBP1, AEBP2, AHCTF1, AHDC1, AHR, AHRR, AIRE, AKAP8, AKAP8L, AKNA, ALX1, ALX3, ALX4, ANHX, ANKZF1, AR, ARGFX, ARHGAP35, ARID2, ARID3A, ARID3B, ARID3C, ARID5A, ARID5B, ARNT, ARNT2, ARNTL, ARNTL2, ARX, ASCL1, ASCL2, ASCL3, ASCL4, ASCL5, ASH1L, ATF1, ATF2, ATF3, ATF4, ATF5, ATF6, ATF6B, ATF7, ATMIN, ATOH1, ATOH7, ATOH8, BACH1, BACH2, BARHL1, BARHL2, BARX1, BARX2, BATF, BATF2, BATF3, BAZ2A, BAZ2B, BBX, BCL11A, BCL11B, BCL6, BCL6B, BHLHA15, BHLHA9, BHLHE22, BHLHE23, BHLHE40, BHLHE41, BNC1, BNC2, BORCS8-MEF2B, BPTF, BRF2, BSX, C11orf95, CAMTA1, CAMTA2, CARF, CASZ1, CBX2, CC2D1A, CCDC169-SOHLH2, CCDC17, CDC5L, CDX1, CDX2, CDX4, CEBPA, CEBPB, CEBPD, CEBPE, CEBPG, CEBPZ, CENPA, CENPB, CENPBD1, CENPS, CENPT, CENPX, CGGBP1, CHAMP1, CHCHD3, CIC, CLOCK, CPEB1, CPXCR1, CREB1, CREB3, CREB3L1, CREB3L2, CREB3L3, CREB3L4, CREB5, CREBL2, CREBZF, CREM, CRX, CSRNP1, CSRNP2, CSRNP3, CTCF, CTCFL, CUX1, CUX2, CXXC1, CXXC4, CXXC5, DACH1, DACH2, DBP, DBX1, DBX2, DDIT3, DEAF1, DLX1, DLX2, DLX3, DLX4, DLX5, DLX6, DMBX1, DMRT1, DMRT2, DMRT3, DMRTA1, DMRTA2, DMRTB1, DMRTC2, DMTF1, DNMT1, DNTTIP1, DOT1L, DPF1, DPF3, DPRX, DR1, DRAP1, DRGX, DUX1, DUX3, DUX4, DUXA, DZIP1, E2F1, E2F2, E2F3, E2F4, E2F5, E2F6, E2F7, E2F8, E4F1, EBF1, EBF2, EBF3, EBF4, EEA1, EGR1, EGR2, EGR3, EGR4, EHF, ELF1, ELF2, ELF3, ELF4, ELF5, ELK1, ELK3, ELK4, EMX1, EMX2, EN1, EN2, EOMES, EPAS1, ERF, ERG, ESR1, ESR2, ESRRA, ESRRB, ESRRG, ESX1, ETS1, ETS2, ETV1, ETV2, ETV3, ETV3L, ETV4, ETV5, ETV6, ETV7, EVX1, EVX2, FAM170A, FAM200B, FBXL19, FERD3L, FEV, FEZF1, FEZF2, FIGLA, FIZ1, FLI1, FLYWCH1, FOS, FOSB, FOSL1, FOSL2, FOXA1, FOXA2, FOXA3, FOXB1, FOXB2, FOXC1, FOXC2, FOXD1, FOXD2, FOXD3, FOXD4, FOXD4L1, FOXD4L3, FOXD4L4, FOXD4L5, FOXD4L6, FOXE1, FOXE3, FOXF1, FOXF2, FOXG1, FOXH1, FOXI1, FOXI2, FOXI3, FOXJ1, FOXJ2, FOXJ3, FOXK1, FOXK2, FOXL1, FOXL2, FOXM1, FOXN1, FOXN2, FOXN3, FOXN4, FOXO1, FOXO3, FOXO4, FOXO6, FOXP1, FOXP2, FOXP3, FOXP4, FOXQ1, FOXR1, FOXR2, FOXS1, GABPA, GATA1, GATA2, GATA3, GATA4, GATA5, GATA6, GATAD2A, GATAD2B, GBX1, GBX2, GCM1, GCM2, GFI1, GFI1B, GLI1, GLI2, GLI3, GLI4, GLIS1, GLIS2, GLIS3, GLMP, GLYR1, GMEB1, GMEB2, GPBP1, GPBP1L1, GRHL1, GRHL2, GRHL3, GSC, GSC2, GSX1, GSX2, GTF2B, GTF2I, GTF2IRD1, GTF2IRD2, GTF2IRD2B, GTF3A, GZF1, HAND1, HAND2, HBP1, HDX, HELT, HES1, HES2, HES3, HES4, HES5, HES6, HES7, HESX1, HEY1, HEY2, HEYL, HHEX, HIC1, HIC2, HIF1A, HIF3A, HINFP, HIVEP1, HIVEP2, HIVEP3, HKR1, HLF, HLX, HMBOX1, HMG20A, HMG20B, HMGA1, HMGA2, HMGN3, HMX1, HMX2, HMX3, HNF1A, HNF1B, HNF4A, HNF4G, HOMEZ, HOXA1, HOXA10, HOXA11, HOXA13, HOXA2, HOXA3, HOXA4, HOXA5, HOXA6, HOXA7, HOXA9, HOXB1, HOXB13, HOXB2, HOXB3, HOXB4, HOXB5, HOXB6, HOXB7, HOXB8, HOXB9, HOXC10, HOXC11, HOXC12, HOXC13, HOXC4, HOXC5, HOXC6, HOXC8, HOXC9, HOXD1, HOXD10, HOXD11, HOXD12, HOXD13, HOXD3, HOXD4, HOXD8, HOXD9, HSF1, HSF2, HSF4, HSF5, HSFX1, HSFX2, HSFY1, HSFY2, IKZF1, IKZF2, IKZF3, IKZF4, IKZF5, INSM1, INSM2, IRF1, IRF2, IRF3, IRF4, IRF5, IRF6, IRF7, IRF8, IRF9, IRX1, IRX2, IRX3, IRX4, IRX5, IRX6, ISL1, ISL2, ISX, JAZF1, JDP2, JRK, JRKL, JUN, JUNB, JUND, KAT7, KCMF1, KCNIP3, KDM2A, KDM2B, KDM5B, KIN, KLF1, KLF10, KLF11, KLF12, KLF13, KLF14, KLF15, KLF16, KLF17, KLF2, KLF3, KLF4, KLF5, KLF6, KLF7, KLF8, KLF9, KMT2A, KMT2B, L3MBTL1, L3MBTL3, L3MBTL4, LBX1, LBX2, LCOR, LCORL, LEF1, LEUTX, LHX1, LHX2, LHX3, LHX4, LHX5, LHX6, LHX8, LHX9, LIN28A, LIN28B, LIN54, LMX1A, LMX1B, LTF, LYL1, MAF, MAFA, MAFB, MAFF, MAFG, MAFK, MAX, MAZ, MBD1, MBD2, MBD3, MBD4, MBD6, MBNL2, MECOM, MECP2, MEF2A, MEF2B, MEF2C, MEF2D, MEIS1, MEIS2, MEIS3, MEOX1, MEOX2, MESP1, MESP2, MGA, MITF, MIXL1, MKX, MLX, MLXIP, MLXIPL, MNT, MNX1, MSANTD1, MSANTD3, MSANTD4, MSC, MSGN1, MSX1, MSX2, MTERF1, MTERF2, MTERF3, MTERF4, MTF1, MTF2, MXD1, MXD3, MXD4, MXI1, MYB, MYBL1, MYBL2, MYC, MYCL, MYCN, MYF5, MYF6, MYNN, MYOD1, MYOG, MYPOP, MYRF, MYRFL, MYSM1, MYT1, MYT1L, MZF1, NACC2, NAIF1, NANOG, NANOGNB, NANOGP8, NCOA1, NCOA2, NCOA3, NEUROD1, NEUROD2, NEUROD4, NEUROD6, NEUROG1, NEUROG2, NEUROG3, NFAT5, NFATC1, NFATC2, NFATC3, NFATC4, NFE2, NFE2L1, NFE2L2, NFE2L3, NFE4, NFIA, NFIB, NFIC, NFIL3, NFIX, NFKB1, NFKB2, NFX1, NFXL1, NFYA, NFYB, NFYC, NHLH1, NHLH2, NKRF, NKX1-1, NKX1-2, NKX2-1, NKX2-2, NKX2-3, NKX2-4, NKX2-5, NKX2-6, NKX2-8, NKX3-1, NKX3-2, NKX6-1, NKX6-2, NKX6-3, NME2, NOBOX, NOTO, NPAS1, NPAS2, NPAS3, NPAS4, NR0B1, NR1D1, NR1D2, NR1H2, NR1H3, NR1H4, NR1I2, NR1I3, NR2C1, NR2C2, NR2E1, NR2E3, NR2F1, NR2F2, NR2F6, NR3C1, NR3C2, NR4A1, NR4A2, NR4A3, NR5A1, NR5A2, NR6A1, NRF1, NRL, OLIG1, OLIG2, OLIG3, ONECUT1, ONECUT2, ONECUT3, OSR1, OSR2, OTP, OTX1, OTX2, OVOL1, OVOL2, OVOL3, PA2G4, PATZ1, PAX1, PAX2, PAX3, PAX4, PAX5, PAX6, PAX7, PAX8, PAX9, PBX1, PBX2, PBX3, PBX4, PCGF2, PCGF6, PDX1, PEG3, PGR, PHF1, PHF19 , PHF20, PHF21A, PHOX2A, PHOX2B, PIN1, PITX1, PITX2, PITX3, PKNOX1, PKNOX2, PLAG1, PLAGL1, PLAGL2, PLSCR1, POGK, POU1F1, POU2AF1, POU2F1, POU2F2, POU2F3, POU3F1, POU3F2, POU3F3, POU3F4, POU4F1, POU4F2, POU4F3, POU5F1, POU5F1B, POU5F2, POU6F1, POU6F2, PPARA, PPARD, PPARG, PRDM1, PRDM10, PRDM12, PRDM13, PRDM14, PRDM15, PRDM16, PRDM2, PRDM4, PRDM5, PRDM6, PRDM8, PRDM9, PREB, PRMT3, PROP1, PROX1, PROX2, PRR12, PRRX1, PRRX2, PTF1A, PURA, PURB, PURG, RAG1, RARA, RARB, RARG, RAX, RAX2, RBAK, RBCK1, RBPJ, RBPJL, RBSN, REL, RELA, RELB, REPIN1, REST, REXO4, RFX1, RFX2, RFX3, RFX4, RFX5, RFX6, RFX7, RFX8, RHOXF1, RHOXF2, RHOXF2B, RLF, RORA, RORB, RORC, RREB1, RUNX1, RUNX2, RUNX3, RXRA, RXRB, RXRG, SAFB, SAFB2, SALL1, SALL2, SALL3, SALL4, SATB1, SATB2, SCMH1, SCML4, SCRT1, SCRT2, SCX, SEBOX, SETBP1, SETDB1, SETDB2, SGSM2, SHOX, SHOX2, SIM1, SIM2, SIX1, SIX2, SIX3, SIX4, SIX5, SIX6, SKI, SKIL, SKOR1, SKOR2, SLC2A4RG, SMAD1, SMAD3, SMAD4, SMAD5, SMAD9, SMYD3, SNAI1, SNAI2, SNAI3, SNAPC2, SNAPC4, SNAPC5, SOHLH1, SOHLH2, SON, SOX1, SOX10, SOX11, SOX12, SOX13, SOX14, SOX15, SOX17, SOX18, SOX2, SOX21, SOX3, SOX30, SOX4, SOX5, SOX6, SOX7, SOX8, SOX9, SP1, SP100, SP110, SP140, SP140L, SP2, SP3, SP4, SP5, SP6, SP7, SP8, SP9, SPDEF, SPEN, SPI1, SPIB, SPIC, SPZ1, SRCAP, SREBF1, SREBF2, SRF, SRY, ST18, STAT1, STAT2, STAT3, STAT4, STAT5A, STAT5B, STAT6, T, TAL1, TAL2, TBP, TBPL1, TBPL2, TBR1, TBX1, TBX10, TBX15, TBX18, TBX19, TBX2, TBX20, TBX21, TBX22, TBX3, TBX4, TBX5, TBX6, TCF12, TCF15, TCF20, TCF21, TCF23, TCF24, TCF3, TCF4, TCF7, TCF7L1, TCF7L2, TCFL5, TEAD1, TEAD2, TEAD3, TEAD4, TEF, TERB1, TERF1, TERF2, TET1, TET2, TET3, TFAP2A, TFAP2B, TFAP2C, TFAP2D, TFAP2E, TFAP4, TFCP2, TFCP2L1, TFDP1, TFDP2, TFDP3, TFE3, TFEB, TFEC, TGIF1, TGIF2, TGIF2LX, TGIF2LY, THAP1, THAP10, THAP11, THAP12, THAP2, THAP3, THAP4, THAP5, THAP6, THAP7, THAP8, THAP9, THRA, THRB, THYN1, TIGD1, TIGD2, TIGD3, TIGD4, TIGD5, TIGD6, TIGD7, TLX1, TLX2, TLX3, TMF1, TOPORS, TP53, TP63, TP73, TPRX1, TRAFD1, TRERF1, TRPS1, TSC22D1, TSHZ1, TSHZ2, TSHZ3, TTF1, TWIST1, TWIST2, UBP1, UNCX, USF1, USF2, USF3, VAX1, VAX2, VDR, VENTX, VEZF1, VSX1, VSX2, WIZ, WT1, XBP1, XPA, YBX1, YBX2, YBX3, YY1, YY2, ZBED1, ZBED2, ZBED3, ZBED4, ZBED5, ZBED6, ZBED9, ZBTB1, ZBTB10, ZBTB11, ZBTB12, ZBTB14, ZBTB16, ZBTB17, ZBTB18, ZBTB2, ZBTB20, ZBTB21, ZBTB22, ZBTB24, ZBTB25, ZBTB26, ZBTB3, ZBTB32, ZBTB33, ZBTB34, ZBTB37, ZBTB38, ZBTB39, ZBTB4, ZBTB40, ZBTB41, ZBTB42, ZBTB43, ZBTB44, ZBTB45, ZBTB46, ZBTB47, ZBTB48, ZBTB49, ZBTB5, ZBTB6, ZBTB7A, ZBTB7B, ZBTB7C, ZBTB8A, ZBTB8B, ZBTB9, ZC3H8, ZEB1, ZEB2, ZFAT, ZFHX2, ZFHX3, ZFHX4, ZFP1, ZFP14, ZFP2, ZFP28, ZFP3, ZFP30, ZFP37, ZFP41, ZFP42, ZFP57, ZFP62, ZFP64, ZFP69, ZFP69B, ZFP82, ZFP90, ZFP91, ZFP92, ZFPM1, ZFPM2, ZFX, ZFY, ZGLP1, ZGPAT, ZHX1, ZHX2, ZHX3, ZIC1, ZIC2, ZIC3, ZIC4, ZIC5, ZIK1, ZIM2, ZIM3, ZKSCAN1, ZKSCAN2, ZKSCAN3, ZKSCAN4, ZKSCAN5, ZKSCAN7, ZKSCAN8, ZMAT1, ZMAT4, ZNF10, ZNF100, ZNF101, ZNF107, ZNF112, ZNF114, ZNF117, ZNF12, ZNF121, ZNF124, ZNF131, ZNF132, ZNF133, ZNF134, ZNF135, ZNF136, ZNF138, ZNF14, ZNF140, ZNF141, ZNF142, ZNF143, ZNF146, ZNF148, ZNF154, ZNF155, ZNF157, ZNF16, ZNF160, ZNF165, ZNF169, ZNF17, ZNF174, ZNF175, ZNF177, ZNF18, ZNF180, ZNF181, ZNF182, ZNF184, ZNF189, ZNF19, ZNF195, ZNF197, ZNF2, ZNF20, ZNF200, ZNF202, ZNF205, ZNF207, ZNF208, ZNF211, ZNF212, ZNF213, ZNF214, ZNF215, ZNF217, ZNF219, ZNF22, ZNF221, ZNF222, ZNF223, ZNF224, ZNF225, ZNF226, ZNF227, ZNF229, ZNF23, ZNF230, ZNF232, ZNF233, ZNF234, ZNF235, ZNF236, ZNF239, ZNF24, ZNF248, ZNF25, ZNF250, ZNF251, ZNF253, ZNF254, ZNF256, ZNF257, ZNF26, ZNF260, ZNF263, ZNF264, ZNF266, ZNF267, ZNF268, ZNF273, ZNF274, ZNF275, ZNF276, ZNF277, ZNF28, ZNF280A, ZNF280B, ZNF280C, ZNF280D, ZNF281, ZNF282, ZNF283, ZNF284, ZNF285, ZNF286A, ZNF286B, ZNF287, ZNF292, ZNF296, ZNF3, ZNF30, ZNF300, ZNF302, ZNF304, ZNF311, ZNF316, ZNF317, ZNF318, ZNF319, ZNF32, ZNF320, ZNF322, ZNF324, ZNF324B, ZNF326, ZNF329, ZNF331, ZNF333, ZNF334, ZNF335, ZNF337, ZNF33A, ZNF33B, ZNF34, ZNF341, ZNF343, ZNF345, ZNF346, ZNF347, ZNF35, ZNF350, ZNF354A, ZNF354B, ZNF354C, ZNF358, ZNF362, ZNF365, ZNF366, ZNF367, ZNF37A, ZNF382, ZNF383, ZNF384, ZNF385A, ZNF385B, ZNF385C, ZNF385D, ZNF391, ZNF394, ZNF395, ZNF396, ZNF397, ZNF398, ZNF404, ZNF407, ZNF408, ZNF41, ZNF410, ZNF414, ZNF415, ZNF416, ZNF417, ZNF418, ZNF419, ZNF420, ZNF423, ZNF425, ZNF426, ZNF428, ZNF429, ZNF43, ZNF430, ZNF431, ZNF432, ZNF433, ZNF436, ZNF438, ZNF439, ZNF44, ZNF440, ZNF441, ZNF442, ZNF443, ZNF444, ZNF445, ZNF446, ZNF449, ZNF45, ZNF451, ZNF454, ZNF460, ZNF461, ZNF462, ZNF467, ZNF468, ZNF469, ZNF470, ZNF471, ZNF473, ZNF474, ZNF479, ZNF48, ZNF480, ZNF483, ZNF484, ZNF485, ZNF486, ZNF487, ZNF488, ZNF490, ZNF491, ZNF492, ZNF493, ZNF496, ZNF497, ZNF500, ZNF501, ZNF502, ZNF503, ZNF506, ZNF507, ZNF510, ZNF511, ZNF512, ZNF512B, ZNF513, ZNF514, ZNF516, ZNF517, ZNF518A, ZNF518B, ZNF519, ZNF521, ZNF524, ZNF525, ZNF526, ZNF527, ZNF528, ZNF529, ZNF530, ZNF532, ZNF534, ZNF536, ZNF540, ZNF541, ZNF543, ZNF544, ZNF546, ZNF547, ZNF548, ZNF549, ZNF550, ZNF551, ZNF552, ZNF554, ZNF555, ZNF556, ZNF557, ZNF558, ZNF559, ZNF560, ZNF561, ZNF562, ZNF563, ZNF564, ZNF565, ZNF566, ZNF567, ZNF568, ZNF569, ZNF57, ZNF570, ZNF571, ZNF572, ZNF573, ZNF574, ZNF575, ZNF576, ZNF577, ZNF578, ZNF579, ZNF580, ZNF581, ZNF582, ZNF583, ZNF584, ZNF585A, ZNF585B, ZNF586, ZNF587, ZNF587B, ZNF589, ZNF592, ZNF594, ZNF595, ZNF596, ZNF597, ZNF598, ZNF599, ZNF600, ZNF605, ZNF606, ZNF607, ZNF608, ZNF609, ZNF610, ZNF611, ZNF613, ZNF614, ZNF615, ZNF616, ZNF618, ZNF619, ZNF620, ZNF621, ZNF623, ZNF624, ZNF625, ZNF626, ZNF627, ZNF628, ZNF629, ZNF630, ZNF639, ZNF641, ZNF644, ZNF645, ZNF646, ZNF648, ZNF649, ZNF652, ZNF653, ZNF654, ZNF655, ZNF658, ZNF66, ZNF660, ZNF662, ZNF664, ZNF665, ZNF667, ZNF668, ZNF669, ZNF670, ZNF671, ZNF672, ZNF674, ZNF675, ZNF676, ZNF677, ZNF678, ZNF679, ZNF680, ZNF681, ZNF682, ZNF683, ZNF684, ZNF687, ZNF688, ZNF689, ZNF69, ZNF691, ZNF692, ZNF695, ZNF696, ZNF697, ZNF699, ZNF7, ZNF70, ZNF700, ZNF701, ZNF703, ZNF704, ZNF705A, ZNF705B, ZNF705D, ZNF705E, ZNF705G, ZNF706, ZNF707, ZNF708, ZNF709, ZNF71, ZNF710, ZNF711, ZNF713, ZNF714, ZNF716, ZNF717, ZNF718, ZNF721, ZNF724, ZNF726, ZNF727, ZNF728, ZNF729, ZNF730, ZNF732, ZNF735, ZNF736, ZNF737, ZNF74, ZNF740, ZNF746, ZNF747, ZNF749, ZNF750, ZNF75A, ZNF75D, ZNF76, ZNF761, ZNF763, ZNF764, ZNF765, ZNF766, ZNF768, ZNF77, ZNF770, ZNF771, ZNF772, ZNF773, ZNF774, ZNF775, ZNF776, ZNF777, ZNF778, ZNF780A, ZNF780B, ZNF781, ZNF782, ZNF783, ZNF784, ZNF785, ZNF786, ZNF787, ZNF788, ZNF789, ZNF79, ZNF790, ZNF791, ZNF792, ZNF793, ZNF799, ZNF8, ZNF80, ZNF800, ZNF804A, ZNF804B, ZNF805, ZNF808, ZNF81, ZNF813, ZNF814, ZNF816, ZNF821, ZNF823, ZNF827, ZNF829, ZNF83, ZNF830, ZNF831, ZNF835, ZNF836, ZNF837, ZNF84, ZNF841, ZNF843, ZNF844, ZNF845, ZNF846, ZNF85, ZNF850, ZNF852, ZNF853, ZNF860, ZNF865, ZNF878, ZNF879, ZNF880, ZNF883, ZNF888, ZNF891, ZNF90, ZNF91, ZNF92, ZNF93, ZNF98, ZNF99, ZSCAN1, ZSCAN10, ZSCAN12, ZSCAN16, ZSCAN18, ZSCAN2, ZSCAN20, ZSCAN21, ZSCAN22, ZSCAN23, ZSCAN25, ZSCAN26, ZSCAN29, ZSCAN30, ZSCAN31, ZSCAN32, ZSCAN4, ZSCAN5A, ZSCAN5B, ZSCAN5C, ZSCAN9, ZUFSP, ZXDA, ZXDB, ZXDC, ZZZ]}\n", + "2024-09-05 15:19:05,771 [ERROR] The first 5 genes look like this : [ RPL5, HSPD1, GAL3ST1, LRP1B, KREMEN1 ]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "raised a lookup error\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 0.0 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0008104822369309739 \n", + "recall: 0.007029876977152899 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 119/128 [00:00<00:00, 167.50it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 166.41it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0007896153720589664\n", + "Area Under Precision-Recall Curve (AUPRC): 0.0007757829152839811\n", + "EPR: 1.9007753964472591\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3EAAALCCAYAAABwXVojAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACGmElEQVR4nOzdeVxVdf7H8fcFkUUFNGNRTG00d6UwGc3SFMWlmWg1szQjtcVJIzPtZ5otY1mWOpZLVtpkuTU5jplKplOTjJZpZWlhWWYKagYoynrP748zXLyyCMjlcOD1fDx43HPO/dx7Ppzu98bbszkMwzAEAAAAALAFL6sbAAAAAACUHSEOAAAAAGyEEAcAAAAANkKIAwAAAAAbIcQBAAAAgI0Q4gAAAADARghxAAAAAGAjhDgAAAAAsBFCHAAAAADYCCEOAGAbd911l1q0aFGu12zdulUOh0Nbt271SE9217t3b/Xu3ds1/9NPP8nhcGjJkiWW9QQAKB0hDgBQoiVLlsjhcLh+/Pz8dNlll2ns2LFKTU21ur1qryAQFfx4eXmpUaNGGjhwoJKSkqxur1KkpqZqwoQJatu2rQICAlSvXj1FRUXp6aefVlpamtXtAUCNVMfqBgAA1d+TTz6pli1bKisrS//5z380f/58rV+/Xnv27FFAQECV9fHqq6/K6XSW6zXXXHONzpw5o7p163qoq/MbOnSoBg0apPz8fH3//fd65ZVXdO211+qzzz5Tp06dLOvrQn322WcaNGiQTp06pTvuuENRUVGSpM8//1zPPvusPv74Y23atMniLgGg5iHEAQDOa+DAgeratask6Z577tFFF12kF198Uf/85z81dOjQYl+TmZmpevXqVWofPj4+5X6Nl5eX/Pz8KrWP8rriiit0xx13uOavvvpqDRw4UPPnz9crr7xiYWcVl5aWphtuuEHe3t7atWuX2rZt6/b8M888o1dffbVS1uWJzxIA2BmHUwIAyq1Pnz6SpAMHDkgyz1WrX7++fvjhBw0aNEgNGjTQsGHDJElOp1OzZ89Whw4d5Ofnp9DQUI0ZM0a///57kff94IMP1KtXLzVo0ECBgYG68sor9fbbb7ueL+6cuOXLlysqKsr1mk6dOmnOnDmu50s6J27VqlWKioqSv7+/GjdurDvuuEO//vqrW03B7/Xrr78qLi5O9evX18UXX6wJEyYoPz+/wtvv6quvliT98MMPbsvT0tI0fvx4NWvWTL6+vmrVqpWee+65InsfnU6n5syZo06dOsnPz08XX3yxBgwYoM8//9xV88Ybb6hPnz4KCQmRr6+v2rdvr/nz51e453MtXLhQv/76q1588cUiAU6SQkNDNWXKFNe8w+HQE088UaSuRYsWuuuuu1zzBYfw/vvf/9b999+vkJAQRUREaPXq1a7lxfXicDi0Z88e17J9+/bp5ptvVqNGjeTn56euXbtq7dq1F/ZLA0A1wZ44AEC5FYSPiy66yLUsLy9PsbGx6tmzp1544QXXYZZjxozRkiVLNHLkSD344IM6cOCA5s2bp127dunTTz917V1bsmSJ7r77bnXo0EGTJ09WcHCwdu3apQ0bNuj2228vto/ExEQNHTpUffv21XPPPSdJ2rt3rz799FONGzeuxP4L+rnyyis1Y8YMpaamas6cOfr000+1a9cuBQcHu2rz8/MVGxur6OhovfDCC/rwww81a9Ys/eEPf9B9991Xoe33008/SZIaNmzoWnb69Gn16tVLv/76q8aMGaNLLrlE27Zt0+TJk3XkyBHNnj3bVRsfH68lS5Zo4MCBuueee5SXl6dPPvlE//3vf117TOfPn68OHTroz3/+s+rUqaN//etfuv/+++V0OvXAAw9UqO+zrV27Vv7+/rr55psv+L2Kc//99+viiy/W1KlTlZmZqcGDB6t+/fpauXKlevXq5Va7YsUKdejQQR07dpQkffPNN7rqqqvUtGlTTZo0SfXq1dPKlSsVFxend999VzfccINHegaAKmMAAFCCN954w5BkfPjhh8axY8eMX375xVi+fLlx0UUXGf7+/sahQ4cMwzCMESNGGJKMSZMmub3+k08+MSQZy5Ytc1u+YcMGt+VpaWlGgwYNjOjoaOPMmTNutU6n0zU9YsQIo3nz5q75cePGGYGBgUZeXl6Jv8OWLVsMScaWLVsMwzCMnJwcIyQkxOjYsaPbutatW2dIMqZOneq2PknGk08+6fael19+uREVFVXiOgscOHDAkGRMnz7dOHbsmJGSkmJ88sknxpVXXmlIMlatWuWqfeqpp4x69eoZ33//vdt7TJo0yfD29jYOHjxoGIZhfPTRR4Yk48EHHyyyvrO31enTp4s8Hxsba1x66aVuy3r16mX06tWrSM9vvPFGqb9bw4YNjS5dupRaczZJxrRp04osb968uTFixAjXfMFnrmfPnkX+uw4dOtQICQlxW37kyBHDy8vL7b9R3759jU6dOhlZWVmuZU6n0+jRo4fRunXrMvcMANUVh1MCAM4rJiZGF198sZo1a6bbbrtN9evX13vvvaemTZu61Z27Z2rVqlUKCgpSv379dPz4cddPVFSU6tevry1btkgy96idPHlSkyZNKnL+msPhKLGv4OBgZWZmKjExscy/y+eff66jR4/q/vvvd1vX4MGD1bZtW73//vtFXnPvvfe6zV999dX68ccfy7zOadOm6eKLL1ZYWJiuvvpq7d27V7NmzXLbi7Vq1SpdffXVatiwodu2iomJUX5+vj7++GNJ0rvvviuHw6Fp06YVWc/Z28rf3981nZ6eruPHj6tXr1768ccflZ6eXubeS5KRkaEGDRpc8PuUZNSoUfL29nZbNmTIEB09etTt0NjVq1fL6XRqyJAhkqQTJ07oo48+0q233qqTJ0+6tuNvv/2m2NhYJScnFzlsFgDshsMpAQDn9fLLL+uyyy5TnTp1FBoaqjZt2sjLy/3fAevUqaOIiAi3ZcnJyUpPT1dISEix73v06FFJhYdnFhwOV1b333+/Vq5cqYEDB6pp06bq37+/br31Vg0YMKDE1/z888+SpDZt2hR5rm3btvrPf/7jtqzgnLOzNWzY0O2cvmPHjrmdI1e/fn3Vr1/fNT969GjdcsstysrK0kcffaS5c+cWOacuOTlZX331VZF1FTh7WzVp0kSNGjUq8XeUpE8//VTTpk1TUlKSTp8+7fZcenq6goKCSn39+QQGBurkyZMX9B6ladmyZZFlAwYMUFBQkFasWKG+fftKMg+ljIyM1GWXXSZJ2r9/vwzD0OOPP67HH3+82Pc+evRokX+AAAA7IcQBAM6rW7durnOtSuLr61sk2DmdToWEhGjZsmXFvqakwFJWISEh2r17tzZu3KgPPvhAH3zwgd544w0NHz5cS5cuvaD3LnDu3qDiXHnlla5wKJl73s6+iEfr1q0VExMjSbruuuvk7e2tSZMm6dprr3VtV6fTqX79+mnixInFrqMgpJTFDz/8oL59+6pt27Z68cUX1axZM9WtW1fr16/XSy+9VO7bNBSnbdu22r17t3Jyci7o9g0lXSDm7D2JBXx9fRUXF6f33ntPr7zyilJTU/Xpp5/qr3/9q6um4HebMGGCYmNji33vVq1aVbhfAKgOCHEAAI/5wx/+oA8//FBXXXVVsX+Un10nSXv27Cn3H9h169bVn/70J/3pT3+S0+nU/fffr4ULF+rxxx8v9r2aN28uSfruu+9cV9ks8N1337meL49ly5bpzJkzrvlLL7201Pr/+7//06uvvqopU6Zow4YNksxtcOrUKVfYK8kf/vAHbdy4USdOnChxb9y//vUvZWdna+3atbrkkktcywsOX60Mf/rTn5SUlKR33323xNtMnK1hw4ZFbv6dk5OjI0eOlGu9Q4YM0dKlS7V582bt3btXhmG4DqWUCre9j4/PebclANgV58QBADzm1ltvVX5+vp566qkiz+Xl5bn+qO/fv78aNGigGTNmKCsry63OMIwS3/+3335zm/fy8lLnzp0lSdnZ2cW+pmvXrgoJCdGCBQvcaj744APt3btXgwcPLtPvdrarrrpKMTExrp/zhbjg4GCNGTNGGzdu1O7duyWZ2yopKUkbN24sUp+Wlqa8vDxJ0k033STDMDR9+vQidQXbqmDv4dnbLj09XW+88Ua5f7eS3HvvvQoPD9fDDz+s77//vsjzR48e1dNPP+2a/8Mf/uA6r6/AokWLyn2rhpiYGDVq1EgrVqzQihUr1K1bN7dDL0NCQtS7d28tXLiw2IB47Nixcq0PAKoj9sQBADymV69eGjNmjGbMmKHdu3erf//+8vHxUXJyslatWqU5c+bo5ptvVmBgoF566SXdc889uvLKK3X77berYcOG+vLLL3X69OkSD4285557dOLECfXp00cRERH6+eef9be//U2RkZFq165dsa/x8fHRc889p5EjR6pXr14aOnSo6xYDLVq00EMPPeTJTeIybtw4zZ49W88++6yWL1+uRx55RGvXrtV1112nu+66S1FRUcrMzNTXX3+t1atX66efflLjxo117bXX6s4779TcuXOVnJysAQMGyOl06pNPPtG1116rsWPHqn///q49lGPGjNGpU6f06quvKiQkpNx7vkrSsGFDvffeexo0aJAiIyN1xx13KCoqSpL0xRdf6J133lH37t1d9ffcc4/uvfde3XTTTerXr5++/PJLbdy4UY0bNy7Xen18fHTjjTdq+fLlyszM1AsvvFCk5uWXX1bPnj3VqVMnjRo1SpdeeqlSU1OVlJSkQ4cO6csvv7ywXx4ArGblpTEBANVbweXeP/vss1LrRowYYdSrV6/E5xctWmRERUUZ/v7+RoMGDYxOnToZEydONA4fPuxWt3btWqNHjx6Gv7+/ERgYaHTr1s1455133NZz9i0GVq9ebfTv398ICQkx6tata1xyySXGmDFjjCNHjrhqzr3FQIEVK1YYl19+ueHr62s0atTIGDZsmOuWCef7vaZNm2aU5X+hBZfrf/7554t9/q677jK8vb2N/fv3G4ZhGCdPnjQmT55stGrVyqhbt67RuHFjo0ePHsYLL7xg5OTkuF6Xl5dnPP/880bbtm2NunXrGhdffLExcOBAY+fOnW7bsnPnzoafn5/RokUL47nnnjNef/11Q5Jx4MABV11FbzFQ4PDhw8ZDDz1kXHbZZYafn58REBBgREVFGc8884yRnp7uqsvPzzceffRRo3HjxkZAQIARGxtr7N+/v8RbDJT2mUtMTDQkGQ6Hw/jll1+Krfnhhx+M4cOHG2FhYYaPj4/RtGlT47rrrjNWr15dpt8LAKozh2GUcpwKAAAAAKBa4Zw4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNcLNvCzmdTh0+fFgNGjSQw+Gwuh0AAAAAFjEMQydPnlSTJk3k5VX6vjZCnIUOHz6sZs2aWd0GAAAAgGril19+UURERKk1hDgLNWjQQJL5HyowMNDibmqO3Nxcbdq0Sf3795ePj4/V7QA1EuMM8DzGGeB51WmcZWRkqFmzZq6MUBpCnIUKDqEMDAwkxFWi3NxcBQQEKDAw0PLBCNRUjDPA8xhngOdVx3FWltOsuLAJAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABuxPMS9/PLLatGihfz8/BQdHa0dO3aUWr9q1Sq1bdtWfn5+6tSpk9avX+/2vGEYmjp1qsLDw+Xv76+YmBglJye71TzzzDPq0aOHAgICFBwcXGQdS5YskcPhKPbn6NGjkqStW7cW+3xKSsqFbRAAAAAAKIWlIW7FihVKSEjQtGnT9MUXX6hLly6KjY11BaVzbdu2TUOHDlV8fLx27dqluLg4xcXFac+ePa6amTNnau7cuVqwYIG2b9+uevXqKTY2VllZWa6anJwc3XLLLbrvvvuKXc+QIUN05MgRt5/Y2Fj16tVLISEhbrXfffedW925zwMAAABAZbI0xL344osaNWqURo4cqfbt22vBggUKCAjQ66+/Xmz9nDlzNGDAAD3yyCNq166dnnrqKV1xxRWaN2+eJHMv3OzZszVlyhRdf/316ty5s958800dPnxYa9ascb3P9OnT9dBDD6lTp07Frsff319hYWGuH29vb3300UeKj48vUhsSEuJW6+Vl+c5N4IIdOiRt2WI+AgAAoHqpY9WKc3JytHPnTk2ePNm1zMvLSzExMUpKSir2NUlJSUpISHBbFhsb6wpoBw4cUEpKimJiYlzPBwUFKTo6WklJSbrtttsq1Oubb76pgIAA3XzzzUWei4yMVHZ2tjp27KgnnnhCV111VYnvk52drezsbNd8RkaGJCk3N1e5ubkV6g1FFWxLtmnFvPGGQ/fd5y2n0yEvL0Pz5+dr5EjD6rZQzTDOAM9jnAGeV53GWXl6sCzEHT9+XPn5+QoNDXVbHhoaqn379hX7mpSUlGLrC85DK3gsraYiXnvtNd1+++3y9/d3LQsPD9eCBQvUtWtXZWdna/Hixerdu7e2b9+uK664otj3mTFjhqZPn15k+aZNmxQQEFDh/lC8xMREq1uwnePH/XTvvf1lGA5JktPp0H33ecnbO1GNG2ed59WojRhngOcxzgDPqw7j7PTp02WutSzE2UVSUpL27t2rv//9727L27RpozZt2rjme/TooR9++EEvvfRSkdoCkydPdtuTmJGRoWbNmql///4KDAz0zC9QC+Xm5ioxMVH9+vWTj4+P1e3YytatDleAK+B0eql5877q1Yu9cSjEOAM8j3EGeF51GmcFR+mVhWUhrnHjxvL29lZqaqrb8tTUVIWFhRX7mrCwsFLrCx5TU1MVHh7uVhMZGVmhPhcvXqzIyEhFRUWdt7Zbt276z3/+U+Lzvr6+8vX1LbLcx8fH8g9NTcR2Lb+LLiq6zNtbatu2jtiUKA7jDPA8xhngedVhnJVn/ZZdhaNu3bqKiorS5s2bXcucTqc2b96s7t27F/ua7t27u9VL5q7PgvqWLVsqLCzMrSYjI0Pbt28v8T1Lc+rUKa1cubLYC5oUZ/fu3W7hEbCbVavc5729pYULpYgIa/oBAABAUZYeTpmQkKARI0aoa9eu6tatm2bPnq3MzEyNHDlSkjR8+HA1bdpUM2bMkCSNGzdOvXr10qxZszR48GAtX75cn3/+uRYtWiRJcjgcGj9+vJ5++mm1bt1aLVu21OOPP64mTZooLi7Otd6DBw/qxIkTOnjwoPLz87V7925JUqtWrVS/fn1X3YoVK5SXl6c77rijSO+zZ89Wy5Yt1aFDB2VlZWnx4sX66KOPtGnTJg9tLcCz0tOlV14pnG/XTtq0iQAHAABQ3Vga4oYMGaJjx45p6tSpSklJUWRkpDZs2OC6MMnBgwfdLtnfo0cPvf3225oyZYoee+wxtW7dWmvWrFHHjh1dNRMnTlRmZqZGjx6ttLQ09ezZUxs2bJCfn5+rZurUqVq6dKlr/vLLL5ckbdmyRb1793Ytf+2113TjjTcWe0PwnJwcPfzww/r1118VEBCgzp0768MPP9S1115bWZsHqFILFkgZGZLDIRmGFBhIgAMAAKiOHIZhcLUCi2RkZCgoKEjp6elc2KQS5ebmav369Ro0aJDlxzbbRVaW1KKFlJoq3XyztHq1FB0t/fe/VneG6opxBnge4wzwvOo0zsqTDbgzNQAtXWoGuGbNpKFDre4GAAAApSHEAbVcXp40c6Y5PWGCuAolAABANUeIA2q5d9+VfvzRvL1AGS/ECgAAAAsR4oBazDCkZ581px98UKpXz9p+AAAAcH6EOKAW27RJ2r3bDG8PPGB1NwAAACgLQhxQixXshRs92jyc0u4OHZK2bDEfAQAAaipCHFBL/fe/0tat5oVMEhKs7ubCvfaa1Ly51KeP+fjaa1Z3BAAA4BmEOKCWeu458/GOO+x/U+9Dh8y9iU6nOe90SmPGsEcOAADUTIQ4oBbau1das0ZyOKRHHrG6mwuXnFwY4Ark50v791vTDwAAgCcR4oBaqOC+cHFxUrt2lrZSKVq2LLrM21tq1arqewEAAPA0QhxQy/zyi/TWW+b0o49a20tl2bu36LLBg+1/mCgAAEBxCHFALfPii1JennTttVJ0tNXdVI433zQfR46UHn/cnP7gA+nbb63rCQAAwFMIcUAt8ttv0qJF5vSkSdb2UlkyMszz+yTp/vul6dOl666TcnOl+Hjz3DgAAICahBAH1CLz5kmnT0uXXy7162d1N5Vj9WopK8s8ty8qyrxYy/z5UoMG5m0UXn7Z6g4BAAAqFyEOqCUyM6W5c83pSZPMsFMT/P3v5uOddxb+ThERhRdveewx6aefLGkNAADAIwhxQC2xeLF04oT0hz9IN91kdTeV4+efzRuWS9KwYe7PjR4tXXONGV7HjJEMo8rbAwAA8AhCHFAL5ORIs2aZ0xMnmpffrwmWLTMfr71WuuQS9+e8vKRXX5V8faVNmwr32AEAANgdIQ6oBd5+27y1QFiYNHy41d1UDsNwP5SyOJddJj3xhDk9fryUmloVnQEAAHgWIQ6o4ZxO6bnnzOmHHpL8/Kztp7J8/rm0b5/k71/64aEPPyxFRkq//y49+GCVtQcAAOAxhDighlu71gw7QUHSvfda3U3lKdgLFxcnBQaWXOfjI732mnkI6cqV0j//WSXtAQAAeAwhDqjBDEOaMcOcvv/+0sOOneTmSu+8Y06XdCjl2a64QpowwZy+/34pPd1zvQEAAHgaIQ6owf79b2nHDvPiHuPGWd1N5dmwQTp+XAoNLfv97qZNk1q3lg4fNi/uAgAAYFeEOKAGe/ZZ8/Huu83AU1MUHEp5++1SnTple42/v3mbBUlatKjw1gQAAAB2Q4gDaqhdu6SNG81L7RccSlgTpKWZ5/lJ5b/S5jXXmPeMk6RRo6QzZyq1NQAAgCpBiANqqIIrUg4ZIl16qbW9VKZVq6TsbKljR6lLl/K//rnnpKZNpf37C28/AAAAYCeEOKAG2r/fDDuSNGmStb1UtrPvDedwlP/1QUHS/Pnm9AsvSDt3Vl5vAAAAVYEQB9RAL7xg3h9u0CCpc2eru6k8Bw5In3xihrdhwyr+Pn/6k3TbbeY2uvNOKTFROnSo8voEAADwJEIcUMMcOSK98YY5XdP2wr31lvnYt695SOSFmDNHqldP2rtX6t9fat7cvJ8cAABAdUeIA2qYOXOknBypRw+pZ0+ru6k8hiG9+aY5Xd4LmhQnJ0c6fbpw3uk0L3rCHjkAAFDdEeKAGiQ9vfB8r0mTKnbOWHW1fbt5rl9AgHTDDRf+fsnJZjA8W36+uQ4AAIDqjBAH1CDz50sZGVKHDtLgwVZ3U7kKLmhy441S/foX/n6tW5u3Xzibw1GzruQJAABqJkIcUEOcOSPNnm1OP/po0YBiZzk50vLl5nRlHEopSRER5k2/vb0LlxmGtGRJ5bw/AACAp9SgP/OA2m3pUik1VbrkEvPKizXJ+vXSiRNSkyZSnz6V977x8dJPP0lbtkizZpnLnnhCev/9ylsHAABAZSPEATVAXp70/PPm9IQJko+Ptf1UtoILmgwb5r7nrDJEREi9e0sJCdJ995l74+64g3PjAABA9UWIA2qA1aulH3+UGjc29y7VJCdOSOvWmdN33unZdc2eLf3xj1JamnnuXWamZ9cHAABQEYQ4wOYMQ3r2WXP6wQfNqzfWJCtXSrm5UpcuUqdOnl1X3bpmIA4Nlb7+Who1qugVLAEAAKxGiANsbuNG6csvzRtXP/CA1d1Uvsq8N1xZNG0qrVol1akjvfOONHdu1awXAACgrAhxgM0V7IUbM0Zq1MjaXirb/v1SUpJ5pc2hQ6tuvVdfXXihk4cflv7976pbNwAAwPkQ4gAbS0oyA4aPj/TQQ1Z3U/kK7g3Xv78UHl616/7LX8wLqeTnS7feKv36a9WuHwAAoCSEOMDGnnvOfLzzTvMqizWJYUhvvWVOe/qCJsVxOMz7yHXpIh09Kt18s5SdXfV9AAAAnIsQB9jUt99K//ynGTYeecTqbirftm3mFTfr15fi4qzpISBA+sc/pOBg6b//lcaPt6YPAACAsxHiAJuaOdN8vOEGqW1ba3vxhIILmtx8s7VX3Lz0Uuntt82wvGCB9MIL5s3BDx2yricAAFC7EeIAGzp4UFq2zJx+9FFre/GErCzz1gKSNYdSnmvgQGn6dHP6kUekPn2k5s2l116zti8AAFA7EeIAG3rxRSkvzwwT3bpZ3U3lW7fOvOF2s2ZS795Wd2MaMcJ93uk0rwjKHjkAAFDVCHGAzRw/Lr36qjk9aZK1vXhKwVUphw0zby9QHfzwQ9Fl+fnmbRAAAACqUjX58whAWc2bJ50+LV1xhRQTY3U3le/4cWn9enO6OhxKWaB16+IDZWho1fcCAABqN0IcYCOnTkl/+5s5PWmSebGNmmb5cvNQ0agoqX17q7spFBFh3nLA29t9+X33SWfOWNMTAAConQhxgI0sXiydOCG1aiXdeKPV3XhGwaGU1WkvXIH4eOmnn8yrU65fLwUGmjdbv+UWKTfX6u4AAEBtQYgDbCInR5o1y5yeOLHoHqGa4LvvpB07zN9t6FCruyleRIR5sZWBA80LsPj5Se+/Lw0fbp4jBwAA4GmEOMAm3n7bvBJieLgZGGqigr1wAwZIISHW9lIWV19t3gy8Th3zMNAHHpAMw+quAABATUeIA2zA6ZSee86cfughydfX2n48wemU3nrLnK6Oh1KWZOBA8559Xl7SwoXS5MlWdwQAAGo6QhxgA2vXSvv2SUFB5r3JaqJPPpF+/tk8z+zPf7a6m/K59VbzoieSGbaffdbafgAAQM1Wx+oGAJTOMKQZM8zpBx4wQ05NVHAo5S23SP7+1vZSEfHxUnq69PDD5t64oCDpT3+SkpPN2xNERFjdIQAAqCnYEwdUc//+t3mxDz8/6cEHre7GM86ckVatMqftdCjluRISpMcfN6fvv1+65BKpTx+peXPptdes7Q0AANQchDigmis4NO/uu2vujaXXrpUyMsywc/XVVndzYaZPl0aONKcLLnLidJqHwR46ZF1fAACg5iDEAdXYrl3Sxo3mJfcnTLC6G88pOJTyjjvMC4TYmcMhDRtWdHl+vrR/f9X3AwAAah6b/7kE1GwFV6QcMkRq2dLaXjwlNVXasMGctvOhlGdr06ZoGPX2Nm/SDgAAcKEIcUA1tX9/4Xlijz5qbS+etHy5uZeqWzcz/NQEERHSzJmF897e5u0HuLgJAACoDIQ4oJp6/nnzXKpBg6TOna3uxnMKDqWsKXvhCiQkSAEB5vSHH5pXrwQAAKgMhDigGjpyRFqyxJyeNMnSVjzq22+lnTulOnWk226zupvK5XBI7dqZ0+np1vYCAABqFkIcUA3Nni3l5Eg9ekg9e1rdjecU7IUbNEhq3NjaXjzhssvMx+++s7YPAABQsxDigGomLU2aP9+cnjTJ3KNTEzmd0ltvmdPDh1vbi6cUnOP3/ffW9gEAAGoWQhxQzcyfL508KXXoIA0ebHU3nrN1q3nftOBg6brrrO7GMwpCHHviAABAZSLEAdXImTPmoZSSeUVKu98zrTQFh1Leeqvk62ttL57C4ZQAAMATavCfiID9LFkiHT0qXXJJzbvQx9lOn5ZWrzana+qhlFJhiDt2TPr9d2t7AQAANQchDqgm8vLM2wpI0oQJko+Ptf140po10qlT0qWXmhdvqanq15eaNjWnOS8OAABUFkIcUE2sWiUdOGBepbGm31PszTfNxzvvrLkXbinAeXEAAKCyEeKAasAwpGefNafHjSu8SXRNdOSIlJhoTt9xh7W9VAXOiwMAAJWNEAdUAxs2SF99ZR5+98ADVnfjWe+8Y95eoHt3qVUrq7vxPPbEAQCAymZ5iHv55ZfVokUL+fn5KTo6Wjt27Ci1ftWqVWrbtq38/PzUqVMnrV+/3u15wzA0depUhYeHy9/fXzExMUpOTnareeaZZ9SjRw8FBAQoODi42PU4HI4iP8uXL3er2bp1q6644gr5+vqqVatWWrJkSbl/f0Aq3As3ZozUsKG1vXhawaGUNfmCJmfjXnEAAKCyWRriVqxYoYSEBE2bNk1ffPGFunTpotjYWB09erTY+m3btmno0KGKj4/Xrl27FBcXp7i4OO3Zs8dVM3PmTM2dO1cLFizQ9u3bVa9ePcXGxiorK8tVk5OTo1tuuUX33Xdfqf298cYbOnLkiOsnLi7O9dyBAwc0ePBgXXvttdq9e7fGjx+ve+65Rxs3brywjYJaZ9s26eOPzQuZPPSQ1d141ldfSV9+KdWta95aoDYoOJwyOdncAwkAAHChLA1xL774okaNGqWRI0eqffv2WrBggQICAvT6668XWz9nzhwNGDBAjzzyiNq1a6ennnpKV1xxhebNmyfJ3As3e/ZsTZkyRddff706d+6sN998U4cPH9aaNWtc7zN9+nQ99NBD6tSpU6n9BQcHKywszPXj5+fnem7BggVq2bKlZs2apXbt2mns2LG6+eab9dJLL134hkGt8txz5uPw4YVXMqypCu4Nd911UqNG1vZSVVq0MENrVpZ08KDV3QAAgJqgjlUrzsnJ0c6dOzV58mTXMi8vL8XExCgpKanY1yQlJSkhIcFtWWxsrCugHThwQCkpKYqJiXE9HxQUpOjoaCUlJem2ct5464EHHtA999yjSy+9VPfee69Gjhwpx/8upZeUlOS2noJexo8fX+L7ZWdnKzs72zWfkZEhScrNzVVubm65ekPJCralHbbpN99Ia9f6yOEwNH58nqpDy3l5Dkl1ZBhO5ebmV9r75udLb79dR5JDQ4fmKTfXqLT3ru7+8Ic62rvXoW++yVPTpjXj97bTOAPsinEGeF51Gmfl6cGyEHf8+HHl5+crNDTUbXloaKj27dtX7GtSUlKKrU9JSXE9X7CspJqyevLJJ9WnTx8FBARo06ZNuv/++3Xq1Ck9+OCDpfaSkZGhM2fOyN/fv8h7zpgxQ9OnTy+yfNOmTQqoyZcjtEhiwSUQq7E5cy6XdIn++Mcj+uGHz/TDD1Z3JH3+eaikPyotLU3r139Sae+7e/fFOny4hxo0yJG0QevX14wwUxZBQVdKaqI1a75VXt4Bq9upVHYYZ4DdMc4Az6sO4+z06dNlrrUsxFV3jz/+uGv68ssvV2Zmpp5//nlXiKuIyZMnu+1JzMjIULNmzdS/f38FBgZeUL8olJubq8TERPXr108+1fiO2T//LH3yiTkEZ80KUdeugyzuyOR0mnubg4ODNWhQ5fW0cqW3JGnYMG9df/3ASntfO/jPf7z03/9KPj4dNGhQO6vbqRR2GWeAnTHOAM+rTuOs4Ci9srAsxDVu3Fje3t5KTU11W56amqqwsLBiXxMWFlZqfcFjamqqwsPD3WoiIyMvqN/o6Gg99dRTys7Olq+vb4m9BAYGFrsXTpJ8fX3l6+tbZLmPj4/lH5qaqLpv17/9TcrLk/r2lbp3rz7/nlLnf604HF7y8amc02ZPnZIKTksdMcJbPj7elfK+dtG+vfmYnFzzfvfqPs6AmoBxBnhedRhn5Vm/ZRc2qVu3rqKiorR582bXMqfTqc2bN6t79+7FvqZ79+5u9ZK567OgvmXLlgoLC3OrycjI0Pbt20t8z7LavXu3GjZs6Aph5+sFKM3x49Krr5rTkyZZ20tV+Mc/pNOnpdatpehoq7upetxmAAAAVCZL//k/ISFBI0aMUNeuXdWtWzfNnj1bmZmZGjlypCRp+PDhatq0qWbMmCFJGjdunHr16qVZs2Zp8ODBWr58uT7//HMtWrRIknlvt/Hjx+vpp59W69at1bJlSz3++ONq0qSJ2+0BDh48qBMnTujgwYPKz8/X7t27JUmtWrVS/fr19a9//Uupqan64x//KD8/PyUmJuqvf/2rJkyY4HqPe++9V/PmzdPEiRN1991366OPPtLKlSv1/vvvV83Gg6397W/SmTNSVJS5J66mK7gq5Z13Sv+7NlCtUnCbgYMHzTDLKbAAAOBCWBrihgwZomPHjmnq1KlKSUlRZGSkNmzY4LpgyMGDB+XlVbizsEePHnr77bc1ZcoUPfbYY2rdurXWrFmjjh07umomTpyozMxMjR49WmlpaerZs6c2bNjgdnuAqVOnaunSpa75yy+/XJK0ZcsW9e7dWz4+Pnr55Zf10EMPyTAMtWrVynU7hAItW7bU+++/r4ceekhz5sxRRESEFi9erNjYWI9tL9QMp06ZIU4y98LV9FDz669SwU7rO+6wtherNG5s3lLhxAnzfnFduljdEQAAsDPLT8QZO3asxo4dW+xzW7duLbLslltu0S233FLi+zkcDj355JN68sknS6xZsmSJlixZUuLzAwYM0IABA0p8vkDv3r21a9eu89YBZ3v1Ven3381DC2+4wepuPG/ZMskwpKuvllq2tLob67RpIyUlSd99R4gDAAAXxtKbfQO1TU6ONGuWOT1xouRds65xUYRhSG++aU7feae1vViN8+IAAEBlIcQBVWjZMvPwwvDw2hFqdu82b2ju6yuVsgO9Vig4L+6776ztAwAA2B8hDqgiTqf03HPmdEKCGWxquoILmvz5z1JwsKWtWK5gTxwhDgAAXChCHFBF/vlP8w/44GBp9Giru/G8vDzp7bfN6dqw1/F8zg5xhmFtLwAAwN4IcUAVMAzp2WfN6QcekAIDre2nKiQmSqmp5pUZy3CdoBrvD38wHzMyzMNMAQAAKooQB1SBrVulHTskPz/pwQet7qZqFBxKOXSo5ONjbS/VwbJlhdNdu0qvvWZdLwAAwN4IcUAVKNgLFx8vhYRY20tVyMiQ3nvPnOZQSunQIfdDaJ1OacwYczkAAEB5EeIAD/viC2nTJvN2Ag8/bHU3VePdd6WsLKltW3OvU22XnGwGt7Pl50v791vTDwAAsDdCHOBhBVekvO222nOz64JDKe+8U3I4rO2lOmjdWvI659vW21tq1cqafgAAgL0R4gAPSk6WVq82px991NpeqsrBg9KWLeb0HXdY20t1EREhLVrkHuQWLjSXAwAAlBchDvCgF14wD6MbPFjq1MnqbqpGwQU8eveWLrnE0laqlfh4ad++wj2T111nbT8AAMC+CHGAhxw5Ii1ZYk5PmmRpK1XGMKQ33zSnuaBJUa1bS5ddZk5/9ZW1vQAAAPsixAEeMnu2lJMjXXWV1LOn1d1UjZ07zb1Nfn7SzTdb3U311Lmz+fjll9b2AQAA7IsQB3hAWpo0f745XVv2wkmFFzSJi6sdNzSviIIQx544AABQUYQ4wAPmz5dOnpQ6dpQGDbK6m6qRmyu98445PXy4tb1UZ4Q4AABwoQhxQCU7c8Y8lFIyr0h57qXla6qNG6Vjx6TQUKlfP6u7qb4KQty335rBFwAAoLxqyZ+XQNVZskQ6elRq3lwaMsTqbqpOwQVNhg6V6tSxtpfqrHlzqUEDM8B9953V3QAAADsixAGVKC9Pev55c3rCBMnHx9p+qkpamrR2rTnNoZSlczg4pBIAAFwYQhxQiVatkg4ckBo3lu6+2+puqs7q1VJ2ttShgxQZaXU31R8hDgAAXAhCHFBJDEN69llzetw4KSDA2n6qUsGhlMOHF97MGiUjxAEAgAtBiAMqyQcfmH+U168vPfCA1d1UnQMHpE8+McPb7bdb3Y09EOIAAMCFIMQBlaRgL9yYMVLDhtb2UpXeest87NNHioiwthe76NTJfPz1V+m336ztBQAA2A8hDqgEn35q7o3y8ZEeesjqbqqOYRTe4JsLmpRdgwbSpZea0+yNAwAA5UWIAyrBc8+Zj8OHS02bWttLVdqxQ0pONs//u/FGq7uxFw6pBAAAFUWIAy7Qnj3Sv/5lnhP2yCNWd1O1Ci5ocuON5rmAKDtCHAAAqChCHHCBZs40H2+8UWrTxtpeqlJOjrR8uTl9553W9mJHhDgAAFBRhDjgAvz8s/T22+b0o49a20tVW79eOnFCCg+X+va1uhv7KQhxe/ZI+fnW9gIAAOyFEAdcgFmzzD/A+/aVrrzS6m6qVsEFTYYNk7y9re3Fji691DyXMCtL2r/f6m4AAICdEOKACjp2TFq82JyePNnaXqraiRPSunXmNIdSVoy3t9SxoznNIZUAAKA8CHFABf3tb9KZM1LXruY90mqTlSvNc+K6dCk8LBDlx3lxAACgIghxQAWcPCnNm2dOT5pkXpmyNik4lJK9cBemIMR99JF06JC1vQAAAPsgxAEV8Oqr0u+/S5ddJsXFWd1N1dq/X9q2TfLykm6/3epu7K0guG3bJjVvLr32mrX9AAAAeyDEAeWUnW1e0ESSJk6sfRf1eOst87FfP/PKlKiYQ4ekF14onHc6pTFj2CMHAADOjxAHlNOyZdLhw1KTJtIdd1jdTdUyDA6lrCzJyWZwO1t+PleqBAAA50eIA8ohP7/w5t4JCZKvr7X9VLVt26Qff5Tq1699h5FWttatzUNSz+btLbVqZU0/AADAPghxQDn885/Sd99JwcHS6NFWd1P1CvbC3XSTVK+etb3YXUSEtGhR4byXl7RwobkcAACgNIQ4oIwMQ3r2WXN67FipQQNr+6lqWVnSihXmNIdSVo74eHOvpiRt3WrOAwAAnA8hDiijLVukzz6T/P2lBx+0upuq9/77Ulqauaeod2+ru6k5Cg6p5CIxAACgrAhxQBkV7IWLj5cuvtjaXqxQcCjlsGG174qcAAAA1QkhDiiDnTulxEQzvDz8sNXdVL3jx809cRKHUgIAAFiNEAeUwXPPmY9Dh0otWljaiiVWrJDy8qQrrpA6dLC6GwAAgNqNEAecR3KytHq1OT1xorW9WOXNN81H9sIBAABYjxAHnMfzz5tXprzuOqlTJ6u7qXrffSft2GEeSjp0qNXdAAAAgBAHlOLwYWnpUnN60iRre7HKW2+Zj7GxUmiotb0AAACAEAeUavZsKSdH6tlTuuoqq7upek5n4VUpOZQSAACgeiDEASX4/Xdp/nxzurbuhfvPf6Sff5YCA6Xrr7e6GwAAAEiEOKBE8+dLp05JHTtKgwZZ3Y01Ci5ocvPN5k3OAQAAYD1CHFCMM2fMQyklcy+cw2FpO5Y4c0ZatcqcHj7c2l4AAABQqI7VDQDV0RtvSMeOmfeEGzLE6m6s8dVX5uMll0hXX21tLwAAACjEnjjgHHl55m0FJGnCBKlOLf+njjvukLz4pgAAAKg2+NMMOMfKldJPP0kXXyyNHGl1N9bjqpQAAADVCyEOLocOSVu2mI+11S+/SFOmmNPjxkkBAdb2Y7UuXaS2ba3uAgAAAGcjxEGS9NprUvPmUp8+5uNrr1ndUdUr2AYHDpjzDRpY249VNm0qnP7qq9r5WQAAAKjOavnZPtVDTIx53pVhmPNV/ZiTI+3fX9iP0yndc4/0zDOSj0/V9FG571lHubmDVKdOnTK/zumUsrPlJiFBuvFGKSJCtcahQ9LLLxfOG4Y0ZowUG1u7tgMAAEB1RoirBj77zOoOilewR8p+HJJ8Lvhd8vPNcFubwktycmGwLVAbtwMAAEB1RoirBt56S6pXz5wuuB9ZVT4eOyYNHWrujSrg5WVe4CMkxJqeCh4r8prc3Fx9/PG/1atXL9Wt61Om16WkSFdd5b4NvL2lVq1Uq7Rubf63r+3bAQAAoDojxFUDf/qTFBhobQ8nT5qHzeXnm3+0L1wo3XSTtT1VVG6utH9/plq3Ng8HLYsWLaRFi4pug9q29ykigu0AAABQ3RHiIEmKjzfPe9q/39zrUhv/aGcbmNgOAAAA1RshDi4REfzBzjYwsR0AAACqL24xAAAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABuxPMS9/PLLatGihfz8/BQdHa0dO3aUWr9q1Sq1bdtWfn5+6tSpk9avX+/2vGEYmjp1qsLDw+Xv76+YmBglJye71TzzzDPq0aOHAgICFBwcXGQdX375pYYOHapmzZrJ399f7dq105w5c9xqtm7dKofDUeQnJSWlYhsCAAAAAMrA0hC3YsUKJSQkaNq0afriiy/UpUsXxcbG6ujRo8XWb9u2TUOHDlV8fLx27dqluLg4xcXFac+ePa6amTNnau7cuVqwYIG2b9+uevXqKTY2VllZWa6anJwc3XLLLbrvvvuKXc/OnTsVEhKit956S998843+7//+T5MnT9a8efOK1H733Xc6cuSI6yckJOQCtwqA2sTpNB+PHLG2DwAAYB+WhrgXX3xRo0aN0siRI9W+fXstWLBAAQEBev3114utnzNnjgYMGKBHHnlE7dq101NPPaUrrrjCFa4Mw9Ds2bM1ZcoUXX/99ercubPefPNNHT58WGvWrHG9z/Tp0/XQQw+pU6dOxa7n7rvv1pw5c9SrVy9deumluuOOOzRy5Ej94x//KFIbEhKisLAw14+Xl+U7NwHYxGuvSadOmdO9e5vzAAAA51PHqhXn5ORo586dmjx5smuZl5eXYmJilJSUVOxrkpKSlJCQ4LYsNjbWFdAOHDiglJQUxcTEuJ4PCgpSdHS0kpKSdNttt1W43/T0dDVq1KjI8sjISGVnZ6tjx4564okndNVVV5X4HtnZ2crOznbNZ2RkSJJyc3OVm5tb4d7grmBbsk1RnR06JI0eXUeSQ5K5R27MGEN9+uQpIsLa3sqCcQZ4HuMM8LzqNM7K04NlIe748ePKz89XaGio2/LQ0FDt27ev2NekpKQUW19wHlrBY2k1FbFt2zatWLFC77//vmtZeHi4FixYoK5duyo7O1uLFy9W7969tX37dl1xxRXFvs+MGTM0ffr0Iss3bdqkgICACveH4iUmJlrdAlCir79uLKfT/R998vMdWrZsuzp1+s2irsqPcQZ4HuMM8LzqMM5Onz5d5lrLQpxd7NmzR9dff72mTZum/v37u5a3adNGbdq0cc336NFDP/zwg1566SX9/e9/L/a9Jk+e7LYnMSMjQ82aNVP//v0VGBjouV+ilsnNzVViYqL69esnHx8fq9sBitW5szRtmiGn0+Fa5u1taNiwaNvsiWOcAZ7FOAM8rzqNs4Kj9MrCshDXuHFjeXt7KzU11W15amqqwsLCin1NWFhYqfUFj6mpqQoPD3eriYyMLHeP3377rfr27avRo0drypQp563v1q2b/vOf/5T4vK+vr3x9fYss9/HxsfxDUxOxXVGdtWwpLVok3XOPOe/lJS1c6FDLlvb6zDLOAM9jnAGeVx3GWXnWb9lVOOrWrauoqCht3rzZtczpdGrz5s3q3r17sa/p3r27W71k7vosqG/ZsqXCwsLcajIyMrR9+/YS37Mk33zzja699lqNGDFCzzzzTJles3v3brfwCACliY+X6tc3p7duNecBAADOx9LDKRMSEjRixAh17dpV3bp10+zZs5WZmamRI0dKkoYPH66mTZtqxowZkqRx48apV69emjVrlgYPHqzly5fr888/16JFiyRJDodD48eP19NPP63WrVurZcuWevzxx9WkSRPFxcW51nvw4EGdOHFCBw8eVH5+vnbv3i1JatWqlerXr689e/aoT58+io2NVUJCgut8Om9vb1188cWSpNmzZ6tly5bq0KGDsrKytHjxYn300UfatGlTFW09ADVBwQVt+fcfAABQVpaGuCFDhujYsWOaOnWqUlJSFBkZqQ0bNrguTHLw4EG3S/b36NFDb7/9tqZMmaLHHntMrVu31po1a9SxY0dXzcSJE5WZmanRo0crLS1NPXv21IYNG+Tn5+eqmTp1qpYuXeqav/zyyyVJW7ZsUe/evbV69WodO3ZMb731lt566y1XXfPmzfXTTz9JMq+u+fDDD+vXX39VQECAOnfurA8//FDXXnutR7YVAAAAAEiSwzAMw+omaquMjAwFBQUpPT2dC5tUotzcXK1fv16DBg2y/Nhm4HyCgqSMDCk5WWrVyupuyo5xBnge4wzwvOo0zsqTDbgzNQAAAADYCCEOAAAAAGyEEAcAAAAANkKIAwAAAAAbIcQBAAAAgI0Q4gAAAADARghxAAAAAGAjhDgAAAAAsBFCHAAAAADYCCEOAAAAAGyEEAcAAAAANkKIAwAAAAAbIcQBAAAAgI0Q4gAAAADARghxAAAAAGAjhDgAAAAAsBFCHAAAAADYCCEOAAAAAGyEEAcAAAAANkKIAwAAAAAbIcQBAAAAgI0Q4gAAAADARghxAAAAAGAjhDgAAAAAsBFCHABYyOk0H48csbYPAABgH4Q4ALDIa69Jp06Z0717m/MAAADnQ4gDAAscOiSNHl0473RKY8aYywEAAEpDiAMACyQnFx5KWSA/X9q/35p+AACAfRDiAMACrVtLXud8A3t7S61aWdMPAACwD0IcAFggIkJatKhw3stLWrjQXA4AAFAaQhwAWCQ+Xqpf35zeutWcBwAAOB9CHABYqOCQyvBwa/sAAAD2QYgDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOACwkNNpPh45Ym0fAADAPghxAGCR116TTp0yp3v3NucBAADOhxAHABY4dEgaPbpw3umUxowxlwMAAJSGEAcAFkhOLjyUskB+vrR/vzX9AAAA+yDEAYAFWreWvM75Bvb2llq1sqYfAABgH4Q4ALBARIS0aFHhvJeXtHChuRwAAKA0hDgAsEh8vFS/vjm9das5DwAAcD6EOACwUMEhleHh1vYBAADsgxAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZieYh7+eWX1aJFC/n5+Sk6Olo7duwotX7VqlVq27at/Pz81KlTJ61fv97tecMwNHXqVIWHh8vf318xMTFKTk52q3nmmWfUo0cPBQQEKDg4uNj1HDx4UIMHD1ZAQIBCQkL0yCOPKC8vz61m69atuuKKK+Tr66tWrVppyZIl5f79AQAAAKA8LA1xK1asUEJCgqZNm6YvvvhCXbp0UWxsrI4ePVps/bZt2zR06FDFx8dr165diouLU1xcnPbs2eOqmTlzpubOnasFCxZo+/btqlevnmJjY5WVleWqycnJ0S233KL77ruv2PXk5+dr8ODBysnJ0bZt27R06VItWbJEU6dOddUcOHBAgwcP1rXXXqvdu3dr/Pjxuueee7Rx48ZK2joAAAAAUAzDQt26dTMeeOAB13x+fr7RpEkTY8aMGcXW33rrrcbgwYPdlkVHRxtjxowxDMMwnE6nERYWZjz//POu59PS0gxfX1/jnXfeKfJ+b7zxhhEUFFRk+fr16w0vLy8jJSXFtWz+/PlGYGCgkZ2dbRiGYUycONHo0KGD2+uGDBlixMbGnue3LpSenm5IMtLT08v8GpxfTk6OsWbNGiMnJ8fqVoDzCgw0DMkwkpOt7qR8GGeA5zHOAM+rTuOsPNnAsj1xOTk52rlzp2JiYlzLvLy8FBMTo6SkpGJfk5SU5FYvSbGxsa76AwcOKCUlxa0mKChI0dHRJb5nSevp1KmTQkND3daTkZGhb775pky9AAAAAIAn1LFqxcePH1d+fr5bUJKk0NBQ7du3r9jXpKSkFFufkpLier5gWUk1ZVHSes5eR0k1GRkZOnPmjPz9/Yu8b3Z2trKzs13zGRkZkqTc3Fzl5uaWuT+UrmBbsk1hD3UkOf73PWB1L2XHOAM8j3EGeF51Gmfl6cGyEFcbzZgxQ9OnTy+yfNOmTQoICLCgo5otMTHR6haA88rLGyTJR//+97/1/feZVrdTbowzwPMYZ4DnVYdxdvr06TLXWhbiGjduLG9vb6WmprotT01NVVhYWLGvCQsLK7W+4DE1NVXh4eFuNZGRkWXuLSwsrMhVMgvWe/a6iuslMDCw2L1wkjR58mQlJCS45jMyMtSsWTP1799fgYGBZe4PpcvNzVViYqL69esnHx8fq9sBSlWnjvk13KtXL7VqZXEz5cA4AzyPcQZ4XnUaZwVH6ZWFZSGubt26ioqK0ubNmxUXFydJcjqd2rx5s8aOHVvsa7p3767Nmzdr/PjxrmWJiYnq3r27JKlly5YKCwvT5s2bXaEtIyND27dvL/FKlCWt55lnntHRo0cVEhLiWk9gYKDat2/vqjn39gZn91IcX19f+fr6Flnu4+Nj+YemJmK7wg6cTvPx+HEftWtnbS8VwTgDPI9xBnhedRhn5Vm/pbcYSEhI0KuvvqqlS5dq7969uu+++5SZmamRI0dKkoYPH67Jkye76seNG6cNGzZo1qxZ2rdvn5544gl9/vnnrtDncDg0fvx4Pf3001q7dq2+/vprDR8+XE2aNHEFRcm8B9zu3bt18OBB5efna/fu3dq9e7dOnTolSerfv7/at2+vO++8U19++aU2btyoKVOm6IEHHnCFsHvvvVc//vijJk6cqH379umVV17RypUr9dBDD1XR1gNgd6+9Jv3va0e9e5vzAAAA52PpOXFDhgzRsWPHNHXqVKWkpCgyMlIbNmxwXTDk4MGD8vIqzJk9evTQ22+/rSlTpuixxx5T69attWbNGnXs2NFVM3HiRGVmZmr06NFKS0tTz549tWHDBvn5+blqpk6dqqVLl7rmL7/8cknSli1b1Lt3b3l7e2vdunW677771L17d9WrV08jRozQk08+6XpNy5Yt9f777+uhhx7SnDlzFBERocWLFys2NtZj2wtAzXHokDR6dOG80ymNGSPFxkoREdb1BQAAqj+HYRiG1U3UVhkZGQoKClJ6ejrnxFWi3NxcrV+/XoMGDbJ8tzhQki1bpD59il/eu3eVt1NujDPA8xhngOdVp3FWnmxg6eGUAFBbtW4teZ3zDezlJVtd3AQAAFiDEAcAFoiIkBYtkry9C5eFhUnn3H4SAACgCEIcAFgkPl766SdpzRqpYUPp8GHphRes7goAAFR3hDgAsFBEhHT99dKcOeb8k09K//mPeW7coUPW9gYAAKonQhwAVAN33CH17StlZUlXX21e9KR5c247AAAAiiLEAUA14HBI06a5Lyu47QB75AAAwNkIcQBQTeTlFV2Wny/t31/1vQAAgOqrQjf7zs/P15IlS7R582YdPXpUTqfT7fmPPvqoUpoDgNqkdWtzj9zZd+/09ua2AwAAwF2FQty4ceO0ZMkSDR48WB07dpTD4ajsvgCg1omIkPr3lzZuNOe9vaWFC83lAAAABSoU4pYvX66VK1dq0KBBld0PANRqnTubIe7WW6VZswhwAACgqAqdE1e3bl214vgeAPCYSy4hwAEAgOJVKMQ9/PDDmjNnjoyzT9wAAAAAAHhchQ6n/M9//qMtW7bogw8+UIcOHeTj4+P2/D/+8Y9KaQ4AAAAA4K5CIS44OFg33HBDZfcCAAAAADiPCoW4N954o7L7AAAAAACUQYVCXIFjx47pu+++kyS1adNGF198caU0BQAAAAAoXoUubJKZmam7775b4eHhuuaaa3TNNdeoSZMmio+P1+nTpyu7RwAAAADA/1QoxCUkJOjf//63/vWvfyktLU1paWn65z//qX//+996+OGHK7tHAAAAAMD/VOhwynfffVerV69W7969XcsGDRokf39/3XrrrZo/f35l9QcAAAAAOEuF9sSdPn1aoaGhRZaHhIRwOCUAAAAAeFCFQlz37t01bdo0ZWVluZadOXNG06dPV/fu3SutOQAAAACAuwodTjlnzhzFxsYqIiJCXbp0kSR9+eWX8vPz08aNGyu1QQAAAABAoQqFuI4dOyo5OVnLli3Tvn37JElDhw7VsGHD5O/vX6kNAkBtdPCgdOiQFBFhdScAAKC6qfB94gICAjRq1KjK7AUAar2vvjIfV66UVq+WFi2S4uOt7QkAAFQvZQ5xa9eu1cCBA+Xj46O1a9eWWvvnP//5ghsDgNrm0CFp06bCeadTGjNGio1ljxwAAChU5hAXFxenlJQUhYSEKC4ursQ6h8Oh/Pz8yugNAGqV5GTJMNyX5edL+/cT4gAAQKEyhzin01nsNACgcrRuLXl5mXvgCnh7S61aWdcTAACofip0i4HipKWlVdZbAUCtFBFhngPn7V24LDxcysiQtmwxD7cEAACoUIh77rnntGLFCtf8LbfcokaNGqlp06b68ssvK605AKht4uOln36S3npLatzYDG4dOkh9+kjNm0uvvWZ1hwAAwGoVCnELFixQs2bNJEmJiYn68MMPtWHDBg0cOFCPPPJIpTYIALVNRIQ0bJj097+7Ly+40Al75AAAqN0qdIuBlJQUV4hbt26dbr31VvXv318tWrRQdHR0pTYIALWVr2/RZVzoBAAAVGhPXMOGDfXLL79IkjZs2KCYmBhJkmEYXJkSACpJ69aSw+G+jAudAACACoW4G2+8Ubfffrv69eun3377TQMHDpQk7dq1S6346wIAKkVEhHn4ZAFvb2nhQvbCAQBQ21UoxL300ksaO3as2rdvr8TERNWvX1+SdOTIEd1///2V2iAA1GZ9+piPnTubFzyJj7e0HQAAUA1U6Jw4Hx8fTZgwocjyhx566IIbAgAUFRzMHjgAAGAqc4hbu3atBg4cKB8fH61du7bU2j//+c8X3BgAAAAAoKgyh7i4uDilpKQoJCREcXFxJdY5HA4ubgIAAAAAHlLmEOd0OoudBgAAAABUnQpd2AQAAAAAYI0KhbgHH3xQc+fOLbJ83rx5Gj9+/IX2BAAAAAAoQYVC3LvvvqurrrqqyPIePXpo9erVF9wUAAAAAKB4FQpxv/32m4KCgoosDwwM1PHjxy+4KQAAAABA8SoU4lq1aqUNGzYUWf7BBx/o0ksvveCmAAAAAADFq9DNvhMSEjR27FgdO3ZMffr0kSRt3rxZs2bN0uzZsyuzPwCApLQ06dAhbvgNAAAqGOLuvvtuZWdn65lnntFTTz0lSWrRooXmz5+v4cOHV2qDAFCbffSR+fjVV1Lz5tKiRVJ8vLU9AQAAa1X4FgP33XefDh06pNTUVGVkZOjHH38kwAFAJTp0SFq4sHDe6ZTGjDGXAwCA2qvCIS4vL08ffvih/vGPf8gwDEnS4cOHderUqUprDgBqs+Rk6X9fry75+dL+/db0AwAAqocKHU75888/a8CAATp48KCys7PVr18/NWjQQM8995yys7O1YMGCyu4TAGqd1q0lh8M9yHl7S61aWdcTAACwXoX2xI0bN05du3bV77//Ln9/f9fyG264QZs3b6605gCgNouIMA+fLODtbR5eycVNAACo3Sq0J+6TTz7Rtm3bVLduXbflLVq00K+//lopjQEApD59pAULpM6dpfffJ8ABAIAK7olzOp3Kz88vsvzQoUNq0KDBBTcFAHAXHEyAAwAApgqFuP79+7vdD87hcOjUqVOaNm2aBg0aVFm9AQCK4XAU/gAAgNqnQodTvvDCCxowYIDat2+vrKws3X777UpOTlbjxo31zjvvVHaPAID/OTe4nXvhEwAAUPNVKMQ1a9ZMX375pVasWKEvv/xSp06dUnx8vIYNG+Z2oRMAQOUpac8bQQ4AgNql3CEuNzdXbdu21bp16zRs2DANGzbME30BAAAAAIpR7nPifHx8lJWV5YleAAAAAADnUaELmzzwwAN67rnnlJeXV9n9AACKceCA5Otb/HMcSgkAQO1SoXPiPvvsM23evFmbNm1Sp06dVK9ePbfn//GPf1RKcwAA0y+/mI+NG0vHjxcuJ8ABAFD7VCjEBQcH66abbqrsXgAA5/joI/f5wYOlpUul6Gjpv/+1picAAGCtcoU4p9Op559/Xt9//71ycnLUp08fPfHEE1yREgA84NAhaeFC92V//7s1vQAAgOqjXOfEPfPMM3rsscdUv359NW3aVHPnztUDDzzgqd4AoFZLTi56uKTTaU0vAACg+ihXiHvzzTf1yiuvaOPGjVqzZo3+9a9/admyZXLyVwUAVLrWrSWvc76lz50HAAC1T7n+HDh48KAGDRrkmo+JiZHD4dDhw4crvTEAqO0iIqRFiyRvb3Pe21u6/35rewIAANYrV4jLy8uTn5+f2zIfHx/l5uZWalMAAFN8vPTTT9KWLeZj//5WdwQAAKxWrgubGIahu+66S75n3awoKytL9957r9ttBrjFAABUnogI80eSdu0yH9PTzQufFCwHAADld+iQ9PXXjdW5s9SypdXdlF25QtyIESOKLLvjjjsqrZlaLydHKm2vpp9f4XFVublmfUl8faU6dcpfm5cnZWeXXFu3ruTjU/7a/HwpK6vkWh8fs768tU6ndOaM+/O5ufLOypIyM6WAgNJrz1anTuHdlA1DOn26cmq9vc3/dgUyMyun1stLOvvKsOWpPX265BuMORzmdqtI7ZkzpV954+x7SpanNivL/FxURm1AgNm3ZH5+8/Iqp9bfv/CEtfON5fLUnj3uc3K09f1cBUg6uE9q28w8vDImxnw636ew1pGXK6+8kse908dXhned8tfm58krN1t5eXn6amcD+eScVp06hf8rcdapK6OOj1ttie97Vq3y8+WdW/K4d3r7yPCpW/5ap1PeOSWP+/LUGt515PQpHPfe2SWP+3LVennLWbdw3HtnlTyWy1Xr8JLT179CtV5Zp+VQ8ePekENOv4CK1WafkcMoedzn+9WrWG1OlhzOksd9uWp9C8e9V262HPklj/ty1dYtHPeO3Bx55Zc87gtq8/Ic2r2jYZFx5lZ79rg/3/tW4XdEibV8R5S/lu8Il8r+jvjwQ+mVVwxl6ipNm2Zo0SLzCBhbMGCZ9PR0Q5KRnp5uLpg50zDMP5eL/9mypfDF8+aVXrtuXWHtG2+UXrtyZWHtypWl177xRmHtunWl186bV1i7ZUvptTNnFtbu2FF67bRphbV79pReO2FCYe2BA6XX3n9/Ye3Ro6XXjhhRWHvqVOm1N9/s/h++tNpBg9xrAwJKru3Vy722ceOSa7t2da9t3rzk2vbt3Wvbty+5tnlz99quXUuubdzYvbZXr5JrAwLcawcNKn27ne3mm0uvPXWqsHbEiNJrjx4trL3//tJrDxworJ0wofTaPXsKa6dNK712xw5X6e//V/p3RC9tKfw4q/TviEFaV/hx1hul1t6slYUfZ5X+HTFCbxR+nFX6d8T9mlf4cdaWUmsnaGbhx1mlf0dM07TCj7NK/46YqQmFH2cdKLV2nu53zTZW6d8Rb2iEazZApX9HrNTNbotKq12nQW6LTqnk74gt6uW26KhK/o7Yoa5uiw6o5O+IPWrvtmiPSv6OOKDmbot2qOTviKNq7LZoi0r+jjilALdF61T6d8TZsytV+ndEgE65Zt9Q6d8RjXXUNTtPpX9HNNcB1+xMlf4d0V57XLPTVPp3RFftcM1OEN8REt8RZy/iO8L8Ket3hLe3Yfzyi2GZItmgFBW62TcAoOodPyYFl/J8m8ukUw3M6UuOSvql5NpWraSoIHO6xXFJP5dce+mlUlTD/03/LunHkmtbNJeiGv9vHemS9pdce0kzKSrkf72flPR9ybURTaWoMHO6XaakfSXXNgmXopr8r98zkr4tuTY0VIr63yGp4dmS9pRce/HFUtQl5nRwrqSvSq696CIpqoU57ZcvaXfJtQ2Dpag/nLVgZ8m1QYFSVOvCea9dkkr4h+gG9aWoNoXzdb6UVMKOooAAKapd4XzdryWVsOPFz0+K6nDW/DeSStjpUbeuFNXprPXslVTCDoc6daSoLmf1/52kU8XXenlJUZcXzgclS8oovlaSoqIKpxv+ICmt5NrLI6Ws/+38vugnSb+VXNuls5T2vx1FFx+UdKzk2k4dpcb/2/ESekhSasm1HdqbO+wNw6lGB7Kk30uubddWMv63wyEiRdKvJdfyHWHiO8LEd0RR+fnS/v32OFXBYRiGYXUTtVVGRoaCgoKUnp6uwMBADqespMMpc3NztXHjRsXGxsqHwymLr+VwSnPaZodTHvoxR+1a5cp51n8Oby9p716paVNV6XeE2zgrGOeSLb4jKlzLd4SJ74iK1VbgOyI3N1cf/POfGhgT4z7OznbOIdf8HVHOWr4jKlZbA74jfv1VattWchrSaZm13t7mRcSsCnFFskFpPL5fsAzmzZtnNG/e3PD19TW6detmbN++vdT6lStXGm3atDF8fX2Njh07Gu+//77b806n03j88ceNsLAww8/Pz+jbt6/x/fffu9X89ttvxu233240aNDACAoKMu6++27j5MmTruenTZtmSCryE3DWYV5vvPFGked9fX3L/HuXZ5cpyi4nJ8dYs2aNkZOTY3UrQKVbvNg83KPgsI/Fi63pg3EGeB7jDPAs8/+pzv/9P9Vp2f9TC5QnG1h+29gVK1YoISFB06ZN0xdffKEuXbooNjZWR48eLbZ+27ZtGjp0qOLj47Vr1y7FxcUpLi5Oe/YU7t+eOXOm5s6dqwULFmj79u2qV6+eYmNjlXXWv8oMGzZM33zzjRITE7Vu3Tp9/PHHGj16tOv5CRMm6MiRI24/7du31y233OLWT2BgoFvNzz+XcrwBAFygc285YJsTsAEAqGbi46Xk5Dw99dR/lJycZ6v/p1oe4l588UWNGjVKI0eOVPv27bVgwQIFBATo9ddfL7Z+zpw5GjBggB555BG1a9dOTz31lK644grNmzdPknm65+zZszVlyhRdf/316ty5s958800dPnxYa9askSTt3btXGzZs0OLFixUdHa2ePXvqb3/7m5YvX+66cXn9+vUVFhbm+klNTdW3336r+HP+6zocDre60NBQz20sAJB5mEfv3vY4Zh8AgOosIkLq1Ok32/0/1dIQl5OTo507dyqm4PrYkry8vBQTE6OkpKRiX5OUlORWL0mxsbGu+gMHDiglJcWtJigoSNHR0a6apKQkBQcHq2vXrq6amJgYeXl5afv27cWud/Hixbrssst09dVXuy0/deqUmjdvrmbNmun666/XN998U44tAAAAAADlY+nVKY8fP678/Pwie69CQ0O1b1/xlxVKSUkptj4lJcX1fMGy0mpCQkLcnq9Tp44aNWrkqjlbVlaWli1bpkmTJrktb9OmjV5//XV17txZ6enpeuGFF9SjRw998803iigmzmdnZyv7rBN4MzLMy+Tk5uYqt7QTkVEuBduSbQp4DuMM8DzGGeB51WmclacHbjFQBu+9955OnjxZ5Gbn3bt3V/fu3V3zPXr0ULt27bRw4UI99dRTRd5nxowZmj59epHlmzZtUsDZV+ZBpUhMTLS6BaDGY5wBnsc4AzyvOoyz06VdpfQcloa4xo0by9vbW6mp7jdLSU1NVVhYWLGvKTg/raT6gsfU1FSFh4e71URGRrpqzr1wSl5enk6cOFHsehcvXqzrrrvuvOe7+fj46PLLL9f+/cXf9GTy5MlKSEhwzWdkZKhZs2bq37//+S8jijLLzc1VYmKi+vXrV/IlmQFcEMYZ4HmMM8DzqtM4KzhKrywsDXF169ZVVFSUNm/erLi4OEmS0+nU5s2bNXbs2GJf0717d23evFnjx493LUtMTHTtEWvZsqXCwsK0efNmV2jLyMjQ9u3bdd9997neIy0tTTt37lTU/+4A+tFHH8npdCo6OtptfQcOHNCWLVu0du3a8/4++fn5+vrrrzVo0KBin/f19ZVvwT1BzuLj42P5h6YmYrsCnsc4AzyPcQZ4XnUYZ+VZv+WHUyYkJGjEiBHq2rWrunXrptmzZyszM1MjR46UJA0fPlxNmzbVjBkzJEnjxo1Tr169NGvWLA0ePFjLly/X559/rkWLFkkyrxY5fvx4Pf3002rdurVatmypxx9/XE2aNHEFxXbt2mnAgAEaNWqUFixYoNzcXI0dO1a33XabmjRp4tbf66+/rvDwcA0cOLBI708++aT++Mc/qlWrVkpLS9Pzzz+vn3/+Wffcc48HtxgAAACA2szyEDdkyBAdO3ZMU6dOVUpKiiIjI7VhwwbXoYsHDx6Ul1fhRTR79Oiht99+W1OmTNFjjz2m1q1ba82aNerYsaOrZuLEicrMzNTo0aOVlpamnj17asOGDfI76w72y5Yt09ixY9W3b195eXnppptu0ty5c916czqdWrJkie666y55e3sX6f3333/XqFGjlJKSooYNGyoqKkrbtm1T+/btK3szAQAAAIAkyWEYhmF1E7VVRkaGgoKClJ6ezjlxlSg3N1fr16/XoEGDLN8tDtRUjDPA8xhngOdVp3FWnmxg+c2+AQAAAABlR4gDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwkWoR4l5++WW1aNFCfn5+io6O1o4dO0qtX7Vqldq2bSs/Pz916tRJ69evd3veMAxNnTpV4eHh8vf3V0xMjJKTk91qTpw4oWHDhikwMFDBwcGKj4/XqVOnXM//9NNPcjgcRX7++9//lqsXAAAAAKhMloe4FStWKCEhQdOmTdMXX3yhLl26KDY2VkePHi22ftu2bRo6dKji4+O1a9cuxcXFKS4uTnv27HHVzJw5U3PnztWCBQu0fft21atXT7GxscrKynLVDBs2TN98840SExO1bt06ffzxxxo9enSR9X344Yc6cuSI6ycqKqpcvQAAAABAZXIYhmFY2UB0dLSuvPJKzZs3T5LkdDrVrFkz/eUvf9GkSZOK1A8ZMkSZmZlat26da9kf//hHRUZGasGCBTIMQ02aNNHDDz+sCRMmSJLS09MVGhqqJUuW6LbbbtPevXvVvn17ffbZZ+rataskacOGDRo0aJAOHTqkJk2a6KefflLLli21a9cuRUZGFtv7+Xo5n4yMDAUFBSk9PV2BgYFl3mYoXW5urtavX69BgwbJx8fH6naAGolxBnge4wzwvOo0zsqTDepUUU/FysnJ0c6dOzV58mTXMi8vL8XExCgpKanY1yQlJSkhIcFtWWxsrNasWSNJOnDggFJSUhQTE+N6PigoSNHR0UpKStJtt92mpKQkBQcHuwKcJMXExMjLy0vbt2/XDTfc4Fr+5z//WVlZWbrssss0ceJE/fnPfy5zL+fKzs5Wdna2az4jI0OS+eHJzc0t9jUov4JtyTYFPIdxBnge4wzwvOo0zsrTg6Uh7vjx48rPz1doaKjb8tDQUO3bt6/Y16SkpBRbn5KS4nq+YFlpNSEhIW7P16lTR40aNXLV1K9fX7NmzdJVV10lLy8vvfvuu4qLi9OaNWtcQe58vZxrxowZmj59epHlmzZtUkBAQLGvQcUlJiZa3QJQ4zHOAM9jnAGeVx3G2enTp8tca2mIq84aN27stpftyiuv1OHDh/X888+77Y0rj8mTJ7u9Z0ZGhpo1a6b+/ftzOGUlys3NVWJiovr162f5bnGgpmKcAZ7HOAM8rzqNs4Kj9MrC0hDXuHFjeXt7KzU11W15amqqwsLCin1NWFhYqfUFj6mpqQoPD3erKTi3LSwsrMiFU/Ly8nTixIkS1yuZ5++dndLP18u5fH195evrW2S5j4+P5R+amojtCnge4wzwPMYZ4HnVYZyVZ/2WXp2ybt26ioqK0ubNm13LnE6nNm/erO7duxf7mu7du7vVS+buz4L6li1bKiwszK0mIyND27dvd9V0795daWlp2rlzp6vmo48+ktPpVHR0dIn97t692y0Ynq8XAAAAAKhslh9OmZCQoBEjRqhr167q1q2bZs+erczMTI0cOVKSNHz4cDVt2lQzZsyQJI0bN069evXSrFmzNHjwYC1fvlyff/65Fi1aJElyOBwaP368nn76abVu3VotW7bU448/riZNmiguLk6S1K5dOw0YMECjRo3SggULlJubq7Fjx+q2225TkyZNJElLly5V3bp1dfnll0uS/vGPf+j111/X4sWLXb2frxcAAAAAqGyWh7ghQ4bo2LFjmjp1qlJSUhQZGakNGza4Lhhy8OBBeXkV7jDs0aOH3n77bU2ZMkWPPfaYWrdurTVr1qhjx46umokTJyozM1OjR49WWlqaevbsqQ0bNsjPz89Vs2zZMo0dO1Z9+/aVl5eXbrrpJs2dO9ett6eeeko///yz6tSpo7Zt22rFihW6+eaby9ULAAAAAFQmy+8TV5txnzjPqE73+wBqKsYZ4HmMM8DzqtM4K082sPScOAAAAABA+RDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANgIIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxAEAAACAjRDiAAAAAMBGCHEAAAAAYCOEOAAAAACwEUIcAAAAANhItQhxL7/8slq0aCE/Pz9FR0drx44dpdavWrVKbdu2lZ+fnzp16qT169e7PW8YhqZOnarw8HD5+/srJiZGycnJbjUnTpzQsGHDFBgYqODgYMXHx+vUqVOu57du3arrr79e4eHhqlevniIjI7Vs2TK391iyZIkcDofbj5+f3wVuDQAAAAAomeUhbsWKFUpISNC0adP0xRdfqEuXLoqNjdXRo0eLrd+2bZuGDh2q+Ph47dq1S3FxcYqLi9OePXtcNTNnztTcuXO1YMECbd++XfXq1VNsbKyysrJcNcOGDdM333yjxMRErVu3Th9//LFGjx7ttp7OnTvr3Xff1VdffaWRI0dq+PDhWrdunVs/gYGBOnLkiOvn559/ruQtBAAAAACFHIZhGFY2EB0drSuvvFLz5s2TJDmdTjVr1kx/+ctfNGnSpCL1Q4YMUWZmpluY+uMf/6jIyEgtWLBAhmGoSZMmevjhhzVhwgRJUnp6ukJDQ7VkyRLddttt2rt3r9q3b6/PPvtMXbt2lSRt2LBBgwYN0qFDh9SkSZNiex08eLBCQ0P1+uuvSzL3xI0fP15paWkV+t0zMjIUFBSk9PR0BQYGVug9UFRubq7Wr1+vQYMGycfHx+p2gBqJcQZ4HuMM8LzqNM7Kkw3qVFFPxcrJydHOnTs1efJk1zIvLy/FxMQoKSmp2NckJSUpISHBbVlsbKzWrFkjSTpw4IBSUlIUExPjej4oKEjR0dFKSkrSbbfdpqSkJAUHB7sCnCTFxMTIy8tL27dv1w033FDsutPT09WuXTu3ZadOnVLz5s3ldDp1xRVX6K9//as6dOhQ7Ouzs7OVnZ3tms/IyJBkfnhyc3OLfQ3Kr2Bbsk0Bz2GcAZ7HOAM8rzqNs/L0YGmIO378uPLz8xUaGuq2PDQ0VPv27Sv2NSkpKcXWp6SkuJ4vWFZaTUhIiNvzderUUaNGjVw151q5cqU+++wzLVy40LWsTZs2ev3119W5c2elp6frhRdeUI8ePfTNN98oIiKiyHvMmDFD06dPL7J806ZNCggIKHa9qLjExESrWwBqPMYZ4HmMM8DzqsM4O336dJlrLQ1xdrFlyxaNHDlSr776qttetu7du6t79+6u+R49eqhdu3ZauHChnnrqqSLvM3nyZLe9iBkZGWrWrJn69+/P4ZSVKDc3V4mJierXr5/lu8WBmopxBnge4wzwvOo0zgqO0isLS0Nc48aN5e3trdTUVLflqampCgsLK/Y1YWFhpdYXPKampio8PNytJjIy0lVz7oVT8vLydOLEiSLr/fe//60//elPeumllzR8+PBSfx8fHx9dfvnl2r9/f7HP+/r6ytfXt9jXWf2hqYnYroDnMc4Az2OcAZ5XHcZZedZv6dUp69atq6ioKG3evNm1zOl0avPmzW57uM7WvXt3t3rJ3P1ZUN+yZUuFhYW51WRkZGj79u2umu7duystLU07d+501Xz00UdyOp2Kjo52Ldu6dasGDx6s5557zu3KlSXJz8/X119/7RYeAQAAAKAyWX44ZUJCgkaMGKGuXbuqW7dumj17tjIzMzVy5EhJ0vDhw9W0aVPNmDFDkjRu3Dj16tVLs2bN0uDBg7V8+XJ9/vnnWrRokSTJ4XBo/Pjxevrpp9W6dWu1bNlSjz/+uJo0aaK4uDhJUrt27TRgwACNGjVKCxYsUG5ursaOHavbbrvNdWXKLVu26LrrrtO4ceN00003uc6Vq1u3rho1aiRJevLJJ/XHP/5RrVq1Ulpamp5//nn9/PPPuueee6pyEwIAAACoRSwPcUOGDNGxY8c0depUpaSkKDIyUhs2bHBdmOTgwYPy8ircYdijRw+9/fbbmjJlih577DG1bt1aa9asUceOHV01EydOVGZmpkaPHq20tDT17NlTGzZscLsR97JlyzR27Fj17dtXXl5euummmzR37lzX80uXLtXp06c1Y8YMV4CUpF69emnr1q2SpN9//12jRo1SSkqKGjZsqKioKG3btk3t27f31OYCAAAAUMtZfp+42oz7xHlGdbrfB1BTMc4Az2OcAZ5XncZZebKBpefEAQAAAADKhxAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALARQhwAAAAA2AghDgAAAABshBAHAAAAADZCiAMAAAAAGyHEAQAAAICNEOIAAAAAwEYIcQAAAABgI4Q4AAAAALCROlY3gPPLz89Xbm6u1W3YRm5ururUqaOsrCzl5+db3U6t4ePjI29vb6vbAAAAqPEIcdWYYRhKSUlRWlqa1a3YimEYCgsL0y+//CKHw2F1O7VKcHCwwsLC2O4AAAAeRIirxgoCXEhIiAICAvjDuIycTqdOnTql+vXry8uLI4argmEYOn36tI4ePSpJCg8Pt7gjAACAmosQV03l5+e7AtxFF11kdTu24nQ6lZOTIz8/P0JcFfL395ckHT16VCEhIRxaCQAA4CH8hVtNFZwDFxAQYHEnQNkVfF45hxMAAMBzCHHVHIdQwk74vAIAAHgeIQ4AAAAAbIQQBwAAAAA2QogDAAAAABshxKFa4sIYAAAAQPEIcbXEoUPSli3mo6f17t1bY8eO1dixYxUUFKTGjRvr8ccfl2EYJb7G4XBo/vz5+vOf/6x69erpmWee8XyjAAAAgA1xnzgbMQzp9Onyv27pUukvf5GcTsnLS/rb36QRI8r3HgEBUnkuPLh06VLFx8drx44d+vzzzzV69GhdcsklGjVqVImveeKJJ/Tss89q9uzZqlOHjyYAAABQHP5StpHTp6X69S/sPZxO6YEHzJ/yOHVKqlev7PXNmjXTSy+9JIfDoTZt2ujrr7/WSy+9VGqIu/322zVy5MjyNQYAAADUMhxOCY/44x//6HbPsO7duys5OVnPPPOM6tev7/o5ePCgq6Zr165WtAoAAADYCnvibCQgwNwjVh6//iq1a2fugSvg7S19+63UtGn51l0Z7r33Xg0ZMsQ136RJE9d0vfLs6gMAAABqKUKcjTgc5TukUZIuu0xatEgaM0bKzzcD3MKF5nJP2r59u9v8f//7X7Vu3VoXXXSRLrroIs+uHAAAAKjBCHG1QHy8FBsr7d8vtWolRUR4fp0HDx5UQkKCxowZoy+++EJ/+9vfNGvWLM+vGAAAAKjhCHG1RERE1YS3AsOHD9eZM2fUrVs3eXt7a9y4cRo9enTVNQAAAADUUIQ4eISPj49mz56t+fPnl6m+tHvIAQAAACjE1SkBAAAAwEYIcQAAAABgIxxOiUq3detWq1sAAAAAaqxqsSfu5ZdfVosWLeTn56fo6Gjt2LGj1PpVq1apbdu28vPzU6dOnbR+/Xq35w3D0NSpUxUeHi5/f3/FxMQoOTnZrebEiRMaNmyYAgMDFRwcrPj4eJ065yZsX331la6++mr5+fmpWbNmmjlzZrl7AQAAAIDKZHmIW7FihRISEjRt2jR98cUX6tKli2JjY3X06NFi67dt26ahQ4cqPj5eu3btUlxcnOLi4rRnzx5XzcyZMzV37lwtWLBA27dvV7169RQbG6usrCxXzbBhw/TNN98oMTFR69at08cff+x29cSMjAz1799fzZs3186dO/X888/riSee0KJFi8rVCwAAAABUKsNi3bp1Mx544AHXfH5+vtGkSRNjxowZxdbfeuutxuDBg92WRUdHG2PGjDEMwzCcTqcRFhZmPP/8867n09LSDF9fX+Odd94xDMMwvv32W0OS8dlnn7lqPvjgA8PhcBi//vqrYRiG8corrxgNGzY0srOzXTWPPvqo0aZNmzL3cj7p6emGJCM9Pb3Ic2fOnDG+/fZb48yZM2V6LxTKz883fv/9dyM/P9/qVmodPre1R05OjrFmzRojJyfH6laAGotxBnhedRpnpWWDc1l6TlxOTo527typyZMnu5Z5eXkpJiZGSUlJxb4mKSlJCQkJbstiY2O1Zs0aSdKBAweUkpKimJgY1/NBQUGKjo5WUlKSbrvtNiUlJSk4OFhdu3Z11cTExMjLy0vbt2/XDTfcoKSkJF1zzTWqW7eu23qee+45/f7772rYsOF5ezlXdna2srOzXfMZGRmSpNzcXOXm5rrV5ubmyjAMOZ1OOZ3OYt8PxTP+d7uCgu2HquN0OmUYhnJzc+Xt7W11O/Cggu+sc7+7AFQexhngedVpnJWnB0tD3PHjx5Wfn6/Q0FC35aGhodq3b1+xr0lJSSm2PiUlxfV8wbLSakJCQtyer1Onjho1auRW07JlyyLvUfBcw4YNz9vLuWbMmKHp06cXWb5p0yYFBAQU6ScsLEynTp1STk5Ose+H0p08edLqFmqdnJwcnTlzRh9//LHy8vKsbgdVIDEx0eoWgBqPcQZ4XnUYZ6dPny5zLVenrEKTJ09223OXkZGhZs2aqX///goMDHSrzcrK0i+//KL69evLz8+vqlu1NcMwdPLkSTVo0EAOh8PqdmqVrKws+fv765prruFzW8Pl5uYqMTFR/fr1k4+Pj9XtADUS4wzwvOo0zgqO0isLS0Nc48aN5e3trdTUVLflqampCgsLK/Y1YWFhpdYXPKampio8PNytJjIy0lVz7oVT8vLydOLECbf3KW49Z6/jfL2cy9fXV76+vkWW+/j4FPnQ5Ofny+FwyMvLS15ell9/xlYcDofeeustDR06tFZsO4fDoffee09xcXGVWlsRXl5ecjgcxX6mUTPx3xrwPMYZ4HnVYZyVZ/2W/oVbt25dRUVFafPmza5lTqdTmzdvVvfu3Yt9Tffu3d3qJXP3Z0F9y5YtFRYW5laTkZGh7du3u2q6d++utLQ07dy501Xz0Ucfyel0Kjo62lXz8ccfux2bmpiYqDZt2qhhw4Zl6qW2uuuuu+RwOFx/zLds2VITJ050uzpoTXT27123bl21atVKTz75pMcPKzxy5IgGDhxY6bUAAAConizfTZGQkKBXX31VS5cu1d69e3XfffcpMzNTI0eOlCQNHz7c7cIn48aN04YNGzRr1izt27dPTzzxhD7//HONHTtWkrmnYfz48Xr66ae1du1aff311xo+fLiaNGni2vvQrl07DRgwQKNGjdKOHTv06aefauzYsbrtttvUpEkTSdLtt9+uunXrKj4+Xt98841WrFihOXPmuB0Oeb5earMBAwboyJEj+vHHH/XSSy9p4cKFmjZtmtVteVzB752cnKyHH35YTzzxhJ5//vliayvrXMewsLBi9/BeaC0AAACqJ8tD3JAhQ/TCCy9o6tSpioyM1O7du7VhwwbXBUMOHjyoI0eOuOp79Oiht99+W4sWLVKXLl20evVqrVmzRh07dnTVTJw4UX/5y180evRoXXnllTp16pQ2bNjgdo7OsmXL1LZtW/Xt21eDBg1Sz5493e4BFxQUpE2bNunAgQOKiorSww8/rKlTp7rdS64svdRWvr6+CgsLU7NmzRQXF6eYmBi3E0Z/++03DR06VE2bNlVAQIA6deqkd955x+09evfurQcffFATJ05Uo0aNFBYWpieeeMKtJjk52XX+Vfv27Ys9KfXrr79Wnz595O/vr4suukijR492u7H7XXfdpbi4OP31r39VaGiogoODXXvQHnnkETVq1EgRERF64403yvx7N2/eXPfdd59iYmK0du1at/U888wzatKkidq0aSNJ+uWXX3TrrbcqODhYjRo10vXXX6+ffvrJ7X1ff/11dejQQb6+vgoPD3f7hwKHw+G6ImpOTo7Gjh2r8PBw+fn5qXnz5poxY0axteXZNi+88ILCw8N10UUX6YEHHqgWV3ACAACorarFhU3Gjh1b4t6rrVu3Fll2yy236JZbbinx/RwOh5588kk9+eSTJdY0atRIb7/9dql9de7cWZ988kmpNefrxSMyM0t+zttbOvuCEqXVenlJ/v7nr61Xr3z9nWPPnj3atm2bmjdv7lqWlZWlqKgoPfroowoMDNT777+vO++8U3/4wx/UrVs3V93SpUuVkJCg7du3KykpSXfddZeuuuoq9evXT06nUzfeeKNCQ0O1fft2paena/z48W7rzszMVGxsrLp3767PPvtMR48e1T333KOxY8dqyZIlrrqPPvpIERER+vjjj/Xpp58qPj5e27Zt0zXXXKPt27drxYoVGjNmjPr166eIiIgy/+7+/v767bffXPObN29WYGCgK2zm5ua6+vvkk09Up04dPf300xowYIC++uor1a1bV/Pnz1dCQoKeffZZDRw4UOnp6fr000+LXd/cuXO1du1arVy5Updccol++eUX/fLLL8XWlnXbbNmyReHh4dqyZYv279+vIUOGKDIyUqNGjSrzdgAAAEAl8uwt61CaCt/sWyr5Z9Ag99qAgJJre/Vyr23cuPi6choxYoTh7e1t1KtXz/D19TUkGV5eXsbq1atLfd3gwYONhx9+2DXfq1cvo2fPnm41V155pfHoo48ahmEYGzduNOrUqeO6QbthmDdtl2S89dZbRn5+vrFo0SKjYcOGxqlTp1w177//vuHl5WWkpKS4+m3evLnbzcHbtGljXH311a75vLw8o169eq4bxpf0e19//fWGYZg3nU9MTDR8fX2NCRMmuJ4PDQ11u4H83//+d6NNmzaG0+l0LcvOzjb8/f2NjRs3GoZhGE2aNDH+7//+r8T1SjLee+89wzAM4y9/+YvRp08ft/crqbY82yYvL89Vc8sttxhDhgwp9v252XftUZ1ujgrUVIwzwPOq0zizzc2+UXNde+21mj9/vjIzM/XSSy+pTp06uummm1zP5+fn669//atWrlypX3/9VTk5OcrOzi5yv7zOnTu7zYeHh7uuLLp37141a9bMdR6jpCIXldm7d6+6dOmiemftTbzqqqvkdDr13XffuQ7b7dChg9uVLENDQ90Oi/X29tZFF11U5Kqm51q3bp3q16+v3NxcOZ1O3X777W6HgHbq1MntBvJffvml9u/frwYNGri9T1ZWln744QcdPXpUhw8fVt++fUtdb4G77rpL/fr1U5s2bTRgwABdd9116t+/f7G15dk2Z9+4Ozw8XF9//XWZ+gEAAEDlI8TZ0VnnLBVx1h/bkqTSQse5l98/5zysC1GvXj21atVKknk+V5cuXfTaa68pPj5ekvT8889rzpw5mj17tjp16qR69epp/PjxRS72ce6lVh0Oh5xOZ6X1Wdp6KrLugvBat25dNWnSRHXquA+xeuccmnrq1ClFRUVp2bJlRd7r4osvLvctEq644godOHBAH3zwgT788EPdeuutiomJ0erVq8v1Pmerqv8GAAAAKBtCnB2V5xw1T9WWg5eXlx577DElJCTo9ttvl7+/vz799FNdf/31uuOOOySZt5b4/vvv1b59+zK/b7t27fTLL7/oyJEjrnsC/ve//y1Ss2TJEmVmZroC1KeffiovLy/XhUUq09nhtSyuuOIKrVixQiEhIUVu+F6gRYsW2rx5s6699toyvWdgYKCGDBmiIUOG6Oabb9aAAQN04sQJNWrUyK2uqrcNAAAAKoflV6dE7XDLLbfI29tbL7/8siSpdevWSkxM1LZt27R3716NGTOmyI3TzycmJkaXXXaZRowYoS+//FKffPKJ/u///s+tZtiwYfLz89OIESO0Z88ebdmyRX/5y1905513ug4XtNKwYcPUuHFjXX/99frkk0904MABbd26VQ8++KAOHTokSXriiSc0a9YszZ07V8nJyfriiy/0t7/9rdj3e/HFF/XOO+9o3759+v7777Vq1SqFhYUpODi42HVX520DAACA4hHiUCXq1KmjsWPHaubMmcrMzNSUKVN0xRVXKDY2Vr1791ZYWJjrPn5l5eXlpffee09nzpxRt27ddM899+iZZ55xqwkICNDGjRt14sQJXXnllbr55pvV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "attns.max(-1)" + "grn.varp['GRN'] = grn.varp['all'][:,:,5].todense()\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" ] }, { "cell_type": "code", - "execution_count": 89, - "id": "82665188", + "execution_count": 46, + "id": "bc4a4905", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { + "image/png": "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ANjmzZslyor+U/v7+1dbb20moP379zMArG3bthIfxIz9l4B69erFNDQ02Llz5yTOR0dHMyMjI+bk5CRxXPSevby8WF5ensS52NhYpqmpyZo1a8YSExPFxwsKClifPn0YAHbgwIFq39e2bdsYALZ161apc2/evJF4Pnr0aAaALV++XKpsamqqOFllZWUxExMTpqOjw+7duycuU1payry9vRkAtnbtWonXo2yEBpsyZQorKSmROPfgwQOmqanJnJ2dWVpamsQ5Pz8/mb8XlXn69KnUsZycHObk5MRMTEzY27dvxcdFvy+TJ0+Wq+7yCgoKWIcOHZiLi4v4/VACIvXVO5WAGGMsLCyMDR48mBkbGzM9PT3m6urKDh06JFVOHRJQeHg409XVZYaGhiwqKkrq/L3oeLbL/w8GgH366acy61+4cCEDwCIjI8XHRAmo/Ie4yNq1axkAtnHjRqlz165dYwBYv379qn1fogS0a9euKsulpKQwjuOYra0tKyoqqrLsgQMHGAA2a9YsqXMJCQlMU1OT2djYSBwHwLS1tdnr16+lXjNv3jwGgF29elXqXGlpKWvatCnr1q1blTFVR9SavHz5svhYTRLQV199xbS1tSV+npSASH1VGwlILQchiLi6uiIgIKDacvv27ZO4J1IVKysrpW8j/vLlS4wcORKFhYU4ePAgOnToILNc6LWr4vJr1qyROv/48WPxvx07dhQf19XVhZOTk1R50UCLvn37Sp3r2bMndHV15RpgMXToUCxbtgxz5szBxYsXMXjwYHh4eMDGxkai3K1bt8AYg6enJ7S0tKqss6rY2rRpAxsbGzx58gQ5OTkwMjISn7O2tpY5alE0bDkwMBAXL16UOq+lpSX+/lXn1atX2LBhAwICApCQkID8/HyJ8y9evJCrnqrcuHEDmzdvxpo1ayR+loSQ/8iVgBITE2t0kTZtGu7or+LiYnz00Ud4/vw5Vq1ahZEjR1ZaNu31SwDAmTNncObMmUrLVRym26xZM5mLvmZnZwMAzM3Npc5xHAdzc3MkJydX+x6srKwQGhqKNWvW4OzZszhy5AgAoF27dli7dq14IIVoWHzLli2rrbOq2ACgefPmePLkCbKzsyUSUGXl09PLljFav359tdeuSnp6Orp3747ExET07t0bAwYMgKmpKTQ0NBAREYGTJ0+isLCwRtcoKSnB5MmT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", "text/plain": [ - "<3000x3000 sparse matrix of type ''\n", - "\twith 17185 stored elements in Compressed Sparse Row format>" + "
" ] }, - "execution_count": 89, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-05 15:20:44,842 [ERROR] No gene sets passed through filtering condition !!! \n", + "Hint 1: Try to lower min_size or increase max_size !\n", + "Hint 2: Check gene symbols are identifiable to your gmt input.\n", + "Hint 3: Gene symbols curated in Enrichr web services are all upcases.\n", + "\n", + "2024-09-05 15:20:44,843 [ERROR] The first entry of your gene_sets (gmt) look like this : { 0__TFs: [AC008770, AC023509, AC092835, AC138696, ADNP, ADNP2, AEBP1, AEBP2, AHCTF1, AHDC1, AHR, AHRR, AIRE, AKAP8, AKAP8L, AKNA, ALX1, ALX3, ALX4, ANHX, ANKZF1, AR, ARGFX, ARHGAP35, ARID2, ARID3A, ARID3B, ARID3C, ARID5A, ARID5B, ARNT, ARNT2, ARNTL, ARNTL2, ARX, ASCL1, ASCL2, ASCL3, ASCL4, ASCL5, ASH1L, ATF1, ATF2, ATF3, ATF4, ATF5, ATF6, ATF6B, ATF7, ATMIN, ATOH1, ATOH7, ATOH8, BACH1, BACH2, BARHL1, BARHL2, BARX1, BARX2, BATF, BATF2, BATF3, BAZ2A, BAZ2B, BBX, BCL11A, BCL11B, BCL6, BCL6B, BHLHA15, BHLHA9, BHLHE22, BHLHE23, BHLHE40, BHLHE41, BNC1, BNC2, BORCS8-MEF2B, BPTF, BRF2, BSX, C11orf95, CAMTA1, CAMTA2, CARF, CASZ1, CBX2, CC2D1A, CCDC169-SOHLH2, CCDC17, CDC5L, CDX1, CDX2, CDX4, CEBPA, CEBPB, CEBPD, CEBPE, CEBPG, CEBPZ, CENPA, CENPB, CENPBD1, CENPS, CENPT, CENPX, CGGBP1, CHAMP1, CHCHD3, CIC, CLOCK, CPEB1, CPXCR1, CREB1, CREB3, CREB3L1, CREB3L2, CREB3L3, CREB3L4, CREB5, CREBL2, CREBZF, CREM, CRX, CSRNP1, CSRNP2, CSRNP3, CTCF, CTCFL, CUX1, CUX2, CXXC1, CXXC4, CXXC5, DACH1, DACH2, DBP, DBX1, DBX2, DDIT3, DEAF1, DLX1, DLX2, DLX3, DLX4, DLX5, DLX6, DMBX1, DMRT1, DMRT2, DMRT3, DMRTA1, DMRTA2, DMRTB1, DMRTC2, DMTF1, DNMT1, DNTTIP1, DOT1L, DPF1, DPF3, DPRX, DR1, DRAP1, DRGX, DUX1, DUX3, DUX4, DUXA, DZIP1, E2F1, E2F2, E2F3, E2F4, E2F5, E2F6, E2F7, E2F8, E4F1, EBF1, EBF2, EBF3, EBF4, EEA1, EGR1, EGR2, EGR3, EGR4, EHF, ELF1, ELF2, ELF3, ELF4, ELF5, ELK1, ELK3, ELK4, EMX1, EMX2, EN1, EN2, EOMES, EPAS1, ERF, ERG, ESR1, ESR2, ESRRA, ESRRB, ESRRG, ESX1, ETS1, ETS2, ETV1, ETV2, ETV3, ETV3L, ETV4, ETV5, ETV6, ETV7, EVX1, EVX2, FAM170A, FAM200B, FBXL19, FERD3L, FEV, FEZF1, FEZF2, FIGLA, FIZ1, FLI1, FLYWCH1, FOS, FOSB, FOSL1, FOSL2, FOXA1, FOXA2, FOXA3, FOXB1, FOXB2, FOXC1, FOXC2, FOXD1, FOXD2, FOXD3, FOXD4, FOXD4L1, FOXD4L3, FOXD4L4, FOXD4L5, FOXD4L6, FOXE1, FOXE3, FOXF1, FOXF2, FOXG1, FOXH1, FOXI1, FOXI2, FOXI3, FOXJ1, FOXJ2, FOXJ3, FOXK1, FOXK2, FOXL1, FOXL2, FOXM1, FOXN1, FOXN2, FOXN3, FOXN4, FOXO1, FOXO3, FOXO4, FOXO6, FOXP1, FOXP2, FOXP3, FOXP4, FOXQ1, FOXR1, FOXR2, FOXS1, GABPA, GATA1, GATA2, GATA3, GATA4, GATA5, GATA6, GATAD2A, GATAD2B, GBX1, GBX2, GCM1, GCM2, GFI1, GFI1B, GLI1, GLI2, GLI3, GLI4, GLIS1, GLIS2, GLIS3, GLMP, GLYR1, GMEB1, GMEB2, GPBP1, GPBP1L1, GRHL1, GRHL2, GRHL3, GSC, GSC2, GSX1, GSX2, GTF2B, GTF2I, GTF2IRD1, GTF2IRD2, GTF2IRD2B, GTF3A, GZF1, HAND1, HAND2, HBP1, HDX, HELT, HES1, HES2, HES3, HES4, HES5, HES6, HES7, HESX1, HEY1, HEY2, HEYL, HHEX, HIC1, HIC2, HIF1A, HIF3A, HINFP, HIVEP1, HIVEP2, HIVEP3, HKR1, HLF, HLX, HMBOX1, HMG20A, HMG20B, HMGA1, HMGA2, HMGN3, HMX1, HMX2, HMX3, HNF1A, HNF1B, HNF4A, HNF4G, HOMEZ, HOXA1, HOXA10, HOXA11, HOXA13, HOXA2, HOXA3, HOXA4, HOXA5, HOXA6, HOXA7, HOXA9, HOXB1, HOXB13, HOXB2, HOXB3, HOXB4, HOXB5, HOXB6, HOXB7, HOXB8, HOXB9, HOXC10, HOXC11, HOXC12, HOXC13, HOXC4, HOXC5, HOXC6, HOXC8, HOXC9, HOXD1, HOXD10, HOXD11, HOXD12, HOXD13, HOXD3, HOXD4, HOXD8, HOXD9, HSF1, HSF2, HSF4, HSF5, HSFX1, HSFX2, HSFY1, HSFY2, IKZF1, IKZF2, IKZF3, IKZF4, IKZF5, INSM1, INSM2, IRF1, IRF2, IRF3, IRF4, IRF5, IRF6, IRF7, IRF8, IRF9, IRX1, IRX2, IRX3, IRX4, IRX5, IRX6, ISL1, ISL2, ISX, JAZF1, JDP2, JRK, JRKL, JUN, JUNB, JUND, KAT7, KCMF1, KCNIP3, KDM2A, KDM2B, KDM5B, KIN, KLF1, KLF10, KLF11, KLF12, KLF13, KLF14, KLF15, KLF16, KLF17, KLF2, KLF3, KLF4, KLF5, KLF6, KLF7, KLF8, KLF9, KMT2A, KMT2B, L3MBTL1, L3MBTL3, L3MBTL4, LBX1, LBX2, LCOR, LCORL, LEF1, LEUTX, LHX1, LHX2, LHX3, LHX4, LHX5, LHX6, LHX8, LHX9, LIN28A, LIN28B, LIN54, LMX1A, LMX1B, LTF, LYL1, MAF, MAFA, MAFB, MAFF, MAFG, MAFK, MAX, MAZ, MBD1, MBD2, MBD3, MBD4, MBD6, MBNL2, MECOM, MECP2, MEF2A, MEF2B, MEF2C, MEF2D, MEIS1, MEIS2, MEIS3, MEOX1, MEOX2, MESP1, MESP2, MGA, MITF, MIXL1, MKX, MLX, MLXIP, MLXIPL, MNT, MNX1, MSANTD1, MSANTD3, MSANTD4, MSC, MSGN1, MSX1, MSX2, MTERF1, MTERF2, MTERF3, MTERF4, MTF1, MTF2, MXD1, MXD3, MXD4, MXI1, MYB, MYBL1, MYBL2, MYC, MYCL, MYCN, MYF5, MYF6, MYNN, MYOD1, MYOG, MYPOP, MYRF, MYRFL, MYSM1, MYT1, MYT1L, MZF1, NACC2, NAIF1, NANOG, NANOGNB, NANOGP8, NCOA1, NCOA2, NCOA3, NEUROD1, NEUROD2, NEUROD4, NEUROD6, NEUROG1, NEUROG2, NEUROG3, NFAT5, NFATC1, NFATC2, NFATC3, NFATC4, NFE2, NFE2L1, NFE2L2, NFE2L3, NFE4, NFIA, NFIB, NFIC, NFIL3, NFIX, NFKB1, NFKB2, NFX1, NFXL1, NFYA, NFYB, NFYC, NHLH1, NHLH2, NKRF, NKX1-1, NKX1-2, NKX2-1, NKX2-2, NKX2-3, NKX2-4, NKX2-5, NKX2-6, NKX2-8, NKX3-1, NKX3-2, NKX6-1, NKX6-2, NKX6-3, NME2, NOBOX, NOTO, NPAS1, NPAS2, NPAS3, NPAS4, NR0B1, NR1D1, NR1D2, NR1H2, NR1H3, NR1H4, NR1I2, NR1I3, NR2C1, NR2C2, NR2E1, NR2E3, NR2F1, NR2F2, NR2F6, NR3C1, NR3C2, NR4A1, NR4A2, NR4A3, NR5A1, NR5A2, NR6A1, NRF1, NRL, OLIG1, OLIG2, OLIG3, ONECUT1, ONECUT2, ONECUT3, OSR1, OSR2, OTP, OTX1, OTX2, OVOL1, OVOL2, OVOL3, PA2G4, PATZ1, PAX1, PAX2, PAX3, PAX4, PAX5, PAX6, PAX7, PAX8, PAX9, PBX1, PBX2, PBX3, PBX4, PCGF2, PCGF6, PDX1, PEG3, PGR, PHF1, PHF19 , PHF20, PHF21A, PHOX2A, PHOX2B, PIN1, PITX1, PITX2, PITX3, PKNOX1, PKNOX2, PLAG1, PLAGL1, PLAGL2, PLSCR1, POGK, POU1F1, POU2AF1, POU2F1, POU2F2, POU2F3, POU3F1, POU3F2, POU3F3, POU3F4, POU4F1, POU4F2, POU4F3, POU5F1, POU5F1B, POU5F2, POU6F1, POU6F2, PPARA, PPARD, PPARG, PRDM1, PRDM10, PRDM12, PRDM13, PRDM14, PRDM15, PRDM16, PRDM2, PRDM4, PRDM5, PRDM6, PRDM8, PRDM9, PREB, PRMT3, PROP1, PROX1, PROX2, PRR12, PRRX1, PRRX2, PTF1A, PURA, PURB, PURG, RAG1, RARA, RARB, RARG, RAX, RAX2, RBAK, RBCK1, RBPJ, RBPJL, RBSN, REL, RELA, RELB, REPIN1, REST, REXO4, RFX1, RFX2, RFX3, RFX4, RFX5, RFX6, RFX7, RFX8, RHOXF1, RHOXF2, RHOXF2B, RLF, RORA, RORB, RORC, RREB1, RUNX1, RUNX2, RUNX3, RXRA, RXRB, RXRG, SAFB, SAFB2, SALL1, SALL2, SALL3, SALL4, SATB1, SATB2, SCMH1, SCML4, SCRT1, SCRT2, SCX, SEBOX, SETBP1, SETDB1, SETDB2, SGSM2, SHOX, SHOX2, SIM1, SIM2, SIX1, SIX2, SIX3, SIX4, SIX5, SIX6, SKI, SKIL, SKOR1, SKOR2, SLC2A4RG, SMAD1, SMAD3, SMAD4, SMAD5, SMAD9, SMYD3, SNAI1, SNAI2, SNAI3, SNAPC2, SNAPC4, SNAPC5, SOHLH1, SOHLH2, SON, SOX1, SOX10, SOX11, SOX12, SOX13, SOX14, SOX15, SOX17, SOX18, SOX2, SOX21, SOX3, SOX30, SOX4, SOX5, SOX6, SOX7, SOX8, SOX9, SP1, SP100, SP110, SP140, SP140L, SP2, SP3, SP4, SP5, SP6, SP7, SP8, SP9, SPDEF, SPEN, SPI1, SPIB, SPIC, SPZ1, SRCAP, SREBF1, SREBF2, SRF, SRY, ST18, STAT1, STAT2, STAT3, STAT4, STAT5A, STAT5B, STAT6, T, TAL1, TAL2, TBP, TBPL1, TBPL2, TBR1, TBX1, TBX10, TBX15, TBX18, TBX19, TBX2, TBX20, TBX21, TBX22, TBX3, TBX4, TBX5, TBX6, TCF12, TCF15, TCF20, TCF21, TCF23, TCF24, TCF3, TCF4, TCF7, TCF7L1, TCF7L2, TCFL5, TEAD1, TEAD2, TEAD3, TEAD4, TEF, TERB1, TERF1, TERF2, TET1, TET2, TET3, TFAP2A, TFAP2B, TFAP2C, TFAP2D, TFAP2E, TFAP4, TFCP2, TFCP2L1, TFDP1, TFDP2, TFDP3, TFE3, TFEB, TFEC, TGIF1, TGIF2, TGIF2LX, TGIF2LY, THAP1, THAP10, THAP11, THAP12, THAP2, THAP3, THAP4, THAP5, THAP6, THAP7, THAP8, THAP9, THRA, THRB, THYN1, TIGD1, TIGD2, TIGD3, TIGD4, TIGD5, TIGD6, TIGD7, TLX1, TLX2, TLX3, TMF1, TOPORS, TP53, TP63, TP73, TPRX1, TRAFD1, TRERF1, TRPS1, TSC22D1, TSHZ1, TSHZ2, TSHZ3, TTF1, TWIST1, TWIST2, UBP1, UNCX, USF1, USF2, USF3, VAX1, VAX2, VDR, VENTX, VEZF1, VSX1, VSX2, WIZ, WT1, XBP1, XPA, YBX1, YBX2, YBX3, YY1, YY2, ZBED1, ZBED2, ZBED3, ZBED4, ZBED5, ZBED6, ZBED9, ZBTB1, ZBTB10, ZBTB11, ZBTB12, ZBTB14, ZBTB16, ZBTB17, ZBTB18, ZBTB2, ZBTB20, ZBTB21, ZBTB22, ZBTB24, ZBTB25, ZBTB26, ZBTB3, ZBTB32, ZBTB33, ZBTB34, ZBTB37, ZBTB38, ZBTB39, ZBTB4, ZBTB40, ZBTB41, ZBTB42, ZBTB43, ZBTB44, ZBTB45, ZBTB46, ZBTB47, ZBTB48, ZBTB49, ZBTB5, ZBTB6, ZBTB7A, ZBTB7B, ZBTB7C, ZBTB8A, ZBTB8B, ZBTB9, ZC3H8, ZEB1, ZEB2, ZFAT, ZFHX2, ZFHX3, ZFHX4, ZFP1, ZFP14, ZFP2, ZFP28, ZFP3, ZFP30, ZFP37, ZFP41, ZFP42, ZFP57, ZFP62, ZFP64, ZFP69, ZFP69B, ZFP82, ZFP90, ZFP91, ZFP92, ZFPM1, ZFPM2, ZFX, ZFY, ZGLP1, ZGPAT, ZHX1, ZHX2, ZHX3, ZIC1, ZIC2, ZIC3, ZIC4, ZIC5, ZIK1, ZIM2, ZIM3, ZKSCAN1, ZKSCAN2, ZKSCAN3, ZKSCAN4, ZKSCAN5, ZKSCAN7, ZKSCAN8, ZMAT1, ZMAT4, ZNF10, ZNF100, ZNF101, ZNF107, ZNF112, ZNF114, ZNF117, ZNF12, ZNF121, ZNF124, ZNF131, ZNF132, ZNF133, ZNF134, ZNF135, ZNF136, ZNF138, ZNF14, ZNF140, ZNF141, ZNF142, ZNF143, ZNF146, ZNF148, ZNF154, ZNF155, ZNF157, ZNF16, ZNF160, ZNF165, ZNF169, ZNF17, ZNF174, ZNF175, ZNF177, ZNF18, ZNF180, ZNF181, ZNF182, ZNF184, ZNF189, ZNF19, ZNF195, ZNF197, ZNF2, ZNF20, ZNF200, ZNF202, ZNF205, ZNF207, ZNF208, ZNF211, ZNF212, ZNF213, ZNF214, ZNF215, ZNF217, ZNF219, ZNF22, ZNF221, ZNF222, ZNF223, ZNF224, ZNF225, ZNF226, ZNF227, ZNF229, ZNF23, ZNF230, ZNF232, ZNF233, ZNF234, ZNF235, ZNF236, ZNF239, ZNF24, ZNF248, ZNF25, ZNF250, ZNF251, ZNF253, ZNF254, ZNF256, ZNF257, ZNF26, ZNF260, ZNF263, ZNF264, ZNF266, ZNF267, ZNF268, ZNF273, ZNF274, ZNF275, ZNF276, ZNF277, ZNF28, ZNF280A, ZNF280B, ZNF280C, ZNF280D, ZNF281, ZNF282, ZNF283, ZNF284, ZNF285, ZNF286A, ZNF286B, ZNF287, ZNF292, ZNF296, ZNF3, ZNF30, ZNF300, ZNF302, ZNF304, ZNF311, ZNF316, ZNF317, ZNF318, ZNF319, ZNF32, ZNF320, ZNF322, ZNF324, ZNF324B, ZNF326, ZNF329, ZNF331, ZNF333, ZNF334, ZNF335, ZNF337, ZNF33A, ZNF33B, ZNF34, ZNF341, ZNF343, ZNF345, ZNF346, ZNF347, ZNF35, ZNF350, ZNF354A, ZNF354B, ZNF354C, ZNF358, ZNF362, ZNF365, ZNF366, ZNF367, ZNF37A, ZNF382, ZNF383, ZNF384, ZNF385A, ZNF385B, ZNF385C, ZNF385D, ZNF391, ZNF394, ZNF395, ZNF396, ZNF397, ZNF398, ZNF404, ZNF407, ZNF408, ZNF41, ZNF410, ZNF414, ZNF415, ZNF416, ZNF417, ZNF418, ZNF419, ZNF420, ZNF423, ZNF425, ZNF426, ZNF428, ZNF429, ZNF43, ZNF430, ZNF431, ZNF432, ZNF433, ZNF436, ZNF438, ZNF439, ZNF44, ZNF440, ZNF441, ZNF442, ZNF443, ZNF444, ZNF445, ZNF446, ZNF449, ZNF45, ZNF451, ZNF454, ZNF460, ZNF461, ZNF462, ZNF467, ZNF468, ZNF469, ZNF470, ZNF471, ZNF473, ZNF474, ZNF479, ZNF48, ZNF480, ZNF483, ZNF484, ZNF485, ZNF486, ZNF487, ZNF488, ZNF490, ZNF491, ZNF492, ZNF493, ZNF496, ZNF497, ZNF500, ZNF501, ZNF502, ZNF503, ZNF506, ZNF507, ZNF510, ZNF511, ZNF512, ZNF512B, ZNF513, ZNF514, ZNF516, ZNF517, ZNF518A, ZNF518B, ZNF519, ZNF521, ZNF524, ZNF525, ZNF526, ZNF527, ZNF528, ZNF529, ZNF530, ZNF532, ZNF534, ZNF536, ZNF540, ZNF541, ZNF543, ZNF544, ZNF546, ZNF547, ZNF548, ZNF549, ZNF550, ZNF551, ZNF552, ZNF554, ZNF555, ZNF556, ZNF557, ZNF558, ZNF559, ZNF560, ZNF561, ZNF562, ZNF563, ZNF564, ZNF565, ZNF566, ZNF567, ZNF568, ZNF569, ZNF57, ZNF570, ZNF571, ZNF572, ZNF573, ZNF574, ZNF575, ZNF576, ZNF577, ZNF578, ZNF579, ZNF580, ZNF581, ZNF582, ZNF583, ZNF584, ZNF585A, ZNF585B, ZNF586, ZNF587, ZNF587B, ZNF589, ZNF592, ZNF594, ZNF595, ZNF596, ZNF597, ZNF598, ZNF599, ZNF600, ZNF605, ZNF606, ZNF607, ZNF608, ZNF609, ZNF610, ZNF611, ZNF613, ZNF614, ZNF615, ZNF616, ZNF618, ZNF619, ZNF620, ZNF621, ZNF623, ZNF624, ZNF625, ZNF626, ZNF627, ZNF628, ZNF629, ZNF630, ZNF639, ZNF641, ZNF644, ZNF645, ZNF646, ZNF648, ZNF649, ZNF652, ZNF653, ZNF654, ZNF655, ZNF658, ZNF66, ZNF660, ZNF662, ZNF664, ZNF665, ZNF667, ZNF668, ZNF669, ZNF670, ZNF671, ZNF672, ZNF674, ZNF675, ZNF676, ZNF677, ZNF678, ZNF679, ZNF680, ZNF681, ZNF682, ZNF683, ZNF684, ZNF687, ZNF688, ZNF689, ZNF69, ZNF691, ZNF692, ZNF695, ZNF696, ZNF697, ZNF699, ZNF7, ZNF70, ZNF700, ZNF701, ZNF703, ZNF704, ZNF705A, ZNF705B, ZNF705D, ZNF705E, ZNF705G, ZNF706, ZNF707, ZNF708, ZNF709, ZNF71, ZNF710, ZNF711, ZNF713, ZNF714, ZNF716, ZNF717, ZNF718, ZNF721, ZNF724, ZNF726, ZNF727, ZNF728, ZNF729, ZNF730, ZNF732, ZNF735, ZNF736, ZNF737, ZNF74, ZNF740, ZNF746, ZNF747, ZNF749, ZNF750, ZNF75A, ZNF75D, ZNF76, ZNF761, ZNF763, ZNF764, ZNF765, ZNF766, ZNF768, ZNF77, ZNF770, ZNF771, ZNF772, ZNF773, ZNF774, ZNF775, ZNF776, ZNF777, ZNF778, ZNF780A, ZNF780B, ZNF781, ZNF782, ZNF783, ZNF784, ZNF785, ZNF786, ZNF787, ZNF788, ZNF789, ZNF79, ZNF790, ZNF791, ZNF792, ZNF793, ZNF799, ZNF8, ZNF80, ZNF800, ZNF804A, ZNF804B, ZNF805, ZNF808, ZNF81, ZNF813, ZNF814, ZNF816, ZNF821, ZNF823, ZNF827, ZNF829, ZNF83, ZNF830, ZNF831, ZNF835, ZNF836, ZNF837, ZNF84, ZNF841, ZNF843, ZNF844, ZNF845, ZNF846, ZNF85, ZNF850, ZNF852, ZNF853, ZNF860, ZNF865, ZNF878, ZNF879, ZNF880, ZNF883, ZNF888, ZNF891, ZNF90, ZNF91, ZNF92, ZNF93, ZNF98, ZNF99, ZSCAN1, ZSCAN10, ZSCAN12, ZSCAN16, ZSCAN18, ZSCAN2, ZSCAN20, ZSCAN21, ZSCAN22, ZSCAN23, ZSCAN25, ZSCAN26, ZSCAN29, ZSCAN30, ZSCAN31, ZSCAN32, ZSCAN4, ZSCAN5A, ZSCAN5B, ZSCAN5C, ZSCAN9, ZUFSP, ZXDA, ZXDB, ZXDC, ZZZ]}\n", + "2024-09-05 15:20:44,844 [ERROR] The first 5 genes look like this : [ INTU, HSPA4L, ESRRG, GAB1 ]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "raised a lookup error\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAICCAYAAACJChkhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACzy0lEQVR4nOzdd3hT5RcH8O9NZ7rSCS2rizIKpcwyLRShRZCNliGKIipDRFBZIgjIEnCAA0VZigKCDKFQVtmr7AKF7t3Sne6R3N8f/SU0zU2a3KZNx/k8Tx6aO0/SkpP73vc9L8OyLAtCCCGkjgn0HQAhhJCmiRIQIYQQvaAERAghRC8oARFCCNELSkCEEEL0ghIQIYQQvaAERAghRC8oARFCCNELSkCEEEL0ghIQIWrcuHEDb775JlxdXSEUCmFtbY0ePXpg+fLlyM7OrpMYGIbh/ZBxcXHReJ9vv/22Tl4XIYb6DoCQ+urzzz/HmjVrULlaVXFxMe7cuYM7d+7gp59+wvHjx9GrVy89RklIw0UJiBAOP/zwA7766iv5czMzM/j6+iIjIwOhoaEAgPT0dAQEBODx48dwdHSstVjGjx+vtCw0NBRxcXHy5x07doSnp6fGx/T19YWDgwPnOg8PD+2DJIQPlhCiQCwWs5aWliwAFgBrbm7OPnnyRL5+1apV8nUA2HfeeafOY3zrrbcUYli+fLna7Z2dnRW2P3/+fJ3ESYg6dA+IkCr279+PvLw8+fPXX38dHTp0kD9fsGABhEKh/Pnff/+NgoKCOo2xLmVmZmLFihXo3bs3bG1tYWRkBCsrK7i5ueHll1/GwoULcfHiRX2HSRogaoIjpIqqH6Y+Pj4Kz4VCIby8vHDz5k0AQGFhIUJDQzFw4MA6i7GuZGRkoGfPngrNfQCQl5eHvLw8xMTE4Ny5c4iKioKvr6+eoiQNFSUgQqoIDw9XeN6yZUulbaouCw8Pb1AJaPny5SrvAf3zzz/yn3/99VeF5OPi4oLOnTujpKQESUlJiImJQVFRUa3HSxonSkCEVJGTk6Pw3NzcXGmbqsvqqku2rmjaZBYTEyP/uV27dnj8+DEMDAzky0pLS3H58uUG9/pJ/UAJiJBqsByTBnMta4ycnZ3lP8fExGDJkiXo2bMn3N3d0a5dO1hYWGDw4MF6jJA0ZNQJgZAqrK2tFZ4XFhYqbVO104GNjU1thqRz58+fB8uynI/KZsyYgTZt2gAAysrKsGHDBrz++uvo0aMHrKys4OnpicWLFyM9PV0fL4M0cJSACKmico83AEhMTFTaJikpSe0+jUWzZs1w7949fPXVV+jXr59C0yPLsnjy5AnWrVsHHx8fiMViPUZKGiJKQIRUUbU3140bNxSeFxYWIiwsTP7czMwMPXv2rJPY9MHGxgZLlizBlStXkJeXh7S0NFy6dAljx46VbxMbG4tDhw7pMUrSEFECIqSK119/HZaWlvLnBw4cwJMnT+TPv/76a4WeXxMnTuTsqNAYnD9/Hnv27EFWVhaAirp0zZo1w4ABA/DKK68obJuamqqPEEkDRp0QCKnC0tISa9euxZw5cwBUXPH07NkTvr6+SE9Px+3bt+Xb2tjYYPXq1foKtdbdv38fH3/8MQwMDNCuXTu0adMGQqEQqampuHXrlsK2HTt21FOUpKGiBEQIh9mzZyM5ORlr164Fy7IoLCzEyZMnFbaxt7fHiRMn4OTkpKco645EIsGTJ08UrgQrGz58OEaOHFnHUZGGjhIQISp89dVXGDVqFLZu3YqLFy8iLS0NJiYmcHd3x8iRIzFv3rwG1/tNW+PGjYNAIMC1a9fw8OFDZGRkICsrCwKBAM2aNUOXLl3w+uuvY8qUKRAIqEWfaIdhm8qABkIIIfUKfWUhhBCiF5SACCGE6AUlIEJ0YPfu3TA0NNTo4efnp/G2bdu21fdLI6TWUCcEQnRAKpVCIpFotC3LshpvW15eXpOwCKnXqBMCIYQQvaAmOEIIIXpBCYgQQoheUAIihBCiF5SACCGE6AUlIEIIIXpBCYgQQoheUAIihBCiF5SACCGE6IXOEpBszhRCCCFEEzUqxZOamoq1a9fi2LFjSEhIAMuyKC8vx7Zt25CWlgZDQ0MsWbJEV7ESQghpRHgnoOvXr2PUqFHIzMyErJoPwzAAgKSkJKxevRoMw6Bfv34YNGiQToIlhBDSePBqgsvKysK4ceOQkZEB4EXikZkwYYL85xMnTtQgPEIIIY0VrwS0detWpKamgmEYsCyLqvVMu3TpAnt7ewAVV0qEEEJIVbwS0LFjx+Q/7927F2PGjFHaxtPTEyzLIjIykndwhBBCGi9eCSgiIgIMw6Bnz56YOHEiDAwMlLaxtrYGUNFcRwghhFTFKwEVFRUBAJo3b65ym5ycnIoTCGioESGEEGW8soOtrS1YlsXTp0851+fl5eHOnTsAADs7O/7REUIIabR4dcP29vZGcHAwIiMj8fXXXytMG5yWloZZs2YhPz8fDMOga9euuopV76RSKZKTk2FpaanU848QQhozlmWRl5eHFi1a6Kxli1cCGjNmDIKDgwEAixYtUljXsmVLhV5xY8eOrUF49UtycjJat26t7zAIIURvEhIS0KpVK50ci2Gr9qHWQHFxMby9veU93FiWlV8RVP7Zw8MD9+/fh4mJiU6C1bfc3FxYW1sjISEBVlZW+g6HEELqjFgsRuvWrZGTkwORSKSTY/K6AjI1NcXhw4fh7++PpKQkheYo2dggR0dHHDp0qNEkH+DFgFsrKytKQISQJkmXtx94N+R17NgRDx8+xNKlS+Hp6QmhUAihUAhPT08sXrwYYWFh8PT01FmghBBCGhdeTXBNlVgshkgkQm5uLl0BEUKalNr4/OPVBOfm5gYAsLCwwO3bt2FkZKSTYAghhDQdvJrgUlJSEBcXh2bNmtVq8rl16xaGDx8Oa2trmJubo0+fPti/f79G+7Isi6CgIMycORNdunSBSCSCmZkZvL29sWbNGhQXF9da3IRoK6c4BfsfL8aPoZNx7Nk6iEue6zskQmodrysgZ2dneTme2nL+/HkEBATA1NQUEydOhKWlJQ4ePIjAwEAkJCRgwYIFavcvKSnB8OHDYWJigkGDBiEgIADFxcU4deoUli5disOHDyMkJARmZma19hoI0YREWo4/H85DfllF2arHGWeRW5KKyZ03QcAol7kipLHgdQU0fvx4sCyLO3fuQCwW6zomlJeXY8aMGRAIBLh48SJ++eUXbNq0Cffv30e7du2wZMkSxMXFqT2GgYEBVq9ejZSUFJw8eRJff/01tmzZgkePHmHkyJG4desWfvjhB53HToi2kvIeyZNP5WWxOXf0FBEhdYNXAlqyZAm8vLyQk5MjvyLRpXPnziEqKgqTJ09WqKQgEomwZMkSlJaWYteuXWqPYWRkhKVLl8LGxkZp+eLFiwEAFy5c0GnchPCRIH7Aufxq4h91HAkhdYtXE9zIkSNhYGAAlmURHBwMd3d3uLi4cJZoYBgGZ8+e1er4ISEhAAB/f3+ldQEBAQBqljxk960MDWs0IzkhNSaRluFywm7OdUl5j3Ev9TgsjO3gbuMDhqHCvqRx4fUJHBISAoZh5INOy8vLERkZiaioKIXtKldF0EZERASAikoKVTk6OsLCwkK+DR+///47AO4EV1lJSQlKSkrkz2ujuZE0bedif1a7/lT0twAAV+teeK3jV1SDkDQqNf5KJUtEuvyPkZubCwAqyz1YWVnJt9FWUFAQtm3bho4dO2L69Olqt127di1EIpH8QXXgiK49zbyk0XYxObfwJDOkdoMhpI7xTkCyqbjVPeqbW7duITAwECKRCAcOHKi2TNDixYuRm5srf+j6Xhdp2lhWioKybI23P/ZsbS1GQ0jd49UEFxMTo+s4FMiufFRd5YjFYqXOBdUJDQ2Fv78/BAIBTp06hU6dOlW7j4mJSaOqZUf0q6S8AMYGQvm9nCeZ2t7HZFEqKYKxgVD3wRGiB7zHAdUm2b2fiIgI9OjRQ2Fdamoq8vPz4ePjo/HxQkNDMXToUEilUgQHB6NXr146jZcQdVLzn+FQ+ArklabDVtga/m5z0dy8LY49W6P1sWJzbqOd3YBaiJKQulcvu9UMHDgQAORzDlV26tQphW2qI0s+EokEJ0+eRO/evXUXKCHViMkJxa4Hs5FXmg4AyCpKwLFna/Eo/Qyv4z3LuqLL8AjRqxoloOzsbCxduhRdunSBpaUlLC0t0aVLFyxduhSZmZm8j/vyyy/Dzc0Ne/fuxb179+TLc3NzsWbNGhgbG+PNN9+UL09JSUF4eLhSk93t27cxdOhQlJeXIygoCH379uUdEyHaKijNxv7Hi5WXl2XhTAy/QdCP0s8gJe9pTUMjpF7gXQ37wYMHeOWVV5CamqrU4YBhGDRv3hxBQUHw9vbmFZiqUjxxcXHYuHGjQimeadOmYdeuXdixYwemTZsGAMjKykLbtm2RnZ2NYcOGcV75WFtbY968eRrHRNWwiTbCnp/G8cgNtXLs4W0/hVcz9cMICNGlelMNu6CgAGPGjEFKSgoA5QmKWJZFamoqxo4di4cPH8Lc3Fzrc/j5+eHy5ctYvnw59u3bh7KyMnh5eWH9+vUIDAysdn+xWIzs7IoeRidPnsTJkyeVtnF2dtYqARGijdQC/mPVqnM25id0sBsIIwPqJEMaLl5XQN9//z3mzZsnH4iq8uAMg2+++QZz586tUZD1BV0BEW1cit+ldTkdF+seMBaYanSvZ6THYng6DOYbHiFaqY3PP173gI4cOSL/uWfPnjh+/DgSExORmJiI48ePK/RQO3z4cI2DJKQhEvAondPDcTSGus1FW5u+ANQP7o7IusozMkLqB15NcGFhYQAAOzs7nD59WqFiQYsWLdC3b1+0a9cOGRkZePTokW4iJaSBkbASrfdpa1vRUWZ8x5Uol5YiJicUh8KXc24bnXMLUlZCUzaQBotXAsrJyQHDMOjevTtnuRxra2t0794dwcHByMnJqWmMhDRIUra8RvsbCozhIuqucn2ppBCJ4jC0Eanv6FNSXoDg6O+RlPcYNsKW8G3zNkrKCxAvfgBLYzt0dhgKIwPTGsVKCB+8EpBQKEReXh4SExNVbiNbJxTSqG3SNEmkNUtAAGBkYAob0xbILk7mXB+RdbXaBPTv05WIy62YWyi3JBWxObcV1j98fgpveH1HV1KkzvG6B+Ti4gKWZfHkyRNs2LBBoSMCy7LYuHEjHj9+DIZhar1qAiH1VWT2Na22tzJpzrl8qJvqTjwRWVfVdgQqLMtFXO5dtedNyX+KsOenNQuSEB3ilYAGDRok/3nx4sVwdnZGQEAAhg0bBmdnZyxcuJBzW0KakhwVVy2qtLbqzLnc1boHXmozjXNdbkkq0gujVR6zoDQLQPUdXYOiNoFlpQCAojIxHqSdxK3kQygo1bxYKiHa4pWAZs6cKZ/MjWVZJCYm4syZMzh9+jQSExPl38gMDAwwc+ZM3UVLSCPWzXGUynX9Wk3BK+4LONcdfbZWZXNfZlG8xuf/+fZUpBfEYPfDDxEUtQnnYn/CtjtvIrNQ82MQog1eCah9+/ZYu3atfMK5ygNRK//81VdfoUOHDjWPkpBGxJmjY0Fbmz5oaempdr8O9gNhwBgpLc8sisOuB7NQJilRWvckQ/OK2+LS5/j9/nsKV25l0mLeZYMIqQ7vWnALFizA7t274eTkpDQPkJOTE3bs2IFPP/1Ul7ES0qBYGjsoLbM2cUKg51p0dvAH8///fq7WPfGqx6Jqj2dsIISLdQ/OdemFMbiV/I/S8mdZmk14p05s7h388fAjbLn1Gv4Mm49EMQ2tILrBuxacDMuyuH37NmJjY8GyLFxdXdG9e3cIBPWy0HaNUCUEoo0fQiciv1SxKG97u5cwpv0XAID80iwYMIYwNbTUeEbhB2knERS1SeX6mT3+RGzOHTAMg/Z2vvjmhupmPb7MjKzxbtffIDSi/wNNSb2pBVcZwzDo2bMnevbsqYt4CGk0pFLlgaiVm9AsjG21PmZb2z5gogRgIeVc/9PtKfKfT0Ru1Pr4migsy8GRZ6sQ6LlB48RJCBdelymFhYWIj49HfHy8vOBnZVlZWfL1hYWFNQ6SkIZIwpYpLRMwNfvOZ2ZkjZZW1c/mW9vicu9hwzV/RGffAgCUSooQkXUVocmHkCB+qJMxUKTx45WA1qxZA1dXV7i6uiIkJERp/eXLl+Xr166leexJ01QiKVBaZiCocaMDPGz71fgYunLgyRLcS/0P39wYhUPhy3E29ifsDZuPjddfQXJeuL7DI/UcrwR0/vx5sCwLe3t7jBkzRmn9qFGj0Lx5c7Asi3PnztU0RkIanKuJf3IuzyiMrfGx61MCAoBT0d9xLj8euQFSHvXwSNPBKwFFR0fLa8GpagOWTUQXExPDPzpCGiBxSTouxe/kXFcqKarx8W1MW8DVuhfv/W2FrWscgyayihIQm3OnTs5FGiZe7QFZWVkAAKmU+0Zo5XWybQlpKhLED1SuMzey0ck5hrnPw56HHyG/NEPrfQc5vwtb01bIKk5EMzM3nI/7BU8za95dm8vjjHNws+GfLEnjxusKyMzMDCzLIiwsjDMJSSQS+ZQNpqZUZZc0LdlFSSrXtbcfqJNzWJk0w+yef/Ha14Axgp1ZG3jY9oPI1BHtbAfoJCYu0dk31daqI00brwTUunXFJXxqaipnJ4M1a9YgJSUFDMOgTZs2NYuQkAbGxFD1FPRmhsrTl9SEn8v7Wu9TtdnczcZHxZY1V1QuRnohNcMTbrya4AYMGCC/wvniiy9w7tw5DBxY8c3uwoULCj3jBgyovW9XhNRHZdJileuMDXQ7PUkPx9EIzwhBSv5TjfepWnXb1NBCpzFV9SzrCpqZu9XqOUjDxKsSwt27d9GjRw8wDCOvB1eZ7JAMw+DmzZvo0YO7fEhDQ5UQSHUk0jJsvD5c5foPe/0DMyPdXgVJWQmeZV7G/edBKJMUISnvscptm5m54e2u25SW30s9jlPR3+o0Lvk5zd3xtvfP1W5XLi2FocC4VmIgNVcbn3+8muC6deuG2bNnKyQfWR044MUl/gcffNBokg8hmnjw/KTKdV2bv6rz5AMAAsYAHewHItBzHd7w+g79W7/JuZ2poSVe91zHuc6rmT8czJSvUpqbe8BIUHEf107ojPe778anfVW/Ri7PC6KQW5yqcv2zzCvYeisQm66PwP7HSyAuea7V8UnDxXtU3Pfffw9DQ0Ns3boVEsmLvv4sy0IgEGDOnDn45ptvdBIkIfVdiaQQh558gXjxfZXb+KuZWE6XejiOxt3Uoygsy5EvsxW2xoxuv6vcx0BghEmdvsbd1GNIK4iCmZEVBrR+C+bGNiguz0e5tBTmRjbyL5ddm4/AvbTjGsf0LOsqerUYp7Q8pzgF/z79ErI5i2JybuFk1Dd43ZMGsDcFvBMQwzD45ptvMGfOHBw5cgTR0RWTYrm5uWHUqFFo27atzoIkRBtlkhI8yTiP/NJMtLd7CXZmtd8R5lrCn2qTD6B887+2CI2sMLrd5zgb+xMyC+PR3MIDozwWa7Rfv9ZTlJZz3SPq03Ii7qcFqaxJV1VE1hXOBBSVfQNVJ8yLyQlFekEMHMxdNTo2abhqXBfE3d0d8+fP10UshNRYqaQIfz/6DCn5FWVgLiXshKf9yxjqNhumhpa1dt7onNBaOzYfbUTemNblJ7CQQsAY6Pz4IlNH9G/9Bi4n7FZYPtVrC87H/YJE8UOF5YniMBSW5So1QT7LvMJ5/CcZ5ykBNQE1L0xFSD0SlX1DnnxkHmecxbOsS3it4xq0EXkr7fO8IBoX4n5DXmk62tkOQO+Wr8PIQLvxa+qmxQYq7qXUNYZhwED3yUemf+upcLXuiQRxGOzN2sDN2gcMw8DDtp9SAmIhRWTWNXRpPky+TFySjnjxPc5jR+fcgq/zO7UWO6kfdJKAwsLCsHXrVjx58gRGRkbo1KkT3n77bXTt2lUXhydEYykqCmCWS0sRFLkJM7rvgIAxAMuyiMkJRWzObdxKOSjfLr0wBiWSQrzs+oHG5ywsy612m04OQzQ+XkPSwrIjWlh2VFjWzrY/zscq97QLifsVXs0C5E2RTzJU14lMK4hEXkkGLE3sdRswqVc0SkDnzp3DunUVvWd8fHywevVq+brTp09j1KhRKC0tlS87f/48fvjhB2zZsgUzZ87UcciEqFZxT4FbTkkKHqefg7mxDe6lHsezrMuc24WmHISNqRO6Or5abfNVSXkBtt+t/pt6T6ex1W7TWFibOsHBzE3pqrCoXIw9D+fiDa9vIWAMkCgOU3ucyOxr6OY4sjZDJXqmUTfskJAQnDlzBmfPnlXoXFBWVoYZM2agpKREqdyGVCrFvHnz8Pix6jEJhOiak2V7teuPR27A/seLVSYfmdMxW/H1tWFIznuidruo7BsoKher3WZ8h5VNbuI2VRW7U/LDcTvlCAAgMvu62mMER39P8wo1choloIcPK9pzGYbBq6++Kl8eFBSE+Pj4irbm/w9KrTweqLy8HL/88ksthE2aovzSLFxL/AvnYn5GWkEk5za6Lju25+FchMT+ijJJMS7G/Y5/nizDtcS/UFJeMddPcr76BGVmZI22tn11G1QD0M62v8p152J/0vg4v917l5JQI6ZRAoqMrPjP7ubmBnv7F22yQUFBCtsNHDgQR44cwdSpU+XLLl68yDu4W7duYfjw4bC2toa5uTn69OmD/fv3a7Qvy7IICgrCzJkz0aVLF4hEIpiZmcHb2xtr1qxBcbHqcimk/skrycCeBx/iYvzvuJVyEDvvz0TM/3uepRVE4k7KEURmXUN+aabOz30jeT823xiJa0l/ISr7Oi7G/47/ItaDZVlkFMar3TfQc73O42kImpm7K5X8qeyXO29pdJzs4iTcTT2qq7BIPaPRPaCsrCwwDAN3d3eF5deuXVMox/P777/D1dUVI0aMwOnTp5GamorY2FhegZ0/fx4BAQEwNTXFxIkTYWlpiYMHDyIwMBAJCQlYsGCB2v1LSkowfPhwmJiYYNCgQQgICEBxcTFOnTqFpUuX4vDhwwgJCYGZmRmv+EjdepxxHuJSxRHyZ6J/QN9Wk3EicqPG41F0JTL7GpLyHqmdXmFs++VNtgaarDfc7ZR/OddnFydrfKyzsT+hJ8cYItLwaZyAAMWpFUpLSxXu73Ts2BGurhX99gUCAby9vZGamor8/HytgyovL8eMGTMgEAhw8eJFeW+6L774Aj4+PliyZAkmTJgAZ2dnlccwMDDA6tWrMWvWLNjYvPiQKCsrw/jx43Hs2DH88MMP+PTTT7WOj9S9xxlnlZZlFSfieOQGPURT4c+wj9WuNze2raNI6id1CUhb+aWZsDC2U7k+vSAGSflPYGlsBzfrXmAYXlXGSB3T6Lcku4H6/PmLb6C3bt1CeXm5fH3//optvoaGhgr/auPcuXOIiorC5MmTFbpyi0QiLFmyBKWlpdi1a5faYxgZGWHp0qUKyUe2fPHiilHhFy5c0Do2UvcKy3LwvCBK32FoxVBgDAezpj2QsrWVFyyMdJOEI7OuqVz3JCMEOx/Mwqmob/DPk8+x4VoAyiQlOjkvqV0aJaDmzZuDZVmEhobKm9T27NkD4EXl66oJKDW1ovigra32f4Cy6Rz8/f2V1gUEBACoWfIwMjICwC85kroXmaW+t1R91KflJJ1PvdDQCBgDDHGbo5NjPcvirpjAsiyOPvsKUlaxo8LmG68ir0T72WJJ3dIoAfn4VExYVV5ejm7duqFbt2749ddf5VdGDMPg5Zdflm9fWlqKhw8fgmEYtc1kqkRERAAAPDyUR487OjrCwsJCvg0fv/9eUZSRK8FVVlJSArFYrPAgda+6nmb1Uf/Wb+g7hHqhvd1LGNt+RY2PE5d7D1lFiUjOC4dEWiZfrq76+LnY6qeAIPqlUQKaNm2a/Ofc3Fzcv39fYeoFf39/tGzZUr5NcHCwfGCqt7dy6ZPq5OZWjCwXibhL11tZWcm30VZQUBC2bduGjh07Yvr06Wq3Xbt2LUQikfwhmwmW1K0iDSoN1Cetrbz0HUK90s6uP5qZu1e/IYBJnTZyLpey5fj17tvY8/BD/Hz7DSSKH+FC3G84GbVZ5bHCMy+gRFLIK2ZSNzRKQK+88greeOMNeW+3yuN+LCwssHmz4h/Bjh075D9XbZrTp1u3biEwMBAikQgHDhyAiYmJ2u0XL16M3Nxc+SMhIaGOIiUyUlYCS2OHGh2jnW3dzsprKFD/d9UUDXGZpdF2bUTeeNtbuYxPZfllWfgzbB6uJ/1d7fFisutXkViiSOOuIjt37sS3334LLy8vmJiYwNLSEiNGjMDly5fRoUMH+XYpKSl49OgR3N3d4e7ujmHDhqk5KjfZlY+qqxzZzHzaCA0Nhb+/PwQCAU6dOoVOnTpVu4+JiQmsrKwUHqRuFJfn458nn2PT9RG4nXq4Rsd61WMhbExbaLStiYE5JnbagPZ2L/E+H83qqay1qAsmd1Z9tQIAvm0qSho5mLnCxrSl2m01FZF1VSfHIbVD47vwAoEAc+fOxdy56ifVcnJyQng4d0FITcnu/URERCjNqCrr2i27L6WJ0NBQDB06FFKpFMHBwejVq1eN4iO173T0FrV13TRlJ3SGkYEpJnf+BndSj6KgNAsZhbGc95W6NR+J7k6jYW/mDGdRN1xN/BOX4ndqfU4DhhIQl9ZWXhjm/jFORnFPVOndvGIq84oxRP1xM1mzQefqRGVfh0RaBgOBUY2PRXSvXnaWHzhwIICKe0lVnTp1SmGb6siSj0QiwcmTJ9G7d2/dBUpqjS6SDwB0/38xSwtjW/i2mYZX2s7HFK9v0MnhZTD///N3se6BeT6H4e8+F/ZmLzrN9Gs1BW94fYcWlp4ANG9ayy1RPf10U+fdfDhGt/tcabmLqLvCXEHt7HTTdF8iKUBY+mmcj/0FxyO+RmzOHZ0cl+gGw1atIloPlJeXo3379khKSsL169flY4Fyc3Ph4+OD2NhYPH36FC4uLgAqmv1yc3Ph5OSk0DR3+/ZtDBkyBOXl5Th58mSN70fJmv5yc3OpOa4WSVkJvr6mfdMtl5faTEO/VsqzfAIV5X0EjAHMjKyrLRbKslIADJ5mXsSRZ6vVbtvGqismdf6ab8hNQtjz07gQtx0FZTloadUJo9t9DotKA3dZVoofQieioCxb5+ce3W4ZOtj76vy4jV1tfP7Vy4EwhoaG2L59OwICAuDr66tQiicuLg4bN26UJx+gorPArl27sGPHDnmPvaysLAwdOhQ5OTkYNmwYTp8+jdOnTyucx9raGvPmzau7F0Y4iUue40nGBZRKCuHVzF/tiHdtWau596PNXDOykfXt7XzRv9VU3Eo5iFIVPaycRV21irEp6txsKDraDwILlvOeGcMI0Na2H+6nHdf5uc/F/oz2dgOoWkI9UC8TEAD4+fnh8uXLWL58Ofbt24eysjJ4eXlh/fr1CAwMrHZ/sViM7OyKb08nT57EyZPK4wWcnZ0pAelZVlEi9oYtQEFZRbmn60l/Y1InXV09MHC26qqjY/3/iAyDAW3eRJ9WEyFgDHA+9heEphyqdEYB2tnVba+7hqq6+zLtbPvXSgLKK03HhmsBGOzyAVyteyKjMBbF5XkAGHg6DG7yA4jrUr1sgquvqAlO9y7E/abUndbaxAk5JSm8jmdiYI4SSQEYCDDUbU6tT2hWJinGpfideJIZAgsjWwx0fhcu1t1r9ZxNRbm0FJuuj9B4+2HuH8PMyBqHwpfzPqeFsT3e8d4GoRH9/66qyTTBkaaDaywH3+RjYWyHGd124HlBNGxMW8DcWHWlal0xMjDFYNcPMFiLKbyJZgwFxujXagquJv5Z7bZvdtkKJ4v2Na4Bl1+agSsJezDEbXaNjkM0Q42gRG/ic+/z3ldoaAVjA8WpNDrZvwxjAyFaWXWqk+RDal+/VlPQ02k8TA0tYWPaEq96LIS/21yF3/3b3j/DyaJiJlwjAxNYGTer0Tlvpx5GQanuOz8QZdQEpwVqgtON2Jw7CE35F1HVTMmsztj2K2BmZI1riXtRLMmHm3Uv9Gs1mW4sNxHl0lIwEMBAoNyIcyv5oE7qwH3c+yjdD6qk3jTBxcdXzAJpbm4OOzvd9VgijV+iOAz7Hy+u8QRyVibN4Gjhgdc8v9JRZKQhUVdtokuzYbiW+BeKymtWQ/B2ymH0bTWpRscg6vH6uuji4gJXV1fMnDlT5TaLFi2Cj48PDfwkCh5nnKtx8hEwBrA2ddRRRKSxMTE0x8h2iwCoH9tVnYvxv+smIKJSrXVCiIqKQmhoaLUD/EjTEp19q8bH6GA3CKaGljqIhjRWrtY98Umf48gsikdY+hncSTkCCVtW/Y5ViEuew8qkZveUiGq1loBKSmhGQqKsJmVqXK17obVVZ/RuWf04MEIMBEZoZu6OwebuGOzyPsqlpbid8i9C4rZrfIyIrKvo4TSm9oJs4jROQLL7PpUVFhZyLk9KSsKNGxW1vOgKiFTmYOaG9MJorfdrZuaG1z3X1EJEpKkwFBijd8tALRPQFUpAtUjjBOTi4qKQTFiWRVBQEFxd1c97r+20CaRxM2D4XXTLSvUTUlMd7AYiPPOCRtvG5z5AUZmYBqbWEq07IVTutc2yrMoHUHH1U3U6BdJ0ZRcnI7XgGa99W1h21HE0pKka0OYtCKp8EbIwtuecA4qFFMcjN4BGq9SOWhs0wbIsDAwMsHjx4to6BWlAWJbFvkcLee3r3Xw4fQMlOmMnbI2XXT6QT69hamiJVz0WqrzKjsq+gbB05alhSM1p3B7i6+srb4K7cOECGIaBnZ2d0syiDMNAKBSiQ4cOeOutt9ClSxfdRkwapPTCmGo7IPR0GqdQ2FMmwO2j2gqLNFHdnUajo70fxKXPYWPaUj7g1E7ojMyiOKXtz8T8iE4OQyBgDOo61EZN4wQUEhIi/1kgqLhwGjRoEPbvr/mshaTxyyvNULu+p9M4+Lm8hzJpMe6nnQAAGDBGGO7xKVU3ILVCaGSldGXdzrYfriUpJ6BSSSGS856glVXnugqvSeB1R1h2NVT16ocQVcKeq27CaG3VBS+7VgxqHub+Mbo0G4ac4hQ4WrSDrbBVXYVICDzs+uNa0l+c6x6nn6MEpGO8ElDlqyFCNKGu11F2cZLC8xaWHanTAdELR/N2KtfdTTsGF+seOpsunOhgIGpiYiKSkpLUDjz19aXpb5uycmmp2vXtbGkCN1I/MAyDPi0nck4TAgD/Pl2Bub0OUqcYHeGdgI4cOYKFCxciIiJC7XYMw6C8vJzvaUgjIGUlate3tPSso0gIqV7fVpNVJiAA+P3++5jVYy8NstcBXnd3T548iXHjxiEiIkLtWKDKY4JI0xWXe1flOjMja7S17VuH0RCinrGBEPN8Dqtcn1+agX2PP6v2ixWpHq8EtGbNGoXBpoSoE/b8jMp1M3v8SXOukHrHxNBc7fq43HsIif21jqJpvHg1wd29e1eeeBwcHNC7d2+IRCIYGFAfeaLsWdYlzuWtrbqondeFEH0KcJuHU9Hfqlx/K+UgejiNhci0ed0F1cjUqBOCvb09Hjx4gGbNqFw54RaVdUPlOg9b6k1E6q9ODkPUJiAA+PnOG5jf+xiMDEzrJqhGhlcTXOfOFX3hu3XrRsmHqBWRfVXluhaWHeowEkK0Y2Rggve67ax2u8sJe2o/mEaKVwKaPn06WJZFWFgYzftD1HqWeUXluhYWlIBI/WYjbIlBzu+q3eZm8n7qkMAT7wTk7++PlJQUjB8/vtqu2KTpKirPVbmOSuyQhqBXiwkwFqjvKJMgflBH0TQuvO4Bubu7o7i4WD4nUFBQECwsLGBnZ6e0LcMwiIqKqnGgpOFR1wXfWdS9DiMhhD8BY4CP+xzFL3feQnZxMuc2EZlX4SzqVseRNXy8ElBsbCwYhgHDMPIPmby8POTl5SltS920m67MIuXZcmVc6D8raWDe674L668O5Vx3O/UwXnadRZ93WqpxG4gsEXE9SNOWW6x6+oVuTqPqMBJCdGNCx9Uq1+15+GEdRtI48E5AVAGBVEvNlxATA7M6DIQQ3XC36Q2vZgGc61LynyIiS3WvT6KMVwKSSqUaPyQS/r1Dbt26heHDh8Pa2hrm5ubo06ePVvMPRUVFYcWKFRg1ahRatmwJhmHg4uLCOx6iHYmKIqTuNr3rOBJCdGeo6xylKb1lTkV9V8fRNGw1roZdW86fP4+AgACYmppi4sSJsLS0xMGDBxEYGIiEhAQsWLCg2mNcunQJX375JQwMDNCxY0ekpqqfkZPo1pMM7ikYerUYX8eREKI7RgamaGXZGfHie0rrCsqyUCYppoGpGtJZP1iWZVFYWKiTY5WXl2PGjBkQCAS4ePEifvnlF2zatAn3799Hu3btsGTJEsTFKc9aWJWvry+uXbuGvLw8PHz4EEZGRjqJj2gmOucm53IDhn4PpGFzt1V9FR+TE1qHkTRsNUpAqamp+Oijj+Dm5gZjY2NYWVXMkbFt2zasXLkSa9as4XXcc+fOISoqCpMnT0bXrl3ly0UiEZYsWYLS0lLs2rWr2uO4ubmhT58+EAqp2KU+lEq4v5CYGKgv9EhIfefl4K9yHd0H0hzvJrjr169j1KhRyMzMVKqMnZSUhNWrV4NhGPTr1w+DBg3S6tiyGVf9/ZV/yQEBFTcAL1xQPcMmqR+cLNojJf+p0nJ7M2c9REOI7giNrPBSm2m4FL9TaV1k9nVIWQkEDBVnrg6vK6CsrCyMGzcOGRkZAJTH+kyYMEH+84kTJ7Q+vqyygoeHh9I6R0dHWFhY1En1hZKSEojFYoVHY5JVlIhbyYdwK/kQisuVx3DVlLmRDedyqoBAGoO+LSfB2sRJaXlxeR5VRtAQr0+CrVu3IjU1VT4QtWqX6y5dusDe3h5AxZWStnJzK8q3iEQizvVWVlbybWrT2rVrIRKJ5I/WrVvX+jnrSlLeY+x+MAfnYn/Cudif8Ovdd1BYlsPrWKq63HPVx7I1bcXrHITUNwwjwLC28znXRWRSM5wmeCWgY8eOyX/eu3cvxowZo7SNp6cnWJZFZGQk7+D0bfHixcjNzZU/EhIS9B2SzoQmH0KJpED+vLAsB7/dnYG0As1/X/fTTuDn21Px3c2xOBPzIyTSMgBAdnEyQpMPITrnltI+qrqvEtIQtbbygqmhpdLy26mHaSykBngloIiICDAMg549e2LixImcE9FZW1sDqGiu05bsykfVVY5YLFZ5daRLJiYmsLKyUng0Fkl5j5WWFZbnYOf9mTgT80O1+0dn38LJqG+QW5KKEkkBbqf8i+tJfyMl7yl2P5iDs7E/ce4noOY30ogIGAO0tenDuW7vo+qHijR1vD4NioqKAADNm6ueCTAnJ6fiBALtTyG798N1nyc1NRX5+fmc94eI5vJK01Wuu51yGIniMLX730xWHhB8OWE3biYfUHs/iW7MksZG1cSKieKHiM5WbgUgL/BKQLa2tmBZFk+fKvdwAioKk965cwcAOCtkV2fgwIEAgODgYKV1p06dUtiG1I6gqM0ITT6EoMhNeJB2EuWVqhok54UjLvce537hmep7J1ITHGlsXK17qFx3JmZrHUbS8PBKQN7e3gCAyMhIfP311ygvL5evS0tLw7Rp05Cfnw+GYRTG8Wjq5ZdfhpubG/bu3Yt79+7Jl+fm5mLNmjUwNjbGm2++KV+ekpKC8PDwOumY0FhUNxYnqygBZ2N/woPnJxEUtQmnor6Vr7uTeoT3ecWlz3nvS0h9ZGRgipaWnpzrsouTFb68EUW8vo6OGTNGfnWyaNEihXUtW7ZUuPk2duxY7YMyNMT27dsREBAAX19fhVI8cXFx2Lhxo0JNt8WLF2PXrl3YsWMHpk2bJl+ekZGBTz75RP68rKwMGRkZCtts3LhR3mOvKdG2K3RY+ml0dxoNJ4v2SBI/4n3e/NJM3vsSUl952PbnvK8KAHG5d6n+oQq8roCmTZumcA+GZVn5WCCpVAqgYmyQh4cHpkyZwiswPz8/XL58Gf3798e+ffvw008/oXnz5vj77781qgMHAPn5+di1a5f8IZVKUVBQoLAsPz+fV3wNSW5xKi4n7MHZmJ/wvCAaAHcX6eqExG4HAOSUpPCOpY1VV977ElJfdWk2TOU6qoygGsPy7Cv45MkT+Pv7IykpSWkgKsuycHR0xJkzZ+DpyX1p2hDJet/l5uY2mB5x2UVJ+CNsXqUxPgymdN6MfY8XoVxaovXxFvY7rXJSLk30aTkRA52n896fkPrqRtIBhMT9wrnu495HYWzQsEuC1cbnH+8+sR07dsTDhw+xdOlSeHp6QigUQigUwtPTE4sXL0ZYWFijSj4NVVj6mSoDTFmcifmR1xUQAGQWxsPM0Jp3PF2av8J7X0LqM58WE2AvdOFc9+2NMWBZad0G1ADUqEuStbU1Vq1ahVWrVukqHqJjSXnK3anTCviXMYrIugop+CUvnxavw8a0Be9zE1KfMQwDP5f3cODJEqV1LKR4knkBnvZ+eois/qJRgY1YmaREZXdpvp5lXYFUWl79hlUYG5ihuyNNw00aN2dRV5XrgiI31l0gDUSNB2UkJiYiKSkJJSWq7yf4+vrW9DSEh3tp/+n8mCn54Vrv097uJfRvNRUiU9UDlwlpDAwERrAVtkZWkXLZrnJpKRLED9HayksPkdVPvBPQsWPH8Nlnn+HZs2dqt2MYRmGcEKk7sTm39R0CAGBM+y/0HQIhdaan01gER3/PuW5v2HzM8zkME0OaEwvg2QQXHByMsWPH4tmzZ/Jq2OoepO6VSUo4i4Gq4918uM7jcDBz1fkxCanPOjkMUbv+/vOgOoqk/uOVgL766iuF8T6k/rkYv0PrfTxs++k8jna2A3R+TELqM2MDISZ2+lrl+vOx2+owmvqNVxPcnTt35HMBOTk5oW/fvrC0VC5JTvSjsCwHoSkHtd7PWdQNXZu/qtN7R2U8xhoR0tA5i7rCXuiCjKJYzvXF5fkwNbSo26DqIV4JSDb9gqurK8LCwiAUNuwBVo2JlJXgj4fzeO1rKDBG31aT8TjjHEolhTqJp0xSpJPjENLQvOw6E/seL+RcFxK3HcPc59VtQPUQrya4Hj0qqr+6ublR8qlnEsVhyC5O4r2/lYkDXnFfAAsj2/8/16znmqf9YM7ljhbteMdCSEPmLOoGS2MHznX3045jb9iCJj84lVcCkhUgvX79Oh4/5i7AR/TjeUEUr/0sjF9Mm9HB3hcf9PgDc3ruxwfd96B3y8Bq93eyaA9X614KywSMIdxsfHjFQ0hDxzAM3umq+n5PgvgB7qedqMOI6h9eTXBDhw7Fpk2b8Mknn6BPnz4IDAxE586dYWNjw7l95akTSM2xLIubyf8gIuuyvAKvpbEDujR/hXe9qaoD6AwERjA3rvh9etj2w42kfWr3NxAY4ZW283E25idEZV+HyMQR/m5zYWFsyyseQhoDU0NL9Gk5EdeT/uZcfyr6O3R1fLWOo6o/eI8DMjExgbGxMfLz8/H777+r3ZYSkO7E5tzhbFfOK03HlYTdsBM68zruS63fVrmuhUUHmBvZoqBM9fTqAsYQlsb2GNN+mUJ1dEKaOg/bfioTEFBRX9HOrE0dRlR/8GqCO3ToEGbPno2SkhL5Bw2NAap9zzIvY//jxWq3ySyKU7uea0rsrs1fVVulgGEE8LDtq/a4pZU6G1DyIeQFJ4v2atc35ekaeCWgDRs2yH+mRFN37qb9Bxb8b1r6tnkbA53frbKUQSeHl6vdV9W89zLWpo684yKkMWMYAYa4zla5/lnWlTqMpn7h1QQXFhYm/5bbu3dv+TgggYBqm9ammpbWaWvTF3ZmbVAuLUHY89Py9ulWVp2r3VddkUUAaGPlXaPYCGnMujuOQmzOHURmX1Nal5IfjrzSDFgaN72ZmXklIDMzMxQVFcHLywtXr16lJpcGYHjbT+FgXlEWp1+rKejXSruZag0ERnAwc0V6YYzSuubmHlTbihA1GEaA8R1X4lzMz7jFMUg8MusaujmO1ENk+sXrksXPzw8sy0IkElHyaSC8mvnX+BiqasX5tJhQ42MT0hT0bDGec3lTbYbjlYBWrlwJMzMz3LhxAyEhIToOiVQnK6UIi/qfwaL+Z/Dbx3c4t4kPy8Wi/mewf/UjhY4H06ZNA8Mwah87d+5UPFZ8PGbNmoVA30/wud85fDHkPNZPuIwdn9xFyB+xsDV0r/Fr2rJlC95++2106dIFhoaGYBiG999WSUkJVq5cCQ8PD5iamqJFixZ477338Pz5c5X7lJaWYvPmzejZsycsLS1haWmJzp07Y/Zsxbb7kJCQat8/d/eavx+kcbIyceDslBCfew/F5fl6iEi/eDXB7du3D/3798fp06cxZMgQ+Pn5wcvLC9bW1pzbf/EFleOvqdziVM7lETezEHk7C217qB5vw/UHP336dLRq1Ypz+65du8p/vn//PgYNGoScnBz0798f/fy6Ibn0PjJT8hB7PwdPr2Uif34ZwD0ETGNz586tiNXJCQ4ODkhN5X691ZFKpRg9ejROnTqFPn36YPz48YiIiMD27dtx9uxZXL9+HQ4OiqPTs7OzMWzYMNy8eRP9+vXD+++/DwCIiYnBvn378MMPP8i3dXFxwfLlyznPfebMGVy5cgUBAQG8YidNg4dtP6TkP1VYJmUluJl8AL5tVA+HaIx4JaAVK1bIv+1JpVKcO3cO586dU7k9JaCai8kJVVpm42SKnLRinPwxErO391LZHCobrFrZu+++iz59+lR73vnz5yMnJwe7d+/G1KlTAQAl5QVILXgGG9OWeHQnCvb2Nb95+t9//6FHjx5wdHTEBx98gG3b+FUM3rVrF06dOoVJkybhzz//lL8nP//8M2bOnInPP/9c6djvvPMObt26hT///BOTJ09WWFd1LisXFxesWLGC89wHD1a07b/7btWehoS84GHbn7Na/bXEvcguSsKodkvAME2jQ1eNX6W6e0DUPVt3qn5jAgCHNuboFuCExHAxHpxNq5XzXrt2DdbW1vLkAwAmhuZwFnWDlUkz9O3bV+WVrzZGjBgBR8ead+X+9ddfAQBr165V+Nt8//334ebmhj///BNFRS/GLF2/fh2HDx/GG2+8oZR8AMDQULPvaDdv3kRYWBi6du2K7t271/BVkMbMTtgGtqbcrQ/hmRfw8HlwHUekP7wTEE1EV7fMjKw5l/u/6w5DYwGCf42CpJx7jJCrdU/e57Wzs0N+fj6Sk5M13kd2n6nqvaTaVlxcjBs3bqB9+/ZwdlasCMEwDIYOHYqCggKEhr64mty3r6LE0GuvvYaMjAz8/vvvWLt2Lf744w9kZmZqfO7t27cDoKsfUj2GYdTOvRUUtbkOo9EvXk1wO3ZoP9kZqRkDgTHn8k4ePTDpHXvs+fkwbhxOQr8JrZW2aW/nq7Rs+/btOHnyJOcxFy1aBFNTUwDA66+/js2bN2PAgAH44IMP8NJLL8Hb2xtmZmY1eDW1IyoqClKpFB4eHpzrZcsjIiLw0ksvAQBu374tX/bGG29ALBbLt7ewsMD27dsRGKi+GGtBQQH+/vtvCIVCTJmiXfd20jR52PXHjeT9KtayEJc8h5VJszqNSR94JaC33npL13GQarCshHP5655rMWJNMQ7/FYxzO2PQY7gTTMwUf60dOBLQb7/9pvJc8+bNkyegr776CllZWdi9ezcWLqyoQWdgYABvb2+MHTsWc+bMUWqCW7t2LRYtWgQnJydtXmKN5ebmAgBEIhHneisrK4XtAMh7xn322WeYMmUKli9fDltbWxw/fhyzZs3C1KlT0bFjR3Tp0kXleQ8cOIC8vDy88cYbOmmOJI1fC4sOatf/dHsKxrZfjnZ2jXtG4aZxp6sRkKpIQAwEsLGxwbwFHyI/uxQX/1KuBcd1Q/PatWsqm04rf4iamppix44diIuLw7Zt2zB9+nR4enrizp07WLZsGby8vBAdHa1wbCcnJ3To0EFlIqhPZFPLe3l5YefOnXBzc4O1tTWmTJmCdevWoaysDN9//73aY8iS+fTp02s9XtI4MIwAjubcV+oyJyI3Ir9UdQHgxoASUAOhauIq2RifRQu+gKiZCS79FY/87FLObWqiVatWeO+997B9+3Y8ePAAkZGR8PX1RWJiIj7++OMaH18XZAmv8hVOZbLmtcqJUfbzyJEjlTrUjBo1CgAU7hlV9fTpU1y+fBlt27bFoEGDeMdOmp4BrdW3JJVICnAn5XDdBKMnvBNQfHw8PvjgA7Rt2xZCoRAGBgacD017ERH1VF0BCf5/dWNmZob3FgSitEiCM7+/uCIxFJjAgDHSeTzu7u7yTgbquuDXJTc3NwgEAkRERHCuly2vfI+offuKMVJcTWeyZZV7zVVFVz+EL1ebnnA0Vz9j8LWkv+ooGv3glYCePn2Kbt264ddff0V0dDRKSkpqpTfcrVu3MHz4cFhbW8Pc3Bx9+vTB/v2qbtwpi4qKwooVKzBq1Ci0bNkSDMPAxcWFdzz6JFVRBbty89rnH26Co5slbh1NQmZSIQDAxtSp1solWVhY1Mpx+RIKhfDx8cHTp08RF6fYFMmyLE6fPg1zc3P07PmiV+DgwRVTiXPN7Ctbpupvpry8HLt374ahoSGmTZummxdBmgwBY4BR7ZfCxrSl2u0Ky7iv6BsDXgno888/R3Z2tnziMVWPmjh//jz69++Py5cv4/XXX8cHH3yA1NRUBAYGYtOmTRod49KlS/jyyy9x4sQJ2NraNuhq3ao6IVRmJbTH+jVfQ1LOImRHEgDA0UJ9O3N1Vq5ciYSEBI54WKxbtw4AMGCA4o3SlJQUhIeHq2wK0wVV53jvvfcAAIsXL1b48rNt2zZER0djypQpEApfzBo7YcIE2Nvb488//8TDhw/ly0tLS+UVD15//XXOGP777z+kpaVh+PDhOhnDRJoeG9MWmNFNfa/iqOzrdRRN3WNYHpcoDg4OyMqquDnGsiwsLS0hEolgYMB9ryEmRrmCsjrl5eXo0KEDEhMTcf36dXlpmNzcXPj4+CA2NhbPnj1TGutRVXR0NJ4/fw5vb28IhUKYmprC0dERsbGxWsUjIxaLIRKJkJubK+9RVdvKpaWIyr6Bw09XypdlpRRhw4QraNfbHk+vpyvt89JLL+Hy5csAKnosVh6PM23aNOzatUttKZ4+ffpg2LBhACqaocRiMXr27IkePXrA1tYWmZmZOH/+PJ49ewY7OztcvHgRnp6eSufYsWOHxlcG69atQ3h4OICKDhLPnj1DQECA/IN9zJgxGDNmTLXnkEqlGD58uLwUz8CBAxEZGYlDhw7BxcUFN27cUCrFc/jwYUyYMAEmJiaYMGECbGxscObMGTx69AjDhw/H0aNHOf+2R44cif/++w9Hjx7FyJFNr5Ix0Z2zMT8hNOUQ57q2Nn0xvuNKznV1qTY+/3jdoMnPryiaZ2pqihMnTmDgwIE6CUbm3LlziIqKwttvv61Ql0wkEmHJkiXyD5/qSvy4ubnBzc1Np7HpkrjkORLFYTA2EMLNxkeps0CppAj/PFmKBPFDzv0ZcF9lrl+/Hv37q59ATl037I8++kiegI4dO4YTJ07gwoULOHr0KNLT02FiYgI3Nzd88sknmD9/vk66W588eRIXLlxQWHbq1Cn5zy4uLgoJSBWBQIAjR45g3bp12LNnD7755hvY2tpi+vTpWL16tVLyASqS24ULF7B69WocPXoUhYWF8PDwwPr16zF//nzO5JOcnIygoCC0aNECw4dzVwknRFM9ncbhQVoQSqXK9xtjc2+jVFIEYwMhx54NG68rIE9PTzx9+hSDBw/G6dOndR7UkiVLsHbtWvz111+YOHGiwrrU1FQ4OTlh8ODBOHv2rFbHrU9XQIniMPzz5HOUSAoAAC0sPTG50yYYCF58J3iSEYKjz75Se5yF/XT//hNC6l5c7j38/ehTznX1YUxQbVwB8bopMnHiRLAsq1V5Fm1w9VaScXR0hIWFhcqeTrpUUlICsVis8NAFlmVxOWGXPPkAQHLeY9xNPaqwXXLeE52cjxBS/zmLumJal5841zXW+YJ4JaBPP/0Unp6eCA8Px6pVq+SD+XRFkxHttXmDW2bt2rUQiUTyR+vWymVu+OKqUH02VvGP70FakM7ORwip/5qZu8PKpLnS8qjsG5BIyzn2aNg0ugf0zjvvKC1r2bIlHj9+jBUrVuDXX39Ft27dYGdnp7QdwzBq7zfUZ4sXL8b8+fPlz8VisU6SUGFZDsqlpZzr8koyYGlij+ziZM72YEJI4yUrVHo75V+F5cXleUjMewhnUTc9RVY7NEpAO3fu5OxWzTAMWJZFYmIikpKSlNbLumlrm4A0GdFuY1PDGdA0YGJiAhMTE50es6hMjD0P56pcH5ldMTe8Jlc/nvaDdRkaIaQeaGfbXykBAcCzzCuNLgHpZD4gXQ90rFy1uKrU1FTk5+errHhc30Vl30BuierZPmVtvSn54dUey6uZ/mfejI2NBcMwNBCTEB1pZdUZQkPlm/x3Uo80umluNE5Amsz/o6sKCLJu3cHByhMzybrm6rrrd11JzlffsUA2N3xc7j2V22SlFGFR/zNwtekh/wJgbGyM1q1bY/LkyXjw4IGOo64b33//PUaMGAEXFxeYm5vD2toa3t7eWLFihXzcGV8zZ86Uv1eqpvs+efIkhgwZAmtrawiFQnh5eWHz5s2QSLgHAUulUmzZsgVeXl4QCoVwcHDApEmTlIqz1hZtKoVcvHgRn3zyCfz8/CASiehLQz0mYAzgbsM9W/H+J4vrOJrapVET3Pnz52s7DgUvv/wy3NzcsHfvXsydO1dhIOqaNWtgbGyMN998U759SkoKcnNz4eTkVO8rMGcWKlcVqEzKShCdfRNmhtYoLM9Ru62za2tMe7Pi/lx+fj6uX7+Ov/76C4cOHcLZs2erHQtU38iaagcOHAhHR0f5BHNffvklfv/9d9y8eZNXxYHTp0/j559/hrm5OQoKCji3+f777/HRRx/BysoK48aNg7W1Nc6cOYMFCxbg2rVrOHDggNI+77//PrZv345OnTph7ty5SE5Oxv79+xEcHIzr16/X6lX6+fPnERAQAFNTU0ycOBGWlpY4ePAgAgMDkZCQgAULFihs//vvv2PXrl0wMzNDmzZtdNajk9SOdnb9EZau/AU8Nuc2MgvjYWfWRg9R6R6vcUB1QdV/sLi4OGzcuFHhP5iqUfEZGRn45JNP5M/37NkDoVCICRMmyJdt3LgR9vb2GsWki37wZ2N+RmjKQbXbWBjbI780Q+V6WSUEvyG+OHdacfDm559/jq+++goDBw5ESEgIrxi1ERsbC1dXV6WKC3wUFxfL5yGqbNmyZVi9ejU++eQTfP3111odMzc3F507d0afPn2Qnp6OCxcuICUlRSGRJScnw83NDWZmZrh79668wkZ5eTkmTJiAI0eOKI1JO3/+PAYPHgxfX1+cPn0axsYVEwYGBQVh+PDh8Pf3VxhIq0t8KoWEhoZCKBSiQ4cOuHXrFvr27auT3xmpHWWSEmy+8Srnuk4OQ/Cqx8I6jqgejQOqC35+frh8+TL69++Pffv24aeffkLz5s3x999/K327UyU/Px+7du2SP6RSKQoKChSWyao61BVWRVHRytQln8q4RkZ/+OGHACqaZ4CKKs0Mw+DixYucx9i8eTMYhsGvv/4qX/b7779j9OjRcHFxgampKWxtbREQEFDrV8JcyQeomC4bACIjI7U+5kcffYSioiL88MMPKrcJCgpCSUkJ3n33XYUPbUNDQ3z55ZcAgJ9+UuwiL3u/Vq1aJU8+APDKK69g0KBBCA4ORnx8vNK5jhw5gpdffhk2NjYwNTVF586dsXHjRpXNfFxklUImT57MWSmktLQUu3btUtinZ8+e6NSpk8pyWaR+MTJQ3fnpUfoZPC+om2be2sYrAUVERGD37t3YvXu3fErjykJDQ+XrazJg1MfHB0FBQcjNzUVhYSFu3LjBOT3yzp07wbKsUpu2i4tLtfep6ro6tqp5fbRhZaxcTqYqWceQqVOnAgD++OMPzu327NkDExMT+Yc8AMyePRtpaWkYMmQIPv74Y7z66qu4du0ahgwZgiNHjmgUY0hICBiG0ckcOcePHwcAdO7cWav9jh07hl27dmHLli1o1kz19Maye0Kurq5K62TLrl69ipKSEvnykJAQmJubczZzBgRUdA6pWlpo8eLFGDNmDJ4+fYpx48Zh1qxZEAqF+PTTT5Uqfqgju7L19/fX+Nyk4RnR9jOV63bcfx+nor6tu2BqCa9acN9++y1+/vlnAMDNmzeV1hsZGWHatGlgGAYzZ87E1q1baxZlI1KTBNTS0hMTOq5GamImPsdhzm1+/PFHABXJG6i4n9KmTRv8888/2LJli0K38rCwMNy7dw8TJkxQmA/n8ePHSh/GKSkp6NmzJz799FOMHj2a92vQxC+//ILk5GTk5eXhzp07CAkJQbdu3RTGZFUnMzMTM2bMwJgxYzBp0iS128qaYLmK5sqWlZeXIzo6Gh07dkRBQQFSUlLQuXNnzisKrl6cp0+fxrp16xAQEICDBw/C3NwcQEXnnlmzZuHnn3/GwYMHMX78+GpfW32pFEJqV0d7PxyP3KBy/b204/Cw7Q83m151GJVu8boCunz5MliWhbu7O3r06KG03tvbG+3btwfLsrh06VKNg2xMVM3rowkzI2uYGlrKn0dGRmLFihVYsWIFPv30U/j6+mLlypUwNTXFV19V1JBjGAZTpkxBdna2/EpCZs+ePQCAN954Q2E515WAk5MTxo8fj4iICKW5drj4+PjgyZMn2L17t9av85dffsGXX36JzZs3IyQkBP7+/jh58qRWY79mzZqF0tJSpaYzLv7+/jAwMMBvv/2mMPVEeXm5vAkOAHJycgBoVqmj8nYA5F/CfvnlF3nyASp+P+vWrQPDMPjrL80mH6svlUJI7TIQGOKtLj+q3eZ0TMP+cs/rCigpKQkMw6Bjx44qt2nXrh2ePn3KOUC1KdNkXh9VBIzirysqKkr+AWlkZITmzZtj8uTJWLRoEby8vOTbTZ06FWvXrsWePXswbtw4ABVdiPfu3Qs7Ozulas7R0dFYu3Ytzp07h6SkJIWmJ6Dipn11U2GYmZmhQ4cOvF6nbArsjIwMXLt2DYsWLUL37t1x4sQJdOnSpdr99+3bh/3792P37t0a9ZpzdXXFkiVLsGrVKnh5eWHcuHEQiUQ4e/Ys4uPj0aZNG8THx9doPqnr16/D3Nwcv//+O+d6oVAon44iJycH3377rdI2K1as4H1+0jA5WnigpaUnZ+kuAMgpToZEWgYDge5nPa4LvBKQrAtndna2ym1k6/Ly8vicotGS1qAJzqBKAgoICMDJkyer3a9jx47o0aMHTpw4gezsbNjY2CAkJASJiYmYNWsWjIxe/PFGRkbCx8cHYrEYfn5+GDlyJKysrCAQCBASEoILFy4oJaTaYm9vj5EjR6Jr167w8PDAjBkzcOPGDbX7ZGVlYfbs2RgxYoT8/pcmVq5ciXbt2mHLli34+++/YWhoiAEDBij0fpPdR9KkUkfl7WRxVb2iqkrWRTwnJ4dzO1kCqi+VQkjd8LDtrzIBAcCd1GPo1WJcHUakO7y+0olEIrAsiwcPHsibJSrLzs7G/fv3AaDOJm5rKLh6wRkLhDA2MKt236rzBWlj6tSpKC0tlQ9UlDW/Vf2Q/uabb5CdnY2dO3fi9OnT+Pbbb7Fy5UqsWLGC9xVNTbVu3RodO3bErVu3UFhYqHbb+Ph4ZGZm4vjx40oz9MpuzDs5VUxTfu/ePYV933jjDdy4cQOFhYUQi8U4ceIE2rZti4iICNjZ2cmbJs3NzeHk5ISYmBjO3mtc92isrKxgZ2entkOM7H6Tqs4zMo25UghR5mHbT+36c7E/Yf3VoYjIutrgKiXwSkDt27cHUHF1M336dIWrnMrLGIZBu3btdBNpI8HVCcFQYAJ3m97V7lu1CU4bkyZNgqGhIf744w8UFRXh0KFDaNu2Lfr0URxxHRUVBQBKHQ1YlsWVK/orCZ+SkgKGYartRmxnZ4fp06dzPmTNcZMnT8b06dM5i+dW9c8//6CkpESp9+XAgQNRUFDA+Z7Ixv/4+vrKl/Xu3RuZmZk66RzQmCuFEGW2wlYwFFRfk/JQ+HKExG2vg4h0h1cCGjJkiPznw4cPw9nZGYMHD8bgwYPh7Oys0FW38raEuwmOYQTwsK2+agEL/t9umjVrBn9/f1y5cgXffvstxGKxUucDAPJ7O7IpvWXWrVuHsLAwjc9XWFiI8PBwzrEwXFJSUlQWtF2xYgXS0tLw8ssvK/Ti4zpH69atsX37ds6H7IvTpk2bsH37doXK5lyVAZ48eYIFCxbAysoKixYtUlj33nvvAagYJFta+qKyeVBQkLzjROX7ZHPnVhSgfeedd5CZmal0rtTUVDx5otn8T5UrhVS+ilNVKYQ0fGPbL9dou5vJ+5Fd1HDuu/P6Sv3ee+9h48aNKCoqAsuyyMnJkTdvyCpgAxU3VmX/UUkFFspNNgzDaNSVUpMCpepMnToVJ06cwPLlFX/MXAnogw8+wI4dOzB+/Hi8/vrrsLOzw/Xr13Hnzh2MGDFCqSedKjdv3oSfn5/GFRmePn2KoUOHok+fPvDw8EDz5s2RkZGBS5cu4enTp2jRooXSYFJtz6HOggULcOfOHfTq1Qu2traIiIjAsWPHIBAIcPjwYaVpOPz8/PDuu+9i+/bt6N69O0aMGIGUlBTs27cPtra22LJli8L2w4YNw7Jly7Bq1Sq0bdsWw4YNg7OzMzIzMxEZGYlLly5h9erVajv2yBgaGmL79u0ICAiAr68vZ6WQquPbLl++jO3bK74dp6eny5fJxs7Z29tj48aNPN89UtvcbHoh0HM99j2uvgLCjvsfYH6fY3UQVc3xSkAtWrTA1q1b5aPsK5NN0QBU1Ndq2bJlzaNsRLia4BgIYGJgBneb3ojKVn2T3c3ap0bnHj16NKysrCAWi9G3b1+4u7srbdOtWzcEBwfj888/x6FDh2BgYIB+/frhypUrOHr0qMYJSFsdOnTA/PnzceHCBfz333/Izs6GUCiEh4cHli1bhnnz5sHW1rZWzg1UdMUODw/HgQMHkJeXB0dHR0yZMgVLlizhfJ8AYNu2bfDy8sIvv/yC7777DhYWFhg7diy++uorzn1WrlwJX19ffP/99zh79ixycnLk95ZWrFiBKVOmaByvrFLI8uXLsW/fPpSVlcHLywvr16/nHKwdGRmpVB0hKipK3uTq7OxMCaiec7HujgV9jmPT9RFqtyuTFiM5LxwtLPVzz1YbNaoFd/jwYcyfPx+xsbEKy9u0aYNNmzZpNKiuIdFFLaRD4csRkXVVYZnIxBEf9NiD5wXR2PVgFqQqumrXh3nhCSH69Sj9DP6LWK92mxaWnpjq9Z1Oz1sbteD439UGMGbMGIwZMwZ37tyRl6B3c3ND9+7ddRJcY6TqHhAANDN3w+TOm3En5QjixQ8UasI5i7rB1brhjngmhOhGJ4chCE0+hNQC1R1akvMeI6c4BdamTnUYmfZqlIBkunfvTklHAxJpOdI4/mgElfqCtLT0REtLTwAV03NHZF2BhbE93G16w0Cgk18XIaSB83f7CLsfzlG7za9338anfasfJ6hP9bYadmNTXJ6HfY8XIr9UuQeU7AqoKksTe3R3Go12dv0p+RBC5Jws22Oq1xZ0dhiqchspK0F2cXIdRqU9jT7VBg8eDAAYNGgQvvjiC/lzTTAMg7Nnz/KLrhG5k3oUCWLumUpVJSBCCFGlhWUHtLDsgMEuH+D7W9z32y/F78CodkvrODLNaZSAZKX1ZVWDZc+rU7lLdlMXn6t6mmwBXYgSQngSGlnBw7Y/IrKUB0U/yQjBwDbvQmTaXA+RVY8++epIXO4dlesYLUvsxMbGKpWZqfqoXCLJxcVFYZ2JiQkcHBzg4+OD2bNnKw06VYxN8biGhoZo3rw5Xn31VZw5c0aruFUpLCzEpk2bMHnyZHTo0AECgQAMwyj1rtSUWCzG/Pnz4ezsDBMTE7i4uODTTz9VOfmgVCrFli1b4OXlBaFQCAcHB0yaNEnesYbLqVOnMHDgQFhaWsLKygp+fn716kq/Mb4motpgl/dVrjsXu60OI9GOxjcWqvbWbmg1h+ozAc8mOHd3d87BpIDy7KIGBgb4/PPPAVRMM5CdnY2HDx9i27Zt+PHHHzFy5Ejs2rWLs4ilnZ0d5sypuOFZXFyMR48e4fjx4zh+/Dj27t1b7Xw71Xn+/Ll86nRnZ2fY2NggKyuL17EKCgowcOBA3Lt3D/7+/pg0aRLu3r2LjRs34sKFC7h48aLSe/P+++9j+/bt6NSpE+bOnYvk5GTs378fwcHBuH79ulJdtT/++ANTp06Fg4ODfCDnvn37MHToUOzfv19hynd9aYyviahmbeqE9na+eJqpPPPxs6xLYFlp/WzqZzUQGxvLxsbGsunp6QrPNX00Frm5uSwANjc3V+t9d9ybya67MoTzsev+HK2OFRMTwwJgAwICNNre2dmZNTEx4VwXGxvLvvzyyywAduDAgaxEIlFYD4Bt37690n5//fUXC4B1dnbWKnYueXl5bHBwMJuZmcmyLMsGBASwANiYmBitj/XFF1+wANiFCxcqLF+4cCELgF2zZo3C8nPnzrEAWF9fX7akpES+/MSJEywA1t/fX2H7rKws1tramrW3t2cTEhLkyxMSElh7e3vW3t6eFYvFWsddneXLl2v8njSU10R0K7soWeVnTJL4cY2PX5PPP1U0SonOzs5wdnaW3wOSPdf0QQB1d8LSCiLrLI6qnJ2dcezYMXTs2BEXLlzAP//8o9F+gYGBMDc3R1xcHDIyMqrfQQ0LCwsMHTq0xpUOWJbF9u3bYWFhgWXLlimsW7ZsGSwsLOTlaGR+/fVXAMCqVatgbGwsX/7KK69g0KBBCA4OVqg1d+DAAeTk5ODDDz9Eq1at5MtbtWqFOXPmICMjA//++69SbA8ePMDEiRPh5OQEY2NjODs748MPP+SsC1dTdfWaSP1ibeoEQ4Ex57pnHPeH6gNe12Rubm5wc3NDly5dUFZWpuuYGiWJmonopGx5HUaiTCgUypvA9u3bp/X+hoaKLbmDBg0CwzA1rs+mrYiICCQnJ6N///4Ks44CFVMo9O/fH9HR0QqznoaEhMjXVRUQEAAA8jqHsu2BitI9mmwPAEePHoWPjw+OHj2KQYMGYd68efDy8sLWrVvRt29ftfNq8VEXr4nUTzO67eBcfiNpH0olRXUcTfV4DS5JSUlBaWkp/Pz8FCYzI6qlF6q++esi4jeIVzYld1XDhg1TmmahOoMGDQIA3Lp1S6Pt//77bxQUFKBTp06wtrbW6ly1hWsenso8PDxw6tQpREREoHXr1igoKEBKSgo6d+7MOc0D17w76s7BtX1mZiamTp0Ke3t7XLlyRaFF4O+//8akSZPwxRdfKBUv5asuXhOpv6xMmqm8F3Tk6Wq85vmVHqJSjVcCcnZ2RkREBHWx1lBhWY7a9a2svNSuV6XylNyVWVtba52AWrRoAQCczWkZGRnyRFe5E4KFhQV++uknpe13796NwsJCtGnTRqsYako2Q2jlmUgrk9Wvkm2n7fbV7cO1/e7duyEWi7F161al5uiJEyfi66+/xt9//62zBFQXr4nUb+1s+3MmoOicm5BIy+vVoHZekYwfPx5r167FnTt3IBaLadbTaqQXxqpc52TRAd0cX+V1XE2n5K6pzMxMpURnYWGB06dPcya6uk489dn169cBADdu3JBXnq6suLgYGRkZyMjIkN9jHTRokMomL9msrJUtX76c80qYNE1uNqqr5ieIH8DFuv6UTeOVgJYsWYL//vsPYWFhCAwMxC+//KI0Xwp5QVV1awCY3HmTyhuHdSk5uaJkh4ODg9K69u3bIzy8Yi6inJwcHD58GDNnzsTYsWMRGhpab6bckH2DV/VtXTbpnGw7bbevuk/VGVW5tpd1J686l1FVBQUF8gQ0bdo0eZOoTEhICC5cuICPPvpIqcmz8rZ18ZpI/WZqaAFjAzOUSpSnr9/3eCEW9juth6i48UpAI0eOhIGBAViWRXBwMNzd3eHi4oIWLVpAIFDs10CleABGRR84T/vB9SL5AC9uRPfqpb7itrW1NaZNmwaJRIJ3330Xs2fPxuHDh2s/QA1Ud7+i6r0Oc3NzODk5ISYmBhKJROmeCde9EQ8PD4SGhiIiIkLpw5pre1nrwMOHD9G5c2eNXodsHE5lK1aswIULFzBv3jylyeYqq4vXROq/t7r8gF/vvs25LibnNlyte9RxRNx49YILCQnB/fv35ZPPlZeXy2d1vHDhgvwREhJS5z2h6iNVV0CeDprX1KtNRUVF2LRpEwBoPKj0nXfeQffu3XHkyBFcvXq1+h3qgIeHB1q0aIErV66goKBAYV1BQQGuXLkCV1dXhav1gQMHytdVderUKQCAr6+vwvYAEBwcrHJ72TYA0Lt3bwDAtWvX+L4srdX2ayL1n62wFZwsuCekOxX1bd0Go0aNh8ZWLtNCuLFQngMIAARaluCpDfHx8Rg5ciQeP34MPz8/jBs3TqP9GIaRT+1ddcxNfHw8wsPDUVio3ASgK1znYBgG7777LvLz87Fq1SqF7VetWoX8/HzMmDFDYblsyvhly5ahtLRUvjwoKAghISHw9/dX6Dzw+uuvQyQSYcuWLUhMTJQvT0xMxNatW2Fvb4+xY8fKl7/99tuwtLTE0qVL8ejRI6XXUVhYKL9PpCu1/ZpIw9CzBff/5dySVEik+h36IcO7OwRLpXg0puq9YuqwFF95ebn8RrVEIkFOTg4ePHiAK1euQCKRYPTo0di5c6dWXyRGjRqFHj164Ny5c7hw4YL8W/Kbb76JCxcu4Pz580r3MlT55JNP5D3wHj58KF9mYWEBAHj33XcxYMCL2WBVneOzzz7DkSNHsH79ety9exfdu3fHnTt3EBwcjF69emHevHkK5/Xz88O7776L7du3o3v37hgxYgRSUlKwb98+2NraKvVOs7GxwdatWzF16lR0795dPv31vn37kJmZiX379sHS0lK+vYODA/766y+89tpr8Pb2xrBhw9ChQweUlJQgNjYWFy5cQL9+/XTamaS2XxNpGDxs+qlcV286I/Apn1BXpXhu3rzJvvLKK6xIJGLNzMzY3r17s/v27dPqGMXFxeyXX37Jtm3bljUxMWGdnJzYGTNmsGlpaVrHw7cUxbPMK5zlMeJy7mkdA8vyK8UDQP4wNjZm7e3t2V69erGzZs1iL1++rHJfqCjFI3Ps2DEWAPvSSy/Jlw0cOJAFwJ4/f17j11Q1xqqPHTt2KGyv7hw5OTnsvHnz2NatW7NGRkZsmzZt2AULFqgsJyORSNjvvvuO7dSpE2tiYsLa2dmxgYGBbGRkpMp4g4KC2Jdeeok1NzdnLSws2IEDB7KnT59WuX14eDg7ffp01tnZmTU2NmZtbGxYLy8vdu7cuezNmzerfX+0KcVTV6+J1H+X4nZxfvYER32v9bFqoxQPw7L181Lm/PnzCAgIgKmpKSZOnAhLS0scPHgQcXFx2LhxIxYsWFDtMaRSKYYPH45Tp06hT58+GDhwICIiIvDvv//C1dUV169f5+z1pQrfOdHPxW7DrWTlEjeTO29Ga55jgAghpDpSVoLvboxFqVSxCoKFsT1m9dirVYsH388/dephedSK5qIZM2ZAIBDg4sWL+OWXX7Bp0ybcv38f7dq1w5IlSxAXF1ftcXbt2oVTp05h0qRJuHr1KtatW4eDBw/ixx9/RHR0tLw6dG2LyQnlXK6uezYhhNSUgDFAO7uXlJbnl2YgteCZHiJSVOMElJiYiBs3buDixYsqH9o6d+4coqKiMHnyZHTt2lW+XCQSYcmSJSgtLcWuXbuqPY6sKOPatWsVMv37778PNzc3/Pnnnygqqv36SMYCIedyK5NmtX5uQkjT1s5OuSYgAERk6r9AKe9OCEeOHMHChQurrRHFMAzKy7XrcaGL4ojFxcW4ceMG2rdvr1QChWEYDB06FNu2bUNoaCheekn5G4IuSFkJkvOeIDn/Ced6axPHWjkvIYTIuIh6wEhgijJpscLyZ1lX4ev8jp6iqsDrCujkyZMYN24cIiIiwLJstQ9tqRv85ujoCAsLi2oTX1RUFKRSqdrClJXPVRtORG7En2Efq1xfLyeIIoQ0KkYGJpwDTzOL4pBVlMixR93hdQW0Zs0asCwrH/+j634MmhRUrK44Ip+ijFWVlJSgpKRE/lxWliQ1NVVpoCPnOUo9IBVzD0BkIEBKSkq1xyCEkJqyl3gjXHxPaXnos7Pwaqbc0sQlLy9Px1HxTEB3796V31NxcHBA7969IRKJOMu/N2Rr167lrDa9Y8cOpWmdVeumcs0vN37hGRkhhGhL+bPoGmJxDZp9DhUXF1e/kZZqVJfb3t4eDx48QLNmur2ZrklBRRsbmxofo/J2XBYvXoz58+cr7NO6dWv56HZNnIz8FqkFTznXTfNWnsqAEEJqw6mob5GS/+KzyEBghJYWnTDI5V2NqrLk5eVh3bp1Oo2JVwLq3Lkzbt68iW7duuk8+QCK92d69FBsu0xNTUV+fj58fFSXHAcqZm0VCAQaF6bkYmJiAhMTE6Xljo6OGveD90IfPI+5w7nOyclJo2MQQkhNeaEvchMi0NamDzxs+8HFugeMDbh76HKpOsuwLvC6Cz59+nSwLIuwsDCFeyS6ooviiEKhED4+Pnj69KnSmCGWZXH69GmYm5ujZ8+eOoqam7pyGIQQUle6NHsFc3ruxwiPz9DOboBWyae28E5A/v7+SElJwfjx43Xek+zll1+Gm5sb9u7di3v37smX5+bmYs2aNTA2Nsabb74pX56SkoLw8HCl5jZZUcbFixcrdJTYtm0boqOjMWXKFAiFtftLEJk251xuZmhdq+clhJDKjAxM6tVsqADAqxSPm5sbiouLkZqaKu+MYGFhoTSXCFAx5oZrJsjqaFOKZ9q0adi1axd27NihMJcKVymeyMhIHDp0CC4uLrhx40adlOK5lXwI52IV7/e0sx2AsR2Wa3wMQgjRp9ooxcMrHcbGxip1wc7Ly+Pspsd3mgY/Pz9cvnwZy5cvx759+1BWVgYvLy+sX79eXq23OgKBAEeOHMG6deuwZ88efPPNN7C1tcX06dOxevVqrZJPTfRwGo2IrCtIED8AUFGHaUDrN6vZixBCGjdeV0ACgUCjxCIbKySRNI6aZzX5BsCyLBLEDyBhy+Bo3g5CI918gyCEkLpQb66AAJoPSFsMw6CNyFvfYRBCSL3BKwFJpdwzfBJCCCGaomJkhBBC9IISECGEEL3QqAnu6NGjAICWLVsqVSZQ5Z9//sHjx48BAF988QXP8AghhDRWGvWCk/V6Gz9+PPbv3y9fPnv2bAQFBXGO9Xnttddw8ODBRtULLjs7G7a2tkhISNBZLxBCCGkIZLUws7Kyqq3FqakaDYt9/vy5fExQUxAZGQkAaN26tZ4jIYQQ/YiMjESvXr10ciy6B6SFtm3bAgAePXqEhIQEXo8hQ4bAzs4OCQkJMDQ0lC/j2k72s52dncJzQ0ND+fOq/3KdZ8iQIfJH1W0qb8d1nMrruGKsHEvV/SrHZmdnJ19W9bxc8cl+Vvfaq76Oqu9Z5eNXPW7l43O9Vq73V1WMsn9lv8/Kr1N2TAAqj8u1fdXXpur3oy7Wqq9L9t5xreM6h+z1cL1+rrgqvw5Vfy+q3lNDQ0PO167ub6rqQ9X5Vf29Vf1/osnfS9V9VcWq6TG4/q+peg2q/m9X/VtX9dmg6vei6ePRo0cKn4O6UL8KA9VzsvmOWrVqxbsJTigUwtDQEK1atYJAIECrVq0gFArRqlUrpe1kywwNDRWeCwQC+fOq/3Kdp3K9u6rbyI4vW171OJXXcb2WyrFUVjlmWSyVz1n52FzxyfZV99qrvo7K+8vOV/W9qfp+VX59XO9D5X9VxSj7V/b7lMVc9Zhcvy/Ze8O1feXXpur3oy7Wqq9L9t5xreN6j2Svh+s95oqr8uvg+ptR954KBALO1171b5Fr36rrq56/6ntbeZvK/0/UvRdc7y3XdlyxV/f7qRy/qvVVj1d526p/61XjU/UZoS3ZFDa6nPeNroAIIYToBSUgQggheqFVE1xhYSHi4+MVnsskJCQolOepvI4QQgipSqsEFBQUBFdXV6XlLMvCxcVFVzERQghpArRKQOqGDFFxUkIIIdrQKgFpO96HkhIhhBBVNE5AlEwIIYTokkYJiKZfIIQQomvUDZsQQoheUAIihBCiF5SACCGE6AUlIEIIIXpBCYgQQoheUAIihBCiF5SACCGE6AUlIEIIIXpBCYgQQoheUAIihBCiF5SACCGE6AUlIEIIIXpBCYgQQoheaDUfUFMnkUgAAGKxmPcxysrKIJVKIRaLwbIsxGIxysrKlI5ZeZlUKlV4zrKs/HnVf7nOU1ZWJl9edRvZ8WXLqx6n8jqu11I5lsoqxyyLpfI5Kx+bKz7Zvupee9XXUXl/2fmqvjdV36/Kr4/rfaj8r6oYZf/Kfp+ymKsek+v3JXtvuLav/NpU/X7UxVr1dcneO651XO+R7PVwvcdccVV+HVx/M+reU5ZlOV971b9Frn2rrq96/qrvbeVtKv8/UfdecL23XNtxxV7d76dy/KrWVz1e5W2r/q1XjU/VZ4S2ZPvKPgd1gWFpoh+N3bp1Cz4+PvoOgxBC9ObmzZvo1auXTo5FCUgL2dnZsLW1xVoA1gAMUHEJyfz/ZwaAMSraNQX/Xyb4/3LZMlT5l+FYJvuZUbEPKq3H/89TdVnl7bj2qbqcz3NtllWdS1eTbQAABgbKywwNtXsuPynHWbm21XQZV2zqlquKS9vlqs6hq/NWPY42r12bc2nyu+VzzqrPtfk9afq759qf72tUF291r6Xyetk6dcevug3XuQwNXyw3MKh4bmICMcui05AhyMrKgo2NjfLr4oGa4LRg8P9fii0AG1S8eZUTkAAvEpBBpWWVHwB3AjKotIwrGWmagLi20+RnPs9rsowzAXFN+c6VNKouq+65TE2SjTYfTLW9vK7jqa1zaXNcbY6t6RcSXf+e+R5P3XM+22qzjap1VX82NYX4/9cqBqoSOg/UCYEQQoheUAIihBCiF5SACCGE6AUlIEIIIXpBCYgQQoheUAIihBCiF5SACCGE6AUlIEIIIXrBayBqYWEhMjIyAACWlpZKo2KzsrKQn58PALC3t4eZmVkNwySEENLY8LoCWrNmDVxdXeHq6oqQkBCl9ZcvX5avX7t2bU1jJIQQ0gjxSkDnz58Hy7Kwt7fHmDFjlNaPGjUKzZs3B8uyOHfuXE1jJIQQ0gjxSkDR0dFgGAbdu3fnrt8FwNvbGwAQExPDPzpCCCGNFq8ElJWVBeDFnCtcZOtk2xJCCCGV8UpAZmZmYFkWYWFhnElIIpEgLCwMAGBqalqzCAkhhDRKvBJQ69atAQCpqamcnQzWrFmDlJQUMAyDNm3a1CxCQgghjRKvbtgDBgyQX+F88cUXOHfuHAYOHAgAuHDhgkLPuAEDBtQ8SkIIIY0OrwQ0Y8YM/PzzzwAq5nIPCQlRSDqVJ1mdPn16zSIkhBDSKPFqguvWrRtmz54NlmXlveBYlpUnHtmyDz74AD169NBRqIQQQhoT3qV4vv/+e3z00UcQCAQKVzyypPThhx9iy5YtOgmSEEJI48OrCQ6ouMr55ptvMGfOHBw5cgTR0dEAADc3N4waNQpt27bVWZCEEEIaH94JSMbd3R3z58/XRSyEEEKaEKqGrYXKTY2EENIU6fJzUKMroJUrVwIAPD09MWHCBPlzTX3xxRfaR1YP5eXlAQCGJySgVatWeo6GEEL4SUpKQsuWLbXaR5yYCKDic1AkEukmEFYDDMOwAoGAfe211xSea/rg6+bNm+wrr7zCikQi1szMjO3duze7b98+rY+TlpbGzps3j23bti1rYmLC2trasn369GF//PFHrY6Tk5PDAmBzcnK0joEQQuqLvXv3ar1PbXz+1fgeUDXJTWWx0uqcP38eAQEBMDU1xcSJE2FpaYmDBw8iMDAQCQkJWLBggUbHuXfvHvz9/ZGdnY0RI0ZgwoQJyM/Px5MnT3Ds2DHMnDlT45hkr4XvayKEkIaqNj7/GJatvkFPIKi4VTRhwgTs379f/lyjEzAMJBKJVkGVl5ejQ4cOSExMxPXr19G1a1cAQG5uLnx8fBAbG4tnz57B2dlZ7XHEYjG8vLxQVFSEM2fOoEuXLkrnMTTUPAeLxWKIRCLk5ubCyspKq9dECCH1RUpKCpycnLTapzY+/zT69N2xYwcAwMXFReF5bTl37hyioqLw9ttvy5MPAIhEIixZsgTTpk3Drl27qr239OOPPyI+Ph6//fabUvIBoFXyIYSQxiI+Pl7rBFQbNPoEfuutt9Q+1zVZWR9/f3+ldQEBAQAqas5VZ9++fWAYBuPHj8fTp08RHByMoqIidOjQAcOGDYOxsbFO4yaEkIYgOjoavXv31ncY/MYBvfPOOwAAAwMD/PjjjzAyMtJpUBEREQAADw8PpXWOjo6wsLCQb6NKaWkpHj58CAcHB2zZsgXLly9XmDrCzc0Nhw8fhpeXl05jV6WwuAT5hcVoZquj3iOEEMJTfWn94TUOaM+ePdi1axfCwsJ0nnyAins9AFR29bOyspJvo0pWVhYkEgkyMzOxcuVKbNiwAWlpaUhMTMSyZcsQExODkSNHori4WOfxc3kUlYjY5PQ6ORchhKjz2muv6TsEADwTUPPmzQEAdnZ2Og1Gl2RXOxKJBLNmzcKCBQvQrFkztGzZEitXrsRrr72GuLg4/PPPP3UUEQ1iJYTUDwcPHtR3CAB4JqAhQ4aAZVk8fPhQ1/EAeHHlo+oqR9YbQ5NjAMCoUaOU1suWhYaG8g1TKwyo6zYhpH4oLS3VdwgAeCagFStWwMrKComJiVi6dKnOS9TI7v1w3edJTU1Ffn4+5/2hyszNzeUjfa2trZXWy5YVFRXVLFhNUf4hhNQT1Q1hqSu87kTt3r0bgwYNwtGjR7Fu3TocOnQIL730Elq0aME5RkjbUjwDBw7E2rVrERwcjIkTJyqsO3XqlHyb6gwePBh79uzB48eP0b17d4V1jx8/BvCia3ltq7gComY4Qoj+ubu76zsEABoORK1KIBAoTEQHqB8dy2cgavv27ZGUlKRyIOrTp0/lySMlJQW5ublwcnJSaHq7evUq+vfvj06dOuHy5cvyq57U1FT07NkTKSkpePLkCdq1a6dRXDUZiHXnSTTKJVL4dKZpKggh+vXXX39h0qRJWu1TGwNRa1wNm2EYlcmHb9OcoaEhtm/fDqlUCl9fX7z33ntYsGABvL298ezZM6xZs0bhymXx4sXo2LEj/v33X4Xj9OvXD/Pnz8ejR4/QpUsXzJ49G++99x68vb2RlJSE1atXa5x8akr2HkmpojYhhACowXxAur7vU5Wfnx8uX76M5cuXY9++fSgrK4OXlxfWr1+PwMBAjY+zadMmeHl54YcffsDOnTvBMAy6deuGn3/+GWPHjq3FV6DIzNQEufmFKCgqhqWZsM7OSwghVQ0YMEDfIQDg2QS3a9curbav7coJdaUml6BxKelIy8xF29aOsBVZ1FKEhBBSvdu3b6NHjx5a7aO3WnBVNZaEUpcM/t85QyKrxjBtGiBL5EZGQJs2wJtvAkuWAPVklDIhpHF69uyZ1gmoNvD6pLt48SIAwMHBAR07dtRpQI2V7B6QRPKiHBCGDQN27ABKSoATJ4DZsyuS0eLFeoqSEELqDq9OCIMGDYKfnx+WL1+ucpvp06ejWbNm8qoJpIKkUj06mJgAjo6AszMwcyYwZAhw9CiQnV1xNWRjA5iZAa+8AlQeExUXB4wcWbHe3Bzo1KkigRFCiAa07QFXW2rcC04VsViMjIwMZGRk1NYpGiSFK6CqhEKgtLSieS40tCIZXbsGsCwwfDhQVlax3ezZFVdNFy8CDx8C69cDFnRfiRCimSNHjug7BAA16AVXnTqrMNDAFBRxFD9lWeDsWeDUqYqrncOHgStXgH79Ktb/+SfQunXF8tdeA+LjgfHjAVklbze3ugqfENIIFBYW6jsEAFokINl9n8rS09M5lyclJeHSpUsAoNXsqU1BcWnZiyf//Vdx5VJWBkilwOTJwLhxFcsrz9VhZwe0bw88eVLxfO7ciia74OCKZrvx4wGOCfcIIYRLq1at9B0CAC0S0KBBgxQGnLIsi4sXL8LPz0/tfra2tvyja4QUBqL6+QE//QQYGwMtWlT0fjt6tPqDvPsuEBAAHD9ekYTWrgU2bQI+/LD2AieENBqenp76DgEAj3tAlYcNsSyr8gFU9Pzq27ev7qJtBFhppQRkbg60bVvRBVvW9bpjR6C8HLhx48V2mZnA06dA5T+a1q2BDz4ADh0CFiwAfv21bl4AIaTBCw4O1ncIALRMQNqMWWVZFpaWllixYoW2MTVq0koJmpOHBzB6NDBjBnD5MnD/PvDGG0DLlhXLAWDevIr7RTExwJ07wPnzFYmLEEIaEI2b4N588015E9yuXbvAMAycnZ2VqlIzDAOhUIgOHTrgtddeg6Ojo24jbgTKJVKonUd2xw7go4+AV1+t6BXn61vRzVo2+6xEUtETLjERsLKqGE/0zTd1ETohpBGoLy1TNaqGPX78eOzfv7824qqXalKKIul5FpKeZwEA3Fo1h721ZW2ESAgh1bp//z68vb212qfelOKRXQ316tVLJ0E0FbIZgfIKiigBEUL05vHjx1onoNrAKwHt3LlTaRnLsigqKoKZmVlNY2r0ssX5cG3ZTN9hEEKIXtVoIGpqairWrl2LY8eOISEhASzLory8HNu2bUNaWhoMDQ2xZMkSXcXaaJRLpCgtK4exERUdJYTUvddee03fIQCoQQK6fv06Ro0ahczMTKVZUWWTvTEMg379+mHQoEE6CbYxycgRo4UDjZEihNS9kydP4tVXX9V3GPxqwWVlZWHcuHHyOm9VZ0SdMGGC/OcTVCSTU1Zuvr5DIIQ0UXl5efoOAQDPBLR161akpqaCYRiFgacyXbp0gb29PYCKKyWirLC4FNliSkKEkLpXX4bH8EpAx44dk/+8d+9ejBkzRmkbT09PsCyLyMhI3sE1dgmpmbU+tTkhhFTVvXt3fYcAgGcCioiIAMMw6NmzJyZOnAgDAwOlbaytrQFUNNcRbsWlZUjLzNV3GISQJqa+3BrhlYBkUy2om2wuJyen4gRUDVut+NQM5OQV6DsMQgipc7yyg62tLViWxdOnTznX5+Xl4c6dOwAAOzs7/tE1ERHxqSgtK9d3GISQJqK+FBHglYBkI2gjIyPx9ddfo7z8xYdnWloapk2bhvz8fDAMg65du+ok0MaMZVlk5taPXimEkMavuJhjYkw94DUOaMyYMfJy3osWLVJY17JlS4Ub62PHjq1BeE1Hbl4hnOxt9B0GIaQJePjwITp37qzvMPhdAU2bNg0eHh7y5yzLyscCSaVSABVjgzw8PDBlyhQdhNn4iQuKqBmOENKk8EpApqamOHz4MFq0aKGQfADIxwY1b94chw4dgomJic6CbewiE1L1HQIhpAmoLy1TvLuodezYEQ8fPsTSpUvh6ekJoVAIoVAIT09PLF68GGFhYfVm2teGIr+wGCkZ2foOgxDSyIWEhOg7BAA1LEZqbW2NVatWYdWqVbqKp8lLSM1Ec1sRdV8nhNSa7Oz68UWXPuXqoZik5/oOgRDSiMlKpelbjecDSExMRFJSEkpKSlRu4+vrW9PTNCmZufkQWebRpHWEkFpRX6bk5p2Ajh07hs8++wzPnj1Tux3DMArjhIhmYpOfQ2RhBiND5TJHhBBSE8eOHcOkSZP0HQa/Jrjg4GCMHTsWz549k1fDVvfg69atWxg+fDisra1hbm6OPn36YP/+/byPl52djZYtW4JhGAwbNoz3ceqCVMoiLDIe5RKJvkMhhJBawesK6KuvvoJUKgXDMPJu17p2/vx5BAQEwNTUFBMnToSlpSUOHjyIwMBAJCQkYMGCBVofc86cOcjNbTjFP8vKJYhOfA731s1hQJ0SCCE60q1bN32HAIBnArpz54488Tg5OaFv376wtNTd/Yry8nLMmDEDAoEAFy9elJfz+eKLL+Dj44MlS5ZgwoQJcHZ21viYBw8exN69e7F161bMmTNHZ7HWtpy8Atx/GouOrq0gNDXWdziEEKIzvBKQbPoFV1dXhIWFQSgU6jSoc+fOISoqCm+//bZCLTmRSIQlS5Zg2rRp2LVrF7744guNjpeeno6ZM2di6tSpGDFiRINKQABQLpHiUXQC7K0t0bKZLYwMa9x3hBDShN29excdOnTQdxj87gH16NEDAODm5qbz5AO8GCTl7++vtC4gIAAAcOHCBY2P98EHH8DAwADfffedTuLTB6mUxfMsMR48i0d+Yf0oJEgIITXBKwHJCpBev34djx8/1mlAQMWEdwAU6s3JODo6wsLCQr5Ndf744w8cOnQIP//8M2xsGn6xT4lUisfRiUjJyKbZVAkhvIwcOVLfIQDg2QQ3dOhQbNq0CZ988gn69OmDwMBAdO7cWeUH/JtvvqnV8WUdBUQiEed6KysrjToTJCcnY+7cuZg0aRJGjx6tVQz1XUJqJvILi+HSohl11SaEaOXatWsYOnSovsPgPw7IxMQExsbGyM/Px++//652W20TkK68++67MDIywvfff6+X89e2bHEBcvJi4N7KEbYiC32HQwhpIDIyMvQdAgCeCejQoUOYPXu2vBs2AJXNQZUrZWtKduWj6ipHLBZX25y2a9cuBAUF4cCBA/Wm7ERtYFkgKjEVDOMEa0szXu83IaRpqS+3I3jdA9qwYYP855oONuUiu/fDdZ8nNTUV+fn5nPeHKrt79y4A4LXXXpMnSoZh4OrqCgA4depUo5mxlWWBiPgUhMcmQ0r3hQgh1Rg0aJC+QwDA8wooLCxM/k27d+/e8nFAuqrgPHDgQKxduxbBwcGYOHGiwrpTp07Jt1Gnb9++yM/PV1qen5+Pffv2oVWrVggICECbNm10EnN9kFdQhAdP4+DaqhlEFmb6DocQUk/9+++/9aIUD8PyuHxp1qwZMjMz4eXlhbt37+q82ae8vBzt27dHUlISrl+/Lr9Kyc3NhY+PD2JjY/H06VO4uLgAAFJSUpCbmwsnJyeVHRdkYmNj4erqioCAAJw8eVKruMRiMUQiEXJzc2FlZaXVvknPs5D8PAt1dX3iYGOF1s3tYEgdFAghVfz1119aJ6CafP6pwuuSxc/PDyzLQiQS1co9B0NDQ2zfvh1SqRS+vr547733sGDBAnh7e+PZs2dYs2aNPPkAwOLFi9GxY0f8+++/Oo+loUrPFuNBRDySnmehsFh1pXJCSNPj5eWl7xAA8ExAK1euhJmZGW7cuFFrM+v5+fnh8uXL6N+/P/bt24effvoJzZs3x99//82rDlxTVC6RIOl5FsIiE/A0NhmZuXl0j4gQAlNTU32HAIBnE9zKlStx5coVnD59GgKBAH5+fvDy8oK1tTXn9pqWzKnvGlITnComxkZwaeFA94gIacLqSxMcrwQkEAgUul9X1wwnaSRTCjSGBCRjZGiAFg42aGZbO82ohJD6q74koBp3W1P34UWlYuqvsnIJ4lIy8DAyHmmZufS7IqQJGT58uL5DAFCDBFSbE9GRulNcUoa4lHTcDY9BfEoGikvL9B0SIaSW3blzR98hAOA5DmjHjh26joPoWblEitTMHKRm5sDSXIgW9jYQWdJ9IkIao9TUVH2HAIBnAnrrrbd0HQepR/IKivC0oAhCE2M0s7WCjZUFjI1oDiJCGgtdTiBaE/SpQlQqKilFXEoG4lIyYGZqDBsrC1hZCGEhNKWOC4Q0YMOGDdN3CAB00AmBNA2FxaVIep6FJ9FJuPMkBjFJz5GVmw+pVKrv0OoVFxcXhdqD6h61NYaO1L7Y2FgwDINp06ZptV9SUhK+/fZb+Pv7o02bNjA2NoajoyPGjx+PGzduqNzvxo0bGD16NOzt7WFiYgIPDw988cUXKCoq4tw+Ozsbn3zyCdq2bQsTExM4ODhgwoQJePToEQDgwIEDSvvs3bsX/fv3h4WFBczNzdGrVy/s3LlTq9enLboCIlqTSKVIzxYjPVsMgYCBlbkZrMyFsLY0g6mJsb7D06t58+YhJydH5fqwsDAcPHgQ5ubmcHZ2rrvASL2wZcsWrF+/Hu7u7vD394eDgwMiIiJw+PBhHD58GHv37kVgYKDCPocOHUJgYCAMDAwwfvx4ODo64sqVK1i1ahXOnTuHs2fPwsTERL59ZmYm+vbti4iICPTt2xejR49GSkoKDh48iKCgIJw7d04prgULFmDz5s1wdHTElClTYGRkhBMnTuDtt99GWFgYNm7cWCvvB69xQE1VYxoHVFvMhSYQWZjBysIMZqbGMDSgWnQymZmZ6NmzJ2JjY7F//3689tpr+g6J8CSrKfnWW29pdZVw6NAh2NnZKRVTvnTpEl5++WVYWFggJSVFnlCKiorg7OyMnJwcXLt2DT169ABQ0Qv5ww8/xA8//IC1a9fKZ6kGgDlz5uCHH37A/PnzsWnTJvnya9eu4aWXXkL79u3xxx9/oFu3bgCA0NBQ9OrVC23btsWNGzdga2sLACgoKICfnx9u3bqFq1evolOnTvVvHBAhlRUUlSA5PRvhMRVNdfefxiIxLRPi/EKUlUuabPf88vJyvP7664iNjcWiRYs4k8/z58/x8ccfy5tN7O3tMX78eISFhSlt6+LiAhcXF+Tk5GDOnDlo3bo1DA0NFT4Mjx07Bj8/P4hEIgiFQnh7e2Pz5s0oLy/XOO6IiAi8/fbbcHV1hYmJCWxtbeHt7Y158+Yp/S7z8vLw5ZdfokuXLjAzM4NIJEK3bt2wbNkylJUpdu+/cuUKRowYAVtbW5iamqJDhw5Yvnw5CgsLlWJgGAaDBg1CUlIS3nzzTTg6OkIgECg0YV68eBEjR45UaKL6/PPPOY+niqxCdNu2beXxv/TSSzh48KDCdjt37pRP67Jr1y6tmlXHjRvHWcn/pZdegp+fH7Kzs/Hw4UP58qtXryI9PR1jxoyRJx/Ze7J69WoAwM8//6zwuzhy5AgEAgG+/PJLhXP07dsXI0eOxOPHjxEeHq6wPQB8/PHH8uQDAObm5li6dKn8HLWBmuBIrSopK0dyejaS07MBAAYCAUSWZhBZmEFoYgyhqTEMdDSNR332ySef4Ny5cxg2bBi++uorpfVRUVEYNGgQEhMT4e/vjzFjxuD58+c4ePAgTp06hbNnz6J3794K+5SUlGDw4MHIz8/HqFGjYGhoiObNmwMANm/ejAULFsDW1haTJ0+Gubk5jh49igULFuDSpUs4dOhQtR1JkpOT4ePjg4KCAowYMQKBgYEoKChAREQEfvzxR2zcuBGGhhUfIc+fP8fAgQMRHh6Orl27YubMmZBKpQgPD8f69euxYMECeamuAwcOYNKkSTAxMUFgYCCaNWuG4OBgrFy5EqdOnUJISIhSrTJZs5KtrS0mTpyI4uJi+bfwn376CbNnz4a1tTVGjhyJZs2aITQ0FF999RXOnz+P8+fPw9i4+qbhxYsXw9jYGAMGDICTkxPS09Nx9OhRTJgwAd9//z0+/PBDAEDXrl3x0Ucf4bvvvoO3tzfGjBkjP0blIsnaMjIyAgD5ewq86C4tS3iVWVtbw8bGBnFxcYiOjoa7u7t8H3t7e1hYKM+SLDvO/v375ZUQ1J1Dtoyr2U4XKAGROiWRSpGVm4+s3BdzNVmamcLexgqWZqYwMTZqdD3sdu/eje+++w5t27bFX3/9xTlv1ptvvomUlBScPHkSAQEB8uWff/45evbsiRkzZuDBgwcK+6SmpsLb2xtXrlyBUCiUL4+KisLChQvlH8StW7cGAHz11VcYMmQIDh8+jD/++ANTp05VG/fBgweRk5ODb7/9Fh999JHCuqysLIUPylmzZiE8PBxLlixRSrBpaWnyD0OxWIwZM2bA0NAQ165dQ5cuXQAAa9asweTJk7Fv3z58/fXXWLZsmcIxwsLC8Pbbb+PXX3+FQaVm3cePH2Pu3Lno0qULzp49Czs7O/m6devWYfHixdiyZYtGBYxPnDgBNzc3hWX5+fno168fli1bhunTp8PMzAxdu3bFvHnz8N1336Fr165YsWJFtceuTnx8PM6cOQMnJyeFStWy2ZxjYmKU9snNzUV2dsUXu2fPnskTkL29PZ4/f478/HylJCQ7TuVxQOrOIVuWmJio1dWkphr/V09S7+UVFiMm6TkeRMTjQUQ8IuNTkZWbj/JGUEMwNDQU77//PiwsLHD48GHOgr13797F1atX8dZbbykkHwBo164dZsyYgYcPH3I2xW3YsEEh+QAVvZnKy8uxYMECefIBABMTE6xfvx4AtLpvUfX4ABSaalJTU3Ho0CG4u7tzfhg3b95cnqyOHDmC3NxcvPPOO/LkA1TUl9ywYYNSM6KMsbExNmzYoJB8AGDbtm0oLy/Hli1bFJIPAHz22WdwcHDAX3/9pdHrrJp8AMDCwgLTpk1Dbm4ubt26pdFxtFVWVoapU6eipKQE69evV3iN/fv3h5WVFQ4fPiyf5VmmcpHnyh1fXnnlFUilUqUmuBs3buC///4DoPg7feWVVwAA3377rcJxCgsLsXbtWvlzsVjM/0WqQFdApF4pKS1DSWkZssQVV0hmpsYQWZjBXGgKc6EJTIyN9Byh5tLS0jB27FiUlJRg79696NSpE+d2169fl2/P9QEua68PDw9H586d5ctNTU0553WRfVBxTbvct29fmJqa4t69e9XGP3LkSCxevBizZ8/G2bNnMWzYMAwcOFDpgzo0NBQsy8LPz0/ejKSKutjatGkDNzc3PHv2DHl5eQqDJV1dXeXf1CuTvXeyZsqqjIyMFO53qPP8+XOsW7cOQUFBiIuLU+rinJycrNFxtCGVSjFt2jRcvHgRM2bMULoqtbCwwObNm/Huu++ib9++mDBhAhwdHXH16lXcvn0bHTp0QHh4uMJV9cqVK3Hy5Els3LgR165dQ58+fZCSkoJ//vkHnp6eePDggcLVjK+vL6ZOnYo9e/bA09MTo0aNkveCKy8vl3c80NWM15VplIDi4+NrdJLGNO01qVuFxaUoLC6VPzcwEMDM1ATWlmaw/X+FhvrYZFdWVoYJEyYgMTERy5Ytw9ixY1Vum5WVBQA4fvw4jh8/rnK7goIChefNmjXjfO2yb6qy+0GVMQyD5s2bIykpqdrX4OLiguvXr2PFihU4ceIE9u/fDwDo0KEDVq5cKe9IkZubCwBo2bJltcdUFxsAODk54dmzZxCLxQoJSNX2sveO676aNrKystCrVy/Ex8ejf//+GDJkCKytrWFgYIB79+7hyJEjKCnR7cSOUqkU77zzDvbu3Ys33nhD5Y3+6dOno0WLFtiwYQOOHDkCiUSCXr164ezZs1i/fj3Cw8PRrFkz+fatWrXCrVu3sHz5cgQFBeHmzZto3bo1Vq5cCRcXF0ycOFHpntjOnTvRs2dP/Pbbb9i5cyeEQiECAgKwYcMGdOrUCYaGhrCxsdHp6wc0TECywXV8MAyjVa8bQtSRSKTIKyhCXkERElIzYSAQwNJcCAszU4gshDAzNakXCenDDz/E5cuX8eqrryo1hVQlu5m+ZcsWzJkzR+NzqHqdsuOlpaUpjTViWRZpaWkad6Pt3Lkz/vnnH5SVleH27dsICgrC999/j8DAQLRo0QL9+/eXNytqktQqx8ZFdm+ianzVvdaqCUtbv/32G+Lj47Fq1Sp8/vnnCuvWrVsn7ymmK1KpFG+//TZ2796NSZMmYefOnWqvMF555RV5U1llU6dOhUAgQPfu3RWWt2zZEtu3b1faXnaF3b59e4XlAoEAc+fOxdy5cxWWx8bGIj8/H927d6/26pYPra6pNKmATVWxSV2SSKXIyStAYlomHkUlyqs0ZIsLIJXq52/vl19+wbZt29C+fXv8+eef1SZEWe+2a9eu6eT8svEdXF2Cb9y4geLiYnTt2lWrYxoZGaFPnz748ssv8f3334NlWfn9hJ49e0IgEOD8+fNK3a21iS0hIQFRUVFwc3PTOJnI3jtZUxxfUVFRAIDRo0crrbt06ZLSMtl9Gj5znVVOPoGBgdizZ4/SvS1NXLlyBbGxsRg2bBhEIlG120skEvz9998wNDSs9kuRzJ9//gkAmDhxotbxaaJGjXrVlRohpK7JqjRExKfgbng0nsUmIzk9GwVFxXXyZejq1av48MMP5TeONbnS8PHxQe/evfHXX39h3759SuulUikuXLigcQyTJ0+GoaEhNm/erHDforS0FAsXLgQAjUrI3L59m/PGs+zqRdZVunnz5hg/fjyioqI4P9ieP38ubwUZPXo0RCIRduzYIS8LA1R8uV24cCHKy8u1Km8za9YsGBoa4sMPP+S8VZCTk6N0856L7Erx8uXLCsv37t2LEydOKG1vY2MDhmGQkJCgcazAi2a33bt347XXXsMff/xRbfLh+h0kJyfj3XffhaGhIVatWqWwrqysTOn+lVQqxSeffIKnT5/iww8/VPp74jrHpUuXsHbtWjg7O+ODDz7Q9CVqRaNKCIMGDVJKKIWFhfJeIZaWlvIugNHR0RCLxWAYBl26dIG1tTXOnz9fC6HXPaqE0LAxAMyFprAwN4W5qQlMTYxhZmqssy9LeXl5aNeuHVJTUzFo0CDOAYeVDRo0SH4zPiYmBn5+foiLi0OfPn3QvXt3CIVCxMfH49q1a0hPT0dxcbF8X9l4k9jYWM5jy8YB2dnZ4fXXX4e5uTmOHTuGp0+fYvTo0fj333+rfd3z5s3Dtm3b4OvrC3d3d1hZWeHx48c4ceIERCIR7t69K7+/m5GRAV9fXzx58gTdunXD4MGDwbIsnj17huDgYKSlpSmNAzI1NUVgYCAcHBxw5swZ3L59Gz4+Prhw4YLCOCCGYTBw4ECVgzx//fVXzJw5E0ZGRhg+fDjc3d2Rl5eH6OhoXLhwAdOmTat2IGViYiI6d+6M/Px8jBs3Ds7Ozrh//z7Onj2LMWPG4NChQ9ixY4dCcuzduzdu3bqFKVOmwMPDAwKBAFOnTlVbYmnFihX48ssvYWFhgY8++kihK7vMmDFjFK5QV69ejT/++AMDBgxAs2bNkJCQgCNHjqCwsBC//fab0uwEiYmJ6NSpE/z9/eHq6orS0lKcOnUK4eHhGDFiBA4ePIhDhw4pzIjq7++PoqIidOnSBVZWVnj48CGCgoJga2uL06dPo2vXrrUyI6pG94Cq/uLLy8sxZMgQMAyDRYsWYdmyZfI/mJKSEqxatQpr1qyBoaEhgoKCdBIoITXFAsgvKkZ+0YsPcoGAgYXQFBZmFQ9LMyEMDPg1DGRmZsrvYYSEhGhUbFSWgFxdXXH37l1s3rwZhw8fxo4dO2BgYAAnJyf4+vpiwoQJWsUyf/58tG3bFps3b8Yff/yB0tJStGvXDps2bcLcuXM1SrqTJk1CcXExrly5gps3b6KkpAStWrXCzJkz8emnnyp0LrK3t8f169exceNGHDhwAFu3boWpqSlcXV2xaNEimJuby7d97bXX4OjoiLVr1+LQoUMoLCyEi4sLli1bhoULFyoNQq3OjBkz0LVrV2zevBkXL17EsWPHIBKJ0KZNG3z88ccaTR/TqlUrXLhwAZ999hnOnDmD8vJydO/eHcHBwUhISMChQ4eU9tmzZw8+/vhj/Pfff8jNrZhVeMCAAWoTkOwLQ35+vsqOEy4uLgoJqF+/frhw4QKOHTuG7Oxs2NnZYfjw4Vi4cKG8SbMykUiE0aNH48qVK/jvv/9gZGSEzp0749dff8U777wDgUCAdu3aKewzZswY7Ny5E3/++SeKiorQunVrfPjhh1i8eLHKDiC6wKsW3IYNG7Bo0SJ4enpyjk0AKm5ePnnyBCtWrFAaVNZQ0RVQ02BhZgobK3NYmglhamJE9exIo5OQkKAwRkwTtXEFxOur3u7du8EwjNpuly1btgTLshoPAiOkvsgvLEZCaiYeR1d0arj3NFY+/URpWTl1rCENXtV7XfrCayBqdHQ0gIoBaOnp6XBwcFBY//z5c/n9IVVt1IQ0FKVl5fLpJ4CKenYWZqYwMzWBmdAYVuZmMDKkqyRCtMUrAVlYWKCkpAQ5OTkYMGAAPvnkE/mI7LCwMGzatEle0oGrIB4hDZlEKkVufiFy81+MJjcQCCA0MYaFmSnMzUwoKZF6bfDgwfoOAQDPBDRo0CD8888/YBgGERERSl30ZE0UDMPAz8+v5lESUs9JpNIXHRwyK5YZGAhgYmQESzNTWFkIITQ1gbGRIQQ0RIHoWVRUVK12LtAUrwT05Zdf4vjx4yguLgbDMEpt4rJlpqamWL58uU4CJaShkUikKJSUoLC4BGlZFeVqGIaBudAEZqYmEFkIYWpiDNNGWAGc1G9xcXHo16+fvsPgl4A6duyIo0ePYvLkyUhPTwfwolSGrPqBvb099u7dC09PT91FS0gDx7Is8guLkV9YjOf/T0qGBgJYmAlhZS6EpbkQQhNjCASUkEjt0WR+pLpQoym5c3Jy8Ntvv+HMmTOIi4sDUFF4dMiQIZg+fXqtFK/TJ+qGTeqKgUAAoakxhCbGMDYyhPD/g2Yb43xJpGGojW7YNUpATQ0lIFLXGEDhb8bAQAChcUVnB0vzip54DWmKClI/HDhwgHNaeHX0VglBEyzLoqioCGZmZro6JCFNXtUvLBLJi84Oqf/v7GBoYAAzU2PYWFn8v3u47soLkcapvsxQUKNipKmpqfjoo4/g5uYGY2NjeVbctm0bVq5ciTVr1tQouFu3bmH48OGwtraGubk5+vTpI5+TpDosyyIoKAgzZ85Ely5dIBKJYGZmBm9vb6xZs0ahrhYhDVm5RAJxQRHiUtLxKCoBoY+j8Tg6EbHJ6UjPFqOopJQGzxIFXLO/6gPvK6Dr169j1KhRyMzMVOh2DVTMC7J69WowDIN+/fpxzn5YnfPnzyMgIACmpqaYOHEiLC0tcfDgQQQGBiIhIaHaOd5LSkowfPhwmJiYYNCgQQgICEBxcTFOnTqFpUuX4vDhwwgJCaErNtLoVO7oIMMw+P99JBOYGhtV1L4zF1KX8CaqvkwSyuseUFZWFjp37ozU1FSF3m8Mw0AikeDBgwfo2rUrGIbBggULsGHDBq2OX15ejg4dOiAxMRHXr1+XF+bLzc2Fj48PYmNj8ezZM7VF/8rKyrBhwwbMmjVLoTNEWVkZxo8fj2PHjmHDhg349NNPNY6L7gGRxkZoYgxzoQkszYUwF5pAaELNd03BX3/9pVANWxP1phbc1q1b5cmHa9K5Ll26yOdv5zNR1Llz5xAVFYXJkycrVIUViURYsmQJSktLsWvXLrXHMDIywtKlS5V64hkZGWHx4sUAoNUcK4Q0RkUlpcjIyUNM0nOERSbg3tNYxKdkIDM3D+U8JlsjRBu8EtCxY8fkP+/duxdjxoxR2sbT0xMsyyIyMlLr48vK2Pv7+yutCwgIAFCz5CGbWpZrLg5CmrKycglSM3MQlZCGO09iEBaZgMiEVCQ/z4I4vxBl5ZSUGgNfX199hwCA5z2giIgIMAyDnj17YuLEiTh48KDSNrLJp7KysngdHwA8PDyU1jk6OsLCwkK+DR+///47AO4ERwh5obC4opJD5f/FBgYCWJoJYWluCmtLc6rk0AAlJSWpnc2grvBKQLLpXtXVEpIVIxUItL/Iys2tGCGuap5zKysr+TbaCgoKwrZt29CxY0dMnz6d1zEIacokEily8gqQk1eAhNRMMAwDU2MjCE2MYWpiJJ/cj+ZRqr+ioqLg4+Oj7zD4JSBbW1ukpaXh6dOnnOvz8vJw584dAICdnR3/6HTs1q1bCAwMhEgkwoEDB2BiYqLvkAhp8FiWRVFJKYpKShWWGxsZwkJoCjOhSUVSEprw+kJKdK++/B54JSBvb28EBwcjMjISX3/9tcKgprS0NMyaNQv5+flgGEahE4GmZFc+qq5yxGKx1mV+QkND4e/vD4FAgFOnTqFTp05ax0UI0VxpWTmyyvKRJc4HUFFeSFa9QWRhBgszU2q605PAwEB9hwCAZwIaM2YMgoODAQCLFi1SWCebCVVm7NixWh9fdu8nIiICPXr0UFiXmpqK/Px8rS4fQ0NDMXToUEilUgQHB6NXr15ax0QIqRmJVIqcvELk5BUiOT0bxkaGsDQXwtTYCKbGRjATVpQVorFJte/QoUMYN26cvsPg1wtu2rRpCh0EZGOAAEAqlQKoGJTq4eGBKVOmaH38gQMHAoA8yVV26tQphW2qI0s+EokEJ0+eRO/evbWOhxCie6Vl5cj8X3t3HtbUlf4B/JtAFiDsYdOyKWhbZGrRulbAOizW1qXUdVBxr1Zbl061YxHp5vQZHavPWHcttWOdsToztioqLjAVi2jnV7V1QWUroIIsgRAgJOf3B+XqJQRICITg+3mePA/33HPPPcl5yJt771nKK1HwoBR3fr2Pq1l5uPzLXVy5lYusvCLcKylHVXUN951CTKe2ttbcVQDQjslIr1+/jsjISBQUFOhcRjPG4OnpiZSUFKOWY6ivr0ffvn1RUFCgdyDqzZs34efnBwAoKipCRUUFvLy8eB0XLl++jN///veor69HcnIyhg8fbsxb5dBAVELMQ2RtBVupBM4OdnCws4VEbE2379rh/PnzBn8fdrnZsMvLy7Fhwwb8+9//RnZ2NgDA398fY8eOxYoVK+Di4mJ0xfRNxZObm4v169fzpuKJi4tDUlIS9u7di7i4OAAN3b8DAgJQVlaG6OjoZq98nJycsHTp0jbXiQIQIV2DlVAIF0c7uDjYw0FmQ8HIQMXFxXBzczPomC4TgK5du4Z+/fq1Ke+iRYvw+eefG1wxALh48SISEhKQnp4OtVqN4OBgLF++XOcBWnMBKCcnB/7+/i2W7+vri5ycnDbXhwIQIV2PRCyCg50NbKWS39ZQEkFEg8xb1FWm4jEqAPXs2RPp6ektzsUGAAsWLMCuXbug6SZTelAAIsQyiKytfuv6/dtgWQkNln1cVwlARv1MKCoqQkREBL7//nu4u7vr7GeMYf78+di9ezc1OiGk06nrNShTKFGmUCL//kMIBQJIJWI42dvCzkYKma3kib5Kau/zcFMxugXu3LmDqKgopKam6kTDOXPmtDpZKCGEdBYtY9y0Qo0kv83eILORQPzbbTyx6MkISiUlJV1iSQajPu3Gq5orV67g1VdfxYkTJyCVSgE0PI/58ssvuTzt6YhACCEdpbZOjdo6NcorlVyayNoKDjJbONjZcAGpO97FuXnzJkJCQsxdDePGAT3eqeD777/HxIkTUVdXh9jYWC74MMbg4eGBs2fPmqyyhBDSkdT1Gjz8bXmKn27l4vIvd3EjuwAlZQpoNDQeydSM7ob9t7/9DW+99Rb366BHjx4oLCzkZkHw8fFBSkoKAgICTFdbM6NOCIQ82WwkYjja20Jm0zDhqqXestNqtQbPB9dlOiEAwOLFi1FfX4/ly5dDIBCgoKCA2xcQEIDTp0/D29vbJJUkhJCuoOmkqyJrK9jb2sDJ3hYOMluLCUjfffcdxo4da+5qGB+AAGDp0qXQaDT44x//yN12Cw4OxqlTp5rtHUcIId2Jul6DUsWjCVdtpRLY20m5yVa76pIUSqWy9UydoE0BaPbs2S3ud3NzQ3FxMQQCAfz8/HgTlAoEAuzevbt9tSSEEAvQ2NPu/sPf1jST2cDV0R4yWymkErGZa/dIV1iMDmjjMyChUNhqT5DGYh7P1zhJKQ1EpWdAhDzp7G2l6OnuAjtbKazMvB5PaWmpwT2UO+IZkMk+BYFA0C27KxJCiClUVtfgRk4hfryejfz7D1GlqoHW+Kk426VxVQFza/MzoHbMWUoIIeQ3jDEUFZehqLgMAgAikTVspWJ4yp3hYGdj7up1qjYFIBrLQwghpsfQsC5Snboe5ZXVsLORwM3ZAS6Osg7twNBV1kVrUwBq6+JvhBBCjKdU1UKpKkbevRJ4ujrBzdkBErHI5OepqqoyeZnGMO+TMEIIITq0WobC4jL8dCuXm4nBlI9Bfv75Z5OV1R7tHjWl0WhQUlLS4hKvXWHSO0IIsUQKpQoKpQr59x/CzkYKFwc7uDrZd4tOX0YHoMzMTMTHxyM1NRV1dXV68wkEAtTX1xt7GkIIIWgY9FpeqUR5pRI5hcVwdbJHT3cXo2ZfeP311zughoYzKgBlZGRg5MiRqK2tpd5xhBDSybSMobhMgZJyBbzkzujh7gKhAVdEJ0+exJgxYzqwhm1jVABau3YtampqeGN/mgaixql5CCGEdAzGgMLiMtx/WAEXRxl8POWwsmr90b5CoeiE2rXOqAB04cIFLsCIxWL07dsXjo6OsOqi8x4RQkh3ptFqUVymwMPySrg4ytDT3aXF3nMeHh6dWDv9jApAjc98HB0dkZGRgT59+pi0UoQQQgynZQwl5ZUoVVTB20MOD1fHZvMNHDiwk2vWPKO6YTcGnMGDB1PwIYSQLkarZcgtKkZWXhE0Wt2F9I4ePWqGWukyKgDFxsaCMYasrCx6zkMIIV1UmUKJa1l5KFN0jeUXmjIqAL311lsICQlBTk4OFixYgIqKClPXixBCiAnUquuRlVeESqWKSxswYIAZa/SIUc+AoqOjoVarwRjD7t278fe//x0BAQFwdXXVySsQCHD69Ol2V5QQQojxsvKK8Gxvb0jFIqjVanNXB4CRAejcuXNcF2zGGFQqFa5evaozMrdxPSBCCCH6fbDaHUePOGDR2yWYObecS089bYd3l3oh4+rtdp+jXqNF4YNS9HrKA1euXEFQUFC7y2yvds8F1xiIKNAQQojxJBIt9u1xhqKi46boVKr0T5lmDka/U8ZYqy9CCCFt88IQFVzlGiTtdtab5/9+lGL+zJ4IHdgLr/7eFxvWyaGqfvTjv6TYCssWeSF0YC+Mj/bFiaMyjI/yxdf7Grpjq2rrUKaowvjx4zv67bSJUbfgsrOzTV0PQgh5ogmFDAvffog1Kz0waVo5PDw1vP2/5ltj6Rs9sGDJQ7z/wQOUl1lh/Sdy/OUTN6z56AEAIPFPHigvt8LnewpgbQ1s+oscpaX8CQJKyitx9/oVREVFddp708eoAOTr62vqehBCyBMvfJQSgX3rsPNzV7z/wQPevqRdzogaU4mp0xt6Hfv4qrF8VQkWzuqJlfHFKCqwxsUfbPHFgXw8E9Rwq+1PiQ/w+hj+93Wduh6lpaWd84Za0e7lGAghhJjO4mUleHNuT/whroyXnnVTgtu3JDhx1J5LYwC0WgEKC6yRlyOGlTVD32cePefx9lHDwYF/JaVU1cLO3qFD30NbtTsAVVdX4/bt26ioqND73Cc0NLS9pyGEkCfC8wNrMHhYNT7/zBWvjKvk0lXVQkyYWIFJf9Add+nppUZejrjN5wh42vw94IB2BKCCggIsWbIER48ebXG9n/asB5SZmYmEhASkp6dDrVYjODgYy5cvx6RJk9pcRm1tLT799FPs27cP+fn5cHFxwSuvvIKPPvoI7u7uRtWLEEI60ptLH2L6RG/4+j0ar9P3mVpk3xHD26f5MTy+fnXQ1Atw87qEuwWXnyeCQqE7SXR62jk8GxDXIXU3hFEBqKqqCi+++CLy8vI6rLfb2bNnERUVBalUiilTpsDe3h6HDh3C5MmTkZ+fjxUrVrRahlarxbhx43DixAkMGTIEMTExyMrKwq5du3D69Gn88MMPcHNz65D6E0KIsQL61CFqTCX+uf/RZKLTZ5dhTuxT+MvHcoyLUUBqw5B9R4yLF2zwx9Ul8OulxqAh1ViX6IaV8cWwtmbYtF4OiVSLpqNktF2kl7JR3bC3bt2K3NxcbrvpOKD2jguqr6/HvHnzIBQKkZaWhh07dmDDhg346aef0KdPH/zpT3/inV+fpKQknDhxAlOnTkV6ejr+/Oc/49ChQ/j8889x9+5dvP/++0bXkRBCOtL8N0uh1T76Hg3sW4dtewuQlyvGgplPYcZEb+zY4gI390fPeBI+uQ8XVw3eiOuJlUu9MC5GAVtbLcRifsDx8e/dae+jJQJmxCVMeHg40tLSIBAIMHToUKSnp0MgEMDX1xd9+vRBSkoKACAmJga2trbYu3evQeWfPHkSUVFRmDVrFvbs2cPbl5SUhLi4OCQmJmLNmjUtljNs2DBcuHABOTk5vJ57jDEEBATg/v37KC4uho2NTZvqpVAo4OjoiIqKCjg4GPYQr+BBKQoflKJr/O4ghDwJ7t+zwtgIf/xtZwFeGPJoLrjy4nuIHPmiQWW15/tPH6OugG7cuAEAcHV1xdmzZ7n0gQMHIjk5GQcPHoRWq0VeXh62b99ucPnnzp0DAERGRursa+y7npqa2mIZNTU1yMjIQN++fXW6jQsEAkRERECpVOLSpUsG148QQrqiSxk2SDtri8JfrXHl/6R4/11PePVU4/kBKl6+7Du3zFRDPqMCUHl5OQQCAZ577jmIRI9W3Wu8mJowYQJCQkJw8eJFrFu3zuDys7KyAACBgYE6+zw9PSGTybg8+ty5cwdarbbZMh4vu7VyTImufgghHam+XoCtm10xZYIP3n3bE87OGmzdUwBr/YujmpVRnRCsra2hVqthb9/QH10sFkOtVvMGN3l6eoIxhq+//hoJCQkGld+4vIOjY/Or+Tk4OLS6BERbyng8X0ezpuXKCSEdbMjwagwZXt1qvkFDDbv91lGMCkDOzs5QqVRQKhsWOXJycsKDBw+QkZGBgoICSCQSZGRkAADy8vJMV1sL5u7iABdHO3SRzieEkCdYWuo5IMj8q1kbFYDc3d1RUFCAsrKGkbp9+vTBgwcPoFKpEBgYCKFQCJWq4Z5jWx/wP67xqkXf1YlCoYCzs/4J+9paxuP5OppAIIDImiaeIISYX3FxsbmrAMDIZ0DBwcEAgFu3boExhoiICG5fTU0NqqurubWAjJkFoaXnM/fu3UNVVZXeZzuNevXqBaFQqPcZT0vPmQghpDvrrB/erTEqAA0cOBC2trbQaDS4evUqFi1aBDc3Ny7oNI4BkkqlSExMNLj8sLAwAA3dsZs6ceIEL48+NjY2GDRoEG7evKkzZogxhlOnTsHOzg4DBw40uH6EEGLJRo0aZe4qNGAmcuPGDTZmzBjm6OjIbG1t2UsvvcQuXrxoVFlqtZr16tWLSSQS9r///Y9LLy8vZ3369GFisZhlZ2dz6YWFhez69eusvLycV86ePXsYADZ16lSm1Wq59K1btzIAbP78+QbVq6KiggFgFRUVRr0vQgjpCvbv32/wMR3x/WfUQNTOoG8qntzcXKxfv543FU9cXBySkpKwd+9exMXFcelarRYvv/wyNxVPWFgYbt++jcOHD8PPzw8ZGRkGTcVTUVEBJycn5Ofnm2wgFiGEdLaDBw9i4sSJBh2jUCjg7e2N8vJy093CM1ko0+PIkSNGH5uRkcGio6OZg4MDs7GxYYMGDWIHDhzQyTdz5kwGgO3du1dnX01NDVu7di3r3bs3E4vFzNPTk82dO5fdu3fP4Prk5+czNAznoRe96EWvJ/KVn59vzNd5szrsCujYsWNYu3YtLl++DI1G0/oBFkCr1aKwsBD29vYGz3XX+OuBrp7Mh9rA/KgNzM/YNmCMobKyEj169IBQaFT3AR0G9QvOz8/HqVOnUFJSgh49eiA6OhpyuZyXJyUlBfHx8bh48SLXKaG7EAqFeOqpp9pVhoODA/3jmRm1gflRG5ifMW1g6t5zbQ5Amzdvxrvvvgu1+tFaFDY2Nti2bRtiY2NRUVGBuLg4HDlyBAA6bJkGQggh3UObAtDly5exbNkynaBSXV2N2bNnIzg4GAsWLEBmZiavKzZjDNY0+JIQQkgz2nQjb8eOHTpjfICG0f0ajQaTJk3CxYsXuTTGGKysrDBr1ixu5uwnnUQiQUJCAiQSibmr8sSiNjA/agPz60pt0KZOCL/73e/w888/A2i4BxgaGgrGGFJTU1FZWcm7MhIKhZg+fTri4+PRq1evjqs5IYQQi9amAOTk5ASFQgGZTIZffvmFexCfm5uLoKAgqFQqMMbg7++PQ4cOoX///h1db0IIIRauTbfgqqqqIBAIMGjQIF4vMF9fXwwZMoS7Pffll19S8CGEENImbQpAWq0WAODi4qKz7/FZqQcNGmSiahFCCOnuDOqiVl1drbO+T3X1o8WP7t2712z3ax8fHyOrRwghpNtq03QJAgETCoV6XwKBQG8eKysrk03bYIkuXrzIRo8ezU3SOnjwYPaPf/zD3NXq0vbt28fmz5/PBgwYwMRiMQOan2apUUVFBVu2bBnz8fFhYrGY+fr6snfeeYdVVlY2m1+j0bDNmzezfv36MalUyuRyOZsyZQq7c+eO3nMkJyez0NBQJpPJmL29PQsPD2cpKSntfatd1q+//so2btzIIiIimLe3NxOJRMzDw4O99tpr7Icffmj2GGoH01KpVGzZsmVsxIgRzMvLi0kkEubh4cGGDRvG9uzZw+rq6nSOsbQ2MCgANQYaQ15CodCoinUHZ86cYSKRiNnb27N58+ax5cuXM19fXwaArV+/3tzV67IaPyO5XM79rS8AVVVVsf79+zMALDIykq1cuZJFRkYyAOyFF15gKpVK55i5c+cyACwoKIi9++67LDY2lonFYubi4sJu3bqlk3/fvn0MAHNzc2OLFy9mixcvZm5ubkwgELCDBw+a+u13CStXrmQAWO/evdmcOXPYqlWrWExMDLOysmJCoVBnTkZqB9MrLi5mUqmUhYaGsrlz57L33nuPvfHGG9z/RGRkJNNoNFx+S2wDk1wBtXRl9KQGILVazXr37t3ikhI5OTnmq2AXdurUKe6zWbduXYsBaM2aNQwAW7lyJS+98Qv0k08+4aWfOXOGAWChoaGstraWSz927Bj3j/u40tJS5uTkxORyOW8Sxvz8fCaXy5lcLmcKhaI9b7dLOnToEDt37pxOelpaGhOJRMzZ2ZnV1NRw6dQOpqfRaHifTSO1Ws3Cw8MZAPbdd99x6ZbYBm0OQMa+ntQAdOLECQaAzZo1S2ffF198wQCwxMREM9TMsrQUgLRaLevRoweTyWSsqqqKt6+qqorJZDLWq1cvXvrUqVMZAJaamqpTXuM/dW5uLpe2fft2vW21du1aBoAlJSUZ+e4sU+Ov6szMTMYYtYM5bNq0iQFgn332GWPMctugzb3gjH11l5mwDXXu3DkAQGRkpM6+qKgoAEBqampnVqnbycrKQmFhIYYPHw47OzvePjs7OwwfPhx3795Ffn4+l37u3DluX1PNtQu1oy6RSAQA3DRb1A6dS6vVIjk5GQDQr18/AJbbBqaZU5voyMrKAgAEBgbq7PP09IRMJuPyEOO09Bk/nt6YT6lUoqioCP7+/rCysmo1f2vnaC5/d5eXl4eUlBR4eXkhODgYALVDR6urq8PatWuRkJCAxYsXIygoCMePH8esWbO4pbUttQ1optAOUlFRAUD/9OUODg5cHmKctnzGj+czNH9rxzSXvztTq9WYPn06amtr8emnn3JfXNQOHauurg6JiYnctkAgwDvvvIN169ZxaZbaBnQFRAhplVarRVxcHNLS0jBv3jxMnz7d3FV6YshkMjDGoNFokJ+fjy1btmDXrl0IDw+HQqEwd/XahQJQB2n8laDvF4FCoTD54k5PmrZ8xo/nMzR/a8c0l7870mq1mD17Nvbv34/Y2Fhs27aNt5/aoXM0Loi5cOFC7NixA+fPn8fHH38MwHLbgAJQB2npnui9e/dQVVWl934taZvW7js3vWdtZ2cHLy8vZGdnN9s5prl73C2do7X77t2BVqvFrFmzkJSUhKlTp+KLL77QWY6Z2qHzNXYEaOwYYKltQAGog4SFhQEATp48qbPvxIkTvDzEOIGBgejRowfOnz8PpVLJ26dUKnH+/Hn4+/vD29ubSw8LC+P2NdXYLqGhobz8wJPZjo3B58svv8TkyZOxb98+vQ+sqR06V2FhIYBHPRIttg0M6rRN2kytVrNevXq1OBA1OzvbbPWzFF1hIKqjo+MTNQCSsYZBkDNnzmQA2MSJE5larW4xP7WD6f38889MqVTqpCuVShYdHc0AsI8//phLt8Q2oADUgWgqHuPs3LmTzZw5k82cOZOFhIQwAGz48OFc2s6dO7m8VVVV7LnnnuP+YVatWsWbfqS6ulqn/KbTj0yfPp2bfuTmzZs6+VuafuSf//xnh34W5pKQkMAAMJlMxlavXs0SEhJ0Xo//sKJ2ML2EhARmb2/PRo8ezRYuXMhWrlzJYmNjmaurKwPARowYwftcLbENKAB1sIyMDBYdHc0cHByYjY0NGzRokM48WoSv8Ze3vtfMmTN5+cvLy9nSpUu5STN9fHzYihUr9P4a02g0bNOmTSwoKIhJJBLm6urKJk+ezG7fvq23TsePH2cjRoxgdnZ2TCaTsbCwMHbq1ClTvu0upbU2aO6qlNrBtDIzM9m8efNYUFAQc3JyYtbW1szV1ZWNHDmSbd++vdmrUktrgzatiEoIIYSYGnVCIIQQYhYUgAghhJgFBSBCCCFmQQGIEEKIWVAAIoQQYhYUgAghhJgFBSBCCCFmQQGIEEKIWVAAIhapqKgI69atw+jRo+Hj4wOZTAaRSAQnJyf069cPkyZNwubNm5GXl2fuqnYaPz8/CAQCnZdQKIS9vT2efvppTJ8+HadPnzZ3VXXk5OTw6hweHm7uKpFOQDMhEItSV1eH1atXY9OmTVCr1a3mFwgEUKvVzc7i3N34+fkhNze3TXmXLVuGv/71rx1co7bLycmBv78/tx0WFsYtNUC6L1qSm1iMmpoaREdHIzU1lZcuFovx/PPPw8PDAyqVCnfu3MHdu3cBAKxhvkNzVNfsQkND4ebmBoVCgUuXLqGsrIzbt3HjRrz++usYNmyYGWtInnQUgIjFWLx4sU7wWb58OeLj4+Hk5MRLLyoqwoEDB/DZZ591XgW7mMTERO5WVkVFBUJCQrjADADHjh2jAETMip4BEYtw7do17N27l5cWHx+PDRs26AQfAPDy8sKyZctw+/ZtWFvr/s5ijOG7777DpEmT4OfnBxsbG9ja2qJv375YuHAhbty40Ww9wsPDec8qcnJycObMGYwZMwYuLi6QSqUICgrCxo0b9V55GXvu9nB0dMQrr7zCSyspKdHJ99VXX2HevHkYPHgwfHx8YG9vD5FIBFdXVwwdOhRr1qzB/fv3mz3H45+Ln58ftFotdu3ahSFDhkAmk0Emk2HEiBE4fvy4wfX/9ttvIZFIuPIdHBxw5swZg8shXYxRc2gT0slWr17NWwrAzc2NqVQqo8pSKBRs9OjRLS41IBKJ2LZt23SODQsL4+WbMWOG3jLefvttk567NY1rTTW+zp49y9u/ZMkS3v7ExESdMoKCglpdhsHFxYW3FlCjx/N4eHhwa9E0fQkEAnb48GHesdnZ2bw8YWFh3L7Dhw8zkUjE7ZPL5SwzM9Pgz4d0PRSAiEUYOXIk7wtqypQpRpc1ZswYnWAWHR3NRo4cycRiMe+L8tixY7xjmwYg/LZo20svvcQCAgJ46UKhkOXl5Zns3K1pKQCVlpYyPz8/Xvk//fSTThlBQUFMKpWy/v37s5deeomNGzeORUREsB49evDK7t+/v86xzQUbLy8vFhERweRyOS89MDCQd6y+AHTw4EFmbW3NpXt7e7Pr168b9LmQrosCELEIzz77LO8Lqumyw4wx1rNnz1YXsEtJSeHtGzt2LG854ps3bzKZTMbt79evH+8cTQOQr68vy8nJYYw1LMM+atQo3v6kpCSTnbs1TQNQaGgoi4mJYREREczJyYm376OPPmq2jCtXrvDq1Eij0bBJkybxymgaCJp+7tHR0dwqnPfu3WPu7u68/bm5udyxzQWgr7/+mhd8+vbtqxPQiWWjTgjkifKvf/2Lt11SUoJp06bx0kQiEff3tWvXkJOTAz8/v2bLW7VqFXx9fQEA1tbWePnll3njbAoKCjrs3K1JS0vTSXN3d8f+/fsxatSoZo/x9/fHli1bcPToUVy/fh2lpaWoqalpNu+NGzfw9NNP6z3/xo0bYWNjAwDw8PDA4MGD8e2333L7CwoK4OPj0+yxV69eRWxsLDQaDQBg4MCBOH78OORyud7zEctDAYhYBA8PD/zyyy/cdnMDTMeMGYOHDx8iNzcXly5darac7Oxs3nZ6enqr587OztYbBF544QXetqOjI2+7tra2w85tjAcPHmDhwoU4efKkTrkPHjzAiy++iKysrDaVVVFRoXefTCbTCU4tfTZNlZaWcn/b2tri22+/peDTDVEvOGIRmnYXPnPmjM5A1O3bt+Obb77Bm2++adJzK5VKvftcXV1526Ye8NrSuVtz9uxZ1NXV4fLlywgJCeHSs7KyEBMTw11dNPrggw94wcfa2hrDhw/HhAkTEBMTg2eeeYaXn7Uwvqrp5wIY/9lUV1dj2rRpUKlURh1Pui4KQMQiTJ48GQKBgNu+f/8+Nm7caHA5j4+2B4ADBw5wg1X1vZp2XzaWOc4tEokQEhKCI0eOQCaTcek//vgjdu/ezcv73//+l7d9/vx5fP/99zh8+DC++eYbjBgxol11McTgwYMxcuRIbvvs2bN49dVXKQh1MxSAiEUIDg7GjBkzeGnvvfcePvzwQ4O+lMaOHcvbjo+P17k1BjQ8n9iyZQuWLFliXIW72Ll79uyJFStW8NI+/PBD3m2wpleUtra23N8XLlzAV199ZbL6tEYqleLIkSMYMmQIl3b69GmMHz9e7zMpYnkoABGLsXXrVgwdOpTb1mq1WLNmDdzc3BAeHo7x48cjLCwMixYt0ltGZGQkIiIiuO2srCwEBgZi0KBBGDduHCIiIuDv74+nnnoKixcvxtWrV01Wf3OeGwCWLl3KG7T766+/YufOndz241/2ADB06FCMHj0aw4cPx4svvtjpVx8ymQzHjx9H//79ubSTJ09iwoQJLT4/IpaDAhCxGDY2Njhz5gwWLVrEe56gVCqRmpqK//znP0hLS+N9UVpbWyMwMJBXzjfffIOoqChuW6PRIDMzE0eOHEFKSgpycnJ4x5uSOc/t5OSEZcuW8dLWrVvHXVHEx8fznt1UVVUhOTkZ6enp8Pf3xxtvvGHS+rSFk5MTTp48yevQkJycjNdeew11dXWdXh9iWhSAiEWRSqXYsmULbt++jTVr1iAsLAyenp6QSCQQi8WQy+UYMGAAZsyYgd27d6OgoACrV6/mleHg4IDk5GQcPXoU06ZNQ+/evWFrawsrKys4Ozvj+eefx5w5c3DgwAEcOXLEpPU357mBhqsgZ2dnbruwsBDbt28H0PCMKjMzE9OmTYNcLodIJIKvry/eeustZGZmwt3d3eT1aQs3NzekpKTwnqEdO3YMMTExFIQsHC3HQAghxCzoCogQQohZUAAihBBiFhSACCGEmAUFIEIIIWZBAYgQQohZUAAihBBiFhSACCGEmAUFIEIIIWZBAYgQQohZUAAihBBiFhSACCGEmAUFIEIIIWZBAYgQQohZ/D/TkhTERqeV/AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 0.0 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0 \n", + "recall: 0.0 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 97%|█████████▋| 124/128 [00:00<00:00, 171.90it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 170.29it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0007633337640588276\n", + "Area Under Precision-Recall Curve (AUPRC): 0.0007715756415332794\n", + "EPR: 0.0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAALCCAYAAACr5vABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABqZklEQVR4nO3de3gU5d3/8U825wSSiEgOECFWFBAkNUAMoqgsBILVWNQEYzk0glWjYEAKFsFjqSiKCDWiVWgfLAhWHqQYiQGLhTScrfCAosUCYgJIk0Awx53fH/wydc3BEBP2hrxf18UFe893Zr4zLLf5OLOzXpZlWQIAAAAAeJzD0w0AAAAAAE4joAEAAACAIQhoAAAAAGAIAhoAAAAAGIKABgAAAACGIKABAAAAgCEIaAAAAABgCAIaAAAAABiCgAYAAAAAhiCgAQCMMGbMGHXp0uWM1vnwww/l5eWlDz/8sEV6Otddf/31uv766+3XX375pby8vLRo0SKP9QQAaBgBDQBaqUWLFsnLy8v+FRAQoMsuu0wZGRkqLCz0dHvGqwk7Nb8cDofatWunYcOGKS8vz9PtNYvCwkJNnjxZ3bp1U1BQkIKDgxUXF6ennnpKRUVFnm4PAM5LPp5uAADgWU888YRiYmJUVlamv//973r55Ze1Zs0a7dq1S0FBQWetj1dffVUul+uM1rnuuuv07bffys/Pr4W6+mEjR45UUlKSqqur9dlnn+n3v/+9brjhBm3ZskW9evXyWF8/1pYtW5SUlKSTJ0/qrrvuUlxcnCRp69at+t3vfqcNGzZo7dq1Hu4SAM4/BDQAaOWGDRumPn36SJLuvvtuXXjhhXr++ef1v//7vxo5cmSd65SWlio4OLhZ+/D19T3jdRwOhwICApq1jzN11VVX6a677rJfX3vttRo2bJhefvll/f73v/dgZ01XVFSkW2+9Vd7e3tqxY4e6devmtvzpp5/Wq6++2iz7aon3EgCcy7jFEQDg5sYbb5Qk7d+/X9Lpz4a1adNGX3zxhZKSktS2bVulpaVJklwul+bOnasrrrhCAQEBCg8P1z333KP//Oc/tbb73nvvaeDAgWrbtq1CQkLUt29fvfnmm/byuj6DtnTpUsXFxdnr9OrVSy+++KK9vL7PoC1fvlxxcXEKDAxU+/btddddd+mrr75yq6k5rq+++krJyclq06aNLrroIk2ePFnV1dVNPn/XXnutJOmLL75wGy8qKtLEiRMVHR0tf39/XXrppXrmmWdqXTV0uVx68cUX1atXLwUEBOiiiy7S0KFDtXXrVrvmjTfe0I033qgOHTrI399fPXr00Msvv9zknr/vlVde0VdffaXnn3++VjiTpPDwcE2fPt1+7eXlpccee6xWXZcuXTRmzBj7dc1ttX/729903333qUOHDurUqZNWrFhhj9fVi5eXl3bt2mWP7d27V7fddpvatWungIAA9enTR6tWrfpxBw0AhuAKGgDATU2wuPDCC+2xqqoqJSYmasCAAXruuefsWx/vueceLVq0SGPHjtWDDz6o/fv3a/78+dqxY4c2btxoXxVbtGiRfvnLX+qKK67QtGnTFBYWph07dig7O1t33nlnnX3k5ORo5MiRGjRokJ555hlJ0p49e7Rx40ZNmDCh3v5r+unbt69mzZqlwsJCvfjii9q4caN27NihsLAwu7a6ulqJiYmKj4/Xc889pw8++EBz5szRT37yE917771NOn9ffvmlJOmCCy6wx06dOqWBAwfqq6++0j333KOLL75YmzZt0rRp0/T1119r7ty5dm16eroWLVqkYcOG6e6771ZVVZU++ugj/eMf/7CvdL788su64oordPPNN8vHx0fvvvuu7rvvPrlcLt1///1N6vu7Vq1apcDAQN12220/elt1ue+++3TRRRdpxowZKi0t1fDhw9WmTRu99dZbGjhwoFvtsmXLdMUVV6hnz56SpN27d+uaa65Rx44dNXXqVAUHB+utt95ScnKy3n77bd16660t0jMAnDUWAKBVeuONNyxJ1gcffGAdPXrUOnjwoLV06VLrwgsvtAIDA61Dhw5ZlmVZo0ePtiRZU6dOdVv/o48+siRZS5YscRvPzs52Gy8qKrLatm1rxcfHW99++61brcvlsv88evRoq3PnzvbrCRMmWCEhIVZVVVW9x7B+/XpLkrV+/XrLsiyroqLC6tChg9WzZ0+3fa1evdqSZM2YMcNtf5KsJ554wm2bP/3pT624uLh691lj//79liTr8ccft44ePWoVFBRYH330kdW3b19LkrV8+XK79sknn7SCg4Otzz77zG0bU6dOtby9va0DBw5YlmVZ69atsyRZDz74YK39ffdcnTp1qtbyxMRE65JLLnEbGzhwoDVw4MBaPb/xxhsNHtsFF1xg9e7du8Ga75JkzZw5s9Z4586drdGjR9uva95zAwYMqPX3OnLkSKtDhw5u419//bXlcDjc/o4GDRpk9erVyyorK7PHXC6X1b9/f6tr166N7hkATMUtjgDQyjmdTl100UWKjo5Wamqq2rRpo3feeUcdO3Z0q/v+FaXly5crNDRUgwcP1rFjx+xfcXFxatOmjdavXy/p9JWwEydOaOrUqbU+L+bl5VVvX2FhYSotLVVOTk6jj2Xr1q06cuSI7rvvPrd9DR8+XN26ddNf//rXWuv86le/cnt97bXX6l//+lej9zlz5kxddNFFioiI0LXXXqs9e/Zozpw5blefli9frmuvvVYXXHCB27lyOp2qrq7Whg0bJElvv/22vLy8NHPmzFr7+e65CgwMtP9cXFysY8eOaeDAgfrXv/6l4uLiRvden5KSErVt2/ZHb6c+48aNk7e3t9tYSkqKjhw54na76ooVK+RyuZSSkiJJOn78uNatW6c77rhDJ06csM/jN998o8TERO3bt6/WrawAcK7hFkcAaOUWLFigyy67TD4+PgoPD9fll18uh8P9/9/5+PioU6dObmP79u1TcXGxOnToUOd2jxw5Ium/t0zW3KLWWPfdd5/eeustDRs2TB07dtSQIUN0xx13aOjQofWu8+9//1uSdPnll9da1q1bN/397393G6v5jNd3XXDBBW6foTt69KjbZ9LatGmjNm3a2K/Hjx+v22+/XWVlZVq3bp3mzZtX6zNs+/bt0z//+c9a+6rx3XMVFRWldu3a1XuMkrRx40bNnDlTeXl5OnXqlNuy4uJihYaGNrj+DwkJCdGJEyd+1DYaEhMTU2ts6NChCg0N1bJlyzRo0CBJp29vjI2N1WWXXSZJ+vzzz2VZlh599FE9+uijdW77yJEjtf7nAgCcSwhoANDK9evXz/5sU338/f1rhTaXy6UOHTpoyZIlda5TXxhprA4dOmjnzp16//339d577+m9997TG2+8oVGjRmnx4sU/ats1vn8Vpy59+/a1g590+orZdx+I0bVrVzmdTknSTTfdJG9vb02dOlU33HCDfV5dLpcGDx6sKVOm1LmPmgDSGF988YUGDRqkbt266fnnn1d0dLT8/Py0Zs0avfDCC2f8VQV16datm3bu3KmKioof9RUG9T1s5btXAGv4+/srOTlZ77zzjn7/+9+rsLBQGzdu1G9/+1u7pubYJk+erMTExDq3femllza5XwAwAQENANAkP/nJT/TBBx/ommuuqfMH7u/WSdKuXbvO+IdnPz8//exnP9PPfvYzuVwu3XfffXrllVf06KOP1rmtzp07S5I+/fRT+2mUNT799FN7+ZlYsmSJvv32W/v1JZdc0mD9b37zG7366quaPn26srOzJZ0+BydPnrSDXH1+8pOf6P3339fx48frvYr27rvvqry8XKtWrdLFF19sj9fcUtocfvaznykvL09vv/12vV+18F0XXHBBrS+urqio0Ndff31G+01JSdHixYuVm5urPXv2yLIs+/ZG6b/n3tfX9wfPJQCcq/gMGgCgSe644w5VV1frySefrLWsqqrK/oF9yJAhatu2rWbNmqWysjK3Osuy6t3+N9984/ba4XDoyiuvlCSVl5fXuU6fPn3UoUMHZWVludW899572rNnj4YPH96oY/uua665Rk6n0/71QwEtLCxM99xzj95//33t3LlT0ulzlZeXp/fff79WfVFRkaqqqiRJI0aMkGVZevzxx2vV1Zyrmqt+3z13xcXFeuONN8742Orzq1/9SpGRkZo0aZI+++yzWsuPHDmip556yn79k5/8xP4cXY2FCxee8dcVOJ1OtWvXTsuWLdOyZcvUr18/t9shO3TooOuvv16vvPJKneHv6NGjZ7Q/ADARV9AAAE0ycOBA3XPPPZo1a5Z27typIUOGyNfXV/v27dPy5cv14osv6rbbblNISIheeOEF3X333erbt6/uvPNOXXDBBfr444916tSpem9XvPvuu3X8+HHdeOON6tSpk/7973/rpZdeUmxsrLp3717nOr6+vnrmmWc0duxYDRw4UCNHjrQfs9+lSxc99NBDLXlKbBMmTNDcuXP1u9/9TkuXLtXDDz+sVatW6aabbtKYMWMUFxen0tJSffLJJ1qxYoW+/PJLtW/fXjfccIN+8YtfaN68edq3b5+GDh0ql8uljz76SDfccIMyMjI0ZMgQ+8riPffco5MnT+rVV19Vhw4dzviKVX0uuOACvfPOO0pKSlJsbKzuuusuxcXFSZK2b9+uP//5z0pISLDr7777bv3qV7/SiBEjNHjwYH388cd6//331b59+zPar6+vr37+859r6dKlKi0t1XPPPVerZsGCBRowYIB69eqlcePG6ZJLLlFhYaHy8vJ06NAhffzxxz/u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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "grn.varp['GRN']" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "6d7beaf2", - "metadata": {}, - "outputs": [], - "source": [ - "attns = grn.varp['GRN']\n", - "attns[attns < 0.01] = 0\n", - "attns = sparse.csr_matrix(attns)" + "grn.varp['GRN'] = grn.varp['all'][:,:,4].todense()\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" ] }, { "cell_type": "code", "execution_count": 51, - "id": "b3b6009c", + "id": "3d7e796a", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { + "image/png": "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", "text/plain": [ - "3000" + "
" ] }, - "execution_count": 51, "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "grn.shape[1]" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "6a4e49d4", - "metadata": {}, - "outputs": [ + "output_type": "display_data" + }, { "data": { + "image/png": "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", "text/plain": [ - "array([18, 14, 17, ..., 16, 18, 14])" + "
" ] }, - "execution_count": 84, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 0.0 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0009970089730807576 \n", + "recall: 0.007322788517867604 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 119/128 [00:00<00:00, 166.62it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 165.55it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0007828447878904886\n", + "Area Under Precision-Recall Curve (AUPRC): 0.0007717318752565842\n", + "EPR: 0.7589732260046261\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAALCCAYAAACr5vABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3v0lEQVR4nO3dfZyM9f7H8ffM3u+y1k2sewohd1ns2XJTLOumst0I6ZA2nGpPaisnHdG9X0qhnKRT6BwiKkeOuw1FbOS2FEWR210klmVv5/r9MWeHsbPb7trZ69rd1/Px8JiZaz7XXJ+Z5jt5u77XddkMwzAEAAAAADCd3ewGAAAAAABOBDQAAAAAsAgCGgAAAABYBAENAAAAACyCgAYAAAAAFkFAAwAAAACLIKABAAAAgEUQ0AAAAADAIghoAAAAAGARBDQAgCXcd999atSoUZHW+eKLL2Sz2fTFF194paey7qabbtJNN93kenzgwAHZbDbNnj3btJ4AAAUjoAFABTV79mzZbDbXn8DAQDVr1kzx8fFKSUkxuz3Lyw07uX/sdruqVaumPn36KCkpyez2SkRKSoqeeOIJNW/eXMHBwQoJCVFERIRefPFFnT592uz2AKBc8jW7AQCAuZ5//nk1btxY6enp+uqrr/T2229r2bJl2rVrl4KDg0utj3fffVcOh6NI63Tt2lUXLlyQv7+/l7r6Y4MHD1bfvn2Vk5Ojn376Sf/4xz90880365tvvlHr1q1N6+tKffPNN+rbt6/OnTune++9VxEREZKkLVu26P/+7/+0bt06rVq1yuQuAaD8IaABQAXXp08fdejQQZL0wAMPqHr16nr99df1n//8R4MHD/a4TlpamkJCQkq0Dz8/vyKvY7fbFRgYWKJ9FFX79u117733uh536dJFffr00dtvv61//OMfJnZWfKdPn9btt98uHx8fbd++Xc2bN3d7/qWXXtK7775bItvyxncJAMoypjgCANx0795dkrR//35JzmPDKlWqpJ9//ll9+/ZV5cqVNWTIEEmSw+HQlClTdN111ykwMFC1atXSqFGj9Pvvv+d53eXLl6tbt26qXLmyQkND1bFjR82bN8/1vKdj0ObPn6+IiAjXOq1bt9bUqVNdz+d3DNrChQsVERGhoKAg1ahRQ/fee6+OHDniVpP7vo4cOaLY2FhVqlRJV111lZ544gnl5OQU+/Pr0qWLJOnnn392W3769Gk9+uijql+/vgICAtSkSRO98sorefYaOhwOTZ06Va1bt1ZgYKCuuuoq9e7dW1u2bHHVzJo1S927d1fNmjUVEBCgli1b6u233y52z5d75513dOTIEb3++ut5wpkk1apVS+PGjXM9ttlsevbZZ/PUNWrUSPfdd5/rce602i+//FIPPfSQatasqXr16mnRokWu5Z56sdls2rVrl2vZnj17dNddd6latWoKDAxUhw4dtGTJkit70wBgEexBAwC4yQ0W1atXdy3Lzs5WTEyMOnfurNdee8019XHUqFGaPXu2hg8frkceeUT79+/XW2+9pe3bt2vDhg2uvWKzZ8/W/fffr+uuu05jx45VWFiYtm/frhUrVuiee+7x2EdiYqIGDx6sHj166JVXXpEk7d69Wxs2bNDo0aPz7T+3n44dO2rixIlKSUnR1KlTtWHDBm3fvl1hYWGu2pycHMXExCgyMlKvvfaaPv/8c02ePFnXXHONHnzwwWJ9fgcOHJAkVa1a1bXs/Pnz6tatm44cOaJRo0apQYMG2rhxo8aOHatjx45pypQprtq4uDjNnj1bffr00QMPPKDs7GytX79eX3/9tWtP59tvv63rrrtOt912m3x9ffXZZ5/poYceksPh0MMPP1ysvi+1ZMkSBQUF6a677rri1/LkoYce0lVXXaXx48crLS1N/fr1U6VKlfTRRx+pW7dubrULFizQddddp1atWkmSvv/+e914442qW7eunnrqKYWEhOijjz5SbGysPv74Y91+++1e6RkASo0BAKiQZs2aZUgyPv/8c+PEiRPGoUOHjPnz5xvVq1c3goKCjMOHDxuGYRjDhg0zJBlPPfWU2/rr1683JBlz5851W75ixQq35adPnzYqV65sREZGGhcuXHCrdTgcrvvDhg0zGjZs6Ho8evRoIzQ01MjOzs73Paxdu9aQZKxdu9YwDMPIzMw0atasabRq1cptW0uXLjUkGePHj3fbniTj+eefd3vN66+/3oiIiMh3m7n2799vSDKee+4548SJE0ZycrKxfv16o2PHjoYkY+HCha7aF154wQgJCTF++uknt9d46qmnDB8fH+PgwYOGYRjGmjVrDEnGI488kmd7l35W58+fz/N8TEyMcfXVV7st69atm9GtW7c8Pc+aNavA91a1alWjbdu2BdZcSpIxYcKEPMsbNmxoDBs2zPU49zvXuXPnPP9dBw8ebNSsWdNt+bFjxwy73e7236hHjx5G69atjfT0dNcyh8Nh3HDDDUbTpk0L3TMAWBVTHAGggouOjtZVV12l+vXra9CgQapUqZI+/fRT1a1b163u8j1KCxcuVJUqVdSzZ0+dPHnS9SciIkKVKlXS2rVrJTn3hJ09e1ZPPfVUnuPFbDZbvn2FhYUpLS1NiYmJhX4vW7Zs0fHjx/XQQw+5batfv35q3ry5/vvf/+ZZ5y9/+Yvb4y5duuiXX34p9DYnTJigq666SuHh4erSpYt2796tyZMnu+19Wrhwobp06aKqVau6fVbR0dHKycnRunXrJEkff/yxbDabJkyYkGc7l35WQUFBrvtnzpzRyZMn1a1bN/3yyy86c+ZMoXvPT2pqqipXrnzFr5OfESNGyMfHx23ZwIEDdfz4cbfpqosWLZLD4dDAgQMlSadOndKaNWt099136+zZs67P8bffflNMTIz27t2bZyorAJQ1THEEgApu+vTpatasmXx9fVWrVi1de+21stvd//3O19dX9erVc1u2d+9enTlzRjVr1vT4usePH5d0ccpk7hS1wnrooYf00UcfqU+fPqpbt6569eqlu+++W7179853nV9//VWSdO211+Z5rnnz5vrqq6/cluUe43WpqlWruh1Dd+LECbdj0ipVqqRKlSq5Ho8cOVIDBgxQenq61qxZo2nTpuU5hm3v3r369ttv82wr16WfVZ06dVStWrV836MkbdiwQRMmTFBSUpLOnz/v9tyZM2dUpUqVAtf/I6GhoTp79uwVvUZBGjdunGdZ7969VaVKFS1YsEA9evSQ5Jze2K5dOzVr1kyStG/fPhmGoWeeeUbPPPOMx9c+fvx4nn9cAICyhIAGABVcp06dXMc25ScgICBPaHM4HKpZs6bmzp3rcZ38wkhh1axZUzt27NDKlSu1fPlyLV++XLNmzdLQoUM1Z86cK3rtXJfvxfGkY8eOruAnOfeYXXpCjKZNmyo6OlqSdMstt8jHx0dPPfWUbr75Ztfn6nA41LNnT40ZM8bjNnIDSGH8/PPP6tGjh5o3b67XX39d9evXl7+/v5YtW6Y33nijyJcq8KR58+basWOHMjMzr+gSBvmdbOXSPYC5AgICFBsbq08//VT/+Mc/lJKSog0bNujll1921eS+tyeeeEIxMTEeX7tJkybF7hcArICABgAolmuuuUaff/65brzxRo9/4b60TpJ27dpV5L88+/v769Zbb9Wtt94qh8Ohhx56SO+8846eeeYZj6/VsGFDSdKPP/7oOhtlrh9//NH1fFHMnTtXFy5ccD2++uqrC6z/+9//rnfffVfjxo3TihUrJDk/g3PnzrmCXH6uueYarVy5UqdOncp3L9pnn32mjIwMLVmyRA0aNHAtz51SWhJuvfVWJSUl6eOPP873UguXqlq1ap4LV2dmZurYsWNF2u7AgQM1Z84crV69Wrt375ZhGK7pjdLFz97Pz+8PP0sAKKs4Bg0AUCx33323cnJy9MILL+R5Ljs72/UX9l69eqly5cqaOHGi0tPT3eoMw8j39X/77Te3x3a7XW3atJEkZWRkeFynQ4cOqlmzpmbMmOFWs3z5cu3evVv9+vUr1Hu71I033qjo6GjXnz8KaGFhYRo1apRWrlypHTt2SHJ+VklJSVq5cmWe+tOnTys7O1uSdOedd8owDD333HN56nI/q9y9fpd+dmfOnNGsWbOK/N7y85e//EW1a9fW448/rp9++inP88ePH9eLL77oenzNNde4jqPLNXPmzCJfriA6OlrVqlXTggULtGDBAnXq1MltOmTNmjV100036Z133vEY/k6cOFGk7QGAFbEHDQBQLN26ddOoUaM0ceJE7dixQ7169ZKfn5/27t2rhQsXaurUqbrrrrsUGhqqN954Qw888IA6duyoe+65R1WrVtXOnTt1/vz5fKcrPvDAAzp16pS6d++uevXq6ddff9Wbb76pdu3aqUWLFh7X8fPz0yuvvKLhw4erW7duGjx4sOs0+40aNdJjjz3mzY/EZfTo0ZoyZYr+7//+T/Pnz9eTTz6pJUuW6JZbbtF9992niIgIpaWl6bvvvtOiRYt04MAB1ahRQzfffLP+/Oc/a9q0adq7d6969+4th8Oh9evX6+abb1Z8fLx69erl2rM4atQonTt3Tu+++65q1qxZ5D1W+alatao+/fRT9e3bV+3atdO9996riIgISdK2bdv04YcfKioqylX/wAMP6C9/+YvuvPNO9ezZUzt37tTKlStVo0aNIm3Xz89Pd9xxh+bPn6+0tDS99tpreWqmT5+uzp07q3Xr1hoxYoSuvvpqpaSkKCkpSYcPH9bOnTuv7M0DgNnMPIUkAMA8uac8/+abbwqs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e91qXnrpJd1www0KDg5WWD4XAzp48KD69eun4OBg1axZU08++aSys7Ov6L0CgBm+/lrKznaeyKNhw8Kvl5rqvM29IPXAgc4TggAAAO8xNaAtWLBACQkJmjBhgrZt26a2bdsqJiZGx48f91i/ceNGDR48WHFxcdq+fbtiY2MVGxurXbt2uWomTZqkadOmacaMGdq0aZNCQkIUExOj9PR0V01mZqYGDBigBx980ON2cnJy1K9fP2VmZmrjxo2aM2eOZs+erfHjx5fsBwAApeDS6Y02W+HWOXxYeuop92XvvutcDgAAvMfUgPb6669rxIgRGj58uFq2bKkZM2YoODhY77//vsf6qVOnqnfv3nryySfVokULvfDCC2rfvr3eeustSc69Z1OmTNG4cePUv39/tWnTRh988IGOHj2qxYsXu17nueee02OPPabWrVt73M6qVav0ww8/6N///rfatWunPn366IUXXtD06dOVmZlZ4p8DAHhTYS9Qfam9ey/uOcuVkyPt21dyfQEAgLx8zdpwZmamtm7dqrFjx7qW2e12RUdHKykpyeM6SUlJSkhIcFsWExPjCl/79+9XcnKyonOPbJdUpUoVRUZGKikpSYMGDSpUb0lJSWrdurVq1arltp0HH3xQ33//va6//nqP62VkZCgjI8P1OPV/84OysrKUlZVVqG2jYsv9nvB9QUnJzJSSknwl2fSnP2WpsF+tRo0ku91XDsfFXW4+PoYaNsx2vUZOjl2Sj15/PUevv+6QN//9irEB5I/xAXhmtbFR2D5MC2gnT55UTk6OWwiSpFq1amnPnj0e10lOTvZYn5yc7Ho+d1l+NYWR33Yu3YYnEydO1HPPPZdn+apVqxQcHFzo7QOJiYlmt4By4scfq+rCha4KDc3Q/v0rdOBA4dd98MEGevvttnI47LLbHfrLX3bq228Pui54/dprt/6v0keSXf7+hhYv/qyE34E7xgaQP8YH4JlVxsb58+cLVWdaQCuPxo4d67aHLzU1VfXr11evXr0UGhpqYmcoK7KyspSYmKiePXvKz8/P7HZQDvzwg3Mm+003+alfv75FWrdvX+nxx3P0888OXXONoXr1WklqJUny95ekSw9oc96Pje3rlT1pjA0gf4wPwDOrjY3c2XV/xLSAVqNGDfn4+CglJcVteUpKisLDwz2uEx4eXmB97m1KSopq167t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bstTUlIUHh7ucZ3w8PAC63NvU1JSVLt2bbeadu3auWouPwlJdna2Tp065fY6nrZz6TYuFxAQoICAgDzL/fz83L4UOTk5stlsstvtsttNPwywTLHZbPr0008VGxtrditekTutMff7UZT36+3PJrefy7/PQGni+wfkj/EBeGaVsVHYHkxNB/7+/oqIiNDq1atdyxwOh1avXq2oqCiP60RFRbnVS87dlrn1jRs3Vnh4uFtNamqqNm3a5KqJiorS6dOntXXrVlfNmjVr5HA4FBkZ6apZt26d21zRxMREXXvttR6nN1YU9913n2w2m+sv6o0bN9aYMWPczpBZHl36vv39/dWkSRM9//zzXp/qd+zYMfXp06fEawEAAGBNpu++SUhI0Lvvvqs5c+Zo9+7devDBB5WWlqbhw4dLkoYOHep2EpHRo0drxYoVmjx5svbs2aNnn31WW7ZsUXx8vCTnXoRHH31UL774opYsWaLvvvtOQ4cOVZ06dVx7Flq0aKHevXtrxIgR2rx5szZs2KD4+HgNGjRIderUkSTdc8898vf3V1xcnL7//nstWLBAU6dOzXOCkoqod+/eOnbsmH755Re98cYbeueddzRhwgSz2/K63Pe9d+9ePf7443r22Wf16quveqwtqWMLw8PDPe6VvdJaAAAAWJPpAW3gwIF67bXXNH78eLVr1047duzQihUrXCfkOHjwoI4dO+aqv+GGGzRv3jzNnDlTbdu21aJFi7R48WK1atXKVTNmzBj99a9/1ciRI9WxY0edO3dOK1ascDtuZu7cuWrevLl69Oihvn37qnPnzm7XOKtSpYpWrVql/fv3KyIiQo8//rjGjx/vdq20iiogIEDh4eGqX7++YmNjFR0d7Xbw5W+//abBgwerbt26Cg4OVuvWrfXhhx+6vcZNN92kRx55RGPGjFG1atUUHh6uZ5991q1m7969ruOdWrZs6fEAz++++07du3dXUFCQqlevrpEjR7pdcPy+++5TbGysXn75ZdWqVUthYWGuPV9PPvmkqlWrpnr16mnWrFmFft8NGzbUgw8+qOjoaC1ZssRtOy+99JLq1Kmja6+9VpJ06NAh3X333QoLC1O1atXUv39/HThwwO11cy/lEBAQoLp16+rJJ590PWez2VxnKM3MzFR8fLxq166twMBANWzYUBMnTvRYW5TP5rXXXlPt2rVVvXp1Pfzww5Y50xEAAEBFZImThMTHx7v2gF3uiy++yLNswIABGjBgQL6vZ7PZ9Pzzz+v555/Pt6ZatWqaN29egX21adNG69evL7CmxKWl5f+cj4906ckZCqq126WgoD+uDQkpWn+X2bVrlzZu3KiGDRu6lqWnpysiIkJ/+9vfFBoaqv/+97/685//rGuuuUadOnVy1c2ZM0cJCQnatGmTkpKSdN999+nGG29Uz5495XA4dMcdd6hWrVratGmTzpw5o0cffdRt22lpaYqJiVFUVJS++eYbHT9+XA888IDi4+M1e/ZsV92aNWtUr149rVu3Ths2bFBcXJw2btyorl27atOmTVqwYIFGjRqlnj17ql69eoV+70FBQfrtt99cj1evXq3Q0FBXkMzKynL1t379evn6+urFF19U79699e2338rf319vv/22EhIS9H//93/q06ePfv/9d61Zs8bj9qZNm6YlS5boo48+UoMGDXTo0CEdOnTIY21hP5u1a9eqdu3aWrt2rfbt26eBAweqXbt2GjFiRKE/BwAAAJQgA15z5swZQ5Jx5swZt+UXLlwwfvjhB+PChQt5V5Ly/9O3r3ttcHD+td26udfWqOG5roiGDRtm+Pj4GCEhIUZAQIAhybDb7caiRYsKXK9fv37G448/7nrcrVs3o3Pnzm41HTt2NP72t78ZhmEYK1euNHx9fY0jR464nl++fLkhyfj0008NwzCMmTNnGlWrVjXOnTvnqvnvf/9r2O12Izk52dVvw4YNjZycHFfNtddea3Tp0sX1ODs72wgJCTE+/PDDAt93//79DcMwDIfDYSQmJhoBAQHGE0884Xq+Vq1aRkZGhmudf/3rX8a1115rOBwO17KMjAwjKCjIWLlypWEYhlGnTh3j73//u+v5nJwc4/fff3f1e+n7/etf/2p0797d7fUuVdzPJjs721UzYMAAY+DAgR5fv8DvLeBlmZmZxuLFi43MzEyzWwEsh/EBeGa1sZFfNricJfagoWy5+eab9fbbbystLU1vvPGGfH19deedd7qez8nJ0csvv6yPPvpIR44cUWZmpjIyMtyuBSc591Beqnbt2q6za+7evVv169d3HRMoKc+JY3bv3q22bdsq5JK9gDfeeKMcDod+/PFH1zTZ6667zu1smbVq1XKbEuvj46Pq1avnObPn5ZYuXapKlSopKytLDodD99xzj9u0zNatW7td2Hznzp3at2+fKleu7PY66enp+vnnn3X8+HEdPXpUPXr0KHC7ue677z717NlT1157rXr37q1bbrlFvXr18lhblM/m0otO165dW999912h+gEAAEDJI6BZzSXHCOVxyV+kJUkFBYrLT99/2XFPVyIkJERNmjSR5Dx+qm3btnrvvfcUFxcnSXr11Vc1depUTZkyRa1bt1ZISIgeffTRPCfOuPxUozabzXWa+ZLkaTvF2XZuMPX391edOnXk6+s+fEIumy567tw5RUREaO7cuXle66qrriryJRbat2+v/fv3a/ny5fr888919913Kzo6WosWLSrS61yqtP4bAAAAoHAIaFZTlGPCvFVbBHa7XU8//bQSEhJ0zz33KCgoSBs2bFD//v117733SnJeOuGnn35Sy5YtC/26LVq00KFDh3Ts2DHX9ey+/vrrPDWzZ89WWlqaKxxt2LBBdrvddZKOknRpMC2M9u3ba8GCBapZs6bbhcov1ahRI61evVo333xzoV4zNDRUAwcO1MCBA3XXXXepd+/eOnXqlKpVq+ZWV9qfDQAAAEqG6WdxRNk3YMAA+fj4aPr06ZKkpk2bKjExURs3btTu3bs1atSoPBf9/iPR0dFq1qyZhg0bpp07d2r9+vX6+9//7lYzZMgQBQYGatiwYdq1a5fWrl2rv/71r/rzn//smsJnpiFDhqhGjRrq37+/1q9fr/379+uLL77QI488osOHD0uSnn32WU2ePFnTpk3T3r17tW3bNreziV7q9ddf14cffqg9e/bop59+0sKFCxUeHq6wsDCP27byZwMAAADPCGi4Yr6+voqPj9ekSZOUlpamcePGqX379oqJidFNN92k8PBw1zXoCstut+vTTz/VhQsX1KlTJz3wwAN66aWX3GqCg4O1cuVKnTp1Sh07dtRdd92lHj166K233irBd1d8wcHBWrdunRo0aKA77rhDLVq0UFxcnNLT01171IYNG6YpU6boH//4h6677jrddttt+vnnnz2+XuXKlTVp0iR16NBBHTt21IEDB7Rs2TKPUyWt/tkAAADAM5thGIbZTZRXqampqlKlis6cOeM2xS09PV379+9X48aN3a7NBjgcDqWmpio0NLTIx6h5G99bmCkrK0vLli1T37598xw7CVR0jA/AM6uNjfyyweWs9TdAAAAAAKjACGgAAAAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "(grn.varp['all'][:,:,8]>0.01).sum(1)" + "grn.varp['GRN'] = grn.varp['all'][:,:,7].todense()\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" ] }, { "cell_type": "code", - "execution_count": 71, - "id": "30f9de84", + "execution_count": 61, + "id": "00aaa1b1", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { + "image/png": "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", "text/plain": [ - "array([0, 0, 0, ..., 0, 0, 0])" + "
" ] }, - "execution_count": 71, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 0.0 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0011231729381390905 \n", + "recall: 0.06473345049794962 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 119/128 [00:00<00:00, 166.05it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 163.62it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0008077959338505203\n", + "Area Under Precision-Recall Curve (AUPRC): 0.000770312347223414\n", + "EPR: 0.0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAALCCAYAAACr5vABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACG20lEQVR4nOzde3zO9f/H8efOJ+ZsGxaKnBLlsEgpxkR9W0fHjIQciuZQSkQkohBZOjjkGJWfxFjoW1/2JYcOilIRYkOyMXa8Pr8/Pt9dXO3QNts+17bH/XZz2/v6XK/r+ryuy7XP9tzn83l/XAzDMAQAAAAAsJyr1Q0AAAAAAEwENAAAAABwEgQ0AAAAAHASBDQAAAAAcBIENAAAAABwEgQ0AAAAAHASBDQAAAAAcBIENAAAAABwEgQ0AAAAAHASBDQAgFPo16+f6tSpk6/HfPHFF3JxcdEXX3xRJD2VdHfddZfuuusu++2jR4/KxcVFixcvtqwnAEDuCGgAUEYtXrxYLi4u9n/e3t668cYbNXz4cMXHx1vdntPLDDuZ/1xdXVW5cmXdc889io2Ntbq9QhEfH6/Ro0erYcOG8vX1lZ+fn1q0aKEpU6bo/PnzVrcHAKWSu9UNAACsNXnyZNWtW1fJycn6z3/+owULFmjjxo06cOCAfH19i62Pd955RzabLV+PufPOO3X58mV5enoWUVf/rGfPnuratasyMjL0888/66233tLdd9+tr7/+Wk2bNrWsr2v19ddfq2vXrrp48aL69OmjFi1aSJL27NmjV199VV9++aW2bNlicZcAUPoQ0ACgjLvnnnvUsmVLSdITTzyhKlWq6PXXX9f//d//qWfPntk+JikpSX5+foXah4eHR74f4+rqKm9v70LtI79uvfVW9enTx377jjvu0D333KMFCxborbfesrCzgjt//rweeOABubm5af/+/WrYsKHD/VOnTtU777xTKOsqis8SAJRkHOIIAHDQoUMHSdKRI0ckmeeGlStXTr/++qu6du2q8uXLq3fv3pIkm82m2bNnq0mTJvL29lZAQIAGDx6sv/76K8vzbtq0Se3bt1f58uXl7++vVq1aacWKFfb7szsHbdWqVWrRooX9MU2bNtWcOXPs9+d0DtqaNWvUokUL+fj4qGrVqurTp4/++OMPh5rM1/XHH38oPDxc5cqVU7Vq1TR69GhlZGQU+P274447JEm//vqrw/Lz589r5MiRCg4OlpeXl+rVq6fp06dn2Wtos9k0Z84cNW3aVN7e3qpWrZq6dOmiPXv22GsWLVqkDh06qHr16vLy8lLjxo21YMGCAvf8d2+//bb++OMPvf7661nCmSQFBARo/Pjx9tsuLi566aWXstTVqVNH/fr1s9/OPKz23//+t4YOHarq1aurVq1aWrt2rX15dr24uLjowIED9mWHDh3Sww8/rMqVK8vb21stW7bU+vXrr+1FA4CTYA8aAMBBZrCoUqWKfVl6errCwsLUrl07zZw5037o4+DBg7V48WL1799fTz/9tI4cOaJ58+Zp//792rFjh32v2OLFi/X444+rSZMmGjdunCpWrKj9+/crOjpavXr1yraPmJgY9ezZUx07dtT06dMlSQcPHtSOHTs0YsSIHPvP7KdVq1aaNm2a4uPjNWfOHO3YsUP79+9XxYoV7bUZGRkKCwtTSEiIZs6cqc8//1yzZs3SDTfcoCFDhhTo/Tt69KgkqVKlSvZlly5dUvv27fXHH39o8ODBuu6667Rz506NGzdOp06d0uzZs+21AwYM0OLFi3XPPffoiSeeUHp6ur766iv997//te/pXLBggZo0aaJ//etfcnd316effqqhQ4fKZrNp2LBhBer7auvXr5ePj48efvjha36u7AwdOlTVqlXThAkTlJSUpG7duqlcuXL68MMP1b59e4fa1atXq0mTJrrpppskST/88INuv/121axZU88995z8/Pz04YcfKjw8XB999JEeeOCBIukZAIqNAQAokxYtWmRIMj7//HPjzJkzxvHjx41Vq1YZVapUMXx8fIwTJ04YhmEYERERhiTjueeec3j8V199ZUgyli9f7rA8OjraYfn58+eN8uXLGyEhIcbly5cdam02m30cERFh1K5d2357xIgRhr+/v5Genp7ja9i+fbshydi+fbthGIaRmppqVK9e3bjpppsc1rVhwwZDkjFhwgSH9UkyJk+e7PCct9xyi9GiRYsc15npyJEjhiRj0qRJxpkzZ4y4uDjjq6++Mlq1amVIMtasWWOvffnllw0/Pz/j559/dniO5557znBzczOOHTtmGIZhbNu2zZBkPP3001nWd/V7denSpSz3h4WFGddff73Dsvbt2xvt27fP0vOiRYtyfW2VKlUymjVrlmvN1SQZEydOzLK8du3aRkREhP125meuXbt2Wf5fe/bsaVSvXt1h+alTpwxXV1eH/6OOHTsaTZs2NZKTk+3LbDab0bZtW6N+/fp57hkAnBWHOAJAGRcaGqpq1aopODhYPXr0ULly5fTJJ5+oZs2aDnV/36O0Zs0aVahQQZ06ddLZs2ft/1q0aKFy5cpp+/btksw9YRcuXNBzzz2X5XwxFxeXHPuqWLGikpKSFBMTk+fXsmfPHp0+fVpDhw51WFe3bt3UsGFDffbZZ1ke8+STTzrcvuOOO/Tbb7/leZ0TJ05UtWrVFBgYqDvuuEMHDx7UrFmzHPY+rVmzRnfccYcqVark8F6FhoYqIyNDX375pSTpo48+kouLiyZOnJhlPVe/Vz4+PvZxQkKCzp49q/bt2+u3335TQkJCnnvPSWJiosqXL3/Nz5OTgQMHys3NzWFZ9+7ddfr0aYfDVdeuXSubzabu3btLks6dO6dt27bp0Ucf1YULF+zv459//qmwsDAdPnw4y6GsAFDScIgjAJRx8+fP14033ih3d3cFBASoQYMGcnV1/Pudu7u7atWq5bDs8OHDSkhIUPXq1bN93tOnT0u6cshk5iFqeTV06FB9+OGHuueee1SzZk117txZjz76qLp06ZLjY37//XdJUoMGDbLc17BhQ/3nP/9xWJZ5jtfVKlWq5HAO3ZkzZxzOSStXrpzKlStnvz1o0CA98sgjSk5O1rZt2zR37tws57AdPnxY3333XZZ1Zbr6vapRo4YqV66c42uUpB07dmjixImKjY3VpUuXHO5LSEhQhQoVcn38P/H399eFCxeu6TlyU7du3SzLunTpogoVKmj16tXq2LGjJPPwxubNm+vGG2+UJP3yyy8yDEMvvviiXnzxxWyf+/Tp01n+uAAAJQkBDQDKuNatW9vPbcqJl5dXltBms9lUvXp1LV++PNvH5BRG8qp69er65ptvtHnzZm3atEmbNm3SokWL1LdvXy1ZsuSanjvT3/fiZKdVq1b24CeZe8yunhCjfv36Cg0NlSTde++9cnNz03PPPae7777b/r7abDZ16tRJY8eOzXYdmQEkL3799Vd17NhRDRs21Ouvv67g4GB5enpq48aNeuONN/J9qYLsNGzYUN98841SU1Ov6RIGOU22cvUewExeXl4KDw/XJ598orfeekvx8fHasWOHXnnlFXtN5msbPXq0wsLCsn3uevXqFbhfAHAGBDQAQIHccMMN+vzzz3X77bdn+wv31XWSdODAgXz/8uzp6an77rtP9913n2w2m4YOHaq3335bL774YrbPVbt2bUnSTz/9ZJ+NMtNPP/1kvz8/li9frsuXL9tvX3/99bnWv/DCC3rnnXc0fvx4RUdHSzLfg4sXL9qDXE5uuOEGbd68WefOnctxL9qnn36qlJQUrV+/Xtddd519eeYhpYXhvvvuU2xsrD766KMcL7VwtUqVKmW5cHVqaqpOnTqVr/V2795dS5Ys0datW3Xw4EEZhmE/vFG68t57eHj843sJACUV56ABAArk0UcfVUZGhl5++eUs96Wnp9t/Ye/cubPKly+vadOmKTk52aHOMIwcn//PP/90uO3q6qqbb75ZkpSSkpLtY1q2bKnq1asrKirKoWbTpk06ePCgunXrlqfXdrXbb79doaGh9n//FNAqVqyowYMHa/Pmzfrmm28kme9VbGysNm/enKX+/PnzSk9PlyQ99NBDMgxDkyZNylKX+V5l7vW7+r1LSEjQokWL8v3acvLkk08qKChIo0aN0s8//5zl/tOnT2vKlCn22zfccIP9PLpMCxcuzPflCkJDQ1W5cmWtXr1aq1evVuvWrR0Oh6xevbruuusuvf3229mGvzNnzuRrfQDgjNiDBgAokPbt22vw4MGaNm2avvnmG3Xu3FkeHh46fPiw1qxZozlz5ujhhx+Wv7+/3njjDT3xxBNq1aqVevXqpUqVKunbb7/VpUuXcjxc8YknntC5c+fUoUMH1apVS7///rvefPNNNW/eXI0aNcr2MR4eHpo+fbr69++v9u3bq2fPnvZp9uvUqaNnnnmmKN8SuxEjRmj27Nl69dVXtWrVKo0ZM0br16/Xvffeq379+qlFixZKSkrS999/r7Vr1+ro0aOqWrWq7r77bj322GOaO3euDh8+rC5dushms+mrr77S3XffreHDh6tz5872PYuDBw/WxYsX9c4776h69er53mOVk0qVKumTTz5R165d1bx5c/Xp00ctWrSQJO3bt08rV65UmzZt7PVPPPGEnnzyST300EPq1KmTvv32W23evFlVq1bN13o9PDz04IMPatWqVUpKStLMmTOz1MyfP1/t2rVT06ZNNXDgQF1//fWKj49XbGysTpw4oW+//fbaXjwAWM3KKSQBANbJnPL866+/zrUuIiLC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s13fL7/8ovLly6tixYrX9DpRuk2YIO3ZI1WqJH3wgeTmZnVHAAAAKGksD2irV69WZGSkJk6cqH379qlZs2YKCwvT6dOns63fuXOnevbsqQEDBmj//v0KDw9XeHi4Dhw4YK+ZMWOG5s6dq6ioKO3atUt+fn4KCwtTcnKyvaZ379764YcfFBMTow0bNujLL7/UoEGDsqwvLS1NPXv21B133FH4Lx6lxtat0owZ5vjdd6VataztBwAAACWT5QHt9ddf18CBA9W/f381btxYUVFR8vX11fvvv59t/Zw5c9SlSxeNGTNGjRo10ssvv6xbb71V8/43VZ5hGJo9e7bGjx+v+++/XzfffLOWLl2qkydPat26dZKkgwcPKjo6Wu+++65CQkLUrl07vfnmm1q1apVOnjzpsL7x48erYcOGevTRR4v0fUDJdfasOZW+YUiDBkkPPmh1RwAAACipLA1oqamp2rt3r0JDQ+3LXF1dFRoaqtjY2GwfExsb61AvSWFhYfb6I0eOKC4uzqGmQoUKCgkJsdfExsaqYsWKatmypb0mNDRUrq6u2rVrl33Ztm3btGbNGs2fP//aXyxKJcOQnnhCOnlSathQev11qzsCAABASeZu5crPnj2rjIwMBQQEOCwPCAjQoUOHsn1MXFxctvVxcXH2+zOX5VZTvXp1h/vd3d1VuXJle82ff/6pfv36admyZfL398/T60lJSVFKSor9dmJioiTzMMm0tLQ8PQdKloULXfV//+cmDw9DS5aky9NTsvK/OvNzxucNgJXYFgFwBs62LcprH5YGNGc2cOBA9erVS3feeWeeHzNt2jRNmjQpy/ItW7bI19e3MNuDEzh+vLxGjWovSerT5wedOvWrTp2yuKn/iYmJsboFAGBbBMApOMu26NKlS3mqszSgVa1aVW5uboqPj3dYHh8fr8DAwGwfExgYmGt95tf4+HgFBQU51DRv3txe8/dJSNLT03Xu3Dn747dt26b169dr5syZksxz22w2m9zd3bVw4UI9/vjjWXobN26cIiMj7bcTExMVHByszp0753kvHEqG5GSpXTt3paa6qFMnmxYsaCBX1wZWt6W0tDTFxMSoU6dO8vDwsLodAGUU2yIAzsDZtkWZR9f9E0sDmqenp1q0aKGtW7cqPDxckmSz2bR161YNz7za79+0adNGW7du1ciRI+3LYmJi1KZN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lCIi8vccvr5SfiboW7JkiQYMGKDdu3drz549GjRokK677joNHDgwx8e89NJLevXVVzV79my5u/OxAwAAALLDb8pO4tIlqVy5a3sOm00aNsz8lx8XL0p+fnmvDw4O1htvvCEXFxc1aNBA33//vd54441cA1qvXr3Uv3///DUGAAAAlDEc4oh8u+222xyuidWmTRsdPnxYU6dOVbly5ez/jh07Zq9p2bKlFa0CAAAAJQp70JyEr6+5Jys//vhDatTI3HOWyc1N+vFHqWbN/K27MDz55JPq3r27/XaNGjXsY7/87KIDAAAAyigCmpNwccnfYYaSdOON0sKF0uDBUkaGGc7efttcXpR27drlcPu///2v6tevrypVqqhKlSpFu3IAAACgFCOglXADBkhhYdIvv0j16km1ahX9Oo8dO6bIyEgNHjxY+/bt05tvvqlZs2YV/YoBAACAUo6AVgrUqlU8wSxT3759dfnyZbVu3Vpubm4aMWKEBg0aVHwNAAAAAKUUAQ355uHhodmzZ2vBggV5qs/tGmkAAAAArmAWRwAAAABwEgQ0AAAAAHASHOKIfPniiy+sbgEAAAAotZxiD9r8+fNVp04deXt7KyQkRLt37861fs2aNWrYsKG8vb3VtGlTbdy40eF+wzA0YcIEBQUFycfHR6GhoTp8+LBDzblz59S7d2/5+/urYsWKGjBggC7+7UJk3333ne644w55e3srODhYM2bMKJwXDAAAAADZsDygrV69WpGRkZo4caL27dunZs2aKSwsTKdPn862fufOnerZs6cGDBig/fv3Kzw8XOHh4Tpw4IC9ZsaMGZo7d66ioqK0a9cu+fn5KSwsTMnJyfaa3r1764cfflBMTIw2bNigL7/80mEmwsTERHXu3Fm1a9fW3r179dprr+mll17SwoULi+7NAAAAAFCmWR7QXn/9dQ0cOFD9+/dX48aNFRUVJV9fX73//vvZ1s+ZM0ddunTRmDFj1KhRI7388su69dZbNW/ePEnm3rPZs2dr/Pjxuv/++3XzzTdr6dKlOnnypNatWydJOnjwoKKjo/Xuu+8qJCRE7dq105tvvqlVq1bp5MmTkqTly5crNTVV77//vpo0aaIePXro6aef1uuvv14s7wsAAACAssfSc9BSU1O1d+9ejRs3zr7M1dVVoaGhio2NzfYxsbGxioyMdFgWFhZmD19H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GDNmjGbMmCFJ+vzzz5Wfn6+9e/dq1qxZkqRvv/1Wubm5A57jdrslSenp6fcd2+/36++//9YHH3ygRx99VG63W8XFxQqFQnGYCQAgURDQAAAYBIfDoa1bt6qiokIXLlyQ2+3W1atXVVJSctf9Z8+erZqaGoXD4buuop05c0Yff/yxli5dKklqaWnRtWvX4joHAID5uEgIAACDtGbNGjmdTu3evVtbtmzRpk2bVFNTo4sXL6qxsVEfffSRampqJEkbNmxQIBDQ888/r59//lm///679u3bp99++02SlJeXp3379unXX3/VTz/9pBdffPE/V90AAMmPFTQAAAbJ5XJpw4YN2rFjhy5fvqzx48ersrJSly5dUlZWlubOnautW7dKksaNG6cTJ07ozTffVElJiZxOp3w+n+bPny9J2rt3r1577TXNnTtXXq9X27dv15YtW+ycHgDAAFY0Go3aXQQAAAAAgK84AgAAAIAxCGgAAAAAYAgCGgAAAAAYgoAGAAAAAIYgoAEAAACAIQhoAAAAAGAIAhoAAAAAGIKABgAAAACGIKABAAAAgCEIaAAAAABgCAIaAAAAABiCgAYAAAAAhvgf4zTSmdzgoEIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "(grn.varp['all'][:,:,0]>0.01).sum(1)" + "grn.varp['GRN'] = grn.varp['all'][:,:,np.array([grn.varp['all'][:,:,i].sum(1).min() > 0 for i in range(grn.varp['all'].shape[2]) ])].mean(-1).todense().T\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" ] }, { "cell_type": "code", - "execution_count": 50, - "id": "47e43743", + "execution_count": 60, + "id": "a0331051", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { + "image/png": "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", "text/plain": [ - "265.45233333333334" + "
" ] }, - "execution_count": 50, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "data": { + "image/png": "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cQMA8NFHH/EMjxBCSGulUzdsRbfrKVOmYOfOncrt8+bNw/79+zWO9Xn66aexa9euVtUNu6CgAE5OTkhPTzdaN0RCCGkJFKsB5OfnNzgZtK4M6oZ9//59pKSktJmxLImJiQCATp1opmpCSNuUmJiIgQMHGqUuegakBz+/mrE7169fR3p6Ou8vZ2dnjBo1SuV13X9HjRqFUaNGKbfV/l7xpSijOEZxXO3ja5cRiUQq565dd+1zaDq2biyarkcRQ90yteupG2vd6637XgFQiUFxHXWvq+756763da+ldmy1j6l77XXfk9rltH0/atQolfda03unrb7asdSNS9P3ul5D3XLa3pe6sSquRdN564tH23VqO6bu9eqyz9nZucHYtJ1T28+npt9LTb972v6PNP1u1P1/1/Yeafo/03Tehq5Vl/eCz9f169dVPgeNgVY804NivSMPDw+DmuBEIhEsLS3h4eGhfO3h4aHyr2KSVMU2S0tL5fcKijKKYxTbah+v4OHhAYFAoHLu2nXXPoemY2ufv3bsta9HEUPdMrXjVJRXbK97vbXrBWoGOteOT3EdtcsrXtc+f+3YFMdqi632+6ppclpN8dWto+7xtd/runHUjafue1H356K+8+l6DXX/D7W9L5reM4FAoPH/vfb5tf1cavt/1VRX3Z/vhvaJRKIGY9N2Tm0/n5p+LzX97mmKS9O1avp/1/a+11X350HTdTR0ncakWEPNWOu+AXQHRAghxEQoARFCCDEJvZrgysrKkJaWpvJaIT09XWV6ntr7CCGEkLr0SkD79++Ht7e32nbGGLy8vIwVEyGEkDZArwRU35AhmpyUEEKIPvRKQPqO96GkRAghRBudExAlE0IIIcakUwKi5RcIIYQYG3XDJoQQYhKUgAghhJgEJSBCCCEmQQmIEEKISVACIoQQYhKUgAghhJgEJSBCCCEmQQmIEEKISVACIoQQYhKUgAghhJgEJSBCCCEmQQmIEEKISVACIoQQYhJ6rQfU1slkMgBAUVGRQfXI5XJUV1cr65HL5SgqKlL5t7q6WmVfdXW18nsFRRnFMYpttY9XKCoqAmNM5dy16659Dk3H1j5/7dhrX48ihrplasepKK/YXvd66763jDGV+BTXUbu84nXt89eOTXGstthqv691r7329dWuu24ddY+v/V7XjaNuPHXfi7o/F/WdT9drqPt/qO190fSeMcY0/r/XPr+2n0tt/6+a6qr7893QPrlc3mBs2s6p7edT0++lpt89TXFpulZN/+/a3ve66v48aLqOhq7TmBR1Kj4HjYFjtNCPzs6fP4+goCBTh0EIISZz7tw5DBw40Ch1UQLSQ0FBAZycnDAfgNXDbbXbMDW1Z2pbQ7a+tWWFOsSiT9upoe2s+q2Da/zzG6uOxqxPwdD3qrbm9r7xrcuQGHR9P3U9hy7ldDmnpt/R+o6re976Xiu+r12f4nuhljKCWv/W/p6rta32a9TZJqxTtvb35g/LVwDoDiA/Px+Ojo6aL1RP1ASnB6Gw5r/fAbonIG0/8C0pAZn6eGPV0Zj1KRgzAenyc9CQlp6AjJlYdC3HNwHVVzefBFR7m7YEpOnfuglIWGt73f31lambgCoVMQiN8ZOpGjchhBDSpCgBEUIIMQlKQIQQQkyCEhAhhBCToARECCHEJCgBEUIIMQlKQIQQQkyCEhAhhBCT4DUQtaysDLm5uQAAW1tbtVGx+fn5KCkpAQC4uLjAyspKrQ5CCCFtG687oJUrV8Lb2xve3t44evSo2v6TJ08q969atcrQGAkhhLRCvBJQTEwMGGNwcXHBpEmT1PZPnDgRHTp0AGMMR44cMTRGQgghrRCvBJScnAyO49CvXz9wnOaZk3r37g0AuHv3Lv/oCCGEtFq8ElB+fj6A/9Z10USxT1GWEEIIqY1XArKysgJjDPHx8RqTkEwmQ3x8PADAwsLCsAgJIYS0SrwSUKdOnQAA2dnZGjsZrFy5EllZWeA4Dp07dzYsQkIIIa0Sr27Yw4cPV97hfPTRRzhy5AhGjBgBADh27JhKz7jhw4cbHiUhhJBWh9eKqJcuXUL//v3BcRwYY2odERRVchyHc+fOoX///saJ1sSKiopgb2+PT0AL0jXl8caqozHrU6AF6YwbAy1IpxqTqRekswcgkUhgZ2en+UL1xOtno2/fvpg3b55K8mGMqSQeAJg7d26rST6EEEKMi/cfJ9988w3efPNNCAQC1L6JUiSl119/Hd9++61RgiSEENL68GqCqy0pKQl79uxBcnIyAMDHxwcTJ06En5+fUQJsTqgJzjTHG6uOxqxPgZrgjBsDNcGpxtTamuAMTkBtCSUg0xxvrDoasz4FSkDGjYESkGpMrS0BNdbvYatEuZoQ0tYZ83NQp27Yn3zyCQAgMDAQTz31lPK1rj766CP9I2uGiouLAQAz0tPh4eFh4mgIIYSfzMxMuLu763XMg4wMoFMnFBcXw97e3ihx6NQEJxAIwHEcpkyZgp07dypf60omkxkUZHMhkUjg4OCAwsJCo/0HEEJIU/v111/xzDPP6HVMY3z+NWoTXGtrslIkXX2SLyGEtAaN8fmn80wIdZNJa0suhBDSVoSEhJg6BAA6JqCNGzcCALy8vFReE0IIaXnS0tLg5uZm6jB0S0Avvvhiva8JIYS0HMnJyRg0aJCpw+A3GenMmTMBAEKhED/88APMzMyMGlRrVFZRieLSCnRwps4LhBDTEol4ffQbHa8otm7dCrlcjqCgIEo+Orqdcg/VUhklIEKIyT399NOmDgEAz15wHTp0AAA4OzsbNZjWTCiseaurpVITR0IIaet27dpl6hAA8ExAo0aNAmMM165dM3Y8rZaVhRgAUFZRZeJICCFtXVVV8/gc4pWAli5dCjs7O2RkZGDx4sXUJVsH4odNlVVVdAdECDEtT09PU4cAgOczoC1btiAkJAR///03Pv30U/z555945JFH0LFjRwgE6jmttUzFYwiBoGbwVnkz+cuDENJ2+fr6mjoEADxnw649FU/dReg0aS1T8Shmw+YzG2zm/Xxk3s+HUCBAN++OsLa0aKQoCSGkfnym4jHk808bg6fi4ThOa/Khpjl1Mrkc15MykJVbADm9P4SQNox3Z3BKLvrjACjetfTsPNy7XwA3FwfY2VjBxoruiAghTWP48OGmDgEAzwREU/EYh0wuR8b9fOB+PszNRHC0tYaNlQVsrCxgbiaiSU8JIY3i/v376NSpk6nD4JeAaCoew3kvfg/t/v4LACAXmaHKzQ25EyYhafYrgEgEM5EQ1pYWsLexhJWlGGIzM5iJhJSUCCEGu3PnDvr372/qMPgloOPHjwMA2rVrh4CAAKMG1JYUDgvG3eWfgquqgsOJo/Bc8TGYmRmyXpqLaqkMhcWlKCwuVTnGwtwMlhbmsLYQQyw2g5WFGGJzMwgoMRFCWhhenRBCQkIQGhqKJUuWaC0za9YstG/fXjlrAlHHzM1R7dIOVR3dcX/acygaPBSOMYchlEjgs+hd9BvaH/0H9kSXubMgTk0BAFRUVaP01h1YTn0K9p08YO7ogAr/LkhatwE3kjJwN/M+sh4UIE9SjNLyClRLZfS8jhCiQt8ecI2l0RakKyoqQm5uLnJzc3nXcf78eYwfPx4ODg6wtrbG4MGDsXPnTp2P379/P8LDw9GtWzc4ODjAysoK3bp1w6xZs3Dnzh3ecTUWudgCXHU1fD54H9bXr+HOt/+HG7/sBMDQ9dWXwFVXAwC8ViyFoKoKNzdtR/yuf5Dx9ruoElugpLwCuQVFSM/JQ1J6Dq4nZeDSrbu4cDMZ1xLTkJCWhfTsXOTkSZAvKUFJGSUoQtqiPXv2mDoEAAb0gmtIeXm5QcfHxMQgLCwMFhYWCA8Ph62tLXbt2oVp06YhPT0dCxYsaLCOffv2ITY2FoMGDcK4ceNgZmaGmzdvYvPmzdi2bRv27duHRx991KA4jYIx2MWehv3pEygcPgJOR6JxY+sOlPTpBwBI/nQNeo8OhsORQygIGwfzrCzkjw5DeZeuAIDKTp3/q0pD9XI5Q3lFFcorqlR64tUmFApgJhTC3EwEM7OaZ1BmQiFEIiFEQiFEQoHyewHHQSDQ3v2eENK8lZWVmToEAHokIMVzn9oePHigcXtmZiZOnDgBABpnRmiIVCrF7NmzIRAIcPz4cfTp0wdAzYwKQUFBWLRoEZ566qkGp5P44osv8O2336ptP3z4MEaNGoX3338f58+f1zs+Y3E4HoP+Qb3BSasBxpA/fgLyR46Bw/EYlPTsrSwndXBEhZc3LJMTUQAg57np8Fy+BPanT6Jo8FDkjwpDedduOp1T272OTCaHTCZHRVXNXZa2RFWbQMBBKBBAKBAok5ZIKIS5qCZxCQQCCAUchIoEJhRCKKwpTwgxHQ8PD1OHAECPBBQSEqLyFy9jDMePH0doaGi9xzk5Oekd1JEjR5CUlIQZM2Yokw8A2NvbY9GiRYiIiMDmzZsbnOLHwkLz2JqRI0fC0dERiYmJesdmTEUDByHlw0/AzMxQ1a49IBLBIeZwg8c9mDIVkmGPwP54DOxPn0T39euQ/s5C5Dw33Wix6dIoJ5czyOUyVEOmV+JSJCWhQFCTtB7ebQkEAohENQlKJBQqE5oiaSlmFCeEGCYwMNDUIQDg0QRX+3lBfc8OFDMkDBkyRO+gjh49CgAYM2aM2r6wsDAAwLFjx/SuV+HMmTMoKCgw+WAsuaUVKjur3sWV+/hCIJXC5toVZROcqLAAFil3Ue7rpyxX5eqGB1OfxYOpz8Ljf6vRbtdOoyYgvnRJXDI5g0xeMylreWXNNsWfNvUdzz1s+vsvOdUkKoHgvwT13zZO5V+O4yAUCqi3ICEAoqKimkVHBL0SkD4PqxljsLOzw9KlS/WNCQkJCQAAf39/tX2urq6wsbFRltFFVFQUTp8+jcrKSiQkJOCff/6Bi4sLvvrqK71ja2yVnl4oCB0Fr6WLkfLRMsisrdHpq9Wobt8BhaGjAACdP1sOyfARKPf0gqioCHbnY1Hu0zwmF+RLl58sxhhkMgaZTI7Kh3dcgG7JS6Hm+VVNohLWaRZUPOcScDVNhwKBQJnAhIKafYrthBDD6ZyApk+frmyC27x5MziOg6enJ0aMGKFSjuM4WFpaolu3bnj66afh6uqqd1ASiQRATZObJnZ2dsoyuoiKisKaNWuUr/38/PDbb781i4FYmiQv+xSeny1Hl9fmgKuuRnH/gbj9w3qwh0s6cDI5PFcshXlONmQ2NpAMC0bae4tMHLXp6NOHT84Y5DIZpHUmyNUniXEclEmpdvOgQFBzh6XcVivR1TQ51iSzmkRGSYyYDp+WqcZg0GzYU6ZM0atbtK7GjBmD6OhoJCQkwM/PT22/u7s7SkpK9EpCAFBSUoIbN27gk08+waFDh7BhwwY8++yzOh9v6GzY9+7n6/VhSVomXZOZIlkpkpJIeZdVc+elvDN7uE308LWiyZF6IhK+rly5gt69ezdcsJbGmA2bVzdsxd3QwIEDjRJEXYo7H20JpqioCI6OjnrXa2Njg6CgIOzevRsDBgzAnDlzMHr0aLRr186geAmpTdc/MuSMQS6VoVoqAyr/265rAuMAmIlED7vHC2BuJlL2PDQTiWBuJlK5Q1MksPpmsCdtw40bN/ROQI2BVwLatGmT2jbGGMrLy2FlZWVoTMpnPwkJCWrNZNnZ2SgpKUFQUBDv+kUiEUJDQ3HlyhXExcVh3LhxBsVLiDHpmsAYgCqpFFXS/1bZ1akzBwDBw2RkJqrp0KHolVi723zt5GUmEj3sqUjJixiPQQNRs7OzsWrVKuzduxfp6elgjEEqlWLdunXIycmBSCTCokX6P5sYMWIEVq1ahaioKISHh6vsO3jwoLKMIe7duwcAMHv4XIWQ1kCnzhz4b9xXVTW/5GUuqhmwLBLWJDGxmRnMzGq6zSsHMIuE1OuwmXr66adNHQIAns+AACA2NhYTJ05EXl6eyqqoMpkMH330EZYvXw6O43D48GGEhIToVbdUKkXXrl2RmZmJ2NhY5VggiUSCoKAgpKSk4Pbt2/Dy8gIAZGVlQSKRwM3NTaXjQlxcHAYMGKBW/8GDBzFhwgRYW1sjIyMD1tbWOsVFz4AIUVff2C/FrBmKHoXmZmawFJvVNB3W6okoeniXRUmrafzzzz94/PHH9Tqm2TwDys/Px5NPPonc3Fxle3LtPPbUU09h+fLlAGqmw9E3AYlEIqxfvx5hYWEIDg5WmYonNTUVq1evViYfAIiMjMTmzZuxceNGREREKLcPHDgQPXr0QK9eveDh4YHS0lJcvXoVJ06cgJmZGTZs2KBz8iGEaFbfH1U1vQ4ZIJMDACoqq1FcUv8xZqKaKaHE5mYQm5vB/OFrczNRTVMgLUtisOLiYlOHAIBnAvruu++QnZ2tlngUevXqBRcXF+Tl5SE2NpZXYKGhoTh58iSWLFmCHTt2oLq6Gj179sRnn32GadOm6VTHypUrERMTg2PHjuHBgwcQCATo3Lkz5syZg7feeouWkiDEBBpqBah+2DGjtLxS490VB8DMTAQLsTkszEUwF4lgbm4GsbkIlmJzZUcLoh2f4TGNgVcT3MCBA3HhwgVwHIdt27Zh586d2L17t7IJDqiZuuf48eNwdXVVPm9p6agJjpDmpb7JdRV3TNYW5jV3UmYiWJibQ2xOqw1LJBKt4yy1aTZNcAkJCeA4DgMGDEB4eDh27dqlVsbBwQFATXMdIYQ0hvom1y2XVaEcVSgqUZ/52VJsDkuxOSzEZrAQm8NcJFQmqbaQnPbt29fypuJRUCy1UN9ic4WFhQD4zYZNCCGNqbyyCuWVVRr3ic3NYG0hhpWlOawsxLCyEMPcrNFWrmnTeL2rTk5OyMnJwe3btzXuLy4uxsWLFwEAzs7O/KMjhJAmVllVjcqqauQX/bfNUmwOW2tLWFmYw+LhnZK5mRkEgpZ5t9RYkwjoi1cC6t27N6KiopCYmIgvvvgC0loD4XJycvDqq6+ipKQEHMepLKdACCEtkbY7JguxGWytLOFoZw0bKwuIhEITRKe/iooKU4cAgGcCmjRpEqKiogAACxcuVNnn7u6u0jNu8uTJBoRHCCHNV0VlNSoqq/GgoOZ2yd7GEk72tnCys2nW61ddu3YNPXr0MHUY4PUORUREqCyVwBhTPriTy2v6+3McB39/fzz33HNGCJMQQpo/SUk57mbex8Vbd5GYlo37+RKVpUOIKl4JyMLCArt370bHjh1Vkg8A5digDh064M8//4RYLDZasIQQ0hIwxpBfVIKUew9w5U4q7qTeQ15hsdoyIKbSXFqmeN8jBgQE4Nq1a1i8eDECAwNhaWkJS0tLBAYGIjIyEvHx8c1m2VdCCDGlwuIyJGXk4NKtFBSXlZs6HOWq06ZmUN9CBwcHLFu2DMuWLTNWPIQQ0moxxnAzORM2Vhbo7OoCGysLk8RRUFBgkvPW1XyfkhFCSCtVUlaBG8kZSEzLRoUJnhG5uLg0+Tk1MXh0VUZGBjIzM1FZWam1THBwsKGnIYSQVie/qAT5RSVwc3GEe3unJhtX1FyW5OadgPbu3Yv33nsPd+7cqbccx3Eq44QIIYSoysotQF5hETw6OMPF0TjzrNVn7969LXcqnqioKEyePBmMMY2zYRNCCNFPlVSG5Mz7yMmToGN7Jzjatf6lYng9A1qxYoXKeB9CCCHGUVpRiYS0LNy8m6myYq0x9e3bt1Hq1RevO6CLFy8qx/u4ublhyJAhsLW1NXZshBDSZhWXluNqQiq8OraHi0Pr/HzllYCED+c78vb2Rnx8PCwtLY0aFCGEEEAuZ7ibmQMOgJO9jdFanC5duoRu3boZpS5D8GqC69+/PwDAx8eHkg8hhDQixoCkjBxk3m99a6vxSkCKCUhjY2Nx48YNowZECCFE3b0HBcjOLTRKXRMmTDBKPYbi1QQ3evRorFmzBu+88w4GDx6MadOmoUePHnB0dNRYfvr06QYFSQghBEjLzoVQKEA7A7tqnzlzBqNHjzZSVPzxHgckFothbm6OkpISbNiwod6ylIAIIcQ47mbeh6XY3KBpfHJzc40YEX+8muD+/PNPzJs3D5WVlcqHYooxQXW/CCGEGNeN5AzlGkR8aGutamq8EtDnn3+u/J4SDSGENL27mfd5jxMKCQkxbjA88WqCi4+PV975DBo0SDkOSCCguU0JIaSp3Lybgc6u7fSeNeGvv/5quVPxWFlZoby8HD179sTp06dpNgRCCDGByiopEtKy4OrsgM5uzWOGa33wumUJDQ0FYwz29vaNmnzOnz+P8ePHw8HBAdbW1hg8eDB27typ07GMMezfvx+vvPIKevXqBXt7e1hZWaF3795YuXIlKioqGi1uQghpStl5hXiQr/szoZ49ezZiNLrjGI8HOLdv30b//v0hlUpx4MCBRmlPjImJQVhYGCwsLBAeHg5bW1vs2rULqampWL16NRYsWFDv8RUVFbC0tIRYLEZISAh69uyJiooKHDx4EAkJCRg4cCCOHj0KKysrnWMqKiqCvb09JBIJ7Oz06waZeT8f9+7ng56WEUIai5uLAzq5NnwnlJiYCD8/P73qNuTzTxteCeiTTz7BqVOnEB0dDYFAgNDQUPTs2RMODg4ay3/00Ud61S+VStGtWzdkZGQgNjYWffr0AQBIJBIEBQUhJSUFd+7cgaenp9Y6qqur8fnnn+PVV19V6fFRXV2NKVOmYO/evfj888/x7rvv6hwXJSBCSHPXy78zLMTm9Zb59ddf9X4G1GwSkEAgUOl+3VAznEwm06v+qKgohIWFYcaMGWpjjDZv3oyIiAh8/PHHeic2hTNnzmDo0KF47LHH8M8//+h8HCUgQkhz52hnDb9OrvV+LjeXBGRwt7X6LpJv9+yjR48CAMaMGaO2LywsDABw7NgxXnUDgJmZGQBAJDJ4QVhCCGlWCopKkZyRo1wyR5Px48c3YUTa8U5A2gaeGmMQakJCAgDA399fbZ+rqytsbGyUZfhQ3FVpSnCEENLS5UlKcCctGzKZ5iR08eLFJo5IM163ABs3bjR2HCokEgkAwN7eXuN+Ozs7ZRl97d+/H+vWrUNAQABmzZrFO0ZCCGnOikrKcD05Hd19OkEoVL3XyM7ONlFUqngloBdffNHYcTSJ8+fPY9q0abC3t8fvv/8OsVhs6pAIIaTRVFRW43pSOrr7qiah5rKAaLOcukBx56PtLkfxMEwfcXFxGDNmDAQCAQ4ePIju3bsbHCchhDR3FVXVyC8qUdk2duxYE0Wjqlk+hVc8+0lISFAufqeQnZ2NkpISBAUF6VxfXFwcRo8eDblcjqioKAwcONCo8RKiMCksBFn3MnUq+8OGX9B/4KBGjog0hnuZGZg8NhSPTZyMj1Z83vABD93PycbhqP04feIYUu8mIy83F3b29ujVtx9emDEbPXr10Xhc/NXL2PTT/+Hq5YsoKy1BB7eOGDPucbz40lxYWKjPil0kkWDjT2tx/Eg0crKzYGNji9DQUHzyycfo3r07fv/9d7VecNu3b8f333+PK1eugDGGwMBAzJs3DxEREfq8NXpplgloxIgRWLVqFaKiohAeHq6y7+DBg8oyulAkH5lMhoMHD2LQIPqFJ41n2vMvoqS4WOv+pMQ7iIk+CEtLK7i5dWzCyEhz8Pv2rdiy4Ud4dOqMQUOHw8HRCelpKTh+5BCOHzmETz77EqPHPqZyTMyhg1j87lsQCgQIHRUGZ5d2uHL5Ajas+x5x52Lx/frNMDf/73GCpLAAs56fivTUFPTs3RfBoaOQ++A+/vlnLw4c2I8jR46oxbVgwQJ8+eWXcHV1xXPPPQczMzPs27cPM2bMQHx8PFavXt0o7wevcUCNTSqVomvXrsjMzNQ6EPX27dvw8vICAGRlZUEikcDNzU2lae7ChQsYNWqUcsaGYcOGGRQXjQMihpAUFuDF8CeRlZmBlau/wciwcaYOifDE9w4o5tBB2Ns7oF+dO99LF87jtZdehJWVFf6NOaVMKBUVFZgUNgLFRcVY/8tOBHTvAaCmF/LqlZ/gj99+watvvoMXX3pZWdcXKz7GH7/9gmenz8Sb70Yqt9+4dgUvvTANXbt2xS+//IK+ffsCqPkjfeDAgfDz88PZs2fh5OQEACgtLUVoaCjOnz+P06dPo3v37kYfB9Qs74BEIhHWr1+PsLAwBAcHa5yKR5F8ACAyMhKbN2/Gxo0blbeL+fn5GD16NAoLCzF27FhER0cjOjpa5TwODg546623mu7CSJsllUqx6J03kZWZgemzXtaYfPLz8rB5/f/h5LEjyMnOgpW1DfoOGIg5r74JX/8uKmUnhYUAALb+/jf+79uvcDzmEPJyH2DR0hV4fNIUAMCJo4exfctG3L55HdLqanTy9MZjEydj6nPTdR4Dl5aagk0/rcXFuHPIvZ8DS0srtHd1Q/+gQXj7vcUq4wBLS0vw65aNiIk+iPT0VIhEIrh7dMKw4FC8NPc1iB6OvwOAK5cuYNNPaxF/5TIqKsrh1tEDo8aOx/SZc2BhaakSw6Ce/ug3IAgff7oGP3y9BmdPn0RBfh6+/3mrsgnzUtw5/LJpPa5duaxsohodNh4Rs19Rq0+bo4ejcOjgPtyMv4YHD+5DJBLBr0s3hD//Ih4d/d8zk39278KyDxcCAP79+y/8+/dfyn0NNauGjgrTuL1v/4HoHzQIZ0+fRFLCHQR0r5mr7drliyjIz8fIMeOUyQeoGX859/W38cdvv+Cv33/F9FlzlP8Xx2MOQSAQYPa8N1TOEdizN8aEjcX+ff/i1q1bygS0Z88eAMDbb7+tTD4AYG1tjcWLF2PSpEn4v//7P3z77bcNv4l6apYJCKiZ8PTkyZNYsmQJduzYgerqavTs2ROfffYZpk2b1uDxRUVFKCgoAAAcOHAABw4cUCvj6elJCYg0iW/WfIq4s2cwZFgwXnljvtr+jPRUvDLjedzPycagocMR/OhoFOTnIebQQZw9dRLfrd+s9nygqqoK8156AWVlZXgkZCSEIiGcnGvmAdu+eQO+Xr0KdvYOCBs/ARaWVjhx9DC+Xr0Kly/G4bP/fd/gDCYP7udg5jNTUF5ejmHBIRgdNh7l5eVIT0vBrt+2440FC5WJLD8vD6/MeBYpd5PRpVsApkx9FnK5HKl3k7F1w0947sVZsH2YgA4f3I8P338bZubmGBU2Hk5Ozjh75iR+/r/vEHv6BNZu2KbWQ1VSWIiXnp8KO3t7jB73GKoqK2FtbQMA2LVjG75Y8TFsbe0wPORRODo54eb1eGz8aS0unD+LHzZshZlZ/VPTAMAP/1sDMzMz9O7bH87t2qOwIB8njh5G5PzXsWDhh5j6XM3Kzl26BWDa8y9ixy+b4d+1G0Y8+t/S1m4d3Rs8jzaK91IoFCq35eU+AAB0dPdQK29rZwc7O3tk3ctEZkYaPDrVTE2Wl5cLewdHWFmpL9Hg4NweALBz507lMyBFl2xvb2+18optmprtjKHZJiAACAoKwv79+xsst2nTJmzatEllm5eXFy2UR5qFfX//hR2/bIZHZ08s+/wrjetmfbzoPeTlPsDX/7cBg4c9otw+c86reDF8MlYt/QDb/lSdNiov9wH8u3bDj1t2qDyIzkhPxXf/+wKOTs7YvOMvdHB1AwC88sbbeG12BI4dicb+f/Zg/IRJ9cYdE30QxcVFePv9xQh/PkJln0RSqHIX9fmKJUi5m4yI2a+oJdi83FxYPpz0t6SkGCs/XgyhUIj1W3fCv2u3mtjeXIAP35+PQwf+xS8bf8Ksua+p1JGUeAePT5qCRUtXqHxAJyclYM2ny+HXpSu+X78F9g7/zfu4ef06/PD1auzcvhXPvdjwmL+vfvgJ7p06q2wrKyvF7OenYd33/8PEJ5+GhaUlunQLRLitHXb8shldugZg9qtvaKlRd9lZ93A+9jRc2rWHr39X5XYHx5o7knuZGWrHlBQXo6iopqdwWkqKMgE5ODiiID8PZWWlaklIUU/tcUAuLjV/tNy9e1ftHIptGRkZKCsr43192jTLbtiEtBY3r1/Dp598CCsra3zx9VrYamg7v33zOq5evojxEyerJB8A6OzljUlTpiEx4TaSEu6oHfva2++p9YI6+O9eyKRSPPfiTGXyAQBzczFee7tm8t1/9/yp8zWIxeq9rOztHZTf5+U+wNFDUfDo1BmzX3ldrayzi4syWR2POYyS4mJMmPyUMvkANfNLvj7/PQhFIo2xmZmZ1eyvlXwA4K/ff4NMKsWCyI9Ukg8AvDBzNhydnBC1T7f5HusmHwCwsrLGY088iZLiYtyIv6pTPfqSVldjaeQ7NXe0b7+rco29+vaDtY0Njh05hNs3r6sct+77/ym/Ly7+bymGIcODIZfLsX6tapNZ/NXLOHk8BgBgWatZcty4mubg//3vfygsLFRuLysrw6pVq5Svi4r4LwGuTbO+AyKkJcvLzcV7b76KqqoqfPrVl/DxU59aCqj5YACA/Lxc/PTDN2r7U+4mKf+t/SxILBbDr0tXtfJ3bt0AALUH3QDQs3dfiMVi3Ll1s8H4h4c8ih++XoMvVn6MuLNnMHjYI+g3IEjtg/rm9WtgjKF/0GCV5zya3Ln5MLYB6rG5unWEu0cnpKXcRWlpibKJDQA6undS3g3Udv3he3f21AnEnT2jtl8kMkPq3eQGrxWoaUbc8vM6nDl5DFlZ91BZZ82wBw/u61SPPuRyOT754H1cunAeT0yZpnZXamVljbfeXYQVSxbhpeen4tHRY+Hk0g7XLl/ErRvx8PL2QcrdZJW76jnz3kTsqRPYtulnXLtyGT169UHeg/s4En0A3j5+SLxzS+VuJjg4GC+88AK2bt2KwMBATJw4UdkLTiqVKjseNMaK1zoloLS0NINO0rmz+l8WhLRm0upqRC54HfdzsjHz5XkIGal93sGihwOuTx0/ilPHj2otV1FervLa0clZ43Oc0pJSAFA+D6qN4zg4Obvg/v2cBq+ho7sHft72O35a+w1OnziGQwf3AQC8vH0wZ95byo4Uim7n7dp3aLDO0tKSh7E5a9zv4tKuJgGVqCYgbeUVg9U3/rS2wXPXRyIpxIxnnkR21j306tsfAwcPg42tLYRCIe7cuonjMYdQXVVl0DnqksvlWP7hQhzctxdjH38CCz/6RGO5iU8+DZd27bF14084HnMYMrkMgd174rv1W7B1w49IuZsMR6f/3p8Orm7Y+Osu/PTDNzhz8jhuXLuKDq6umDPvTbi5e+CDd9+CSKT6h8KmTZswYMAA/Pzzz9i0aRMsLS0RFhaGzz//HN27d4dIJFJZ1sZYdEpAXl5evFc+5TgOUqmU17GEtFSrV32CKxfjMHxEKObMe7PesooP2nciP8LTz76g8zm0/U5a29S0++fn5ao9FGeMIT8vV+XDvT6+/l3w6ZffQVpdjZs34nHm5HHs3LYFi999Ey7t26N33/6wedis+ECHpKY4b35ensb9ebm5D69BNT6t1/qwviOxl3S+Jk3+/vN3ZGfdw8uvvYWZL89T2bd5/TocjznEu25N5HI5ln24EPv+/gtjxj2Oj5Z/Vu8dxtBHRmDoI+pjH5cuehcCgQDdAlRndmnfwRWLP16pVl5xh113omeBQIA33ngDb7yh+jwrJSUFJSUl6Nevn3IVAWPS655KlxmwjTkrNiEt0V+//4a/fv8Nnl4++PjTNQ3+8da9V28AwLUrl4xy/i7dAgEAF8+fVdsXf/UyKisr0aVbgF51iszM0LN3X8yZ9ybmR34IxhhOHqt5nhAQ2BMCgQAXzsVCWl1df2wBD2OLU48tJzsLGRlpcPfopHMy6fHwvYu/clmPq1GXmV7TyhMcOkpt3+WL59W2KZ7TyOpZ8kCb2sln1NjHsHTVarVnW7q4cukCsjIzMHjYI7DRYW43mUyG6P3/QigSYd5b6j0xNdm2bRsAqE0IYCwGNepxHFfvFyFtzdXLF7Fm1SewtrHB51//ABubhj8Yuvfsje69eiNq/z+IPvCv2n65XK4xmWgT9tgECEUibN+yUeWupLq6Ct9/9QUA4LEnnmywnpvX41FSoj6rQ35ezV2Koqu0s4sLQkeFISM9Te3Bd035PGUrSHDoSNjY2uKf3buQnPjfkiqMMXz35eeQSaU6xaYwZdpzEIpEWLNqGbKz7qntLy4qUnt4r4nrwzvFK5fiVLYf/PdvnD6hvvaYrZ0dOI7D/ewsnWMF/mt22/f3Xxg5Zhw+1iH5aPo/eHA/ByuXLIJQJMLLr72tsk9aXY2KOs+v5HI5vln9KVJTkjH1mRdw9dIFlf2aOhicOHECq1atgqenJ+bOnavrJepFpya44OBgtYRSVlaG8+dr/jKwtbWFr68vACA5ORlFRUXgOA69e/fWukw3Ia1NaWkJFr79Ws2YtT79NCaT2voNHKQctLj8s6/w6qwX8MG7b+G3rZvQNaA7xBYWyMm6h2tXLtWMSbnQ8AcpAHh08sRrb72Lr1evwnNTJmBU2DhYWFri5NEYpKYkIzh0FMY9/kSD9ez/Zzd2//4b+vQfCI9OnWFtbYO7yYk4feIY7OwdlANeAeC9D5YiKfEONv60FqdPHkP/oCEAY0hLvYuzp09i/9FY2NrZwcbGFouWrMCH77+Nmc8+hVFjx8PR0QnnYk/j1o14dO/ZC8/PmK3TdQI1TYTvLV6Kz5cvwdQJYzDkkRHw6NQZZaWlyMxIx6W4c3jsiSex8KNl9dYz7vEnsHXDj1izahkunDsL144dkXD7FuLOnkHIqDE4eihKpbyVlTUCe/TEpQvnsSTyHXTq7AmBQIBxEybVOxbo5//7Dv/+/ResrKzR2dMLG3/8Qa3MiEdHKe9iAWDnti048M/f6N2vPxydnJGTnYXjMYdQWVGBxR+vRLdA1ea3vLxcPDN5PAYNGY6OHh6orq7G2VMnkHI3GcOCQzDvrQW4fUU10T711FMoLy9Hr169YGdnh2vXrmH//v1wcnLC7t27YWtra7pecIoVShWkUilGjRoFjuOwcOFCfPjhh8quoJWVlVi2bBlWrlwJkUik0zgeQloDSWGhcuDgxfNnG7xreQlQJqCOHp2wZecebN+yAcePHMI/e3ZBKBDCuV079O0/EI+O0W/24mdfnAmPzp74dcsG7P9nD6TV1ejs6Y0334nE1Oem69RCMWbc46iqrMTVSxdx49pVVFVXoX0HVzw59Vk8P+MluNaay87B0Qk/b/sd2zb9jCNR+/HHr1thLhajo7sHps96WaXb78iwcXByccHm9etw9FBUzUwI7h6Y+fI8TJ85R+9lUiY9NQ1dugVg+5YNuHwhDiePxsDG1gYdXDsi/IUZeGzi5Abr6ODqhrUbt+G7Lz/H+djTkMqk6BbQHd+s24ic7Cy1BAQAS1euxlefr8CpYzEoKSkGYwy9+w2oNwFlPRyHU1ZWqrXjhFtHd5UE1KtPP1yKO4cTR4+guKgI9g4OGPpICKbPnI2uAeqz+tvY2iI4dBSuXrqAU8djIBSJ4OvXBYuWrsCEyU9BIBDAvbOn6ns4aRI2bdqEbdu2oby8HJ06dcLrr7+OyMhIdOjQcOcSvnjNBff5559j4cKFCAwMRHx8vMYyPXr0wM2bN7F06VJ8+OGHBgfaHNBccISQ1qC6rBjDgvrqdYwhn3/a8HoGtGXLFnAcB3d37Zne3d0djDH8+uuvvIMjhBBifDeuXTZ1CAB4JqDk5JqBXXFxcXjw4IHa/vv37yufD6WkpPCPjhBCSKvFayYEGxsbVFZWorCwEMOHD8c777yDnj1rZm+Nj4/HmjVrlFM62Njw75tPCCHE+Hr06d9woSbAKwGFhITgjz/+AMdxSEhIUOuip3isxHEcQkNDDY+SEEKI0WRnZQLoZeow+DXBffzxx8peLRzHqQ08VfSwsbCwwJIlS4wXLSGEEIM90HP8UmPhlYACAgLw999/w8XFReVuR5F4GGNwcXHBnj17EBgYWF9VhBBCmlhDk8Y2Fd6zYY8cORK3b9/Gzz//jEOHDiE1NRVAzcSjo0aNwqxZsxpl8jpCCCGGCRqmPq+cKfAaB9RW0TggQkhrcPXcKbw080W9jmk244A0YYw1yop5hBBCjEsml5k6BAAGLkiXnZ2NVatWYe/evUhPTwdjDFKpFOvWrUNOTg5EIhEWLVpkrFgJIYQYQQfXjg0XagK8E1BsbCwmTpyIvLw8lY4IAJCZmYnly5eD4zgMHToUISEhRgmWEEKI4ZzatTd1CAB4NsHl5+fjySefRO7DxaPqTmz41FNPKb/ft2+fAeERQggxtpsteSqe7777DtnZ2SpjgGrr1asXXFxqlgOOjY01PEpCCCGtDq8EtHfvXuX327dvx6RJk9TKBAYGgjGGxMRE3sERQggxvm49eps6BAA8E1BCQgI4jsOAAQMQHh6ucUU/xUJ0+fn5BgVICCHEuAoermprarwSUHl5OQDUu1CRYjJSgYB/T+/z589j/PjxcHBwgLW1NQYPHoydO3fqfHxSUhKWLl2KiRMnwt3dHRzHwcvLi3c8hBDSGuRkZZo6BAA8e8E5OTkhJycHt2/f1ri/uLgYFy9eBAA4OzvzCiwmJgZhYWGwsLBAeHg4bG1tsWvXLkybNg3p6elYsGBBg3WcOHECH3/8MYRCIQICApCdnc0rFkIIaU0EOqyI2xR43Z707l3TfpiYmIgvvvgCUqlUuS8nJwcREREoKSkBx3Ho06eP3vVLpVLMnj0bAoEAx48fx48//og1a9bgypUr6NKlCxYtWqSc+qc+wcHBOHPmDIqLi3Ht2jWYNZP5jwghxJQGB480dQgAeCag2p0OFi5ciL///lv52t3dHbt371a+njy54fXY6zpy5AiSkpLw7LPPqiQwe3t7LFq0CFVVVdi8eXOD9fj4+GDw4MEq69ETQkhbd/70MVOHAIBnAoqIiIC/v7/yde0lGORyOYCasUH+/v547rnn9K7/6NGjAIAxY8ao7QsLCwMAHDvWPN5AQghpaaqrq00dAgCeCcjCwgK7d+9Gx44dVZIP8N/6QB06dMCff/4JsVisd/0JCQkAoJLkFFxdXWFjY6MsQwghRD8u7bR3IGtKvLuoBQQE4Nq1a1i8eDECAwNhaWkJS0tLBAYGIjIyEvHx8bzXApJIJABqmtw0sbOzU5YhhBCiH1f3TqYOAQDPBBQfHw+gZqzPsmXLcO3aNZSUlKCkpATXrl3DihUr4OTkBAB49dVXjRctIYQQg8VfjjN1CAB4JqCwsDCdeqG9/PLLWLdund71K+58tN3lKNalIIQQ0nLxSkBZWVkYPXo07t+/r3E/YwyzZ8/GTz/9xCsoxbMfTc95srOzUVJSovH5ECGEkIZ1Cehp6hAAGPAMKCkpCWFhYSgqKlLbN2vWLGzYsIF3UCNG1CwXGxUVpbbv4MGDKmUIIYTop6S4eTxD55WAFL3erl69igkTJqCiokK5LyIiAps2bVK+VjwL0sfIkSPh4+OD7du34/Lly8rtEokEK1euhLm5OaZPn67cnpWVhVu3blHHBEII0cG9jDRThwCAZwL64YcflN+fPHkSTz/9NKr+v707j4riSv8G/u2GbhabvRHQyCZoHGSixODOoi+IMRNjmLj9UNG4RKNGNG80MYhk0clJMi7nNe4aYsaYMZozJO4owrgE0MwkJnFBZRNUJIRG9k738/7hjwpl00A3jU3j8zmnzqFu3bp1u+6hn66qW/c2NCAuLg6fffaZqCt2enq6weVbW1tjx44d0Gq1CAsLw9y5c7Fs2TI89dRTuHbtGtasWSMa0+3NN99Ev3798PXXX4vKKSsrQ3x8vLCo1WqdtMY5jRhjjD1aRo0FN2/ePKjVaixevBgSiQSHDx9G7969UVJSAuDBMyBvb2+kpaUhICDAqIpFRkbizJkzSEpKwpdffgm1Wo3g4GB88MEHmDRpUpvKqKqq0hkxobq6WpS2evVqYe4ixhh7HAwdOcrcVQAASOjh2eQMsH79eixdulS44mkUEBCAkydPolevztHX3FQae9+pVCo4OjoatG9xaTlKSsth9MlmjDET+eW/2YiPm2rQPu35/tPH+LkSACxZsgQffvihaDSE4OBgnDlzpssFH8YY6yrqmzy3N6c23YKbNWtWi9vd3d1x7949Yb6dFStWCNskEgl27tzZvloyxhgzGVe3zvHYoU234KRSqWi8t+Y0FtM0X+OVkUajaWc1Owe+BccY6wo0DXUYGtLfoH063S24piQSSatBijHGmPn9+H22uasAwIBecO3oq8AYY4zpaFMAMuZdHsYYY51TQF/jZiowtTYFIB72hjHGuo662lpzVwGACZ8BMcYYswy3CvPMXQUARo6E0JRGo0FZWRnq6+v15vH29m7vYRhjjHUxRgegnJwcJCYmIiMjAw0NDXrzSSQS/P7778YehjHGmImFDo8wdxUAGBmAsrKyEBkZifr6eu4dxxhjFuan/+RgYD9/c1fDuGdAq1evFqZg0Pf+D78TxBhjnVNNTbW5qwDAyCug8+fPCwOQyuVy9O3bF05OTrCysjJ1/RhjjJmYk7Ph87R1BKMCUOMzHycnJ2RlZaFPnz4mrRRjjLGO4xfY19xVAGDkLbjGgDN48GAOPowxZmH+m3Pe3FUAYGQAiouLAxEhNzeXOyEwxhgzilEBaPHixQgJCUF+fj7mzZsHlUpl6noxxhjrIH4BneMWnFHPgGJiYqBWq0FE2LlzJ/7xj38gICAAbm5uOnklEglOnjzZ7ooyxhgzDY2mc7ybaVQAOn36tND9mohQW1uLS5cu6XS9bjpTKmOMsea9s7I7DqU6YsFrZZgxu0JIzzjZDW8s8ULWpesmPV5h3g0A5h/js91jwTUGIg40jDFmPBsbLfbsckGl6vEZotPoT0pErS6MMcba5pkhtXBTapCy00Vvnv9+b4u5M3oibJA//vJ/fPDxWiVqa/748V92zwoJC7wQNsgfL8T44NghBV4Y44Mv9jiJyhk0ZGSHfQ5DGHULLi+vc4ykyhhjXYVUSpj/2q9YtdwDE6dWwMNTI9p+q8gaS17pgXmLfsXb75Si4jcrfLRGiQ/XuGPVe6UAgOS3PFBRYYVPdhXD2hrY8KES5eW6AwRc+ekHPN0/8JF8rpYYFYB8fHxMXQ/GGHvsRYyuRmDfBmz/xA1vv1Mq2paywwVjxt3HlGkPeh17+6ixdEUZ5s/sieWJ93C72BrZ39nj031F6Bf0YHaCt5JL8ddxut/XVVWVHf9h2qDd0zEwxhgznYUJZXh1dk/8T/xvovTcqza4fs0Gxw45CGkEQKuVoKTYGoX5clhZE/r2+2NqnF7eajg6iq+kAMDB0UknzRzaHYBqampw/fp1qFQqvc99wsLC2nsYxhh7LAwcVIfBw2rwyXo3PDf+vpBeWyPFhJdUmPg/uu9denqpUZgvb/Mx+vQLNkld28voAFRcXIxFixbh0KFDLc730575gHJycpCUlIRz585BrVYjODgYS5cuxcSJE9tcRn19PT744APs2bMHRUVFcHV1xXPPPYf33nsP3bt3N6pejDHWkV5d8iumvdQLPr5qIa1vv3rk3ZCjl7e62X18fBug+V2Cq5dthFtwRYUyVFbqPgO6mHUGg4LNP4yaUQGoqqoKI0aMQGFhYYf1dktPT8eYMWNga2uLyZMnw8HBAQcOHMCkSZNQVFSEZcuWtVqGVqvF+PHjcezYMQwZMgSxsbHIzc3Fjh07cPLkSXz33Xdwd3fvkPozxpixAvo0YMy4+/jn3j9ulU2b9RtejnsCH76vxPjYStjaEfJuyJF93g7/d2UZfP3VCB1Sg7XJ7lieeA/W1oQNHylhY6tFZ31Lxqhu2Js3b0ZBQYGw/vB7QO19L+j333/HnDlzIJVKkZmZiW3btuHjjz/GDz/8gD59+uCtt94SHV+flJQUHDt2DFOmTMG5c+fwt7/9DQcOHMAnn3yCmzdv4u233za6jowx1pHmvloOrfaP79HAvg3YsrsYhQVyzJvxBKa/1AvbNrnCvfsfz3iS1tyFq5sGr8T3xPIlXhgfWwl7ey3kcvGFgo9/wCP7HC2RkBGXMBEREcjMzIREIsHQoUNx7tw5SCQS+Pj4oE+fPkhLSwMAxMbGwt7eHrt37zao/OPHj2PMmDGYOXMmdu3aJdqWkpKC+Ph4JCcnY9WqVS2WM2zYMJw/fx75+fminntEhICAANy9exf37t2DnZ1dm+pVWVkJJycnqFQqODo6GvSZikvLUVJaDn47ijH2qNy9Y4Xno/zw/7YX45khtUJ6xb07iI4cYVBZ7fn+08eoK6ArV64AANzc3JCeni6kDxo0CEePHsX+/fuh1WpRWFiIrVu3Glz+6dOnAQDR0dE628aMGQMAyMjIaLGMuro6ZGVloW/fvjrdxiUSCaKiolBdXY0LFy4YXD/GGOuMLmTZITPdHiW3rPHjf23x9hue8OqpxsCna0X58m5cM1MNxYwKQBUVFZBIJHjqqacgk8mE9MaLqQkTJiAkJATZ2dlYu3atweXn5uYCAAIDdV+U8vT0hEKhEPLoc+PGDWi12mbLaFp2a+WYEl/9MMY60u+/S7B5oxsmT/DGG695wsVFg827imEta31fczCqE4K1tTXUajUcHB70R5fL5VCr1SgvLxfyeHp6gojwxRdfICkpyaDyG6d3cHJqvq+6o6Njq1NAtKWMpvk6mjVPV84Y62BDhtdgyPCaVvOFDjXs9ltHMSoAubi4oLa2FtXV1QAAZ2dnlJaWIisrC8XFxbCxsUFWVhYAoLCw0HS1tWDdXR3h6tQNPEQeY8zcMjNOA0EW2g27e/fuKC4uxm+/PXhTt0+fPigtLUVtbS0CAwMhlUpRW/vgnmNbH/A31XjVou/qpLKyEi4u+gfsa2sZTfN1NIlEApk1DzzBGDO/e/fumbsKAIx8BhQc/OAt2mvXroGIEBUVJWyrq6tDTU2NMBeQMaMgtPR85s6dO6iqqtL7bKeRv78/pFKp3mc8LT1nYoyxruxR/fBujVEBaNCgQbC3t4dGo8GlS5ewYMECuLu7C0Gn8R0gW1tbJCcnG1x+ePiDiZKOHz+us+3YsWOiPPrY2dkhNDQUV69e1XlniIhw4sQJdOvWDYMGDTK4fowxZslGjx5t7io8QCZy5coVGjduHDk5OZG9vT2NGjWKsrOzjSpLrVaTv78/2djY0H/+8x8hvaKigvr06UNyuZzy8vKE9JKSErp8+TJVVFSIytm1axcBoClTppBWqxXSN2/eTABo7ty5BtVLpVIRAFKpVEZ9LsYY6wz27t1r8D4d8f1n1Iuoj4K+oXgKCgrw0UcfiYbiiY+PR0pKCnbv3o34+HghXavV4tlnnxWG4gkPD8f169dx8OBB+Pr6Iisry6CheFQqFZydnVFUVGSyF7EYY+xR279/P1566SWD9qmsrESvXr1QUVFhult4JgtleqSmphq9b1ZWFsXExJCjoyPZ2dlRaGgo7du3TyffjBkzCADt3r1bZ1tdXR2tXr2aevfuTXK5nDw9PWn27Nl0584dg+tTVFREePA6Dy+88MLLY7kUFRUZ83XerA67Ajp8+DBWr16NixcvQqPRnY/CEmm1WpSUlMDBwcHgse4afz3w1ZP5cBuYH7eB+RnbBkSE+/fvo0ePHpBKjeo+oMOgfsFFRUU4ceIEysrK0KNHD8TExECpVIrypKWlITExEdnZ2UKnhK5CKpXiiSeeaFcZjo6O/I9nZtwG5sdtYH7GtIGpe8+1OQBt3LgRb7zxBtTqP+aisLOzw5YtWxAXFweVSoX4+HikpqYCQIdN08AYY6xraFMAunjxIhISEnSCSk1NDWbNmoXg4GDMmzcPOTk5oq7YRARrfvmSMcZYM9p0I2/btm067/gAD97u12g0mDhxIrKzs4U0IoKVlRVmzpwpjJz9uLOxsUFSUhJsbGzMXZXHFreB+XEbmF9naoM2dUL485//jJ9//hnAg3uAYWFhICJkZGTg/v37oisjqVSKadOmITExEf7+/h1Xc8YYYxatTQHI2dkZlZWVUCgU+OWXX4QH8QUFBQgKCkJtbS2ICH5+fjhw4AAGDBjQ0fVmjDFm4dp0C66qqgoSiQShoaGiXmA+Pj4YMmSIcHvus88+4+DDGGOsTdoUgLRaLQDA1dVVZ1vTUalDQ0NNVC3GGGNdnUFd1GpqanTm96mp+WPyozt37jTb/drb29vI6jHGGOuy2jRcgkRCUqlU7yKRSPTmsbKyMtmwDZYoOzubxo4dKwzSOnjwYPryyy/NXa1Obc+ePTR37lx6+umnSS6XE9D8MEuNVCoVJSQkkLe3N8nlcvLx8aHXX3+d7t+/32x+jUZDGzdupP79+5OtrS0plUqaPHky3bhxQ+8xjh49SmFhYaRQKMjBwYEiIiIoLS2tvR+107p16xatW7eOoqKiqFevXiSTycjDw4NefPFF+u6775rdh9vBtGpraykhIYFGjhxJXl5eZGNjQx4eHjRs2DDatWsXNTQ06OxjaW1gUABqDDSGLFKp1KiKdQWnTp0imUxGDg4ONGfOHFq6dCn5+PgQAProo4/MXb1Oq/EcKZVK4W99AaiqqooGDBhAACg6OpqWL19O0dHRBICeeeYZqq2t1dln9uzZBICCgoLojTfeoLi4OJLL5eTq6krXrl3Tyb9nzx4CQO7u7rRw4UJauHAhubu7k0Qiof3795v643cKy5cvJwDUu3dvevnll2nFihUUGxtLVlZWJJVKdcZk5HYwvXv37pGtrS2FhYXR7Nmz6c0336RXXnlF+J+Ijo4mjUYj5LfENjDJFVBLV0aPawBSq9XUu3fvFqeUyM/PN18FO7ETJ04I52bt2rUtBqBVq1YRAFq+fLkovfELdM2aNaL0U6dOEQAKCwuj+vp6If3w4cPCP25T5eXl5OzsTEqlUjQIY1FRESmVSlIqlVRZWdmej9spHThwgE6fPq2TnpmZSTKZjFxcXKiurk5I53YwPY1GIzo3jdRqNUVERBAA+vbbb4V0S2yDNgcgY5fHNQAdO3aMANDMmTN1tn366acEgJKTk81QM8vSUgDSarXUo0cPUigUVFVVJdpWVVVFCoWC/P39RelTpkwhAJSRkaFTXuM/dUFBgZC2detWvW21evVqAkApKSlGfjrL1PirOicnh4i4Hcxhw4YNBIDWr19PRJbbBm3uBWfs0lVGwjbU6dOnAQDR0dE628aMGQMAyMjIeJRV6nJyc3NRUlKC4cOHo1u3bqJt3bp1w/Dhw3Hz5k0UFRUJ6adPnxa2Pay5duF21CWTyQBAGGaL2+HR0mq1OHr0KACgf//+ACy3DUwzpjbTkZubCwAIDAzU2ebp6QmFQiHkYcZp6Rw3TW/MV11djdu3b8PPzw9WVlat5m/tGM3l7+oKCwuRlpYGLy8vBAcHA+B26GgNDQ1YvXo1kpKSsHDhQgQFBeHIkSOYOXOmMLW2pbYBjxTaQVQqFQD9w5c7OjoKeZhx2nKOm+YzNH9r+zSXvytTq9WYNm0a6uvr8cEHHwhfXNwOHauhoQHJycnCukQiweuvv461a9cKaZbaBnwFxBhrlVarRXx8PDIzMzFnzhxMmzbN3FV6bCgUChARNBoNioqKsGnTJuzYsQMRERGorKw0d/XahQNQB2n8laDvF0FlZaXJJ3d63LTlHDfNZ2j+1vZpLn9XpNVqMWvWLOzduxdxcXHYsmWLaDu3w6PROCHm/PnzsW3bNpw9exbvv/8+AMttAw5AHaSle6J37txBVVWV3vu1rG1au+/88D3rbt26wcvLC3l5ec12jmnuHndLx2jtvntXoNVqMXPmTKSkpGDKlCn49NNPdaZj5nZ49Bo7AjR2DLDUNuAA1EHCw8MBAMePH9fZduzYMVEeZpzAwED06NEDZ8+eRXV1tWhbdXU1zp49Cz8/P/Tq1UtIDw8PF7Y9rLFdwsLCRPmBx7MdG4PPZ599hkmTJmHPnj16H1hzOzxaJSUlAP7okWixbWBQp23WZmq1mvz9/Vt8ETUvL89s9bMUneFFVCcnp8fqBUiiBy9BzpgxgwDQSy+9RGq1usX83A6m9/PPP1N1dbVOenV1NcXExBAAev/994V0S2wDDkAdiIfiMc727dtpxowZNGPGDAoJCSEANHz4cCFt+/btQt6qqip66qmnhH+YFStWiIYfqamp0Sn/4eFHpk2bJgw/cvXqVZ38LQ0/8s9//rNDz4W5JCUlEQBSKBS0cuVKSkpK0lma/rDidjC9pKQkcnBwoLFjx9L8+fNp+fLlFBcXR25ubgSARo4cKTqvltgGHIA6WFZWFsXExJCjoyPZ2dlRaGiozjhaTKzxl7e+ZcaMGaL8FRUVtGTJEmHQTG9vb1q2bJneX2MajYY2bNhAQUFBZGNjQ25ubjRp0iS6fv263jodOXKERo4cSd26dSOFQkHh4eF04sQJU37sTqW1NmjuqpTbwbRycnJozpw5FBQURM7OzmRtbU1ubm4UGRlJW7dubfaq1NLaoE0zojLGGGOmxp0QGGOMmQUHIMYYY2bBAYgxxphZcABijDFmFhyAGGOMmQUHIMYYY2bBAYgxxphZcABijDFmFhyAmEW6ffs21q5di7Fjx8Lb2xsKhQIymQzOzs7o378/Jk6ciI0bN6KwsNDcVX1kfH19IZFIdBapVAoHBwc8+eSTmDZtGk6ePGnuqurIz88X1TkiIsLcVWKPAI+EwCxKQ0MDVq5ciQ0bNkCtVreaXyKRQK1WNzuKc1fj6+uLgoKCNuVNSEjA3//+9w6uUdvl5+fDz89PWA8PDxemGmBdF0/JzSxGXV0dYmJikJGRIUqXy+UYOHAgPDw8UFtbixs3buDmzZsAAHow3qE5qmt2YWFhcHd3R2VlJS5cuIDffvtN2LZu3Tr89a9/xbBhw8xYQ/a44wDELMbChQt1gs/SpUuRmJgIZ2dnUfrt27exb98+rF+//tFVsJNJTk4WbmWpVCqEhIQIgRkADh8+zAGImRU/A2IW4aeffsLu3btFaYmJifj44491gg8AeHl5ISEhAdevX4e1te7vLCLCt99+i4kTJ8LX1xd2dnawt7dH3759MX/+fFy5cqXZekRERIieVeTn5+PUqVMYN24cXF1dYWtri6CgIKxbt07vlZexx24PJycnPPfcc6K0srIynXyff/455syZg8GDB8Pb2xsODg6QyWRwc3PD0KFDsWrVKty9e7fZYzQ9L76+vtBqtdixYweGDBkChUIBhUKBkSNH4siRIwbX/5tvvoGNjY1QvqOjI06dOmVwOayTMWoMbcYesZUrV4qmAnB3d6fa2lqjyqqsrKSxY8e2ONWATCajLVu26OwbHh4uyjd9+nS9Zbz22msmPXZrGueaalzS09NF2xctWiTanpycrFNGUFBQq9MwuLq6iuYCatQ0j4eHhzAXzcOLRCKhgwcPivbNy8sT5QkPDxe2HTx4kGQymbBNqVRSTk6OweeHdT4cgJhFiIyMFH1BTZ482eiyxo0bpxPMYmJiKDIykuRyueiL8vDhw6J9Hw5A+N9J20aNGkUBAQGidKlUSoWFhSY7dmtaCkDl5eXk6+srKv+HH37QKSMoKIhsbW1pwIABNGrUKBo/fjxFRUVRjx49RGUPGDBAZ9/mgo2XlxdFRUWRUqkUpQcGBor21ReA9u/fT9bW1kJ6r1696PLlywadF9Z5cQBiFuFPf/qT6Avq4WmHiYh69uzZ6gR2aWlpom3PP/+8aDriq1evkkKhELb3799fdIyHA5CPjw/l5+cT0YNp2EePHi3anpKSYrJjt+bhABQWFkaxsbEUFRVFzs7Oom3vvfdes2X8+OOPojo10mg0NHHiRFEZDweCh897TEyMMAvnnTt3qHv37qLtBQUFwr7NBaAvvvhCFHz69u2rE9CZZeNOCOyx8vXXX4vWy8rKMHXqVFGaTCYT/v7pp5+Qn58PX1/fZstbsWIFfHx8AADW1tZ49tlnRe/ZFBcXd9ixW5OZmamT1r17d+zduxejR49udh8/Pz9s2rQJhw4dwuXLl1FeXo66urpm8165cgVPPvmk3uOvW7cOdnZ2AAAPDw8MHjwY33zzjbC9uLgY3t7eze576dIlxMXFQaPRAAAGDRqEI0eOQKlU6j0eszwcgJhF8PDwwC+//CKsN/eC6bhx4/Drr7+ioKAAFy5caLacvLw80fq5c+daPXZeXp7eIPDMM8+I1p2cnETr9fX1HXZsY5SWlmL+/Pk4fvy4TrmlpaUYMWIEcnNz21SWSqXSu02hUOgEp5bOzcPKy8uFv+3t7fHNN99w8OmCuBccswgPdxc+deqUzouoW7duxVdffYVXX33VpMeurq7Wu83NzU20buoXXls6dmvS09PR0NCAixcvIiQkREjPzc1FbGyscHXR6J133hEFH2trawwfPhwTJkxAbGws+vXrJ8pPLbxf9fB5AYw/NzU1NZg6dSpqa2uN2p91XhyAmEWYNGkSJBKJsH737l2sW7fO4HKavm0PAPv27RNeVtW3PNx92VjmOLZMJkNISAhSU1OhUCiE9O+//x47d+4U5f33v/8tWj979izOnDmDgwcP4quvvsLIkSPbVRdDDB48GJGRkcJ6eno6/vKXv3AQ6mI4ADGLEBwcjOnTp4vS3nzzTbz77rsGfSk9//zzovXExESdW2PAg+cTmzZtwqJFi4yrcCc7ds+ePbFs2TJR2rvvviu6DfbwFaW9vb3w9/nz5/H555+brD6tsbW1RWpqKoYMGSKknTx5Ei+88ILeZ1LM8nAAYhZj8+bNGDp0qLCu1WqxatUquLu7IyIiAi+88ALCw8OxYMECvWVER0cjKipKWM/NzUVgYCBCQ0Mxfvx4REVFwc/PD0888QQWLlyIS5cumaz+5jw2ACxZskT00u6tW7ewfft2Yb3plz0ADB06FGPHjsXw4cMxYsSIR371oVAocOTIEQwYMEBIO378OCZMmNDi8yNmOTgAMYthZ2eHU6dOYcGCBaLnCdXV1cjIyMC//vUvZGZmir4ora2tERgYKCrnq6++wpgxY4R1jUaDnJwcpKamIi0tDfn5+aL9Tcmcx3Z2dkZCQoIobe3atcIVRWJioujZTVVVFY4ePYpz587Bz88Pr7zyiknr0xbOzs44fvy4qEPD0aNH8eKLL6KhoeGR14eZFgcgZlFsbW2xadMmXL9+HatWrUJ4eDg8PT1hY2MDuVwOpVKJp59+GtOnT8fOnTtRXFyMlStXispwdHTE0aNHcejQIUydOhW9e/eGvb09rKys4OLigoEDB+Lll1/Gvn37kJqaatL6m/PYwIOrIBcXF2G9pKQEW7duBfDgGVVOTg6mTp0KpVIJmUwGHx8fLF68GDk5OejevbvJ69MW7u7uSEtLEz1DO3z4MGJjYzkIWTiejoExxphZ8BUQY4wxs+AAxBhjzCw4ADHGGDMLDkCMMcbMggMQY4wxs+AAxBhjzCw4ADHGGDMLDkCMMcbMggMQY4wxs+AAxBhjzCw4ADHGGDMLDkCMMcbMggMQY4wxs/j/hH8BQF4GEUsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 5.2631578947368425 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0009299647941899342 \n", + "recall: 0.0984182776801406 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 119/128 [00:00<00:00, 166.07it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 165.13it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0007627413196588448\n", + "Area Under Precision-Recall Curve (AUPRC): 0.000759705788701725\n", + "EPR: 0.0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAALCCAYAAACr5vABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/EElEQVR4nOzdd3gU9drG8XvTC4TQQwlFQYogSChGQRACoVhioUsTAQsKIvqKItg5IAqiCGIB5KAgeEREpEgRhRyagqKgoCg1AUQICSTZZOf9Y85uWFJIQpLZJN/PdeXK7Owzu8+uO0tu5ze/sRmGYQgAAAAAYDkvqxsAAAAAAJgIaAAAAADgIQhoAAAAAOAhCGgAAAAA4CEIaAAAAADgIQhoAAAAAOAhCGgAAAAA4CEIaAAAAADgIQhoAAAAAOAhCGgAAI8wePBg1alTJ0/bbNy4UTabTRs3biyUnoq7Dh06qEOHDq7bf/75p2w2m+bNm2dZTwCAnBHQAKCUmjdvnmw2m+snICBA11xzjUaOHKn4+Hir2/N4zrDj/PHy8lKFChXUrVs3xcbGWt1egYiPj9fYsWPVsGFDBQUFKTg4WBEREXrppZd05swZq9sDgBLJx+oGAADWeuGFF1S3bl0lJyfru+++06xZs7Ry5Urt2bNHQUFBRdbHu+++K4fDkadtbr75Zl24cEF+fn6F1NXl9e3bV927d1d6erp+++03vf3227rlllu0fft2NW3a1LK+rtT27dvVvXt3JSYm6t5771VERIQkaceOHfrXv/6lTZs2ac2aNRZ3CQAlDwENAEq5bt26qWXLlpKk+++/XxUrVtTrr7+uzz//XH379s1ym6SkJAUHBxdoH76+vnnexsvLSwEBAQXaR161aNFC9957r+t2u3bt1K1bN82aNUtvv/22hZ3l35kzZ3TnnXfK29tbP/zwgxo2bOh2/8svv6x33323QJ6rMD5LAFCcMcQRAOCmY8eOkqSDBw9KMs8NK1OmjH7//Xd1795dZcuWVf/+/SVJDodD06dP17XXXquAgABVrVpVI0aM0D///JPpcb/66iu1b99eZcuWVUhIiFq1aqWPPvrIdX9W56AtWrRIERERrm2aNm2qN954w3V/duegLVmyRBEREQoMDFSlSpV077336ujRo241ztd19OhRxcTEqEyZMqpcubLGjh2r9PT0fL9/7dq1kyT9/vvvbuvPnDmj0aNHKzw8XP7+/qpXr54mT56c6aihw+HQG2+8oaZNmyogIECVK1dW165dtWPHDlfN3Llz1bFjR1WpUkX+/v5q3LixZs2ale+eL/XOO+/o6NGjev311zOFM0mqWrWqxo8f77pts9n03HPPZaqrU6eOBg8e7LrtHFb7zTff6KGHHlKVKlVUs2ZNLV261LU+q15sNpv27NnjWrdv3z7dc889qlChggICAtSyZUstX778yl40AHgIjqABANw4g0XFihVd69LS0hQdHa22bdtq6tSprqGPI0aM0Lx58zRkyBA9+uijOnjwoN566y398MMP2rx5s+uo2Lx583Tffffp2muv1bhx4xQaGqoffvhBq1atUr9+/bLsY+3aterbt686deqkyZMnS5L27t2rzZs3a9SoUdn27+ynVatWmjRpkuLj4/XGG29o8+bN+uGHHxQaGuqqTU9PV3R0tNq0aaOpU6fq66+/1muvvaarr75aDz74YL7evz///FOSVL58ede68+fPq3379jp69KhGjBihWrVqacuWLRo3bpyOHz+u6dOnu2qHDh2qefPmqVu3brr//vuVlpamb7/9Vv/9739dRzpnzZqla6+9Vrfffrt8fHz0xRdf6KGHHpLD4dDDDz+cr74vtnz5cgUGBuqee+654sfKykMPPaTKlStrwoQJSkpKUo8ePVSmTBl98sknat++vVvt4sWLde2116pJkyaSpJ9//lk33XSTatSooaeeekrBwcH65JNPFBMTo08//VR33nlnofQMAEXGAACUSnPnzjUkGV9//bVx8uRJ4/Dhw8aiRYuMihUrGoGBgcaRI0cMwzCMQYMGGZKMp556ym37b7/91pBkLFy40G39qlWr3NafOXPGKFu2rNGmTRvjwoULbrUOh8O1PGjQIKN27dqu26NGjTJCQkKMtLS0bF/Dhg0bDEnGhg0bDMMwjNTUVKNKlSpGkyZN3J5rxYoVhiRjwoQJbs8nyXjhhRfcHvP66683IiIisn1Op4MHDxqSjOeff944efKkERcXZ3z77bdGq1atDEnGkiVLXLUvvviiERwcbPz2229uj/HUU08Z3t7exqFDhwzDMIz169cbkoxHH3000/Nd/F6dP38+0/3R0dHGVVdd5bauffv2Rvv27TP1PHfu3BxfW/ny5Y1mzZrlWHMxScbEiRMzra9du7YxaNAg123nZ65t27aZ/rv27dvXqFKlitv648ePG15eXm7/jTp16mQ0bdrUSE5Odq1zOBzGjTfeaNSvXz/XPQOAp2KIIwCUclFRUapcubLCw8PVp08flSlTRp999plq1KjhVnfpEaUlS5aoXLly6ty5s06dOuX6iYiIUJkyZbRhwwZJ5pGwc+fO6amnnsp0vpjNZsu2r9DQUCUlJWnt2rW5fi07duzQiRMn9NBDD7k9V48ePdSwYUN9+eWXmbZ54IEH3G63a9dOf/zxR66fc+LEiapcubLCwsLUrl077d27V6+99prb0aclS5aoXbt2Kl++vNt7FRUVpfT0dG3atEmS9Omnn8pms2nixImZnufi9yowMNC1fPbsWZ06dUrt27fXH3/8obNnz+a69+wkJCSobNmyV/w42Rk2bJi8vb3d1vXu3VsnTpxwG666dOlSORwO9e7dW5J0+vRprV+/Xr169dK5c+dc7+Pff/+t6Oho7d+/P9NQVgAobhjiCACl3MyZM3XNNdfIx8dHVatWVYMGDeTl5f7/73x8fFSzZk23dfv379fZs2dVpUqVLB/3xIkTkjKGTDqHqOXWQw89pE8++UTdunVTjRo11KVLF/Xq1Utdu3bNdpu//vpLktSgQYNM9zVs2FDfffed2zrnOV4XK1++vNs5dCdPnnQ7J61MmTIqU6aM6/bw4cPVs2dPJScna/369ZoxY0amc9j279+vH3/8MdNzOV38XlWvXl0VKlTI9jVK0ubNmzVx4kTFxsbq/PnzbvedPXtW5cqVy3H7ywkJCdG5c+eu6DFyUrdu3UzrunbtqnLlymnx4sXq1KmTJHN4Y/PmzXXNNddIkg4cOCDDMPTss8/q2WefzfKxT5w4kel/LgBAcUJAA4BSrnXr1q5zm7Lj7++fKbQ5HA5VqVJFCxcuzHKb7MJIblWpUkW7du3S6tWr9dVXX+mrr77S3LlzNXDgQM2fP/+KHtvp0qM4WWnVqpUr+EnmEbOLJ8SoX7++oqKiJEm33nqrvL299dRTT+mWW25xva8Oh0OdO3fWk08+meVzOANIbvz+++/q1KmTGjZsqNdff13h4eHy8/PTypUrNW3atDxfqiArDRs21K5du5SamnpFlzDIbrKVi48AOvn7+ysmJkafffaZ3n77bcXHx2vz5s165ZVXXDXO1zZ27FhFR0dn+dj16tXLd78A4AkIaACAfLn66qv19ddf66abbsryD+6L6yRpz549ef7j2c/PT7fddptuu+02ORwOPfTQQ3rnnXf07LPPZvlYtWvXliT9+uuvrtkonX799VfX/XmxcOFCXbhwwXX7qquuyrH+mWee0bvvvqvx48dr1apVksz3IDEx0RXksnP11Vdr9erVOn36dLZH0b744gulpKRo+fLlqlWrlmu9c0hpQbjtttsUGxurTz/9NNtLLVysfPnymS5cnZqaquPHj+fpeXv37q358+dr3bp12rt3rwzDcA1vlDLee19f38u+lwBQXHEOGgAgX3r16qX09HS9+OKLme5LS0tz/cHepUsXlS1bVpMmTVJycrJbnWEY2T7+33//7Xbby8tL1113nSQpJSUly21atmypKlWqaPbs2W41X331lfbu3asePXrk6rVd7KabblJUVJTr53IBLTQ0VCNGjNDq1au1a9cuSeZ7FRsbq9WrV2eqP3PmjNLS0iRJd999twzD0PPPP5+pzvleOY/6XfzenT17VnPnzs3za8vOAw88oGrVqunxxx/Xb7/9lun+EydO6KWXXnLdvvrqq13n0TnNmTMnz5criIqKUoUKFbR48WItXrxYrVu3dhsOWaVKFXXo0EHvvPNOluHv5MmTeXo+APBEHEEDAORL+/btNWLECE2aNEm7du1Sly5d5Ovrq/3792vJkiV64403dM899ygkJETTpk3T/fffr1atWqlfv34qX768du/erfPnz2c7XPH+++/X6dOn1bFjR9WsWVN//fWX3nzzTTVv3lyNGjXKchtfX19NnjxZQ4YMUfv27dW3b1/XNPt16tTRY489VphvicuoUaM0ffp0/etf/9KiRYv0xBNPaPny5br11ls1ePBgRUREKCkpST/99JOWLl2qP//8U5UqVdItt9yiAQMGaMaMGdq/f7+6du0qh8Ohb7/9VrfccotGjhypLl26uI4sjhgxQomJiXr33XdVpUqVPB+xyk758uX12WefqXv37mrevLnuvfdeRURESJK+//57ffzxx4qMjHTV33///XrggQd09913q3Pnztq9e7dWr16tSpUq5el5fX19ddddd2nRokVKSkrS1KlTM9XMnDlTbdu2VdOmTTVs2DBdddVVio+PV2xsrI4cOaLdu3df2YsHAKtZOYUkAMA6zinPt2/fnmPdoEGDjODg4Gzv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jNSZM2e0c+dOV8369evlcDjUpk0bSebhRy8v97fG+3/fgg6HI78vGQAAeAjn9PrM3gjA01g6i+OYMWP07rvvav78+dq7d68efPBBJSUlaciQIZKkgQMHuk0iMmrUKK1atUqvvfaa9u3bp+eee047duzQyJEjJUk2m02jR4/WSy+9pOXLl+unn37SwIEDVb16dcXExEiSGjVqpK5du2rYsGHatm2bNm/erJEjR6pPnz6qXr26JKlHjx7avn27XnjhBe3fv1/ff/+9hgwZotq1a+v6668v2jcJAAAUqJQUyXlaOQENgKex9By03r176+TJk5owYYLi4uLUvHlzrVq1yjXJx6FDh9yOZN1444366KOPNH78eD399NOqX7++li1bpiZNmrhqnnzySSUlJWn48OE6c+aM2rZtq1WrVikgIMBVs3DhQo0cOVKdOnWSl5eX7r77bs2YMcN1f8eOHfXRRx9pypQpmjJlioKCghQZGalVq1YpMDCwCN4ZAABQWDZskBITpWrVpFatrO4GANxZPknIyJEjXUfALrVx48ZM63r27KmePXtm+3g2m00vvPCCXnjhhWxrKlSooI8++ijHvvr06aM+ffrkWAMAAIof5/DG2283r4EGAJ6EryUAAFBqOBycfwbAsxHQAABAqbFjh3T8uFSmjNSxo9XdAEBmBDQAAFBqOI+edesmZXFlHACwHAENAACUGsuWmb8Z3gjAUxHQAABAqXDggPTLL5KPj9S9u9XdAEDWCGgAAKBUcA5vbN9eKl/e2l4AIDsENAAAUCoweyOA4oCABgAASryTJ6XNm83l22+3tpeCdviwdOpUgNVtAB7nyBHpp58q6cgRqzvJG8svVF1qpKZKdnv29wcESN7e5rLdbtZnx9/fHECf19q0NCklJftaPz/J1zfvtenpUnJy9rW+vmZ9XmsdDunChYKp9fHJmK7LMKTz5wum1tvb/G/nlJR0ZbV2u7yTk83X4nx/L/e4Xl5SYGDG7fPnzb6zYrNJQUH5q71wwXyfsxMcnL/a5GTzc1EQtUFBZt+S+flNSyuY2sDAjKvZXm5fzkvtxfs93xE51zr3jdTUjMctjd8RTpfu93xHXLZ21aeSwxGk66+3qXZtlYjviH07pSBJqz+Tln/WSenp0vDhKp3fEVnV8h2Rv9oS8h0xf740cqShROMmTZxoaM4caejQ7B/S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U9myZWWz2axux01ycrICAwN1880387lFkbPb7Vq7dq06d+4sX19fq9sBPAr7B5A1T9s3nKPrLsfSgFapUiV5e3srPj7ebX18fLzCwsKy3CYsLCzHeufv+Ph4VatWza2mefPmrppLJyFJS0vT6dOn3R4nq+e5+Dku5e/vL39//0zrfX193T4U6enpstls8vLykpeX5acBFis2m02fffaZYmJirG6lUDiHNTo/H3l5vYX93jj7ufTzDBQlPn9A9tg/gKx5yr6R2x4sTQd+fn6KiIjQunXrXOscDofWrVunyMjILLeJjIx0q5fMw5bO+rp16yosLMytJiEhQVu3bnXVREZG6syZM9q5c6erZv369XI4HGrTpo2rZtOmTW5jRdeuXasGDRpkObyxtBg8eLBsNpvrD/W6devqySefdJshsyS6+HX7+fmpXr16euGFFwp9qN/x48fVrVu3Aq8FAACAZ7L88M2YMWP07rvvav78+dq7d68efPBBJSUlaciQIZKkgQMHuk0iMmrUKK1atUqvvfaa9u3bp+eee047duzQyJEjJZlHEUaPHq2XXnpJy5cv108//aSBAweqevXqriMLjRo1UteuXTVs2DBt27ZNmzdv1siRI9WnTx9Vr15dktSvXz/5+flp6NCh+vnnn7V48WK98cYbmSYoKY26du2q48eP648//tC0adP0zjvvaOLEiVa3Veicr3v//v16/PHH9dxzz+nVV1/Nsragzi0MCwvL8qjsldYCAADAM1ke0Hr37q2pU6dqwoQJat68uXbt2qVVq1a5JuQ4dOiQjh8/7qq/8cYb9dFHH2nOnDlq1qyZli5dqmXLlqlJkyaumieffFKPPPKIhg8frlatWikxMVGrVq1yO29m4cKFatiwoTp16qTu3burbdu2btc4K1eunNasWaODBw8qIiJCjz/+uCZMmOB2rbTSyt/fX2FhYQoPD1dMTIyioqLcTr78+++/1bdvX9WoUUNBQUFq2rSpPv74Y7fH6NChgx599FE9+eSTqlChgsLCwvTcc8+51ezfv991vlPjxo2zPMHzp59+UseOHRUYGKiKFStq+PDhbhccHzx4sGJiYvTKK6+oatWqCg0NdR35euKJJ1ShQgXVrFlTc+fOzfXrrl27th588EFFRUVp+fLlbs/z8ssvq3r16mrQoIEk6fDhw+rVq5dCQ0NVoUIF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M2aMBg0apJYtW6p169aaPn26kpKSNGTIEAu7BooG+weQNfYNIPdK9P5i8SySQIm0YcMGQ1Kmn0GDBrlq3nzzTaNWrVqGn5+f0bp1a+O///2vdQ0DRYj9A8ga+waQeyV5f7EZhmEUbSQEAAAAAGSFc9AAAAAAwEMQ0AAAAADAQxDQAAAAAMBDENAAAAAAwEMQ0AAAAADAQxDQAAAAAMBDENAAAAAAwEMQ0AAAAADAQxDQAADwUDabTcuWLZMk/fnnn7LZbNq1a5elPQEAChcBDQCALAwePFg2m002m02+vr6qW7eunnzySSUnJ1vdGgCgBPOxugEAADxV165dNXfuXNntdu3cuVODBg2SzWbT5MmTrW4NAFBCcQQNAIBs+Pv7KywsTOHh4YqJiVFUVJTWrl0rSXI4HJo0aZLq1q2rwMBANWvWTEuXLnXb/ueff9att96qkJAQlS1bVu3atdPvv/8uSdq+fbs6d+6sSpUqqVy5cmrfvr2+//77In+NAADPQkADACAX9uzZoy1btsjPz0+SNGnSJH344YeaPXu2fv75Zz322GO699579c0330iSjh49qptvvln+/v5av369du7cqfvuu09paWmSpHPnzmnQoEH67rvv9N///lf169dX9+7dde7cOcteIwDAegxxBAAgGytWrFCZMmWUlpamlJQUeXl56a233lJKSopeeeUVff3114qMjJQkXXXVVfruu+/0zjvvqH379po5c6bKlSunRYsWydfXV5J0zTXXuB67Y8eObs81Z84chYaG6ptvvtGtt95adC8SAOBRCGgAAGTjlltu0axZs5SUlKRp06bJx8dHd999t37++WedP39enTt3dqtPTU3V9ddfL0natWuX2rVr5wpnl4qPj9f48eO1ceNGnThxQunp6Tp//rwOHTpU6K8LAOC5CGgAAGQjODhY9erVkyR98MEHatasmd5//301adJEkvTll1+qRo0abtv4+/tLkgIDA3N87EGDBunvv//WG2+8odq1a8vf31+RkZFKTU0thFcCACguCGgAAOSCl5eXnn76aY0ZM0a//fab/P39dejQIbVv3z7L+uuuu07z58+X3W7P8ija5s2b9fbbb6t79+6SpMOHD+vUqVOF+hoAAJ6PSUIAAMilnj17ytvbW++8847Gjh2rxx57TPPnz9fvv/+u77//Xm+++abmz58vSRo5cqQSEhLUp08f7dixQ/v379eCBQv066+/SpLq16+vBQsWaO/evdq6dav69+9/2aNuAICSjyNoAADkko+Pj0aOHKkpU6bo4MGDqly5siZNmqQ//vhDoaGhatGihZ5++mlJUsWKFbV+/Xo98cQTat++vby9vdW8eXPddNNNkqT3339fw4cPV4sWLRQeHq5XXnlFY8eOtfLlAQA8gM0wDMPqJgAAAAAADHEEAAAAAI9BQAP+v/06FgAAAAAY5G89jR1lEQAATAgaAADAhKABAABMCBoAAMCEoAEAAEwIGgAAwISgAQAATAgaAADAhKABAABMCBoAAMCEoAEAAEwEouO3AuOlz3QAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "(grn.varp['all'].max(-1)>0.01).sum()/grn.shape[1]" + "grn.varp['GRN'] = grn.varp['all'].mean(-1).todense().T\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" ] }, - { - "cell_type": "markdown", - "id": "7cba09b4", - "metadata": {}, - "source": [] - }, { "cell_type": "code", - "execution_count": 38, - "id": "958e8205", + "execution_count": 59, + "id": "d8851522", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "base enrichment\n", + "Top central genes: []\n" + ] + }, { "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAICCAYAAACJChkhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACk0UlEQVR4nOzdd1xT1/sH8M8Ne08VXGwUFHHgVhAXjjqxdbQqat22tWpbcdRVR1tt/dW2VkURrbPVOuqkAipOrAucgGxBQfYeub8/+CYlZJDcBMJ43q9XXoV7T26eIM3DOfec5zAsy7IghBBC6hhP3QEQQghpmigBEUIIUQtKQIQQQtSCEhAhhBC1oARECCFELSgBEUIIUQtKQIQQQtSCEhAhhBC1oARECCFELSgBESLDnTt3MG3aNNjZ2UFPTw+mpqbo1q0b1qxZg6ysrDqJgWEYzg8BW1tbuZ+zffv2OnlfhGiqOwBC6qtVq1Zh06ZNqFqtqri4GPfv38f9+/exc+dOnDt3Dt27d1djlIQ0XJSACJHgl19+wcaNG4Xf6+vrw9PTExkZGbh37x4AID09HT4+Pnj69CmsrKxqLRZfX1+xY/fu3UNCQoLwexcXF7i6usp9TU9PTzRr1kziOScnJ8WDJIQLlhAiIjc3lzUyMmIBsABYAwMD9tmzZ8LzGzZsEJ4DwM6cObPOY5w+fbpIDGvWrJHZ3sbGRqR9aGhoncRJiCx0D4iQao4fP468vDzh9x988AHat28v/H7p0qXQ09MTfn/06FEUFBTUaYx16d27d1i7di169uwJc3NzaGlpwdjYGPb29hg0aBC++uorXLt2Td1hkgaIhuAIqab6h2mPHj1EvtfT04Obmxvu3r0LACgsLMS9e/fg5eVVZzHWlYyMDHh4eIgM9wFAXl4e8vLyEBcXh5CQEMTGxsLT01NNUZKGihIQIdU8f/5c5PtWrVqJtal+7Pnz5w0qAa1Zs0bqPaA///xT+PWePXtEko+trS06duyIkpISpKSkIC4uDkVFRbUeL2mcKAERUk12drbI9wYGBmJtqh+rqynZqiLvkFlcXJzwa2dnZzx9+hQaGhrCY6WlpQgPD29w75/UD5SACKkBK2HTYEnHGiMbGxvh13FxcVixYgU8PDzg4OAAZ2dnGBoaYuDAgWqMkDRkNAmBkGpMTU1Fvi8sLBRrU33SgZmZWW2GpHKhoaFgWVbio6rZs2ejbdu2AICysjJ89913+OCDD9CtWzcYGxvD1dUV/v7+SE9PV8fbIA0cJSBCqqk64w0AkpOTxdqkpKTIfE5j0bx5czx8+BAbN25Enz59RIYeWZbFs2fPsGXLFvTo0QO5ublqjJQ0RJSACKmm+myuO3fuiHxfWFiIqKgo4ff6+vrw8PCok9jUwczMDCtWrMCNGzeQl5eHN2/e4Pr16xg3bpywTXx8PE6ePKnGKElDRAmIkGo++OADGBkZCb//448/8OzZM+H333//vcjMr0mTJkmcqNAYhIaG4uDBg8jMzARQWZeuefPm6NevH4YPHy7SNi0tTR0hkgaMJiEQUo2RkRE2b96MRYsWAajs8Xh4eMDT0xPp6en4999/hW3NzMzwzTffqCvUWvfo0SN8/vnn0NDQgLOzM9q2bQs9PT2kpaUhIiJCpK2Li4uaoiQNFSUgQiRYuHAhXr9+jc2bN4NlWRQWFuLixYsibSwtLXH+/HlYW1urKcq6U1FRgWfPnon0BKsaMWIERo0aVcdRkYaOEhAhUmzcuBGjR4/Gzz//jGvXruHNmzfQ0dGBg4MDRo0ahcWLFze42W+KGj9+PHg8Hm7duoXIyEhkZGQgMzMTPB4PzZs3R6dOnfDBBx/gww8/BI9HI/pEMQzbVBY0EEIIqVfoTxZCCCFqQQmIEEKIWlACIkQFDhw4AE1NTbke3t7ecrd1dHRU91sjpNbQJARCVIDP56OiokKutizLyt22vLxcmbAIqddoEgIhhBC1oCE4QgghakEJiBBCiFpQAiKEEKIWlIAIIYSoBSUgQgghakEJiBBCiFpQAiKEEKIWlIAIIYSohcoSkGDPFEIIIUQeSpXiSUtLw+bNm3H27FkkJSWBZVmUl5dj165dePPmDTQ1NbFixQpVxUoIIaQR4ZyAbt++jdGjR+Pdu3cQVPNhGAYAkJKSgm+++QYMw6BPnz4YMGCASoIlhBDSeHAagsvMzMT48eORkZEB4L/EIzBhwgTh1+fPn1ciPEIIIY0VpwT0888/Iy0tDQzDgGVZVK9n2qlTJ1haWgKo7CkRQggh1XFKQGfPnhV+ffjwYYwdO1asjaurK1iWRUxMDOfgCCGENF6cElB0dDQYhoGHhwcmTZoEDQ0NsTampqYAKofrCCGEkOo4JaCioiIAQIsWLaS2yc7OrnwBHi01IoQQIo5TdjA3NwfLsnjx4oXE83l5ebh//z4AwMLCglNgv//+O+bOnQsPDw/o6OiAYRjs379f4evw+Xzs2LEDbm5u0NPTQ7NmzTB58mS8evWKU1yEEEJUg9M0bHd3d1y+fBkxMTH4/vvvRbYNfvPmDRYsWID8/HwwDIPOnTtzCmzVqlVISEiApaUlrK2tkZCQwOk6c+fORUBAADp06IBPP/0Ur1+/xvHjx3H58mXcvn0bTk5Ocl+Lz+fj9evXMDIyEpv5RwghjRnLssjLy0PLli1VN7LFcrBz506WYRiWx+MJH4LvNTQ0RL7fu3cvl5dgg4OD2fj4eJZlWXbz5s0sADYwMFCha4SEhLAAWE9PT7akpER4/Pz58ywAdujQoQpdLykpiQVAD3rQgx5N9pGUlKTQ56YsnHpAfn5++PHHH4Uz3FiWFfYI+Hw+GIYBwzBwcnLChx9+yOUlMHjwYE7Pq2rPnj0AgA0bNkBbW1t4fPjw4RgwYAAuX76MxMREtG3bVq7rGRkZAQCSkpJgbGysdHyEENJQ5Obmok2bNsLPQVXglIB0dXVx6tQpDB06FCkpKSLDUYK1QVZWVjh58iR0dHRUFqyiwsLCYGBggL59+4qd8/HxQVhYGK5evYqpU6fKdT3B+zQ2NqYERAhpklR5+4HzQJ6LiwsiIyOxcuVKuLq6Qk9PD3p6enB1dYW/vz+ioqLg6uqqskAVVVBQgNTUVNjZ2UmcJi649xMdHS31GiUlJcjNzRV5EEIIUQ2lipGamppiw4YN2LBhg6riUZmcnBwAgImJicTzgh6MoJ0kmzdvxrp161QfHCGEEG49IHt7e9jb26NTp04oKytTdUz1hr+/P3JycoSPpKQkdYdECCGNBqceUGpqKkpLS+Ht7Q0tLS1Vx6QSgp6PtB6OYDhNWg8JAHR0dGr1HlY5vxR/PluFhJwHwmOTO2xFWxP3WntNQgipLzj1gGxsbACo9maUqhkYGMDa2hpxcXGoqKgQOy+496PIOiBVyivNwLbbI0WSDwAcebIMl1/9hNKKIrXERQghdYVTAvL19QXLsrh//369vjHv5eWFgoIC3LhxQ+zcpUuXAACenp51HRYA4O+XW6See5B2FvsezkFCzsO6C4gQQuoYpwS0YsUKuLm5ITs7GxMnTlT7vZGMjAw8f/5cuD+RwJw5cwAAq1evRmlpqfD4hQsXEBYWhqFDhwp7c3WpnF+KxNxHMtvklKTh6JMvqDdECGm0GJattpmPHAYOHIjs7Gw8fPgQDMNAQ0MDtra2Eks0MAyDK1euKBxYQEAAwsPDAQCRkZG4f/8++vbtC0dHRwBAv3798PHHHwMA1q5di3Xr1mHNmjVYu3atyHVmz54tLMUzcuRIpKam4tixYzA0NMStW7fg7Owsd0y5ubkwMTFBTk6OUuuACstysCNiQs0N/8dExwrDHZfCxqQz59ckhBBlqOrzrypOkxDCwsKE1Q5YlkV5eTliYmIQGxsr0q5qhQRFhYeHIygoSOTYjRs3RIbTBAlIll27dsHNzQ27d+/G//3f/8HQ0BDjxo3Dxo0b4eDgwCk2ZZUp2KMR9IZcLQdhsN0C6GnRIlhCSMPHqQfE4/HkSiyCBCRpEkBDpKq/AM5Ff4eo9GBOzzXQMsNQ+8/gbCFe3YEQQmpLbfSAOFdCYP+3FbesBxHFsixS8p5KTT4jHb/EILsF0ORJn/pdUJaFv16sxdmXm1FUVn8ngBBCSE04DcHFxcWpOo4mISwhAHdfH5d6Xl/LFB2bD4GDaQ9ciN2GpNxIqW2fZoQgIecBfBwWw8m8T22ESwghtYrTEFxTpUwXNLfkLXb+K7sy+JKef0NLo7L3w7J83E87g2uJgSitKJT5vA7NBmGQLd0bIoTUnno1BEcU8zrvuczzVgZOwuQDAAzDQzfrsZjdZR8czHrJfO6T9CvY93A2nqaH0NAnIaTBUCoBZWVlYeXKlejUqROMjIxgZGSETp06YeXKlXj37p2qYmwU+Gy5zPOtjd0kHjfUtoBv+/UY6fgldDQMpT4/vywTZ6M34/gzf+QUpykVKyGE1AXO1bAfP36M4cOHIy0tTeSv7qioKDx58gSBgYG4cOEC3N2prhkAsJDdM7HUt5V6jmEYdGw+BDYmXXDp1XbEZt2R2jY++1/sfTgbvVtPQfeWvtDkaUttSwgh6sSpB1RQUICxY8ciNTVVONW66oNlWaSlpWHcuHEoKChQdcwNEsvypZ4z1W0p10QCIx1L+LbfgBGOy6CjYSC1XRm/GNcS9yHw0TyxWnOEEFJfcEpAe/fuRXx8vHAtkLTp1wkJCdi7d69qIm3gpPWA2ln0x4cdf4S+lvSq3FUxDAO35j6Y2XkP7E27y2ybWZSEo0++xIlnXyO3JF3hmAkhpDZxSkCnT58Wfu3h4YFz584hOTkZycnJOHfuHHr06CE8f+rUKaWDbAyk9YD6tp4KQ21zha9nrNMME1w2YozzKhhqyX5+TNYt7H34MR6/uUiTFAgh9Qane0BRUVEAAAsLCwQHB4vsqdOyZUv07t0bzs7OyMjIwJMnT1QTaQMn9R6QEltaMAyD9pZesDXthrCEADx6c05q29KKQlyI3Ybn765hmMPnMNZpxvl1CSFEFTj1gLKzs8EwDLp27SpxQzdTU1N07dpV2JZIT0AMlN9TSVfTEMMcFuMjt/9DCwPZ+xvFZUdQb4gQUi9wSkB6enoAgOTkZKltBOcEbZs8KUNwDKO6pVitjFwxrdMODLSdBy2ertR2gt7QH89WIrfkrcpenxBCFMHp08/W1hYsy+LZs2f47rvvRP6SZlkWW7duxdOnT8EwjFr226mParMHVBWP0UD3lr6Y0zUIrpaDZLaNy47AngczcDflD/DZxlEwlhDScHBKQAMGDBB+7e/vDxsbG/j4+GDYsGGwsbHBV199JbFtUyZtEoIqe0BVGWqbY5Tzcvi2Xw8DGZMUyvmlCE3YjUORnyOjMKFWYiGEEEk4ffrNnz8fmpqV8xdYlkVycjL++ecfBAcHIzk5Wdgj0tDQwPz581UXbQNWVz2g6hzNe2NW5z3o2GyIzHav859h/6P5uJ18lHpDhJA6wSkBtWvXDps3bxZZhCpQ9euNGzeiffv2ykfZCEjtAdVBOT49LWOMdPoSvu3Xy5yyXcGW4WriXvwe+RneFsRKbUcIIarA+dNv6dKlOHDgAKytrcUWolpbWyMwMBBffPGFKmNt0KT2gJSYhq0oR/PemNUlAJ2aDwdk9LxS819g/6MFCInfhbKK4jqLjxDStCi9HQPLsvj3338RHx8PlmVhZ2eHrl27gsdrfIW2lSlHfiflD4Ql7BY7vqDbERjpWKoqRLkl5TzG+dhtyC5+LbOdmW5LDHNYgrYmVNOPkKasNrZj4FyMVIBhGHh4eMDDw0MV8TRi0iYh1F0PqKo2Jp0w030XriXux73Uk4CUHlpW8WscebIM7i1GwrOtH/S1TOs0TkJI48Wpm1JYWIjExEQkJiYiKytL7HxmZqbwfGGh7M3UmgppHc26uAckjZaGLgbZzcOHHX+EuW5rmW0fvTmHgAcf40n6FVrASghRCU6ffps2bYKdnR3s7OwQFhYmdj48PFx4fvPmzcrG2Ciw9awHVFVr4w7wc/8NvVt/CA1GS2q7ovIc/B29BX8+W4XMIumLkAkhRB6cElBoaChYloWlpSXGjh0rdn706NFo0aIFWJZFSEiIsjE2CvWxB1SVloYOPNv6wc99J1oaushs+yr7LvY9nENTtgkhSuH06ffq1SthLThpf8ELNqKLi4vjHl0jUp97QFVZ6tvgQ7cfMdB2PjR5OlLbCaZsH3z8Cd4WvKrDCAkhjQWnBJSZmQkA4POlb7ImOCdo29TV9x5QVZXlfMZjVuc9cDLvK7NtWkE0gh4vwNWEvSitKKqjCAkhjQGnTz99fX2wLIuoqCiJSaiiokK4ZYOurvSimE2JtB6QMtsx1DZTXWuMa7cGY9t9DQMtM6nt+GwFbqccxd6HsxGXfa8OIySENGScElCbNm0AAGlpaRInGWzatAmpqalgGAZt27ZVLsJGooxfIvF4bZfiURbDMGhn0R8fd9mLrlZjIGsBa27JGxx/6o9z0d8hv5R6voQQ2TitA+rXr5+wh/P1118jJCQEXl5eAICrV6+KzIzr16+f8lE2AhGv/5R4vD4OwUmiq2mEIfaL4NpsIC7EbMO7okSpbaPSgxGdeRMDbefBrblPvbvPRQipHzhVQnjw4AG6desGhmGE9eCqElySYRjcvXsX3bp1U020aqbMSuBvb0ouBrq01zlo8rRVEV6dKeeX4mbS77idckz60OL/2Jl2xzCHxTDWaV5H0RFCakNtVELg9Od3ly5dsHDhQpHkI6gDB/w3s2vevHmNJvkoy1LPVuLxhpZ8gMqYPW1mws99J9oYu8lsW7kD62w8TDtHC1gJISI4j//89NNP+Oyzz8Dj8cQ2pGMYBp988gl27NihkiAbg5p6Cg1RcwN7TO6wFUPtP4W2hr7UdqUVhbj0ajuOPFlGew4RQoSULkYaGxuL06dP49WryrUg9vb2GD16NBwdHVUSYH2iTBd0z4OZyCxKEjlmZ+qBD1wbR6WI3JJ0hMbvxvN3YTLbaTBa6N92Brq3HA8eo1E3wRFClFYvi5E6ODhgyZIlqoilyanvM+AUYazTDGParUSHzIG4FLsd+WWSZ8FVsGUIS9iN6MwbGOG4DOZ6smvQEUIar3o9BSsiIgIjRoyAqakpDAwM0KtXLxw/flyha7x+/RqfffYZXF1dYWBggBYtWqBfv344ePAgKirqroyM5A3pGk8CEhDsOdSx2VCZ7VLyniDw0Tz8m3pK6mZ9hJDGTekeEABERUXh559/xrNnz6ClpYUOHTpgxowZ6Ny5M+drhoaGwsfHB7q6upg0aRKMjIxw4sQJTJw4EUlJSVi6dGmN13j16hV69uyJd+/ewcfHB6NGjUJubi5OnTqFadOmISQkBIGBgZxjVIz4SCfD1Ov8z5muphFGOn2B9pZeuBS7HXml6RLblfNL8E/cL3j57gZGOC6Fia5VHUdKCFEnue4BhYSEYMuWLQCAHj164JtvvhGeCw4OxujRo1FaWip6YYbBjh07MH/+fIWDKi8vR/v27ZGcnIzbt28LE1lOTg569OiB+Ph4vHz5EjY2NjKvs2DBAuzcuRPbt2/HZ599JjyenZ0Nd3d3JCYmIj4+vsbrCCgzBrrr32nILkkVOeZo1gu+LhsUuk5DU1pRhPCkA4h4fQLS9hwCAG2eHrzt5sG9+XBaN0RIPaS2adhhYWH4559/cOXKFZHJBWVlZZg9ezZKSkrEptjy+XwsXrwYT58+VTiokJAQxMbGYsqUKSK9KBMTE6xYsQKlpaUICgqq8TqCiREjRowQOW5qaipcIJuRkaFwfFxI3pK78X/QamvoYaDtXEzpuA2mOtZS25Xyi3Ap9kf88Wwl8krq5t+EEKJeciWgyMhIAJW9mvfee094/MKFC0hMTATDMMJFqVXXA5WXl2P3bvFtqGsiqKQwdKj4fQQfHx8AlRUXatKxY0cAwPnz50WOZ2dn48aNG7CysoKrq6vC8XEhKQE11iE4SdoYu2FG513oYjVKZjvBuqGot8G0boiQRk6uT8CYmBgAlVOsLS0thccvXLgg0s7LywunT5/G1KlThceuXbumcFDR0dEAACcnJ7FzVlZWMDQ0FLaR5YsvvoCzszM+//xzDB8+HF999RXmz58PFxcXaGho4K+//oKenp7U55eUlCA3N1fkwZmED9PG3/8Rpa2hh6H2n2Ki67cw1pZeGaGkIh/nYr7DXy/WoqBUfMddQkjjIFcCyszMBMMwcHBwEDl+69YtYc8HAPbt24dRo0YhMDAQVlZWYFkW8fHxCgeVk5MDoHLITRJjY2NhG1latGiBW7duYdiwYbh48SK+++47/Pbbb8jJycG0adOEexZJs3nzZpiYmAgfgiKsXEgegms6PaCqbE27Ymbn3ejUfJjMdtGZN7H34cd4llFzb5cQ0vDInYAA0a0VSktLRe7vuLi4wM7OrvKiPJ7wwz0/P19lwSoqJiYGffv2RXp6Oq5fv468vDwkJSXh66+/xoYNGzBo0CCZU7H9/f2Rk5MjfCQlJUltWxPJQ3CcL9fg6WgaYLjjUkxw+QaGWuZS2xWV5+LMy2/w1/P1yC15W4cREkJqm1zTsAWzkt6+/e8DICIiAuXl5cL7P337im5cpqmpKfJfRQh6PtJ6Obm5uTAzk74/jYCfnx8SEhLw6tUrWFlVTvE1NDTE8uXL8ebNG2zfvh1Hjx7Fhx9+KPH5Ojo60NGRviuoYiQNwTXNHlBVDmY9MbPzHlyJ/xVP0q9Ibfcy8zric/7FQNt56NR8GM2UI6QRkOsTsEWLFmBZFvfu3RMOqR08eBDAf5WvqyegtLQ0AIC5ufS/bqUR3PuRdJ8nLS0N+fn5Eu8PVZWXl4cbN27AxcVFmHyq8vb2BlBZ2bsuSL6hTh+iAKCnZYz3nJZjXLs10Nc0ldqutKIQF2N/wB/PViK3RPLaIkJIwyFXAurRoweAylltXbp0QZcuXbBnzx7hX6EMw2DQoEHC9qWlpYiMjATDMHKvsalKsLfQ5cuXxc5dunRJpI00gnVJ0qZZp6dXfoCprodTExqCq4mzRT/M6rIH7Sz6y2xXOVPuYzx+c5FmyhHSgMmVgPz8/IRf5+Tk4NGjRyJbLwwdOhStWrUStrl8+bIwAdR0o1+SQYMGwd7eHocPH8bDhw9FXnvTpk3Q1tbGtGnThMdTU1Px/PlzkSE7CwsLtGvXDomJiQgICBC5fnZ2NrZu3Qrgv55QbZP0QUlDcOL0tUwxxnk1RjmvgK6mkdR2pRWFuBC7DX9Sb4iQBkuuT8Dhw4fjo48+Em61UHXdj6GhIX744QeR9lXL21QfmpOHpqYmAgICwOfz4enpiTlz5mDp0qVwd3fHy5cvsWnTJtja2grb+/v7w8XFBX/99ZfIdX788Udoampi9uzZGDx4ML744gt8/PHHcHZ2xvPnz+Hr64vBgwcrHB8XTXUhKhcMw8DV0hsfd96Ljs0kb+Qn8Co7Avsezsb91DPgs3VX248Qojy5/wTfv38/tm/fDjc3N+jo6MDIyAgjR45EeHg42rdvL2yXmpqKJ0+ewMHBAQ4ODhg2TPZUW2m8vb0RHh6Ovn374tixY9i5cydatGiBo0ePylUHDqhMnDdv3sT777+Pp0+fYvv27Th27BhsbW2xY8cOHDt2jFNs3EgagqMEJIuBthlGOn0J3/YbZM6UK6koQHDcDhyOWorMouQ6jJAQogyl9wNqSpSphfR/d8ejuDxP5FjHZkMw0ulLVYbYaBWX5+FK3E5EpQfLbKfJ04Zn25noZj2W9hsiRIXqzZbcRHE0C045lRW2v4Rv+/Uye0Pl/FKExP9GvSFCGgBKQHVE0pbcNASnOEfz3pjZeQ86NJN9706w31DE65O03xAh9RQlILWiBMRF5bqhrzDR9VuZFbbL+SUIid+Jw0+WIb0grg4jJITIgxJQHZH0V3hj2pJbHWxNu2JG513oZjVWZrvk3Ejsfzwf1xODUMEvq5vgCCE1ogSkRjQEpzxtDT0Mtl+IyR22yuwN8dkK3Ez+HUGPFyEtv+ZK6oSQ2kcJqI5ILEZKPSCVaWvijhmdd6Gr1RiZ7dILX+HA40W4lhiIcn6pzLaEkNpFCaiOSL4RTglIlbQ19DDEfhEmd9gKEx3x+n8CLPi4lXwY+x8tQFz2vTqMkBBSFSUgNaIhuNrR1sQdMzvvRq9Wk2SWO3pXlIDjT/1x6sUGZBen1mGEhBCAYwJKTExEYmIi3r17p+p4Gi2J07CpB1RrtDX04GUzC9M6/Yxm+vYy2754dw17H87GnZTjVM6HkDrEKQHZ2trCzs4O8+fPl9pm+fLl6NGjB3r27Mk5uMaEFqKqh5WhE6Z3+hl920yTWRmhnF+CsIQ92P9oPhJzHtVhhIQ0XbU2BBcbG4t79+7h3j0aYwek7YhKCaguaPC00K/NVEzv9AuaGzjIbJteGIcjT5bhUux2lJQX1FGEhDRNtZaASkpKauvSDRT1gNStuYEDprn9jKH2n0JHw1Bm24dvziHg4cd4mh5ClRQIqSVy75edmJgodqywsFDi8ZSUFNy5cwcA/ZUPQOqQDu0HVPc0eJroYjUKzub9EJ4UhIdvzkltm1+agbPRm3Ev9S8MtluIlkbtpbYlhChO7mrYPB5PmEyqbkYnC8uyMDMzazSTFbhUgy0uz8fPER+gghVfgd/d2hcD7eapOkyigOTcKFyM3Y53RQky2zHgoWerD9C3zVRo8rTrKDpC6o96UQ27ar5iWVbqA6hMUN26dVNJoA1VYs4jickHABiGekDq1tq4I2a478RA2/nQ4ulKbceCj9spRxH0aCFS81/UYYSENF619gnIsiw0NDTg7+9fWy/RIFTfA6gqDUbuEVBSizR4Wujecjxmdt4NG5OuMttmFMXj4ONPqZICISog9yegp6encMjt6tWrYBgGFhYW6NChg0g7hmGgp6eH9u3bY/r06ejUqZNqI25EWhl3qLkRqTOmutaY6LoFzzJCcTVxH3JL3khsJ6ikEJN5CyMcv4CVoVMdR0pI4yB3AgoLCxN+zeNVdpwGDBiA48ePqzyopqC5gQPsTD3UHQaphmEYuDYbCCfzvohI/RM3kn4Hny2X2Da9MA4HIz9Br1aT0af1FGjwtOo4WkIaNk5jQILeUPXeDxEnaf0PALzn+BVtGV2PaWnooE/rD+Fk1gfnYr7Dm4IYie0EVbZjsm5hiN0naE29WkLkxikBVe0NkZpImWRI09MbhGYGdpjqtgO3U47gZvIhqaV63hbE4lDU5+hmNQaeNjOhraFXx5ES0vAofRc8OTkZKSkpMheeenp6KvsyjQ7VgWs4NHia6NtmKhzNe+N89Pd4W/hKSksW/6adQkzWbQx3XAIbky51GichDQ3nBHT69Gl89dVXiI6WvbkXwzAoL5c8ht4UyLXIijQILQwcMa3Tz7iZfBi3kg9LLDALADklaTj65Et0bjESXjYfQ1dTdtUFQpoqTtOwL168iPHjxyM6OlrmWqCqa4KarKb+/hsZDZ4W+redjmmdfoalvq3Mtg/fnMPu+9P/V86Hfg8IqY5TAtq0aZPc1RCI5A8eGoJr2CqrbP8Cr7azZFZGKCrPxdnozTjxfDVyS97WYYSE1H+chuAePHggTDzNmjVDz549YWJiAg0NmtUlN0rcDZ4mTxu9Wk+Cs0U/XIjZhuS8KKltY7PuYO/D2ejT+iN0bzmeZkASAiUnIVhaWuLx48do3ry5quJpdKRNwyaNh7lea0zpuA33087gasJelPGLJbYrrShEWMJuvHx3HSOdvoS5Xus6jpSQ+oXTEFzHjh0BAF26dKHkwxENwTUuDMNDN+uxmNl5NxzMZG/C+Dr/GQIfzUXE65O01QNp0jgloFmzZoFlWURFRdG+PzWgm89Ni6muNSa4fIOx7b6GgZaZ1Hbl/FKExO/EkSfLkF2cWocRElJ/cE5AQ4cORWpqKnx9fWucik3EUQ+ocWtn0R+zOgegY7MhMtsl5UZi38M5eJB2lv5YIU0Op3tADg4OKC4uBsuyuHDhAi5cuABDQ0NYWFiItWUYBrGxsUoH2nDRh0pTpadljJFOX8K9xQici/ke2cWvJbYr4xfj8quf8OJdOEY4LoWxDg1rk6aBUwKKj48HwzBgGEb4V1teXh7y8sS3Hmjq07SlTkJo4j+XpqRyz6HfcDVhL+6nnZbaLiHnPvY+nI1BtvPh1tynyf+/Qxo/pfcDEiQiSQ9lRUREYMSIETA1NYWBgQF69eqlUPXt/fv3y4xPnTXtaAiuadHW0MMQ+0WY1OF7GOu0kNqutKIQF2K34c9nq5BXmlGHERJS9zhPw67t8erQ0FD4+PhAV1cXkyZNgpGREU6cOIGJEyciKSkJS5culftaY8aMQefOncWO29raqi5gQuRgY9IZMzvvRmj8bjx6c05qu1fZd7Hv4RwMtlsIV8uB1BsijRKnBMTn1+7U0fLycsyePRs8Hg/Xrl0TJo+vv/4aPXr0wIoVKzBhwgTY2NjIdb2xY8fCz8+v9gKWgdYBkep0NPQxzGExnM374kLsD8iX0tMpLs/D39Fb8DT9CgbbL4KZbss6jpSQ2lVrW3IrIyQkBLGxsZgyZYpIz8XExAQrVqxAaWkpgoKC1BegIqT0FGkIjtibdceszntqnCn3KjsC+x7OwZ2UP6RuB0FIQ6T0dgwCLMuiqKgI+vr6Sl9LcG9m6NChYud8fHwAVG4LLq8HDx7g3bt3KC8vh62tLQYPHixxxl5tkN7/oQREAF1NQ4x0+hLOFv1wKXY7CsqyJLYr55cgLGE3nmWEYoj9IrQycq3jSAlRPaUSUFpaGjZv3oyzZ88iKSkJLMuivLwcu3btwps3b6CpqYkVK1YofF3BuiInJyexc1ZWVjA0NFRo7dFPP/0k8r2enh7WrFmDr776SubzSkpKRBba5ubmyv2aNaExfVKVk3kftDbqiOC4HXiWESa13ZuCaByK/BzdW05A/7bTZRZCJaS+4zwEd/v2bXTq1Ak///wz4uPjUVFRIZyYkJKSgrVr12L16tWcZprl5OQAqBxyk8TY2FjYRhY7Ozvs2LEDL1++RGFhIZKTk3HgwAGYm5tj+fLl2LFjh8znb968GSYmJsJHmzZtFH4vtA6IyEtPyxijnVdijPNq6GlK/t0HABZ83H19HIGP5uF13vM6jJAQ1eKUgDIzMzF+/HhkZFTePK3+1/yECROEX58/f16J8JTj5eWFRYsWwcnJCXp6emjVqhWmTp2KS5cuQVdXF2vXrpW5WZ6/vz9ycnKEj6SkJIVjoEkIRFHtLT0xt2sQuliNktkusygJv0d+hqsJe1HOL62j6AhRHU4J6Oeff0ZaWppwIWr1KdmdOnWCpaUlgMqekqIEPR9pvZzc3FypvSN5dOjQAf369UNmZiaePXsmtZ2Ojg6MjY1FHgqTOl2dhuCIdDqaBhhq/yk+7PgjzPWk97xZ8HE75SiCHi1EWv7LOoyQEOVxSkBnz54Vfn348GGMHTtWrI2rqytYlkVMTIzC1xfc+5F0nyctLQ35+fkS7w8pQpAgCwoKlLpOTaSnH0pApGaCKgpebWdBg9GS2i6jKB4HHn+Ca4n7UcEvq8MICeGOUwKKjo4GwzDw8PDApEmTJG5EZ2pqCqByuE5RXl5eAIDLly+Lnbt06ZJIGy4qKipw7949AJB7LREh6iLY+G66+6+wMpD+hxcLPm4lH0LQ40V4k6/4H36E1DVOCaioqAgA0KKF9JIi2dnZlS/AU/wlBg0aBHt7exw+fBgPHz4UHs/JycGmTZugra2NadOmCY+npqbi+fPnYkN2//77r9i1KyoqsHz5csTExMDb2xvW1tYKx6cYabXgavllSaPTTN8WH7n9hP5t/cBjpE9gTS98hf2PF+CfuF9QWlFUhxESohhO07DNzc3x5s0bvHjxQuL5vLw83L9/HwA4rbfR1NREQEAAfHx84OnpKVKKJyEhAVu3bhUpo+Pv74+goCAEBgaKVDzw8PBAp06d0KlTJ7Rq1QqZmZm4evUqXr58idatWyMgIEDh2BRHC1GJ6mjwNNGn9YdwNOuNczHf4W2BtErzLP5NPYXYrLsY4bgMbYzd6jROQuTBqQfk7u4OAIiJicH3338vMpPszZs38PPzQ35+PhiGkViDTR7e3t4IDw9H3759cezYMezcuRMtWrTA0aNH5a4Dt3TpUhgZGSE4OBg//PADDh8+DD09PaxatQqPHz+Gvb09p9gUIb1mHiUgwl1zA3tMc/sZfdtMA48RHwIXyC5+jcNRS3ElbifKKiRvFU6IujAsh6qiv/32GxYsWCAy/ZplWZEtGgTf79mzBzNnzlRp0OoimH2Xk5Mj94y48KSDuJF0QOz4Io/jMNCWvmMmIfJ6kx+DczHfIb0wTmY7M92WGOH4BVobd6yjyEhjwuXzryacekB+fn4is9AEyQb4r1ApwzBwcnLChx9+qIIwG66ot+ITKQhRpRaGjpje6Rf0bTMNmjwdqe2yil/jUNQS6g2ReoNTAtLV1cWpU6fQsmVLkeQDQNgDatGiBU6ePAkdHen/QzQF0oZHNHgqK8NHCDR4WujXZir83Heipcw6cSzupZ7E7vvT8TzjGm0DTtSKcykeFxcXREZGYuXKlXB1dYWenh709PTg6uoKf39/REVFwdWVCiY2N5B8n0lX06iOIyFNgYVeG3zY8QcMsJkjc91QflkmTr/cgD+erUBmUXIdRkjIfzjdA2qquIyB/vV8PV5mXhc7/lWfYFWHR4iId4WJOB+zFa/zpVf7ACrXGXm2nYlu1mNlTmggTVu9uQdEFCGe3420m6khDtLUWOi3xYduP9bYGyrnlyIk/jccjlpKvSFSp5S+EZGcnIyUlBSRbQuq8/T0VPZlGhVaA0TqCo/RQM9W78PRrCcuvfo/JOU+lto2Je8JAh/NRf+2M+BhPY56Q6TWcU5AZ8+exZdffomXL2UXQGQYRmbF6caPRjiJ+lnot8XkDlvxLCMUV+J3orAsW2K7cn4pQuN34eW76xjusBQW+m3rNlDSpHAagrt8+TLGjRuHly9fCtf8yHqQamgzOqIGDMPAtdlAzOmyH92sxspsm5L3FHsfzsbF2O3ILXlbNwGSJodTAtq4caPIeh8iHaVfUt/oaBpgsP1CTO6wFaY60mshsuDj0ZtzCHgwC/+mngLL8uswStIUcBqCu3//vnC9j7W1NXr37g0jI5pWLJl4CqJ7QKQ+aGvijhmdd+Fa4j78m3pKarsyfjH+ifsFzzLCMNxxKSxk7E9EiCI4JSDB9gt2dnaIioqCnp6eSoMihNQNbQ09DLZbiHbm/XE+ZiuyS1Kltk3Je4LAh3PRvaUverWeDB0N/TqMlDRGnIbgunXrBgCwt7en5FMDugdGGoI2Jp0wo/MudLf2lTllu4Itw+2Uo9j3YDZeZUXUYYSkMeKUgJYvXw6gcrvtp0+fqjSgpoCG4Eh9pK2hh4F28zCr8x44m/eV2Ta39C3+eLYC52O2org8r44iJI0NpyG4IUOGYNu2bVi2bBl69eqFiRMnomPHjjAzk1zduermcU0P9YBIw2Km1wrj2q9FQs4DXIj5ATklaVLbRr69hLisCAy2XwRn8340KYkohPM6IB0dHWhrayM/Px/79u2T2bYpJyCJ6Yf+JyUNgI1JF8zsvBvXEgP/N0lB8h9T+WWZOPViPRzMesLHYTGMtC3rNE7ScHEagjt58iQWLlyIkpIS4V88tAaIkMancpLCAnzkth3Whu1kto3NuoO9D2Yj6m0w/b9P5MIpAX333XfCrynR1ETSNGxCGpZWRq6Y6vYTfOw/g7aM2W8lFfk4F/MdTjz/GnmlGXUYIWmIOA3BRUVFCXs+PXv2FK4D4vGotql8KAWRhodheOhs9R7szXrgYuyPiMu+J7VtbNZt7H0QhcF2C9Ch2WC6N0Qk4pSA9PX1UVRUBDc3N9y8eZN+uWSg3iFpbIx1muN9l014kv4PwhICUFCWKbGdoDf04t11+DgshqG2eR1HSuo7Tl0Wb29vsCwLExMTSj41okoIpPFhGAYdmw/BrM574GLpLbNtTNYt7HkwA/dS/wKfraijCElDwCkBrV+/Hvr6+rhz5w7CwsJUHBKpSXx8PBiGAcMw8PHxkdjm9u3bYBgGfn5+Isf9/PyEz5X22L9/v8hzEhMTsWDBAjg5OUFXVxeGhoaws7PDyJEj8e2336KgoEDp97Rjxw7MmDEDnTp1gqamJhiG4fy7VVJSgvXr1wvjbdmyJebMmYO3b6UX1Tx06BB69OgBAwMDmJmZ4b333sP9+/cltv39998xd+5ceHh4QEdHR+LPrKnQ0zLGaOcVGNduDfS1TKW2K60oxJW4X3Eo8nOkF8bXWXykfuM0BHfs2DH07dsXwcHBGDx4MLy9veHm5gZTU1OJ7b/++mtlYmzQansa9uXLlxESEoKBAwcq9LxZs2ahdevWEs917txZ+PWjR48wYMAAZGdno2/fvhg+fDgMDQ2RmJiI69ev4/z58/D19YWjo6MybwOffvopAMDa2hrNmjVDWpr0tSey8Pl8jBkzBpcuXUKvXr3g6+uL6OhoBAQE4MqVK7h9+zaaNRPdEHDjxo1YtWoVbGxsMG/ePOTl5eHo0aPo06cPrly5gr59RRdlrlq1CgkJCbC0tIS1tTUSEhK4velGxNmiH1obu+GfuJ/xLCNMarvX+c8Q9GgBPFqOR9/WU6GloVN3QZJ6h1MCWrt2rfCvZT6fj5CQEISEhEht35QTUG2ytbVFYmIivvrqK9y9e1eh4dCPP/4YvXr1qrHdkiVLkJ2djQMHDmDq1Kli52/dugVLS+XXffz999/o1q0brKysMG/ePOzatYvTdYKCgnDp0iVMnjwZhw4dEv5MfvvtN8yfPx+rVq0SuXZ0dDTWrl0LZ2dn3L17FyYmJgCABQsWoFevXpg9ezaioqJEJtgEBATAyckJNjY22LJlC/z9/ZV4542HvpYJRjuvRDsLT1x+9ZPUPYcq2DLcSTmG6MybGOG4DK2MXOs2UFJvKD1tTdaHHt2AB2qzEkK7du0wdepU3Lt3D8ePH6+V17h16xZMTU0lJh8A6N27t9SeryJGjhwJKysrpa+zZ88eAMDmzZtFfjfnzp0Le3t7HDp0CEVFRcLjgYGBKC8vx8qVK4XJB6jsBU6ePBnPnj1DeHi4yGsMHjwYNjY2SsfaWLWz6I9ZnQNqvDeUWZSEQ5GfIywhAOX80jqKjtQnnBMQbUQnH7aWJyGsX78eOjo6WLVqFcrKylR2XQELCwvk5+fj9evXcj9HcJ+pru+LFBcX486dO2jXrp1YgmAYBkOGDEFBQQHu3ftv+rDgPtPQoUPFrie4v3b16tXaC7qRquwNrcCkDt/DVLel1HYs+LiTcgz7Hy1Aat6LOoyQ1AechuACAwNVHQfhqG3btvjkk0+wdetW7Nq1C4sWLZLreQEBAbh48aLEc8uXL4euri4A4IMPPsAPP/yAfv36Yd68eejfvz/c3d2hr1//SvHHxsaCz+fDyclJ4nnB8ejoaPTv31/4taGhocTeV9X2hBsbk86Y6b4LN5IO4u7rP8FC8qZ274oScDDyU/RqPQl9Wn8ITZ52HUdK1IFTApo+fbqq42i8JPYEVTsNe8WKFQgICMCGDRvg5+cHQ0PDGp+zd+9eqecWL14sTEAbN25EZmYmDhw4gK+++gpA5X5Q7u7uGDduHBYtWiQ2BLd582YsX74c1tbSd9usDTk5OQAgMpRWlbGxsUg7wdfNmzeXuz1RnJaGLgbYzkbH5kNxPuZ7pOZL7umw4ONW8mHEZN7CCMcvYGUo+Q8J0nhQ6QI1UPU6IDMzMyxfvhxv377F1q1b5XrOrVu3pA6dVk0ourq6CAwMREJCAnbt2oVZs2bB1dUV9+/fx+rVq+Hm5oZXr16JXNva2hrt27eXmghI02Spb4OP3P4PXm1nydxzKL0wDgcjP0F44gFU8FU/rEzqD0pAtayu7oR9+umnaN26NbZt2yZzvQtXrVu3xpw5cxAQEIDHjx8jJiYGnp6eSE5Oxueff67y1+NCkPCk9Vhyc3NF2gm+VqQ9UQ6P0UCv1pMwvdMvaGEgvYfDZytwI/kg9j9agOTcqDqMkNQlzgkoMTER8+bNg6OjI/T09KChoSHxoanJeceHRkJCCqqFQgh6enpYt24d8vPzsW7dOtW/QDUODg7CSQaypuDXJXt7e/B4PKn3bATHq94jcnJyQn5+vsR1R5LaE9VoZmCHqW4/oV+b6eAxGlLbZRTF41DUElyJ24myiuI6jJDUBU4J6MWLF+jSpQv27NmDV69eoaSkhGbD1QPTp09Hhw4dsGfPHsTExNT668lzr6ku6enpoUePHnjx4oXY4lCWZREcHAwDAwN4eHgIj3t5eQGoXNBb3aVLl0TaENXS4Gmib5uPMK3Tz2iuby+jJYt7qScR+Gge9YYaGU4JaNWqVcjKygLLsjJLuhCgLmvBaWhoYNOmTSgrK8PatWtVcs3169cjKSlJ7DjLstiyZQsAoF+/fiLnUlNT8fz581q9eS/tNebMmQMA8Pf3F/njZ9euXXj16hU+/PBD6OnpCY/PmDEDmpqa2Lhxo8i1Hj58iCNHjsDFxUXs/RHVamHgiGmdfkaf1h+BkfGRlFWcgkNRSxAS9xvKKkrqMEJSWziNj4WFhYlsRGdkZAQTExNoaEjvSnMRERGBNWvW4ObNmygrK4ObmxuWLFmCDz74oMbnsiyLixcv4syZM7hx4wYSEhJQVlYGJycnTJw4EUuWLBHO9GpMRo8ejX79+oktnqxO1jTsXr16YdiwYQCAH374AWvXroWHhwe6desGc3NzvHv3DqGhoXj58iUsLCywbds2kef7+/sjKCgIgYGBYrXopNmyZQueP38OoHKChOCYYJhv7NixGDt2bI2vMX36dBw7dgxHjhxBXFwcvLy8EBMTg5MnT8LOzg7ffPONyOs6Oztj7dq1WLVqFdzd3eHr6yssxQNULmytvs1IQECA8OcbGRkpPCZYU9SvXz98/PHHcr1vUkmDp4X+bafDybw3zsV8jwyp9eJYRKSeQGzWHQx3XIbWxh3qMkyiYpwSUH5+PoDKGVLnz5+vlSGK0NBQ+Pj4QFdXF5MmTYKRkRFOnDiBiRMnIikpCUuXLpX5/JKSEowYMQI6OjoYMGAAfHx8UFxcjEuXLmHlypU4deoUwsLCan09i+QRyNrtHX777bdi9cuqkzUN+7PPPhMmoLNnz+L8+fO4evUqzpw5g/T0dOjo6MDe3h7Lli3DkiVLVDLd+uLFi2ILPgVDYEBl2aGqCUgaHo+H06dPY8uWLTh48CB+/PFHmJubY9asWfjmm2/E6sABwMqVK2Fra4vt27dj586d0NbWRv/+/bFhwwZ07dpVrH14eDiCgoJEjt24cQM3btwQfk8JiBsrQ2fMcP8N916fxLXEQFSwkmfBZRYn41DU5+hmNQZ92nwosxAqqb8YlsNNGldXV7x48QIDBw5EcHCwyoMqLy9H+/btkZycjNu3bwuLY+bk5KBHjx6Ij4/Hy5cvZZZDKSsrw3fffYcFCxbAzMxM5Livry/Onj2L7777Dl988YXcceXm5gpnTQnWiNTkSNQyJOY+EjnWXN8eMzpzq3VGSFPxrjAR52K+R2r+c5nttHl66NtmKjxajpc5oYEoh8vnX0043QOaNGkSWJZVqDyLIkJCQhAbG4spU6aIVGY2MTHBihUrUFpaKvYXaHVaWlpYuXKlSPIRHBcUj6QSK4TUXxb6bfGR23YMsPlY5rqhUn4RQhN243DUEmQWJddhhERZnBLQF198AVdXVzx//hwbNmwAny+5vAZXtV2fS0ur8pe5LqaIS6oFp8rtGAhpzHiMBnq2mgg/952wNmwvs21K3lMEPpqHe69PgmVV+5lEaodcn8AzZ84UO9aqVSs8ffoUa9euxZ49e9ClSxdYWFiItWMYRub9Bklkrb+wsrKCoaGhUvW59u3bB0BygquqpKQEJSX/zbYRLEwkhNStyioK23E35Q+EJx2Qem+onF+CK/E78SIzHCMcl8FMRiFUon5yJaD9+/dLnFbNMAxYlkVycjJSUlLEzgumaSuagOSp6cV1iu+FCxewa9cuuLi4YNasWTLbbt68WQWLOmlLbkJUQVBFwcmiL64lBOJl5nWpbZNzIxH4cC68bGahq9VoMAwVfamPVLIfUENZ8xMREYGJEyfCxMQEf/zxB3R0ZO/G6O/vj5ycHOFD0nqYmkie4dEwfl7yEGwPLu90a0KUZaHXBuPaf40pHX+AqY70GZhl/GL8E/cLjj75EtnFqXUYIZGX3AlInv1/VFUBQZ6aXorW57p37x6GDh0KHo+HS5cuoUOHmtcP6OjowNjYWORRHwg+9Ks+tLW10aZNG0yZMgWPHz9Wd4ic/PTTTxg5ciRsbW1hYGAAU1NTuLu7Y+3atcjMzFTq2vPnzxf+rOTZ7vvWrVvQ0NAAwzDCBbfV8fl87NixA25ubtDT00OzZs0wefJkseKstSUiIgIjRoyAqakpDAwM0KtXL6kbE167dg3Lli2Dt7c3TExMGsUfDW2M3TCj8y50sxors11i7iMEPJiF8MQDtIC1npFrCC40NLS24xBRdR+Wbt26iZxLS0tDfn4+evToIff17t27hyFDhoDP5+Py5cvo3r27SuOVSUIiVlX/x8HBAR999BGAyrVZt2/fxpEjR3Dy5ElcuXKlxrVA9Y1gqNbLywtWVlbCDebWrVuHffv24e7du5x2TQ0ODsZvv/0GAwMDFBQU1Ni+sLAQ06dPh56ensz2c+fORUBAADp06IBPP/0Ur1+/xvHjx3H58mXcvn27VmvIKbpObt++fQgKCoK+vj7atm3baO5namvoYbD9Qjhb9MP5mK3IKZH8x0UFW4YbyQfxLCMUwx2XorVxxzqOlEjE1kMXL15kAbAzZswQO7d//34WALtu3Tq5rhUREcGampqyRkZG7M2bN5WKKycnhwXA5uTkyP2c3x8vZrfcGCzy2P9wvlJxxMXFsQBYHx8fsXMrV65kAbBeXl5KvYaisUyfPl3paxUVFUk8vmrVKhYAu2zZMoWvmZ2dzbZu3ZqdMGEC6+XlxQJgU1NTZT5n0aJFrImJCfvNN9+wANjNmzeLtQkJCWEBsJ6enmxJSYnw+Pnz51kA7NChQxWOVV5lZWWsg4MDq6Ojwz548EB4PDs7m3V2dma1tbXZ+Ph4kedERESwUVFRbHl5OXvr1i2V/ZvVJyXlheylmP8T+/9N/DGEDY79mS0pL1R3yA0Kl8+/mtTLO3ODBg2Cvb09Dh8+jIcPHwqP5+TkYNOmTdDW1sa0adOEx6XVBfv3338xZMgQlJeX48KFC+jdu3ddvQUhidOwa/Ee0CeffAKgcngGAGbNmgWGYXDt2jWJ7X/44QcwDIM9e/YIj+3btw9jxoyBra0tdHV1YW5uDh8fn1rvCUsrjfT+++8DAKcCq5999hmKiorwyy+/yNU+NDQUv/zyC3744Qe0atVKajvBz2vDhg3Q1v5v987hw4djwIABuHz5MhITE8Wed/r0aQwaNAhmZmbQ1dVFx44dsXXrVlRUVMj9nrisk/Pw8ECHDh1UXi6rPtHW0MNQh08x0fVbGGtL3mSwEot/005h38M5eJ5xjQomqxGnBBQdHY0DBw7gwIED+Pfff8XO37t3T3iey3RpTU1NBAQEgM/nw9PTE3PmzMHSpUvh7u6Oly9fYtOmTbC1tRW29/f3h4uLC/766y/hsczMTAwZMgTZ2dno168fgoODsXbtWpHH9u3bubx9BUkYgquDSRuC15g6dSoA4Pfff5fY7uDBg9DR0RF+yAPAwoUL8ebNGwwePBiff/453nvvPdy6dQuDBw/G6dOn5Xp9Qb3AAQMGKPdGAJw7dw4A0LGjYsMmZ8+eRVBQEHbs2CF119Oq8vLyMGPGDAwdOlTi0oOqwsLCYGBgIHGYU9paNX9/f4wdOxYvXrzA+PHjsWDBAujp6eGLL77ApEmT5H5ftb1OrqGzNe2KmZ13w73FSJntckrScPrlBvz1Yi3ySjLqKDpSFaeVmNu3b8dvv/0GALh7967YeS0tLfj5+YFhGMyfPx8///yzwq/h7e2N8PBwrFmzBseOHRMWI/32228xceLEGp+fm5uLrKwsAJV1xiQV3rSxscHixYsVjq0++/XXXwFAeI/My8sLbdu2xZ9//okdO3aIzPyLiorCw4cPMWHCBJFdUJ8+fQo7OzuR66ampsLDwwNffPEFxowZU6vvYffu3Xj9+jXy8vJw//59hIWFoUuXLliyZInc13j37h1mz56NsWPHYvLkyXI95/PPP0dWVpZIb1CSgoICpKamomPHjhJ7FFXvYQoEBwdjy5Yt8PHxwYkTJ2BgYACgcnLPggUL8Ntvv+HEiRPw9fWtMc7aXifXGOhoGmCYw2J0aDYI/7z6GW8LpU8Mic68iYSch+jZ8gN0bzkBWhqyZ8cS1eGUgMLDw8GyLBwdHcUmCQCAu7s72rVrhxcvXuD6delz9WvSo0cPXLhwocZ2+/fvF1ZNFrC1ta0XXevanIYdExMj3HahoKAAd+7cwfXr16Grq4uNGzdWvhLD4MMPP8TmzZtx7tw5jB8/Xvj8gwcPAoBwIoNA9eQDVG6z7evrix07diAhIUFmHT6g8t/u2bNnnIq97t69W6RnPXToUBw8eFCsrJIsCxYsQGlpKXbu3ClX+wsXLmDv3r3YtWsX2rRpI7OtPOvUqrYDIPwjbPfu3cLkA0A4y27Xrl04cuSIXAmoNtfJNTZtjN0w3f1XRLw+ifCk/Sjnl0psV1pRiOtJ+/Eg7QwG2S1EO4v+DWZ5SUPGKQGlpKSAYRi4uLhIbePs7IwXL15IXKBKVCM2Nla4UFZLSwstWrTAlClTsHz5cri5uQnbTZ06FZs3b8bBgweFCYjP5+Pw4cOwsLDAiBEjRK776tUrbN68GSEhIUhJSRGpBgEAr1+/rjEB6evro3172aVTpLl37x4AICMjA7du3cLy5cvRtWtXnD9/Hp06darx+ceOHcPx48dx4MABuWbNZWVl4eOPP8agQYOE+wmp2u3bt2FgYCCswlGdnp6ecDuK7OxsicPDqtrjqampLOfzPpzMe+NC7A9Izo2U2ja/LBOnX25AG+NOGGDzMVoaSf+MI8rjlIAEUzgFQ1ySCM7l5eVxeYnGoxZ7YT4+PlL39KnKxcUF3bp1w/nz55GVlQUzMzOEhYUhOTkZCxYsENbGAyp7VT169EBubi68vb0xatQoGBsbg8fjISwsDFevXhVLSLXF0tISo0aNQufOneHk5ITZs2fjzp07Mp+TmZmJhQsXYuTIkcL7XzVZsmQJcnJyEBAQIFd7edapVW0niKu8vFxmZQ3BlO/s7GyJ7QQJSJ7XV6S32FSY67XGlA5b8TQjBFfifkNRufReYlLuYxyM/BSdmg+Ht+1s6Goa1WGkTQenSQgmJiZgWRaPHz9Gdna22PmsrCw8elS5BUF9WbypLpJmwamjFM/UqVNRWloqXKgoGH6r/iH9448/IisrC/v370dwcDC2b9+O9evXY+3atZx7NMpq06YNXFxcEBERgcLCQpltExMT8e7dO5w7d05ssa7gxry1tTUYhhHOsHzw4AEKCgpgZ2cn0n7GjBkAKicPMAwjvF9oYGAAa2trxMXFSZy9JukejbGxMSwsLGQu3I6LiwPw3/Bx9YeApHtMAoJ1crW5BqkhYxgeOjQbjI+77EXHZkNqbP/47QXsuj8d91NPg8/KP1ORyIdTD6hdu3a4efMm8vLyMGvWLOzfvx9GRpV/IQiO5eXlgWEYODs7qzRgws3kyZOxbNky/P7775g2bRpOnjwJR0dH9OrVS6RdbGwsAIhNNGBZVmTDtbqWmpoKhmFqnEZsYWEhtcbfuXPnkJaWhilTpkBPT09YPHf8+PHw8PAQax8dHY1r166he/fu6NSpk8g0fi8vLxw9ehQ3btyAp6enyPMEG+lVPd6zZ09cuHAB0dHRSicHLy8vbN68GZcvXxabPSd47drYJLIx0dcywUinL9HFahRC43cjOS9Katvi8jwEx/2MyLeXMdxxKZob2NdhpI0bpwQ0ePBg3Lx5EwBw6tQp2NjYCNcjPHz4UGRoYPDgwcpH2dio4eZm8+bNMXToUFy4cAHbt29Hbm6uxFllgns74eHhGD58uPD4li1bEBUl/X/S6goLC5GYmChceV+T1NRU8Pl8sbU3LMti3bp1ePPmDYYMGSIyi0/Sa7Rp00bqUNqAAQOQlpaGbdu2idwb+vrrryW2379/P65du4bx48dj+fLlIufmzJmDo0ePYvXq1QgODhauBbpw4QLCwsIwdOhQkftkn376KS5cuICZM2fi1KlTYpXj09LSkJWVJfO+qkDVdXKffvqpyIaNktbJEelaGrlgSscf8CwjFFfidqKwPFtq27SClwh6vAA9W01Er1aToK2hV3eBNlKcEtCcOXOwdetWFBUVgWVZZGdnC4c32P9VwAYqb6zW1k1doripU6fi/PnzWLNmDQDx2W8AMG/ePAQGBsLX1xcffPABLCwscPv2bdy/fx8jR44Ursmpyd27d+Ht7Q0vLy/huhVZXrx4gSFDhqBXr15wcnJCixYtkJGRgevXr+PFixdo2bKl2GJSRV9Dlby9vfHxxx8jICAAXbt2xciRI5Gamopjx47B3NwcO3bsEGk/bNgwrF69Ghs2bICjoyOGDRsGGxsbvHv3DjExMbh+/Tq++eYbuRKQYJ2cj48PPD09RUrxJCQkYOvWrSLr5IDKPygEiTk9PV14TFAPztLSElu3blX+B9MAMQwD12YDYWfqgZvJh/Fv6l9gIXk/IT5bgVvJh/Ek/QqGOyyBran4lu1EfpwSUMuWLfHzzz8LV9lXJdiiAagsLilrNXnTUHu14BQ1ZswYGBsbIzc3F71794aDg4NYmy5duuDy5ctYtWoVTp48CQ0NDfTp0wc3btzAmTNn5E5Aimrfvj2WLFmCq1ev4u+//0ZWVhb09PTg5OSE1atXY/HixTA3N6+V1+Zq165dcHNzw+7du/F///d/MDQ0xLhx47Bx40aJP9v169fD09MTP/30E65cuYLs7GxYWFjAzs4Oa9euxYcffij3ayu6Ti4mJkasOkJsbKxwyNXGxqbJJiABPS1jDLKbBw/rcbj86v/wKjtCatvckjc49vQrdG4xEgNs50BHQ/HlBgRgWCUWy5w6dQpLlixBfHy8yPG2bdti27Ztcq1paEi47Ike9Ggh0gpeihxrZeSKj9z+rzZCJISoAMuyeJkZjtD43VILnAoYazfHcMeljb43xOXzryZK7Uk9duxYjB07Fvfv3xeWoLe3t0fXro37H0J5tMCNkPqMYRi0s+gPB7OeuJn0O+68Pi51Flxu6dv/ekM2s6GjaSCxHRGnVAIS6Nq1KyUdqerHNGxCiOI0edrwtJmJ9pZeCI77ReYi1odvzuH5u2sYYDMbnZoPo0oKcqiX1bAJIaQ+aW7ggCkdtmKw3UJo8SRXbQcqp2xfjP0BR598iazi13UYYcMkVw9o4MCBACqnsX799dfC7+XBMAyuXLnCLbpGQOINNvrLiJAGh2F46GY9Fg5mPXE+ZiuScqXvPJyY+xD7Hs5B/zbT0dV6DDR52lLbNmVyJSBBaX1LS0uR72tSdUp206X+gqiEENUx1bXG5A7f40HaWYQlBKCMXyyxXTm/BKEJu/Ho7QX42H+GtibudRxp/UdDcGqgbEqOj48XKzNT/VG1RJKtra3IOR0dHTRr1gw9evTAwoULER4eLj3WatfV1NREixYt8N577+Gff/5R8p3I934UKcJZ/b1KelSt0B4dHY1NmzbB09MTLVu2hLa2Ntq0aYNp06YJi4NWd+3aNSxbtgze3t4wMTEBwzDC9TR15dChQ+jRowcMDAxgZmaG9957D/fv35fY9vfff8fcuXPh4eEBHR0dMAwjVj2eKIZheOhqPQYzO+9GG2PZBXIzi5Jw5MkynHqxgfYdqkbuSQjVZ2vXh60OGoLa3BHVwcFB4mJSQHx3UQ0NDaxatQoAUF5ejqysLERGRmLXrl349ddfMWrUKAQFBUksYmlhYYFFixYBAIqLi/HkyROcO3cO586dw+HDh+Xeb6cm7u7uGDt2rNhxRTa1W7x4scT6hBkZGfjll19gZmaG7t27C4+vXr0ax44dQ8eOHYXrpCIjI3Hw4EH8+eefuHjxolipnX379iEoKEhYgUFQfLSubNy4EatWrYKNjQ3mzZuHvLw8HD16FH369MGVK1fENslbtWoVEhISYGlpCWtrayQkJNRpvI2ZoDf07N1VhMXvQV5putS2L95dQ1xWBPq0mQoP67HQ4GlJbdtUyJWABEUSBfuYCL4n6uXo6Ch370BTU1Ni24SEBMyaNQtnz57FuHHjEBISAh5PtGNsaWkp9tyjR49i8uTJ8Pf3V1kC6ty5s9JbDkjbYHDbtm0AKqs/VE3Ow4YNw1dffYUuXbqItBe8v/nz5+PJkyci5xYtWoQvvvgC7du3R0RERJ1u9R4dHY21a9fC2dkZd+/eFVbGXrBgAXr16oXZs2cjKipK5N8wICAATk5OsLGxwZYtW+Dv719n8TYFDMODq6U3HEx74GrCXjx4c1Zq21J+EcISdiPq7WUMc/wcrYxc6zDS+keuITgbGxvY2NgI7wEJvpf30aRJ6CnWp2nYNjY2OHv2LFxcXHD16lX8+eefcj1v4sSJMDAwQEJCAjIy6v+wwt69ewFArFCpn5+fWPIBgEmTJsHZ2RlPnz4Ve38eHh7o0KFDjYVRqyotLcUPP/yArl27wsDAAEZGRujfvz/OnDmj0PsIDAxEeXk5Vq5cKbLdQ+fOnTF58mQ8e/ZMbEh18ODB9P9hHdDRNMBQh08xpcM2NDcQr4RRVUZRPH6PXIwLMdtQUCp9W5vGjtM9IHt7e9jb26NTp04oKytTdUyNSkMYqNTT08OyZcsAVG7mpihNTdGO9IABA8AwjML12V6/fo1ffvkFmzZtwt69e4VlYpR18+ZNPHv2DB4eHnB3l/9GsGCfpOrvT1ElJSXw8fHB0qVLwbIsZs2ahY8++ggJCQkYM2aMQlvWC36mQ4cOFTvn4+MDAMK6jEQ92ph0wvROv2CQ7Xxo82QVLGXx+O1FBDyc1WS3e+D0f1ZqaipKS0vh7e0tspkZkZfqt+SuatiwYWLbLNREcJ8lIkJ6/auqjh49ioKCAnTo0AGmpqYKvZY0wcHBCA4OFn4v2E78t99+E9nGWlGC3s/HH38s93Pu3r2LJ0+eoHv37kq/v/Xr1yMsLAyrV6/GunXrhDND8/LyMHDgQCxduhTjx49Hy5Yta7xWdHQ0DA0NJe70KmufIFK3eIwGPFqOh2uzgQiN342o9GCpbQXbPTx6ewHDHZbAyrDpbGHDKQHZ2NggOjqapljLRcIQnIp+bFW35K7K1NRU4QQk+PCTNJyWkZEhTHRVJyEYGhpi586dYu0PHDiAwsJCubZhACq37169ejXGjh0LBwcH8Pl83L9/HytXrsTvv/+OwsJCnDhxQqH3I5Cfn4/jx49DX19f7ntVOTk5mD59Ong8Hr777jtOryvA5/Oxc+dOODg4iCQfADAyMsLXX3+N0aNH4+TJk8KJHjXF1rx5c4nnBPW5pO2USuqevpYpRjp9iU7Nh+GfuF/wtvCV1LZvC2Jx4PEn6Gw1Ep5tZzSJXVg5JSBfX19s3rwZ9+/fR25ubpPf9VQWybPgVEPeLbmV9e7dO7FEZ2hoiODgYImJTt7EI9C8eXOsX79e5NigQYPQu3dvdO3aFSdPnsT9+/c5lXs6duwY8vPzMX36dLl+T4uKijBu3Dg8f/4cGzduVGgGniQvXrxAVlYWWrZsKfGPBcHWCIIp3w8fPsSpU6dE2tja2tb5NG+iWm1MOmFap18Q8fpP3Eg+iHJ+qcR2LPh4kHYWL9+FY6DdfLhYDGjUf+hzSkArVqzA33//jaioKEycOBG7d+9GmzZtVB1bI1b/fqFev64sG9KsWTOxc+3atRN+QGZnZ+PUqVOYP38+xo0bh3v37tXalhv6+vqYOnUqVq1ahRs3bnBKQIoMvxUXF2PMmDEIDQ2Fv78/VqxYofDrVZeZmQkAePLkidhsuqoKCgoAVCag6onKy8tLmIAE1YglEUwHrzo5gdQfGjxN9Go9Ca7NBiIkfhdevLsmtW1BWRbOvtyEe4YnMdT+k0Y7LMcpAY0aNQoaGhpgWRaXL1+Gg4MDbG1t0bJlS7EpvE29FE+DmIWA/25uV10jI4mpqSn8/PxQUVGBjz/+GAsXLhT7i12VBDMvBR/Qinj69Clu3bqF9u3bo1+/fjLbFhUVYcyYMQgODsaXX36JTZs2cYq3OkGvy9fXV64Zhn5+fjJ7O05OTrh16xbS0tLE7gMJ7v0ou+U3qV3GOs0xtt1qxGXfw5W43/CuSPq6rNT85zjw+BN0sRqFvm2mQl+rcf1xwSkBCUrxCDafKy8vR0xMjNisJSrFI039+pkUFRUJ18nIe59k5syZ+PXXX3H69GncvHkTffr0qZXY7ty5AwBiO3zKQ9rU6+qqJp9ly5bh22+/Vfi1pHFxcYGxsTHu3buHsrIypSfteHl54datW7h8+bLYttuXLl0StiH1n52pB/zcf8WdlGO4lXwEFazkGcUs+LifdhpR6cHo2eoDdLeeAC0NHYltGxqlS/FULXFCxNXmPSBVSExMxKhRo/D06VN4e3tj/Pjxcj2PYRjh1t6rV68Wu+bz589RWFgo17UePHggsbLGyZMnhdUZhg8fLnIuNTUVz58/lzocVVZWhoMHD0JLS0vsg7oqwbBbcHAwlixZgu+//16umOWlqamJ+fPnIyEhAcuWLZO4bCEqKgpv376V63ozZsyApqYmNm7cKPLeHz58iCNHjsDFxaXG3h6pPzR52ujbZio+7rIX9qY9ZLYtrSjE9cT9CHw0F0kytoVoSDgvcKBSPPKqH1tyl5eXC2eyVVRUIDs7G48fP8aNGzdQUVGBMWPGYP/+/Qr9ITF69Gh069YNISEhuHr1qvAv72nTpuHq1asIDQ2V6yb+559/jtjYWPTu3RutW7dGRUUF7t+/j/DwcOjo6GD//v1i9zX8/f0RFBSEwMBAiUNWZ86cQXp6OsaPHy911hgAzJs3D8HBwbCysoKRkZHEae1+fn4iPbDw8HAEBAQA+G8SQXh4uDAOS0tLke2t161bh/v37+Onn37CuXPn4OnpiebNmyMlJQWRkZF49OgRbt26JTNOAWdnZ6xduxarVq2Cu7s7fH19haV4AGDPnj1iw+ABAQHCxamRkZHCY4Jh1379+ik0RZ2onqmuNSa4fINn78JwJe5XFJZlS22bVZyCw1FL0NVqNDxtZjXo7cA5JSAqxaMkNfQWKyoqhDe3tbW1YWxsDDs7O8ydOxdTpkwRqx8mr7Vr12LUqFFYvXo1rl2TflNVlo8++ggnTpzA7du3kZGRAT6fj1atWuHjjz/G0qVL0b59e4WvKe/kA8F28mlpaRJnqQGVa6SqJqCYmBgEBQWJtImNjRUOQdvY2IgkIB0dHVy4cAF79+7FgQMHcOLECZSUlKBFixZwdXXFvHnz4ObmJvd7W7lyJWxtbbF9+3bs3LkT2tra6N+/PzZs2CBxokZ4eLhYvDdu3MCNGzeE31MCUj+GYeBq6Q1Hs164nXIUd1P+kDosBwD3084gJvM2BtjOQXsLzwY5CsWw1JWRG5c90fc8mInMoiSRY7am3TDRdUtthEgIaSQyi5JxNWEvXmZKr1Yv4GDWC0PtP4GxTs29aK64fP7VhLZjUIP6VAuOEFI/meu1xrj2azCpw3dopm8vs21s1m3sffAxbiUfRgW/vI4iVJ5yRa4AJCcnIyUlBSUlJVLbVC9nTwghRD42Jl3g5/4r7qX+heuJ+1HOl/xZW8ovwrXEQDx/dw0jHJehhYFjHUeqOM4J6PTp0/jqq69qrDvFMAzKyxtORlY5iSOc1AMihMiPx2igR8sJcDLrjQuxP8jcDryypM8i9Gw1EX1af1ivtwPnNAR38eJFjB8/HtHR0WBZtsYHVxERERgxYgRMTU1hYGCAXr164fjx4wpdo6SkBOvXr4eTkxN0dXXRsmVLzJkzR+5pr7WB0g8hhAszvVaY3OF7jHLyh76WqdR2fLYCt5IPY8+DmYjNvFN3ASqIUw9o06ZNwkWmgsWoqhYaGgofHx/o6upi0qRJMDIywokTJzBx4kQkJSVh6dKlNV6Dz+djzJgxuHTpEnr16gVfX19ER0cjICAAV65cwe3btyWWnlGl+r4OiBDSsDAMD67NBsLO1AOhCbsR+faS1La5JW/w5/NVaGvcGV42s9DSSPEZpbWJ0yw4IyMj4SLDZs2aoWfPnjAxMZG6QVdgYKBC1y8vL0f79u2RnJyM27dvo3PnzgAqq/z26NED8fHxePnyZY2bbAUGBmLmzJmYPHkyDh06JJym+Ntvv2H+/PmYM2cOdu3aJXdcXGaB7L7vh6ziFJFj9qY98L7rRrlflxBCpEnJe4oLMdvwriixhpYMulmPhWfbGdDWkLVPkWS1MQtOqQRkaWmJyMhIuRbQKeLy5cvw8fHBjBkzsG/fPpFzQUFB8PPzw7p16/D111/LvE6fPn1w69YtxMfHiyQrlmXh6OiIN2/eID09HXp68v1jcEtA05FV/FrkGCUgQogqlfNLcTP5MO6kHK1xYzsTHSsMc/gctqaKFfetN9OwO3bsCADo0qWLypMPoJpdH4uLi3Hnzh20a9dOrKfEMAyGDBmCgoIC3Lt3TzVBS1E9+QhenxBCVEWTpw3Ptn6Y1ulnWBvKHmbLKUnDsadf4fSLjSgqy62jCCXjdA9o1qxZuHPnDqKiolBSUgIdHdUWxpNV1dfKygqGhoY1zr6LjY0Fn8+XWhm46u6R/fv3l9impKREZHq5oNx9WlqaXNWZK/jl4OeK7+RZBAapqak1Pp8QQhRjgMGW/ojh3UJE6kmUVkj/nHqaG4G4pE/gZTMLVoY1V1DPy8tTZaAAlEhAf/75J4KDg+Hr64sff/xRpSXgBUUWpe1rYmxsXOOuj/Jco2o7STZv3iyxPEtgYCB0dXVlvv5/uogdeQVgN3bL+XxCCOGi5j2ESgGcuREKILTGtsXFxcqHVA2nBOTg4IDi4mKwLIsLFy7gwoULMDQ0hIWFhVhbhmHEtmloKPz9/bFkyRLh97m5uWjTpg1mzJgBIyPZ2+WyLIvwpP2Izbordq6b9Ti4NRcfXiSEEFXLLk7DzaRDeFsYI3auV6vJaG8pX6GAvLw8bNmi2hJinBJQfHy82BTsvLw8iV00Lvc7BL0WWTs/mpmZKX2Nqu0k0dHRkTi8aGVlJddNuA9arsCzjDAEv9qBovLK12tp5ApPl/FNYr93Qoj6WcMa7W3d8SDtLK4nBaG4vPJz2ta0Gwa4fCD3Z7SBgfjtBGUpXYpHVvBc1wdVvT/TrVs3kXNpaWnIz89Hjx6y986wt7cHj8eTeq+ornaPdLEcACfzPojP/hc6GgawNmpfr1cmE0IaH4bhoav1GDhb9MOFmB+QkvcEwx2Wqn1CFOdipLVZAUGwr8zly5fFzsm766Oenh569OiBFy9eICFBdMtblmURHBwMAwMDeHh4cI5TXpo8bTia90Ybk06UfAghamOobYEJLt9guvuvMNap3UX48uCUgPh8vtyPigrZc9IlGTRoEOzt7XH48GE8fPhQeDwnJwebNm2Ctra2yC6X0nbHnDNnDoDKezlVE+KuXbvw6tUrfPjhh3KvASKEkMaAYRiY6bZUdxgA6vF+QNJK8SQkJGDr1q0ipXj8/Pwk7o7J5/MxYsQIYSkeLy8vxMTE4OTJk7C1tcWdO3cUKsVTGwuxCCGkIag3C1Hrgre3N8LDw9G3b18cO3YMO3fuRIsWLXD06FG56sABAI/Hw+nTp7F27Vqkp6fjxx9/xI0bNzBr1izcunWr1uvAEUIIkU6uHtCZM2cAAK1atRKbFCDNn3/+iadPnwJAjSVzGgrqARFCmiq11YLj8XhgGAa+vr4i2yEsXLgQFy5ckLjW5/3338eJEyfAMAyn+0D1UVZWFszNzZGUlEQJiBDSpAjWQWZmZta4DEZeSk3Dfvv2rXBNUFMQE1O5kKtNmzZqjoQQQtQjJiYG3bt3V8m16u09oPrI0bFyi9snT54gKSlJ4YempiaSkpIAQHhs8ODBsLCwwODBgzF48GCx51hYWAjbVT9X9VjVa1R9CF5T0jWqfl/19aV9XTUWaa8t6by09yYtrurHq79+Tc+X9PqS3q8gbsF1Bd9XvYbg5yfpGrJikHQtLj+Hqteo+v5raivPz6vq70b15wter/rvj6Q4anpfkn4WNb1/adet3qb6v4+0h6CdtNgtLCxEfo8F/49Wfb/VY5IUn6amptj/G1V/BlXjrfrakv4f09TUFPkdrf5ZIC226uerv0ZN/17SHk+ePBH5HFQFpReiNiWC/Y5at27NaQiOx+OhdevWYBgGrVu3BlC5XklTU1M4HVxwXEBTUxOtW7eGnp6e2Lmqx6peQ9JrVm9f/fuqry/t66qxVI21evzVz0t7b5LikHRc8F/B69f0fEmvX/1nWPXnLriu4Puq70Hw85N0DVkxSLqWgCI/h6rXqPr+a2orz8+r6u9G9ecL3kP13x/B8erHZL0vST+Lmn6G0q5bvU31fx9pBO2kxa6pqSlyTPD/aNWfe/WYJL0XHo8n9v9l1d+tqvFK+vlUfS0ejyfyO1r1dWXFVrVd1efL828gi6B6jLR937igHhAhhBC1oARECCFELRQagissLERiYqLI9wJJSUki1QaqniOEEEKqUygBXbhwAXZ2dmLHWZaFra2tqmIihBDSBCiUgGQtGaqnFX0IIYTUUwolIEXX+1BSIoQQIo3cCYiSCSGEEFWSKwHx+fzajoMQQkgTQ9OwCSGEqAUlIEIIIWpBCYgQQohaUAIihBCiFpSACCGEqAUlIEIIIWpBCYgQQohaUAIihBCiFpSACCGEqAUlIEIIIWpBCYgQQohaUAIihBCiFpSACCGEqIVC+wE1dRUVFQCA3NxcTs9nWRa5ubnC/wJAWVkZ+Hw+ysrKJF6bz+cjNzcXZWVlYueqHqt6DUmvWb199e+rvr60r6vGUjXW6vFXPy/tvUmKQ9JxwX8Fr1/T8yW9fvWfYdWfu+C6gu+rvgfBz0/SNWTFIOlaAor8HKpeo+r7r6mtPD+vqr8b1Z8veA/Vf38Ex6sfk/W+JP0savoZSrtu9TbV/32kEbSTFrug4r+kf/fqv/eCmCS9F5Zlxf6/rPq7VfW6kn4+VV+LZVmR39Gqrysrtqrtqj5fnn8DWQTtBZ+DqsCwtNGP3CIiItCjRw91h0EIIWpz9+5ddO/eXSXXogSkgKysLJibm+MKAGd3d2DQIKBHD0BfH2jeHNDRAUxMAA0NdYdKCCEqlZubiw5ubsjMzISZmZlKrklDcArQ+F9isQbQWlu7Mtk0awYYGgJWVoCuLmBqCmjSj5UQ0rgIhuA0VPgHNk1CIIQQohaUgAghhKgFJSBCCCFqQQmIEEKIWlACIoQQohaUgAghhKgFJSBCCCFqQQmIEEKIWnBaMVlYWIiMjAwAgJGRkdiq2MzMTOTn5wMALC0toa+vr2SYhBBCGhtOPaBNmzbBzs4OdnZ2CAsLEzsfHh4uPL9582ZlYySEENIIcUpAoaGhYFkWlpaWGDt2rNj50aNHo0WLFmBZFiEhIcrGSAghpBHilIBevXoFhmHQtWtXMAwjsY27uzsAIC4ujnt0hBBCGi1OCSgzMxPAf3toSCI4J2hLCCGEVMUpAenr64NlWURFRUlMQhUVFYiKigIA6OrqKhchIYSQRolTAmrTpg0AIC0tTeIkg02bNiE1NRUMw6Bt27bKRUgIIaRR4jQNu1+/fsIeztdff42QkBB4eXkBAK5evSoyM65fv37KR0kIIaTR4ZSAZs+ejd9++w1A5R7oYWFhIkmn6iars2bNUi5CQgghjRKnIbguXbpg4cKFYFlWOAuOZVlh4hEcmzdvHrp166aiUAkhhDQmnEvx/PTTT/jss8/A4/FEejyCpPTJJ59gx44dKgmSEEJI48NpCA6o7OX8+OOPWLRoEU6fPo1Xr14BAOzt7TF69Gg4OjqqLEhCCCGND+cEJODg4IAlS5aoIhZCCCFNSL2uhh0REYERI0bA1NQUBgYG6NWrF44fPy738y9cuIBJkyahffv2MDU1hb6+Ptq3b49Zs2bh5cuXCsdTdaiREEKaIlV+DsrVA1q/fj0AwNXVFRMmTBB+L6+vv/5a4cBCQ0Ph4+MDXV1dTJo0CUZGRjhx4gQmTpyIpKQkLF26tMZrnD9/Hrdv30bPnj0xfPhwaGlp4dmzZwgKCsKhQ4dw/vx5DBw4UO6Y8vLyAABGSUlA69YKvydVSElJQatWrdTy2oSQpiv3fzsc5OXlwcTERCXXZFg50hmPxwPDMPD19cXx48eF38uroqJCoaDKy8vRvn17JCcn4/bt2+jcuTMAICcnBz169EB8fDxevnwJGxsbmdcpLi6WWInhypUrGDx4MDw8PBARESF3XDk5OTA1NUV2drbK/gEUdeTIEUyePFktr00Iabpq4/OvVofguHbVQkJCEBsbiylTpgiTDwCYmJhgxYoVKC0tRVBQUI3XkVYGaNCgQTAzM0NMTIxCcQmSriLJlxBCGoPa+PyTOwFVTyaCdT+yHlwJFrUOHTpU7JyPjw+AyooLXN26dQtZWVno2LEj52uoy4ABA9QdAiGEqIRc94ACAwMBALa2tiLf15bo6GgAgJOTk9g5KysrGBoaCtvI4/Lly7h58yZKSkoQHR2Nv//+G5aWlvjxxx9VFnNdSUxMhLW1tbrDIIQQpcmVgKZPny7ze1XLyckBAKnjjMbGxsI28rh8+TK2bdsm/N7R0RFHjx5tkFUaXr16hZ49e6o7DEIIURqne0AzZ87EzJkzMXv2bJSVlak6JpXbunUrWJZFXl4e7ty5g3bt2qFv3744fPhwncVQWlaO1+lZSl9HU1PppVuEEFIvcEpABw8eRFBQEKKioqClpaXqmIQ9H2m9nNzcXE6zMAwNDdGjRw+cOnUK7du3x5w5c5Cenq5UrPKKS3mL5DfvUFEhfRM/ebz//vsqiogQQtSLUwJq0aIFAMDCwkKlwQgI7v1Ius+TlpaG/Px8ifeH5KWpqQlvb28UFBTg3r17nK/DBQvlFnGdOHFCRZEQQoh6cUpAgwcPBsuyiIyMVHU8ACDcW+jy5cti5y5duiTShqvXr18DQK304CQRzFxUdhVxaWmpCqIhhBD145SA1q5dC2NjYyQnJ2PlypUqL1EzaNAg2Nvb4/Dhw3j48KHweE5ODjZt2gRtbW1MmzZNeDw1NRXPnz8XG7KT1ru5dOkS/vrrL5iamqJ3794qjV2a/7atUO46NS2+JYSQhoLTHe0DBw5gwIABOHPmDLZs2YKTJ0+if//+aNmyJXg88ZymaCkeTU1NBAQEwMfHB56eniKleBISErB161bhlHAA8Pf3R1BQEAIDA+Hn5yc83r17d3Ts2BGdOnVC69atUVBQgMePH+P69evQ0tLCvn37YGBgwOVHoLCq+yYpw8HBQRXhEEKI2nFKQGvXrgXDMGAYBizL4sWLFzKLe3KpBeft7Y3w8HCsWbMGx44dQ1lZGdzc3PDtt99i4sSJcl1j06ZNCA0NxdWrV5Geng4ej4e2bdtizpw5WLx4MVxcXBSOiytBAuIrmYBCQkKoFA8hpFGQqxZcdfLWghNsTqdoLbj6SjD7LicnB8bGxgo9Ny7lLdKzctHRsQ30dXU4x0C14Agh6qDM5580nBeV0NYEilHVEFy/fv1UEQ4hhKgdpwRU26V4GiNBh1HZIbi3b9+iTZs2KoiIEELUi1MCqu1SPI0Rr/osOD8/QFDRW0sLaNsWmDYNWLECkFHt4OXLlw2yhBAhhFTHKQFdu3YNANCsWbM6vZHfkEkcghs2DAgMBEpKgPPngYULK5ORv7+aoiSEkLrDaR3QgAED4O3tjTVr1khtM2vWLDRv3lxYNaGpk5iAdHQAKyvAxgaYPx8YPBg4cwbIyqrsDZmZAfr6wPDhwP+qQkyePBlISABGjao8b2AAdOhQmcAIIaQBqbXKlrm5ucjIyKDN2/5HrkkIenrAu3eVw3PR0ZXJyNgY+OorYMQI4OlTnD5/HmP27AFKS4Fr1yoT0NOngKFh3bwRQghRkVpLQEVFRbV16QaJJ2sdEMsCV64Aly5V9nZOnQJu3AD69Kk8f+gQ0KYNcOoUCsvLgcREwNcXcHOrPG9vXzdvghBCVEjuBCS471NVenq6xOMpKSm4fv06AEisjNAUCRei8qskoL//ruy5lJUBfD4wZQowfnzl8ap7/lhYAO3aAc+eobW3N/Dpp5VDdpcvVw7b+foCnTrV8TsihBDlyJ2ABgwYIDKcxrIsrl27Bm9vb5nPMzc35x5dI8LjSUhA3t7Azp2AtjbQsmXl7LczZ2Rex9XVFejfH/DxAc6dq0xCmzcD27YBn3xSm2+BEEJUSuHuSdV7GCzLSn0AlX/111Wxz4ZCZDsGAwPA0bFyCrZg6rWLC1BeDty581+7d++AFy8AV9f/KoS3aQPMmwecPAksXQrs2VN3b4IQQlRAoQSkyCp+lmVhZGSEtWvXKhpT41bTj9DJCRgzBpg9GwgPBx49Aj76CGjVqvI4ACxeXHm/KC4OuH8fCA2tTFyEENKAyD0EN23aNOEQXFBQEBiGgY2Njdi+PAzDQE9PD+3bt8f7778PKysr1UbcFAQGAp99Brz3XuVsN0/PymnWWlqVPcqbNyvXDCUnV86SGzYM+PFHdUdNCCEKUaoYqa+vL44fP14bcdVLyhTjS8/KRVzKW7S1soSVpSnnGB49egR3d3fOzyeEEC7qTTFSQW+oe/fuKgmiKVF2S+6nT59SAiKENAqcEtD+/fvFjrEsi6KiIujr6ysbEyGEkCZAqYWoaWlp2Lx5M86ePYukpCSwLIvy8nLs2rULb968gaamJlasWKGqWBsHJXexeP/991UTByGEqBnnBHT79m2MHj0a7969E5l2DVQuRP3mm2/AMAz69OmDAQMGqCRYAly8eBHvvfeeusMghBClcSpTkJmZifHjxyMjIwMAxOq9TZgwQfj1eSqSKULZbfzy8vJUEgchhKgbpwT0888/Iy0tDQzDiCw8FejUqRMsLS0BVPaUSFXKpSCa1k4IaSw4JaCzZ88Kvz58+DDGjh0r1sbV1RUsyyImJoZzcI2Skl2grl27qiYOQghRM04JKDo6GgzDwMPDA5MmTYKGhoZYG1NTUwCVw3XkP8oOwdGQJiGkseCUgARbLcjabC47O7vyBagaNiGEEAk4ZQdzc3OwLIsXL15IPJ+Xl4f79+8DACwsLLhHR8TQ4l9CSGPBKQEJVuLHxMTg+++/R3l5ufDcmzdv4Ofnh/z8fDAMg86dO6skUFKpuLhY3SEQQohKcFoHNHbsWOG2AMuXLxc516pVK5FZcePGjVMivMaHQ+k9EZGRkejYsaOKoiGEEPXh1APy8/ODk5OT8HuWZavs+MkHULk2yMnJCR9++KEKwiSEENLYcEpAurq6OHXqFFq2bCmSfAAI1wa1aNECJ0+ehI6OjsqCJdSjJIQ0HpynqLm4uCAyMhIrV66Eq6sr9PT0oKenB1dXV/j7+yMqKqpy+2giQtlp2GFhYaoIgxBC1E6pYqSmpqbYsGEDNmzYoKp4Gj8l7wFlZWWpKBBCCFEvWqRTxyr4yiUgQYkjQghp6JTqAQFAcnIyUlJSUFJSIrWNp6ensi/TaFT8b5IGV71791ZRJIQQol6cE9DZs2fx5Zdf4uXLlzLbMQwjsk5IEREREVizZg1u3ryJsrIyuLm5YcmSJfjggw9qfC7Lsrh48SLOnDmDGzduICEhAWVlZXBycsLEiROxZMkS6OrqcopLGcpOwz579iwmT56somgIIUR9OCWgy5cvY9y4cRIrYatKaGgofHx8oKuri0mTJsHIyAgnTpzAxIkTkZSUhKVLl8p8fklJCUaMGAEdHR0MGDAAPj4+KC4uxqVLl7By5UqcOnUKYWFhdb6Da239vAghpMFhOfD09GQZhmF5PB7L4/FYhmGkPng8nsLXLysrYx0cHFgdHR32wYMHwuPZ2dmss7Mzq62tzcbHx8u8RmlpKfvNN9+wmZmZYsdHjRrFAmC/++47heLKyclhAbA5OTkKPY9lWfZtZg57JzKafRH/WuHnVvXs2TOlnk8IIVwo8/knDace0P3794XrfaytrdG7d28YGRmpLCmGhIQgNjYWM2bMECnlY2JighUrVsDPzw9BQUH4+uuvpV5DS0sLK1eulHjc398fZ8+exdWrV/HFF1+oLG558Fnl7gERQkhjwSkBCbZfsLOzQ1RUFPT09FQalGCty9ChQ8XO+fj4AACuXr3K+fpaWloAAE1NpedgKEzZ/PPgwQO0b99eNcEQQogacZqG3a1bNwCAvb29ypMPULnfEACRcj8CVlZWMDQ0FLbhYt++fQAkJ7jaRj0gQgipxCkBCQqQ3r59G0+fPlVpQACQk5MDoHLITRJjY2NhG0VduHABu3btgouLC2bNmsU5Rq74Sk5CGDVqlIoiIYQQ9eI0BjVkyBBs27YNy5YtQ69evTBx4kR07NgRZmZmEttPmzZNqSBVJSIiAhMnToSJiQn++OMPtdSpKyurUOr5t27dwpAhQ1QUDSGEqA/nmyA6OjrQ1tZGfn6+cEhLGkUTkKDnI62Xk5ubKzXZSXPv3j0MHToUPB4Ply5dQocOHRR6vqooOwSXkZGhokgIIUS9OA3BnTx5EgsXLkRJSYmwEjb7vzVB1R9cCO79SLrPk5aWhvz8fIn3h6S5d+8ehgwZAj6fj0uXLql1V1GuPxMBRRMvIYTUV5wS0HfffSf8WplEI42XlxcACDe9q+rSpUsibWoiSD4VFRW4ePEievbsqbpAOVD2RzVgwACVxEEIIerGaQguKipK2PPp2bOncB0Qj6ea2qaDBg2Cvb09Dh8+jE8//VS4FignJwebNm2Ctra2yLBeamoqcnJyYG1tLTJx4d9//8WQIUNQXl6Oixcv1ps6amy1PZQU8ddff1EpHkJIo8ApAenr66OoqAhubm64efMm5w9TqUFpaiIgIAA+Pj7w9PQUKcWTkJCArVu3wtbWVtje398fQUFBCAwMhJ+fHwAgMzMTQ4YMQXZ2NoYNG4bg4GAEBweLvI6pqSkWL16s0tgJIYTIh1MC8vb2xh9//AETExOVJ5+qrxEeHo41a9bg2LFjwmKk3377LSZOnFjj83Nzc4V751y8eBEXL14Ua2NjY6OWBKRMD8jNzU3F0RBCiHowLIcbOC9evEC3bt2EQ1tN5b5Ebm4uTExMkJOTA2NjY4Wem56Vi7iUtwCAbi720NDgNlwZExMDR0dHTs8lhBCulPn8k4ZTD+jYsWPo27cvgoODMXjwYHh7e8PNzQ2mpqYS28uq2dYU8VkWGhyfGxERQQmIENIocEpAa9euBcMwYBgGfD4fISEhCAkJkdqeEpAoVc8aJISQhkjpaWuy7mXQB61kfCV2RR0xYoQKIyGEEPXhnICkLTxVdhFqU8Dnc//Z3L9/X4WREEKI+nAaggsMDFR1HE1KhRI9oLS0NBVGQggh6sMpAU2fPl3VcTQpyiQgVW78Rwgh6qSa0gVEIcpsyTBs2DAVRkIIIepDCUgN2Cr3gGxtbYUzCmt6hIWF4Y8//lBj5ISr+Ph4MAwjrNShiN9//x1z586Fh4cHdHR0wDAM9u/fL7W9PL9LSUlJwvYvXrzA7Nmz0aVLFzRr1gw6OjqwtbXFe++9hytXrnB4t4TIp+73pCYiPaDFixcjOztbatuoqCicOHECBgYGsLGxQWpqah1ESOqTVatWISEhAZaWlrC2tkZCQoLM9mvWrJF4PCYmBocOHYKrqyvatGkjPB4ZGYmTJ0+id+/e6NOnD4yNjZGSkoLTp0/j3Llz+Oabb7By5UqVvidCAEpA6lFlBE5WKaB3797Bw8MDQOXEDzs7O+Tm5tZycKS+CQgIgJOTE2xsbLBlyxb4+/vLbL927VqJxz/55BMAENsJeNSoUfD19RVbUvH69Wt06dIF69atw8KFC6UuNCeEKxqCUwMWNd8DKi8vxwcffID4+HgsX74c77//PgDRbcrfvn2Lzz//HI6OjtDR0YGlpSV8fX0RFRUldj1bW1vY2toiOzsbixYtQps2baCpqSkylHP27Fl4e3vDxMQEenp6cHd3xw8//IDy8nK531t0dDRmzJgBOzs76OjowNzcHO7u7li8eLHY1Py8vDysW7cOnTp1gr6+PkxMTNClSxesXr0aZWVlIm1v3LiBkSNHwtzcHLq6umjfvj3WrFmDwsJCsRgYhsGAAQOQkpKCadOmwcrKCjweD2FhYcI2165dw6hRo2BpaQkdHR04OTlh1apVEq8njaAyuaOjozD+/v3748SJEyLt9u/fDzs7OwBAUFCQ2LBqTQYPHgwbGxu545KkuLgYhw4dgra2NqZOnSpyTjCsV13Lli3Rt29flJWV1djrIoQL6gGpgTxzEJYtW4aQkBAMGzYMGzduFB6/desWbG1tERsbiwEDBiA5ORlDhw7F2LFj8fbtW5w4cQKXLl3ClStXxPY+KikpwcCBA5Gfn4/Ro0dDU1MTLVq0AAD88MMPWLp0KczNzTFlyhQYGBjgzJkzWLp0Ka5fv46TJ0/WWED19evX6NGjBwoKCjBy5EhMnDgRBQUFiI6Oxq+//oqtW7dCU7PyV+7t27fw8vLC8+fP0blzZ8yfPx98Ph/Pnz/Ht99+i6VLlwr/4v7jjz8wefJk6OjoYOLEiWjevDkuX76M9evX49KlSwgLC4Ourq5ILO/evUPv3r1hbm6OSZMmobi4WFi/aufOncK/6EeNGoXmzZvj3r172LhxI0JDQxEaGgptbe0a/438/f2hra2Nfv36wdraGunp6Thz5gwmTJiAn376Sdjj6Ny5Mz777DP83//9H9zd3TF27FjhNapWda9NJ0+eRFZWFiZMmIBmzZrJ9Zx3797hzp070NfXh729fS1HSJoklsgtJyeHBcDm5OQo/Ny3mTnsncho9k5kNJuWkSWzbVBQEAuAdXR0ZLOyRNsePnyYZVmW7dOnD6uhocFevHhR5PyLFy9YIyMj1s3NTeS4jY0NC4D18fFhCwsLRc7FxMSwmpqabPPmzdnExETh8eLiYrZfv34sAPbAgQM1vseffvqJBcBu375d7Ny7d+9Evvf19WUBsCtWrBBrm5aWxpaVlbEsW/kzNzExYXV0dNhHjx4J21RUVLATJ05kAbDr168XeT4qBznZGTNmsOXl5SLnnjx5wmpqarLu7u5sRkaGyLnNmzezANitW7fW+F5ZlmVjY2PFjuXl5bFubm6siYkJW1BQIDweFxfHAmCnT58u17WlEcQYGBio0PMGDhzIAhD7fanqxYsX7Jo1a9hVq1axM2fOZC0tLVlNTU02ICBAqZhJ46DM5580lIAUoKoElCojAUVERLC6urqsoaEhGxUVJXY+IyODvX//PguAnTlzpsRrLFmyhAXARkZGCo8JElDVD3GB9evXswDYb7/9VuzcjRs3WADswIEDa3yPggS0a9cume1SU1NZhmFYBwcHtrS0VGbbAwcOsADY+fPni51LSEhgNTU1WXt7e5HjAFhtbW02PT1d7DmffvopC4C9du2a2LmKigq2WbNmbLdu3WTGVJNt27axANiwsDDhMXUmoFevXrEMw7Bt27ZlKyoqpLY7e/asMHkDYA0NDdmDBw8qFS9pPGojAdEQnDpIGYJ78+YNxo0bh5KSEhw+fBgdOnQQa/P06VPhPZ43b95IvOH8/Plz4X87duwoPK6rqytxP6EHDx4AkLzdd+/evaGrq4uHDx/W8KYqb2b7+/tj4cKFuHLlCoYNGwYvLy+x4Zt79+6BZVl4e3tDS0tL5jVlxda2bVvY29vj5cuXyMvLE1mka2dnB0tLS7Hn3L59GwCEw5TVaWlpCX9+NXn79i22bNmCCxcuICEhAUVFRSLnX79+Ldd1atu+ffvAsixmzJghc9fi9957DyzLorS0FPHx8dizZw+mTZuGu3fv4qeffqrDiElTIVcCSkxMVOpF2rZtq9TzGxtJkxDKysowYcIEJCcnY/Xq1Rg3bpzE5yYnJyMzMxMAcO7cOZw7d07q6xQUFIh837x5c4n3cQQz6wT3g6piGAYtWrRASkqK9Df0P7a2trh9+zbWrl2L8+fP4/jx4wCA9u3bY/369cKJFDk5OQCAVq1a1XhNWbEBgLW1NV6+fInc3FyRBCStveBnV/W+GheZmZno3r07EhMT0bdvXwwePBimpqbQ0NDAw4cPcfr0aZSUlCj1GqrA5/Oxf/9+8Hg8zJw5U67naGtrw9nZGd9//z0KCwuxY8cODB8+HMOHD6/laElTI1cCEiyW5IJhGIVmUTUFkiYhfPLJJwgPD8d7772HdevWSX2uvr6+8Gb6jh07sGjRIrlfV9q/oeB6b968EZttxbIs3rx5I/cGVB07dsSff/6JsrIy/Pvvv7hw4QJ++uknTJw4UTirSjC5QJ6kVjU2SQS18arHV9N7rZ6wFLV3714kJiZiw4YNWLVqlci5LVu24PTp05yvrUoXL15EcnIyfHx8OP0hOHToUPz6668ICwujBERUTqFp2KwcFbAlPUg11X4mu3fvxq5du9CuXTscOnRIZrIfM2aMcHbbrVu3VBJOly5dAEDilOA7d+6guLgYnTt3VuiaWlpa6NWrF9atW4effvoJLMvi77//BgB4eHiAx+MhNDRUbLq1IrElJSUhNjYW9vb2cicTwc9OMBTHVWxsLIDKf4/qrl+/LnZMQ6NyC8KKigqlXldRe/fuBQB8/PHHnJ4vGEasaaiUEC6UWgdUU7kPIlnVSgg3b97EJ598AmNjY5w6darGnsaRI0fQo0cP9OzZE0eOHMGxY8fEr8/n4+rVq3LHM2XKFGhqauKHH34QuW9RWlqKr776CgDkKiHz77//SlwoK+i9CKZKt2jRAr6+voiNjZXY23v79q2w1zxmzBiYmJggMDAQT548EbZhWRZfffUVysvLFSpvs2DBAmhqauKTTz6ROLScnZ0tvO8ki6CnGB4eLnL88OHDOH/+vFh7MzMzsRI4tS09PR1nz55Fs2bNMHr0aKnt/v33X4l/KCYkJGDz5s0AQL0fUivkGoLz9PQUSyiFhYWIiIgAUFmh2cHBAQDw6tUr5ObmgmEYuLu70+ppCQT/q+fl5cHX1xelpaXo06cPjh49KvN5VW/EHzlyBN7e3pg0aRK2b9+Orl27Qk9PD4mJibh16xbS09NRXFwsVzwODg7CtTedOnXCBx98AAMDA5w9exYvXrzAmDFj8NFHH9V4nYMHD2LXrl3w9PSEg4MDjI2N8fTpU5w/fx7m5uaYMWOGsO2vv/6KqKgobNy4EefPn8fAgQPBsixevnyJy5cv482bNzA1NYWxsTH27NmDyZMno2fPnpg4cSKaNWuGf/75B//++y969OiBL774Qq73CVQOEf7666+YP38+2rVrhxEjRsDBwQF5eXl49eoVrl69Cj8/P/z2228yrzN16lR8++23+OSTTxAaGgobGxs8evQIV65cwfjx43Hy5EmR9oaGhujevTuuXbuGqVOnwsnJCTweD1OnTq1xkWlAQIAw0UVGRgqPCXqF/fr1k9jDOXDgAMrKyjB16lSZ65qWLl2KmJgY9OzZE23btgWPx0NsbCwuXLiA0tJSLFu2DH379pUZIyGccJk6V1ZWxnp5ebE8Ho9dsWIFW1RUJDxXXFzMrly5kmUYhvXw8BA519CpYhr23choNiG1cnqwYGquvI81a9aw9+7dE14zMzOTXbVqFduxY0dWT0+PNTQ0ZJ2cnNgpU6awJ0+eFHl9Gxsb1sbGRmaMp0+fZr28vFgjIyNWR0eHdXNzY7dt2yZck1OT27dvs3PnzmU7duzImpqasnp6eqyTkxO7aNEiNiEhQax9Tk4Ou3r1arZ9+/asjo4Oa2Jiwnbu3Jn9+uuvxaZnX7t2jR0+fDhramrKamtrs87Ozuzq1avZ/Px8sesCYL28vGTGevfuXXbSpElsy5YtWS0tLdbS0pLt2rUru3z5cvbZs2dyvd+HDx+yQ4cOZc3MzFgjIyPWy8uL/eeff9jAwECJU6VfvHjBjhgxgjU1NWUZhmEBsKGhoTW+zvTp02X+Xkib2u3i4sICYJ8+fSrz+n/88Qf7/vvvs/b29qyBgQGrpaXFtmrVih0/frzMdUOkaamNadgMyyp+k+a7777D8uXL4erqKrHsC1D5l+azZ8+wdu1arF69WtGXqJdyc3NhYmKCnJwcuW/KC6Rn5SIu5S0AoIW5CWxayrcavbqkpCSRQpKEEFIXlPn8k4bTPaADBw6AYRiZ02hbtWoFlmVx5MgRzsE1VsrsB1T9ngMhhDRUnBLQq1evAFQuKExPTxc7//btW+H9ofj4eO7RNVLKJCBCCGksOFVCMDQ0RElJCbKzs9GvXz8sW7ZMuMI+KioK27ZtE+5xY2hoqLJgG4uqG9IpauDAgSqMhBBC1IdTAhowYAD+/PNPMAyD6OhozJs3T+S84LYSwzDw9vZWPspGpoLP5/zc2NhYqav8CSGkIeE0BLdu3Tro6ekBqEwybLWFp4Ip27q6ulJ3Z2zKlElAtC8LIaSx4JSAXFxccObMGVhaWor0dgSJh2VZWFpa4vTp03B1dVVdtI1EeTn31fDy7FNDCCENAedq2IMGDcKLFy+wd+9e/PPPP8K/zNu2bYvBgwdj1qxZMDMzU1mgjUm5EuVYfH19VRgJIYSoD6d1QE2VqtYBAUD3Dg6cyhX98ccfwqrShBBSV+rNOiBJWJZFYWGhqi7X6JVxHIajyuKEkMZCqQSUlpaGzz77DPb29tDW1hZmxV27dmH9+vXYtGmTUsFFRERgxIgRMDU1hYGBAXr16iXcY0YesbGxWLt2LUaPHo1WrVqBYRjY2toqFZOqcB2Gq765GyGENFSc7wHdvn0bo0ePxrt370QmIgCV+7x88803YBgGffr0kbibZU1CQ0Ph4+MDXV1dTJo0CUZGRjhx4gQmTpyIpKQkLF26tMZrXL9+HevWrYOGhgZcXFyEe8fUB1xHPmlzP0JIY8GpB5SZmYnx48cjIyMDgPjmXxMmTBB+Lak0fU3Ky8sxe/Zs8Hg8XLt2Dbt378a2bdvw6NEjODs7Y8WKFXJNR/b09MStW7eQl5eHyMjIerWnCZ/jYlRJ++IQQkhDxCkB/fzzz0hLSxNZA1RVp06dYGlpCYDbxl8hISGIjY3FlClTRDZCMzExwYoVK1BaWoqgoKAar2Nvb49evXoJ1yzVJ8qsBSKEkMaAUwI6e/as8OvDhw9j7NixYm1cXV3BsixiYmIUvr7gr/yhQ4eKnfPx8QEAhTZcq48qKrglIE9PTxVHQggh6sEpAUVHR4NhGHh4eGDSpEnC7YarEmxEl5mZyen6AODk5CR2zsrKCoaGhsI2DRXXgqQpKSkqjoQQQtSDUwIqKioCAJk1yQTFSHk8xV8iJycHQOWQmyTGxsbCNg0V10kIsbGxKo6EEELUg1MCMjc3B8uyePHihcTzeXl5uH//PgDAwsKCe3SNGNdJCFwSOiGE1EecPs3c3d0BADExMfj+++9FFke+efMGfn5+yM/PB8MwIpMI5CXo+Ujr5QhW5DZkLLgloIkTJ6o4EkIIUQ9OCajqpIPly5fjzJkzwu9btWqFU6dOCb8fN26cwtcX3PuRdJ8nLS0N+fn5Eu8PNSRcCyCdPHlStYEQQoiacEpAfn5+Igmg6hYM/P9NL2YYBk5OTvjwww8Vvr6XlxcA4PLly2LnLl26JNKmIWIAzhmopKREpbEQQoi6cEpAurq6OHXqFFq2bCmSfID/9gdq0aIFTp48CR0dHYWvP2jQINjb2+Pw4cN4+PCh8HhOTg42bdoEbW1tTJs2TXg8NTUVz58/b1ATE7hWgKVKCISQxoJzKR4XFxdERkZi27ZtOHXqFOLi4gAAdnZ2GD16NJYuXQpzc3NuQWlqIiAgAD4+PvD09BQpxZOQkICtW7eK1HTz9/dHUFAQAgMD4efnJzyekZGBZcuWCb8vKytDRkaGSJutW7cKF83WJa6z4JydnVUcCSGEqAnLQWRkpNxt58+fz+UlWJZl2Tt37rDDhg1jjY2NWT09PbZHjx7s0aNHxdpNnz6dBcAGBgaKHI+Li2NR2dmQ+oiLi5M7npycHBYAm5OTo/B7eZuZw96JjGbvREazdyOj2cTUdIWvwbIse/jwYU7PI4QQZSjz+ScNp/2AWrVqhZs3b8LGxkZmu7lz5yIgIAAVSmzAVp+oaj8gBkBzCxPYWDdTOIYjR45g8uTJCj+PEEKUUW/2A0pNTcWQIUPw9u1biedZlsXs2bOxZ88epYJrrFhwH4Lr27evaoMhhBA14byqMTY2Fj4+PsjNzRU7N2vWLOzbt0+pwBq7Co4LUQUVyAkhpKHjlIAEs94eP36MUaNGobi4WHjOz88P+/fvF37PdSJCY1daxm1nU2nVJwghpKHhlIB+/fVX4dfh4eF4//33UVpaio8++ggHDhwQmYodGhqqsmAbk7yCIuGaKUIIaYo4TcOeO3cuysrK8Omnn4JhGJw/fx4ODg54/fo1gMr7G23btsU///wDR0dHlQbcmJSVV0BHW7G/AagUDyGkseB8D2jRokX44YcfhDfTU1JShF87Ojri+vXrlHxqwGUiwt9//10LkRBCSN1TqrTy4sWL8f3334tUQ3Bzc0N4eDjatGmjkgAbMy57AhUUFNRCJIQQUvfkGoKbOXOmzPPNmjVDeno6GIaBra0tli9fLjzHMAz27t2rXJSNFJceUKtWrWohEkIIqXtyLUTl8Xgi9d4kEVymajtBz4gWooouRBVwsW8FI309ha6TmZlJMwsJIXWu3ixElYRhmBqTFBHFclgLJKgGTgghDZ3cs+C4rtwn0nG5B0QIIY2FXAmI1vLUjgoO64B69uxZC5EQQkjdkysBNeTN3+ozPochuPz8/FqIhBBC6p7K7gERxZVzmJzx5MmTWoiEEELqHucN6QQqKiqQkZEhc6to2sVTHAOgvLxxzA4khBAuOCegiIgIrF69GlevXkVpaanUdgzDoLycW+HNxowFUF6h+D2gCRMmqD4YQghRA05DcHfu3IGXlxeCg4NRUlIClmVlPohkXH42ly9froVICCGk7nFKQGvXrhVuwSBt/Q+tCaoZl2nYkvZfIoSQhojTENytW7eEWy5oa2ujXbt2MDExgYaGhqrja9S49IBatGhRC5EQQkjd45SABPd8TExMcOfOHTg7O6s0qKaigsM9IA8Pj1qIhBBC6h6nIThBwunZsyclHyXkFxYrPAx37ty5WoqGEELqFqcE9NFHH4FlWURHR9MkAyXwWRbvsvPUHQYhhKgFpwT06aefomvXroiPj8fcuXORk5Oj6riajPzCYoXad+vWrZYiIYSQusXpHtCwYcNQVlYGlmWxd+9eHDp0CI6OjrCwsBBryzAMrly5onSgjVVJWZlC7csUbE8IIfUVpwQUFhYmnH7NsiyKiooQGRkpNvW66k6pRLKi4lKFfk6PHz9Ghw4dajkqQkhd8vMDgoKAzZuBKvt54tQpYNw4oLHe6VC6FpwgEVGi4aasvALFpdSrIaSp09UFvv0WyMpSdyR1h3MCqqn6AU1OkF9ZmfylisaOHVt7gRBC1GbwYMDKqrIXJE14ONC/P6CnB7RpA3z6KVBQ8N/51FRg5MjK83Z2wOHDgK0tsH17bUfPDachuLi4OFXH0aSVKVCU9Nq1a/Dx8anFaAgh6qChAWzaBEyZUplYWrcWPR8bCwwbBnzzDbBvH5CeDixaVPkIDKxsM20akJEBhIUBWlrAkiXA27d1/lbkxikB2djYqDqOJk2RBJSZmVmLkRBC1GncOKBzZ2DNGmDvXtFzmzcDH34ILF5c+b2TE/DTT4CXF7BzJxAfD/zzDxARAQjWqwcEVLarr5TejoEor6BI/qnYkmYaEkIaj2+/BQYOBJYtEz3+6BHw+DFw6NB/x1gW4POBuDjg5UtAUxPo2vW/846OgJlZ3cTNhdIJqLCwEDExMcjJyZF638fT01PZl2nU3uXkw641C54cEzn69etXBxERQtTF0xPw8QH8/Stnxwnk5wNz51YOz1XXtm1lAmpoOCeglJQUfPLJJzh37pzM/X6U2Q8oIiICa9aswc2bN1FWVgY3NzcsWbIEH3zwgdzXKCkpwbfffouDBw8iKSkJ5ubmeO+99/DNN9+gefPmnOKqDanpWWjV3LzGdqdPn8bkyZPrICJCiLps2VI5FNeu3X/HunYFnj6t7NVI0q4dUF4OPHgACNarx8TU71l1nBJQfn4++vXrh8TExFqb7RYaGgofHx/o6upi0qRJMDIywokTJzBx4kQkJSVh6dKlNV6Dz+djzJgxuHTpEnr16gVfX19ER0cjICAAV65cwe3bt9GsWbNaiV9RWbn5ciUgQkjj5+ZWeb/np5/+O/bVV0CvXpWTDj7+GDAwqExIwcHAzz8D7dtXzqSbM6fynpCWFrB0aeWMuPq6SobTNOydO3ciISFB+H31dUDKrgsqLy/H7NmzwePxcO3aNezevRvbtm3Do0eP4OzsjBUrVoi8vjRBQUG4dOkSJk+ejJs3b2LLli04ceIEfv31V7x69QqrVq3iHKOqFZWUgs+vuTp2586daz8YQojarV9feX9HoFMn4OrVyqG2/v2BLl2Ar78GWrb8r82BA0CLFpXDeOPGAbNnA0ZGlWuM6iNOCahqReY+ffoIe0G2trYYOnSoMAG9//77mDZtmsLXDwkJQWxsLKZMmSLygWtiYoIVK1agtLQUQUFBNV5nz549AIDNmzeLJMS5c+fC3t4ehw4dQlFRkcLx1QaWrUxCNeHxlF47TAipZ/bvr6x6UJWtLVBSIloFoXt34PJlIC+v8p7Qo0fAihX/nbe2Bs6fB4qLK2fF9e9fOQ1b2rCdunH6NHv+/DmAyhlZoaGhwuMeHh64ePEi/vjjD/D5fCQmJmLXrl0KXz8sLAwAMHToULFzgjUwV69elXmN4uJi3LlzB+3atRObNs4wDIYMGYKCggLcu3dP4fhqy8uEVFTU0Au6f/9+HUVDCGloQkKAM2cqZ8XdvAlMmlSZyOrrPDBO94Cys7PBMAzc3d2hpaUlPC7oCY0bNw5du3bF3bt3sXnzZqxZs0ah60dHRwMAnCRMYLeysoKhoaGwjTSxsbHg8/kSr1H12tHR0ejfv79C8dWWsvIK/Pv0FUyM9KFT5edaVWFxKeJfp9dxZISQhiApTQub1hsiMUEDBoYsunmU4eCxfKSki/5ha2qkD1MjAzVF+R9OCUhTUxNlZWUwMjICAGhra6OsrExkkaSVlRVYlsWRI0cUTkCC7R1MTEwknjc2Nq5xCwh5rlG1XW3T0pR/u/KcvEKp55w6dsHbTNr+ghAizqUTcPDPDLHjbzOrf5+DHh3VPy7HKQGZmZmhqKgIBf8rQmRqaoq3b9/izp07SElJgY6ODu7cuQMASExMVF20DZipkQG6tLeTa9ZgBZ8vdULC9WtX0c3TS9XhEUKaEB1tySMsdY1TAmrevDlSUlKQ9b8J5s7Oznj79i2Kiorg5OQEHo8nvLmvp6en8PUFvRZpvZPc3FyY1bC8V55rVG1XFxTpBUmTlZkJA716OqWFEEIUwGkSgpubGwDg5cuXYFkWQ4YMEZ4rLi5GYWGhcI8bLlUQqt6fqS4tLQ35+flS7+0I2Nvbg8fjSb1XJOs+U31WlwmTEEJqE6cE5PH/7d15TFTX2wfw7wDDOsAogwhWFi3VFm1dcUEY0ICgrRt1DYh71WIralxiEGlrTRNb1MS4L6ixtC5NUQERUWy1VbRN615UQBSXWivIokxmnvcPX+7Py8ywdfAy8HySm3DPOffcM/eEeeZu5/TpA3t7e2i1Wly6dAlz586Fq6urEHSqH3m2tbVFYmJig+tXq19eYsrMzNTLO3bsmKiMMXZ2dvD398eNGzf03hkiIhw/fhwODg7oUz1qn5kYMmSI1E1gjDHTIBO5fv06DR8+nJydncne3p4GDx5M58+fb1RdGo2GOnXqRDY2NvT7778L6U+fPqW33nqLrK2tKT8/X0gvLi6ma9eu0dOnT0X17NixgwDQxIkTSafTCekbN24kADRr1qwGtaukpIQAUElJSaM+lyns27dPsn0zxlqvpvj+kxE1z5njjA3FU1hYiDVr1oiG4pkyZQqSk5Oxc+dOTHll9D6dTodhw4YJQ/Go1WrcvHkThw4dgre3N86dO9egoXhKSkqgVCpRVFQkPEX3uu3fvx9jx46VZN+MsdartLQUHTt2xNOnT013K8BkocyI1NTURm977tw5Cg8PJycnJ7KzsyN/f39KSUnRKxcTE0MAaOfOnXp5z58/p5UrV1Lnzp3J2tqa2rdvTzNmzKAHDx40uD1FRUUEgBdeeOGl1S5FRUWN+To3qMnOgNLS0rBy5UpcvHgRWm39J1xrznQ6HYqLi+Ho6Njgse6qfz1IefbU2nEfSI/7QHqN7QMiwrNnz+Dh4WGyIcEa9Bh2UVERjh8/jsePH8PDwwPh4eFQqVSiMllZWYiPj8f58+eFhxJaCgsLC7xRc57cBnJycuJ/PIlxH0iP+0B6jekDUz+FW+8AtH79eixevBgajUZIs7Ozw6ZNmxAVFYWSkhJMmTIFqampANBk0zQwxhhrGeoVgC5evIi4uDi9oFJRUYFp06ahe/fu+Oijj5Cbmyt6FJuIYGXFs34zxhjTV68LeVu2bNF7xwd4Oaq0VqvFuHHjcP78eSGNiGBpaYmpU6cKI2e3djY2NkhISICNjY3UTWm1uA+kx30gvebUB/V6COHdd9/FlStXALy8BhgUFAQiQk5ODp49eyY6M7KwsEB0dDTi4+PRqVOnpms5Y4wxs1avAKRUKlFaWgqFQoGrV68KN+ILCwvh5+eHyspKEBF8fHxw8OBBnrWTMcZYnep1Ca6srAwymQz+/v6ip8C8vLzQv39/4fLc7t27Ofgwxhirl3oFoOqpAdq2bauX9+qo1P7+/iZqFmOMsZauQY+oVVRU6M3vU1Hxv8nTHjx4YPDxa09Pz0Y2jzHGWItVr+ESZDKysLAwushkMqNlLC0tTTZsgzk6f/48RURECIO09uvXj7777jupm9Ws7dmzh2bNmkW9e/cma2trAgwPs1StpKSE4uLiyNPTk6ytrcnLy4sWLVpEz549M1heq9XS+vXrqVu3bmRra0sqlYomTJhAt27dMrqPjIwMCgoKIoVCQY6OjhQcHExZWVn/9aM2W3fv3qWkpCQKDQ2ljh07klwuJzc3NxozZgz9+uuvBrfhfjCtyspKiouLo8DAQHJ3dycbGxtyc3OjgQMH0o4dO6iqqkpvG3PrgwYFoOpA05DFwsKiUQ1rCbKzs0kul5OjoyPNnDmTFixYQF5eXgSA1qxZI3Xzmq3qY6RSqYS/jQWgsrIy6tGjBwGgsLAwWrJkCYWFhREA6tu3L1VWVuptM2PGDAJAfn5+tHjxYoqKiiJra2tq27Yt/fXXX3rl9+zZQwDI1dWVYmNjKTY2llxdXUkmk9H+/ftN/fGbhSVLlhAA6ty5M02fPp2WLl1KkZGRZGlpSRYWFnpjMnI/mN7ff/9Ntra2FBQURDNmzKBly5bR7Nmzhf+JsLAw0mq1Qnlz7AOTnAHVdmbUWgOQRqOhzp071zqlREFBgXQNbMaOHz8uHJvVq1fXGoBWrFhBAGjJkiWi9Oov0C+//FKUnp2dTQAoKCiIXrx4IaSnpaUJ/7ivevLkCSmVSlKpVKJBGIuKikilUpFKpaLS0tL/8nGbpYMHD9KpU6f00k+fPk1yuZzatGlDz58/F9K5H0xPq9WKjk01jUZDwcHBBICOHDkipJtjH9Q7ADV2aa0B6NixYwSApk6dqpe3a9cuAkCJiYkStMy81BaAdDodeXh4kEKhoLKyMlFeWVkZKRQK6tSpkyh94sSJBIBycnL06qv+py4sLBTSNm/ebLSvVq5cSQAoOTm5kZ/OPFX/qs7NzSUi7gcprFu3jgDQ2rVrich8+6DeT8E1dmkpI2E31KlTpwAAYWFhenlDhw4FAOTk5LzOJrU4eXl5KC4uRkBAABwcHER5Dg4OCAgIwO3bt1FUVCSknzp1SsiryVC/cD/qk8vlACAMs8X98HrpdDpkZGQAALp16wbAfPvANGNqMz15eXkAAF9fX7289u3bQ6FQCGVY49R2jF9Nry5XXl6O+/fvw8fHB5aWlnWWr2sfhsq3dHfu3EFWVhbc3d3RvXt3ANwPTa2qqgorV65EQkICYmNj4efnh/T0dEydOhVDhgwBYL59wCOFNpGSkhIAxocvd3JyEsqwxqnPMX61XEPL17WNofItmUajQXR0NF68eIGvvvpK+OLifmhaVVVVSExMFNZlMhkWLVqE1atXC2nm2gd8BsQYq5NOp8OUKVNw+vRpzJw5E9HR0VI3qdVQKBQgImi1WhQVFWHDhg3Ytm0bgoODUVpaKnXz/hMOQE2k+leCsV8EpaWlJp/cqbWpzzF+tVxDy9e1jaHyLZFOp8O0adOwb98+REVFYdOmTaJ87ofXo3pCzDlz5mDLli04c+YMVq1aBcB8+4ADUBOp7ZrogwcPUFZWZvR6Laufuq4717xm7eDgAHd3d+Tn5xt8OMbQNe7a9lHXdfeWQKfTYerUqUhOTsbEiROxa9cuvemYuR9ev+oHAaofDDDXPuAA1ETUajUAIDMzUy/v2LFjojKscXx9feHh4YEzZ86gvLxclFdeXo4zZ87Ax8cHHTt2FNLVarWQV1N1vwQFBYnKA62zH6uDz+7duzF+/Hjs2bPH6A1r7ofXq7i4GMD/nkg02z5o0EPbrN40Gg116tSp1hdR8/PzJWufuWgOL6I6Ozu3qhcgiV6+BBkTE0MAaOzYsaTRaGotz/1geleuXKHy8nK99PLycgoPDycAtGrVKiHdHPuAA1AT4qF4Gmfr1q0UExNDMTEx1KtXLwJAAQEBQtrWrVuFsmVlZfTee+8J/zBLly4VDT9SUVGhV3/N4Ueio6OF4Udu3LihV7624Ue+//77Jj0WUklISCAApFAoaPny5ZSQkKC3vPrDivvB9BISEsjR0ZEiIiJozpw5tGTJEoqKiiIXFxcCQIGBgaLjao59wAGoiZ07d47Cw8PJycmJ7OzsyN/fX28cLSZW/cvb2BITEyMq//TpU5o/f74waKanpyctXLjQ6K8xrVZL69atIz8/P7KxsSEXFxcaP3483bx502ib0tPTKTAwkBwcHEihUJBarabjx4+b8mM3K3X1gaGzUu4H08rNzaWZM2eSn58fKZVKsrKyIhcXFwoJCaHNmzcbPCs1tz6o14yojDHGmKnxQwiMMcYkwQGIMcaYJDgAMcYYkwQHIMYYY5LgAMQYY0wSHIAYY4xJggMQY4wxSXAAYowxJgkOQMws3b9/H6tXr0ZERAQ8PT2hUCggl8uhVCrRrVs3jBs3DuvXr8edO3ekbupr4+3tDZlMprdYWFjA0dERXbt2RXR0NE6cOCF1U/UUFBSI2hwcHCx1k9hrwCMhMLNSVVWF5cuXY926ddBoNHWWl8lk0Gg0Bkdxbmm8vb1RWFhYr7JxcXH45ptvmrhF9VdQUAAfHx9hXa1WC1MNsJaLp+RmZuP58+cIDw9HTk6OKN3a2ho9e/aEm5sbKisrcevWLdy+fRsAQC/HO5SiuZILCgqCq6srSktLceHCBfz7779CXlJSEj788EMMHDhQwhay1o4DEDMbsbGxesFnwYIFiI+Ph1KpFKXfv38fKSkpWLt27etrYDOTmJgoXMoqKSlBr169hMAMAGlpaRyAmKT4HhAzC5cvX8bOnTtFafHx8fj666/1gg8AuLu7Iy4uDjdv3oSVlf7vLCLCkSNHMG7cOHh7e8POzg729vbo0qUL5syZg+vXrxtsR3BwsOheRUFBAbKzszF8+HC0bdsWtra28PPzQ1JSktEzr8bu+79wdnbG+++/L0p7/PixXrm9e/di5syZ6NevHzw9PeHo6Ai5XA4XFxcMGDAAK1aswMOHDw3u49Xj4u3tDZ1Oh23btqF///5QKBRQKBQIDAxEenp6g9t/+PBh2NjYCPU7OTkhOzu7wfWwZqZRY2gz9potX75cNBWAq6srVVZWNqqu0tJSioiIqHWqAblcTps2bdLbVq1Wi8pNnjzZaB2ffvqpSfddl+q5pqqXkydPivLnzZsnyk9MTNSrw8/Pr85pGNq2bSuaC6jaq2Xc3NyEuWhqLjKZjA4dOiTaNj8/X1RGrVYLeYcOHSK5XC7kqVQqys3NbfDxYc0PByBmFkJCQkRfUBMmTGh0XcOHD9cLZuHh4RQSEkLW1taiL8q0tDTRtjUDEP5/0rbBgwfTm2++KUq3sLCgO3fumGzfdaktAD158oS8vb1F9f/xxx96dfj5+ZGtrS316NGDBg8eTCNHjqTQ0FDy8PAQ1d2jRw+9bQ0FG3d3dwoNDSWVSiVK9/X1FW1rLADt37+frKyshPSOHTvStWvXGnRcWPPFAYiZhXfeeUf0BVVz2mEiog4dOtQ5gV1WVpYob8SIEaLpiG/cuEEKhULI79atm2gfNQOQl5cXFRQUENHLadiHDBkiyk9OTjbZvutSMwAFBQVRZGQkhYaGklKpFOV98cUXBuv4888/RW2qptVqady4caI6agaCmsc9PDxcmIXzwYMH1K5dO1F+YWGhsK2hAPTtt9+Kgk+XLl30Ajozb/wQAmtVfvjhB9H648ePMWnSJFGaXC4X/r58+TIKCgrg7e1tsL6lS5fCy8sLAGBlZYVhw4aJ3rO5d+9ek+27LqdPn9ZLa9euHfbt24chQ4YY3MbHxwcbNmzA0aNHce3aNTx58gTPnz83WPb69evo2rWr0f0nJSXBzs4OAODm5oZ+/frh8OHDQv69e/fg6elpcNtLly4hKioKWq0WANCnTx+kp6dDpVIZ3R8zPxyAmFlwc3PD1atXhXVDL5gOHz4c//zzDwoLC3HhwgWD9eTn54vWz549W+e+8/PzjQaBvn37itadnZ1F6y9evGiyfTfGo0ePMGfOHGRmZurV++jRIwwaNAh5eXn1qqukpMRonkKh0AtOtR2bmp48eSL8bW9vj8OHD3PwaYH4KThmFmo+Lpydna33IurmzZtx4MABfPzxxybdd3l5udE8FxcX0bqpX3itbd91OXnyJKqqqnDx4kX06tVLSM/Ly0NkZKRwdlHts88+EwUfKysrBAQEYPTo0YiMjMTbb78tKk+1vF9V87gAjT82FRUVmDRpEiorKxu1PWu+OAAxszB+/HjIZDJh/eHDh0hKSmpwPa++bQ8AKSkpwsuqxpaajy83lhT7lsvl6NWrF1JTU6FQKIT03377Ddu3bxeV/emnn0TrZ86cwc8//4xDhw7hwIEDCAwM/E9taYh+/fohJCREWD958iQ++OADDkItDAcgZha6d++OyZMni9KWLVuGzz//vEFfSiNGjBCtx8fH610aA17en9iwYQPmzZvXuAY3s3136NABCxcuFKV9/vnnostgNc8o7e3thb9/+eUX7N2712TtqYutrS1SU1PRv39/Ie3EiRMYNWqU0XtSzPxwAGJmY+PGjRgwYICwrtPpsGLFCri6uiI4OBijRo2CWq3G3LlzjdYRFhaG0NBQYT0vLw++vr7w9/fHyJEjERoaCh8fH7zxxhuIjY3FpUuXTNZ+KfcNAPPnzxe9tHv37l1s3bpVWH/1yx4ABgwYgIiICAQEBGDQoEGv/exDoVAgPT0dPXr0ENIyMzMxevToWu8fMfPBAYiZDTs7O2RnZ2Pu3Lmi+wnl5eXIycnBjz/+iNOnT4u+KK2srODr6yuq58CBAxg6dKiwrtVqkZubi9TUVGRlZaGgoEC0vSlJuW+lUom4uDhR2urVq4Uzivj4eNG9m7KyMmRkZODs2bPw8fHB7NmzTdqe+lAqlcjMzBQ90JCRkYExY8agqqrqtbeHmRYHIGZWbG1tsWHDBty8eRMrVqyAWq1G+/btYWNjA2tra6hUKvTu3RuTJ0/G9u3bce/ePSxfvlxUh5OTEzIyMnD06FFMmjQJnTt3hr29PSwtLdGmTRv07NkT06dPR0pKClJTU03afin3Dbw8C2rTpo2wXlxcjM2bNwN4eY8qNzcXkyZNgkqlglwuh5eXFz755BPk5uaiXbt2Jm9Pfbi6uiIrK0t0Dy0tLQ2RkZEchMwcT8fAGGNMEnwGxBhjTBIcgBhjjEmCAxBjjDFJcABijDEmCQ5AjDHGJMEBiDHGmCQ4ADHGGJMEByDGGGOS4ADEGGNMEhyAGGOMSYIDEGOMMUlwAGKMMSYJDkCMMcYk8X+0vGwjNGQSngAAAABJRU5ErkJggg==", "text/plain": [ - "5.7283333333333335" + "
" ] }, - "execution_count": 38, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________\n", + "TF specific enrichment\n", + "found some significant results for 0.0 % TFs\n", + "\n", + "_________________________________________\n", + "loading GT, omnipath\n", + "intersection of 2104 genes\n", + "intersection pct: 0.7013333333333334\n", + "precision: 0.0006861994127409677 \n", + "recall: 0.037785588752196834 \n", + "random precision: 0.0007715756415332794\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 119/128 [00:00<00:00, 168.19it/s]/home/ml4ig1/Documents code/benGRN/bengrn/base.py:848: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:00<00:00, 167.05it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Precision (AP): 0.0007884943379606362\n", + "Area Under Precision-Recall Curve (AUPRC): 0.0007646911154753635\n", + "EPR: 0.3792641825789932\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAALCCAYAAACr5vABAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACYpUlEQVR4nOzdfVhUdf7/8RcDCKICminepZaWmpalyWKWlSjedINrpWbrTSR2w6aR+s3WNLtZy9LUstTyplpLs1rX/BlJareyWGo3mhbuaoYGaoYoCgzM+f1xlsGRAQGBc4Dn47q85syZ95l5zzRn8uU55/PxMQzDEAAAAADAcg6rGwAAAAAAmAhoAAAAAGATBDQAAAAAsAkCGgAAAADYBAENAAAAAGyCgAYAAAAANkFAAwAAAACbIKABAAAAgE0Q0AAAAADAJghoAABbGD16tNq0aVOmbT799FP5+Pjo008/rZSeqrsbbrhBN9xwg/v+/v375ePjo+XLl1vWEwCgZAQ0AKilli9fLh8fH/efwMBAXXrppYqLi1N6errV7dleQdgp+ONwONSoUSMNGDBASUlJVrdXIdLT0zVx4kR16NBBQUFBqlevnrp166ann35aGRkZVrcHADWSn9UNAACs9eSTT6pt27bKzs7Wl19+qVdffVXr16/Xzp07FRQUVGV9vPbaa3K5XGXa5vrrr9fp06dVp06dSurq3IYPH66BAwcqPz9fP//8s1555RXdeOON+vrrr9WlSxfL+jpfX3/9tQYOHKiTJ0/q7rvvVrdu3SRJ33zzjZ599ll9/vnn2rBhg8VdAkDNQ0ADgFpuwIAB6t69uyTp3nvv1QUXXKA5c+boX//6l4YPH+51m6ysLNWrV69C+/D39y/zNg6HQ4GBgRXaR1ldffXVuvvuu933r7vuOg0YMECvvvqqXnnlFQs7K7+MjAwNHjxYvr6+2rFjhzp06ODx+DPPPKPXXnutQl6rMr5LAFCdcYojAMDDTTfdJEnat2+fJPPasPr16+s///mPBg4cqAYNGmjEiBGSJJfLpblz5+ryyy9XYGCgmjZtqnHjxumPP/4o8rwfffSRevfurQYNGig4OFjXXHON3n77bffj3q5BW7lypbp16+bepkuXLpo3b5778eKuQVu9erW6deumunXrqnHjxrr77rt18OBBj5qC93Xw4EFFR0erfv36uvDCCzVx4kTl5+eX+/O77rrrJEn/+c9/PNZnZGRowoQJatWqlQICAtSuXTs999xzRY4aulwuzZs3T126dFFgYKAuvPBC9e/fX9988427ZtmyZbrpppvUpEkTBQQEqFOnTnr11VfL3fPZFi1apIMHD2rOnDlFwpkkNW3aVFOnTnXf9/Hx0RNPPFGkrk2bNho9erT7fsFptZ999pkeeOABNWnSRC1bttR7773nXu+tFx8fH+3cudO9bs+ePbr99tvVqFEjBQYGqnv37lq7du35vWkAsAmOoAEAPBQEiwsuuMC9Li8vT1FRUerVq5deeOEF96mP48aN0/LlyzVmzBg99NBD2rdvn15++WXt2LFDX331lfuo2PLly3XPPffo8ssv15QpUxQaGqodO3YoISFBd911l9c+EhMTNXz4cPXp00fPPfecJGn37t366quvNH78+GL7L+jnmmuu0cyZM5Wenq558+bpq6++0o4dOxQaGuquzc/PV1RUlMLDw/XCCy/ok08+0ezZs3XJJZfo/vvvL9fnt3//fklSw4YN3etOnTql3r176+DBgxo3bpwuuugibdmyRVOmTNFvv/2muXPnumtjYmK0fPlyDRgwQPfee6/y8vL0xRdf6N///rf7SOerr76qyy+/XLfeeqv8/Pz04Ycf6oEHHpDL5dKDDz5Yrr7PtHbtWtWtW1e33377eT+XNw888IAuvPBCTZs2TVlZWRo0aJDq16+vd999V7179/aoXbVqlS6//HJ17txZkrRr1y5de+21atGihR599FHVq1dP7777rqKjo/X+++9r8ODBldIzAFQZAwBQKy1btsyQZHzyySfGkSNHjF9//dVYuXKlccEFFxh169Y1UlNTDcMwjFGjRhmSjEcffdRj+y+++MKQZKxYscJjfUJCgsf6jIwMo0GDBkZ4eLhx+vRpj1qXy+VeHjVqlNG6dWv3/fHjxxvBwcFGXl5ese9h8+bNhiRj8+bNhmEYRm5urtGkSROjc+fOHq+1bt06Q5Ixbdo0j9eTZDz55JMez3nVVVcZ3bp1K/Y1C+zbt8+QZMyYMcM4cuSIkZaWZnzxxRfGNddcY0gyVq9e7a596qmnjHr16hk///yzx3M8+uijhq+vr3HgwAHDMAxj06ZNhiTjoYceKvJ6Z35Wp06dKvJ4VFSUcfHFF3us6927t9G7d+8iPS9btqzE99awYUPjyiuvLLHmTJKM6dOnF1nfunVrY9SoUe77Bd+5Xr16FfnvOnz4cKNJkyYe63/77TfD4XB4/Dfq06eP0aVLFyM7O9u9zuVyGT179jTat29f6p4BwK44xREAarnIyEhdeOGFatWqlYYNG6b69evrn//8p1q0aOFRd/YRpdWrVyskJER9+/bV0aNH3X+6deum+vXra/PmzZLMI2EnTpzQo48+WuR6MR8fn2L7Cg0NVVZWlhITE0v9Xr755hsdPnxYDzzwgMdrDRo0SB06dND/+3//r8g29913n8f96667Tv/9739L/ZrTp0/XhRdeqLCwMF133XXavXu3Zs+e7XH0afXq1bruuuvUsGFDj88qMjJS+fn5+vzzzyVJ77//vnx8fDR9+vQir3PmZ1W3bl338vHjx3X06FH17t1b//3vf3X8+PFS916czMxMNWjQ4Lyfpzhjx46Vr6+vx7qhQ4fq8OHDHqervvfee3K5XBo6dKgk6dixY9q0aZPuvPNOnThxwv05/v7774qKilJKSkqRU1kBoLrhFEcAqOUWLFigSy+9VH5+fmratKkuu+wyORye/37n5+enli1beqxLSUnR8ePH1aRJE6/Pe/jwYUmFp0wWnKJWWg888IDeffddDRgwQC1atFC/fv105513qn///sVu88svv0iSLrvssiKPdejQQV9++aXHuoJrvM7UsGFDj2vojhw54nFNWv369VW/fn33/djYWN1xxx3Kzs7Wpk2bNH/+/CLXsKWkpOj7778v8loFzvysmjdvrkaNGhX7HiXpq6++0vTp05WUlKRTp055PHb8+HGFhISUuP25BAcH68SJE+f1HCVp27ZtkXX9+/dXSEiIVq1apT59+kgyT2/s2rWrLr30UknS3r17ZRiGHn/8cT3++ONen/vw4cNF/nEBAKoTAhoA1HI9evRwX9tUnICAgCKhzeVyqUmTJlqxYoXXbYoLI6XVpEkTffvtt/r444/10Ucf6aOPPtKyZcs0cuRIvfHGG+f13AXOPorjzTXXXOMOfpJ5xOzMATHat2+vyMhISdLNN98sX19fPfroo7rxxhvdn6vL5VLfvn01efJkr69REEBK4z//+Y/69OmjDh06aM6cOWrVqpXq1Kmj9evX68UXXyzzVAXedOjQQd9++61yc3PPawqD4gZbOfMIYIGAgABFR0frn//8p1555RWlp6frq6++0t///nd3TcF7mzhxoqKiorw+d7t27crdLwDYAQENAFAul1xyiT755BNde+21Xv/CfWadJO3cubPMf3muU6eObrnlFt1yyy1yuVx64IEHtGjRIj3++ONen6t169aSpJ9++sk9GmWBn376yf14WaxYsUKnT59237/44otLrP/b3/6m1157TVOnTlVCQoIk8zM4efKkO8gV55JLLtHHH3+sY8eOFXsU7cMPP1ROTo7Wrl2riy66yL2+4JTSinDLLbcoKSlJ77//frFTLZypYcOGRSauzs3N1W+//Vam1x06dKjeeOMNbdy4Ubt375ZhGO7TG6XCz97f3/+cnyUAVFdcgwYAKJc777xT+fn5euqpp4o8lpeX5/4Le79+/dSgQQPNnDlT2dnZHnWGYRT7/L///rvHfYfDoSuuuEKSlJOT43Wb7t27q0mTJlq4cKFHzUcffaTdu3dr0KBBpXpvZ7r22msVGRnp/nOugBYaGqpx48bp448/1rfffivJ/KySkpL08ccfF6nPyMhQXl6eJGnIkCEyDEMzZswoUlfwWRUc9Tvzszt+/LiWLVtW5vdWnPvuu0/NmjXTI488op9//rnI44cPH9bTTz/tvn/JJZe4r6MrsHjx4jJPVxAZGalGjRpp1apVWrVqlXr06OFxOmSTJk10ww03aNGiRV7D35EjR8r0egBgRxxBAwCUS+/evTVu3DjNnDlT3377rfr16yd/f3+lpKRo9erVmjdvnm6//XYFBwfrxRdf1L333qtrrrlGd911lxo2bKjvvvtOp06dKvZ0xXvvvVfHjh3TTTfdpJYtW+qXX37RSy+9pK5du6pjx45et/H399dzzz2nMWPGqHfv3ho+fLh7mP02bdro4YcfrsyPxG38+PGaO3eunn32Wa1cuVKTJk3S2rVrdfPNN2v06NHq1q2bsrKy9MMPP+i9997T/v371bhxY9144436y1/+ovnz5yslJUX9+/eXy+XSF198oRtvvFFxcXHq16+f+8jiuHHjdPLkSb322mtq0qRJmY9YFadhw4b65z//qYEDB6pr1666++671a1bN0nS9u3b9c477ygiIsJdf++99+q+++7TkCFD1LdvX3333Xf6+OOP1bhx4zK9rr+/v/785z9r5cqVysrK0gsvvFCkZsGCBerVq5e6dOmisWPH6uKLL1Z6erqSkpKUmpqq77777vzePABYzcohJAEA1ikY8vzrr78usW7UqFFGvXr1in188eLFRrdu3Yy6desaDRo0MLp06WJMnjzZOHTokEfd2rVrjZ49exp169Y1goODjR49ehjvvPOOx+ucOcz+e++9Z/Tr189o0qSJUadOHeOiiy4yxo0bZ/z222/umrOH2S+watUq46qrrjICAgKMRo0aGSNGjHBPG3Cu9zV9+nSjNP97LBiy/vnnn/f6+OjRow1fX19j7969hmEYxokTJ4wpU6YY7dq1M+rUqWM0btzY6Nmzp/HCCy8Yubm57u3y8vKM559/3ujQoYNRp04d48ILLzQGDBhgbNu2zeOzvOKKK4zAwECjTZs2xnPPPWcsXbrUkGTs27fPXVfeYfYLHDp0yHj44YeNSy+91AgMDDSCgoKMbt26Gc8884xx/Phxd11+fr7xf//3f0bjxo2NoKAgIyoqyti7d2+xw+yX9J1LTEw0JBk+Pj7Gr7/+6rXmP//5jzFy5EgjLCzM8Pf3N1q0aGHcfPPNxnvvvVeq9wUAduZjGCWcXwIAAAAAqDJcgwYAAAAANkFAAwAAAACbIKABAAAAgE0Q0AAAAADAJghoAAAAAGATBDQAAAAAsAkmqq5ELpdLhw4dUoMGDeTj42N1OwAAAAAsYhiGTpw4oebNm8vhKP44GQGtEh06dEitWrWyug0AAAAANvHrr7+qZcuWxT5OQKtEDRo0kGT+RwgODra4G1QHTqdTGzZsUL9+/eTv7291O4BtsG8AxWP/ALyz276RmZmpVq1auTNCcQholajgtMbg4GACGkrF6XQqKChIwcHBtvghAeyCfQMoHvsH4J1d941zXfpk+SAhCxYsUJs2bRQYGKjw8HBt3bq1xPrVq1erQ4cOCgwMVJcuXbR+/XqPxw3D0LRp09SsWTPVrVtXkZGRSklJ8ag5duyYRowYoeDgYIWGhiomJkYnT570qPn444/1pz/9SQ0aNNCFF16oIUOGaP/+/RXyngEAAADAG0sD2qpVqxQfH6/p06dr+/btuvLKKxUVFaXDhw97rd+yZYuGDx+umJgY7dixQ9HR0YqOjtbOnTvdNbNmzdL8+fO1cOFCJScnq169eoqKilJ2dra7ZsSIEdq1a5cSExO1bt06ff7554qNjXU/vm/fPt1222266aab9O233+rjjz/W0aNH9ec//7nyPgwAAAAAtZ6lAW3OnDkaO3asxowZo06dOmnhwoUKCgrS0qVLvdbPmzdP/fv316RJk9SxY0c99dRTuvrqq/Xyyy9LMo+ezZ07V1OnTtVtt92mK664Qm+++aYOHTqkNWvWSJJ2796thIQEvf766woPD1evXr300ksvaeXKlTp06JAkadu2bcrPz9fTTz+tSy65RFdffbUmTpyob7/9Vk6ns0o+GwAAAAC1j2XXoOXm5mrbtm2aMmWKe53D4VBkZKSSkpK8bpOUlKT4+HiPdVFRUe7wtW/fPqWlpSkyMtL9eEhIiMLDw5WUlKRhw4YpKSlJoaGh6t69u7smMjJSDodDycnJGjx4sLp16yaHw6Fly5Zp9OjROnnypN566y1FRkaWeP5qTk6OcnJy3PczMzMlmee/EuxQGgXfE74vgCf2DaB47B+Ad3bbN0rbh2UB7ejRo8rPz1fTpk091jdt2lR79uzxuk1aWprX+rS0NPfjBetKqmnSpInH435+fmrUqJG7pm3bttqwYYPuvPNOjRs3Tvn5+YqIiChyvdvZZs6cqRkzZhRZv2HDBgUFBZW4LXCmxMREq1sAbIl9Ayge+wfgnV32jVOnTpWqjlEcvUhLS9PYsWM1atQoDR8+XCdOnNC0adN0++23KzExsdiRV6ZMmeJxhK9gKM1+/foxiiNKxel0KjExUX379rXVaEOA1dg3gOKxfwDe2W3fKDi77lwsC2iNGzeWr6+v0tPTPdanp6crLCzM6zZhYWEl1hfcpqenq1mzZh41Xbt2ddecPQhJXl6ejh075t5+wYIFCgkJ0axZs9w1//jHP9SqVSslJyfrT3/6k9f+AgICFBAQUGS9v7+/Lb4UqD74zgDesW8AxWP/ALyzy75R2h4sGySkTp066tatmzZu3Ohe53K5tHHjRkVERHjdJiIiwqNeMg9ZFtS3bdtWYWFhHjWZmZlKTk5210RERCgjI0Pbtm1z12zatEkul0vh4eGSzMOPDofnR+Pr6+vuEQAAAAAqg6WjOMbHx+u1117TG2+8od27d+v+++9XVlaWxowZI0kaOXKkxyAi48ePV0JCgmbPnq09e/boiSee0DfffKO4uDhJ5qRvEyZM0NNPP621a9fqhx9+0MiRI9W8eXNFR0dLkjp27Kj+/ftr7Nix2rp1q7766ivFxcVp2LBhat68uSRp0KBB+vrrr/Xkk08qJSVF27dv15gxY9S6dWtdddVVVfshAQAAAKg1LL0GbejQoTpy5IimTZumtLQ0de3aVQkJCe5BPg4cOOBxJKtnz556++23NXXqVD322GNq37691qxZo86dO7trJk+erKysLMXGxiojI0O9evVSQkKCAgMD3TUrVqxQXFyc+vTpI4fDoSFDhmj+/Pnux2+66Sa9/fbbmjVrlmbNmqWgoCBFREQoISFBdevWrYJPBgAAAEBt5GMYhmF1EzVVZmamQkJCdPz4cQYJQak4nU6tX79eAwcOtMW50oBdsG8AxWP/ALyz275R2mxg6SmOAAAAAIBCBDQAAAAAsAkCGgAAAADYBAENAAAAAGyCgAYAAAAANkFAAwAAAACbIKABAAAAgE0Q0AAAAADAJghoAAAAAGATBDQAAAAAsAkCGgAAAADYBAENAABUqdRUafNm8xYAKktqqvTDD42r3W+Nn9UN1Bq5uZLTWfzjgYGSr6+57HSa9cUJCJD8/Mpem5cn5eQUX1unjuTvX/ba/HwpO7v4Wn9/s76stS6XdPp0xdT6+ZmfhSQZhnTqVMXU+vqa/+0KZGWdX63TKd/sbPO9FHy+53peh0OqW7fw/qlTZt/e+PhIQUHlqz192vyci1OvXvlqs7PN70VF1AYFmX1L5vc3L69iauvWNT9n6dz7cllqz9zv+Y0oubZg38jNLXze2vgbUeDs/b4a/UYsWSI9NPa0ZLjk8JFeflkaNcp7rSR+I0rzG+F0er7v2vgb4a2W34jy1daQv0e88YYUF2fopHGtpk83tHixFBNT/FPaioFKc/z4cUOScfz4ccOYNcswzK+w9z+bNxdu+PLLJdeuW1dYu2xZybXvvltY++67JdcuW1ZYu25dybUvv1xYu3lzybWzZhXWbt1acu306YW1O3eWXDtxYmHtvn0l1z7wQGHt4cMl144aVVh78mTJtbff7vkfvaTagQM9a4OCiq3Nv/56z9rGjYt/3u7dPWtbty6+tlMnz9pOnYqvbd3as7Z79+JrGzf2rO3du/jaoCDP2oEDS/7cznT77SXXnjxZWDtqVMm1hw8X1j7wQMm1+/YV1k6cWHLtzp2FtdOnl1y7dWthLb8RpnP8RuRNnVpYW4t/I4zevT1rq8lvxK+/GobDYRib1bvY2pMKMho3Ntx/NviX/BtxZu2/6pT8G3HRBSfdte8EjCqx9rJGh921SwJL/o24quE+d+1LdUv+jbg2dKe79rm600usjQzZ6q6dHlTyb8TAoI+Nxo1dRuPGhjG5Xsm/EcOD17mfN67+shJr72nwrrv2ngYl/0bE1V/mrh0eXPJvxOR6L7trbw0u+TdietAsd21kSMm/Ec/Vne6uvTa05N+Il+pOdNde1bDk34glgQ+4ay9rVPJvxDsBo9y1F11Q8m/Ev+rc7vEdLql2g/9Aj9qTKv434ku/3h61R3yK/43Y7tfdo/YXR/G/Ebt9O3nU7vYt/jfiF0drj9rtfsX/RhzxaexR+6Vfxf1GFCz6+pq/QVbyyAYl4AgaAACoEikpJf+jeIGjRwuXSzi2U6S2hOM1Zu3vUsGxjBKOwUiSfj8mFTx1CcdVJEnH/ih97R8ZhbUlHFeRJGUcL6wt4fiH+fipOjp6yjzid/IctcczC5/3xDlqM09IR/9XlHmO2hMnpaP/e/Hj56g9mSUdzSpdbdYp6ej/PqyMc9SeOi0d/d9/hCbnqD19Rm29kkt1Ols6eq4vzf9k50hH//dlDCq5VDm5nt/hkuQ6S1/rzPOsNUqozTurtqRdND/fs7aE49VyuTxrSzgGLcPwrC3huLKksv1GFMjPl/bulVq2LOUGFvIxDKOk/2Y4D5mZmQoJCdHx48cVHBjI6Utlra2FpyY4nU59/PHHihowQP7BwaV73hp6akK5amvq6Utn19bC3wj3vnHzzfIv+E7Uwt8It2p6+lJqqnTRRVKAcVqO//010OEjffih1LRpYakRVLjf++SUvN+XqbZu4X7vk1vyfl+m2kDP/d4nr/h9uUy1AZ6/EcXV5uU59fnWr9Wr9w3y9/eXnE75OIvf7406nr8Rpa7NyzM/i+Jq/T1/I0pdm59v/rcrrtbP8zei1LUul3yyi9/vy1IrPz/zs5Akw5DP6ZJ/I0pd6+tr/nf+H59TJf9GlLrW4TC/a+WpPV3yfm/UDSpfbXbJvxEe+3JZar3s9+np0i23SC5DOvW/+O3rK+3fb21A88gGZ/497ywcQasqdeoU/gici7+/5/VHFVXr51f4I1uRtb6+nn+Jrqhah6Nyan18KqdWOv9ap1P5gYGef5kq6/MGnevf68pZe3ZPFVV75l9IK7I2IKDwL9EVWVuWfbmyamvjb0TBvnHmZ1QbfyMqotbC34iWLaVhw6R33jFrfX2lRYukGwaVtFUZ9vsy1Qb8709F19b535+qq3U6nfpv+il16lSwu/v/709plKXWT6X/q2NZan117mNY5al1VFKtTyXVyia1Zdjvy1Rbhr8blKm26H7fUdLc16Rx4wwpX/L1NbRokU+1OHomMYojAACoQhER5u2NN5r/ml1tLtoHUK3ExEgpKXl66qkvlZKSV61+awhoAACgyjVpUj2uBQFQfbVsKXXp8nu1+60hoAEAAACATRDQAAAAAMAmCGgAAAAAYBMENAAAAACwCQIaAAAAANgEAQ0AAAAAbIKABgAAAAA2QUADAAAAAJsgoAEAAACATRDQAAAAAMAmCGgAAAAAYBMENAAAAACwCQIaAAAAANgEAQ0AAAAAbIKABgAAAAA2QUADAAAAAJsgoAEAAACATRDQAAAAAMAmCGgAAAAAYBMENAAAAACwCQIaAAAAANgEAQ0AAAAAbIKABgAAAAA2QUADAAAAAJsgoAEAAACATRDQAAAAAMAmCGgAAAAAYBMENAAAAACwCQIaAAAAANgEAQ0AAAAAbIKABgAAAAA2QUADAAAAAJsgoAEAAACATRDQAAAAAMAmCGgAAAAAYBMENAAAAACwCQIaAAAAANgEAQ0AAAAAbIKABgAAAAA2QUADAAAAAJsgoAEAAACATRDQAAAAAMAmCGgAAAAAYBO2CGgLFixQmzZtFBgYqPDwcG3durXE+tWrV6tDhw4KDAxUly5dtH79eo/HDcPQtGnT1KxZM9WtW1eRkZFKSUnxqDl27JhGjBih4OBghYaGKiYmRidPnnQ//sQTT8jHx6fIn3r16lXcGwcAAACAM1ge0FatWqX4+HhNnz5d27dv15VXXqmoqCgdPnzYa/2WLVs0fPhwxcTEaMeOHYqOjlZ0dLR27tzprpk1a5bmz5+vhQsXKjk5WfXq1VNUVJSys7PdNSNGjNCuXbuUmJiodevW6fPPP1dsbKz78YkTJ+q3337z+NOpUyfdcccdlfdhAABQA6WmSps3m7cAgJJZHtDmzJmjsWPHasyYMerUqZMWLlyooKAgLV261Gv9vHnz1L9/f02aNEkdO3bUU089pauvvlovv/yyJPPo2dy5czV16lTddtttuuKKK/Tmm2/q0KFDWrNmjSRp9+7dSkhI0Ouvv67w8HD16tVLL730klauXKlDhw5JkurXr6+wsDD3n/T0dP3444+KiYmpks8FAICaYMkSqXVr6aabzNukJKs7AgB787PyxXNzc7Vt2zZNmTLFvc7hcCgyMlJJxfyCJyUlKT4+3mNdVFSUO3zt27dPaWlpioyMdD8eEhKi8PBwJSUladiwYUpKSlJoaKi6d+/uromMjJTD4VBycrIGDx5c5HVff/11XXrppbruuuuKfT85OTnKyclx38/MzJQkOZ1OOZ3OEj4JwFTwPeH7Anhi36ieUlOl2Fg/uVw+kiSXS1q50pDkI5fLJacz39oGawj2D8A7u+0bpe3D0oB29OhR5efnq2nTph7rmzZtqj179njdJi0tzWt9Wlqa+/GCdSXVNGnSxONxPz8/NWrUyF1zpuzsbK1YsUKPPvpoie9n5syZmjFjRpH1GzZsUFBQUInbAmdKTEy0ugXAltg3qpcffmgsl+taj3WGYYa13347pPXrt1nRVo3F/gF4Z5d949SpU6WqszSgVRf//Oc/deLECY0aNarEuilTpngc3cvMzFSrVq3Ur18/BQcHV3abqAGcTqcSExPVt29f+fv7W90OYBvsG9XTgQM+Rdb5+BgyDB81a9ZcAwc29bIVyor9A/DObvtGwdl152JpQGvcuLF8fX2Vnp7usT49PV1hYWFetym4Hqy4+oLb9PR0NWvWzKOma9eu7pqzByHJy8vTsWPHvL7u66+/rptvvrnIUbmzBQQEKCAgoMh6f39/W3wpUH3wnQG8Y9+oPvbulf72N3PZx0cyDHP5uut89Pnn5iUN/v6WXwpfo7B/AN7ZZd8obQ+W/jLWqVNH3bp108aNG93rXC6XNm7cqIiICK/bREREeNRL5mHLgvq2bdsqLCzMoyYzM1PJycnumoiICGVkZGjbtsJTKzZt2iSXy6Xw8HCP5963b582b97M4CAAAJRSdrZ0553SiRNSr17Sf/8r9expPvbjj9b2BgB2Z/kpjvHx8Ro1apS6d++uHj16aO7cucrKytKYMWMkSSNHjlSLFi00c+ZMSdL48ePVu3dvzZ49W4MGDdLKlSv1zTffaPHixZIkHx8fTZgwQU8//bTat2+vtm3b6vHHH1fz5s0VHR0tSerYsaP69++vsWPHauHChXI6nYqLi9OwYcPUvHlzj/6WLl2qZs2aacCAAVX3oQAAUI1NnCjt2CFdcIH0zjtSy5bS/fdLW7ZIR49a3R0A2JvlAW3o0KE6cuSIpk2bprS0NHXt2lUJCQnu0wkPHDggh6PwQF/Pnj319ttva+rUqXrsscfUvn17rVmzRp07d3bXTJ48WVlZWYqNjVVGRoZ69eqlhIQEBQYGumtWrFihuLg49enTRw6HQ0OGDNH8+fM9enO5XFq+fLlGjx4tX1/fSv4kAACo/t57T1qwwFx+800znEnSrbdKAQHSGYMdAwC8sDygSVJcXJzi4uK8Pvbpp58WWXfHHXeUOGG0j4+PnnzyST355JPF1jRq1Ehvv/12iX05HA79+uuvJdYAAADTf/4jFVwRMHmyNHBg4WPBwVL//tK//mVNbwBQXXB1LgAAOG85OdLQoVJmpnm92dNPF605899WV60yBw8BAHgioAEAgPM2aZK0bZvUqJG0cqXkbbCyW24puo6QBgCeCGgAAOC8fPCB9NJL5vIbb0itWnmvCwnxvp6QBgCFCGgAAKDc/vtf6Z57zOWJE6Wbb7a2HwCo7ghoAACgXHJzpWHDpOPHpT/9Sfr7363uCACqPwIaAAAol//7P+nrr6WGDc1BP7xdd3YmwyjbegCojQhoAACgzNaskebONZffeEO66KLSbXd2GCOcAYAnW8yDBgAAqo/9+6UxY8zl+HjvozOWhFAGAMXjCBoAACi13FxzvrOMDCk8XJo50+qOAKBmIaABAIBSmzJF2rpVCg015zurU8fqjgCgZiGgAQCAUlm7Vpozx1xevlxq08bKbgCgZiKgAQCAc/rlF2n0aHN5wgTpttus7AYAai4CGgAAKJHTac539scf0jXXSM89Z3VHAFBzEdAAAECJHntM+ve/pZAQc74zrjsDgMpDQAMAAMVat0564QVzedkyqW1ba/sBgJqOgAYAALw6cEAaNcpcfughafBga/sBgNqAgAYAAIoouO7s2DGpe3dp1iyrOwKA2oGABgAAipg6VUpKkoKDzevOAgKs7ggAagcCGgAA8LB+feERs6VLpYsvtrYfAKhNCGgAAMAtNVUaOdJcjouThgyxth8AqG0IaAAAQJKUl2ded/b779LVVxeO3ggAqDoENAAAIEl6/HHpq6/M687efZfrzgDACgQ0AACghATp2WfN5ddfly65xNp+AKC2IqABAFDLHTwo/eUv5vIDD0h33GFtPwBQmxHQAACoxfLypOHDpaNHpauukmbPtrojAKjdCGgAANRi06dLX3whNWhgXncWGGh1RwBQuxHQAACopT7+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7/H4Bx98UCHNAUBVSEmRPvnEnPNs3DiruwEAALVZuQJaaGioBg8eXNG9AIAlCiamHjBAatPG0lYAAEAtV66AtmzZsoruAwAskZIiLV5sLjM4CAAAsFq5AlqBI0eO6KeffpIkXXbZZbrwwgsrpCkAqApLlkhjx0oFl9P+9pu1/QAAAJRrkJCsrCzdc889atasma6//npdf/31at68uWJiYnTq1KmK7hEAKlxqqhQbWxjOJPMIWmqqdT0BAACUK6DFx8frs88+04cffqiMjAxlZGToX//6lz777DM98sgjFd0jAFS4lBTJ5fJcl58v7d1rTT8AAABSOU9xfP/99/Xee+/phhtucK8bOHCg6tatqzvvvFOvFoxXDQA21b590XW+vhJTPAIAACuV6wjaqVOn1LRp0yLrmzRpwimOACpdaqq0efP5nY6Yl2cOq1/A11datEhq2fL8+wMAACivcgW0iIgITZ8+XdnZ2e51p0+f1owZMxQREVHm51uwYIHatGmjwMBAhYeHa+vWrSXWr169Wh06dFBgYKC6dOmi9evXezxuGIamTZumZs2aqW7duoqMjFRKSopHzbFjxzRixAgFBwcrNDRUMTExOnnypNfX27t3rxo0aKDQ0NAyvzcAFWvJEumii6SbbpJatzbvl8f8+eb1Z716mWFv/35zkmoAAAArlSugzZs3T1999ZVatmypPn36qE+fPmrVqpW2bNmiefPmlem5Vq1apfj4eE2fPl3bt2/XlVdeqaioKB0+fNhr/ZYtWzR8+HDFxMRox44dio6OVnR0tHbu3OmumTVrlubPn6+FCxcqOTlZ9erVU1RUlEegHDFihHbt2qXExEStW7dOn3/+uWJjY4u8ntPp1PDhw3XdddeV6X0BqHipqZ6jLrpc5sTSZT2Slpkpvf66ufzYY9INN3DkDAAA2EO5Alrnzp2VkpKimTNnqmvXrurataueffZZpaSk6PLLLy/Tc82ZM0djx47VmDFj1KlTJy1cuFBBQUFaunSp1/p58+apf//+mjRpkjp27KinnnpKV199tV5++WVJ5tGzuXPnaurUqbrtttt0xRVX6M0339ShQ4e0Zs0aSdLu3buVkJCg119/XeHh4erVq5deeuklrVy5UocOHfJ4valTp6pDhw668847y/5BAahQKSmeoy5K5RvYY8kS6cQJqUMHKSqq4voDAAA4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EyZMON+eANRiixZJWVlSly5S377F12VnS6mp3h87eVJavNhcjo+v+B4BAAAqS7kC2vvvv69rr722yPqePXvqvffeO++mANROOTlSwb/9TJwo+fgUrfnXv8zb9HSpdWtpyZKiNcuXSxkZUrt20s03V1a3AAAAFa9cAe33339XiJdJiYKDg3X06NHzbgpA7fT229Jvv0ktWpijN54tNVWaObPwvstlDp9/5pG0/Hxp3jxzmYmpAQBAdVOuv7q0a9dOCQkJRdZ/9NFHuvjii8+7KQC1j2EUDq0/frxUp07RmpQUM5SdKT9f2ru38P66deb9hg2l0aMrrV0AAIBKUa6JquPj4xUXF6cjR47opptukiRt3LhRs2fP1ty5cyuyPwC1REKC9OOPUoMGUmys95r27c0jYmeGNF9f81TGAgVD68fGMjE1AACofsoV0O655x7l5OTomWee0VNPPSVJatOmjV599VWNHDmyQhsEUDs8/7x5O3as5OUMaklSy5bSlCnSM8+Y9319zUFFWrY072/fLn32meTnx8TUAACgeir31Rn333+/UlNTlZ6erszMTP33v/8lnAEol23bpM2bzWB1roFgb7vNvG3a1JzQOiam8LGCo2d33lkY2gAAAKqTcge0vLw8ffLJJ/rggw9kGIYk6dChQzp58mSFNQegdpg927wdOlRq1ap02wQGeoawgwellSvNZSamBgAA1VW5TnH85Zdf1L9/fx04cEA5OTnq27evGjRooOeee045OTlauHBhRfcJoIb65Rfp3XfN5UceKf/zLFhgTkx93XVS9+4V0xsAAEBVK9cRtPHjx6t79+76448/VLduXff6wYMHa+PGjRXWHICab+5ccyTGPn2kq64q33NkZUkF/y7ExNQAAKA6K9cRtC+++EJbtmxRnbPGwW7Tpo0OHjxYIY0BqPn++EN67TVzedKk8j/Pm2+az3XxxdItt1RMbwAAAFYo1xE0l8ul/Pz8IutTU1PVoEGD824KQO2weLF59KtzZ6lfv/I9h8tVODjIhAnmyI4AAADVVbkCWr9+/TzmO/Px8dHJkyc1ffp0DRw4sKJ6A1CD5eRI8+aZyxMnSj4+5Xue9evNCaxDQqQxYyquPwAAACuU6xTHF154Qf3791enTp2UnZ2tu+66SykpKWrcuLHeeeediu4RQA30zjvSb79JzZtLw4eX/3nm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cezYMdTX18NkMuH27du4fv263Y+LiIjkiw0aERFRD1xdXTFkyBAAwD/+8Q+Eh4dj+/btGDlyJADg4MGDCAgIsFhHq9UCAJydne+57bS0NNy8eRObNm1CSEgItFotYmNjYTAY7HAkREQ0ULBBIyIisoFSqcTKlSuRmZmJS5cuQavV4vr164iLi7MaP3r0aOTk5MBoNFodRSspKcEnn3yCpKQkAEB1dTV+/vlnux4DERHJHycJISIislFKSgpUKhW2bt2K5cuX44033kBOTg6uXr2KM2fO4KOPPkJOTg4AICMjA01NTXjhhRdw+vRpXL58GTt27MAPP/wAABg6dCh27NiByspKlJWVYe7cufcddSMioocfR9CIiIhspFarkZGRgXXr1qGqqgqPP/44srOz8eOPP8LT0xORkZFYuXIlAMDb2xuFhYVYsWIF4uLioFKpEBERgbFjxwIAtm/fjoULFyIyMhJBQUFYu3Ytli9fLuXhERGRDCgEQRCkToKIiIiIiIh4iyMREREREZFssEEjIiIiIiKSCTZoREREREREMsEGjYiIiIiISCbYoBEREREREckEGzQiIiIiIiKZYINGREREREQkE2zQiIiIiIiIZIINGhERERERkUywQSMiIiIiIpIJNmhEREREREQywQaNiIiIiIhIJv4PCWrjOF81EP0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "(grn.varp['GRN']>1e-2).sum()/grn.shape[1]" + "grn.varp['GRN'] = grn.varp['all'][:,:,np.array([grn.varp['all'][:,:,i].sum(1).min() == 0 for i in range(grn.varp['all'].shape[2]) ])].mean(-1).todense().\n", + "metrics[celltype+'_scprint_mean'] = BenGRN(grn).scprint_benchmark()" + ] + }, + { + "cell_type": "markdown", + "id": "4c4a192d", + "metadata": {}, + "source": [ + "## what we can say\n", + "\n", + "attention matrix is not super sparse but not super complete either. Although it really depends on attention head.\n", + "\n", + "Heads that are more sparse are likely to be more accurate as we can see with the increased enrichment in TFs. It might also be a mechanism of head selection that I would have to test." ] }, { diff --git a/scprint/model/hyper_attn/__init__.py b/scprint/model/hyper_attn/__init__.py new file mode 100644 index 0000000..094e193 --- /dev/null +++ b/scprint/model/hyper_attn/__init__.py @@ -0,0 +1,4 @@ +from .angular_lsh_triton import * +from .attn_utils import * +from .hyperformer import * +from .attn_utils import * diff --git a/scprint/model/hyper_attn/angular_lsh_triton.py b/scprint/model/hyper_attn/angular_lsh_triton.py new file mode 100644 index 0000000..fe074ac --- /dev/null +++ b/scprint/model/hyper_attn/angular_lsh_triton.py @@ -0,0 +1,215 @@ +import math +import torch +import triton +import triton.language as tl + + +@triton.heuristics( + { + "EVEN_M": lambda args: args["seqlen"] % args["BLOCK_M"] == 0, + "EVEN_HEADDIM": lambda args: args["headdim"] == args["BLOCK_HEADDIM"], + } +) +@triton.jit +def _angular_lsh_kernel( + in_mat, + proj_dir, + perm, + enc_vec, + buckets, + stride_in_matb, + stride_in_math, + stride_in_matm, + stride_proj_dirb, + stride_proj_dirh, + stride_proj_dird, + stride_bucketsb, + stride_bucketsh, + nheads, + seqlen, + seqlen_rounded, + headdim, + NUM_PROJ_ROUNDED: tl.constexpr, + num_projs: tl.constexpr, + BLOCK_HEADDIM: tl.constexpr, + EVEN_M: tl.constexpr, + EVEN_HEADDIM: tl.constexpr, + BLOCK_M: tl.constexpr, +): + start_m = tl.program_id(0) + off_hb = tl.program_id(1) + off_b = off_hb // nheads + off_h = off_hb % nheads + offs_m = start_m * BLOCK_M + tl.arange(0, BLOCK_M) + offs_n = tl.arange(0, NUM_PROJ_ROUNDED) + offs_d = tl.arange(0, BLOCK_HEADDIM) + + in_mat_ptrs = ( + in_mat + + off_b * stride_in_matb + + off_h * stride_in_math + + (offs_m[:, None] * stride_in_matm + offs_d[None, :]) + ) + proj_dir_ptrs = ( + proj_dir + + off_b * stride_proj_dirb + + off_h * stride_proj_dirh + + (offs_d[:, None] * stride_proj_dird + offs_n[None, :]) + ) + + # load in_mat block + if EVEN_M: + if EVEN_HEADDIM: + mat = tl.load(in_mat_ptrs) + else: + mat = tl.load(in_mat_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + else: + if EVEN_HEADDIM: + mat = tl.load(in_mat_ptrs, mask=offs_m[:, None] < seqlen, other=0.0) + else: + mat = tl.load( + in_mat_ptrs, + mask=(offs_m[:, None] < seqlen) & (offs_d[None, :] < headdim), + other=0.0, + ) + + # load proj_dir block, need to mask out out of bound offsets + if EVEN_HEADDIM: + proj_dir_block = tl.load( + proj_dir_ptrs, mask=offs_n[None, :] < num_projs, other=0.0 + ) + else: + proj_dir_block = tl.load( + proj_dir_ptrs, + mask=(offs_n[None, :] < num_projs) + & (offs_d[:, None] * stride_proj_dird < headdim), + other=0.0, + ) + + # multiply the in_mat block with proj_dir block to get the mask + mask = tl.dot(mat, proj_dir_block) + mask = tl.where(mask > 0.0, 1.0, 0.0) + + # form enc_vec + encoding_vectors = tl.load(enc_vec + offs_n, mask=offs_n < num_projs, other=0.0) + + # multiply mask by enc_vec + bin_ids = tl.sum(mask * encoding_vectors[None, :], 1).to(tl.int32) + # bin_ids = tl.ravel(bin_ids) # flatten the bin_ids into a 1d tensor + + # read hash buckets from look up table + hash_buckets = tl.load(perm + bin_ids) + + # write back bin_ids + # initialize pointers to output + buckets_ptrs = buckets + off_b * stride_bucketsb + off_h * stride_bucketsh + offs_m + if EVEN_M: + tl.store(buckets_ptrs, hash_buckets) + else: + tl.store(buckets_ptrs, hash_buckets, mask=offs_m < seqlen) + + +def _angular_lsh(in_mat, proj_dir, perm, enc_vec): + # shape constraints + num_projs = proj_dir.shape[-1] + batch, nheads, seqlen, d = in_mat.shape + assert (proj_dir.shape == (batch, nheads, d, num_projs)) or ( + proj_dir.shape == (1, 1, d, num_projs) + ) + assert in_mat.dtype == proj_dir.dtype, "All three tensors must have the same type" + assert in_mat.dtype in [torch.float16, torch.bfloat16], "Only support fp16 and bf16" + assert in_mat.is_cuda and proj_dir.is_cuda and perm.is_cuda and enc_vec.is_cuda + if proj_dir.shape[:2] == (1, 1): + stride_proj_dirb, stride_proj_dirh = 0, 0 + else: + stride_proj_dirb, stride_proj_dirh = proj_dir.stride()[:2] + + seqlen_rounded = math.ceil(seqlen / 128) * 128 + num_projs_rounded = 16 + buckets = torch.empty( + (batch, nheads, seqlen), device=in_mat.device, dtype=torch.int32 + ) + + BLOCK_HEADDIM = max(triton.next_power_of_2(d), 16) + BLOCK = 128 + num_warps = 4 if d <= 64 else 8 + grid = lambda META: (triton.cdiv(seqlen, META["BLOCK_M"]), batch * nheads) + _angular_lsh_kernel[grid]( + in_mat=in_mat, + proj_dir=proj_dir, + perm=perm, + enc_vec=enc_vec, + buckets=buckets, + stride_in_matb=in_mat.stride(0), + stride_in_math=in_mat.stride(1), + stride_in_matm=in_mat.stride(2), + stride_proj_dirb=stride_proj_dirb, + stride_proj_dirh=stride_proj_dirh, + stride_proj_dird=proj_dir.stride(2), + stride_bucketsb=buckets.stride(0), + stride_bucketsh=buckets.stride(1), + nheads=nheads, + seqlen=seqlen, + seqlen_rounded=seqlen_rounded, + headdim=d, + NUM_PROJ_ROUNDED=num_projs_rounded, + num_projs=num_projs, + BLOCK_HEADDIM=BLOCK_HEADDIM, + BLOCK_M=BLOCK, + num_warps=num_warps, + num_stages=1, + ) + return buckets + + +class AngularLSHTriton(torch.nn.Module): + """ + inputs: + - num_projs: a positive integer that determines the number of random projections used by hash function + - dim: positive integer that determines the dimension of input vectors + - mat: a tensor whose last shape is equal to dim and gets hashed by the lsh function + output: + - buckets: a tensor with shape mat.shape[:-1] and each entry is an integer in [0, 2^num_proj - 1] + """ + + def __init__(self, num_projs, dim, rng=None): + super().__init__() + self.num_projs = num_projs + + if num_projs > 0: + self.register_buffer( + "perm", + self._unit_hamming_distance_array(self.num_projs), + persistent=False, + ) + self.register_buffer( + "proj_dir", + torch.randn(dim + (num_projs,), generator=rng), + persistent=False, + ) + self.register_buffer( + "enc_vec", + 2 ** torch.arange(self.num_projs).view(1, 1, 1, -1), + persistent=False, + ) + else: + raise ValueError("Invalid value for num_projs") + + def _unit_hamming_distance_array(self, size_n): + if size_n == 1: + return torch.tensor([0, 1], dtype=torch.int32) + a = self._unit_hamming_distance_array(size_n - 1) + b = torch.concat([a, torch.flip(a, dims=[0]) + 2 ** (size_n - 1)], 0) + return b if b.stride(-1) == 1 else b.contiguous() + + def hash_torch(self, mat): + mask = torch.einsum("...nd,...dr -> ...nr", mat, self.proj_dir) + mask = mask > 0 + bin_ids = (mask * self.enc_vec).sum(-1) + return self.perm[bin_ids] + + def hash_triton(self, mat): + return _angular_lsh(mat, self.proj_dir, self.perm, self.enc_vec) + + def __repr__(self): + return f"AngularLSH(num_proj={self.num_projs}, proj_dir.shape={self.proj_dir.shape})" diff --git a/scprint/model/hyper_attn/attn_utils.py b/scprint/model/hyper_attn/attn_utils.py new file mode 100644 index 0000000..5a3f975 --- /dev/null +++ b/scprint/model/hyper_attn/attn_utils.py @@ -0,0 +1,52 @@ +import math +import torch + + +def add_self_attentions(attn1, lse1, attn2, lse2): + """ + inputs: + - attn1, attn2: 4d-tensors with shape [b, h, n, d] + - lse1, lse2: 4d-tensors of log-sum-exp with shape [b, h, n, 1] + output: + - attn + = (attn1 * exp(lse1) + attn2 * exp(lse2)) / (exp(lse1) + exp(lse2)) + = (attn1 + attn2 * exp(lse2 - lse1)) / (1 + exp(lse2-lse1)) + = attn1 * c + attn2 * (1-c), where c=1/(1 + exp(lse2-lse1)), + - lse + = log(exp(lse1) + exp(lse2)) + = log(exp(lse1) * (1 + exp(lse2 - lse1))) + = lse1 + log(1 + exp(lse2 - lse1)) = lse1 - log(c) + """ + c = (1 / (1 + (lse2 - lse1).exp())).to(dtype=attn1.dtype) + attn = c * attn1 + (1 - c) * attn2 + lse = lse1 - (c + torch.finfo(lse1.dtype).eps).log() + return attn, lse + + +def indexing(x, indices, chunk_size=-1): + """ + inputs: + - x: 4d-tensor with shape [b, h, n, d] + - indices: 3d-tensor with shape [b, h, s] where each entry should be in [0, n-1] + output: + - out: 4d-tensor with shape [b, h, s, d] where out[i,j] = x[i,j][indices[i,j],:] + + A naive implementation: + out = torch.zeros(b, h, s, d) + for i in range(b): + for j in range(h): + out[i,j] = x[i,j][idx[i,j],:] + return out + """ + if chunk_size < 0 or (chunk_size > 0 and x.shape[-2] % chunk_size == 0): + return x.gather(2, indices.unsqueeze(-1).expand(-1, -1, -1, x.shape[-1])) + else: + x = x.gather(2, indices.unsqueeze(-1).expand(-1, -1, -1, x.shape[-1])) + new_n = math.ceil(x.shape[2] / chunk_size) * chunk_size + if new_n <= 0 or new_n - x.shape[2] <= 0: + import pdb + + pdb.set_trace() + return torch.nn.functional.pad( + x, (0, 0, 0, new_n - x.shape[2]), mode="constant", value=0.0 + ) diff --git a/scprint/model/hyper_attn/hyperattention.py b/scprint/model/hyper_attn/hyperattention.py new file mode 100644 index 0000000..291b880 --- /dev/null +++ b/scprint/model/hyper_attn/hyperattention.py @@ -0,0 +1,1055 @@ +""" +Implementation of HyperAttention in Triton. +Tested with triton==2.1.0. + +Requirements: +- This implementation does not support attention bias (additive mask to qk). +- This implementation only supports sequence lengths that are integer powers of two. +- the permutation indices for q and k must have the same sequence length as q and k themselves +- sequence length for q and k must be equal +""" + +import math + +import torch +import triton +import triton.language as tl + + +@triton.heuristics( + { + "EVEN_HEADDIM": lambda args: args["headdim"] == args["BLOCK_HEADDIM"], + "EVEN_V_HEADDIM": lambda args: args["v_headdim"] == args["V_BLOCK_HEADDIM"], + } +) +# bug when seqlen_q is not divisible by BLOCK_M=128 +@triton.jit +def _fwd_hyper_kernel( + Q, + K, + V, + q_sort_idx, + k_sort_idx, + Out, + Lse, + softmax_scale, + stride_qb, + stride_qh, + stride_qm, + stride_kb, + stride_kh, + stride_kn, + stride_vb, + stride_vh, + stride_vn, + stride_q_sort_idxb, + stride_q_sort_idxh, + stride_q_sort_idxm, + stride_k_sort_idxb, + stride_k_sort_idxh, + stride_k_sort_idxn, + stride_ob, + stride_oh, + stride_om, + nheads, + block_size, + sample_size, + seqlen_k, + seqlen_q, + headdim, + v_headdim, + smooth_block, + CACHE_KEY_SEQLEN_Q, + CACHE_KEY_SEQLEN_K, + BLOCK_HEADDIM: tl.constexpr, + V_BLOCK_HEADDIM: tl.constexpr, + EVEN_HEADDIM: tl.constexpr, + EVEN_V_HEADDIM: tl.constexpr, + BLOCK_M: tl.constexpr, + BLOCK_N: tl.constexpr, +): + start_m = tl.program_id(0) + off_hb = tl.program_id(1) + off_b = off_hb // nheads + off_h = off_hb % nheads + # initialize offsets + offs_m = start_m * BLOCK_M + tl.arange(0, BLOCK_M) + offs_n = tl.arange(0, BLOCK_N) + offs_d = tl.arange(0, BLOCK_HEADDIM) + offs_vd = tl.arange(0, V_BLOCK_HEADDIM) + # Initialize pointers to Q, K, V + q_idx_ptrs = ( + q_sort_idx + + off_b * stride_q_sort_idxb + + off_h * stride_q_sort_idxh + + offs_m * stride_q_sort_idxm + ) + q_idx = tl.load(q_idx_ptrs).to(tl.int32) + + k_sort_idx += off_b * stride_k_sort_idxb + off_h * stride_k_sort_idxh + + # initialize pointer to m and l + lse_i = tl.zeros([BLOCK_M], dtype=tl.float32) - float("inf") + m_i = tl.zeros([BLOCK_M], dtype=tl.float32) - float("inf") + acc_o = tl.zeros([BLOCK_M, V_BLOCK_HEADDIM], dtype=tl.float32) + q_ptrs = ( + Q + + off_b * stride_qb + + off_h * stride_qh + + (q_idx[:, None] * stride_qm + offs_d[None, :]) + ) + if EVEN_HEADDIM: + q = tl.load(q_ptrs) + else: + q = tl.load(q_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + + # block diagonal part + # loop over k, v and update accumulator + block_id = start_m // block_size + block_offs = ( + seqlen_k + (start_m % block_size) * BLOCK_N - (block_size - 1) * BLOCK_N // 2 + ) + end_n = tl.minimum((block_id + 1) * BLOCK_N * block_size, seqlen_k) + for start_n in range(block_id * BLOCK_N * block_size, end_n, BLOCK_N): + start_n = tl.multiple_of(start_n, BLOCK_N) + if smooth_block: + k_idx_ptrs = ( + (start_n + block_offs + offs_n) * stride_k_sort_idxn + ) % seqlen_k + else: + k_idx_ptrs = (start_n + offs_n) * stride_k_sort_idxn + + k_idx = tl.load(k_sort_idx + k_idx_ptrs).to(tl.int32) + k_ptrs = ( + K + + off_b * stride_kb + + off_h * stride_kh + + (k_idx[:, None] * stride_kn + offs_d[None, :]) + ) + # -- compute qk ---- + if EVEN_HEADDIM: + k = tl.load(k_ptrs) + else: + k = tl.load(k_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + qk = tl.zeros([BLOCK_M, BLOCK_N], dtype=tl.float32) + qk += tl.dot(q, tl.trans(k)) + m_ij = tl.maximum(tl.max(qk, 1) * softmax_scale, lse_i) + p = tl.exp(qk * softmax_scale - m_ij[:, None]) + l_ij = tl.sum(p, 1) + + # scale acc_o + acc_o_scale = tl.exp(m_i - m_ij) + + # # -- update output accumulator acc_o -- + acc_o = acc_o * acc_o_scale[:, None] + + v_ptrs = ( + V + + off_b * stride_vb + + off_h * stride_vh + + (k_idx[:, None] * stride_vn + offs_vd[None, :]) + ) + if EVEN_V_HEADDIM: + v = tl.load(v_ptrs) + else: + v = tl.load(v_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + p = p.to(v.dtype) + acc_o += tl.dot(p, v) + + # -- update statistics + m_i = m_ij + l_i_new = tl.exp(lse_i - m_ij) + l_ij + lse_i = m_ij + tl.log(l_i_new) + # compute sampled columns + for col_block in range(0, sample_size): + curr_offs_n = col_block * BLOCK_N * stride_kn + offs_n + k_ptrs = ( + K + + off_b * stride_kb + + off_h * stride_kh + + (curr_offs_n[:, None] * stride_kn + offs_d[None, :]) + ) + # -- compute qk ---- + if EVEN_HEADDIM: + k = tl.load(k_ptrs) + else: + k = tl.load(k_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + qk = tl.zeros([BLOCK_M, BLOCK_N], dtype=tl.float32) + qk += tl.dot(q, tl.trans(k)) + m_ij = tl.maximum(tl.max(qk, 1) * softmax_scale, lse_i) + p = tl.exp(qk * softmax_scale - m_ij[:, None]) + l_ij = tl.sum(p, 1) + + # scale acc_o + acc_o_scale = tl.exp(m_i - m_ij) + # # -- update output accumulator acc_o -- + acc_o = acc_o * acc_o_scale[:, None] + + v_ptrs = ( + V + + off_b * stride_vb + + off_h * stride_vh + + (curr_offs_n[:, None] * stride_vn + offs_vd[None, :]) + ) + if EVEN_V_HEADDIM: + v = tl.load(v_ptrs) + else: + v = tl.load(v_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + p = p.to(v.dtype) + acc_o += tl.dot(p, v) + + # -- update statistics + m_i = m_ij + l_i_new = tl.exp(lse_i - m_ij) + l_ij + lse_i = m_ij + tl.log(l_i_new) + + o_scale = tl.exp(m_i - lse_i) + acc_o = acc_o * o_scale[:, None] + + # initialize pointers to outputs + lse_ptrs = Lse + off_hb * seqlen_q + q_idx + out_ptrs = ( + Out + + off_b * stride_ob + + off_h * stride_oh + + (q_idx[:, None] * stride_om + offs_vd[None, :]) + ) + # write back l and m + tl.store(lse_ptrs, lse_i) + if EVEN_V_HEADDIM: + tl.store(out_ptrs, acc_o) + else: + tl.store(out_ptrs, acc_o, mask=offs_vd[None, :] < v_headdim) + + +@triton.jit +def _bwd_preprocess_do_o_dot( + Out, + DO, + Delta, + stride_ob, + stride_oh, + stride_om, + stride_dob, + stride_doh, + stride_dom, + nheads, + seqlen_q, + v_headdim, + BLOCK_M: tl.constexpr, + V_BLOCK_HEADDIM: tl.constexpr, +): + start_m = tl.program_id(0) + off_hb = tl.program_id(1) + off_b = off_hb // nheads + off_h = off_hb % nheads + # initialize offsets + offs_m = start_m * BLOCK_M + tl.arange(0, BLOCK_M) + offs_d = tl.arange(0, V_BLOCK_HEADDIM) + # load + o = tl.load( + Out + + off_b * stride_ob + + off_h * stride_oh + + offs_m[:, None] * stride_om + + offs_d[None, :], + mask=offs_d[None, :] < v_headdim, + other=0.0, + ).to(tl.float32) + do = tl.load( + DO + + off_b * stride_dob + + off_h * stride_doh + + offs_m[:, None] * stride_dom + + offs_d[None, :], + mask=offs_d[None, :] < v_headdim, + other=0.0, + ).to(tl.float32) + delta = tl.sum(o * do, axis=1) + # write-back + tl.store(Delta + off_hb * seqlen_q + offs_m, delta) + + +@triton.jit +def _bwd_store_dx( + dx_ptrs, + dx, + offs_d, + headdim, + even_headdim, +): + if even_headdim: + tl.store(dx_ptrs, dx) + else: + tl.store(dx_ptrs, dx, mask=offs_d[None, :] < headdim) + + +@triton.jit +def _bwd_blocked_kernel_one_col( + start_n, + Q, + K, + V, + Q_idx, + K_idx, + DO, + DQ, + DK, + DV, + LSE, + D, + softmax_scale, + stride_qm, + stride_kn, + stride_vn, + stride_dom, + stride_dqm, + stride_dkn, + stride_dvn, + stride_q_idxm, + stride_k_idxn, + seqlen_q, + block_size, + headdim, + v_headdim, + smooth_block, + BLOCK_HEADDIM: tl.constexpr, + V_BLOCK_HEADDIM: tl.constexpr, + EVEN_HEADDIM: tl.constexpr, + EVEN_V_HEADDIM: tl.constexpr, + BLOCK_M: tl.constexpr, + BLOCK_N: tl.constexpr, +): + # We need to make sure begin_m is a multiple of BLOCK_M (not BLOCK_N) + block_id = start_n // block_size + block_offs = ( + seqlen_q + (start_n % block_size) * BLOCK_M - (block_size - 1) * BLOCK_M // 2 + ) + begin_m = block_id * BLOCK_M * block_size + # initialize row / col offsets + offs_n = start_n * BLOCK_N + tl.arange(0, BLOCK_N) + offs_m = tl.arange(0, BLOCK_M) + offs_d = tl.arange(0, BLOCK_HEADDIM) + offs_vd = tl.arange(0, V_BLOCK_HEADDIM) + # initialize pointers to value-like data + k_idx_ptrs = K_idx + offs_n * stride_k_idxn + k_idx = tl.load(k_idx_ptrs).to(tl.int32) + k_ptrs = K + (k_idx[:, None] * stride_kn + offs_d[None, :]) + v_ptrs = V + (k_idx[:, None] * stride_vn + offs_vd[None, :]) + # initialize dv and dk + dv = tl.zeros([BLOCK_N, V_BLOCK_HEADDIM], dtype=tl.float32) + dk = tl.zeros([BLOCK_N, BLOCK_HEADDIM], dtype=tl.float32) + + # k and v stay in SRAM throughout + if EVEN_HEADDIM: + k = tl.load(k_ptrs) + else: + k = tl.load(k_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + if EVEN_V_HEADDIM: + v = tl.load(v_ptrs) + else: + v = tl.load(v_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + + # loop over rows + end_m = tl.minimum((block_id + 1) * BLOCK_M * block_size, seqlen_q) + for start_m in range(begin_m, end_m, BLOCK_M): + start_m = tl.multiple_of(start_m, BLOCK_M) + if smooth_block: + q_idx_ptrs = ((start_m + block_offs + offs_m) * stride_q_idxm) % seqlen_q + else: + q_idx_ptrs = (start_m + offs_m) * stride_q_idxm + q_idx = tl.load(Q_idx + q_idx_ptrs).to(tl.int32) + q_ptrs = Q + (q_idx[:, None] * stride_qm + offs_d[None, :]) + # load q, k, v, do on-chip + if EVEN_HEADDIM: + q = tl.load(q_ptrs) + else: + q = tl.load(q_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + # recompute p = softmax(qk, dim=-1).T + qk = tl.dot(q, tl.trans(k)) + if not EVEN_HEADDIM: + tl.debug_barrier() + lse_i = tl.load(LSE + q_idx) + p = tl.exp(qk * softmax_scale - lse_i[:, None]) + # compute dv + do_ptrs = DO + (q_idx[:, None] * stride_dom + offs_vd[None, :]) + if EVEN_V_HEADDIM: + do = tl.load(do_ptrs) + else: + do = tl.load(do_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + dv += tl.dot(tl.trans(p.to(do.dtype)), do) + # compute dp = dot(v, do) + if not EVEN_HEADDIM: + tl.debug_barrier() + dp = tl.dot(do, tl.trans(v)) + # There's a race condition for headdim=48 + if not EVEN_HEADDIM: + tl.debug_barrier() + # compute ds = p * (dp - delta[:, None]) + # Putting the subtraction after the dp matmul (instead of before) is slightly faster + Di = tl.load(D + q_idx) + # Converting ds to q.dtype here reduces register pressure and makes it much faster + # for BLOCK_HEADDIM=128 + ds = (p * (dp - Di[:, None]) * softmax_scale).to(q.dtype) + # compute dk = dot(ds.T, q) + dk += tl.dot(tl.trans(ds), q) + # compute dq + if ( + not EVEN_HEADDIM + ): # Otherewise there's a race condition when BIAS_TYPE='matrix' + tl.debug_barrier() + + dq_ptrs = DQ + (q_idx[:, None] * stride_dqm + offs_d[None, :]) + dq = tl.dot(ds, k) + if EVEN_HEADDIM: + tl.atomic_add(dq_ptrs, dq) + else: + tl.atomic_add(dq_ptrs, dq, mask=offs_d[None, :] < headdim) + + # write-back + dv_ptrs = DV + (k_idx[:, None] * stride_dvn + offs_vd[None, :]) + dk_ptrs = DK + (k_idx[:, None] * stride_dkn + offs_d[None, :]) + _bwd_store_dx( + dk_ptrs, + dk, + offs_d, + headdim, + even_headdim=EVEN_HEADDIM, + ) + _bwd_store_dx( + dv_ptrs, + dv, + offs_vd, + v_headdim, + even_headdim=EVEN_V_HEADDIM, + ) + + +@triton.heuristics( + { + "EVEN_HEADDIM": lambda args: args["headdim"] == args["BLOCK_HEADDIM"], + "EVEN_V_HEADDIM": lambda args: args["v_headdim"] == args["V_BLOCK_HEADDIM"], + } +) +@triton.jit +def _bwd_permuted_block_diagonal_kernel( + Q, + K, + V, + q_sort_idx, + k_sort_idx, + DO, + DQ, + DK, + DV, + LSE, + D, + softmax_scale, + stride_qb, + stride_qh, + stride_qm, + stride_kb, + stride_kh, + stride_kn, + stride_vb, + stride_vh, + stride_vn, + stride_q_sort_idxb, + stride_q_sort_idxh, + stride_q_sort_idxm, + stride_k_sort_idxb, + stride_k_sort_idxh, + stride_k_sort_idxn, + stride_dob, + stride_doh, + stride_dom, + stride_dqb, + stride_dqh, + stride_dqm, + stride_dkb, + stride_dkh, + stride_dkn, + stride_dvb, + stride_dvh, + stride_dvn, + nheads, + seqlen_q, + block_size, + headdim, + v_headdim, + smooth_block, + CACHE_KEY_SEQLEN_Q, + CACHE_KEY_SEQLEN_K, + BLOCK_HEADDIM: tl.constexpr, + V_BLOCK_HEADDIM: tl.constexpr, + EVEN_HEADDIM: tl.constexpr, + EVEN_V_HEADDIM: tl.constexpr, + BLOCK_M: tl.constexpr, + BLOCK_N: tl.constexpr, +): + off_hb = tl.program_id(1) + off_b = off_hb // nheads + off_h = off_hb % nheads + # offset pointers for batch/head + Q += off_b * stride_qb + off_h * stride_qh + K += off_b * stride_kb + off_h * stride_kh + V += off_b * stride_vb + off_h * stride_vh + Q_idx = q_sort_idx + off_b * stride_q_sort_idxb + off_h * stride_q_sort_idxh + K_idx = k_sort_idx + off_b * stride_k_sort_idxb + off_h * stride_k_sort_idxh + DO += off_b * stride_dob + off_h * stride_doh + DQ += off_b * stride_dqb + off_h * stride_dqh + DK += off_b * stride_dkb + off_h * stride_dkh + DV += off_b * stride_dvb + off_h * stride_dvh + # pointer to row-wise quantities in value-like data + D += off_hb * seqlen_q + LSE += off_hb * seqlen_q + + start_n = tl.program_id(0) + _bwd_blocked_kernel_one_col( + start_n=start_n, + Q=Q, + K=K, + V=V, + Q_idx=Q_idx, + K_idx=K_idx, + DO=DO, + DQ=DQ, + DK=DK, + DV=DV, + LSE=LSE, + D=D, + softmax_scale=softmax_scale, + stride_qm=stride_qm, + stride_kn=stride_kn, + stride_vn=stride_vn, + stride_dom=stride_dom, + stride_dqm=stride_dqm, + stride_dkn=stride_dkn, + stride_dvn=stride_dvn, + stride_q_idxm=stride_q_sort_idxm, + stride_k_idxn=stride_k_sort_idxn, + seqlen_q=seqlen_q, + block_size=block_size // BLOCK_N, + headdim=headdim, + v_headdim=v_headdim, + smooth_block=smooth_block, + BLOCK_HEADDIM=BLOCK_HEADDIM, + V_BLOCK_HEADDIM=V_BLOCK_HEADDIM, + EVEN_HEADDIM=EVEN_HEADDIM, + EVEN_V_HEADDIM=EVEN_V_HEADDIM, + BLOCK_M=BLOCK_M, + BLOCK_N=BLOCK_N, + ) + + +@triton.heuristics( + { + "EVEN_HEADDIM": lambda args: args["headdim"] == args["BLOCK_HEADDIM"], + "EVEN_V_HEADDIM": lambda args: args["v_headdim"] == args["V_BLOCK_HEADDIM"], + } +) +@triton.jit +def _bwd_sampled_col_kernel( + Q, + K, + V, + DO, + DQ, + DK, + DV, + LSE, + D, + softmax_scale, + stride_qb, + stride_qh, + stride_qm, + stride_kb, + stride_kh, + stride_kn, + stride_vb, + stride_vh, + stride_vn, + stride_dob, + stride_doh, + stride_dom, + stride_dqb, + stride_dqh, + stride_dqm, + stride_dkb, + stride_dkh, + stride_dkn, + stride_dvb, + stride_dvh, + stride_dvn, + nheads, + seqlen_q, + headdim, + v_headdim, + CACHE_KEY_SEQLEN_Q, + CACHE_KEY_SEQLEN_K, + BLOCK_HEADDIM: tl.constexpr, + V_BLOCK_HEADDIM: tl.constexpr, + EVEN_HEADDIM: tl.constexpr, + EVEN_V_HEADDIM: tl.constexpr, + BLOCK_M: tl.constexpr, + BLOCK_N: tl.constexpr, +): + off_hb = tl.program_id(1) + off_b = off_hb // nheads + off_h = off_hb % nheads + # offset pointers for batch/head + Q += off_b * stride_qb + off_h * stride_qh + DO += off_b * stride_dob + off_h * stride_doh + DQ += off_b * stride_dqb + off_h * stride_dqh + # pointer to row-wise quantities in value-like data + D += off_hb * seqlen_q + LSE += off_hb * seqlen_q + + start_n = tl.program_id(0) + + # initialize row / col offsets + offs_n = start_n * BLOCK_N + tl.arange(0, BLOCK_N) + offs_m = tl.arange(0, BLOCK_M) + offs_d = tl.arange(0, BLOCK_HEADDIM) + offs_vd = tl.arange(0, V_BLOCK_HEADDIM) + # initialize pointers to value-like data + k_ptrs = ( + K + + off_b * stride_kb + + off_h * stride_kh + + (offs_n[:, None] * stride_kn + offs_d[None, :]) + ) + v_ptrs = ( + V + + off_b * stride_vb + + off_h * stride_vh + + (offs_n[:, None] * stride_vn + offs_vd[None, :]) + ) + # initialize dv and dk + dv = tl.zeros([BLOCK_N, V_BLOCK_HEADDIM], dtype=tl.float32) + dk = tl.zeros([BLOCK_N, BLOCK_HEADDIM], dtype=tl.float32) + + # k and v stay in SRAM throughout + if EVEN_HEADDIM: + k = tl.load(k_ptrs) + else: + k = tl.load(k_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + if EVEN_V_HEADDIM: + v = tl.load(v_ptrs) + else: + v = tl.load(v_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + + # loop over rows + for start_m in range(0, seqlen_q, BLOCK_M): + start_m = tl.multiple_of(start_m, BLOCK_M) + offs_m_curr = start_m + offs_m + q_ptrs = Q + (offs_m_curr[:, None] * stride_qm + offs_d[None, :]) + # load q, k, v, do on-chip + if EVEN_HEADDIM: + q = tl.load(q_ptrs) + else: + q = tl.load(q_ptrs, mask=offs_d[None, :] < headdim, other=0.0) + # recompute p = softmax(qk, dim=-1).T + qk = tl.dot(q, tl.trans(k)) + if not EVEN_HEADDIM: + tl.debug_barrier() + lse_i = tl.load(LSE + offs_m_curr) + p = tl.exp(qk * softmax_scale - lse_i[:, None]) + # compute dv + do_ptrs = DO + (offs_m_curr[:, None] * stride_dom + offs_vd[None, :]) + if EVEN_V_HEADDIM: + do = tl.load(do_ptrs) + else: + do = tl.load(do_ptrs, mask=offs_vd[None, :] < v_headdim, other=0.0) + dv += tl.dot(tl.trans(p.to(do.dtype)), do) + # compute dp = dot(v, do) + if not EVEN_HEADDIM: + tl.debug_barrier() + dp = tl.dot(do, tl.trans(v)) + # There's a race condition for headdim=48 + if not EVEN_HEADDIM: + tl.debug_barrier() + # compute ds = p * (dp - delta[:, None]) + # Putting the subtraction after the dp matmul (instead of before) is slightly faster + Di = tl.load(D + offs_m_curr) + # Converting ds to q.dtype here reduces register pressure and makes it much faster + # for BLOCK_HEADDIM=128 + ds = (p * (dp - Di[:, None]) * softmax_scale).to(q.dtype) + # compute dk = dot(ds.T, q) + dk += tl.dot(tl.trans(ds), q) + # compute dq + if ( + not EVEN_HEADDIM + ): # Otherewise there's a race condition when BIAS_TYPE='matrix' + tl.debug_barrier() + + dq_ptrs = DQ + (offs_m_curr[:, None] * stride_dqm + offs_d[None, :]) + dq = tl.dot(ds, k) + if EVEN_HEADDIM: + tl.atomic_add(dq_ptrs, dq) + else: + tl.atomic_add(dq_ptrs, dq, mask=offs_d[None, :] < headdim) + + dv_ptrs = ( + DV + + off_b * stride_dvb + + off_h * stride_dvh + + (offs_n[:, None] * stride_dvn + offs_vd[None, :]) + ) + dk_ptrs = ( + DK + + off_b * stride_dkb + + off_h * stride_dkh + + (offs_n[:, None] * stride_dkn + offs_d[None, :]) + ) + dk += tl.load(dk_ptrs) + dv += tl.load(dv_ptrs) + _bwd_store_dx( + dk_ptrs, + dk, + offs_d, + headdim, + even_headdim=EVEN_HEADDIM, + ) + _bwd_store_dx( + dv_ptrs, + dv, + offs_vd, + v_headdim, + even_headdim=EVEN_V_HEADDIM, + ) + + return + + +def _hyper_attn_forward( + q, + k, + v, + q_sort_idx, + k_sort_idx, + block_size, + sample_size, + softmax_scale=None, + smooth_block=False, +): + """ + Initializes the forward kernel and schedules thread blocks and runs them in parallel + """ + # shape constraints + batch, seqlen_q, nheads, d = q.shape + _, seqlen_k, _, _ = k.shape + _, seqlen_q_idx, _ = q_sort_idx.shape + _, seqlen_k_idx, _ = k_sort_idx.shape + assert k.shape == (batch, seqlen_k, nheads, d) + assert v.shape[:3] == (batch, seqlen_k, nheads) + assert q_sort_idx.shape == q.shape[:3] + assert k_sort_idx.shape == k.shape[:3] + assert d <= 128, "FlashAttention only support head dimensions up to 128" + assert q.dtype == k.dtype == v.dtype, "All tensors must have the same type" + assert q.dtype in [torch.float16, torch.bfloat16], "Only support fp16 and bf16" + assert ( + q.is_cuda + and k.is_cuda + and v.is_cuda + and q_sort_idx.is_cuda + and k_sort_idx.is_cuda + ) + softmax_scale = softmax_scale or 1.0 / math.sqrt(d) + lse = torch.empty((batch, nheads, seqlen_q), device=q.device, dtype=torch.float32) + # o = torch.empty_like(q) + o = torch.empty( + (batch, seqlen_q, nheads, v.shape[-1]), device=q.device, dtype=q.dtype + ) + + BLOCK_HEADDIM = max(triton.next_power_of_2(d), 16) + v_headdim = v.shape[3] + V_BLOCK_HEADDIM = max(triton.next_power_of_2(v_headdim), 16) + BLOCK = 128 + assert seqlen_k % BLOCK == 0, f"keys sequence length must be divisible by {BLOCK}" + num_warps = 4 if d <= 64 else 8 + grid = lambda META: (triton.cdiv(seqlen_q_idx, META["BLOCK_M"]), batch * nheads) + _fwd_hyper_kernel[grid]( + Q=q, + K=k, + V=v, + q_sort_idx=q_sort_idx, + k_sort_idx=k_sort_idx, + Out=o, + Lse=lse, + softmax_scale=softmax_scale, + stride_qb=q.stride(0), + stride_qh=q.stride(2), + stride_qm=q.stride(1), + stride_kb=k.stride(0), + stride_kh=k.stride(2), + stride_kn=k.stride(1), + stride_vb=v.stride(0), + stride_vh=v.stride(2), + stride_vn=v.stride(1), + stride_q_sort_idxb=q_sort_idx.stride(0), + stride_q_sort_idxh=q_sort_idx.stride(2), + stride_q_sort_idxm=q_sort_idx.stride(1), + stride_k_sort_idxb=k_sort_idx.stride(0), + stride_k_sort_idxh=k_sort_idx.stride(2), + stride_k_sort_idxn=k_sort_idx.stride(1), + stride_ob=o.stride(0), + stride_oh=o.stride(2), + stride_om=o.stride(1), + nheads=nheads, + block_size=triton.cdiv(block_size, BLOCK), + sample_size=triton.cdiv(sample_size, BLOCK), + seqlen_k=seqlen_k, + seqlen_q=seqlen_q, + headdim=d, + v_headdim=v_headdim, + smooth_block=smooth_block, + CACHE_KEY_SEQLEN_Q=seqlen_q // 32, + CACHE_KEY_SEQLEN_K=seqlen_k // 32, + BLOCK_HEADDIM=BLOCK_HEADDIM, + V_BLOCK_HEADDIM=V_BLOCK_HEADDIM, + BLOCK_M=BLOCK, + BLOCK_N=BLOCK, + num_warps=num_warps, + num_stages=1, + ) + return o, lse, softmax_scale # softmax_scale could have been updated + + +def _hyper_attn_backward( + do, + q, + k, + v, + q_sort_idx, + k_sort_idx, + o, + lse, + dq, + dk, + dv, + block_size, + sample_size, + softmax_scale=None, + smooth_block=False, +): + """ + Initializes the backward kernel and schedules thread blocks and runs them in parallel + """ + # Make sure that the last dimension is contiguous + if do.stride(-1) != 1: + do = do.contiguous() + batch, seqlen_q, nheads, d = q.shape + _, seqlen_k, _, _ = k.shape + # assert d in {16, 32, 64, 128} + assert d <= 128 + assert lse.shape == (batch, nheads, seqlen_q) + assert q.stride(-1) == k.stride(-1) == v.stride(-1) == o.stride(-1) == 1 + assert dq.stride(-1) == dk.stride(-1) == dv.stride(-1) == do.stride(-1) == 1 + softmax_scale = softmax_scale or 1.0 / math.sqrt(d) + + dq_accum = torch.zeros_like(q, dtype=torch.float32) + delta = torch.empty_like(lse) + + v_headdim = v.shape[3] + V_BLOCK_HEADDIM = max(triton.next_power_of_2(v_headdim), 16) + BLOCK_HEADDIM = max(triton.next_power_of_2(d), 16) + grid = lambda META: (triton.cdiv(seqlen_q, META["BLOCK_M"]), batch * nheads) + _bwd_preprocess_do_o_dot[grid]( + Out=o, + DO=do, + Delta=delta, + stride_ob=o.stride(0), + stride_oh=o.stride(2), + stride_om=o.stride(1), + stride_dob=do.stride(0), + stride_doh=do.stride(2), + stride_dom=do.stride(1), + nheads=nheads, + seqlen_q=seqlen_q, + v_headdim=v_headdim, + BLOCK_M=128, + V_BLOCK_HEADDIM=V_BLOCK_HEADDIM, + ) + + BLOCK = 128 + num_warps = 8 + grid = lambda META: (triton.cdiv(seqlen_k, BLOCK), batch * nheads) + _bwd_permuted_block_diagonal_kernel[grid]( + Q=q, + K=k, + V=v, + q_sort_idx=q_sort_idx, + k_sort_idx=k_sort_idx, + DO=do, + DQ=dq_accum, + DK=dk, + DV=dv, + LSE=lse, + D=delta, + softmax_scale=softmax_scale, + stride_qb=q.stride(0), + stride_qh=q.stride(2), + stride_qm=q.stride(1), + stride_kb=k.stride(0), + stride_kh=k.stride(2), + stride_kn=k.stride(1), + stride_vb=v.stride(0), + stride_vh=v.stride(2), + stride_vn=v.stride(1), + stride_q_sort_idxb=q_sort_idx.stride(0), + stride_q_sort_idxh=q_sort_idx.stride(2), + stride_q_sort_idxm=q_sort_idx.stride(1), + stride_k_sort_idxb=k_sort_idx.stride(0), + stride_k_sort_idxh=k_sort_idx.stride(2), + stride_k_sort_idxn=k_sort_idx.stride(1), + stride_dob=do.stride(0), + stride_doh=do.stride(2), + stride_dom=do.stride(1), + stride_dqb=dq_accum.stride(0), + stride_dqh=dq_accum.stride(2), + stride_dqm=dq_accum.stride(1), + stride_dkb=dk.stride(0), + stride_dkh=dk.stride(2), + stride_dkn=dk.stride(1), + stride_dvb=dv.stride(0), + stride_dvh=dv.stride(2), + stride_dvn=dv.stride(1), + nheads=nheads, + seqlen_q=seqlen_q, + block_size=block_size, + headdim=d, + v_headdim=v_headdim, + smooth_block=smooth_block, + CACHE_KEY_SEQLEN_Q=seqlen_q // 32, + CACHE_KEY_SEQLEN_K=seqlen_k + // 32, # key for triton cache (limit number of compilations) + BLOCK_HEADDIM=BLOCK_HEADDIM, + V_BLOCK_HEADDIM=V_BLOCK_HEADDIM, + BLOCK_M=BLOCK, + BLOCK_N=BLOCK, + num_warps=num_warps, + num_stages=1, + ) + + grid = lambda META: (triton.cdiv(sample_size, BLOCK), batch * nheads) + _bwd_sampled_col_kernel[grid]( + Q=q, + K=k, + V=v, + DO=do, + DQ=dq_accum, + DK=dk, + DV=dv, + LSE=lse, + D=delta, + softmax_scale=softmax_scale, + stride_qb=q.stride(0), + stride_qh=q.stride(2), + stride_qm=q.stride(1), + stride_kb=k.stride(0), + stride_kh=k.stride(2), + stride_kn=k.stride(1), + stride_vb=v.stride(0), + stride_vh=v.stride(2), + stride_vn=v.stride(1), + stride_dob=do.stride(0), + stride_doh=do.stride(2), + stride_dom=do.stride(1), + stride_dqb=dq_accum.stride(0), + stride_dqh=dq_accum.stride(2), + stride_dqm=dq_accum.stride(1), + stride_dkb=dk.stride(0), + stride_dkh=dk.stride(2), + stride_dkn=dk.stride(1), + stride_dvb=dv.stride(0), + stride_dvh=dv.stride(2), + stride_dvn=dv.stride(1), + nheads=nheads, + seqlen_q=seqlen_q, + headdim=d, + v_headdim=v_headdim, + CACHE_KEY_SEQLEN_Q=seqlen_q // 32, + CACHE_KEY_SEQLEN_K=seqlen_k + // 32, # key for triton cache (limit number of compilations) + BLOCK_HEADDIM=BLOCK_HEADDIM, + V_BLOCK_HEADDIM=V_BLOCK_HEADDIM, + BLOCK_M=BLOCK, + BLOCK_N=BLOCK, + num_warps=num_warps, + num_stages=1, + ) + dq.copy_(dq_accum) + + +class HyperAttnFunc(torch.autograd.Function): + @staticmethod + def forward( + ctx, + q, + k, + v, + q_sort_idx, + k_sort_idx, + block_size, + sample_size=0, + softmax_scale=None, + smooth_block=False, + ): + """ + q, k: queries and keys (batch_size, seqlen, nheads, headdim), seqlen must be integer power of two + v: values (batch_size, seqlen, nheads, v_headdim) + q_sort_idx: the permutation for queries (batch_size, seqlen, nheads) + k_sort_idx: the permutation for keys and values (batch_size, seqlen, nheads) + block_size: side length of block diagonal blocks + sample_size: number of sampled columns, must be multiple of 128 + softmax_scale: if none then scale will be 1/sqrt(headdim) + smooth_block: if true the block diagonals will be smoothened to resemble banded digonal patterns + """ + # Make sure that the last dimension is contiguous + q, k, v = [x if x.stride(-1) == 1 else x.contiguous() for x in [q, k, v]] + assert sample_size % 128 == 0 + o, lse, ctx.softmax_scale = _hyper_attn_forward( + q, + k, + v, + q_sort_idx, + k_sort_idx, + block_size, + sample_size, + softmax_scale=softmax_scale, + smooth_block=smooth_block, + ) + ctx.save_for_backward(q, k, v, q_sort_idx, k_sort_idx, o, lse) + ctx.block_size = block_size + ctx.sample_size = sample_size + ctx.smooth_block = smooth_block + return o, lse + + @staticmethod + def backward(ctx, do, dlse_use_needed=None): + q, k, v, q_sort_idx, k_sort_idx, o, lse = ctx.saved_tensors + dq = torch.zeros_like(q) + dk = torch.zeros_like(k) + dv = torch.zeros_like(v) + _hyper_attn_backward( + do, + q, + k, + v, + q_sort_idx, + k_sort_idx, + o, + lse, + dq, + dk, + dv, + ctx.block_size, + ctx.sample_size, + softmax_scale=ctx.softmax_scale, + smooth_block=ctx.smooth_block, + ) + return dq, dk, dv, None, None, None, None, None, None + + +hyper_attn_func = HyperAttnFunc.apply diff --git a/scprint/model/hyper_attn/hyperformer.py b/scprint/model/hyper_attn/hyperformer.py new file mode 100644 index 0000000..50a2e8a --- /dev/null +++ b/scprint/model/hyper_attn/hyperformer.py @@ -0,0 +1,177 @@ +import torch + +# from . import flash_attn_func +from . import hyper_attn_func, AngularLSHTriton, add_self_attentions +from ..flash_attn.flashattention import flash_attn_qkvpacked_func + + +class HyperAttention(torch.nn.Module): + + def __init__( + self, + input_dim=64, + lsh_num_projs=8, + block_size=256, + sample_size=256, + min_seq_len=2048, + smooth_block=False, + **kwargs + ): + """ + - block_size and sample_size must be divisible by 128 + """ + super().__init__() + self.input_dim = input_dim + self.lsh_num_projs = lsh_num_projs + self.block_size = block_size + self.sample_size = sample_size + self.min_seq_len = min_seq_len + self.smooth_block = smooth_block + self.lsh = AngularLSHTriton(num_projs=self.lsh_num_projs, dim=(1, 1, input_dim)) + + def forward( + self, + query: torch.tensor, + key: torch.tensor, + value: torch.tensor, + scale=None, + causal=False, + return_lse=False, + ): + """ + Forward function for HyperAttention. If no causal masking, simply invokes forward_no_causal_mask method. + If there is causal masking, it partitions the attention matrix and recurses on the partitions. + inputs: + - query, key, and valu: must have same sequence lengths but dimension of values vectors can be different + from that of query or key + - sequence lengths must be divisible by block_size + output: + - attn: (approximation of) the final attention output tensor + - lse: (approximation of) log sum exp of the qk matrix + """ + query = query.contiguous() + key = key.contiguous() + value = value.contiguous() + + n_query = query.shape[2] + batch_size, n_heads, n_key, dim = key.shape + scale = scale or dim ** (-0.5) + assert n_query == n_key + + # without causal masking + if causal is False: + attn, lse = self.forward_no_causal_mask(query, key, value, scale) + + else: # with causal masking + if n_key <= self.min_seq_len: + attn = flash_attn_qkvpacked_func( + torch.cat((query, key, value), dim=2), + None, + False, + scale, + ) + lse = None + attn = attn.transpose(1, 2) + + else: + # If n_query is odd we pad inputs by zero rows + if n_query % 2: + query = torch.nn.functional.pad( + query, (0, 0, 0, 1), mode="constant", value=0.0 + ) + key = torch.nn.functional.pad( + key, (0, 0, 0, 1), mode="constant", value=0.0 + ) + value = torch.nn.functional.pad( + value, (0, 0, 0, 1), mode="constant", value=0.0 + ) + + # extract block diagonal parts + q_bd = query.view( + batch_size, 2 * n_heads, query.shape[2] // 2, query.shape[-1] + ) + k_bd = key.view( + batch_size, 2 * n_heads, key.shape[2] // 2, key.shape[-1] + ) + v_bd = value.view( + batch_size, 2 * n_heads, key.shape[2] // 2, value.shape[-1] + ) + + attn_bd, lse_bd = self.forward(q_bd, k_bd, v_bd, scale, True, True) + + if attn_bd.shape[2] not in attn_bd.stride(): + attn_bd = attn_bd.contiguous() + attn_bd = attn_bd.view(batch_size, n_heads, -1, dim) + + if lse_bd.shape[2] not in lse_bd.stride(): + lse_bd = lse_bd.contiguous() + lse_bd = lse_bd.view(batch_size, n_heads, -1, 1) + + # lowe diagonal block is an unmasked attention + attn_unmasked, lse_unmasked = self.forward_no_causal_mask( + query[:, :, key.shape[2] // 2 :, :], + key[:, :, : key.shape[2] // 2, :], + value[:, :, : key.shape[2] // 2, :], + scale, + ) + + attn_up, lse_up = ( + attn_bd[:, :, : query.shape[2] // 2, :], + lse_bd[:, :, : query.shape[2] // 2, :], + ) + attn_down, lse_down = add_self_attentions( + attn_bd[:, :, query.shape[2] // 2 :, :], + lse_bd[:, :, query.shape[2] // 2 :, :], + attn_unmasked, + lse_unmasked, + ) + + attn = torch.cat((attn_up, attn_down), dim=-2) + lse = torch.cat((lse_up, lse_down), dim=-2) + + if n_query % 2: + attn = attn[:, :, :-1, :] + lse = lse[:, :, :-1, :] + + if not return_lse: + return attn + else: + return attn, lse + + def forward_no_causal_mask(self, query, key, value, scale): + """ + - sequence lengths must be divisible by block_size + """ + batch_size, head_size, n_query, dim = query.shape + + if self.min_seq_len > n_query: + attn = flash_attn_qkvpacked_func( + torch.cat((query, key, value), dim=2), + None, + False, + scale, + ) + lse = None + else: + # Hash keys and queries via SortLSH and obtain buckets + _, query_sort_idx = torch.sort( + self.lsh.hash_triton(query), dim=2, stable=True + ) # batch_size x head_size x n + _, key_sort_idx = torch.sort(self.lsh.hash_triton(key), dim=2, stable=True) + + # Now run hyper attention function on q,k,v and the permutations + attn, lse = hyper_attn_func( + query.transpose(1, 2), + key.transpose(1, 2), + value.transpose(1, 2), + query_sort_idx.transpose(1, 2), + key_sort_idx.transpose(1, 2), + self.block_size, + self.sample_size, + scale, + self.smooth_block, + ) + lse = lse.unsqueeze(-1) + attn = attn.transpose(1, 2) + + return attn, lse diff --git a/scprint/tasks/grn.py b/scprint/tasks/grn.py index 80b67d3..e4eb52f 100644 --- a/scprint/tasks/grn.py +++ b/scprint/tasks/grn.py @@ -14,7 +14,8 @@ from torch.utils.data import DataLoader import gc -from scipy import sparse +import sparse +import scipy.sparse from lightning.pytorch import Trainer import joblib @@ -33,7 +34,6 @@ import numpy as np from .tmfg import tmfg import networkx as nx -import scipy.sparse import os.path import pandas as pd @@ -330,7 +330,7 @@ def aggregate(self, attn, genes): attns = attns / Qs.shape[0] if self.head_agg in ["max", "mean"]: attns[attns < 0.01] = 0 - attns = sparse.csr_matrix(attns) + attns = scipy.sparse.csr_matrix(attns) return attns def filter(self, adj, gt=None): From a0294a1e4a2310fd2ac57e5ff563dc90cd793fe0 Mon Sep 17 00:00:00 2001 From: jkobject Date: Mon, 9 Sep 2024 17:04:37 +0200 Subject: [PATCH 2/6] work in progress --- docs/index.md | 136 +- .../additional/cells_and_genes_in_cxg.ipynb | 365 +++++ test.ipynb => notebooks/additional/test.ipynb | 0 notebooks/additional/test_zinb1.ipynb | 188 +++ .../update_lamin_or_cellxgene.ipynb | 1175 +++++++++++++++++ notebooks/additional/updates_on_grn.ipynb | 2 +- 6 files changed, 1842 insertions(+), 24 deletions(-) create mode 100644 notebooks/additional/cells_and_genes_in_cxg.ipynb rename test.ipynb => notebooks/additional/test.ipynb (100%) create mode 100644 notebooks/additional/test_zinb1.ipynb create mode 100644 notebooks/additional/update_lamin_or_cellxgene.ipynb diff --git a/docs/index.md b/docs/index.md index 200a77b..3a54557 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,14 +1,15 @@ # scPRINT: Large Cell Model for scRNAseq data +[![codecov](https://codecov.io/gh/jkobject/scPRINT/branch/main/graph/badge.svg?token=GRnnData_token_here)](https://codecov.io/gh/jkobject/scPRINT) +[![CI](https://github.com/jkobject/scPRINT/actions/workflows/main.yml/badge.svg)](https://github.com/jkobject/scPRINT/actions/workflows/main.yml) [![PyPI version](https://badge.fury.io/py/scprint.svg)](https://badge.fury.io/py/scprint) -[![Documentation Status](https://readthedocs.org/projects/scprint/badge/?version=latest)](https://scprint.readthedocs.io/en/latest/?badge=latest) [![Downloads](https://pepy.tech/badge/scprint)](https://pepy.tech/project/scprint) [![Downloads](https://pepy.tech/badge/scprint/month)](https://pepy.tech/project/scprint) [![Downloads](https://pepy.tech/badge/scprint/week)](https://pepy.tech/project/scprint) [![GitHub issues](https://img.shields.io/github/issues/jkobject/scPRINT)](https://img.shields.io/github/issues/jkobject/scPRINT) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) -[![DOI](https://zenodo.org/badge/391909874.svg)]() +[![DOI](https://zenodo.org/badge/391909874.svg)](https://doi.org/10.1101/2024.07.29.605556) ![logo](logo.png) @@ -23,39 +24,122 @@ scPRINT can be used to perform the following analyses: - __label prediction__: predict the cell type, disease, sequencer, sex, and ethnicity of your cells - __gene network inference__: generate a gene network from any cell or cell cluster in your scRNAseq dataset -[Read the paper!](https://www.biorxiv.org/content/10.1101/2024.07.29.605556v1) if you would like to know more about scPRINT. +[Read the manuscript!](https://www.biorxiv.org/content/10.1101/2024.07.29.605556v1) if you would like to know more about scPRINT. Have a look at some of my [X-plainers](https://twitter.com/jkobject). ![figure1](figure1.png) +## Table of Contents + +- [scPRINT: Large Cell Model for scRNAseq data](#scprint-large-cell-model-for-scrnaseq-data) + - [Table of Contents](#table-of-contents) + - [Install `scPRINT`](#install-scprint) + - [lamin.ai](#laminai) + - [install](#install) + - [pytorch and GPUs](#pytorch-and-gpus) + - [dev install](#dev-install) + - [Usage](#usage) + - [scPRINT's basic commands](#scprints-basic-commands) + - [Notes on GPU/CPU usage with triton](#notes-on-gpucpu-usage-with-triton) + - [Simple tests:](#simple-tests) + - [FAQ](#faq) + - [I want to generate gene networks from scRNAseq data:](#i-want-to-generate-gene-networks-from-scrnaseq-data) + - [I want to generate cell embeddings and cell label predictions from scRNAseq data:](#i-want-to-generate-cell-embeddings-and-cell-label-predictions-from-scrnaseq-data) + - [I want to denoise my scRNAseq dataset:](#i-want-to-denoise-my-scrnaseq-dataset) + - [I want to generate an atlas-level embedding](#i-want-to-generate-an-atlas-level-embedding) + - [I need to generate gene tokens using pLLMs](#i-need-to-generate-gene-tokens-using-pllms) + - [I want to pre-train scPRINT from scratch on my own data](#i-want-to-pre-train-scprint-from-scratch-on-my-own-data) + - [how can I find if scPRINT was trained on my data?](#how-can-i-find-if-scprint-was-trained-on-my-data) + - [can I use scPRINT on other organisms rather than human?](#can-i-use-scprint-on-other-organisms-rather-than-human) + - [how long does scPRINT takes? what kind of resources do I need? (or in alternative: can i run scPRINT locally?)](#how-long-does-scprint-takes-what-kind-of-resources-do-i-need-or-in-alternative-can-i-run-scprint-locally) + - [I have different scRNASeq batches. Should I integrate my data before running scPRINT?](#i-have-different-scrnaseq-batches-should-i-integrate-my-data-before-running-scprint) + - [where to find the gene embeddings?](#where-to-find-the-gene-embeddings) + - [Documentation](#documentation) + - [Model Weights](#model-weights) + - [Development](#development) + - [Work in progress (PR welcomed):](#work-in-progress-pr-welcomed) + ## Install `scPRINT` -For the moment scPRINT has been tested on MacOS and Linux (Ubuntu 20.04) with Python 3.10. +For the moment scPRINT has been tested on MacOS and Linux (Ubuntu 20.04) with Python 3.10. Its instalation takes on average 10 minutes. If you want to be using flashattention2, know that it only supports triton 2.0 MLIR's version and torch==2.0.0 for now. -```python -conda create -n "[whatever]" python==3.10 +### lamin.ai + +To use scPRINT, I need you to use lamin.ai. This is needed to load biological informations like genes, cell types, organisms etc... + +To do so, you will need to connect with google or github to [lamin.ai](https://lamin.ai/login), then be sure to connect before running anything (or before starting a notebook): `lamin login --key `. Follow the instructions on [their website](https://docs.lamin.ai/guide). + +### install + +To start you will need to do: + +```bash +conda create -n python==3.10 #scprint might work with python >3.10, but it is not tested #one of pip install scprint # OR -pip install scprint[dev] # for the dev dependencies (building etc..) AND/OR [dev,flash] -pip install scprint[flash] && pip install -e "git+https:/ -/github.com/triton-lang/triton.git@legacy-backend -#egg=triton&subdirectory=python" # to use flashattention2, you will need to install triton 2.0.0.dev20221202 specifically, working on removing this dependency # only if you have a compatible gpu (e.g. not available for apple GPUs for now, see https://github.com/triton-lang/triton?tab=readme-ov-file#compatibility) +pip install scprint[dev] # for the dev dependencies (building etc..) OR +pip install scprint[flash] # to use flashattention2 with triton: only if you have a compatible gpu (e.g. not available for apple GPUs for now, see https://github.com/triton-lang/triton?tab=readme-ov-file#compatibility) +#OR pip install scPRINT[dev,flash] + +lamin login --key +lamin init --storage --schema bionty +``` + +if you start with lamin and had to do a `lamin init`, you will also need to populate your ontologies. This is because scPRINT is using ontologies to define its cell types, diseases, sexes, ethnicities, etc. + +you can do it manually or with our function: + +```python +from scdataloader.utils import populate_my_ontology + +populate_my_ontology() #to populate everything (recommended) (can take 2-10mns) + +populate_my_ontology( #the minimum for scprint to run some inferences (denoising, grn inference) +organisms: List[str] = ["NCBITaxon:10090", "NCBITaxon:9606"], + sex: List[str] = ["PATO:0000384", "PATO:0000383"], + celltypes = None, + ethnicities = None, + assays = None, + tissues = None, + diseases = None, + dev_stages = None, +) ``` We make use of some additional packages we developed alongside scPRint. + Please refer to their documentation for more information: - [scDataLoader](https://github.com/jkobject/scDataLoader): a dataloader for training large cell models. - [GRnnData](https://github.com/cantinilab/GRnnData): a package to work with gene networks from single cell data. - [benGRN](https://github.com/jkobject/benGRN): a package to benchmark gene network inference methods from single cell data. -### lamin.ai +### pytorch and GPUs + +scPRINT can run on machines without GPUs, but it will be slow. It is highly recommended to use a GPU for inference. + +Once you have a GPU, and installed the required drivers, you might need to install a specific version of pytorch that is compatible with your drivers (e.g. nvidia 550 drivers will lead to a nvidia toolkit 11.7 or 11.8 which might mean you need to re-install a different flavor of pytorch for things to work. e.g. using the command: +`pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu118` on my case on linux + ). + +I was able to test it with nvidia 11.7, 11.8, 12.2. -⚠️ if you want to use the scDataloader's multi-dataset mode or if you want to preprocess datasets and other functions of the model, you will need to use lamin.ai. +### dev install -In that case, connect with google or github to [lamin.ai](https://lamin.ai/login), then be sure to connect before running anything (or before starting a notebook): `lamin login --key `. Follow the instructions on [their website](https://docs.lamin.ai/guide). +If you want to use the latest version of scPRINT and work on the code yourself use `git clone` and `pip -e` instead of `pip install`. + +```bash +git clone https://github.com/jkobject/scPRINT +git clone https://github.com/jkobject/scDataLoader +git clone https://github.com/cantinilab/GRnnData +git clone https://github.com/jkobject/benGRN +pip install -e scPRINT[dev] +pip install -e scDataLoader[dev] +pip install -e GRnnData[dev] +pip install -e benGRN[dev] +``` ## Usage @@ -88,7 +172,7 @@ $ scprint fit/train/predict/test/denoise/embed/gninfer --config config/[medium|l find out more about the commands by running `scprint --help` or `scprint [command] --help`. -more examples of using the command line are available in the [docs](./docs/usage.md). +more examples of using the command line are available in the [docs](usage.md). ### Notes on GPU/CPU usage with triton @@ -102,6 +186,10 @@ model = scPrint.load_from_checkpoint( transformer="normal") ``` +### Simple tests: + +An instalation of scPRINT and a simple test of the denoiser is performed during each commit to the main branch with a [Github action](https://github.com/jkobject/scPRINT/actions) and [pytest workflow](https://github.com/jkobject/scPRINT/blob/main/.github/workflows/main.yml). It also provides an expected runtime for the installation and run of scPRINT. + We now explore the different usages of scPRINT: ## FAQ @@ -110,27 +198,27 @@ We now explore the different usages of scPRINT: -> Refer to the section . gene network inference in [this notebook](./notebooks/cancer_usecase.ipynb#). --> More examples in this notebook [notebooks/assessments/bench_omni.ipynb](../notebooks/bench_omni.ipynb). +-> More examples in this notebook [./notebooks/assessments/bench_omni.ipynb](https://github.com/jkobject/scPRINT/blob/main/notebooks/bench_omni.ipynb). ### I want to generate cell embeddings and cell label predictions from scRNAseq data: -> Refer to the embeddings and cell annotations section in [this notebook](./notebooks/cancer_usecase.ipynb#). -### I want to denoising my scRNAseq dataset: +### I want to denoise my scRNAseq dataset: -> Refer to the Denoising of B-cell section in [this notebook](./notebooks/cancer_usecase.ipynb). --> More example in our benchmark notebook [notebooks/assessments/bench_denoising.ipynb](../notebooks/bench_denoising.ipynb). +-> More example in our benchmark notebook [./notebooks/assessments/bench_denoising.ipynb](https://github.com/jkobject/scPRINT/blob/main/notebooks/bench_denoising.ipynb). ### I want to generate an atlas-level embedding --> Refer to the notebook [figures/nice_umap.ipynb](../figures/nice_umap.ipynb). +-> Refer to the notebook [nice_umap.ipynb](https://github.com/jkobject/scPRINT/blob/main/figures/nice_umap.ipynb). ### I need to generate gene tokens using pLLMs To run scPRINT, you can use the option to define the gene tokens using protein language model embeddings of genes. This is done by providing the path to a parquet file of the precomputed set of embeddings for each gene name to scPRINT via "precpt_gene_emb" --> To generate this file please refer to the notebook [notebooks/generate_gene_embeddings.ipynb](../notebooks/generate_gene_embeddings.ipynb). +-> To generate this file please refer to the notebook [generate_gene_embeddings](https://github.com/jkobject/scPRINT/blob/main/notebooks/generate_gene_embeddings.ipynb). ### I want to pre-train scPRINT from scratch on my own data @@ -163,7 +251,7 @@ model = scPrint.load_from_checkpoint( ) ``` -You can also recreate the gene embedding file through [this notebook](notebooks/generate_gene_embeddings.ipynb). Just call the functions, and it should recreate the file itself. +You can also recreate the gene embedding file through [this notebook](https://github.com/jkobject/scPRINT/blob/main/notebooks/generate_gene_embeddings.ipynb). Just call the functions, and it should recreate the file itself. the file itself is also available on [hugging face](https://huggingface.co/jkobject/scPRINT/tree/main) @@ -177,21 +265,23 @@ Model weights are available on [hugging face](https://huggingface.co/jkobject/sc ## Development -Read the [CONTRIBUTING.md](CONTRIBUTING.md) file. +Read the [CONTRIBUTING.md](https://github.com/jkobject/scPRINT/blob/main/CONTRIBUTING.md) file. Read the [training runs](https://wandb.ai/ml4ig/scprint_scale/reports/scPRINT-trainings--Vmlldzo4ODIxMjgx?accessToken=80metwx7b08hhourotpskdyaxiflq700xzmzymr6scvkp69agybt79l341tv68hp) document to know more about how pre-training was performed and the its behavior. +code coverage is not right as I am using the command line interface for now. >50% of the code is covered by my current unit test. + Acknowledgement: [python template](https://github.com/rochacbruno/python-project-template) [laminDB](https://lamin.ai/) [lightning](https://lightning.ai/) -## Work in progress: +## Work in progress (PR welcomed): 1. remove the triton dependencies 2. add version with additional labels (tissues, age) and organisms (mouse, zebrafish) and more datasets from cellxgene 3. version with separate transformer blocks for the encoding part of the bottleneck learning and for the cell embeddings 4. improve classifier to output uncertainties and topK predictions when unsure -5. +5. setup latest lamindb version Awesome Large Cell Model created by Jeremie Kalfon. diff --git a/notebooks/additional/cells_and_genes_in_cxg.ipynb b/notebooks/additional/cells_and_genes_in_cxg.ipynb new file mode 100644 index 0000000..18d42fa --- /dev/null +++ b/notebooks/additional/cells_and_genes_in_cxg.ipynb @@ -0,0 +1,365 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import cellxgene_census\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "The \"stable\" release is currently 2024-07-01. Specify 'census_version=\"2024-07-01\"' in future calls to open_soma() to ensure data consistency.\n" + ] + } + ], + "source": [ + "# or, directly open the census (don't forget to close it!)\n", + "census = cellxgene_census.open_soma()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "var_df = cellxgene_census.get_var(census, \"homo_sapiens\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
soma_joinidfeature_idfeature_namefeature_lengthnnzn_measured_obs
00ENSG00000000003TSPAN64530453044873855064
11ENSG00000000005TNMD147623605961201828
22ENSG00000000419DPM192761757646274159149
33ENSG00000000457SCYL36883911732273988868
44ENSG00000000460C1orf1125970628779473636201
.....................
6052560525ENSG00000288718ENSG00000288718.1107041248980
6052660526ENSG00000288719ENSG00000288719.1425228261248980
6052760527ENSG00000288724ENSG00000288724.1625361248980
6052860528ENSG00000290791ENSG00000290791.13612164243485
6052960529ENSG00000290146ENSG00000290146.11292795843485
\n", + "

60530 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " soma_joinid feature_id feature_name feature_length \\\n", + "0 0 ENSG00000000003 TSPAN6 4530 \n", + "1 1 ENSG00000000005 TNMD 1476 \n", + "2 2 ENSG00000000419 DPM1 9276 \n", + "3 3 ENSG00000000457 SCYL3 6883 \n", + "4 4 ENSG00000000460 C1orf112 5970 \n", + "... ... ... ... ... \n", + "60525 60525 ENSG00000288718 ENSG00000288718.1 1070 \n", + "60526 60526 ENSG00000288719 ENSG00000288719.1 4252 \n", + "60527 60527 ENSG00000288724 ENSG00000288724.1 625 \n", + "60528 60528 ENSG00000290791 ENSG00000290791.1 3612 \n", + "60529 60529 ENSG00000290146 ENSG00000290146.1 1292 \n", + "\n", + " nnz n_measured_obs \n", + "0 4530448 73855064 \n", + "1 236059 61201828 \n", + "2 17576462 74159149 \n", + "3 9117322 73988868 \n", + "4 6287794 73636201 \n", + "... ... ... \n", + "60525 4 1248980 \n", + "60526 2826 1248980 \n", + "60527 36 1248980 \n", + "60528 1642 43485 \n", + "60529 7958 43485 \n", + "\n", + "[60530 rows x 6 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "74322510" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_df.n_measured_obs.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20044" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_df.feature_name.str.contains(\"ENSG\").sum() # 40k cannonical genes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "59957" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(var_df.n_measured_obs > 1_000_000).sum() # measured means the dataset has it but doesn't mean it really measured it" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "29079" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(var_df.nnz > 100_000).sum() # very few datasets with ncRNAseq" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "census.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with cellxgene_census.open_soma() as census:\n", + " mouse = census[\"census_data\"][\"mus_musculus\"]\n", + " with mouse.axis_query(\n", + " measurement_name=\"RNA\",\n", + " obs_query=soma.AxisQuery(value_filter=\"tissue=='brain' and sex=='male' and is_primary_data==True\"),\n", + " ) as query:\n", + " var_df = query.var().concat().to_pandas().set_index(\"soma_joinid\")\n", + " n_vars = len(var_df)\n", + "\n", + " raw_n = np.zeros((n_vars,), dtype=np.int64) # accumulate number of non-zero X values\n", + " raw_sum = np.zeros((n_vars,), dtype=np.float64) # accumulate the sum of expression\n", + "\n", + " # query.X() returns an iterator of pyarrow.Table, with X data in COO format.\n", + " # You can request an indexer from the query that will map it to positional indices\n", + " indexer = query.indexer\n", + " for arrow_tbl in query.X(\"raw\").tables():\n", + " var_dim = indexer.by_var(arrow_tbl[\"soma_dim_1\"])\n", + " data = arrow_tbl[\"soma_data\"]\n", + " np.add.at(raw_n, var_dim, 1)\n", + " np.add.at(raw_sum, var_dim, data)\n", + "\n", + " with np.errstate(divide=\"ignore\", invalid=\"ignore\"):\n", + " raw_mean = raw_sum / query.n_obs\n", + " raw_mean[np.isnan(raw_mean)] = 0\n", + "\n", + " var_df = var_df.assign(raw_n=pd.Series(data=raw_n, index=var_df.index))\n", + " var_df = var_df.assign(raw_mean=pd.Series(data=raw_mean, index=var_df.index))\n", + "\n", + " display(var_df)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "scprint", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/test.ipynb b/notebooks/additional/test.ipynb similarity index 100% rename from test.ipynb rename to notebooks/additional/test.ipynb diff --git a/notebooks/additional/test_zinb1.ipynb b/notebooks/additional/test_zinb1.ipynb new file mode 100644 index 0000000..41e24b0 --- /dev/null +++ b/notebooks/additional/test_zinb1.ipynb @@ -0,0 +1,188 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn.functional as F\n", + "import torch\n", + "from torch import nn, Tensor\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def zinb(\n", + " target: Tensor,\n", + " mu: Tensor,\n", + " theta: Tensor,\n", + " pi: Tensor,\n", + " eps=1e-8,\n", + "):\n", + " \"\"\"\n", + " Computes zero-inflated negative binomial (ZINB) loss.\n", + "\n", + " This function was modified from scvi-tools.\n", + "\n", + " Args:\n", + " target (Tensor): Torch Tensor of ground truth data.\n", + " mu (Tensor): Torch Tensor of means of the negative binomial (must have positive support).\n", + " theta (Tensor): Torch Tensor of inverse dispersion parameter (must have positive support).\n", + " pi (Tensor): Torch Tensor of logits of the dropout parameter (real support).\n", + " eps (float, optional): Numerical stability constant. Defaults to 1e-8.\n", + "\n", + " Returns:\n", + " Tensor: ZINB loss value.\n", + " \"\"\"\n", + " #  uses log(sigmoid(x)) = -softplus(-x)\n", + " softplus_pi = F.softplus(-pi)\n", + " # eps to make it positive support and taking the log\n", + " log_theta_mu_eps = torch.log(theta + mu + eps)\n", + " pi_theta_log = -pi + theta * (torch.log(theta + eps) - log_theta_mu_eps)\n", + "\n", + " case_zero = F.softplus(pi_theta_log) - softplus_pi\n", + " mul_case_zero = torch.mul((target < eps).type(torch.float32), case_zero)\n", + "\n", + " case_non_zero = (\n", + " -softplus_pi\n", + " + pi_theta_log\n", + " + target * (torch.log(mu + eps) - log_theta_mu_eps)\n", + " + torch.lgamma(target + theta)\n", + " - torch.lgamma(theta)\n", + " - torch.lgamma(target + 1)\n", + " )\n", + " mul_case_non_zero = torch.mul((target > eps).type(torch.float32), case_non_zero)\n", + "\n", + " res = mul_case_zero + mul_case_non_zero\n", + " # we want to minize the loss but maximize the log likelyhood\n", + " return -res.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def zinb_sonnet(\n", + " target: Tensor,\n", + " mu: Tensor,\n", + " theta: Tensor,\n", + " pi: Tensor,\n", + " eps=1e-8,\n", + "):\n", + " \"\"\"\n", + " Computes zero-inflated negative binomial (ZINB) loss updated to improve numerical stability with sonnet\n", + "\n", + " This function is modified to improve numerical stability and avoid using lgamma.\n", + "\n", + " Args:\n", + " target (Tensor): Torch Tensor of ground truth data.\n", + " mu (Tensor): Torch Tensor of means of the negative binomial (must have positive support).\n", + " theta (Tensor): Torch Tensor of inverse dispersion parameter (must have positive support).\n", + " pi (Tensor): Torch Tensor of logits of the dropout parameter (real support).\n", + " eps (float, optional): Numerical stability constant. Defaults to 1e-8.\n", + "\n", + " Returns:\n", + " Tensor: ZINB loss value.\n", + " \"\"\"\n", + " # Compute log(1 - sigmoid(pi)) more accurately using -softplus(pi)\n", + " log_neg_pi = -F.softplus(pi)\n", + " \n", + " # Compute log(theta + mu) more accurately\n", + " log_theta_mu = torch.log(theta + mu + eps)\n", + " \n", + " # Compute log(1 + mu/theta) more accurately\n", + " log_1_plus_mu_theta = F.softplus(torch.log(mu + eps) - torch.log(theta + eps))\n", + " \n", + " # Compute log likelihood for zero values\n", + " ll_zero = F.softplus(theta * (torch.log(theta + eps) - log_theta_mu) - pi)\n", + " \n", + " # Compute log likelihood for non-zero values\n", + " ll_non_zero = (\n", + " log_neg_pi\n", + " + theta * torch.log(theta + eps)\n", + " - (theta + target) * log_theta_mu\n", + " + target * torch.log(mu + eps)\n", + " - torch.lgamma(target + 1)\n", + " + torch.lgamma(theta + target)\n", + " - torch.lgamma(theta)\n", + " )\n", + " \n", + " # Combine zero and non-zero cases\n", + " ll = torch.where(target < eps, ll_zero, ll_non_zero)\n", + " \n", + " # Return negative mean log-likelihood\n", + " return -ll.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original ZINB Loss: 1.609736680984497\n", + "Original ZINB Loss: 1.606806993484497\n", + "New ZINB Loss: 1.607421875\n" + ] + } + ], + "source": [ + "# Test both functions with the same input\n", + "THETA = 10000 # above this, nothing changes\n", + "\n", + "TARGET = [100,10,10,1,1,0,0,0]\n", + "MINPI = 0.01\n", + "MAXPI = 100\n", + "ERROR = [1,0.1,0.1,0,0,100,100,100]\n", + "\n", + "target = torch.Tensor(TARGET)\n", + "mu = torch.Tensor(TARGET)\n", + "theta = torch.Tensor([THETA]*len(TARGET))\n", + "pi = torch.Tensor([MINPI,MINPI,MINPI,MINPI,MINPI,MAXPI,MAXPI,MAXPI])\n", + "\n", + "# Test original zinb function\n", + "original_loss = zinb(target, mu, theta, pi)\n", + "print(f\"Original ZINB Loss: {original_loss.item()}\")\n", + "\n", + "# Test original zinb function with error\n", + "original_loss = zinb(target, mu+torch.Tensor(ERROR), theta, pi)\n", + "print(f\"Original ZINB Loss: {original_loss.item()}\")\n", + "\n", + "# Test updated zinb_sonnet function\n", + "new_loss = zinb_sonnet(target, mu, theta, pi)\n", + "print(f\"New ZINB Loss: {new_loss.item()}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "scprint", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/additional/update_lamin_or_cellxgene.ipynb b/notebooks/additional/update_lamin_or_cellxgene.ipynb new file mode 100644 index 0000000..8f06575 --- /dev/null +++ b/notebooks/additional/update_lamin_or_cellxgene.ipynb @@ -0,0 +1,1175 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# update lamindb and bionty..." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92m→\u001b[0m connected lamindb: jkobject/scprint\n", + "\u001b[0m" + ] + } + ], + "source": [ + "! lamin load scprint\n", + "# ! lamin migrate deploy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# we will check it works and reset the bionty sources" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "source": [ + "import lamindb as ln\n", + "import bionty as bt\n", + "from scdataloader.utils import populate_my_ontology\n", + "%load_ext autoreload\n", + "%autoreload 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "937" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(ln.Artifact.filter())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "bt.base.reset_sources()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m!\u001b[0m please reload your instance to reflect the updates!\n" + ] + } + ], + "source": [ + "bt.core.sync_all_sources_to_latest()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# load them in my personnal ontology" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedefinitionsynonymsparents
ontology_id
CL:0000000cellA Material Entity Of Anatomical Origin (Part O...None[]
CL:0000001primary cultured cellA Cultured Cell That Is Freshly Isolated From ...primary cell culture cell|unpassaged cultured ...[CL:0000010]
CL:0000002obsolete immortal cell line cellObsolete: A Cell Line Cell That Is Expected To...permanent cell line cell|continuous cell line ...[]
CL:0000003obsolete native cellObsolete. A Cell That Is Found In A Natural Se...None[]
CL:0000004obsolete cell by organismObsolete: A Classification Of Cells By The Org...None[]
...............
CL:4042007protoplasmic astrocyteAn Astrocyte With Highly Branched Protrusions,...None[CL:0000029, CL:0002605, CL:0010012]
CL:4042008fibrous astrocyteA Cell Type Located In The First Layer Of The ...None[CL:0000029, CL:2000029, CL:0000127]
CL:4042009interlaminar astrocyteAn Astrocyte Type That Presents Radial Protrus...None[CL:0000029, CL:0002605, CL:0010012]
CL:4042010pial interlaminar astrocyteAn Interlaminar Astrocyte Whose Soma Is Part O...None[CL:4042009]
CL:4042011subpial interlaminar astrocyteAn Interlaminar Astrocyte Type Whose Soma Is P...None[CL:4042009]
\n", + "

2931 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " name \\\n", + "ontology_id \n", + "CL:0000000 cell \n", + "CL:0000001 primary cultured cell \n", + "CL:0000002 obsolete immortal cell line cell \n", + "CL:0000003 obsolete native cell \n", + "CL:0000004 obsolete cell by organism \n", + "... ... \n", + "CL:4042007 protoplasmic astrocyte \n", + "CL:4042008 fibrous astrocyte \n", + "CL:4042009 interlaminar astrocyte \n", + "CL:4042010 pial interlaminar astrocyte \n", + "CL:4042011 subpial interlaminar astrocyte \n", + "\n", + " definition \\\n", + "ontology_id \n", + "CL:0000000 A Material Entity Of Anatomical Origin (Part O... \n", + "CL:0000001 A Cultured Cell That Is Freshly Isolated From ... \n", + "CL:0000002 Obsolete: A Cell Line Cell That Is Expected To... \n", + "CL:0000003 Obsolete. A Cell That Is Found In A Natural Se... \n", + "CL:0000004 Obsolete: A Classification Of Cells By The Org... \n", + "... ... \n", + "CL:4042007 An Astrocyte With Highly Branched Protrusions,... \n", + "CL:4042008 A Cell Type Located In The First Layer Of The ... \n", + "CL:4042009 An Astrocyte Type That Presents Radial Protrus... \n", + "CL:4042010 An Interlaminar Astrocyte Whose Soma Is Part O... \n", + "CL:4042011 An Interlaminar Astrocyte Type Whose Soma Is P... \n", + "\n", + " synonyms \\\n", + "ontology_id \n", + "CL:0000000 None \n", + "CL:0000001 primary cell culture cell|unpassaged cultured ... \n", + "CL:0000002 permanent cell line cell|continuous cell line ... \n", + "CL:0000003 None \n", + "CL:0000004 None \n", + "... ... \n", + "CL:4042007 None \n", + "CL:4042008 None \n", + "CL:4042009 None \n", + "CL:4042010 None \n", + "CL:4042011 None \n", + "\n", + " parents \n", + "ontology_id \n", + "CL:0000000 [] \n", + "CL:0000001 [CL:0000010] \n", + "CL:0000002 [] \n", + "CL:0000003 [] \n", + "CL:0000004 [] \n", + "... ... \n", + "CL:4042007 [CL:0000029, CL:0002605, CL:0010012] \n", + "CL:4042008 [CL:0000029, CL:2000029, CL:0000127] \n", + "CL:4042009 [CL:0000029, CL:0002605, CL:0010012] \n", + "CL:4042010 [CL:4042009] \n", + "CL:4042011 [CL:4042009] \n", + "\n", + "[2931 rows x 4 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "names = bt.CellType.public().df()\n", + "names" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92m→\u001b[0m returning existing Organism record with same name: 'unknown'\n" + ] + } + ], + "source": [ + "populate_my_ontology(organisms=[\"NCBITaxon:9544\", \"NCBITaxon:9483\", \"NCBITaxon:10090\", \"NCBITaxon:9606\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
id
16QgHNi0H42-year-old human stageHsapDv:0000136NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 10:22:33.945048+00:00
2fEzwReEA53-year-old human stageHsapDv:0000147NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 10:22:33.945198+00:00
32nEVCZzo80-year-old human stageHsapDv:0000206NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 10:22:33.945342+00:00
477LZiXev71-year-old human stageHsapDv:0000165NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:10:48.439710+00:00
52iDmILg850-year-old human stageHsapDv:0000144NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:10:48.439860+00:00
.................................
677447iQEAH2-4 year-old child stageHsapDv:0000270NoneNoneChild Stage That Refers To A Child Who Is Over...100None12024-09-09 14:54:06.875029+00:00
6782XEDd26sjuvenile stage (5-14 yo)HsapDv:0000271NoneNonePediatric Stage That Refers To A Human Who Is ...100None12024-09-09 14:54:06.875164+00:00
679JlT91ezY60-79 year-old stageHsapDv:0000272NoneNoneLate Adult Stage That Refers To An Adult Who I...100None12024-09-09 14:54:06.875290+00:00
6804RKFKLPE1-month-old stageHsapDv:0000273NoneNoneInfant Stage That Refers To An Infant Who Is O...100None12024-09-09 14:54:06.875417+00:00
6817PwM9y8dpostnatal stageHsapDv:0010000NoneNoneHuman Developmental Stage That Covers The Whol...100None12024-09-09 14:54:06.875545+00:00
\n", + "

437 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " uid name ontology_id abbr synonyms \\\n", + "id \n", + "1 6QgHNi0H 42-year-old human stage HsapDv:0000136 None None \n", + "2 fEzwReEA 53-year-old human stage HsapDv:0000147 None None \n", + "3 2nEVCZzo 80-year-old human stage HsapDv:0000206 None None \n", + "4 77LZiXev 71-year-old human stage HsapDv:0000165 None None \n", + "5 2iDmILg8 50-year-old human stage HsapDv:0000144 None None \n", + ".. ... ... ... ... ... \n", + "677 447iQEAH 2-4 year-old child stage HsapDv:0000270 None None \n", + "678 2XEDd26s juvenile stage (5-14 yo) HsapDv:0000271 None None \n", + "679 JlT91ezY 60-79 year-old stage HsapDv:0000272 None None \n", + "680 4RKFKLPE 1-month-old stage HsapDv:0000273 None None \n", + "681 7PwM9y8d postnatal stage HsapDv:0010000 None None \n", + "\n", + " description source_id run_id \\\n", + "id \n", + "1 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "2 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "3 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", + "4 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "5 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + ".. ... ... ... \n", + "677 Child Stage That Refers To A Child Who Is Over... 100 None \n", + "678 Pediatric Stage That Refers To A Human Who Is ... 100 None \n", + "679 Late Adult Stage That Refers To An Adult Who I... 100 None \n", + "680 Infant Stage That Refers To An Infant Who Is O... 100 None \n", + "681 Human Developmental Stage That Covers The Whol... 100 None \n", + "\n", + " created_by_id updated_at \n", + "id \n", + "1 1 2023-11-22 10:22:33.945048+00:00 \n", + "2 1 2023-11-22 10:22:33.945198+00:00 \n", + "3 1 2023-11-22 10:22:33.945342+00:00 \n", + "4 1 2023-11-22 11:10:48.439710+00:00 \n", + "5 1 2023-11-22 11:10:48.439860+00:00 \n", + ".. ... ... \n", + "677 1 2024-09-09 14:54:06.875029+00:00 \n", + "678 1 2024-09-09 14:54:06.875164+00:00 \n", + "679 1 2024-09-09 14:54:06.875290+00:00 \n", + "680 1 2024-09-09 14:54:06.875417+00:00 \n", + "681 1 2024-09-09 14:54:06.875545+00:00 \n", + "\n", + "[437 rows x 10 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bt.DevelopmentalStage.filter().df()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
id
325HWRj1ODunknownunknownNoneNoneNone44None12024-09-09 10:53:28.565897+00:00
\n", + "
" + ], + "text/plain": [ + " uid name ontology_id abbr synonyms description source_id \\\n", + "id \n", + "32 5HWRj1OD unknown unknown None None None 44 \n", + "\n", + " run_id created_by_id updated_at \n", + "id \n", + "32 None 1 2024-09-09 10:53:28.565897+00:00 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = bt.DevelopmentalStage.filter().df()\n", + "df[df.name==\"unknown\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bt.DevelopmentalStage.filter(id=355).delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# load the latest datasets / load datasets that were initially dropped" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
id
16QgHNi0H42-year-old human stageHsapDv:0000136NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 10:22:33.945048+00:00
2fEzwReEA53-year-old human stageHsapDv:0000147NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 10:22:33.945198+00:00
32nEVCZzo80-year-old human stageHsapDv:0000206NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 10:22:33.945342+00:00
477LZiXev71-year-old human stageHsapDv:0000165NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:10:48.439710+00:00
52iDmILg850-year-old human stageHsapDv:0000144NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:10:48.439860+00:00
63mvZclbG60-year-old human stageHsapDv:0000154NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:10:48.439989+00:00
76GYcyAiA80 year-old and over human stageHsapDv:0000095NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 11:10:48.440112+00:00
82YPivzq577-year-old human stageHsapDv:0000171NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:10:48.440233+00:00
93MeD86pe82-year-old human stageHsapDv:0000208NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 11:10:48.440354+00:00
105KlIAuyM87-year-old human stageHsapDv:0000213NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 11:10:48.440474+00:00
113p5M36ez72-year-old human stageHsapDv:0000166NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:10:48.440595+00:00
123i4SGvgA45-year-old human stageHsapDv:0000139NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:11:34.327789+00:00
13glnFPgeh68-year-old human stageHsapDv:0000162NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.327912+00:00
143J3fzFpO51-year-old human stageHsapDv:0000145NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:11:34.328016+00:00
155lwKjZ3t43-year-old human stageHsapDv:0000137NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.328114+00:00
164BUoLKl041-year-old human stageHsapDv:0000135NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.328215+00:00
174pPeImFY55-year-old human stageHsapDv:0000149NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:11:34.328314+00:00
187dWnm4CL27-year-old human stageHsapDv:0000121NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.328413+00:00
195q64GXx169-year-old human stageHsapDv:0000163NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.328514+00:00
205rviPulP74-year-old human stageHsapDv:0000168NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:11:34.328612+00:00
\n", + "
" + ], + "text/plain": [ + " uid name ontology_id abbr synonyms \\\n", + "id \n", + "1 6QgHNi0H 42-year-old human stage HsapDv:0000136 None None \n", + "2 fEzwReEA 53-year-old human stage HsapDv:0000147 None None \n", + "3 2nEVCZzo 80-year-old human stage HsapDv:0000206 None None \n", + "4 77LZiXev 71-year-old human stage HsapDv:0000165 None None \n", + "5 2iDmILg8 50-year-old human stage HsapDv:0000144 None None \n", + "6 3mvZclbG 60-year-old human stage HsapDv:0000154 None None \n", + "7 6GYcyAiA 80 year-old and over human stage HsapDv:0000095 None None \n", + "8 2YPivzq5 77-year-old human stage HsapDv:0000171 None None \n", + "9 3MeD86pe 82-year-old human stage HsapDv:0000208 None None \n", + "10 5KlIAuyM 87-year-old human stage HsapDv:0000213 None None \n", + "11 3p5M36ez 72-year-old human stage HsapDv:0000166 None None \n", + "12 3i4SGvgA 45-year-old human stage HsapDv:0000139 None None \n", + "13 glnFPgeh 68-year-old human stage HsapDv:0000162 None None \n", + "14 3J3fzFpO 51-year-old human stage HsapDv:0000145 None None \n", + "15 5lwKjZ3t 43-year-old human stage HsapDv:0000137 None None \n", + "16 4BUoLKl0 41-year-old human stage HsapDv:0000135 None None \n", + "17 4pPeImFY 55-year-old human stage HsapDv:0000149 None None \n", + "18 7dWnm4CL 27-year-old human stage HsapDv:0000121 None None \n", + "19 5q64GXx1 69-year-old human stage HsapDv:0000163 None None \n", + "20 5rviPulP 74-year-old human stage HsapDv:0000168 None None \n", + "\n", + " description source_id run_id \\\n", + "id \n", + "1 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "2 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "3 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", + "4 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "5 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "6 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "7 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", + "8 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "9 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", + "10 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", + "11 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "12 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "13 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "14 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "15 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "16 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "17 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", + "18 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "19 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "20 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + "\n", + " created_by_id updated_at \n", + "id \n", + "1 1 2023-11-22 10:22:33.945048+00:00 \n", + "2 1 2023-11-22 10:22:33.945198+00:00 \n", + "3 1 2023-11-22 10:22:33.945342+00:00 \n", + "4 1 2023-11-22 11:10:48.439710+00:00 \n", + "5 1 2023-11-22 11:10:48.439860+00:00 \n", + "6 1 2023-11-22 11:10:48.439989+00:00 \n", + "7 1 2023-11-22 11:10:48.440112+00:00 \n", + "8 1 2023-11-22 11:10:48.440233+00:00 \n", + "9 1 2023-11-22 11:10:48.440354+00:00 \n", + "10 1 2023-11-22 11:10:48.440474+00:00 \n", + "11 1 2023-11-22 11:10:48.440595+00:00 \n", + "12 1 2023-11-22 11:11:34.327789+00:00 \n", + "13 1 2023-11-22 11:11:34.327912+00:00 \n", + "14 1 2023-11-22 11:11:34.328016+00:00 \n", + "15 1 2023-11-22 11:11:34.328114+00:00 \n", + "16 1 2023-11-22 11:11:34.328215+00:00 \n", + "17 1 2023-11-22 11:11:34.328314+00:00 \n", + "18 1 2023-11-22 11:11:34.328413+00:00 \n", + "19 1 2023-11-22 11:11:34.328514+00:00 \n", + "20 1 2023-11-22 11:11:34.328612+00:00 " + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bt.DevelopmentalStage.filter().df().head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['HsapDv:0000000', 'HsapDv:0000240', 'HsapDv:0000267',\n", + " 'HsapDv:0000226', 'HsapDv:0000258', 'HsapDv:0010000',\n", + " 'HsapDv:0000001'], dtype=object)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bt.DevelopmentalStage.public().df().loc[\"HsapDv:0000144\"].parents" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2iDmILg8\n", + "\n", + "\n", + "\n", + "2iDmILg8\n", + "\n", + " <50-year-old human stage<BR/><FONT COLOR="GREY" POINT-SIZE="10" FACE="Monospace">uid=2iDmILg8</FONT>>\n", + "\n", + "\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bt.DevelopmentalStage.filter(ontology_id=\"HsapDv:0000144\").one().view_parents()#.df(include=[\"parents\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "bt.DevelopmentalStage.import_from_source()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "scprint", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/additional/updates_on_grn.ipynb b/notebooks/additional/updates_on_grn.ipynb index f6f8e54..53d5b81 100644 --- a/notebooks/additional/updates_on_grn.ipynb +++ b/notebooks/additional/updates_on_grn.ipynb @@ -42,7 +42,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "💡 connected lamindb: jkobject/test\n" + "\u001b[92m→\u001b[0m connected lamindb: jkobject/scprint\n" ] } ], From e69124afd021088ce578097ab3aa88b3ef976e45 Mon Sep 17 00:00:00 2001 From: jkobject Date: Tue, 10 Sep 2024 14:07:21 +0200 Subject: [PATCH 3/6] add ruff and uv --- Makefile | 12 +- .../update_lamin_or_cellxgene.ipynb | 1067 ++-- pyproject.toml | 28 +- scprint/__main__.py | 14 +- scprint/cli.py | 22 +- scprint/explainer/attention_flow.py | 7 +- scprint/model/decoders.py | 5 +- scprint/model/encoders.py | 7 +- scprint/model/flash_attn/__init__.py | 4 +- scprint/model/flash_attn/block.py | 4 +- scprint/model/flash_attn/flashattention.py | 3 +- scprint/model/flash_attn/flashformer.py | 14 +- scprint/model/flash_attn/layer_norm.py | 2 +- scprint/model/flash_attn/mha.py | 5 +- scprint/model/flash_attn/mlp.py | 3 +- scprint/model/hyper_attn/__init__.py | 1 - .../model/hyper_attn/angular_lsh_triton.py | 2 + scprint/model/hyper_attn/attn_utils.py | 1 + scprint/model/hyper_attn/hyperattention.py | 1 + scprint/model/hyper_attn/hyperformer.py | 5 +- scprint/model/linear_transformer.py | 2 +- scprint/model/loss.py | 7 +- scprint/model/model.py | 66 +- scprint/model/utils.py | 24 +- scprint/tasks/__init__.py | 2 +- scprint/tasks/cell_emb.py | 34 +- scprint/tasks/denoise.py | 28 +- scprint/tasks/grn.py | 55 +- scprint/tasks/grn_scgpt.py | 4 +- scprint/tasks/knn_smooth.py | 10 +- scprint/tasks/tmfg.py | 3 +- scprint/tokenizers/__init__.py | 2 +- scprint/tokenizers/embedder.py | 13 +- scprint/tokenizers/protein_embedder.py | 4 +- scprint/trainer/trainer.py | 3 +- scprint/utils/__init__.py | 2 +- scprint/utils/get_seq.py | 17 +- scprint/utils/utils.py | 26 +- tests/conftest.py | 5 +- tests/test_base.py | 13 +- uv.lock | 5066 +++++++++++++++++ 41 files changed, 5756 insertions(+), 837 deletions(-) create mode 100644 uv.lock diff --git a/Makefile b/Makefile index 602186c..9729e74 100644 --- a/Makefile +++ b/Makefile @@ -26,16 +26,16 @@ install: ## Install the project in dev mode. .PHONY: fmt fmt: ## Format code using black & isort. - $(ENV_PREFIX)isort scprint/ - $(ENV_PREFIX)black -l 88 scprint/ - $(ENV_PREFIX)black -l 88 tests/ + $(ENV_PREFIX)ruff check --fix scprint/ + $(ENV_PREFIX)ruff check --fix tests/ + $(ENV_PREFIX)ruff format tests/ + $(ENV_PREFIX)ruff format scprint/ .PHONY: lint lint: ## Run pep8, black, mypy linters. #most are due to flashattention... - $(ENV_PREFIX)flake8 --ignore=E501,E203,E266,E265,W503,F401,F403,F841,E731,E722,E402 scprint/ - $(ENV_PREFIX)black -l 88 --check scprint/ - $(ENV_PREFIX)black -l 88 --check tests/ + $(ENV_PREFIX)ruff check --fix scprint/ + $(ENV_PREFIX)ruff check --fix tests/ .PHONY: test test: lint ## Run tests and generate coverage report. diff --git a/notebooks/additional/update_lamin_or_cellxgene.ipynb b/notebooks/additional/update_lamin_or_cellxgene.ipynb index 8f06575..ffcf766 100644 --- a/notebooks/additional/update_lamin_or_cellxgene.ipynb +++ b/notebooks/additional/update_lamin_or_cellxgene.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -24,8 +24,34 @@ } ], "source": [ - "! lamin load scprint\n", - "# ! lamin migrate deploy" + "! lamin load scprint" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36;1mOperations to perform:\u001b[0m\n", + "\u001b[1m Apply all migrations: \u001b[0mbionty, lnschema_core\n", + "Running pre-migrate handlers for application lnschema_core\n", + "Running pre-migrate handlers for application bionty\n", + "\u001b[36;1mRunning migrations:\u001b[0m\n", + " Applying lnschema_core.0065_remove_collection_feature_sets_and_more...\u001b[32;1m OK (1.386s)\u001b[0m\n", + " Applying lnschema_core.0066_alter_artifact__feature_values_and_more...\u001b[32;1m OK (3.067s)\u001b[0m\n", + " Applying bionty.0038_alter_artifactcellline_created_by_and_more...\u001b[32;1m OK (4.517s)\u001b[0m\n", + " Applying bionty.0039_alter_cellline_source_alter_cellmarker_source_and_more...\u001b[32;1m OK (1.847s)\u001b[0m\n", + "Running post-migrate handlers for application lnschema_core\n", + "Running post-migrate handlers for application bionty\n" + ] + } + ], + "source": [ + "! lamin migrate deploy" ] }, { @@ -37,15 +63,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" + "\u001b[92m→\u001b[0m connected lamindb: jkobject/scprint\n" ] } ], @@ -321,367 +346,175 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "bt.Tissue.import_from_source() \n", + "bt.DevelopmentalStage.import_from_source() " + ] + }, + { + "cell_type": "code", + "execution_count": 62, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
id
16QgHNi0H42-year-old human stageHsapDv:0000136NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 10:22:33.945048+00:00
2fEzwReEA53-year-old human stageHsapDv:0000147NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 10:22:33.945198+00:00
32nEVCZzo80-year-old human stageHsapDv:0000206NoneNoneAged Stage That Refers To An Adult Who Is Over...44None12023-11-22 10:22:33.945342+00:00
477LZiXev71-year-old human stageHsapDv:0000165NoneNoneAdult Stage That Refers To An Adult Who Is Ove...44None12023-11-22 11:10:48.439710+00:00
52iDmILg850-year-old human stageHsapDv:0000144NoneNoneMiddle Aged Stage That Refers To An Adult Who ...44None12023-11-22 11:10:48.439860+00:00
.................................
677447iQEAH2-4 year-old child stageHsapDv:0000270NoneNoneChild Stage That Refers To A Child Who Is Over...100None12024-09-09 14:54:06.875029+00:00
6782XEDd26sjuvenile stage (5-14 yo)HsapDv:0000271NoneNonePediatric Stage That Refers To A Human Who Is ...100None12024-09-09 14:54:06.875164+00:00
679JlT91ezY60-79 year-old stageHsapDv:0000272NoneNoneLate Adult Stage That Refers To An Adult Who I...100None12024-09-09 14:54:06.875290+00:00
6804RKFKLPE1-month-old stageHsapDv:0000273NoneNoneInfant Stage That Refers To An Infant Who Is O...100None12024-09-09 14:54:06.875417+00:00
6817PwM9y8dpostnatal stageHsapDv:0010000NoneNoneHuman Developmental Stage That Covers The Whol...100None12024-09-09 14:54:06.875545+00:00
\n", - "

437 rows × 10 columns

\n", - "
" - ], "text/plain": [ - " uid name ontology_id abbr synonyms \\\n", - "id \n", - "1 6QgHNi0H 42-year-old human stage HsapDv:0000136 None None \n", - "2 fEzwReEA 53-year-old human stage HsapDv:0000147 None None \n", - "3 2nEVCZzo 80-year-old human stage HsapDv:0000206 None None \n", - "4 77LZiXev 71-year-old human stage HsapDv:0000165 None None \n", - "5 2iDmILg8 50-year-old human stage HsapDv:0000144 None None \n", - ".. ... ... ... ... ... \n", - "677 447iQEAH 2-4 year-old child stage HsapDv:0000270 None None \n", - "678 2XEDd26s juvenile stage (5-14 yo) HsapDv:0000271 None None \n", - "679 JlT91ezY 60-79 year-old stage HsapDv:0000272 None None \n", - "680 4RKFKLPE 1-month-old stage HsapDv:0000273 None None \n", - "681 7PwM9y8d postnatal stage HsapDv:0010000 None None \n", - "\n", - " description source_id run_id \\\n", - "id \n", - "1 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "2 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "3 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", - "4 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "5 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - ".. ... ... ... \n", - "677 Child Stage That Refers To A Child Who Is Over... 100 None \n", - "678 Pediatric Stage That Refers To A Human Who Is ... 100 None \n", - "679 Late Adult Stage That Refers To An Adult Who I... 100 None \n", - "680 Infant Stage That Refers To An Infant Who Is O... 100 None \n", - "681 Human Developmental Stage That Covers The Whol... 100 None \n", - "\n", - " created_by_id updated_at \n", - "id \n", - "1 1 2023-11-22 10:22:33.945048+00:00 \n", - "2 1 2023-11-22 10:22:33.945198+00:00 \n", - "3 1 2023-11-22 10:22:33.945342+00:00 \n", - "4 1 2023-11-22 11:10:48.439710+00:00 \n", - "5 1 2023-11-22 11:10:48.439860+00:00 \n", - ".. ... ... \n", - "677 1 2024-09-09 14:54:06.875029+00:00 \n", - "678 1 2024-09-09 14:54:06.875164+00:00 \n", - "679 1 2024-09-09 14:54:06.875290+00:00 \n", - "680 1 2024-09-09 14:54:06.875417+00:00 \n", - "681 1 2024-09-09 14:54:06.875545+00:00 \n", - "\n", - "[437 rows x 10 columns]" + "name intra-acinar venule\n", + "definition A Venule That Receives Drainage From The Capil...\n", + "synonyms None\n", + "parents [UBERON:8600024, UBERON:0008874, UBERON:0010369]\n", + "Name: UBERON:8600061, dtype: object" ] }, - "execution_count": 4, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bt.DevelopmentalStage.filter().df()" + "bt.Tissue.public().df().loc[\"UBERON:8600061\"]" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "names = bt.Tissue.public().df().index\n", + "records = bt.Tissue.from_values(names, field=\"ontology_id\")\n", + "ln.save(records)\n", + "#bt.Tissue(name=\"unknown\", ontology_id=\"unknown\").save()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
id
325HWRj1ODunknownunknownNoneNoneNone44None12024-09-09 10:53:28.565897+00:00
\n", - "
" - ], - "text/plain": [ - " uid name ontology_id abbr synonyms description source_id \\\n", - "id \n", - "32 5HWRj1OD unknown unknown None None None 44 \n", - "\n", - " run_id created_by_id updated_at \n", - "id \n", - "32 None 1 2024-09-09 10:53:28.565897+00:00 " + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1BNq2HpI\n", + "\n", + "\n", + "\n", + "1BNq2HpI\n", + "\n", + "intra-acinar venule\n", + "uid=1BNq2HpI\n", + "\n", + "\n", + "\n", + "6XhlhdZp\n", + "\n", + "pulmonary venule\n", + "uid=6XhlhdZp\n", + "\n", + "\n", + "\n", + "6XhlhdZp->1BNq2HpI\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, - "execution_count": 3, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "df = bt.DevelopmentalStage.filter().df()\n", - "df[df.name==\"unknown\"]" + "bt.Tissue.filter(ontology_id=\"UBERON:8600061\").one().view_parents()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1BNq2HpI\n", + "\n", + "\n", + "\n", + "1BNq2HpI\n", + "\n", + "intra-acinar venule\n", + "uid=1BNq2HpI\n", + "\n", + "\n", + "\n", + "6XhlhdZp\n", + "\n", + "pulmonary venule\n", + "uid=6XhlhdZp\n", + "\n", + "\n", + "\n", + "6XhlhdZp->1BNq2HpI\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "bt.DevelopmentalStage.filter(id=355).delete()" + "bt.Tissue.from_values([\"UBERON:8600061\"], field=\"ontology_id\")[0].view_parents()" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 72, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['UBERON:8600024', 'UBERON:0008874', 'UBERON:0010369'], dtype=object)" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# load the latest datasets / load datasets that were initially dropped" + "bt.Tissue.public().df().loc[\"UBERON:8600061\"].parents" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -705,6 +538,7 @@ " \n", " \n", " \n", + " parents__ontology_id\n", " uid\n", " name\n", " ontology_id\n", @@ -716,363 +550,275 @@ " created_by_id\n", " updated_at\n", " \n", - " \n", - " id\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " 1\n", - " 6QgHNi0H\n", - " 42-year-old human stage\n", - " HsapDv:0000136\n", + " 27\n", + " [UBERON:0001560, UBERON:0005156]\n", + " 20geV8TQ\n", + " uterine cervix\n", + " UBERON:0000002\n", " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 10:22:33.945048+00:00\n", - " \n", - " \n", - " 2\n", - " fEzwReEA\n", - " 53-year-old human stage\n", - " HsapDv:0000147\n", - " None\n", - " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 10:22:33.945198+00:00\n", - " \n", - " \n", - " 3\n", - " 2nEVCZzo\n", - " 80-year-old human stage\n", - " HsapDv:0000206\n", - " None\n", - " None\n", - " Aged Stage That Refers To An Adult Who Is Over...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 10:22:33.945342+00:00\n", - " \n", - " \n", - " 4\n", - " 77LZiXev\n", - " 71-year-old human stage\n", - " HsapDv:0000165\n", - " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " neck of uterus|uterine cervix|cervical canal o...\n", + " Lower, Narrow Portion Of The Uterus Where It J...\n", + " 24.0\n", " None\n", " 1\n", - " 2023-11-22 11:10:48.439710+00:00\n", + " 2023-11-22 12:56:57.143896+00:00\n", " \n", " \n", - " 5\n", - " 2iDmILg8\n", - " 50-year-old human stage\n", - " HsapDv:0000144\n", - " None\n", + " 28\n", + " [UBERON:0004121, UBERON:0002268, UBERON:001031...\n", + " 7adwnYzJ\n", + " nose\n", + " UBERON:0000004\n", " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", + " nasal sac|peripheral olfactory organ|nose\n", + " The Olfactory Organ Of Vertebrates, Consisting...\n", + " 24.0\n", " None\n", " 1\n", - " 2023-11-22 11:10:48.439860+00:00\n", + " 2023-11-22 12:56:57.143959+00:00\n", " \n", " \n", - " 6\n", - " 3mvZclbG\n", - " 60-year-old human stage\n", - " HsapDv:0000154\n", - " None\n", + " 29\n", + " [UBERON:0004119, UBERON:0034922]\n", + " 1H8ChOUN\n", + " islet of Langerhans\n", + " UBERON:0000006\n", " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", + " pancreatic insula|pancreatic islet\n", + " The Clusters Of Hormone-Producing Cells That A...\n", + " 24.0\n", " None\n", " 1\n", - " 2023-11-22 11:10:48.439989+00:00\n", + " 2023-11-22 12:56:57.144013+00:00\n", " \n", " \n", - " 7\n", - " 6GYcyAiA\n", - " 80 year-old and over human stage\n", - " HsapDv:0000095\n", + " 30\n", + " [UBERON:0004121, UBERON:0034944]\n", + " 4At9Dys5\n", + " zone of skin\n", + " UBERON:0000014\n", " None\n", - " None\n", - " Aged Stage That Refers To An Adult Who Is Over...\n", - " 44\n", + " skin|skin region|portion of skin|skin zone|reg...\n", + " Any Portion Of The Organ That Covers That Body...\n", + " 24.0\n", " None\n", " 1\n", - " 2023-11-22 11:10:48.440112+00:00\n", + " 2023-11-22 12:56:57.144065+00:00\n", " \n", " \n", - " 8\n", - " 2YPivzq5\n", - " 77-year-old human stage\n", - " HsapDv:0000171\n", - " None\n", + " 31\n", + " [UBERON:0004119, UBERON:0000471]\n", + " 6Pa15wyu\n", + " endocrine pancreas\n", + " UBERON:0000016\n", " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " endocrine pancreas|pars endocrina pancreatis\n", + " The Part Of The Pancreas That Is Part Of The E...\n", + " 24.0\n", " None\n", " 1\n", - " 2023-11-22 11:10:48.440233+00:00\n", + " 2023-11-22 12:56:57.144116+00:00\n", " \n", " \n", - " 9\n", - " 3MeD86pe\n", - " 82-year-old human stage\n", - " HsapDv:0000208\n", - " None\n", - " None\n", - " Aged Stage That Refers To An Adult Who Is Over...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:10:48.440354+00:00\n", - " \n", - " \n", - " 10\n", - " 5KlIAuyM\n", - " 87-year-old human stage\n", - " HsapDv:0000213\n", - " None\n", - " None\n", - " Aged Stage That Refers To An Adult Who Is Over...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:10:48.440474+00:00\n", - " \n", - " \n", - " 11\n", - " 3p5M36ez\n", - " 72-year-old human stage\n", - " HsapDv:0000166\n", - " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:10:48.440595+00:00\n", - " \n", - " \n", - " 12\n", - " 3i4SGvgA\n", - " 45-year-old human stage\n", - " HsapDv:0000139\n", - " None\n", - " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:11:34.327789+00:00\n", - " \n", - " \n", - " 13\n", - " glnFPgeh\n", - " 68-year-old human stage\n", - " HsapDv:0000162\n", - " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:11:34.327912+00:00\n", - " \n", - " \n", - " 14\n", - " 3J3fzFpO\n", - " 51-year-old human stage\n", - " HsapDv:0000145\n", - " None\n", - " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:11:34.328016+00:00\n", - " \n", - " \n", - " 15\n", - " 5lwKjZ3t\n", - " 43-year-old human stage\n", - " HsapDv:0000137\n", - " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", - " None\n", - " 1\n", - " 2023-11-22 11:11:34.328114+00:00\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", - " 16\n", - " 4BUoLKl0\n", - " 41-year-old human stage\n", - " HsapDv:0000135\n", + " 15571\n", + " [UBERON:8600030]\n", + " 2Odu6v1J\n", + " chorionic terminal villous capillary\n", + " UBERON:8600041\n", " None\n", " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " A Capillary That Is Part Of A Chorionic Termin...\n", + " 96.0\n", " None\n", " 1\n", - " 2023-11-22 11:11:34.328215+00:00\n", + " 2024-09-09 10:50:12.721936+00:00\n", " \n", " \n", - " 17\n", - " 4pPeImFY\n", - " 55-year-old human stage\n", - " HsapDv:0000149\n", - " None\n", + " 15574\n", + " [UBERON:8600043]\n", + " 3y3Ugd1z\n", + " left lateral wall of urinary bladder\n", + " UBERON:8600044\n", " None\n", - " Middle Aged Stage That Refers To An Adult Who ...\n", - " 44\n", + " left wall of urinary bladder\n", + " A Lateral Wall Of The Urinary Bladder That Is ...\n", + " 96.0\n", " None\n", " 1\n", - " 2023-11-22 11:11:34.328314+00:00\n", + " 2024-09-09 10:50:12.722297+00:00\n", " \n", " \n", - " 18\n", - " 7dWnm4CL\n", - " 27-year-old human stage\n", - " HsapDv:0000121\n", + " 15575\n", + " [UBERON:8600043]\n", + " 3RQjC3wG\n", + " right lateral wall of urinary bladder\n", + " UBERON:8600045\n", " None\n", - " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " right wall of urinary bladder\n", + " A Lateral Wall Of The Urinary Bladder That Is ...\n", + " 96.0\n", " None\n", " 1\n", - " 2023-11-22 11:11:34.328413+00:00\n", + " 2024-09-09 10:50:12.722417+00:00\n", " \n", " \n", - " 19\n", - " 5q64GXx1\n", - " 69-year-old human stage\n", - " HsapDv:0000163\n", + " 15591\n", + " [UBERON:8600024]\n", + " 1BNq2HpI\n", + " intra-acinar venule\n", + " UBERON:8600061\n", " None\n", " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " A Venule That Receives Drainage From The Capil...\n", + " 96.0\n", " None\n", " 1\n", - " 2023-11-22 11:11:34.328514+00:00\n", + " 2024-09-09 10:50:12.724339+00:00\n", " \n", " \n", - " 20\n", - " 5rviPulP\n", - " 74-year-old human stage\n", - " HsapDv:0000168\n", + " 15597\n", + " [UBERON:8600024]\n", + " HNELNNmR\n", + " bronchial venule\n", + " UBERON:8600067\n", " None\n", " None\n", - " Adult Stage That Refers To An Adult Who Is Ove...\n", - " 44\n", + " A Venule That Is Tributary Of The Bronchial Ve...\n", + " 96.0\n", " None\n", " 1\n", - " 2023-11-22 11:11:34.328612+00:00\n", + " 2024-09-09 10:50:12.725057+00:00\n", " \n", " \n", "\n", + "

566 rows × 11 columns

\n", "" ], "text/plain": [ - " uid name ontology_id abbr synonyms \\\n", - "id \n", - "1 6QgHNi0H 42-year-old human stage HsapDv:0000136 None None \n", - "2 fEzwReEA 53-year-old human stage HsapDv:0000147 None None \n", - "3 2nEVCZzo 80-year-old human stage HsapDv:0000206 None None \n", - "4 77LZiXev 71-year-old human stage HsapDv:0000165 None None \n", - "5 2iDmILg8 50-year-old human stage HsapDv:0000144 None None \n", - "6 3mvZclbG 60-year-old human stage HsapDv:0000154 None None \n", - "7 6GYcyAiA 80 year-old and over human stage HsapDv:0000095 None None \n", - "8 2YPivzq5 77-year-old human stage HsapDv:0000171 None None \n", - "9 3MeD86pe 82-year-old human stage HsapDv:0000208 None None \n", - "10 5KlIAuyM 87-year-old human stage HsapDv:0000213 None None \n", - "11 3p5M36ez 72-year-old human stage HsapDv:0000166 None None \n", - "12 3i4SGvgA 45-year-old human stage HsapDv:0000139 None None \n", - "13 glnFPgeh 68-year-old human stage HsapDv:0000162 None None \n", - "14 3J3fzFpO 51-year-old human stage HsapDv:0000145 None None \n", - "15 5lwKjZ3t 43-year-old human stage HsapDv:0000137 None None \n", - "16 4BUoLKl0 41-year-old human stage HsapDv:0000135 None None \n", - "17 4pPeImFY 55-year-old human stage HsapDv:0000149 None None \n", - "18 7dWnm4CL 27-year-old human stage HsapDv:0000121 None None \n", - "19 5q64GXx1 69-year-old human stage HsapDv:0000163 None None \n", - "20 5rviPulP 74-year-old human stage HsapDv:0000168 None None \n", + " parents__ontology_id uid \\\n", + "27 [UBERON:0001560, UBERON:0005156] 20geV8TQ \n", + "28 [UBERON:0004121, UBERON:0002268, UBERON:001031... 7adwnYzJ \n", + "29 [UBERON:0004119, UBERON:0034922] 1H8ChOUN \n", + "30 [UBERON:0004121, UBERON:0034944] 4At9Dys5 \n", + "31 [UBERON:0004119, UBERON:0000471] 6Pa15wyu \n", + "... ... ... \n", + "15571 [UBERON:8600030] 2Odu6v1J \n", + "15574 [UBERON:8600043] 3y3Ugd1z \n", + "15575 [UBERON:8600043] 3RQjC3wG \n", + "15591 [UBERON:8600024] 1BNq2HpI \n", + "15597 [UBERON:8600024] HNELNNmR \n", + "\n", + " name ontology_id abbr \\\n", + "27 uterine cervix UBERON:0000002 None \n", + "28 nose UBERON:0000004 None \n", + "29 islet of Langerhans UBERON:0000006 None \n", + "30 zone of skin UBERON:0000014 None \n", + "31 endocrine pancreas UBERON:0000016 None \n", + "... ... ... ... \n", + "15571 chorionic terminal villous capillary UBERON:8600041 None \n", + "15574 left lateral wall of urinary bladder UBERON:8600044 None \n", + "15575 right lateral wall of urinary bladder UBERON:8600045 None \n", + "15591 intra-acinar venule UBERON:8600061 None \n", + "15597 bronchial venule UBERON:8600067 None \n", + "\n", + " synonyms \\\n", + "27 neck of uterus|uterine cervix|cervical canal o... \n", + "28 nasal sac|peripheral olfactory organ|nose \n", + "29 pancreatic insula|pancreatic islet \n", + "30 skin|skin region|portion of skin|skin zone|reg... \n", + "31 endocrine pancreas|pars endocrina pancreatis \n", + "... ... \n", + "15571 None \n", + "15574 left wall of urinary bladder \n", + "15575 right wall of urinary bladder \n", + "15591 None \n", + "15597 None \n", + "\n", + " description source_id run_id \\\n", + "27 Lower, Narrow Portion Of The Uterus Where It J... 24.0 None \n", + "28 The Olfactory Organ Of Vertebrates, Consisting... 24.0 None \n", + "29 The Clusters Of Hormone-Producing Cells That A... 24.0 None \n", + "30 Any Portion Of The Organ That Covers That Body... 24.0 None \n", + "31 The Part Of The Pancreas That Is Part Of The E... 24.0 None \n", + "... ... ... ... \n", + "15571 A Capillary That Is Part Of A Chorionic Termin... 96.0 None \n", + "15574 A Lateral Wall Of The Urinary Bladder That Is ... 96.0 None \n", + "15575 A Lateral Wall Of The Urinary Bladder That Is ... 96.0 None \n", + "15591 A Venule That Receives Drainage From The Capil... 96.0 None \n", + "15597 A Venule That Is Tributary Of The Bronchial Ve... 96.0 None \n", "\n", - " description source_id run_id \\\n", - "id \n", - "1 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "2 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "3 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", - "4 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "5 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "6 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "7 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", - "8 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "9 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", - "10 Aged Stage That Refers To An Adult Who Is Over... 44 None \n", - "11 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "12 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "13 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "14 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "15 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "16 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "17 Middle Aged Stage That Refers To An Adult Who ... 44 None \n", - "18 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "19 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", - "20 Adult Stage That Refers To An Adult Who Is Ove... 44 None \n", + " created_by_id updated_at \n", + "27 1 2023-11-22 12:56:57.143896+00:00 \n", + "28 1 2023-11-22 12:56:57.143959+00:00 \n", + "29 1 2023-11-22 12:56:57.144013+00:00 \n", + "30 1 2023-11-22 12:56:57.144065+00:00 \n", + "31 1 2023-11-22 12:56:57.144116+00:00 \n", + "... ... ... \n", + "15571 1 2024-09-09 10:50:12.721936+00:00 \n", + "15574 1 2024-09-09 10:50:12.722297+00:00 \n", + "15575 1 2024-09-09 10:50:12.722417+00:00 \n", + "15591 1 2024-09-09 10:50:12.724339+00:00 \n", + "15597 1 2024-09-09 10:50:12.725057+00:00 \n", "\n", - " created_by_id updated_at \n", - "id \n", - "1 1 2023-11-22 10:22:33.945048+00:00 \n", - "2 1 2023-11-22 10:22:33.945198+00:00 \n", - "3 1 2023-11-22 10:22:33.945342+00:00 \n", - "4 1 2023-11-22 11:10:48.439710+00:00 \n", - "5 1 2023-11-22 11:10:48.439860+00:00 \n", - "6 1 2023-11-22 11:10:48.439989+00:00 \n", - "7 1 2023-11-22 11:10:48.440112+00:00 \n", - "8 1 2023-11-22 11:10:48.440233+00:00 \n", - "9 1 2023-11-22 11:10:48.440354+00:00 \n", - "10 1 2023-11-22 11:10:48.440474+00:00 \n", - "11 1 2023-11-22 11:10:48.440595+00:00 \n", - "12 1 2023-11-22 11:11:34.327789+00:00 \n", - "13 1 2023-11-22 11:11:34.327912+00:00 \n", - "14 1 2023-11-22 11:11:34.328016+00:00 \n", - "15 1 2023-11-22 11:11:34.328114+00:00 \n", - "16 1 2023-11-22 11:11:34.328215+00:00 \n", - "17 1 2023-11-22 11:11:34.328314+00:00 \n", - "18 1 2023-11-22 11:11:34.328413+00:00 \n", - "19 1 2023-11-22 11:11:34.328514+00:00 \n", - "20 1 2023-11-22 11:11:34.328612+00:00 " + "[566 rows x 11 columns]" ] }, - "execution_count": 78, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bt.DevelopmentalStage.filter().df().head(20)" + "bt.Tissue.filter().df(include=[\"parents__ontology_id\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "ename": "ProtectedError", + "evalue": "(\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mProtectedError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[11], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [i\u001b[38;5;241m.\u001b[39mdelete() \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\n", + "Cell \u001b[0;32mIn[11], line 1\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[43mi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/lamindb/_record.py:623\u001b[0m, in \u001b[0;36mdelete\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 621\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnew latest version is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_latest\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 622\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 623\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mRecord\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/base.py:1182\u001b[0m, in \u001b[0;36mModel.delete\u001b[0;34m(self, using, keep_parents)\u001b[0m\n\u001b[1;32m 1180\u001b[0m using \u001b[38;5;241m=\u001b[39m using \u001b[38;5;129;01mor\u001b[39;00m router\u001b[38;5;241m.\u001b[39mdb_for_write(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, instance\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 1181\u001b[0m collector \u001b[38;5;241m=\u001b[39m Collector(using\u001b[38;5;241m=\u001b[39musing, origin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m-> 1182\u001b[0m \u001b[43mcollector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcollect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeep_parents\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeep_parents\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m collector\u001b[38;5;241m.\u001b[39mdelete()\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/deletion.py:355\u001b[0m, in \u001b[0;36mCollector.collect\u001b[0;34m(self, objs, source, nullable, collect_related, source_attr, reverse_dependency, keep_parents, fail_on_restricted)\u001b[0m\n\u001b[1;32m 353\u001b[0m protected_objects[key] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m error\u001b[38;5;241m.\u001b[39mprotected_objects\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m protected_objects:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ProtectedError(\n\u001b[1;32m 356\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot delete some instances of model \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m because they are \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 357\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreferenced through protected foreign keys: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 358\u001b[0m \u001b[38;5;241m%\u001b[39m (\n\u001b[1;32m 359\u001b[0m model\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m,\n\u001b[1;32m 360\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(protected_objects),\n\u001b[1;32m 361\u001b[0m ),\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28mset\u001b[39m(chain\u001b[38;5;241m.\u001b[39mfrom_iterable(protected_objects\u001b[38;5;241m.\u001b[39mvalues())),\n\u001b[1;32m 363\u001b[0m )\n\u001b[1;32m 364\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m related_model, related_fields \u001b[38;5;129;01min\u001b[39;00m model_fast_deletes\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 365\u001b[0m batches \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_del_batches(new_objs, related_fields)\n", + "\u001b[0;31mProtectedError\u001b[0m: (\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})" + ] + } + ], + "source": [ + "[i.delete() for i in bt.DevelopmentalStage.filter()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# load the latest datasets / load datasets that were initially dropped" ] }, { @@ -1099,7 +845,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1138,11 +884,104 @@ "cell_type": "code", "execution_count": 9, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bt.DevelopmentalStage.filter(ontology_id=\"HsapDv:0000144\").one().parents.filter()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ - "bt.DevelopmentalStage.import_from_source()" + "bt.DevelopmentalStage.import_from_source(update=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "ename": "ProtectedError", + "evalue": "(\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mProtectedError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[25], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [i\u001b[38;5;241m.\u001b[39mdelete() \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\u001b[38;5;66;03m#.delete()\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#bt.DevelopmentalStage.import_from_source()\u001b[39;00m\n", + "Cell \u001b[0;32mIn[25], line 1\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[43mi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\u001b[38;5;66;03m#.delete()\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#bt.DevelopmentalStage.import_from_source()\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/lamindb/_record.py:600\u001b[0m, in \u001b[0;36mdelete\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 598\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnew latest version is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_latest\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 599\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 600\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mRecord\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/base.py:1182\u001b[0m, in \u001b[0;36mModel.delete\u001b[0;34m(self, using, keep_parents)\u001b[0m\n\u001b[1;32m 1180\u001b[0m using \u001b[38;5;241m=\u001b[39m using \u001b[38;5;129;01mor\u001b[39;00m router\u001b[38;5;241m.\u001b[39mdb_for_write(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, instance\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 1181\u001b[0m collector \u001b[38;5;241m=\u001b[39m Collector(using\u001b[38;5;241m=\u001b[39musing, origin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m-> 1182\u001b[0m \u001b[43mcollector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcollect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeep_parents\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeep_parents\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m collector\u001b[38;5;241m.\u001b[39mdelete()\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/deletion.py:355\u001b[0m, in \u001b[0;36mCollector.collect\u001b[0;34m(self, objs, source, nullable, collect_related, source_attr, reverse_dependency, keep_parents, fail_on_restricted)\u001b[0m\n\u001b[1;32m 353\u001b[0m protected_objects[key] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m error\u001b[38;5;241m.\u001b[39mprotected_objects\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m protected_objects:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ProtectedError(\n\u001b[1;32m 356\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot delete some instances of model \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m because they are \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 357\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreferenced through protected foreign keys: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 358\u001b[0m \u001b[38;5;241m%\u001b[39m (\n\u001b[1;32m 359\u001b[0m model\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m,\n\u001b[1;32m 360\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(protected_objects),\n\u001b[1;32m 361\u001b[0m ),\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28mset\u001b[39m(chain\u001b[38;5;241m.\u001b[39mfrom_iterable(protected_objects\u001b[38;5;241m.\u001b[39mvalues())),\n\u001b[1;32m 363\u001b[0m )\n\u001b[1;32m 364\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m related_model, related_fields \u001b[38;5;129;01min\u001b[39;00m model_fast_deletes\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 365\u001b[0m batches \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_del_batches(new_objs, related_fields)\n", + "\u001b[0;31mProtectedError\u001b[0m: (\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})" + ] + } + ], + "source": [ + "[i.delete() for i in bt.DevelopmentalStage.filter()]#.delete()\n", + "#bt.DevelopmentalStage.import_from_source()" ] }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(list(bt.Disease.filter(ontology_id=\"MONDO:0000005\").one().parents.filter()))" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['MONDO:0100118', 'MONDO:0004907'], dtype=object)" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bt.Disease.public().df().loc[\"MONDO:0000005\"].parents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/pyproject.toml b/pyproject.toml index 356953e..e4164a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,24 @@ readme = ["README.md", "LICENSE"] repository = "https://github.com/jkobject/scPRINT" keywords = ["scRNAseq","transformer","GRN","gene regulatory network","scPRINT","large cell model","foundation model"] +[project] +name = "scprint" +version = "1.1.3" +description = "scPRINT is a Large Cell Model for Gene Network Inference, Denoising and more from scRNAseq data" +authors = ["jeremie kalfon"] +readme = ["README.md", "LICENSE"] +repository = "https://github.com/jkobject/scPRINT" +keywords = ["scRNAseq","transformer","GRN","gene regulatory network","scPRINT","large cell model","foundation model"] +requires-python = ">=3.10" + +[tool.ruff] +# Set the maximum line length to 88. +line-length = 88 + +[tool.ruff.lint] +select = ["E", "F", "I"] +ignore = ["E501", "E203", "E266", "E265", "F401", "F403", "E722", "E741", "E731",] + [tool.poetry.dependencies] python = "3.10.*" lamindb = "0.76.3" @@ -61,11 +79,8 @@ triton = {version = "2.2.0", optional = true} pytorch-fast-transformers = { version = "*", optional = true } pytest = { version = "^7.4.3", optional = true } coverage = { version = "^7.3.2", optional = true } -flake8 = { version = "^6.1.0", optional = true } -black = { version = "^23.10.1", optional = true } -isort = { version = "^5.12.0", optional = true } +ruff = { version = "^0.6.4", optional = true } pytest-cov = { version = "^4.1.0", optional = true } -mypy = { version = "^1.6.1", optional = true } gitchangelog = { version = "^3.0.4", optional = true } mkdocs = { version = "^1.5.3", optional = true } @@ -73,11 +88,8 @@ mkdocs = { version = "^1.5.3", optional = true } dev = [ "pytest", "coverage", - "flake8", - "black", - "isort", + "ruff", "pytest-cov", - "mypy", "gitchangelog", "mkdocs", "mkdocs-git-revision-date-localized-plugin", diff --git a/scprint/__main__.py b/scprint/__main__.py index f354469..51cb0db 100644 --- a/scprint/__main__.py +++ b/scprint/__main__.py @@ -1,14 +1,12 @@ """Entry point for scprint.""" -from scprint import scPrint -from scprint.cli import MyCLI -from scdataloader import DataModule - -from lightning.pytorch.cli import SaveConfigCallback -from lightning.pytorch.loggers import WandbLogger from lightning.pytorch import LightningModule, Trainer +from lightning.pytorch.cli import ArgsType, SaveConfigCallback +from lightning.pytorch.loggers import WandbLogger +from scdataloader import DataModule -from lightning.pytorch.cli import ArgsType +from scprint import scPrint +from scprint.cli import MyCLI class MySaveConfig(SaveConfigCallback): @@ -34,7 +32,7 @@ def setup(self, trainer: Trainer, pl_module: LightningModule, stage: str) -> Non def main(args: ArgsType = None): - cli = MyCLI( + cli = MyCLI( # noqa: F841 scPrint, DataModule, args=args, diff --git a/scprint/cli.py b/scprint/cli.py index 6626e07..21467e2 100644 --- a/scprint/cli.py +++ b/scprint/cli.py @@ -1,13 +1,16 @@ -from lightning.pytorch.cli import LightningCLI, _get_short_description -from lightning.pytorch.callbacks import EarlyStopping -from lightning.pytorch.callbacks import LearningRateMonitor -from .trainer import TrainingMode -from lightning.pytorch.callbacks import ModelCheckpoint -from lightning.pytorch.callbacks import StochasticWeightAveraging import torch from jsonargparse import class_from_function +from lightning.pytorch.callbacks import ( + EarlyStopping, + LearningRateMonitor, + ModelCheckpoint, + StochasticWeightAveraging, +) +from lightning.pytorch.cli import LightningCLI, _get_short_description -from scprint.tasks import Embedder, GNInfer, Denoiser +from scprint.tasks import Denoiser, Embedder, GNInfer + +from .trainer import TrainingMode TASKS = [("embed", Embedder), ("gninfer", GNInfer), ("denoise", Denoiser)] @@ -143,10 +146,11 @@ def _run_subcommand(self, subcommand: str) -> None: if callable(after_fn): after_fn() else: + import numpy as np import scanpy as sc - from scprint import scPrint from scdataloader import Preprocessor - import numpy as np + + from scprint import scPrint adata = sc.read_h5ad(self.config_init[subcommand]["adata"]) adata.obs.drop(columns="is_primary_data", inplace=True, errors="ignore") diff --git a/scprint/explainer/attention_flow.py b/scprint/explainer/attention_flow.py index 09c7e32..e7bb1fd 100644 --- a/scprint/explainer/attention_flow.py +++ b/scprint/explainer/attention_flow.py @@ -1,9 +1,10 @@ # @title Utilities -import numpy as np -import networkx as nx +import itertools + import matplotlib.pyplot as plt +import networkx as nx +import numpy as np import seaborn as sns -import itertools def get_adjmat(mat, input_tokens): diff --git a/scprint/model/decoders.py b/scprint/model/decoders.py index d554ba1..7e9eb6d 100644 --- a/scprint/model/decoders.py +++ b/scprint/model/decoders.py @@ -1,7 +1,8 @@ -from typing import Dict, Union, Callable +from typing import Callable, Dict, Union + +import torch from torch import Tensor, nn from torch.nn import functional as F -import torch class GraphSDEExprDecoder(nn.Module): diff --git a/scprint/model/encoders.py b/scprint/model/encoders.py index eabf27d..6ebbb40 100644 --- a/scprint/model/encoders.py +++ b/scprint/model/encoders.py @@ -1,8 +1,9 @@ -from torch import nn, Tensor -import torch -from typing import Optional import math +from typing import Optional + import numpy as np +import torch +from torch import Tensor, nn class GeneEncoder(nn.Module): diff --git a/scprint/model/flash_attn/__init__.py b/scprint/model/flash_attn/__init__.py index cd98713..72d1577 100644 --- a/scprint/model/flash_attn/__init__.py +++ b/scprint/model/flash_attn/__init__.py @@ -1,4 +1,4 @@ -from .mha import * from .block import * -from .mlp import * from .flashformer import * +from .mha import * +from .mlp import * diff --git a/scprint/model/flash_attn/block.py b/scprint/model/flash_attn/block.py index f7184c1..75b7908 100644 --- a/scprint/model/flash_attn/block.py +++ b/scprint/model/flash_attn/block.py @@ -1,7 +1,7 @@ # Copyright (c) 2024, Tri Dao. from functools import partial -from typing import Optional, Callable, Type, Dict, Any +from typing import Any, Callable, Dict, Optional, Type import torch import torch.nn as nn @@ -12,7 +12,7 @@ from .mlp import Mlp try: - from .layer_norm import layer_norm_fn, RMSNorm + from .layer_norm import RMSNorm, layer_norm_fn except ModuleNotFoundError: layer_norm_fn = None RMSNorm = None diff --git a/scprint/model/flash_attn/flashattention.py b/scprint/model/flash_attn/flashattention.py index e6916c2..452dfcd 100644 --- a/scprint/model/flash_attn/flashattention.py +++ b/scprint/model/flash_attn/flashattention.py @@ -40,11 +40,12 @@ """ import math +from typing import Optional, Tuple import torch + import triton import triton.language as tl -from typing import Optional, Tuple # Disabling autotune for now, set num_warps=4 if headdim=64 and num_warps=8 if headdim=128 diff --git a/scprint/model/flash_attn/flashformer.py b/scprint/model/flash_attn/flashformer.py index 0030af5..f5b4b77 100644 --- a/scprint/model/flash_attn/flashformer.py +++ b/scprint/model/flash_attn/flashformer.py @@ -1,17 +1,17 @@ +import os +import sys +from functools import partial +from typing import Callable, Optional + import torch -from torch import nn, Tensor +from torch import Tensor, nn from torch.nn.init import trunc_normal_ from torchvision.ops import StochasticDepth -from typing import Optional, Callable -from functools import partial -import sys -import os - SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(SCRIPT_DIR)) -from . import MHA, Block, Mlp +from . import MHA, Block, Mlp # noqa: E402 try: from .layer_norm import layer_norm_fn diff --git a/scprint/model/flash_attn/layer_norm.py b/scprint/model/flash_attn/layer_norm.py index 83563b7..6ecd3ea 100644 --- a/scprint/model/flash_attn/layer_norm.py +++ b/scprint/model/flash_attn/layer_norm.py @@ -11,7 +11,7 @@ import torch import torch.nn.functional as F -from torch.cuda.amp import custom_fwd, custom_bwd +from torch.cuda.amp import custom_bwd, custom_fwd import triton import triton.language as tl diff --git a/scprint/model/flash_attn/mha.py b/scprint/model/flash_attn/mha.py index a77051e..817de47 100644 --- a/scprint/model/flash_attn/mha.py +++ b/scprint/model/flash_attn/mha.py @@ -2,8 +2,7 @@ import math from functools import partial - -from typing import Optional, Any +from typing import Any, Optional import torch import torch.nn as nn @@ -166,7 +165,7 @@ def forward( assert q.dtype in [torch.float16, torch.bfloat16] assert q.is_cuda and kv.is_cuda causal = self.causal if causal is None else causal - batch_size, seqlen_q = q.shape[0], q.shape[1] + batch_size, _ = q.shape[0], q.shape[1] assert kv.shape[0] == batch_size and kv.shape[4] == q.shape[3] return flash_attn_kvpacked_func( q, diff --git a/scprint/model/flash_attn/mlp.py b/scprint/model/flash_attn/mlp.py index e93a106..b81d3a3 100644 --- a/scprint/model/flash_attn/mlp.py +++ b/scprint/model/flash_attn/mlp.py @@ -1,12 +1,13 @@ # Copyright (c) 2023, Tri Dao. +from typing import Callable, Optional, Tuple, Union + import torch import torch.nn as nn import torch.nn.functional as F from torch.distributed import ProcessGroup from .activations import swiglu -from typing import Optional, Callable, Union, Tuple class Mlp(nn.Module): diff --git a/scprint/model/hyper_attn/__init__.py b/scprint/model/hyper_attn/__init__.py index 094e193..1ed8be5 100644 --- a/scprint/model/hyper_attn/__init__.py +++ b/scprint/model/hyper_attn/__init__.py @@ -1,4 +1,3 @@ from .angular_lsh_triton import * from .attn_utils import * from .hyperformer import * -from .attn_utils import * diff --git a/scprint/model/hyper_attn/angular_lsh_triton.py b/scprint/model/hyper_attn/angular_lsh_triton.py index fe074ac..63c8c5a 100644 --- a/scprint/model/hyper_attn/angular_lsh_triton.py +++ b/scprint/model/hyper_attn/angular_lsh_triton.py @@ -1,5 +1,7 @@ import math + import torch + import triton import triton.language as tl diff --git a/scprint/model/hyper_attn/attn_utils.py b/scprint/model/hyper_attn/attn_utils.py index 5a3f975..f66109f 100644 --- a/scprint/model/hyper_attn/attn_utils.py +++ b/scprint/model/hyper_attn/attn_utils.py @@ -1,4 +1,5 @@ import math + import torch diff --git a/scprint/model/hyper_attn/hyperattention.py b/scprint/model/hyper_attn/hyperattention.py index 291b880..576166d 100644 --- a/scprint/model/hyper_attn/hyperattention.py +++ b/scprint/model/hyper_attn/hyperattention.py @@ -12,6 +12,7 @@ import math import torch + import triton import triton.language as tl diff --git a/scprint/model/hyper_attn/hyperformer.py b/scprint/model/hyper_attn/hyperformer.py index 50a2e8a..425a5ef 100644 --- a/scprint/model/hyper_attn/hyperformer.py +++ b/scprint/model/hyper_attn/hyperformer.py @@ -1,9 +1,10 @@ import torch -# from . import flash_attn_func -from . import hyper_attn_func, AngularLSHTriton, add_self_attentions from ..flash_attn.flashattention import flash_attn_qkvpacked_func +# from . import flash_attn_func +from . import AngularLSHTriton, add_self_attentions, hyper_attn_func + class HyperAttention(torch.nn.Module): diff --git a/scprint/model/linear_transformer.py b/scprint/model/linear_transformer.py index 204b474..8d8b06b 100644 --- a/scprint/model/linear_transformer.py +++ b/scprint/model/linear_transformer.py @@ -1,7 +1,7 @@ import torch -from torch import nn, Tensor from fast_transformers.builders import TransformerEncoderBuilder from fast_transformers.masking import LengthMask +from torch import Tensor, nn class FastTransformerEncoderWrapper(nn.Module): diff --git a/scprint/model/loss.py b/scprint/model/loss.py index 87cde7a..a7e78f6 100644 --- a/scprint/model/loss.py +++ b/scprint/model/loss.py @@ -1,9 +1,10 @@ -import torch.nn.functional as F +from typing import Dict, Optional + import torch -from torch import nn, Tensor +import torch.nn.functional as F +from torch import Tensor, nn from torch.autograd import Function from torch.distributions import NegativeBinomial -from typing import Dict, Optional def mse(input: Tensor, target: Tensor) -> Tensor: diff --git a/scprint/model/model.py b/scprint/model/model.py index bd65ad6..81da2c7 100644 --- a/scprint/model/model.py +++ b/scprint/model/model.py @@ -1,29 +1,26 @@ # from scprint.base.base_model import BaseModel -from typing import Optional, Dict -from torch import Tensor, optim, nn -from lightning.pytorch.tuner.lr_finder import _LRCallback -from lightning.pytorch.callbacks.lr_finder import LearningRateFinder -import torch +import copy +import os +from functools import partial # from galore_torch import GaLoreAdamW from math import factorial +from typing import Dict, Optional + import lightning as L -import os -import copy -from scipy.sparse import load_npz -from huggingface_hub import PyTorchModelHubMixin import pandas as pd -from functools import partial - -from .flash_attn import FlashTransformerEncoder -from . import encoders -from . import decoders +import torch +from huggingface_hub import PyTorchModelHubMixin +from lightning.pytorch.callbacks.lr_finder import LearningRateFinder +from lightning.pytorch.tuner.lr_finder import _LRCallback +from scipy.sparse import load_npz +from torch import Tensor, nn, optim # from .linear_transformer import FastTransformerEncoderWrapper as FastTransformerEncoder -from . import loss -from .utils import simple_masker -from . import utils +from . import decoders, encoders, loss, utils +from .flash_attn import FlashTransformerEncoder from .loss import grad_reverse +from .utils import simple_masker FILEDIR = os.path.dirname(os.path.realpath(__file__)) @@ -446,8 +443,7 @@ def _decoder( if len(self.classes) > 0 and do_class: output.update( { - "cls_output_" - + clsname: self.cls_decoders[clsname]( + "cls_output_" + clsname: self.cls_decoders[clsname]( output["cell_embs"][ :, 2 + i, : ] # the first elem is the base cell embedding @@ -591,22 +587,22 @@ def configure_optimizers(self): ) elif self.optim == "galore": raise NotImplementedError("Galore optimizer not implemented") - param_groups = [ - { - "params": [ - v for k, v in self.named_parameters() if "transformer" not in k - ] - }, - { - "params": [ - v for k, v in self.named_parameters() if "transformer" in k - ], - "rank": 128, - "update_proj_gap": 200, - "scale": 0.25, - "proj_type": "std", - }, - ] + # param_groups = [ + # { + # "params": [ + # v for k, v in self.named_parameters() if "transformer" not in k + # ] + # }, + # { + # "params": [ + # v for k, v in self.named_parameters() if "transformer" in k + # ], + # "rank": 128, + # "update_proj_gap": 200, + # "scale": 0.25, + # "proj_type": "std", + # }, + # ] # optimizer = GaLoreAdamW(param_groups, lr=self.hparams.lr) else: raise ValueError(f"Unknown optimizer: {self.optim}") diff --git a/scprint/model/utils.py b/scprint/model/utils.py index 22855c1..6c385d0 100644 --- a/scprint/model/utils.py +++ b/scprint/model/utils.py @@ -1,24 +1,22 @@ -import torch -from torch import Tensor - -import numpy as np -from typing import Optional, Union, List, Dict -from torch.distributions import Poisson, Gamma - -import bionty as bt -from collections import Counter +import gc +import json import math +from collections import Counter +from typing import Dict, List, Optional, Union +import bionty as bt +import numpy as np +import pandas as pd import scanpy as sc +import torch from anndata import AnnData from matplotlib import pyplot as plt -import pandas as pd -import gc -import json +from torch import Tensor +from torch.distributions import Gamma, Poisson from ..tasks import cell_emb as embbed_task -from ..tasks import grn as grn_task from ..tasks import denoise as denoise_task +from ..tasks import grn as grn_task # from scprint.tasks import generate diff --git a/scprint/tasks/__init__.py b/scprint/tasks/__init__.py index c72f6a6..f676c45 100644 --- a/scprint/tasks/__init__.py +++ b/scprint/tasks/__init__.py @@ -1,3 +1,3 @@ -from .grn import * from .cell_emb import * from .denoise import * +from .grn import * diff --git a/scprint/tasks/cell_emb.py b/scprint/tasks/cell_emb.py index 777adaf..5080ece 100644 --- a/scprint/tasks/cell_emb.py +++ b/scprint/tasks/cell_emb.py @@ -1,27 +1,25 @@ -from sklearn.metrics import f1_score -from scdataloader import Preprocessor -from scdataloader.utils import get_descendants -from scib_metrics.benchmark import Benchmarker -from networkx import average_node_connectivity -import scanpy as sc -import numpy as np -import matplotlib.pyplot as plt -import torch +import os +from typing import Any, Dict, List -from scdataloader.data import SimpleAnnDataset -from scdataloader import Collator -from scprint.model import utils import bionty as bt -from torch.utils.data import DataLoader -import os +import matplotlib.pyplot as plt +import numpy as np import pandas as pd -from tqdm import tqdm +import scanpy as sc +import torch +from anndata import AnnData from lightning.pytorch import Trainer - +from networkx import average_node_connectivity +from scdataloader import Collator, Preprocessor +from scdataloader.data import SimpleAnnDataset +from scdataloader.utils import get_descendants +from scib_metrics.benchmark import Benchmarker from scipy.stats import spearmanr +from sklearn.metrics import f1_score +from torch.utils.data import DataLoader +from tqdm import tqdm -from typing import List, Dict, Any -from anndata import AnnData +from scprint.model import utils FILE_LOC = os.path.dirname(os.path.realpath(__file__)) diff --git a/scprint/tasks/denoise.py b/scprint/tasks/denoise.py index 0ffb39c..c60da26 100644 --- a/scprint/tasks/denoise.py +++ b/scprint/tasks/denoise.py @@ -1,24 +1,22 @@ -import scanpy as sc -import numpy as np -import matplotlib.pyplot as plt -import torch - -from scdataloader.data import SimpleAnnDataset -from scdataloader import Collator, Preprocessor -from scprint.model import utils - -from torch.utils.data import DataLoader -import sklearn.metrics +import os +from typing import Any, List, Optional, Tuple import anndata as ad +import matplotlib.pyplot as plt +import numpy as np +import scanpy as sc +import sklearn.metrics +import torch from anndata import AnnData - -from typing import List, Optional, Tuple, Any - +from scdataloader import Collator, Preprocessor +from scdataloader.data import SimpleAnnDataset from scipy.sparse import issparse from scipy.stats import spearmanr -import os +from torch.utils.data import DataLoader from tqdm import tqdm + +from scprint.model import utils + from . import knn_smooth FILE_DIR = os.path.dirname(os.path.realpath(__file__)) diff --git a/scprint/tasks/grn.py b/scprint/tasks/grn.py index e4eb52f..1e27ae9 100644 --- a/scprint/tasks/grn.py +++ b/scprint/tasks/grn.py @@ -1,42 +1,35 @@ -from scdataloader import Preprocessor, Collator -from scdataloader.data import SimpleAnnDataset - -from bengrn.base import train_classifier -from bengrn import BenGRN, get_sroy_gt, get_perturb_gt -from grnndata import utils as grnutils -from grnndata import GRNAnnData, from_anndata, read_h5ad +import gc +import os.path +from typing import Any, List, Optional -from anndata.utils import make_index_unique +import hdbscan +import joblib +import networkx as nx +import numpy as np +import pandas as pd import scanpy as sc -from anndata import AnnData - -import torch -from torch.utils.data import DataLoader - -import gc -import sparse import scipy.sparse - +import seaborn as sns +import sparse +import torch +import umap +from anndata import AnnData +from anndata.utils import make_index_unique +from bengrn import BenGRN, get_perturb_gt, get_sroy_gt +from bengrn.base import train_classifier +from grnndata import GRNAnnData, from_anndata, read_h5ad +from grnndata import utils as grnutils from lightning.pytorch import Trainer -import joblib -from typing import List, Optional, Any +from matplotlib import pyplot as plt +from scdataloader import Collator, Preprocessor +from scdataloader.data import SimpleAnnDataset +from torch.utils.data import DataLoader +from tqdm import tqdm -from scprint.utils.sinkhorn import SinkhornDistance from scprint.utils import load_genes +from scprint.utils.sinkhorn import SinkhornDistance - -import umap -import hdbscan -from tqdm import tqdm - -from matplotlib import pyplot as plt -import seaborn as sns -import numpy as np from .tmfg import tmfg -import networkx as nx -import os.path - -import pandas as pd FILEDIR = os.path.dirname(os.path.realpath(__file__)) diff --git a/scprint/tasks/grn_scgpt.py b/scprint/tasks/grn_scgpt.py index ae41144..4baa3f8 100644 --- a/scprint/tasks/grn_scgpt.py +++ b/scprint/tasks/grn_scgpt.py @@ -137,7 +137,7 @@ def score_metagenes(self, adata, metagenes): scores = scaler.fit_transform(scores) scores = list(scores.reshape(1, -1))[0] adata.obs[str(p) + "_SCORE"] = scores - except Exception as e: + except Exception: adata.obs[str(p) + "_SCORE"] = 0.0 def get_metagenes(self, gdata): @@ -231,7 +231,7 @@ def read_vector(vec): line = line.split() gene = line.pop(0) vecs[gene] = list(map(float, line)) - except Exception as e: + except Exception: continue return vecs, dims diff --git a/scprint/tasks/knn_smooth.py b/scprint/tasks/knn_smooth.py index 0d6390b..b395c56 100644 --- a/scprint/tasks/knn_smooth.py +++ b/scprint/tasks/knn_smooth.py @@ -7,14 +7,14 @@ # Yun Yan # Copyright (c) 2017, 2018 New York University -import time -import sys -from math import log, ceil import hashlib +import sys +import time +from math import ceil, log -from sklearn.metrics.pairwise import pairwise_distances -from sklearn.decomposition import PCA import numpy as np +from sklearn.decomposition import PCA +from sklearn.metrics.pairwise import pairwise_distances def _median_normalize(X: np.ndarray): diff --git a/scprint/tasks/tmfg.py b/scprint/tasks/tmfg.py index e2ec68b..93eee9d 100644 --- a/scprint/tasks/tmfg.py +++ b/scprint/tasks/tmfg.py @@ -1,5 +1,6 @@ -import networkx as nx import collections + +import networkx as nx import numpy as np diff --git a/scprint/tokenizers/__init__.py b/scprint/tokenizers/__init__.py index df15a67..4d6e2a6 100644 --- a/scprint/tokenizers/__init__.py +++ b/scprint/tokenizers/__init__.py @@ -1,3 +1,3 @@ # from ...RNABERT.main import RNABERT -from .protein_embedder import PROTBERT from .embedder import protein_embeddings_generator +from .protein_embedder import PROTBERT diff --git a/scprint/tokenizers/embedder.py b/scprint/tokenizers/embedder.py index 78c596a..bae74d1 100644 --- a/scprint/tokenizers/embedder.py +++ b/scprint/tokenizers/embedder.py @@ -1,11 +1,14 @@ -from scprint import utils -from . import PROTBERT +import os -# from RNABERT import RNABERT -from torch.nn import AdaptiveAvgPool1d import pandas as pd import torch -import os + +# from RNABERT import RNABERT +from torch.nn import AdaptiveAvgPool1d + +from scprint import utils + +from . import PROTBERT def protein_embeddings_generator( diff --git a/scprint/tokenizers/protein_embedder.py b/scprint/tokenizers/protein_embedder.py index 45567d0..9fefd09 100644 --- a/scprint/tokenizers/protein_embedder.py +++ b/scprint/tokenizers/protein_embedder.py @@ -1,8 +1,10 @@ import os -from scprint.utils.utils import run_command + import pandas as pd from torch import load +from scprint.utils.utils import run_command + # https://github.com/agemagician/ProtTrans # https://academic.oup.com/nargab/article/4/1/lqac012/6534363 diff --git a/scprint/trainer/trainer.py b/scprint/trainer/trainer.py index d921c84..03704bc 100644 --- a/scprint/trainer/trainer.py +++ b/scprint/trainer/trainer.py @@ -1,6 +1,7 @@ -from lightning.pytorch.callbacks import Callback from typing import List +from lightning.pytorch.callbacks import Callback + class TrainingMode(Callback): def __init__( diff --git a/scprint/utils/__init__.py b/scprint/utils/__init__.py index 70b3a45..574b3f9 100644 --- a/scprint/utils/__init__.py +++ b/scprint/utils/__init__.py @@ -1,3 +1,3 @@ -from .utils import * from .get_seq import * from .sinkhorn import SinkhornDistance +from .utils import * diff --git a/scprint/utils/get_seq.py b/scprint/utils/get_seq.py index 6b3d086..fe548f4 100644 --- a/scprint/utils/get_seq.py +++ b/scprint/utils/get_seq.py @@ -1,16 +1,17 @@ +import ftplib import logging -import numpy as np +import os +from typing import List, Optional, Union -# Custom functions -from gget.utils import rest_query, get_uniprot_seqs -from gget.gget_info import info +import numpy as np +from Bio import SeqIO # Constants from gget.constants import ENSEMBL_REST_API, UNIPROT_REST_API -import ftplib -import os -from Bio import SeqIO -from typing import List, Optional, Union +from gget.gget_info import info + +# Custom functions +from gget.utils import get_uniprot_seqs, rest_query # Add and format time stamp in logging messages logging.basicConfig( diff --git a/scprint/utils/utils.py b/scprint/utils/utils.py index 753a94c..4c90118 100644 --- a/scprint/utils/utils.py +++ b/scprint/utils/utils.py @@ -1,25 +1,22 @@ -import json -import torch -import pandas as pd -from pathlib import Path -from itertools import repeat -from collections import OrderedDict - - import functools -import bionty as bt +import io +import json import os import random import subprocess +import urllib.request +from collections import OrderedDict +from itertools import repeat +from pathlib import Path from typing import Dict, List, Optional, Tuple, Union + +import bionty as bt import numpy as np +import pandas as pd +import torch from anndata import AnnData -from IPython import get_ipython -import urllib.request - - -import io from biomart import BiomartServer +from IPython import get_ipython def run_command(command: str, **kwargs): @@ -171,6 +168,7 @@ def get_free_gpu(): import subprocess import sys from io import StringIO + import pandas as pd gpu_stats = subprocess.check_output( diff --git a/tests/conftest.py b/tests/conftest.py index 40776ce..3cfe240 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,8 @@ +import shutil import sys -import pytest + import lamindb_setup as ln_setup -import shutil +import pytest def pytest_sessionstart(): diff --git a/tests/test_base.py b/tests/test_base.py index f58e960..13b503b 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -1,15 +1,16 @@ -import scanpy as sc -import numpy as np import os import urllib.request -import torch -from scprint.base import NAME +import numpy as np +import pytest +import scanpy as sc +import torch from scdataloader import Preprocessor from scdataloader.utils import populate_my_ontology -from scprint.tasks import Denoiser + from scprint import scPrint -import pytest +from scprint.base import NAME +from scprint.tasks import Denoiser def test_base(): diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..21b8648 --- /dev/null +++ b/uv.lock @@ -0,0 +1,5066 @@ +version = 1 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform == 'linux'", +] + +[[package]] +name = "absl-py" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/8f/fc001b92ecc467cc32ab38398bd0bfb45df46e7523bf33c2ad22a505f06e/absl-py-2.1.0.tar.gz", hash = "sha256:7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff", size = 118055 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/ad/e0d3c824784ff121c03cc031f944bc7e139a8f1870ffd2845cc2dd76f6c4/absl_py-2.1.0-py3-none-any.whl", hash = "sha256:526a04eadab8b4ee719ce68f204172ead1027549089702d99b9059f129ff1308", size = 133706 }, +] + +[[package]] +name = "aiobotocore" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aioitertools" }, + { name = "botocore" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/1c/4b70176e1609f48e319525c9d49f3e35ef20898edfbc73b1f870e87a1aca/aiobotocore-2.14.0.tar.gz", hash = "sha256:680dcbcde9cb0dcefbcddc180d273c2d048940f87f2bdb0eebe0f4c30c1e39b9", size = 106885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/7f/eec1f4d121a9692f49f6144408d5efb39471550d4a7894b5b018c947e3fd/aiobotocore-2.14.0-py3-none-any.whl", hash = "sha256:721c52f5d1221daa4851cfa9ab5db14440477f33d763da9019691c4f67163873", size = 77320 }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/f7/22bba300a16fd1cad99da1a23793fe43963ee326d012fdf852d0b4035955/aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2", size = 16786 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/b6/58ea188899950d759a837f9a58b2aee1d1a380ea4d6211ce9b1823748851/aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd", size = 12155 }, +] + +[[package]] +name = "aiohttp" +version = "3.10.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/28/ca549838018140b92a19001a8628578b0f2a3b38c16826212cc6f706e6d4/aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691", size = 7524360 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/4a/b27dd9b88fe22dde88742b341fd10251746a6ffcfe1c0b8b15b4a8cbd7c1/aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3", size = 587010 }, + { url = "https://files.pythonhosted.org/packages/de/a9/0f7e2b71549c9d641086c423526ae7a10de3b88d03ba104a3df153574d0d/aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6", size = 397698 }, + { url = "https://files.pythonhosted.org/packages/3b/52/26baa486e811c25b0cd16a494038260795459055568713f841e78f016481/aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699", size = 389052 }, + { url = "https://files.pythonhosted.org/packages/33/df/71ba374a3e925539cb2f6e6d4f5326e7b6b200fabbe1b3cc5e6368f07ce7/aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6", size = 1248615 }, + { url = "https://files.pythonhosted.org/packages/67/02/bb89c1eba08a27fc844933bee505d63d480caf8e2816c06961d2941cd128/aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1", size = 1282930 }, + { url = "https://files.pythonhosted.org/packages/db/36/07d8cfcc37f39c039f93a4210cc71dadacca003609946c63af23659ba656/aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f", size = 1317250 }, + { url = "https://files.pythonhosted.org/packages/9a/44/cabeac994bef8ba521b552ae996928afc6ee1975a411385a07409811b01f/aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb", size = 1243212 }, + { url = "https://files.pythonhosted.org/packages/5a/11/23f1e31f5885ac72be52fd205981951dd2e4c87c5b1487cf82fde5bbd46c/aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91", size = 1213401 }, + { url = "https://files.pythonhosted.org/packages/3f/e7/6e69a0b0d896fbaf1192d492db4c21688e6c0d327486da610b0e8195bcc9/aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f", size = 1212450 }, + { url = "https://files.pythonhosted.org/packages/a9/7f/a42f51074c723ea848254946aec118f1e59914a639dc8ba20b0c9247c195/aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c", size = 1211324 }, + { url = "https://files.pythonhosted.org/packages/d5/43/c2f9d2f588ccef8f028f0a0c999b5ceafecbda50b943313faee7e91f3e03/aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69", size = 1266838 }, + { url = "https://files.pythonhosted.org/packages/c1/a7/ff9f067ecb06896d859e4f2661667aee4bd9c616689599ff034b63cbd9d7/aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3", size = 1285301 }, + { url = "https://files.pythonhosted.org/packages/9a/e3/dd56bb4c67d216046ce61d98dec0f3023043f1de48f561df1bf93dd47aea/aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683", size = 1235806 }, + { url = "https://files.pythonhosted.org/packages/a7/64/90dcd42ac21927a49ba4140b2e4d50e1847379427ef6c43eb338ef9960e3/aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef", size = 360162 }, + { url = "https://files.pythonhosted.org/packages/f3/45/145d8b4853fc92c0c8509277642767e7726a085e390ce04353dc68b0f5b5/aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088", size = 379173 }, + { url = "https://files.pythonhosted.org/packages/f1/90/54ccb1e4eadfb6c95deff695582453f6208584431d69bf572782e9ae542b/aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2", size = 586455 }, + { url = "https://files.pythonhosted.org/packages/c3/7a/95e88c02756e7e718f054e1bb3ec6ad5d0ee4a2ca2bb1768c5844b3de30a/aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf", size = 397255 }, + { url = "https://files.pythonhosted.org/packages/07/4f/767387b39990e1ee9aba8ce642abcc286d84d06e068dc167dab983898f18/aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e", size = 388973 }, + { url = "https://files.pythonhosted.org/packages/61/46/0df41170a4d228c07b661b1ba9d87101d99a79339dc93b8b1183d8b20545/aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77", size = 1326126 }, + { url = "https://files.pythonhosted.org/packages/af/20/da0d65e07ce49d79173fed41598f487a0a722e87cfbaa8bb7e078a7c1d39/aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061", size = 1364538 }, + { url = "https://files.pythonhosted.org/packages/aa/20/b59728405114e57541ba9d5b96033e69d004e811ded299537f74237629ca/aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697", size = 1399896 }, + { url = "https://files.pythonhosted.org/packages/2a/92/006690c31b830acbae09d2618e41308fe4c81c0679b3b33a3af859e0b7bf/aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7", size = 1312914 }, + { url = "https://files.pythonhosted.org/packages/d4/71/1a253ca215b6c867adbd503f1e142117527ea8775e65962bc09b2fad1d2c/aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0", size = 1271301 }, + { url = "https://files.pythonhosted.org/packages/0a/ab/5d1d9ff9ce6cce8fa54774d0364e64a0f3cd50e512ff09082ced8e5217a1/aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5", size = 1291652 }, + { url = "https://files.pythonhosted.org/packages/75/5f/f90510ea954b9ae6e7a53d2995b97a3e5c181110fdcf469bc9238445871d/aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e", size = 1286289 }, + { url = "https://files.pythonhosted.org/packages/be/9e/1f523414237798660921817c82b9225a363af436458caf584d2fa6a2eb4a/aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1", size = 1341848 }, + { url = "https://files.pythonhosted.org/packages/f6/36/443472ddaa85d7d80321fda541d9535b23ecefe0bf5792cc3955ea635190/aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277", size = 1361619 }, + { url = "https://files.pythonhosted.org/packages/19/f6/3ecbac0bc4359c7d7ba9e85c6b10f57e20edaf1f97751ad2f892db231ad0/aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058", size = 1320869 }, + { url = "https://files.pythonhosted.org/packages/34/7e/ed74ffb36e3a0cdec1b05d8fbaa29cb532371d5a20058b3a8052fc90fe7c/aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072", size = 359271 }, + { url = "https://files.pythonhosted.org/packages/98/1b/718901f04bc8c886a742be9e83babb7b93facabf7c475cc95e2b3ab80b4d/aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff", size = 379143 }, + { url = "https://files.pythonhosted.org/packages/d9/1c/74f9dad4a2fc4107e73456896283d915937f48177b99867b63381fadac6e/aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487", size = 583468 }, + { url = "https://files.pythonhosted.org/packages/12/29/68d090551f2b58ce76c2b436ced8dd2dfd32115d41299bf0b0c308a5483c/aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a", size = 394066 }, + { url = "https://files.pythonhosted.org/packages/8f/f7/971f88b4cdcaaa4622925ba7d86de47b48ec02a9040a143514b382f78da4/aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d", size = 389098 }, + { url = "https://files.pythonhosted.org/packages/f1/5a/fe3742efdce551667b2ddf1158b27c5b8eb1edc13d5e14e996e52e301025/aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75", size = 1332742 }, + { url = "https://files.pythonhosted.org/packages/1a/52/a25c0334a1845eb4967dff279151b67ca32a948145a5812ed660ed900868/aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178", size = 1372134 }, + { url = "https://files.pythonhosted.org/packages/96/3d/33c1d8efc2d8ec36bff9a8eca2df9fdf8a45269c6e24a88e74f2aa4f16bd/aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e", size = 1414413 }, + { url = "https://files.pythonhosted.org/packages/64/74/0f1ddaa5f0caba1d946f0dd0c31f5744116e4a029beec454ec3726d3311f/aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f", size = 1328107 }, + { url = "https://files.pythonhosted.org/packages/0a/32/c10118f0ad50e4093227234f71fd0abec6982c29367f65f32ee74ed652c4/aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73", size = 1280126 }, + { url = "https://files.pythonhosted.org/packages/c6/c9/77e3d648d97c03a42acfe843d03e97be3c5ef1b4d9de52e5bd2d28eed8e7/aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf", size = 1292660 }, + { url = "https://files.pythonhosted.org/packages/7e/5d/99c71f8e5c8b64295be421b4c42d472766b263a1fe32e91b64bf77005bf2/aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820", size = 1300988 }, + { url = "https://files.pythonhosted.org/packages/8f/2c/76d2377dd947f52fbe8afb19b18a3b816d66c7966755c04030f93b1f7b2d/aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca", size = 1339268 }, + { url = "https://files.pythonhosted.org/packages/fd/e6/3d9d935cc705d57ed524d82ec5d6b678a53ac1552720ae41282caa273584/aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91", size = 1366993 }, + { url = "https://files.pythonhosted.org/packages/fe/c2/f7eed4d602f3f224600d03ab2e1a7734999b0901b1c49b94dc5891340433/aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6", size = 1329459 }, + { url = "https://files.pythonhosted.org/packages/ce/8f/27f205b76531fc592abe29e1ad265a16bf934a9f609509c02d765e6a8055/aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12", size = 356968 }, + { url = "https://files.pythonhosted.org/packages/39/8c/4f6c0b2b3629f6be6c81ab84d9d577590f74f01d4412bfc4067958eaa1e1/aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc", size = 377650 }, + { url = "https://files.pythonhosted.org/packages/7b/b9/03b4327897a5b5d29338fa9b514f1c2f66a3e4fc88a4e40fad478739314d/aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092", size = 576994 }, + { url = "https://files.pythonhosted.org/packages/67/1b/20c2e159cd07b8ed6dde71c2258233902fdf415b2fe6174bd2364ba63107/aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77", size = 390684 }, + { url = "https://files.pythonhosted.org/packages/4d/6b/ff83b34f157e370431d8081c5d1741963f4fb12f9aaddb2cacbf50305225/aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385", size = 386176 }, + { url = "https://files.pythonhosted.org/packages/4d/a1/6e92817eb657de287560962df4959b7ddd22859c4b23a0309e2d3de12538/aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972", size = 1303310 }, + { url = "https://files.pythonhosted.org/packages/04/29/200518dc7a39c30ae6d5bc232d7207446536e93d3d9299b8e95db6e79c54/aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16", size = 1340445 }, + { url = "https://files.pythonhosted.org/packages/8e/20/53f7bba841ba7b5bb5dea580fea01c65524879ba39cb917d08c845524717/aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6", size = 1385121 }, + { url = "https://files.pythonhosted.org/packages/f1/b4/d99354ad614c48dd38fb1ee880a1a54bd9ab2c3bcad3013048d4a1797d3a/aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa", size = 1299669 }, + { url = "https://files.pythonhosted.org/packages/51/39/ca1de675f2a5729c71c327e52ac6344e63f036bd37281686ae5c3fb13bfb/aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689", size = 1252638 }, + { url = "https://files.pythonhosted.org/packages/54/cf/a3ae7ff43138422d477348e309ef8275779701bf305ff6054831ef98b782/aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57", size = 1266889 }, + { url = "https://files.pythonhosted.org/packages/6e/7a/c6027ad70d9fb23cf254a26144de2723821dade1a624446aa22cd0b6d012/aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f", size = 1266249 }, + { url = "https://files.pythonhosted.org/packages/64/fd/ed136d46bc2c7e3342fed24662b4827771d55ceb5a7687847aae977bfc17/aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599", size = 1311036 }, + { url = "https://files.pythonhosted.org/packages/76/9a/43eeb0166f1119256d6f43468f900db1aed7fbe32069d2a71c82f987db4d/aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5", size = 1338756 }, + { url = "https://files.pythonhosted.org/packages/d5/bc/d01ff0810b3f5e26896f76d44225ed78b088ddd33079b85cd1a23514318b/aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987", size = 1299976 }, + { url = "https://files.pythonhosted.org/packages/3e/c9/50a297c4f7ab57a949f4add2d3eafe5f3e68bb42f739e933f8b32a092bda/aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04", size = 355609 }, + { url = "https://files.pythonhosted.org/packages/65/28/aee9d04fb0b3b1f90622c338a08e54af5198e704a910e20947c473298fd0/aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022", size = 375697 }, +] + +[[package]] +name = "aioitertools" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, +] + +[[package]] +name = "aiosignal" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/67/0952ed97a9793b4958e5736f6d2b346b414a2cd63e82d05940032f45b32f/aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", size = 19422 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17", size = 7617 }, +] + +[[package]] +name = "anndata" +version = "0.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "array-api-compat" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "h5py" }, + { name = "natsort" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/f7/70ea02b29380336846664672992989663e4a4d05160e93fd215efb37ac55/anndata-0.10.8.tar.gz", hash = "sha256:b728a33225eeaaefddf6bed546d935c0f06881c9166621b24de3b492b2f406bb", size = 504467 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/58/2608b71280b351369b6190818c16cf90ad1d1ab2f30c2be68c8bd2c1749b/anndata-0.10.8-py3-none-any.whl", hash = "sha256:1b24934dc2674eaf3072cb7010e187aa2b2f4f0e4cf0a32ffeab5ffebe3b1415", size = 124394 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034 } + +[[package]] +name = "anyio" +version = "4.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/e3/c4c8d473d6780ef1853d630d581f70d655b4f8d7553c6997958c283039a2/anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94", size = 163930 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/a2/10639a79341f6c019dedc95bd48a4928eed9f1d1197f4c04f546fc7ae0ff/anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7", size = 86780 }, +] + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566 }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, +] + +[[package]] +name = "arboreto" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dask", extra = ["complete"] }, + { name = "distributed" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/b2/1942195d3848abf64b8115e219c4a530b05798f7332938dfd0e80b93c464/arboreto-0.1.6.tar.gz", hash = "sha256:32fdac5e8a3e0ef2e196b5827f067d815ac4e689d2fca0dc437f42abdeeb89ab", size = 14625 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/26/8c4a9191c2d31c4f30aecd4382bcc209b67629b827955fb164ce03c09e08/arboreto-0.1.6-py2.py3-none-any.whl", hash = "sha256:6c70074b9d7273efaed0f89dd508c886b83c22ef81ae07ca923b7d21e7bbd057", size = 15504 }, +] + +[[package]] +name = "array-api-compat" +version = "1.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/2a/0614f2fa0170a1144874fd858717019e436d1f003d0fbb4d15894207a5ec/array_api_compat-1.8.tar.gz", hash = "sha256:f5cc7c6765226b58c99a8a695becb5c53bfb38cd69e40e8773d05eeaab52bddd", size = 34150 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/22/8228be1d3c6d4ffcf05cd89872ce65c1317b2af98d34b9d89b247d8d49cb/array_api_compat-1.8-py3-none-any.whl", hash = "sha256:140204454086264d37263bc4afe1182b428353e94e9edcc38d17b009863c982d", size = 38558 }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951 } + +[[package]] +name = "asgiref" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828 }, +] + +[[package]] +name = "asttokens" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764 }, +] + +[[package]] +name = "async-timeout" +version = "4.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028", size = 5721 }, +] + +[[package]] +name = "attridict" +version = "0.0.8" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'", +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/5c/dac0eb8f4596afce2a60f9aeb2d4812c5fb28d29d6f80a949b4b09708aa6/attridict-0.0.8.tar.gz", hash = "sha256:23a17671b9439d36e2bdb0a69c09f033abab0900a9df178e0f89aa1b2c42c5cd", size = 4941 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/65/1299c1c6cf6a30f1b9e4b29d1fb77f84b79fea4ba3c4c950adfdeccb20db/attridict-0.0.8-py3-none-any.whl", hash = "sha256:8ee65af81f7762354e4514c443bbc04786a924c8e3e610c7883d2efbf323df6d", size = 5498 }, +] + +[[package]] +name = "attridict" +version = "0.0.9" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform == 'linux'", +] +dependencies = [ + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/6e/244ca3d5a0d10a575caeb907827741dd0c86afe47c45729c07db46f69037/attridict-0.0.9.tar.gz", hash = "sha256:a0d6b140a17998f32dd71268b3f20a7b74ae5c7d14d628de75cf68f83c61f4ee", size = 5364 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/88/356373ef3556e65a495f0adc62177cf435314936cf4187f31e6e1ab97ddf/attridict-0.0.9-py3-none-any.whl", hash = "sha256:a6498b2f4e669105225b759feb2e47af8782fdbdb33610b50dd5d086d1875e49", size = 5917 }, +] + +[[package]] +name = "attrs" +version = "24.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925 }, +] + +[[package]] +name = "bengrn" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "arboreto" }, + { name = "ctxcore" }, + { name = "dask-expr" }, + { name = "decoupler" }, + { name = "grnndata" }, + { name = "numpy" }, + { name = "omnipath" }, + { name = "pandas" }, + { name = "pyscenic" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "seaborn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/01/b52eac563daf36b587227aed482df7b5c8abe122a9a5d39428cb62dab7f3/bengrn-1.1.0.tar.gz", hash = "sha256:c786e59dbf66738acd4cf6cd09c4dda199572408a450c2b9ab32279c378c04e8", size = 52506 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/cf/84fe92ae47c9b6146b33960aacffbba5700cff8ca553b51a0730b0227595/bengrn-1.1.0-py3-none-any.whl", hash = "sha256:5e053292ffdb526a565fc1314c86cf7db6e0def6132977d2bee71676dbbda380", size = 56917 }, +] + +[[package]] +name = "bio" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "biopython" }, + { name = "gprofiler-official" }, + { name = "mygene" }, + { name = "pandas" }, + { name = "pooch" }, + { name = "requests" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/ba/fdaa4c286ed50f96835a5f81c72d6c76933fb890ee1ff2269b6110ea851e/bio-1.7.1.tar.gz", hash = "sha256:df3252905b0b1e739eca3760c91fd519d5af07b09632df25c2bd4ecd20da2724", size = 241383 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/40/747f3038ac636e520da52f7b9f5721779a50f88fdfc165847b0d8127dae2/bio-1.7.1-py3-none-any.whl", hash = "sha256:851545804b08413a3f27fd5131edefc30acfdee513919eebabb29678d8632218", size = 280992 }, +] + +[[package]] +name = "biomart" +version = "0.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/e1/4cf2bab581d3bd3f450ffd5e02ba2b6a696de169b63a7ebacfafb04b3425/biomart-0.9.2.tar.gz", hash = "sha256:a75e53b1bea4abae0b3a9deab389333ea00f2f88c75f66ab332002ee30862619", size = 8391 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/b7/684fabf2c8d695a5a85b65101405435611b78cbb6e013782bab7ed4b2e9a/biomart-0.9.2-py3-none-any.whl", hash = "sha256:69fd29b42efac99370951eed3f9ece9ae9b01868e85d104d9877f8cb99e7bd0f", size = 12408 }, +] + +[[package]] +name = "bionty" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "lamindb" }, + { name = "pronto" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/20/91073d89a9bdf431a0f7b6f95be9e9118ac8e850cdba6d6556cf3db2cc7e/bionty-0.49.0.tar.gz", hash = "sha256:cd12017cb63d63d864dbdca0fe2da720100d6258f74f5201344e2c1ca5beabb1", size = 75596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/75/a04c67b58fa81c613be654f9dcd1baddab592a9412ab6ad70dc512206328/bionty-0.49.0-py2.py3-none-any.whl", hash = "sha256:83ba2f053e36a6ee08dd65d24ad09533cc82c49ed60875932f51a87cb92a1b9d", size = 83124 }, +] + +[[package]] +name = "biopython" +version = "1.84" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/7f/eaca4de03f0ee06c9d578d2730fd55858a57cee3620c62d3bc17b5da5447/biopython-1.84.tar.gz", hash = "sha256:60fbe6f996e8a6866a42698c17e552127d99a9aab3259d6249fbaabd0e0cc7b4", size = 25793001 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/41/9ae8eedc878d0d605e0a0c125f802662ceb9e8d241560b6b719246abab63/biopython-1.84-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c8beded38884abae4c74cb6ce54142da670273fd0b2919bd0f84f6e34d3056b", size = 2754132 }, + { url = "https://files.pythonhosted.org/packages/fb/da/90c7fa24b0369633fff3f17ff42630a7c5afb719262478ccdd8dc028914b/biopython-1.84-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b51ef31bfb79872a182a85b4113625e1b553c024bb1586c72ac98b479f8d8fe4", size = 2737785 }, + { url = "https://files.pythonhosted.org/packages/57/fd/99f06b60fd7a5de22b9f3ca279a25def5ce16a629025e453fbf53e4ec6d4/biopython-1.84-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca8d6a88b9a9718074b3f5b450f9ea5adf7112a7dbaed55d82d5b623f5859a01", size = 3162459 }, + { url = "https://files.pythonhosted.org/packages/46/3a/ebabbce6d7356091152402543ba2e3b2270cd12dd8153d800e585fa88900/biopython-1.84-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dc2e77490725060330003f73b6b7d5172f8bc160f180de5877a2e899ad999d4", size = 3179983 }, + { url = "https://files.pythonhosted.org/packages/c2/cc/117ca18ec2cdac61cd233d5c13f5abfb5270f560bca1214d7872ca418de6/biopython-1.84-cp310-cp310-win32.whl", hash = "sha256:4f39b38e7625c33384954130d90f19984e91cb5af64e2fb128603359f86884ad", size = 2755596 }, + { url = "https://files.pythonhosted.org/packages/09/4b/ec7b34b767fc77e86d6857152faafca0d395a454ce60baad36f0f95a782b/biopython-1.84-cp310-cp310-win_amd64.whl", hash = "sha256:9e3f7476fd81f31e048965d7be2826f018686e870d96870f440b609002953954", size = 2792299 }, + { url = "https://files.pythonhosted.org/packages/c5/7b/c1e9f66e23b01958ae0284a437a0e586ce20387fc6ea0382c21230ac59bc/biopython-1.84-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d4ed30aebd96b4aadeb1f04adce92795c696f5bd56d1fd45517b89059918dd4", size = 2754460 }, + { url = "https://files.pythonhosted.org/packages/5f/49/c9ffacca2e26259e28215e0ac599db21adf4070359d2aa9d006f3ecf1051/biopython-1.84-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c792508988fc3ccf18eaae2a826c9cd97f1c27fb55bb87bdce6a101fee9f5a0c", size = 2737878 }, + { url = "https://files.pythonhosted.org/packages/b4/d6/5aae16c1dd91284a40b769926cd69214ddbb986e710f6d44dbe1f6f20c34/biopython-1.84-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:507ac3956f3107e77fee362ecb048dafb5f97cbcf110012d091418430c3227c7", size = 3174779 }, + { url = "https://files.pythonhosted.org/packages/4c/3c/cecf231afa65e7194ac06ba981631a9870515bb7a37a15cad1ab414325c4/biopython-1.84-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:894ee7533cca7f5f9769e2595fbe7b0dba5018f39a2170753d101a13e7585ff4", size = 3192041 }, + { url = "https://files.pythonhosted.org/packages/0f/6c/3e8f01ddea31eeba4cddaa6dbb37b7978ea0164bd35b783fda9f5be59cc4/biopython-1.84-cp311-cp311-win32.whl", hash = "sha256:7f4c746825721ec367c2f2d6a8cda3bc6495a1e084e5b2fbab26e9467706603f", size = 2755506 }, + { url = "https://files.pythonhosted.org/packages/89/38/e45df36e10de29141ba0e5d94bfb942925e62cb6ad182e58b74fa5edcfcc/biopython-1.84-cp311-cp311-win_amd64.whl", hash = "sha256:2cb8e839ab472244b6082635ad1df67c94c05df0bd02a023103ed00ea66c4d20", size = 2792261 }, + { url = "https://files.pythonhosted.org/packages/f7/f6/a61af0d2c8c04e446bce4727e8124797132858f518b6d6543d0e7213abed/biopython-1.84-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ba58a6d76288333c5f178a426116953fa68204bd0cfc401694087dd4f96d0059", size = 2755863 }, + { url = "https://files.pythonhosted.org/packages/e9/1a/25c7df41987383070987f7b9842f48d3a33b0a78a85c2ca9d93ed810fa2a/biopython-1.84-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3566f6dc3acf20e238540daf896f0af20cff531521bf41fdf5143f73e209ae", size = 2738072 }, + { url = "https://files.pythonhosted.org/packages/a2/b2/c7f2a0a151208c634ac1eaa5d6345899659b1d5a700a84ef2e4f2b0e80a9/biopython-1.84-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ef3967f5a88b5bb6344bef75ae83386de53fed3966d5c8c334ad885f8db08a", size = 3186633 }, + { url = "https://files.pythonhosted.org/packages/46/37/7db2bcbb396edba3f767dd89ac23ef5adc35c7a92ef3912c06d1e71469e1/biopython-1.84-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61765b71f84814a1eeb55ab222f43330aa7ad3e55ab91e8b444706149c67a281", size = 3206061 }, + { url = "https://files.pythonhosted.org/packages/b2/12/6c9d73cbb8c9d19ab4187aaf187f967de6e83738947b7180fdd8bc9211a2/biopython-1.84-cp312-cp312-win32.whl", hash = "sha256:52b6098f47d6b90fc8a5e8579b81ee50047e9108f0976e69c891ae0c4817e42d", size = 2756622 }, + { url = "https://files.pythonhosted.org/packages/d1/53/91d12cc254a804c797afaefec91ede04bc1f7cbd788a04ebbea9e31ee0cf/biopython-1.84-cp312-cp312-win_amd64.whl", hash = "sha256:ecff2fcf5da29b600474c0bfcdbbac0f98b25e22fe60a853d0ee798c00f7396c", size = 2792652 }, +] + +[[package]] +name = "biothings-client" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/54/1a6bce6507a986906a828786e3f2c7411ae12d846d4d3edf806ec405bc9a/biothings_client-0.3.1.tar.gz", hash = "sha256:c972bf2e02b6f9cc78f7f2fbc5ef02cc56fe4f8a2adcb8801ec902f4ab7011e6", size = 25893 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/21/6c4bdb8ba8d2cdeb5ac3a6460ab1cbd841e46cd851d6b00028b327c5deb3/biothings_client-0.3.1-py2.py3-none-any.whl", hash = "sha256:c08437f652d9282da785e098288ef7cf3aa2a79f5d90c480eadfce96b846013e", size = 29350 }, +] + +[[package]] +name = "bokeh" +version = "3.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "jinja2" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "tornado" }, + { name = "xyzservices" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/43/02107c6439341d2da5730c99a8765823f8743a125f83fac526233332ab18/bokeh-3.5.2.tar.gz", hash = "sha256:03a54a67db677b8881834271c620a781b383ae593af5c3ea2149164754440d07", size = 6163320 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/47/c3971a7a011c8d80a0c7e40c7f51e6a6bb2a186b46a5ec2d2ade49d6b970/bokeh-3.5.2-py3-none-any.whl", hash = "sha256:2be7bc1484a961c496294c8725c47f21129191cb6b3fa45f953cc97ae075bc4b", size = 6772142 }, +] + +[[package]] +name = "boltons" +version = "24.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fb/214de4d813f566849956915ff07ee60f2b86424f294525e60e01c460d4d2/boltons-24.0.0.tar.gz", hash = "sha256:7153feccaea1ff2e1472f68d4b57fadb796a2ee49d29f638f1c9cd8fb5ebd916", size = 239550 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/35/e50d4a115f93e2a3fbf52438435bb2efcf14c11d4fcd6bdcd77a6fc399c9/boltons-24.0.0-py3-none-any.whl", hash = "sha256:9618695a6ec4f50412e7072e5d78910a00b4111d0b9b549e4a3d60bc321e7807", size = 191661 }, +] + +[[package]] +name = "botocore" +version = "1.35.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/2f/9da463c355b1f744223383c8efc817a6db1789341a842cfdbf1522840684/botocore-1.35.7.tar.gz", hash = "sha256:85e4b58f2c6e54dfbf52eaee72ebc9b70188fd1716d47f626874abadcee45512", size = 12687742 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/eb/ebe5bc70c3ab95f973410374c6a7c29e47d780f22185c21f13f2dad2e660/botocore-1.35.7-py3-none-any.whl", hash = "sha256:324e58518a92f2946bc6653e5e1272bc88d4b6313413f938bdc51cb90d34cbba", size = 12478086 }, +] + +[[package]] +name = "cellxgene-census" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "numpy" }, + { name = "requests" }, + { name = "s3fs" }, + { name = "tiledbsoma" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/73/b0b13d2229a44d5e19acfdd818033b61707c6c7a99a9a5e10b87819fbb3a/cellxgene_census-1.16.0.tar.gz", hash = "sha256:ea350a1fa976fc9867491347e19823a799bc57421ea9246d10e75138d31a8281", size = 124016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/c7/f5a8ab453f6e3fe96aebf6aa1997cbc3dc4d937fd9fcb72dfbe9c34b1b9c/cellxgene_census-1.16.0-py3-none-any.whl", hash = "sha256:8dbf866235abd3fff52f44f7c4fef2239ed943411e7109274aa051fb19f913eb", size = 54924 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/61/095a0aa1a84d1481998b534177c8566fdc50bb1233ea9a0478cd3cc075bd/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", size = 194219 }, + { url = "https://files.pythonhosted.org/packages/cc/94/f7cf5e5134175de79ad2059edf2adce18e0685ebdb9227ff0139975d0e93/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", size = 122521 }, + { url = "https://files.pythonhosted.org/packages/46/6a/d5c26c41c49b546860cc1acabdddf48b0b3fb2685f4f5617ac59261b44ae/charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", size = 120383 }, + { url = "https://files.pythonhosted.org/packages/b8/60/e2f67915a51be59d4539ed189eb0a2b0d292bf79270410746becb32bc2c3/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", size = 138223 }, + { url = "https://files.pythonhosted.org/packages/05/8c/eb854996d5fef5e4f33ad56927ad053d04dc820e4a3d39023f35cad72617/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", size = 148101 }, + { url = "https://files.pythonhosted.org/packages/f6/93/bb6cbeec3bf9da9b2eba458c15966658d1daa8b982c642f81c93ad9b40e1/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", size = 140699 }, + { url = "https://files.pythonhosted.org/packages/da/f1/3702ba2a7470666a62fd81c58a4c40be00670e5006a67f4d626e57f013ae/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", size = 142065 }, + { url = "https://files.pythonhosted.org/packages/3f/ba/3f5e7be00b215fa10e13d64b1f6237eb6ebea66676a41b2bcdd09fe74323/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", size = 144505 }, + { url = "https://files.pythonhosted.org/packages/33/c3/3b96a435c5109dd5b6adc8a59ba1d678b302a97938f032e3770cc84cd354/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", size = 139425 }, + { url = "https://files.pythonhosted.org/packages/43/05/3bf613e719efe68fb3a77f9c536a389f35b95d75424b96b426a47a45ef1d/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", size = 145287 }, + { url = "https://files.pythonhosted.org/packages/58/78/a0bc646900994df12e07b4ae5c713f2b3e5998f58b9d3720cce2aa45652f/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", size = 149929 }, + { url = "https://files.pythonhosted.org/packages/eb/5c/97d97248af4920bc68687d9c3b3c0f47c910e21a8ff80af4565a576bd2f0/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", size = 141605 }, + { url = "https://files.pythonhosted.org/packages/a8/31/47d018ef89f95b8aded95c589a77c072c55e94b50a41aa99c0a2008a45a4/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", size = 142646 }, + { url = "https://files.pythonhosted.org/packages/ae/d5/4fecf1d58bedb1340a50f165ba1c7ddc0400252d6832ff619c4568b36cc0/charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", size = 92846 }, + { url = "https://files.pythonhosted.org/packages/a2/a0/4af29e22cb5942488cf45630cbdd7cefd908768e69bdd90280842e4e8529/charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", size = 100343 }, + { url = "https://files.pythonhosted.org/packages/68/77/02839016f6fbbf808e8b38601df6e0e66c17bbab76dff4613f7511413597/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", size = 191647 }, + { url = "https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", size = 121434 }, + { url = "https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", size = 118979 }, + { url = "https://files.pythonhosted.org/packages/e4/a6/7ee57823d46331ddc37dd00749c95b0edec2c79b15fc0d6e6efb532e89ac/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", size = 136582 }, + { url = "https://files.pythonhosted.org/packages/74/f1/0d9fe69ac441467b737ba7f48c68241487df2f4522dd7246d9426e7c690e/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", size = 146645 }, + { url = "https://files.pythonhosted.org/packages/05/31/e1f51c76db7be1d4aef220d29fbfa5dbb4a99165d9833dcbf166753b6dc0/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", size = 139398 }, + { url = "https://files.pythonhosted.org/packages/40/26/f35951c45070edc957ba40a5b1db3cf60a9dbb1b350c2d5bef03e01e61de/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", size = 140273 }, + { url = "https://files.pythonhosted.org/packages/07/07/7e554f2bbce3295e191f7e653ff15d55309a9ca40d0362fcdab36f01063c/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", size = 142577 }, + { url = "https://files.pythonhosted.org/packages/d8/b5/eb705c313100defa57da79277d9207dc8d8e45931035862fa64b625bfead/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", size = 137747 }, + { url = "https://files.pythonhosted.org/packages/19/28/573147271fd041d351b438a5665be8223f1dd92f273713cb882ddafe214c/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", size = 143375 }, + { url = "https://files.pythonhosted.org/packages/cf/7c/f3b682fa053cc21373c9a839e6beba7705857075686a05c72e0f8c4980ca/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/1e/49/7ab74d4ac537ece3bc3334ee08645e231f39f7d6df6347b29a74b0537103/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", size = 140232 }, + { url = "https://files.pythonhosted.org/packages/2d/dc/9dacba68c9ac0ae781d40e1a0c0058e26302ea0660e574ddf6797a0347f7/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", size = 140859 }, + { url = "https://files.pythonhosted.org/packages/6c/c2/4a583f800c0708dd22096298e49f887b49d9746d0e78bfc1d7e29816614c/charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", size = 92509 }, + { url = "https://files.pythonhosted.org/packages/57/ec/80c8d48ac8b1741d5b963797b7c0c869335619e13d4744ca2f67fc11c6fc/charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", size = 99870 }, + { url = "https://files.pythonhosted.org/packages/d1/b2/fcedc8255ec42afee97f9e6f0145c734bbe104aac28300214593eb326f1d/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", size = 192892 }, + { url = "https://files.pythonhosted.org/packages/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", size = 122213 }, + { url = "https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", size = 119404 }, + { url = "https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", size = 137275 }, + { url = "https://files.pythonhosted.org/packages/91/33/749df346e93d7a30cdcb90cbfdd41a06026317bfbfb62cd68307c1a3c543/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", size = 147518 }, + { url = "https://files.pythonhosted.org/packages/72/1a/641d5c9f59e6af4c7b53da463d07600a695b9824e20849cb6eea8a627761/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", size = 140182 }, + { url = "https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", size = 141869 }, + { url = "https://files.pythonhosted.org/packages/df/3e/a06b18788ca2eb6695c9b22325b6fde7dde0f1d1838b1792a0076f58fe9d/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", size = 144042 }, + { url = "https://files.pythonhosted.org/packages/45/59/3d27019d3b447a88fe7e7d004a1e04be220227760264cc41b405e863891b/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", size = 138275 }, + { url = "https://files.pythonhosted.org/packages/7b/ef/5eb105530b4da8ae37d506ccfa25057961b7b63d581def6f99165ea89c7e/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", size = 144819 }, + { url = "https://files.pythonhosted.org/packages/a2/51/e5023f937d7f307c948ed3e5c29c4b7a3e42ed2ee0b8cdf8f3a706089bf0/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", size = 149415 }, + { url = "https://files.pythonhosted.org/packages/24/9d/2e3ef673dfd5be0154b20363c5cdcc5606f35666544381bee15af3778239/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", size = 141212 }, + { url = "https://files.pythonhosted.org/packages/5b/ae/ce2c12fcac59cb3860b2e2d76dc405253a4475436b1861d95fe75bdea520/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", size = 142167 }, + { url = "https://files.pythonhosted.org/packages/ed/3a/a448bf035dce5da359daf9ae8a16b8a39623cc395a2ffb1620aa1bce62b0/charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", size = 93041 }, + { url = "https://files.pythonhosted.org/packages/b6/7c/8debebb4f90174074b827c63242c23851bdf00a532489fba57fef3416e40/charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", size = 100397 }, + { url = "https://files.pythonhosted.org/packages/28/76/e6222113b83e3622caa4bb41032d0b1bf785250607392e1b778aca0b8a7d/charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", size = 48543 }, +] + +[[package]] +name = "chex" +version = "0.1.86" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py" }, + { name = "jax" }, + { name = "jaxlib" }, + { name = "numpy" }, + { name = "setuptools", marker = "python_full_version >= '3.12'" }, + { name = "toolz" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/a2/46649fb9f6a33cc7c2822161cc5481f0ffe5965fde1e6fc4c3003cd22323/chex-0.1.86.tar.gz", hash = "sha256:e8b0f96330eba4144659e1617c0f7a57b161e8cbb021e55c6d5056c7378091d1", size = 89021 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ed/625d545d08c6e258d2d63a93a0bf8ed8a296c09d254208e73f9d4fb0b746/chex-0.1.86-py3-none-any.whl", hash = "sha256:251c20821092323a3d9c28e1cf80e4a58180978bec368f531949bd9847eee568", size = 98167 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "cloudpickle" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/72/42a6570fc61b1f8913529728ad314c7cf5961540728dcad22c33fb2db6b6/cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882", size = 21231 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/43/dae06432d0c4b1dc9e9149ad37b4ca8384cf6eb7700cd9215b177b914f0a/cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7", size = 20088 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, +] + +[[package]] +name = "contourpy" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", size = 13464370 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/e0/be8dcc796cfdd96708933e0e2da99ba4bb8f9b2caa9d560a50f3f09a65f3/contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", size = 265366 }, + { url = "https://files.pythonhosted.org/packages/50/d6/c953b400219443535d412fcbbc42e7a5e823291236bc0bb88936e3cc9317/contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", size = 249226 }, + { url = "https://files.pythonhosted.org/packages/6f/b4/6fffdf213ffccc28483c524b9dad46bb78332851133b36ad354b856ddc7c/contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", size = 308460 }, + { url = "https://files.pythonhosted.org/packages/cf/6c/118fc917b4050f0afe07179a6dcbe4f3f4ec69b94f36c9e128c4af480fb8/contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", size = 347623 }, + { url = "https://files.pythonhosted.org/packages/f9/a4/30ff110a81bfe3abf7b9673284d21ddce8cc1278f6f77393c91199da4c90/contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", size = 317761 }, + { url = "https://files.pythonhosted.org/packages/99/e6/d11966962b1aa515f5586d3907ad019f4b812c04e4546cc19ebf62b5178e/contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", size = 322015 }, + { url = "https://files.pythonhosted.org/packages/4d/e3/182383743751d22b7b59c3c753277b6aee3637049197624f333dac5b4c80/contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", size = 1262672 }, + { url = "https://files.pythonhosted.org/packages/78/53/974400c815b2e605f252c8fb9297e2204347d1755a5374354ee77b1ea259/contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", size = 1321688 }, + { url = "https://files.pythonhosted.org/packages/52/29/99f849faed5593b2926a68a31882af98afbeac39c7fdf7de491d9c85ec6a/contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", size = 171145 }, + { url = "https://files.pythonhosted.org/packages/a9/97/3f89bba79ff6ff2b07a3cbc40aa693c360d5efa90d66e914f0ff03b95ec7/contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", size = 216019 }, + { url = "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", size = 266356 }, + { url = "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", size = 250915 }, + { url = "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", size = 310443 }, + { url = "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", size = 348548 }, + { url = "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", size = 319118 }, + { url = "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", size = 323162 }, + { url = "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", size = 1265396 }, + { url = "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", size = 1324297 }, + { url = "https://files.pythonhosted.org/packages/4d/2c/021a7afaa52fe891f25535506cc861c30c3c4e5a1c1ce94215e04b293e72/contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", size = 171808 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/804f02ff30a7fae21f98198828d0857439ec4c91a96e20cf2d6c49372966/contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", size = 217181 }, + { url = "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", size = 267838 }, + { url = "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", size = 251549 }, + { url = "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", size = 303177 }, + { url = "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", size = 341735 }, + { url = "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", size = 314679 }, + { url = "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", size = 320549 }, + { url = "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", size = 1263068 }, + { url = "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", size = 1322833 }, + { url = "https://files.pythonhosted.org/packages/73/e3/69738782e315a1d26d29d71a550dbbe3eb6c653b028b150f70c1a5f4f229/contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", size = 172681 }, + { url = "https://files.pythonhosted.org/packages/0c/89/9830ba00d88e43d15e53d64931e66b8792b46eb25e2050a88fec4a0df3d5/contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", size = 218283 }, + { url = "https://files.pythonhosted.org/packages/53/a1/d20415febfb2267af2d7f06338e82171824d08614084714fb2c1dac9901f/contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3", size = 267879 }, + { url = "https://files.pythonhosted.org/packages/aa/45/5a28a3570ff6218d8bdfc291a272a20d2648104815f01f0177d103d985e1/contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7", size = 251573 }, + { url = "https://files.pythonhosted.org/packages/39/1c/d3f51540108e3affa84f095c8b04f0aa833bb797bc8baa218a952a98117d/contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84", size = 303184 }, + { url = "https://files.pythonhosted.org/packages/00/56/1348a44fb6c3a558c1a3a0cd23d329d604c99d81bf5a4b58c6b71aab328f/contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0", size = 340262 }, + { url = "https://files.pythonhosted.org/packages/2b/23/00d665ba67e1bb666152131da07e0f24c95c3632d7722caa97fb61470eca/contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b", size = 313806 }, + { url = "https://files.pythonhosted.org/packages/5a/42/3cf40f7040bb8362aea19af9a5fb7b32ce420f645dd1590edcee2c657cd5/contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da", size = 319710 }, + { url = "https://files.pythonhosted.org/packages/05/32/f3bfa3fc083b25e1a7ae09197f897476ee68e7386e10404bdf9aac7391f0/contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14", size = 1264107 }, + { url = "https://files.pythonhosted.org/packages/1c/1e/1019d34473a736664f2439542b890b2dc4c6245f5c0d8cdfc0ccc2cab80c/contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8", size = 1322458 }, + { url = "https://files.pythonhosted.org/packages/22/85/4f8bfd83972cf8909a4d36d16b177f7b8bdd942178ea4bf877d4a380a91c/contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294", size = 172643 }, + { url = "https://files.pythonhosted.org/packages/cc/4a/fb3c83c1baba64ba90443626c228ca14f19a87c51975d3b1de308dd2cf08/contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087", size = 218301 }, + { url = "https://files.pythonhosted.org/packages/76/65/702f4064f397821fea0cb493f7d3bc95a5d703e20954dce7d6d39bacf378/contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8", size = 278972 }, + { url = "https://files.pythonhosted.org/packages/80/85/21f5bba56dba75c10a45ec00ad3b8190dbac7fd9a8a8c46c6116c933e9cf/contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b", size = 263375 }, + { url = "https://files.pythonhosted.org/packages/0a/64/084c86ab71d43149f91ab3a4054ccf18565f0a8af36abfa92b1467813ed6/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973", size = 307188 }, + { url = "https://files.pythonhosted.org/packages/3d/ff/d61a4c288dc42da0084b8d9dc2aa219a850767165d7d9a9c364ff530b509/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18", size = 345644 }, + { url = "https://files.pythonhosted.org/packages/ca/aa/00d2313d35ec03f188e8f0786c2fc61f589306e02fdc158233697546fd58/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8", size = 317141 }, + { url = "https://files.pythonhosted.org/packages/8d/6a/b5242c8cb32d87f6abf4f5e3044ca397cb1a76712e3fa2424772e3ff495f/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6", size = 323469 }, + { url = "https://files.pythonhosted.org/packages/6f/a6/73e929d43028a9079aca4bde107494864d54f0d72d9db508a51ff0878593/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2", size = 1260894 }, + { url = "https://files.pythonhosted.org/packages/2b/1e/1e726ba66eddf21c940821df8cf1a7d15cb165f0682d62161eaa5e93dae1/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927", size = 1314829 }, + { url = "https://files.pythonhosted.org/packages/d1/09/60e486dc2b64c94ed33e58dcfb6f808192c03dfc5574c016218b9b7680dc/contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c", size = 261886 }, + { url = "https://files.pythonhosted.org/packages/19/20/b57f9f7174fcd439a7789fb47d764974ab646fa34d1790551de386457a8e/contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", size = 311008 }, + { url = "https://files.pythonhosted.org/packages/74/fc/5040d42623a1845d4f17a418e590fd7a79ae8cb2bad2b2f83de63c3bdca4/contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", size = 215690 }, +] + +[[package]] +name = "ctxcore" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cytoolz" }, + { name = "frozendict" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "tqdm" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/be/b60e62d10d80c80c5492739d6f2833ca2973bbc4088fcecf7053b5719da7/ctxcore-0.2.0-py3-none-any.whl", hash = "sha256:b90570377e26280c4861ebad1f4cee2fe598167c5d4bd12c1b713f03c9682627", size = 5837839 }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, +] + +[[package]] +name = "cytoolz" +version = "0.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/d8/8df71050b214686591241a1826d2e6934b5c295c5bc57f643e4ed697f1eb/cytoolz-0.12.3.tar.gz", hash = "sha256:4503dc59f4ced53a54643272c61dc305d1dbbfbd7d6bdf296948de9f34c3a282", size = 625899 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/11/ebc8b85c77cc2247c169af808901a80e5d29429b3c9b0d114d4048ad2a5a/cytoolz-0.12.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bbe58e26c84b163beba0fbeacf6b065feabc8f75c6d3fe305550d33f24a2d346", size = 413462 }, + { url = "https://files.pythonhosted.org/packages/19/22/57f20a9f135a08a6fc9848744c324c4facca2b1370a1ae4e8333e274c707/cytoolz-0.12.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c51b66ada9bfdb88cf711bf350fcc46f82b83a4683cf2413e633c31a64df6201", size = 396040 }, + { url = "https://files.pythonhosted.org/packages/12/30/337a18b1182888bf5d59357095a83f537a88e2db32ee0381166a83deddda/cytoolz-0.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e70d9c615e5c9dc10d279d1e32e846085fe1fd6f08d623ddd059a92861f4e3dd", size = 1933264 }, + { url = "https://files.pythonhosted.org/packages/93/a3/c244bfacd046316cd0a4cffd2e245a8dd9b685168497c3b7c776bdb72c59/cytoolz-0.12.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a83f4532707963ae1a5108e51fdfe1278cc8724e3301fee48b9e73e1316de64f", size = 2014114 }, + { url = "https://files.pythonhosted.org/packages/a6/40/51bdfe7fd1cad802eabebb7bb742e694227db25c4806eebf4358229e3220/cytoolz-0.12.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d028044524ee2e815f36210a793c414551b689d4f4eda28f8bbb0883ad78bf5f", size = 1999458 }, + { url = "https://files.pythonhosted.org/packages/f7/0b/5973e0ceab96349f9cabb3b20ecc3a717a19e355f68d354dfa538bebb226/cytoolz-0.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c2875bcd1397d0627a09a4f9172fa513185ad302c63758efc15b8eb33cc2a98", size = 1956106 }, + { url = "https://files.pythonhosted.org/packages/d3/01/bb850ad1467f0d1dc5a21a05e3df6ad308a19d095f07583c4e65a85e2ba8/cytoolz-0.12.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:131ff4820e5d64a25d7ad3c3556f2d8aa65c66b3f021b03f8a8e98e4180dd808", size = 1861974 }, + { url = "https://files.pythonhosted.org/packages/c9/97/207e544a2c9c3d8735102403982a319c252c337e9cf792c2753c22cff1b6/cytoolz-0.12.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:04afa90d9d9d18394c40d9bed48c51433d08b57c042e0e50c8c0f9799735dcbd", size = 1937926 }, + { url = "https://files.pythonhosted.org/packages/76/1e/6cc756537caef16cd491de1550c1f25140528785e28263326bd3243a19ed/cytoolz-0.12.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:dc1ca9c610425f9854323669a671fc163300b873731584e258975adf50931164", size = 1859141 }, + { url = "https://files.pythonhosted.org/packages/20/43/30819bbc4348cabb44d800ab0d0efb29a9d21db8f75060fd1199d5300953/cytoolz-0.12.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bfa3f8e01bc423a933f2e1c510cbb0632c6787865b5242857cc955cae220d1bf", size = 2013731 }, + { url = "https://files.pythonhosted.org/packages/bd/ab/cacabf2d0dfea006575fea900131eb491370ee1664783f80cb131f577001/cytoolz-0.12.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:f702e295dddef5f8af4a456db93f114539b8dc2a7a9bc4de7c7e41d169aa6ec3", size = 2015075 }, + { url = "https://files.pythonhosted.org/packages/79/6f/98eeee4f735bff536654625e0c38e50c4b01c13fbd9c744d3284dbccc54d/cytoolz-0.12.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0fbad1fb9bb47e827d00e01992a099b0ba79facf5e5aa453be066033232ac4b5", size = 1953391 }, + { url = "https://files.pythonhosted.org/packages/6a/81/80bcbc750e3c8f72d07f1e61c25597fdb23fec3c3d52542f220bff87372c/cytoolz-0.12.3-cp310-cp310-win32.whl", hash = "sha256:8587c3c3dbe78af90c5025288766ac10dc2240c1e76eb0a93a4e244c265ccefd", size = 320881 }, + { url = "https://files.pythonhosted.org/packages/45/9e/cce296c6da9404ce210c79700b85d9ba582a6e908ee88ec707efec09bcd9/cytoolz-0.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e45803d9e75ef90a2f859ef8f7f77614730f4a8ce1b9244375734567299d239", size = 362216 }, + { url = "https://files.pythonhosted.org/packages/98/8a/618a70326d4a52998a6bbb11ca019979891a51b85cbbfce8f9762eec5d2c/cytoolz-0.12.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3ac4f2fb38bbc67ff1875b7d2f0f162a247f43bd28eb7c9d15e6175a982e558d", size = 416356 }, + { url = "https://files.pythonhosted.org/packages/bb/17/542f708b9116aa8d8c9c5551500bfa6ab1bddd3edc11457070599a97c197/cytoolz-0.12.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0cf1e1e96dd86829a0539baf514a9c8473a58fbb415f92401a68e8e52a34ecd5", size = 398412 }, + { url = "https://files.pythonhosted.org/packages/d6/9c/52a0460f2b59009da63794cfe11ad002d55fc88fced6ccc85f7ae10a3259/cytoolz-0.12.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08a438701c6141dd34eaf92e9e9a1f66e23a22f7840ef8a371eba274477de85d", size = 2090389 }, + { url = "https://files.pythonhosted.org/packages/c7/6d/284d4a1f88b1e63b8a1c80162244ca5d4e0b31647c4f56186f3385fd0d0e/cytoolz-0.12.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b6f11b0d7ed91be53166aeef2a23a799e636625675bb30818f47f41ad31821", size = 2187333 }, + { url = "https://files.pythonhosted.org/packages/3e/44/44efcf2acf824aefab5f3fdb97235d360c216c2425db391a8dee687f1774/cytoolz-0.12.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7fde09384d23048a7b4ac889063761e44b89a0b64015393e2d1d21d5c1f534a", size = 2173106 }, + { url = "https://files.pythonhosted.org/packages/6f/74/7c2d5af25d51f481e9be771bda2cf5496631cd0fba876d2cc0086caa732d/cytoolz-0.12.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d3bfe45173cc8e6c76206be3a916d8bfd2214fb2965563e288088012f1dabfc", size = 2098805 }, + { url = "https://files.pythonhosted.org/packages/e0/e5/9995bf66caee139459ab70d8b5820c37718d5f7e7380481adb85ef522e4d/cytoolz-0.12.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27513a5d5b6624372d63313574381d3217a66e7a2626b056c695179623a5cb1a", size = 1995956 }, + { url = "https://files.pythonhosted.org/packages/93/73/eee7a7f455d4691f1915b35d1713ba69c6851f940c6f8fffdd2efcbe4411/cytoolz-0.12.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d294e5e81ff094fe920fd545052ff30838ea49f9e91227a55ecd9f3ca19774a0", size = 2074891 }, + { url = "https://files.pythonhosted.org/packages/a3/c7/6f0c60bbb911ee3f33b243a695e2fc944285a1865bbb1dfefee1b7c35d62/cytoolz-0.12.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:727b01a2004ddb513496507a695e19b5c0cfebcdfcc68349d3efd92a1c297bf4", size = 1980228 }, + { url = "https://files.pythonhosted.org/packages/58/7c/d7524626b415d410208fd2774ff2824fab4dcbe4a496d53bdba85a1407df/cytoolz-0.12.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:fe1e1779a39dbe83f13886d2b4b02f8c4b10755e3c8d9a89b630395f49f4f406", size = 2147616 }, + { url = "https://files.pythonhosted.org/packages/a5/7b/9bdf8615e61958386f5c7108d857312214837ae3eacf3589873499d2f0aa/cytoolz-0.12.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:de74ef266e2679c3bf8b5fc20cee4fc0271ba13ae0d9097b1491c7a9bcadb389", size = 2148775 }, + { url = "https://files.pythonhosted.org/packages/45/91/b92ab0e29bf7cfaacfedc85391a0d0365a6ac74363f2532ba307a760db14/cytoolz-0.12.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e04d22049233394e0b08193aca9737200b4a2afa28659d957327aa780ddddf2", size = 2079810 }, + { url = "https://files.pythonhosted.org/packages/2f/33/8204d65871fa639d1d3ae788e3afc187f610126f53f2324d4aa37caf0630/cytoolz-0.12.3-cp311-cp311-win32.whl", hash = "sha256:20d36430d8ac809186736fda735ee7d595b6242bdb35f69b598ef809ebfa5605", size = 320212 }, + { url = "https://files.pythonhosted.org/packages/ab/e3/7ce2efaf243c9ee75fc730cd018981788b56e7ad3767f24e7a9cd14831ac/cytoolz-0.12.3-cp311-cp311-win_amd64.whl", hash = "sha256:780c06110f383344d537f48d9010d79fa4f75070d214fc47f389357dd4f010b6", size = 363570 }, + { url = "https://files.pythonhosted.org/packages/7f/57/b0feabefdff4707d0b96bf75e2298ecb209ba22c2e3fd15e5230dd68441a/cytoolz-0.12.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:86923d823bd19ce35805953b018d436f6b862edd6a7c8b747a13d52b39ed5716", size = 419825 }, + { url = "https://files.pythonhosted.org/packages/54/82/795aa9f91ee81818732b435755559857a76e16b7e435e1de434b47ce72b9/cytoolz-0.12.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3e61acfd029bfb81c2c596249b508dfd2b4f72e31b7b53b62e5fb0507dd7293", size = 401673 }, + { url = "https://files.pythonhosted.org/packages/23/f3/298f32b2e374f4f716ca74a9e46b64ee1df9f160de262391f7f9bc53ecca/cytoolz-0.12.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd728f4e6051af6af234651df49319da1d813f47894d4c3c8ab7455e01703a37", size = 2096352 }, + { url = "https://files.pythonhosted.org/packages/39/44/49929b33bd0cdccc98b281e4ca11f0836b2963c6fdec8ebb7891807ed908/cytoolz-0.12.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe8c6267caa7ec67bcc37e360f0d8a26bc3bdce510b15b97f2f2e0143bdd3673", size = 2161581 }, + { url = "https://files.pythonhosted.org/packages/e9/77/980a8bc123490dd7112e1e068da989932b7612504355ddd25593880c3156/cytoolz-0.12.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99462abd8323c52204a2a0ce62454ce8fa0f4e94b9af397945c12830de73f27e", size = 2178057 }, + { url = "https://files.pythonhosted.org/packages/23/d9/2f7a4db7f92eab4b567e56cc2fc147fed1ef35f7968e44cefcbbfb366980/cytoolz-0.12.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da125221b1fa25c690fcd030a54344cecec80074df018d906fc6a99f46c1e3a6", size = 2130881 }, + { url = "https://files.pythonhosted.org/packages/85/bf/1147229198a8fc3f2090d01263234d47b5b7f8c52c20090b1cceda0929cd/cytoolz-0.12.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c18e351956f70db9e2d04ff02f28e9a41839250d3f936a4c8a1eabd1c3094d2", size = 1979975 }, + { url = "https://files.pythonhosted.org/packages/5b/53/b730e9f428e74971f934bf73f0868099d325ffbf0c080a201bb16b6ab508/cytoolz-0.12.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:921e6d2440ac758c4945c587b1d1d9b781b72737ac0c0ca5d5e02ca1db8bded2", size = 2086861 }, + { url = "https://files.pythonhosted.org/packages/24/24/df510850c1c57ad69a23a2700083cfd285faf27d16e61f0e503eec122473/cytoolz-0.12.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1651a9bd591a8326329ce1d6336f3129161a36d7061a4d5ea9e5377e033364cf", size = 1973211 }, + { url = "https://files.pythonhosted.org/packages/b6/ad/a6e27924a6c8048b4f1ffbd8b9b0b871642bd94d3e457aa42a629c1f667b/cytoolz-0.12.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8893223b87c2782bd59f9c4bd5c7bf733edd8728b523c93efb91d7468b486528", size = 2133017 }, + { url = "https://files.pythonhosted.org/packages/26/a3/f9dfb406232d0a100994a86c123259cd2ab023aa8ae325b0d9926f80091f/cytoolz-0.12.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:e4d2961644153c5ae186db964aa9f6109da81b12df0f1d3494b4e5cf2c332ee2", size = 2156771 }, + { url = "https://files.pythonhosted.org/packages/fb/bf/ce2c6f6175a29c830904b23faee557de8c167255dbb2bb84e04d7cf5605a/cytoolz-0.12.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:71b6eb97f6695f7ba8ce69c49b707a351c5f46fd97f5aeb5f6f2fb0d6e72b887", size = 2121104 }, + { url = "https://files.pythonhosted.org/packages/bf/97/95a5fb2b5db9b1ea8856741a2a94741a71cb5640112403029beb7b3ef1df/cytoolz-0.12.3-cp312-cp312-win32.whl", hash = "sha256:cee3de65584e915053412cd178729ff510ad5f8f585c21c5890e91028283518f", size = 320537 }, + { url = "https://files.pythonhosted.org/packages/0a/11/3e69585342ce4e6b7f2f6139c8aa235dab5a4fe5c76a051fe01696618bd0/cytoolz-0.12.3-cp312-cp312-win_amd64.whl", hash = "sha256:9eef0d23035fa4dcfa21e570961e86c375153a7ee605cdd11a8b088c24f707f6", size = 363238 }, + { url = "https://files.pythonhosted.org/packages/00/8c/c58e2f14a88132722988ee0951b01ee6cc4880302384f064902d6e8fb048/cytoolz-0.12.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:55f9bd1ae6c2a27eda5abe2a0b65a83029d2385c5a1da7b8ef47af5905d7e905", size = 353101 }, + { url = "https://files.pythonhosted.org/packages/35/99/6ef817203004c7055370fa1ab3bb0dfc6b7ebd0b4942099ce86007614001/cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2d271393c378282727f1231d40391ae93b93ddc0997448acc21dd0cb6a1e56d", size = 385225 }, + { url = "https://files.pythonhosted.org/packages/a2/25/64e5907b15bd16f0f38e825762540ee3293b513f2eb4b9bb51b7f78d5457/cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee98968d6a66ee83a8ceabf31182189ab5d8598998c8ce69b6d5843daeb2db60", size = 405888 }, + { url = "https://files.pythonhosted.org/packages/17/c0/0e19ab05222cf2370d580e5500409c26266f89e853fa18b2b12c530f3957/cytoolz-0.12.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01cfb8518828c1189200c02a5010ea404407fb18fd5589e29c126e84bbeadd36", size = 396781 }, + { url = "https://files.pythonhosted.org/packages/5e/39/bee67e2b541ca3478a982c68d7d23b718fa7f2947bdfc0eecdba9c4e0882/cytoolz-0.12.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:456395d7aec01db32bf9e6db191d667347c78d8d48e77234521fa1078f60dabb", size = 340712 }, +] + +[[package]] +name = "d3graph" +version = "0.1.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ismember" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "seaborn" }, + { name = "sklearn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/43/2da4bf091a3f66e553e54692845cf6cc3450e85cd22e495eb5be5ec36906/d3graph-0.1.10.tar.gz", hash = "sha256:3e28735cb4992fdd2181154fc095b03034415cef6a668da95760a1ca4177cd68", size = 93042 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/53/2116765e47bd9bd95f8131af6816f195095b41e1e2e98e9eccb6322afbd0/d3graph-0.1.10-py3-none-any.whl", hash = "sha256:1892373a3b1567db29b32f122e1db15e985baf5159c178df8c7df3d3f66cfc84", size = 97182 }, +] + +[[package]] +name = "dask" +version = "2024.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "fsspec" }, + { name = "importlib-metadata", marker = "python_full_version < '3.12'" }, + { name = "packaging" }, + { name = "partd" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/38/45caf91e66b52675ff297cb1d0663866b40eb63ee7c515a2ac98303168af/dask-2024.8.1.tar.gz", hash = "sha256:4254e43ac8c3affad2b22952f126b00a00f52c87caae91c068d8e395a4ad1a72", size = 10019056 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/f8/b69157baa34fb62ea61a7a1f1cf12c9ef0358f465243a4bc873082a129be/dask-2024.8.1-py3-none-any.whl", hash = "sha256:b8b58cba91dc9c057c8676dcc80b8bc321602b4dfd21529d33b03b55d428e2c3", size = 1239117 }, +] + +[package.optional-dependencies] +complete = [ + { name = "bokeh" }, + { name = "dask-expr" }, + { name = "distributed" }, + { name = "jinja2" }, + { name = "lz4" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pyarrow-hotfix" }, +] + +[[package]] +name = "dask-expr" +version = "1.1.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dask" }, + { name = "pandas" }, + { name = "pyarrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/cf/051fccaf78f45867aa05c155fe7d2046ecab0f2ee57b7acceaca44405a26/dask_expr-1.1.11.tar.gz", hash = "sha256:275689c269f9c30dbaf9d8d7e9d3b5ac5438ea6db73fdbf95b3f4bfb1381bc5a", size = 222087 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/97/71479af903547c5ae83e51af877094757ae0545bf28c1f8c9a575e462534/dask_expr-1.1.11-py3-none-any.whl", hash = "sha256:b9222b3d430152e3af4a1777f66bcee88651f510876cb57c720107d123d9ba63", size = 242522 }, +] + +[[package]] +name = "debugpy" +version = "1.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/f9/61c325a10ded8dc3ddc3e7cd2ed58c0b15b2ef4bf8b4bf2930ee98ed59ee/debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0", size = 4612118 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/36/0b423f94097cc86555f9a2c8717511863b2a680c9b44b5419d8ac1ff7bf2/debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7", size = 1711184 }, + { url = "https://files.pythonhosted.org/packages/57/0c/c2ec581541923a4d36cee4fd2419c1211c986849fc61097f87aa81fc6ad3/debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a", size = 2997629 }, + { url = "https://files.pythonhosted.org/packages/a8/46/3072c2cd3b20f435968275d316f6aea7ddbb760386324e6578278bc2eb99/debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed", size = 4764678 }, + { url = "https://files.pythonhosted.org/packages/38/25/e738d6f782beba924c0e10dfde2061152f1ea3608dff0e5a5bfb30c311e9/debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e", size = 4788002 }, + { url = "https://files.pythonhosted.org/packages/ad/72/fd138a10dda16775607316d60dd440fcd23e7560e9276da53c597b5917e9/debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a", size = 1786504 }, + { url = "https://files.pythonhosted.org/packages/e2/0e/d0e6af2d7bbf5ace847e4d3bd41f8f9d4a0764fcd8058f07a1c51618cbf2/debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b", size = 2642077 }, + { url = "https://files.pythonhosted.org/packages/f6/55/2a1dc192894ba9b368cdcce15315761a00f2d4cd7de4402179648840e480/debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408", size = 4702081 }, + { url = "https://files.pythonhosted.org/packages/7f/7f/942b23d64f4896e9f8776cf306dfd00feadc950a38d56398610a079b28b1/debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3", size = 4715571 }, + { url = "https://files.pythonhosted.org/packages/9a/82/7d9e1f75fb23c876ab379008c7cf484a1cfa5ed47ccaac8ba37c75e6814e/debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156", size = 1436398 }, + { url = "https://files.pythonhosted.org/packages/fd/b6/ee71d5e73712daf8307a9e85f5e39301abc8b66d13acd04dfff1702e672e/debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb", size = 1437465 }, + { url = "https://files.pythonhosted.org/packages/6c/d8/8e32bf1f2e0142f7e8a2c354338b493e87f2c44e77e233b3a140fb5efa03/debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7", size = 4581313 }, + { url = "https://files.pythonhosted.org/packages/f7/be/2fbaffecb063de228b2b3b6a1750b0b745e5dc645eddd52be8b329933c0b/debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c", size = 4581209 }, + { url = "https://files.pythonhosted.org/packages/02/49/b595c34d7bc690e8d225a6641618a5c111c7e13db5d9e2b756c15ce8f8c6/debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44", size = 4824118 }, +] + +[[package]] +name = "decorator" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, +] + +[[package]] +name = "decoupler" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6e/b6/a7bdac8e3329d363c2ecc6126757f9cc614aee02a1169153ca9e952533cc/decoupler-1.8.0.tar.gz", hash = "sha256:4f6cda3fb2c807ff8681f1d15c3167e14f3a419378b4446c8ede3b60d40afb74", size = 98822 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/ea/30d51c7fd0edccf4c5e860a6e88f1f6f4d3bd141180a8caf7a57450c3c21/decoupler-1.8.0-py3-none-any.whl", hash = "sha256:726244bd809e70412ac82b51defc92b848b5a8f347084d1b4479d9b16ecd6228", size = 126291 }, +] + +[[package]] +name = "deprecated" +version = "1.2.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/14/1e41f504a246fc224d2ac264c227975427a85caf37c3979979edb9b1b232/Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3", size = 2974416 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", size = 9561 }, +] + +[[package]] +name = "deprecation" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", size = 173788 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178 }, +] + +[[package]] +name = "dill" +version = "0.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/17/4d/ac7ffa80c69ea1df30a8aa11b3578692a5118e7cd1aa157e3ef73b092d15/dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", size = 184847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7", size = 116252 }, +] + +[[package]] +name = "distributed" +version = "2024.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "dask" }, + { name = "jinja2" }, + { name = "locket" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "sortedcontainers" }, + { name = "tblib" }, + { name = "toolz" }, + { name = "tornado" }, + { name = "urllib3" }, + { name = "zict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/1a/5b4bca2408821dda60ee2e080fd2bc7254a5233fc665503a5e26361d9b22/distributed-2024.8.1.tar.gz", hash = "sha256:82394ceb68b91118717148dbe182cff679f32621812bd7b2bc27eaaa8589f962", size = 1112241 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/bb/066efb34231bededd2d8c6e52767f923da21e77485825ef67e2a78bea8ba/distributed-2024.8.1-py3-none-any.whl", hash = "sha256:03f5d3fe7a407cdc16dd2bc25dff4900b72f8dee896b7174eebe8a10b42d8c06", size = 1019542 }, +] + +[[package]] +name = "dj-database-url" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/48/51f398a47c197f584b3445de886986ddc40de18bdb6e168f325a8d2c7bca/dj_database_url-2.2.0.tar.gz", hash = "sha256:9f9b05058ddf888f1e6f840048b8d705ff9395e3b52a07165daa3d8b9360551b", size = 10874 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/9a/13f173c716d07283661e821f7e1624d0904835151b4f099687455dbef81e/dj_database_url-2.2.0-py3-none-any.whl", hash = "sha256:3e792567b0aa9a4884860af05fe2aa4968071ad351e033b6db632f97ac6db9de", size = 7764 }, +] + +[[package]] +name = "django" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "sqlparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/6f/8f57ed6dc88656edd4fcb35c50dd963f3cd79303bd711fb0160fc7fd6ab7/Django-5.1.1.tar.gz", hash = "sha256:021ffb7fdab3d2d388bc8c7c2434eb9c1f6f4d09e6119010bbb1694dda286bc2", size = 10675933 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/aa/b423e37e9ba5480d3fd1d187e3fdbd09f9f71b991468881a45413522ccd3/Django-5.1.1-py3-none-any.whl", hash = "sha256:71603f27dac22a6533fb38d83072eea9ddb4017fead6f67f2562a40402d61c3f", size = 8246418 }, +] + +[[package]] +name = "docker-pycreds" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/e6/d1f6c00b7221e2d7c4b470132c931325c8b22c51ca62417e300f5ce16009/docker-pycreds-0.4.0.tar.gz", hash = "sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4", size = 8754 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/e8/f6bd1eee09314e7e6dee49cbe2c5e22314ccdb38db16c9fc72d2fa80d054/docker_pycreds-0.4.0-py2.py3-none-any.whl", hash = "sha256:7266112468627868005106ec19cd0d722702d2b7d5912a28e19b826c3d37af49", size = 8982 }, +] + +[[package]] +name = "docrep" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/8e/250fab1cafeea43f4eb11f1d64cd6313f639965ff62cb0d9da3883655781/docrep-0.3.2.tar.gz", hash = "sha256:ed8a17e201abd829ef8da78a0b6f4d51fb99a4cbd0554adbed3309297f964314", size = 33197 } + +[[package]] +name = "docstring-parser" +version = "0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/12/9c22a58c0b1e29271051222d8906257616da84135af9ed167c9e28f85cb3/docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e", size = 26565 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/7c/e9fcff7623954d86bdc17782036cbf715ecab1bec4847c008557affe1ca8/docstring_parser-0.16-py3-none-any.whl", hash = "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637", size = 36533 }, +] + +[[package]] +name = "einops" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/ca/9f5dcb8bead39959454c3912266bedc4c315839cee0e0ca9f4328f4588c1/einops-0.8.0.tar.gz", hash = "sha256:63486517fed345712a8385c100cb279108d9d47e6ae59099b07657e983deae85", size = 58861 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/5a/f0b9ad6c0a9017e62d4735daaeb11ba3b6c009d69a26141b258cd37b5588/einops-0.8.0-py3-none-any.whl", hash = "sha256:9572fb63046264a862693b0a87088af3bdc8c068fde03de63453cbbde245465f", size = 43223 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "executing" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/e3/7d45f492c2c4a0e8e0fad57d081a7c8a0286cdd86372b070cca1ec0caa1e/executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab", size = 977485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805 }, +] + +[[package]] +name = "fair-esm" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/fb/61ddfd2f058c298491d500b606808aab6729944da844fbe63cb7be405a9a/fair-esm-2.0.0.tar.gz", hash = "sha256:4ed34d4598ec75ed6550a4e581d023bf8d4a8375317ecba6269bb68135f80c85", size = 84217 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/26/1cc82571f507b9dae3b36d4242764edc6e4ae9f3f81f44a6382c15fad565/fair_esm-2.0.0-py3-none-any.whl", hash = "sha256:7dcb58828a401155d1457d071a03800bd1a50331ddf24ac79ad1dd0f2ea682a2", size = 93125 }, +] + +[[package]] +name = "fasteners" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d4/e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902/fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c", size = 24832 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", size = 18679 }, +] + +[[package]] +name = "fastobo" +version = "0.12.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/5a/4c691a5628d2d20e70ddb6ddd248f98fc13828665cd84a3b84efa2aa436d/fastobo-0.12.3.tar.gz", hash = "sha256:f375932a24b078706797eb9296740f2d2e6987a34309bda7c9f235aba1d74217", size = 19511108 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/3a/6729c07900377545e10336b5ee2e023045a2ed435cc396c2d3e1bc7a5a84/fastobo-0.12.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:79fe4f5ba1ec1a2bc1ca0d65834cfc622db639128ba89019328937e623c54094", size = 1789872 }, + { url = "https://files.pythonhosted.org/packages/77/40/005475de59d7d9364379871240c6a6a6aaf8069a79aa83b2ee23d0f89f58/fastobo-0.12.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:21c347ec270d0ef6e120ba701370a8ef20953654b397d2814f62595d4d7c0062", size = 1728193 }, + { url = "https://files.pythonhosted.org/packages/97/f2/3413ce3b273a6bc675c40b491be5fa25154a61444f41b246209b2094f6ea/fastobo-0.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b5cc3676bfbe902632075455eb8faef2e3c2812423bb172e0c9bb905e93e04", size = 2013890 }, + { url = "https://files.pythonhosted.org/packages/4e/72/cb9fa4dc9b3d15a16aa86add09e5f758a9e1f9ba23ec45a714815319b8df/fastobo-0.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:922e61874e3c436c1990fb741f69b15c8395d1c760c569f2b4f024c7d315a0f4", size = 2005960 }, + { url = "https://files.pythonhosted.org/packages/93/e5/dff9b9f023b59dc88e0f8cb3d7e4956f8ccbb355840aa36218a002f7cae4/fastobo-0.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:c8f73c80ae92fd7ba8e0532880b53308200563a7ce2137ed751dd3bfb5dcde88", size = 1641733 }, + { url = "https://files.pythonhosted.org/packages/11/21/fa4726611b9111f7f06e365e32cfe02f286ee747eca3761a82366d4ef284/fastobo-0.12.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7862627caf2deda767a8b5278f7da3bf6cb8173130505f7aed03c41d5b512de9", size = 1789798 }, + { url = "https://files.pythonhosted.org/packages/36/88/dfa03441c9cf9ee5433edeb1a8295a1d28a7b85b8738f7f49547f783b053/fastobo-0.12.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b496e003db5ae1d27de3c5078a3a00d1bcb84b436eb68461a55efd3af979bbc6", size = 1728153 }, + { url = "https://files.pythonhosted.org/packages/e0/e4/6763baf33487cd34253870e9b6bbcdd8d2ab9ce3e58f53d222144f9ce0ff/fastobo-0.12.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fed9875760ea2f0d7d9a3697f83a3168c3cd46005b41096dafbae97220a9637", size = 2014429 }, + { url = "https://files.pythonhosted.org/packages/23/56/71bb19b601ca16bfc4ef75ad4ee1c1f492ea3d2c21737c9b6ac2ce642147/fastobo-0.12.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:debab1d3144506a9b4c0d98261ecf7bdcadb5f420843358188b11bc9312aec90", size = 2006413 }, + { url = "https://files.pythonhosted.org/packages/71/be/f3d871c5ade5960c7be3475da5461bdaa9d654aba73648321c1eaf60eb15/fastobo-0.12.3-cp311-cp311-win_amd64.whl", hash = "sha256:5566f9f54f836e29edbdae15d22b11982db73fedfaefcbe5cc9f10f2568179a4", size = 1641737 }, + { url = "https://files.pythonhosted.org/packages/f4/88/22ed39c3854f87fd5d17fb5ed080e8ddf49c9623d9d1288acc39c91c0186/fastobo-0.12.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a9d6502e397bcb644ada900e33ea70683006c23598758f829be7210e375f7952", size = 1788984 }, + { url = "https://files.pythonhosted.org/packages/2a/47/8d5467e4e510c6e056356b2288baf8fba96142faab5dac6966df6cd13804/fastobo-0.12.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:673aa41d260869ba6ae07aaa716c78cb26203662e61b3e401b006d85d748cf76", size = 1727837 }, + { url = "https://files.pythonhosted.org/packages/3c/90/1a807d9eec796f0acd775609b9ff3be5cb8b29ce4d4747b710f59b06440f/fastobo-0.12.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68841568868408ac1b020d436ce29de50c7457031051d8d7389dc8d838cb244f", size = 2018118 }, + { url = "https://files.pythonhosted.org/packages/07/75/e5b6fb077a54178a20b817b89399162eabb2d664e9a56493a0afe2997053/fastobo-0.12.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09714ec07d4b0211a3ada40b7b1bfcca64aa01ba24c50d39c4d367bea058f996", size = 2010497 }, + { url = "https://files.pythonhosted.org/packages/e8/67/8ede00abcb477ef11187699d1b2c6dc26c471b02baa4b78add59b0e81de4/fastobo-0.12.3-cp312-cp312-win_amd64.whl", hash = "sha256:fa6aaa4380825692c863f2cf9a0ad667973af8dd9162fd8282331464489b3f6c", size = 1646568 }, + { url = "https://files.pythonhosted.org/packages/33/68/3016080fe4f72d9c05d5341f9058eabc2bfca579b74ad740f1fdc13be1c6/fastobo-0.12.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c8fba47c98201d0c3b0c515e1ded7608a1f3015a5a0a34df8d6cbf201d58a00e", size = 1790499 }, + { url = "https://files.pythonhosted.org/packages/61/25/7f4236f180d5c972d9cf937a4e6a5906a8210c4ddaadf14fb7094c4fdbec/fastobo-0.12.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4071609ee8c8e87b03b2e786c6bd6d6845eb3580410bf95ee29c445699a99530", size = 2014666 }, + { url = "https://files.pythonhosted.org/packages/df/0a/e84f340ee801ddb9043b2268f227d45d45955007523318cb870eb293106a/fastobo-0.12.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34781dd51ad9589e6b73bf6c3854edd22a6aba4d78d9ef17fcba3448b8501abe", size = 2013895 }, + { url = "https://files.pythonhosted.org/packages/c9/f2/f925f787460274f34675d5048c52e9a7018d636fe1b1abdb686d3125fbf6/fastobo-0.12.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:958da0f135270da6fcfb8181114e5f631e77bc11ad897112039764af19085183", size = 1642228 }, +] + +[[package]] +name = "filelock" +version = "3.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/76/3981447fd369539aba35797db99a8e2ff7ed01d9aa63e9344a31658b8d81/filelock-3.16.0.tar.gz", hash = "sha256:81de9eb8453c769b63369f87f11131a7ab04e367f8d97ad39dc230daa07e3bec", size = 18008 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/95/f9310f35376024e1086c59cbb438d319fc9a4ef853289ce7c661539edbd4/filelock-3.16.0-py3-none-any.whl", hash = "sha256:f6ed4c963184f4c84dd5557ce8fece759a3724b37b80c6c4f20a2f63a4dc6609", size = 16170 }, +] + +[[package]] +name = "fonttools" +version = "4.53.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/cb/cd80a0da995adde8ade6044a8744aee0da5efea01301cadf770f7fbe7dcc/fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4", size = 3452797 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/3b/4db0513b71eb21bf73cd9fcff47ac5cebcf0146be5f3a42263eaafabdc33/fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397", size = 2761563 }, + { url = "https://files.pythonhosted.org/packages/49/79/3976d0913db440644d14bc85ba697da7dc0847663acd6c96b0dff797f592/fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3", size = 2247768 }, + { url = "https://files.pythonhosted.org/packages/b5/c8/815092e63534257469afb7dcc90a588b0bba60df5de2a06795af4d64ea8e/fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d", size = 4568312 }, + { url = "https://files.pythonhosted.org/packages/56/61/ad19cad430aacbc3418be503e1f6daed9375c997a4e32b78a91195b3054a/fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0", size = 4624347 }, + { url = "https://files.pythonhosted.org/packages/af/a0/e8b6a6e9dc3861afb76bc449876907de4c126f817f15b21a9e44c129fdfc/fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41", size = 4564284 }, + { url = "https://files.pythonhosted.org/packages/84/63/4ade973eb583024a50f223d0d66f6f469bfe6095cc76c4bab86385faca4d/fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f", size = 4735828 }, + { url = "https://files.pythonhosted.org/packages/f5/a8/e01479b8e2b7c838b67c38b98f4efd6b7edb8baa433a108164186dd1c171/fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4", size = 2159775 }, + { url = "https://files.pythonhosted.org/packages/70/11/7b81b12a5614b5d237ab70c38bdc268de3eb3880ce7bb1269122e0a415ea/fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671", size = 2203850 }, + { url = "https://files.pythonhosted.org/packages/8b/6a/206391c869ab22d1374e2575cad7cab36b93b9e3d37f48f4696eed2c6e9e/fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1", size = 2762654 }, + { url = "https://files.pythonhosted.org/packages/f5/7e/4060d88dbfaf446e1c9f0fe9cf13dba36ba47c4da85ce5c1df084ce47e7d/fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923", size = 2247865 }, + { url = "https://files.pythonhosted.org/packages/e1/67/fff766817e17d67208f8a1e72de15066149485acb5e4ff0816b11fd5fca3/fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719", size = 4873046 }, + { url = "https://files.pythonhosted.org/packages/a4/22/0a0ad59d9367997fd74a00ad2e88d10559122e09f105e94d34c155aecc0a/fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3", size = 4920859 }, + { url = "https://files.pythonhosted.org/packages/0b/c4/b4e2f1699a5e2244373a6e8175f862f49f377b444adc6c7b1fe1f5b3d04d/fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb", size = 4885904 }, + { url = "https://files.pythonhosted.org/packages/64/e7/b9a07c386adf8ad0348163fbcaab74daed6ef18ddb3f49b61b5c19900aeb/fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2", size = 5054708 }, + { url = "https://files.pythonhosted.org/packages/e9/53/2a79462ae38d7943e63290209c04fef89677c67b29cb329cdc549c18d4d5/fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88", size = 2158885 }, + { url = "https://files.pythonhosted.org/packages/c8/e1/059700c154bd7170d1c37061239836d2e51ff608f47075450f06dd3c292a/fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02", size = 2205133 }, + { url = "https://files.pythonhosted.org/packages/87/63/8271f50f3e7bff8b78e03914c4c2893f2f21bd4db2975c60d11ecfbdd174/fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58", size = 2756146 }, + { url = "https://files.pythonhosted.org/packages/dd/bd/cb8fd2dddd68089c112bf42a88afe188b8ace73f94406539857dcc9347a6/fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8", size = 2244990 }, + { url = "https://files.pythonhosted.org/packages/ae/71/2b9761e25697bdaf3dfe8269541bd4324f3eb0e4cc13f71d7f90cd272394/fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60", size = 4787604 }, + { url = "https://files.pythonhosted.org/packages/db/2b/5779cfd48625e013c2dfcf0c246474d5b1f5d061a5f1e476037bf9fff3a3/fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f", size = 4871141 }, + { url = "https://files.pythonhosted.org/packages/b8/3d/ac3cec35a503bf789d03e9d155a220c9e574f4f1573f00a3bea55695d535/fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2", size = 4764714 }, + { url = "https://files.pythonhosted.org/packages/ac/9f/27135ac0328e22cca1ba23ee6a1a1f971c13e9f0387adc5598d4635c501d/fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f", size = 5023568 }, + { url = "https://files.pythonhosted.org/packages/04/40/44d6a94e52e91fe104f9ca95944466af34828992cbc66b666f541de137f1/fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670", size = 2147572 }, + { url = "https://files.pythonhosted.org/packages/6d/9a/b695930e1b4e6929cc60e294489421632a05c105ac8c56ee63ef56a47872/fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab", size = 2193313 }, + { url = "https://files.pythonhosted.org/packages/e4/b9/0394d67056d4ad36a3807b439571934b318f1df925593a95e9ec0516b1a7/fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d", size = 1090472 }, +] + +[[package]] +name = "frozendict" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/38/00b0e401eeb1382b13d774522de6f30b5418a313cc0edbcb12e814eea7cd/frozendict-2.4.4.tar.gz", hash = "sha256:3f7c031b26e4ee6a3f786ceb5e3abf1181c4ade92dce1f847da26ea2c96008c7", size = 315923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/02/cb9ea28ebeefd0b2075bcf811d15400f520f291c5ee0ee8b02df15e51445/frozendict-2.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a59578d47b3949437519b5c39a016a6116b9e787bb19289e333faae81462e59", size = 37821 }, + { url = "https://files.pythonhosted.org/packages/f3/25/bfa8b5bc5a89e6dbc2d6ddf925b70f44131f708edf7185e49c77de34641b/frozendict-2.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12a342e439aef28ccec533f0253ea53d75fe9102bd6ea928ff530e76eac38906", size = 117526 }, + { url = "https://files.pythonhosted.org/packages/b8/b7/f88d020ceb4eab1ca7363184351116bc46b9aec04551516083f3431645bb/frozendict-2.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f79c26dff10ce11dad3b3627c89bb2e87b9dd5958c2b24325f16a23019b8b94", size = 117322 }, + { url = "https://files.pythonhosted.org/packages/b2/23/6b9e5aec0bf05a4bad2c34933c76b0a64e25025cf65a6ad90ba74ac2323e/frozendict-2.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2bd009cf4fc47972838a91e9b83654dc9a095dc4f2bb3a37c3f3124c8a364543", size = 119176 }, + { url = "https://files.pythonhosted.org/packages/92/22/8da48069d0ed1d74300218beeb9c2fe56b3a8f2bb86491a2329bf8d2d576/frozendict-2.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:87ebcde21565a14fe039672c25550060d6f6d88cf1f339beac094c3b10004eb0", size = 118511 }, + { url = "https://files.pythonhosted.org/packages/f2/ad/8881e55bcdc84ecf5d337f17fe0747b70f43f9dd93aaeb0c8fe169b8be5d/frozendict-2.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:fefeb700bc7eb8b4c2dc48704e4221860d254c8989fb53488540bc44e44a1ac2", size = 37256 }, + { url = "https://files.pythonhosted.org/packages/02/cd/b525900e87a6993386a86352cc2a067434eef9721752068f0b0093db3d1b/frozendict-2.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:4297d694eb600efa429769125a6f910ec02b85606f22f178bafbee309e7d3ec7", size = 33897 }, + { url = "https://files.pythonhosted.org/packages/6a/71/3656c00606e75e81f11721e6a1c973c3e03da8c7d8b665d20f78245384c6/frozendict-2.4.4-py311-none-any.whl", hash = "sha256:705efca8d74d3facbb6ace80ab3afdd28eb8a237bfb4063ed89996b024bc443d", size = 16021 }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c61e137d71b1452f200f31788fdb6f9e54465967fd15de3870dd4249b96/frozendict-2.4.4-py312-none-any.whl", hash = "sha256:d9647563e76adb05b7cde2172403123380871360a114f546b4ae1704510801e5", size = 16020 }, +] + +[[package]] +name = "frozenlist" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/3d/2102257e7acad73efc4a0c306ad3953f68c504c16982bbdfee3ad75d8085/frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", size = 37820 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/35/1328c7b0f780d34f8afc1d87ebdc2bb065a123b24766a0b475f0d67da637/frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", size = 94315 }, + { url = "https://files.pythonhosted.org/packages/f4/d6/ca016b0adcf8327714ccef969740688808c86e0287bf3a639ff582f24e82/frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", size = 53805 }, + { url = "https://files.pythonhosted.org/packages/ae/83/bcdaa437a9bd693ba658a0310f8cdccff26bd78e45fccf8e49897904a5cd/frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", size = 52163 }, + { url = "https://files.pythonhosted.org/packages/d4/e9/759043ab7d169b74fe05ebfbfa9ee5c881c303ebc838e308346204309cd0/frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", size = 238595 }, + { url = "https://files.pythonhosted.org/packages/f8/ce/b9de7dc61e753dc318cf0de862181b484178210c5361eae6eaf06792264d/frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", size = 262428 }, + { url = "https://files.pythonhosted.org/packages/36/ce/dc6f29e0352fa34ebe45421960c8e7352ca63b31630a576e8ffb381e9c08/frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", size = 258867 }, + { url = "https://files.pythonhosted.org/packages/51/47/159ac53faf8a11ae5ee8bb9db10327575557504e549cfd76f447b969aa91/frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", size = 229412 }, + { url = "https://files.pythonhosted.org/packages/ec/25/0c87df2e53c0c5d90f7517ca0ff7aca78d050a8ec4d32c4278e8c0e52e51/frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", size = 239539 }, + { url = "https://files.pythonhosted.org/packages/97/94/a1305fa4716726ae0abf3b1069c2d922fcfd442538cb850f1be543f58766/frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", size = 253379 }, + { url = "https://files.pythonhosted.org/packages/53/82/274e19f122e124aee6d113188615f63b0736b4242a875f482a81f91e07e2/frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", size = 245901 }, + { url = "https://files.pythonhosted.org/packages/b8/28/899931015b8cffbe155392fe9ca663f981a17e1adc69589ee0e1e7cdc9a2/frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", size = 263797 }, + { url = "https://files.pythonhosted.org/packages/6e/4f/b8a5a2f10c4a58c52a52a40cf6cf1ffcdbf3a3b64f276f41dab989bf3ab5/frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", size = 264415 }, + { url = "https://files.pythonhosted.org/packages/b0/2c/7be3bdc59dbae444864dbd9cde82790314390ec54636baf6b9ce212627ad/frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", size = 253964 }, + { url = "https://files.pythonhosted.org/packages/2e/ec/4fb5a88f6b9a352aed45ab824dd7ce4801b7bcd379adcb927c17a8f0a1a8/frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", size = 44559 }, + { url = "https://files.pythonhosted.org/packages/61/15/2b5d644d81282f00b61e54f7b00a96f9c40224107282efe4cd9d2bf1433a/frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", size = 50434 }, + { url = "https://files.pythonhosted.org/packages/01/bc/8d33f2d84b9368da83e69e42720cff01c5e199b5a868ba4486189a4d8fa9/frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", size = 97060 }, + { url = "https://files.pythonhosted.org/packages/af/b2/904500d6a162b98a70e510e743e7ea992241b4f9add2c8063bf666ca21df/frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", size = 55347 }, + { url = "https://files.pythonhosted.org/packages/5b/9c/f12b69997d3891ddc0d7895999a00b0c6a67f66f79498c0e30f27876435d/frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", size = 53374 }, + { url = "https://files.pythonhosted.org/packages/ac/6e/e0322317b7c600ba21dec224498c0c5959b2bce3865277a7c0badae340a9/frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", size = 273288 }, + { url = "https://files.pythonhosted.org/packages/a7/76/180ee1b021568dad5b35b7678616c24519af130ed3fa1e0f1ed4014e0f93/frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", size = 284737 }, + { url = "https://files.pythonhosted.org/packages/05/08/40159d706a6ed983c8aca51922a93fc69f3c27909e82c537dd4054032674/frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", size = 280267 }, + { url = "https://files.pythonhosted.org/packages/e0/18/9f09f84934c2b2aa37d539a322267939770362d5495f37783440ca9c1b74/frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", size = 258778 }, + { url = "https://files.pythonhosted.org/packages/b3/c9/0bc5ee7e1f5cc7358ab67da0b7dfe60fbd05c254cea5c6108e7d1ae28c63/frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", size = 272276 }, + { url = "https://files.pythonhosted.org/packages/12/5d/147556b73a53ad4df6da8bbb50715a66ac75c491fdedac3eca8b0b915345/frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", size = 272424 }, + { url = "https://files.pythonhosted.org/packages/83/61/2087bbf24070b66090c0af922685f1d0596c24bb3f3b5223625bdeaf03ca/frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", size = 260881 }, + { url = "https://files.pythonhosted.org/packages/a8/be/a235bc937dd803258a370fe21b5aa2dd3e7bfe0287a186a4bec30c6cccd6/frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", size = 282327 }, + { url = "https://files.pythonhosted.org/packages/5d/e7/b2469e71f082948066b9382c7b908c22552cc705b960363c390d2e23f587/frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74", size = 281502 }, + { url = "https://files.pythonhosted.org/packages/db/1b/6a5b970e55dffc1a7d0bb54f57b184b2a2a2ad0b7bca16a97ca26d73c5b5/frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", size = 272292 }, + { url = "https://files.pythonhosted.org/packages/1a/05/ebad68130e6b6eb9b287dacad08ea357c33849c74550c015b355b75cc714/frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", size = 44446 }, + { url = "https://files.pythonhosted.org/packages/b3/21/c5aaffac47fd305d69df46cfbf118768cdf049a92ee6b0b5cb029d449dcf/frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", size = 50459 }, + { url = "https://files.pythonhosted.org/packages/b4/db/4cf37556a735bcdb2582f2c3fa286aefde2322f92d3141e087b8aeb27177/frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", size = 93937 }, + { url = "https://files.pythonhosted.org/packages/46/03/69eb64642ca8c05f30aa5931d6c55e50b43d0cd13256fdd01510a1f85221/frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", size = 53656 }, + { url = "https://files.pythonhosted.org/packages/3f/ab/c543c13824a615955f57e082c8a5ee122d2d5368e80084f2834e6f4feced/frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", size = 51868 }, + { url = "https://files.pythonhosted.org/packages/a9/b8/438cfd92be2a124da8259b13409224d9b19ef8f5a5b2507174fc7e7ea18f/frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", size = 280652 }, + { url = "https://files.pythonhosted.org/packages/54/72/716a955521b97a25d48315c6c3653f981041ce7a17ff79f701298195bca3/frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", size = 286739 }, + { url = "https://files.pythonhosted.org/packages/65/d8/934c08103637567084568e4d5b4219c1016c60b4d29353b1a5b3587827d6/frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", size = 289447 }, + { url = "https://files.pythonhosted.org/packages/70/bb/d3b98d83ec6ef88f9bd63d77104a305d68a146fd63a683569ea44c3085f6/frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", size = 265466 }, + { url = "https://files.pythonhosted.org/packages/0b/f2/b8158a0f06faefec33f4dff6345a575c18095a44e52d4f10c678c137d0e0/frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", size = 281530 }, + { url = "https://files.pythonhosted.org/packages/ea/a2/20882c251e61be653764038ece62029bfb34bd5b842724fff32a5b7a2894/frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", size = 281295 }, + { url = "https://files.pythonhosted.org/packages/4c/f9/8894c05dc927af2a09663bdf31914d4fb5501653f240a5bbaf1e88cab1d3/frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", size = 268054 }, + { url = "https://files.pythonhosted.org/packages/37/ff/a613e58452b60166507d731812f3be253eb1229808e59980f0405d1eafbf/frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", size = 286904 }, + { url = "https://files.pythonhosted.org/packages/cc/6e/0091d785187f4c2020d5245796d04213f2261ad097e0c1cf35c44317d517/frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", size = 290754 }, + { url = "https://files.pythonhosted.org/packages/a5/c2/e42ad54bae8bcffee22d1e12a8ee6c7717f7d5b5019261a8c861854f4776/frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", size = 282602 }, + { url = "https://files.pythonhosted.org/packages/b6/61/56bad8cb94f0357c4bc134acc30822e90e203b5cb8ff82179947de90c17f/frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", size = 44063 }, + { url = "https://files.pythonhosted.org/packages/3e/dc/96647994a013bc72f3d453abab18340b7f5e222b7b7291e3697ca1fcfbd5/frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", size = 50452 }, + { url = "https://files.pythonhosted.org/packages/83/10/466fe96dae1bff622021ee687f68e5524d6392b0a2f80d05001cd3a451ba/frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", size = 11552 }, +] + +[[package]] +name = "fsspec" +version = "2024.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/7c/12b0943011daaaa9c35c2a2e22e5eb929ac90002f08f1259d69aedad84de/fsspec-2024.9.0.tar.gz", hash = "sha256:4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8", size = 286206 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/a0/6aaea0c2fbea2f89bfd5db25fb1e3481896a423002ebe4e55288907a97a3/fsspec-2024.9.0-py3-none-any.whl", hash = "sha256:a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b", size = 179253 }, +] + +[package.optional-dependencies] +http = [ + { name = "aiohttp" }, +] + +[[package]] +name = "gget" +version = "0.28.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "ipython" }, + { name = "ipywidgets" }, + { name = "lxml" }, + { name = "matplotlib" }, + { name = "mysql-connector-python" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "requests" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/b7/62e7d21000c01cbef27c38a867ceebccc9fa1e88ea7179832b2e4c207d36/gget-0.28.6.tar.gz", hash = "sha256:34cb0d0aec8d60d08bae6449af9b949076c1afefaafec6d360c2552b824d879b", size = 42824359 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/f9/418035b47ff4e2ca69afd92229560f94d025a89dc3f8b3607413a8567c39/gget-0.28.6-py3-none-any.whl", hash = "sha256:08900479cab5694ea2bc5a296119854fa621ddfca2c1591f1e378ebf14b05aff", size = 43105233 }, +] + +[[package]] +name = "gitdb" +version = "4.0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/0d/bbb5b5ee188dec84647a4664f3e11b06ade2bde568dbd489d9d64adef8ed/gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b", size = 394469 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5b/8f0c4a5bb9fd491c277c21eff7ccae71b47d43c4446c9d0c6cff2fe8c2c4/gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4", size = 62721 }, +] + +[[package]] +name = "gitpython" +version = "3.1.43" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/a1/106fd9fa2dd989b6fb36e5893961f82992cf676381707253e0bf93eb1662/GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c", size = 214149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/bd/cc3a402a6439c15c3d4294333e13042b915bbeab54edc457c723931fed3f/GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff", size = 207337 }, +] + +[[package]] +name = "gotrue" +version = "2.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", extra = ["http2"] }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/7f/407a0de3c4f57e2be6620be53c2398b550644763b4bddd19d19b29e8be1d/gotrue-2.8.1.tar.gz", hash = "sha256:644d0096c4c390f7e36d9cb05271a7091c01e7dc6d506eb117b8fe8fc48eb8d9", size = 41223 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/ee/4aad2b25941393e956ccda6aea8b2e144dbd780adb893e7f5b7147f0527e/gotrue-2.8.1-py3-none-any.whl", hash = "sha256:97dff077d71cca629f046c35ba34fae132b69c55fe271651766ddcf6d8132468", size = 48388 }, +] + +[[package]] +name = "gprofiler-official" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/c1/d9252620d09a064247d1623ebc4732d624921a2ed80a677f8b9ce61810dd/gprofiler-official-1.0.0.tar.gz", hash = "sha256:5015b47f10fbdcb59c57e342e815c9c07afbe57cd3984154f75b845ddef2445d", size = 9584 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/1b/5a87c1a1da8f601c00a0ce4dedb5aab8a5cad6a0f4a5062c4da22a045072/gprofiler_official-1.0.0-py3-none-any.whl", hash = "sha256:c582baf728e5a6cddac964e4085ca385e082c4ef0279e3af1a16a9af07ab5395", size = 9277 }, +] + +[[package]] +name = "graphviz" +version = "0.20.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/83/5a40d19b8347f017e417710907f824915fba411a9befd092e52746b63e9f/graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d", size = 256455 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/be/d59db2d1d52697c6adc9eacaf50e8965b6345cc143f671e1ed068818d5cf/graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5", size = 47126 }, +] + +[[package]] +name = "grnndata" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "d3graph" }, + { name = "gseapy" }, + { name = "leidenalg" }, + { name = "louvain" }, + { name = "natsort" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "powerlaw" }, + { name = "pyvis" }, + { name = "scanpy" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f6/4896892511397ca89a81fc2b984b536382a5a80c1488b468b686db97d853/grnndata-1.1.2.tar.gz", hash = "sha256:bcbd8ab78aedffadf1c89bdf01f2231fc765062d643cb890f36666d4c86ef589", size = 61960 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/c6/7ce8c3eaebeeb681d74c3959247b8e4f85d957aadc9923f63e6d95cff830/grnndata-1.1.2-py3-none-any.whl", hash = "sha256:ddfcf17c22e999af0df2f6de15466fa5b903a6189709f3872cad30134266eb6c", size = 60665 }, +] + +[[package]] +name = "gseapy" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "requests" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/c2/7c03f74682de640b71ba9a9958c5c8a90867b0f4f9ffef2c15702113d47a/gseapy-1.1.3.tar.gz", hash = "sha256:7f9218bb4014a862680d4d3e806e59bec8f81601e876a04495922da81da1b395", size = 106508 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/94/40206edd76fbe1cd6c64b70edfb1e7fb698b3a80eac19334febb12a80538/gseapy-1.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26a8a732dac0db6e7ee46fcb9dc7ca90e84e13593e986b9cde64bc65ef4ae26d", size = 495100 }, + { url = "https://files.pythonhosted.org/packages/ff/be/630e9b5f07b80e9838fb6b6de9ef62a2472142e5a41b8cb241023e64cce8/gseapy-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e4ee7ea6e14d621af1a9f13479d4513650c1dfc5ef29c766568c8a2ecd89795", size = 549977 }, + { url = "https://files.pythonhosted.org/packages/37/22/4f3a412b37c566127ddefb0664819796d57628a08bd0e8b8dc3da49b8be9/gseapy-1.1.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e64d7d06d33a585c5221478c7e5625efbd21dcd5b16e0e96304f2aa01693db8", size = 578759 }, + { url = "https://files.pythonhosted.org/packages/42/ee/b43d664c76d245d7b4df365a30dc434e4042c22cbd79f3887efdf57f4818/gseapy-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b499a7ed044f4be1fc9ae12ef22e65d759301b3644379203f8208d883e553b4c", size = 552947 }, + { url = "https://files.pythonhosted.org/packages/a0/66/f96a5e2c5467900513602f3a41e85178cd94614ceb56c7b58c7f6e8e48c0/gseapy-1.1.3-cp310-cp310-win32.whl", hash = "sha256:57d1b299107c957aeaac05f5acd45b5c6a92b94a27d3ed5695e86661868c2572", size = 360267 }, + { url = "https://files.pythonhosted.org/packages/b6/00/9b9cbe3a186f654be4c28fb5a2eeb13f09a005ab6d95e7cc4cc9e8a093fd/gseapy-1.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:c153d0e25863547f2f6004937260b8b6c84e0efa3e213abd7251acb1421b4e1f", size = 383982 }, + { url = "https://files.pythonhosted.org/packages/05/83/af9cc9b70a65b1c2946c701d8d8ae1a2a605ccbd89c92d673e267f19aef9/gseapy-1.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c56f03710cf7f35ab3df562af2a3054d9935bf077f12ee1204300baa35b20e32", size = 495098 }, + { url = "https://files.pythonhosted.org/packages/75/44/87d472941c29586709793ae974fa1d57626839beb81a12225d630fb11331/gseapy-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7378cfafa1496f9ef9f35baffccd07d352ffb525746e3ea7dd1420cc13f991e", size = 549982 }, + { url = "https://files.pythonhosted.org/packages/28/e0/206be2a8f0439d59247e6df8341b232e5244fe248adf9e64717720402658/gseapy-1.1.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d7279fb6a077aba3e61e3bf696d1d65753bb53b4114df7a2a5666ef8a1cee8a", size = 578759 }, + { url = "https://files.pythonhosted.org/packages/73/be/6fc692906bd7ea91a277d000e655d60a4567f7d3e70e0a7864c565920ff4/gseapy-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e25ff23ad670fc3e643814c9dd06e5d9924549c46b579e3a426025fd6aadf19", size = 552947 }, + { url = "https://files.pythonhosted.org/packages/ff/5c/2961e949041c7a3a7ebb091aa8dd9cf41f12f4c73fe2ed0ee3ea3462a180/gseapy-1.1.3-cp311-cp311-win32.whl", hash = "sha256:dbe2cdf67dcf085e073de65d698fa6b7210fc38ad2cb615bfe4efba2abfb3e56", size = 360268 }, + { url = "https://files.pythonhosted.org/packages/fe/2b/473ca4130ae7b60bbdf1c70cef5944d79eb5971e26925069f40e3aa3ee97/gseapy-1.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:6d04bfe7e6fdcb2b35103d7432b0c03e31d8017824ffa6e1f7d232d1154dcc5b", size = 383983 }, + { url = "https://files.pythonhosted.org/packages/b4/14/9a74b80338a4dff6dd86bfac0f82f3dd2e8851fcb2d8d66579edfbf1ff24/gseapy-1.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aa551ba1cae055ac8c6b1203a7845317aab30f49d2fb9f6a2cd84d0da1762a5a", size = 495210 }, + { url = "https://files.pythonhosted.org/packages/61/0f/a86c4ec3ac9dbcc8c604895fbedee476aa207907c526ff4a5fd2c9b1367c/gseapy-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a471200a55147fd6abebd64277e4d91b39d0813ab6da7c091bad3a9d58edd1", size = 550102 }, + { url = "https://files.pythonhosted.org/packages/6c/87/3e28fb40f3690a1c564e92c27e9b2ff444fe1c03b9ee76517873e36995c7/gseapy-1.1.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c9c28257b5f8646701a9ac2f2401988187212d4b42b29597985196aa2291263", size = 578739 }, + { url = "https://files.pythonhosted.org/packages/ef/45/ebac094486fbc8617dc632eb654fa71de3da6b105c09b1eaab75ec772db1/gseapy-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfea067617a0fa37a6b57a02975e14f96af40ad7c1ccb26e4d69c02689cbdd5e", size = 552958 }, + { url = "https://files.pythonhosted.org/packages/4a/bf/cf3adea90ca12f4c33863747db8b4f7333c886e46f3d8a0c05d490a530ee/gseapy-1.1.3-cp312-cp312-win32.whl", hash = "sha256:59bad66ef313491d6ad24be786243b0bf6327b960c20bfd418437a17292a327b", size = 360259 }, + { url = "https://files.pythonhosted.org/packages/e7/da/8e89d70c3c0230adf7ab26199b425c35c533018433555e81e6e016f36e7b/gseapy-1.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:6e92e5c4bc35b77819026466c343161ffd6ad926fb9a6dea1f2b50ac32aa090e", size = 383984 }, +] + +[[package]] +name = "h11" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, +] + +[[package]] +name = "h2" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488 }, +] + +[[package]] +name = "h5py" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/8f/e557819155a282da36fb21f8de4730cfd10a964b52b3ae8d20157ac1c668/h5py-3.11.0.tar.gz", hash = "sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9", size = 406519 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/25/a1cc81b3a742b73f9409bafe4762c9de0940cce0955d4b6754698fd5ce44/h5py-3.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1625fd24ad6cfc9c1ccd44a66dac2396e7ee74940776792772819fc69f3a3731", size = 3477113 }, + { url = "https://files.pythonhosted.org/packages/d4/03/bbb9a992fb43d3ce46687b7c14107f0fa56e6c8704c9ca945a9392cbc8ce/h5py-3.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c072655ad1d5fe9ef462445d3e77a8166cbfa5e599045f8aa3c19b75315f10e5", size = 2939879 }, + { url = "https://files.pythonhosted.org/packages/94/00/94bf8573e7487b7c37f2b613fc381880d48ec2311f2e859b8a5817deb4df/h5py-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77b19a40788e3e362b54af4dcf9e6fde59ca016db2c61360aa30b47c7b7cef00", size = 5306122 }, + { url = "https://files.pythonhosted.org/packages/bb/0d/fbadb9c69e2a31f641bc24e8d21671129ef3b73f0c61bb16b094fadf1385/h5py-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:ef4e2f338fc763f50a8113890f455e1a70acd42a4d083370ceb80c463d803972", size = 2968816 }, + { url = "https://files.pythonhosted.org/packages/a0/52/38bb74cc4362738cc7ef819503fc54d70f0c3a7378519ccb0ac309389122/h5py-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd732a08187a9e2a6ecf9e8af713f1d68256ee0f7c8b652a32795670fb481ba", size = 3489913 }, + { url = "https://files.pythonhosted.org/packages/f0/af/dfbea0c69fe725e9e77259d42f4e14eb582eb094200aaf697feb36f513d8/h5py-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75bd7b3d93fbeee40860fd70cdc88df4464e06b70a5ad9ce1446f5f32eb84007", size = 2946912 }, + { url = "https://files.pythonhosted.org/packages/af/26/f231ee425c8df93c1abbead3d90ea4a5ff3d6aa49e0edfd3b4c017e74844/h5py-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c416f8eb0daae39dabe71415cb531f95dce2d81e1f61a74537a50c63b28ab3", size = 5420165 }, + { url = "https://files.pythonhosted.org/packages/d8/5e/b7b83cfe60504cc4d24746aed04353af7ea8ec104e597e5ae71b8d0390cb/h5py-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:083e0329ae534a264940d6513f47f5ada617da536d8dccbafc3026aefc33c90e", size = 2979079 }, + { url = "https://files.pythonhosted.org/packages/58/a9/2655d4b8355d0ee783dc89dd40b5f0780e6f54a4c9b60721dc235fd6c457/h5py-3.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a76cae64080210389a571c7d13c94a1a6cf8cb75153044fd1f822a962c97aeab", size = 3466468 }, + { url = "https://files.pythonhosted.org/packages/9d/3f/cf80ef55e0a9b18aae96c763fbd275c54d0723e0f2cc54f954f87cc5c69a/h5py-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3736fe21da2b7d8a13fe8fe415f1272d2a1ccdeff4849c1421d2fb30fd533bc", size = 2943214 }, + { url = "https://files.pythonhosted.org/packages/db/7e/fedac8bb8c4729409e2dec5e4136a289116d701d54f69ce73c5617afc5f0/h5py-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6ae84a14103e8dc19266ef4c3e5d7c00b68f21d07f2966f0ca7bdb6c2761fb", size = 5378375 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/0ee327933ffa37af1fc7915df7fc067e6009adcd8445d55ad07a9bec11b5/h5py-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:21dbdc5343f53b2e25404673c4f00a3335aef25521bd5fa8c707ec3833934892", size = 2970991 }, +] + +[[package]] +name = "hdbscan" +version = "0.8.38.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/af/5b3c953f45ee6e1d880cda244b434bf0824eb7cd99817753d7c6aebca429/hdbscan-0.8.38.post1.tar.gz", hash = "sha256:5fbdba2ffb5a99a8b52fa2915658ced6bed59f4d0d5f40b1c673646c928aac0b", size = 5771344 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/47/d6a2ebee133c939dcfa4818fc9520f047c0cddaeb96afe4a3b94ef96e36b/hdbscan-0.8.38.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf515c5e3e22b61c5200271a8fc9219c1851abdc2dcf89231cd5142f9abb1c1", size = 4222119 }, + { url = "https://files.pythonhosted.org/packages/7a/86/e57ceef0360f4952d7617d9b1c4422f7b71c6f90d1720bef8753ec6ca2a7/hdbscan-0.8.38.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf1a532d1a6395b3ac90cca694676b41306bbcee78ccba77b75700d29ca6292", size = 4554121 }, +] + +[[package]] +name = "hpack" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611 }, +] + +[[package]] +name = "httpcore" +version = "0.17.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "h11" }, + { name = "sniffio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c98ecdbfe04417e71e143bf2f2fb29128e4787d78d1cedba21bd250c7e7a/httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888", size = 62676 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/2c/2bde7ff8dd2064395555220cbf7cba79991172bf5315a07eb3ac7688d9f1/httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87", size = 74513 }, +] + +[[package]] +name = "httpx" +version = "0.24.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, + { name = "sniffio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/2a/114d454cb77657dbf6a293e69390b96318930ace9cd96b51b99682493276/httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd", size = 81858 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/91/e41f64f03d2a13aee7e8c819d82ee3aa7cdc484d18c0ae859742597d5aa0/httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd", size = 75377 }, +] + +[package.optional-dependencies] +http2 = [ + { name = "h2" }, +] + +[[package]] +name = "huggingface-hub" +version = "0.24.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "packaging" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/24/b98fce967b7d63700e5805b915012ba25bb538a81fcf11e97f3cc3f4f012/huggingface_hub-0.24.6.tar.gz", hash = "sha256:cc2579e761d070713eaa9c323e3debe39d5b464ae3a7261c39a9195b27bb8000", size = 349200 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/8f/d6718641c14d98a5848c6a24d2376028d292074ffade0702940a4b1dde76/huggingface_hub-0.24.6-py3-none-any.whl", hash = "sha256:a990f3232aa985fe749bc9474060cbad75e8b2f115f6665a9fda5b9c97818970", size = 417509 }, +] + +[[package]] +name = "hydra-core" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "omegaconf" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547 }, +] + +[[package]] +name = "hyperframe" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389 }, +] + +[[package]] +name = "idna" +version = "3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/e349c5e6d4543326c6883ee9491e3921e0d07b55fdf3cce184b40d63e72a/idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603", size = 189467 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", size = 66894 }, +] + +[[package]] +name = "igraph" +version = "0.11.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "texttable" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/a0/1f70c34a96dcb0acf428319e83655e92ab2955d73a33f711852a5fb79681/igraph-0.11.6.tar.gz", hash = "sha256:837f233256c3319f2a35a6a80d94eafe47b43791ef4c6f9e9871061341ac8e28", size = 4559252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/f5/2de2ff541a014c3387c0c570a91e51b80643d9a2a3e0dec8030bcec3083d/igraph-0.11.6-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8aabef03d787b519d1075dfc0da4a1109fb113b941334883e3e7947ac30a459e", size = 1945799 }, + { url = "https://files.pythonhosted.org/packages/e4/3b/5cf3b131d433dea61608ea2c27bebf74de9cc7a50ced0b26311d6288294e/igraph-0.11.6-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1f2cc4a518d99cdf6cae514f85e93e56852bc8c325b3abb96037d1d690b5975f", size = 1751328 }, + { url = "https://files.pythonhosted.org/packages/fc/71/71cd93c1b26e6051ef5dfad94333690188e663942e54bea6bbfff79d2dbe/igraph-0.11.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1e859238be52ab8ccc614d18f9362942bc88ce543afc12548f81ae99b10801d", size = 2974608 }, + { url = "https://files.pythonhosted.org/packages/19/ec/02e596595776367f5fd07c65a56ff1593680273f935c481975fe6a55e67f/igraph-0.11.6-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d61fbe5e85eb4ae9efe08c461f9bdeedb02a2b5739fbc223d324a71f40a28be2", size = 3054685 }, + { url = "https://files.pythonhosted.org/packages/02/f2/70849b7ff0fbfd3e7c964ac737ea973d0121d30a32a18894df6d0843bd0c/igraph-0.11.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6620ba39df29fd42151becf82309b54e57148233c9c3ef890eed62e25eed8a5", size = 3134936 }, + { url = "https://files.pythonhosted.org/packages/ef/49/579f3a5daea1a672f05c95ead488e779f1479a8efb78715c1508f7dae58a/igraph-0.11.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59666589bb3d07f310cda2c5106a8adeeb77c2ef27fecf1c6438b6091f4ca69d", size = 3887705 }, + { url = "https://files.pythonhosted.org/packages/ef/d2/66203ba13f90ea77f541c0f5b5ae095a7ced0a564486f576e5adce0d0bd7/igraph-0.11.6-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:8750b6d6caebf199cf7dc41c931f58e330153779707391e30f0a29f02666fb6e", size = 4158876 }, + { url = "https://files.pythonhosted.org/packages/53/e7/3fbe83625efb1dd5f387a9da9ec0ac779a2dc42e6db0ac7eb54c44943b2f/igraph-0.11.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:967d6f2c30fe94317da15e459374d0fb8ca3e56020412f201ecd07dd5b5352f2", size = 4050715 }, + { url = "https://files.pythonhosted.org/packages/ab/91/2535aa81a1de36f5b21df129b3434a18710d31ea56efbf0ec6e1f1958fda/igraph-0.11.6-cp39-abi3-win32.whl", hash = "sha256:9744f95a67319eb6cb487ceabf30f5d7940de34bada51f0ba63adbd23e0f94ad", size = 1589990 }, + { url = "https://files.pythonhosted.org/packages/08/4a/e781867fa2fb41d823a8f1978ac464aef3d78bb73c6f40589a74cc47bf42/igraph-0.11.6-cp39-abi3-win_amd64.whl", hash = "sha256:b80e69eb11faa9c57330a9ffebdde5808966efe1c1f638d4d4827ea04df7aca8", size = 1965492 }, + { url = "https://files.pythonhosted.org/packages/3d/67/f191be5f2db595ba47038498028a469afab62056ba515d531b06a62c902d/igraph-0.11.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0329c16092e2ea7930d5f8368666ce7cb704900cc0ea04e4afe9ea1dd46e44af", size = 1930973 }, + { url = "https://files.pythonhosted.org/packages/9f/70/a4e9b305c9b84e188161c9f8357f72d043626714964de872ce559804635d/igraph-0.11.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21752313f449bd8688e5688e95ea7231cea5e9199c7162535029be0d9af848ac", size = 1736271 }, + { url = "https://files.pythonhosted.org/packages/b2/fd/f449af5ba5423221ee7f6fe2f6f85bd0e30345e0c326c06e1110ef890c32/igraph-0.11.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea25e136c6c4161f53ff58868b23ff6c845193050ab0e502236d68e5d4174e32", size = 2589657 }, + { url = "https://files.pythonhosted.org/packages/9a/c6/385a2b7cfeab8e2c62312fc19a6891eb0463f5a9d7da3fb2fb6ec22a879d/igraph-0.11.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac84433a03aef15e4b810010b08882b09854a3669450ccf31e392dbe295d2a66", size = 2752646 }, + { url = "https://files.pythonhosted.org/packages/f1/88/2c85cf17a1b6469bdd3f7245ecb0e9da7f8aec0443c3612a3d64223f64ff/igraph-0.11.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac697a44e3573169fa2b28c9c37dcf9cf01e0f558b845dd7123860d4c7c8fb89", size = 2756094 }, + { url = "https://files.pythonhosted.org/packages/b5/9a/78de6e88eb229e68cd4bd410852349bbf7772a7e121a429599b39449abf1/igraph-0.11.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bdeae8bf35316eb1fb27bf667dcf5ecf5fcfb0b8f51831bc1b00c39c09c2d73b", size = 1965375 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/bd/fa8ce65b0a7d4b6d143ec23b0f5fd3f7ab80121078c465bc02baeaab22dc/importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5", size = 54320 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/14/362d31bf1076b21e1bcdcb0dc61944822ff263937b804a79231df2774d28/importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1", size = 26269 }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, +] + +[[package]] +name = "inflect" +version = "7.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/dc/02614acece4d578e709c606594c989cfd9f15cf6401444e5603e60df9b26/inflect-7.4.0.tar.gz", hash = "sha256:904baa17cc2cb74827a6c27b95692e95670dadc72b208b3e8c1c05aeed47026b", size = 72730 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/e0/c5684d7c058d8f2a9210c322dee32bd025c11d19e5ba23c82ac9188253f9/inflect-7.4.0-py3-none-any.whl", hash = "sha256:85af0997ee2bda942b1c1eed8c8a827abda91aa3e22d1efaa0eea817f9350ce7", size = 34781 }, +] + +[[package]] +name = "interlap" +version = "0.2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/84/9f71369fc868dc963ddf51d1bfd8853a9793a37a21c9081a433f6e81d56a/interlap-0.2.7.tar.gz", hash = "sha256:31e4f30c54b067c4939049f5d8131ae5e2fa682ec71aa56f89c0e5b900806ec9", size = 6066 } + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "platform_system == 'Darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, +] + +[[package]] +name = "ipython" +version = "8.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/24/d4fabaca03c8804bf0b8d994c8ae3a20e57e9330d277fb43d83e558dec5e/ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e", size = 5494984 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a2/6c725958e6f135d8e5de081e69841bb2c1d84b3fc259d02eb092b8fc203a/ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c", size = 818986 }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/4c/dab2a281b07596a5fc220d49827fe6c794c66f1493d7a74f1df0640f2cc5/ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17", size = 116723 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/2d/9c0b76f2f9cc0ebede1b9371b6f317243028ed60b90705863d493bae622e/ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245", size = 139767 }, +] + +[[package]] +name = "ismember" +version = "1.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/43/059a58f5f626549c5337b9071c9c8ec3de5f1e80d21b0c732c5a7324fa7b/ismember-1.0.5.tar.gz", hash = "sha256:4bb0e7c75fb8b512fbe0e87564bcad638f2eaa76f72099041115e42020cd768d", size = 6865 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/59/8ff585b3a35266cf50bbc4e3f637ac97fb4ab9b643039481c471dfe26534/ismember-1.0.5-py3-none-any.whl", hash = "sha256:0a0102aa0e54d18f35bc7bdaeb9ab7a39bd54e3597f35e7a45d9f2628850612c", size = 7692 }, +] + +[[package]] +name = "jax" +version = "0.4.31" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jaxlib" }, + { name = "ml-dtypes" }, + { name = "numpy" }, + { name = "opt-einsum" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/e4/c1a4c0e7dafbc53fff9f42f9c1bf5918dabd1f91325512d6b382bea8750b/jax-0.4.31.tar.gz", hash = "sha256:fd2d470643a0073d822737f0788f71391656af7e62cc5b2e7995ee390ceac287", size = 1743359 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/cf/5f51b43bd692e90585c0ef6e8d1b0db5d254fe0224a6570daa59a1be014f/jax-0.4.31-py3-none-any.whl", hash = "sha256:5688703735133d0dc537e99a1d646198a49c9d472d4715fde4bd437c44151bd7", size = 2038969 }, +] + +[[package]] +name = "jaxlib" +version = "0.4.31" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy" }, + { name = "scipy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/72/12c267f6775aac7e3ca6ed882c9816883cce44d73169d25d0e0b0f1f6972/jaxlib-0.4.31-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:48ea73cb78341bd4aabbb15e1a076ed61505ec80ab8eb4810e2d34758c400f80", size = 88767265 }, + { url = "https://files.pythonhosted.org/packages/b2/c9/0a6a964a852b66cff6108b8d8bc17115b69171fa6a22a916bc911d9f0a61/jaxlib-0.4.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bacb86012f9104dd71706266420fd1e5d179d826d0635c95fe31506d605b4537", size = 70040016 }, + { url = "https://files.pythonhosted.org/packages/ae/4d/71e6286f88bf2c516e8af26a4245b8a68b12fcf1bbb42a4b3b7958575407/jaxlib-0.4.31-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d019023f71dba65127a3016ddc755de4b30f5bc9bd5b632a716a5fb3b00c5e53", size = 73050144 }, + { url = "https://files.pythonhosted.org/packages/cd/d7/918ac5477d1c32329c43bc2eb40473baa1c244851c825904430e8911f15a/jaxlib-0.4.31-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:1b8e9e6970ecc08bd8b4d80c03d882f4dcd4ac119cb2959811ebc58fce1c263d", size = 88131641 }, + { url = "https://files.pythonhosted.org/packages/ed/ea/2ba944ba4365cf8f043ff34cdb9704e29a37478b75592d03672fbba4d0df/jaxlib-0.4.31-cp310-cp310-win_amd64.whl", hash = "sha256:d3540a557c188d23ef93760da482b158ca910124a0445263c3b17c09c114538a", size = 56281724 }, + { url = "https://files.pythonhosted.org/packages/46/d0/100199575992545940afc17e62dea5a79c15ef738c1ae9784a1838962aa4/jaxlib-0.4.31-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1fd838ff91ea58ec2bdc7b4ecbb921ad501a318fafdeae120e6e7f88f5c20b17", size = 88768971 }, + { url = "https://files.pythonhosted.org/packages/18/ea/eddfae920bf689314aa0302a4c841cfac01b6cfd77f60f1a3f3dd355fddc/jaxlib-0.4.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:86340df8b37729f6fc5742f17761857bb9e59c418c9453e9b090f49f6194cdf9", size = 70038216 }, + { url = "https://files.pythonhosted.org/packages/a6/ce/ce7d3ba4790e18f67cfcb4552056dd04350085116f4754333f481516d97c/jaxlib-0.4.31-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:2d2639d210b0b1918dfaabbcc504fc668326e1a6fd1f0eb427c40b039188bbce", size = 73050770 }, + { url = "https://files.pythonhosted.org/packages/32/33/6d30bf3ec7d590a8dc0f1e30ea4c531b6f6a33116eb2066e354b485066de/jaxlib-0.4.31-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:1db6f8ea35b884f9e7761b006ee9c60ed05be6c75d2e527551f74579cbe11677", size = 88130221 }, + { url = "https://files.pythonhosted.org/packages/9f/e2/5b7d20ed550d156311587eee6e44c48971fe6c3b43f39e82dacda3875396/jaxlib-0.4.31-cp311-cp311-win_amd64.whl", hash = "sha256:ceec494df08aaf65b8bbcbd40dd21a6579fa76ca5b851cce46fd7ce0388c0449", size = 56279795 }, + { url = "https://files.pythonhosted.org/packages/fa/27/3eee15d1b168d434498c388780114d7629f715e19c2d08754ab4be82ad2d/jaxlib-0.4.31-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:185fb615ab6bd95315fbcbd951d84e71f9835d603db8c03c91faee98ce95ff4d", size = 88818529 }, + { url = "https://files.pythonhosted.org/packages/68/cf/28895a4a89d88d18592507d7a35218b6bb2d8bced13615065c9f925f2ae1/jaxlib-0.4.31-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9f89c185287e40ee8173a7142d6495311e772cd139a93dca93f0d99c1872832", size = 70079551 }, + { url = "https://files.pythonhosted.org/packages/e0/af/10b49f8de2acc7abc871478823579d7241be52ca0d6bb0d2b2c476cc1b68/jaxlib-0.4.31-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:4d867a1a0565b31cfdaabbec81e0302c6461bb2ac4b92c04670328d795819803", size = 73053401 }, + { url = "https://files.pythonhosted.org/packages/b1/09/58d35465d48c8bee1d9a4e7a3c5db2edaabfc7ac94f4576c9f8c51b83e70/jaxlib-0.4.31-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:1f1afa5fd58a60f67f0ca586e26714aece62eaa2c8334c24d0e8285afc4a7ccd", size = 88162291 }, + { url = "https://files.pythonhosted.org/packages/c8/13/1bb2bcb4d9f4719dd5f3d98f5c2fc2235f961ced576366b040372eebdb17/jaxlib-0.4.31-cp312-cp312-win_amd64.whl", hash = "sha256:c4bfd15315e30525514b7262d555bea00745b09ac9818bb14c20ef8afbbab072", size = 56299104 }, +] + +[[package]] +name = "jedi" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/99/99b493cec4bf43176b678de30f81ed003fd6a647a301b9c927280c600f0a/jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", size = 1227821 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0", size = 1569361 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, +] + +[[package]] +name = "joblib" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/33/60135848598c076ce4b231e1b1895170f45fbcaeaa2c9d5e38b04db70c35/joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e", size = 2116621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 }, +] + +[[package]] +name = "jsonargparse" +version = "4.32.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b0/ff/a0d45c9b2367db442dc4fce1bacf75b76004afe1b7b1f05e0f28a3c78a56/jsonargparse-4.32.1.tar.gz", hash = "sha256:17e66ec1ab6529907dd38cbf26d740e2fb5a8e52782739c76d5659247b43cda5", size = 186536 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d4/dbe0bcf04bc0cd172eb4c286992f1a1b0a9db5e7a1e503ecc9c067f0e2d3/jsonargparse-4.32.1-py3-none-any.whl", hash = "sha256:fdf4c043ceb8efe3e4ae626d33359084615e6272274552930b25398fba902d73", size = 207323 }, +] + +[[package]] +name = "jsonpickle" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/c3/7b43eb963bfb3fa95385e677bb9d027c56d65d395d9f4bd52833affd1a4f/jsonpickle-3.3.0.tar.gz", hash = "sha256:ab467e601e5b1a1cd76f1819d014795165da071744ef30bf3786e9bc549de25a", size = 329715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/1f/224e27180204282c1ea378b86944585616c1978544b9f5277cf907fdb26c/jsonpickle-3.3.0-py3-none-any.whl", hash = "sha256:287c12143f35571ab00e224fa323aa4b090d5a7f086f5f494d7ee9c7eb1a380a", size = 42370 }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/61/3cd51dea7878691919adc34ff6ad180f13bfe25fb8c7662a9ee6dc64e643/jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df", size = 341102 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/d3/c4bb02580bc0db807edb9a29b2d0c56031be1ef0d804336deb2699a470f6/jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f", size = 105901 }, +] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/73/fa26bbb747a9ea4fca6b01453aa22990d52ab62dd61384f1ac0dc9d4e7ba/jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed", size = 203556 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/93/858e87edc634d628e5d752ba944c2833133a28fa87bb093e6832ced36a3e/jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54", size = 214392 }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/14/fc943dd65268a96347472b4fbe5dcc2f6f55034516f80576cd0dd3a8930f/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6", size = 122440 }, + { url = "https://files.pythonhosted.org/packages/1e/46/e68fed66236b69dd02fcdb506218c05ac0e39745d696d22709498896875d/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17", size = 65758 }, + { url = "https://files.pythonhosted.org/packages/ef/fa/65de49c85838681fc9cb05de2a68067a683717321e01ddafb5b8024286f0/kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9", size = 64311 }, + { url = "https://files.pythonhosted.org/packages/42/9c/cc8d90f6ef550f65443bad5872ffa68f3dee36de4974768628bea7c14979/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9", size = 1637109 }, + { url = "https://files.pythonhosted.org/packages/55/91/0a57ce324caf2ff5403edab71c508dd8f648094b18cfbb4c8cc0fde4a6ac/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c", size = 1617814 }, + { url = "https://files.pythonhosted.org/packages/12/5d/c36140313f2510e20207708adf36ae4919416d697ee0236b0ddfb6fd1050/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599", size = 1400881 }, + { url = "https://files.pythonhosted.org/packages/56/d0/786e524f9ed648324a466ca8df86298780ef2b29c25313d9a4f16992d3cf/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05", size = 1512972 }, + { url = "https://files.pythonhosted.org/packages/67/5a/77851f2f201e6141d63c10a0708e996a1363efaf9e1609ad0441b343763b/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407", size = 1444787 }, + { url = "https://files.pythonhosted.org/packages/06/5f/1f5eaab84355885e224a6fc8d73089e8713dc7e91c121f00b9a1c58a2195/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278", size = 2199212 }, + { url = "https://files.pythonhosted.org/packages/b5/28/9152a3bfe976a0ae21d445415defc9d1cd8614b2910b7614b30b27a47270/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5", size = 2346399 }, + { url = "https://files.pythonhosted.org/packages/26/f6/453d1904c52ac3b400f4d5e240ac5fec25263716723e44be65f4d7149d13/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad", size = 2308688 }, + { url = "https://files.pythonhosted.org/packages/5a/9a/d4968499441b9ae187e81745e3277a8b4d7c60840a52dc9d535a7909fac3/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895", size = 2445493 }, + { url = "https://files.pythonhosted.org/packages/07/c9/032267192e7828520dacb64dfdb1d74f292765f179e467c1cba97687f17d/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3", size = 2262191 }, + { url = "https://files.pythonhosted.org/packages/6c/ad/db0aedb638a58b2951da46ddaeecf204be8b4f5454df020d850c7fa8dca8/kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc", size = 46644 }, + { url = "https://files.pythonhosted.org/packages/12/ca/d0f7b7ffbb0be1e7c2258b53554efec1fd652921f10d7d85045aff93ab61/kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c", size = 55877 }, + { url = "https://files.pythonhosted.org/packages/97/6c/cfcc128672f47a3e3c0d918ecb67830600078b025bfc32d858f2e2d5c6a4/kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a", size = 48347 }, + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442 }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762 }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319 }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260 }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589 }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080 }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049 }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376 }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231 }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634 }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024 }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484 }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078 }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645 }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022 }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536 }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808 }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531 }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894 }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296 }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450 }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168 }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308 }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186 }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877 }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204 }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461 }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358 }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119 }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367 }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884 }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528 }, + { url = "https://files.pythonhosted.org/packages/c4/06/7da99b04259b0f18b557a4effd1b9c901a747f7fdd84cf834ccf520cb0b2/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e", size = 121913 }, + { url = "https://files.pythonhosted.org/packages/97/f5/b8a370d1aa593c17882af0a6f6755aaecd643640c0ed72dcfd2eafc388b9/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6", size = 65627 }, + { url = "https://files.pythonhosted.org/packages/2a/fc/6c0374f7503522539e2d4d1b497f5ebad3f8ed07ab51aed2af988dd0fb65/kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750", size = 63888 }, + { url = "https://files.pythonhosted.org/packages/bf/3e/0b7172793d0f41cae5c923492da89a2ffcd1adf764c16159ca047463ebd3/kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d", size = 1369145 }, + { url = "https://files.pythonhosted.org/packages/77/92/47d050d6f6aced2d634258123f2688fbfef8ded3c5baf2c79d94d91f1f58/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379", size = 1461448 }, + { url = "https://files.pythonhosted.org/packages/9c/1b/8f80b18e20b3b294546a1adb41701e79ae21915f4175f311a90d042301cf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c", size = 1578750 }, + { url = "https://files.pythonhosted.org/packages/a4/fe/fe8e72f3be0a844f257cadd72689c0848c6d5c51bc1d60429e2d14ad776e/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34", size = 1507175 }, + { url = "https://files.pythonhosted.org/packages/39/fa/cdc0b6105d90eadc3bee525fecc9179e2b41e1ce0293caaf49cb631a6aaf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1", size = 1463963 }, + { url = "https://files.pythonhosted.org/packages/6e/5c/0c03c4e542720c6177d4f408e56d1c8315899db72d46261a4e15b8b33a41/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f", size = 2248220 }, + { url = "https://files.pythonhosted.org/packages/3d/ee/55ef86d5a574f4e767df7da3a3a7ff4954c996e12d4fbe9c408170cd7dcc/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b", size = 2404463 }, + { url = "https://files.pythonhosted.org/packages/0f/6d/73ad36170b4bff4825dc588acf4f3e6319cb97cd1fb3eb04d9faa6b6f212/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27", size = 2352842 }, + { url = "https://files.pythonhosted.org/packages/0b/16/fa531ff9199d3b6473bb4d0f47416cdb08d556c03b8bc1cccf04e756b56d/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a", size = 2501635 }, + { url = "https://files.pythonhosted.org/packages/78/7e/aa9422e78419db0cbe75fb86d8e72b433818f2e62e2e394992d23d23a583/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee", size = 2314556 }, + { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364 }, + { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530 }, + { url = "https://files.pythonhosted.org/packages/ac/59/741b79775d67ab67ced9bb38552da688c0305c16e7ee24bba7a2be253fb7/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643", size = 59491 }, + { url = "https://files.pythonhosted.org/packages/58/cc/fb239294c29a5656e99e3527f7369b174dd9cc7c3ef2dea7cb3c54a8737b/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706", size = 57648 }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2f009ac1f7aab9f81efb2d837301d255279d618d27b6015780115ac64bdd/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6", size = 84257 }, + { url = "https://files.pythonhosted.org/packages/81/e1/c64f50987f85b68b1c52b464bb5bf73e71570c0f7782d626d1eb283ad620/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2", size = 80906 }, + { url = "https://files.pythonhosted.org/packages/fd/71/1687c5c0a0be2cee39a5c9c389e546f9c6e215e46b691d00d9f646892083/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4", size = 79951 }, + { url = "https://files.pythonhosted.org/packages/ea/8b/d7497df4a1cae9367adf21665dd1f896c2a7aeb8769ad77b662c5e2bcce7/kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a", size = 55715 }, +] + +[[package]] +name = "lamin-cli" +version = "0.16.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "rich-click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/a8/b719f544deea44beff4e09786fe8809f7cc6dc0223b09798dabd336514ff/lamin_cli-0.16.2.tar.gz", hash = "sha256:d4809b6d3526c2881e62d0c4e5a6ce20f80b588a9ace9424bc0deb57c85ec185", size = 13986 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/b2/1c2321438c871bae4eb95300922b1c044b46d20f0c48368a78d8c1b43f77/lamin_cli-0.16.2-py2.py3-none-any.whl", hash = "sha256:2c16765f5618d593492775c4bf98325d23c34fc1350acf5dd3398664a521495e", size = 7735 }, +] + +[[package]] +name = "lamin-utils" +version = "0.13.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/db/6089e164be052916811a5e242e7e765df72663566213b1a17c3bd03a528e/lamin_utils-0.13.4.tar.gz", hash = "sha256:5cdc9f35688635a71d81085ca6a419952cf423597b1b4977046bdbe6a79d19d9", size = 29440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/76/d56f5707251724cd1f707cdb654ae2fd373ef3527951de6c7c72ea974617/lamin_utils-0.13.4-py2.py3-none-any.whl", hash = "sha256:e58b51acc8e2e3808c05193302bdfc9de47a5fb37830788e763a5c0cc9e94f74", size = 22769 }, +] + +[[package]] +name = "lamindb" +version = "0.76.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "fsspec" }, + { name = "graphviz" }, + { name = "lamin-cli" }, + { name = "lamin-utils" }, + { name = "lamindb-setup" }, + { name = "lnschema-core" }, + { name = "pandas" }, + { name = "psycopg2-binary" }, + { name = "pyarrow" }, + { name = "python-dateutil" }, + { name = "rapidfuzz" }, + { name = "scipy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/49/1e62e0a3bde2f4df09b3ae100be9e0aec5bcac029c09d58ca9f308f2b804/lamindb-0.76.3.tar.gz", hash = "sha256:522cf136652b9b33ccf2685f590651f08ed7341d79227dcdfc4ba38a4da82b71", size = 479117 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/34/5cdd2a80d205acf54a0523b0ffdc53d9bb42f756842bd450ec9cbc92139a/lamindb-0.76.3-py3-none-any.whl", hash = "sha256:255c7b0024d9d25827f721fc26c2d94af75839223412706c0a63cd1392cb24a2", size = 135747 }, +] + +[[package]] +name = "lamindb-setup" +version = "0.76.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "botocore" }, + { name = "dj-database-url" }, + { name = "django" }, + { name = "gotrue" }, + { name = "lamin-utils" }, + { name = "lnschema-core" }, + { name = "psutil" }, + { name = "pydantic-settings" }, + { name = "requests" }, + { name = "supabase" }, + { name = "universal-pathlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/41/3ce239ab99373815fcd21a485b013a487a0ee65346a1cb44b8b497c7cdc8/lamindb_setup-0.76.7.tar.gz", hash = "sha256:ee09c1c07821799383d52dc19c04f51c285d3b35880d2ca36672cbccc76afa6f", size = 108698 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/63/41a2b67b360956482c70fe4823873ae32d398e4e865ad504bda3cfb9837d/lamindb_setup-0.76.7-py2.py3-none-any.whl", hash = "sha256:bdf429fe1b51d21790fd106ce8ea934e13b8a5b5be0a7633cfc37252a89161b2", size = 78723 }, +] + +[[package]] +name = "legacy-api-wrap" +version = "1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/de/35984e2270dce9f5895849668c34e4da646b4ac5293f679b23ede3d6d7f0/legacy_api_wrap-1.4.tar.gz", hash = "sha256:92dfa274cedb26d6e6f70fac85c856fbdcc05058066656d76a665fb4bf11b785", size = 17046 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/08/eaf39f00542e4181b65617805f116a0d38daec98d0dce36ec94327ca8fc4/legacy_api_wrap-1.4-py3-none-any.whl", hash = "sha256:bf81b8ee432d80e7203aa079c26fc3a0f228d158db808868f10c2e36a8f64dbd", size = 15766 }, +] + +[[package]] +name = "leidenalg" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "igraph" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/d8/ab411a39c8fe6b247e96a6c791c30dd91de53ce407f766d2c2f7ed2e3504/leidenalg-0.10.2.tar.gz", hash = "sha256:0f4147a92b59834a719bfce30d563ea107e570130a7be60adbc8b95757192e4c", size = 452590 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/e0/0db1e6c235d883246f8dadb480d5b17140880099cc2c1c5aea5dc179262d/leidenalg-0.10.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f1f5b441bf8baa4f18b434da2ddad70e5a9099bcfb787ebee6596b41140df8bb", size = 1693307 }, + { url = "https://files.pythonhosted.org/packages/82/90/0b9525098a7458939f5c2b956ffdc1fed460c0fe706f549087c3b0d12b81/leidenalg-0.10.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:05f4596164840005a3e91b83bba28ede202ebcbd939c4f9182738d3c199bb6c9", size = 1426209 }, + { url = "https://files.pythonhosted.org/packages/8c/4e/4d31112151cfb49d8ae6a81a60f339ee4e35c50837103f5d5a475d7f16a9/leidenalg-0.10.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8774bc9b7638b50ea69bcea0dfc55aa1ec88c3e57b0619c88462a6837f19d76", size = 1864248 }, + { url = "https://files.pythonhosted.org/packages/88/95/fefb3bd7a0841c6de10a7d2235d68b2eaa4219fb5b9785ee9327e249ac80/leidenalg-0.10.2-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8e64af280f88ccbc605a1fbe75fd7ab323f28526e4b1934867d0072ce03dbb2", size = 2047122 }, + { url = "https://files.pythonhosted.org/packages/48/bb/28343e7f26cbacf355c754ef6be2f1efa8d6233b56a5be89c5bc8caca1d1/leidenalg-0.10.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3385462025acd6190ca5cb9df5b1dcf20995a048189a16a293dba2881f47cc0", size = 1967803 }, + { url = "https://files.pythonhosted.org/packages/53/09/0b3f6b017716627dab2c83bd685ad7bdf06d120d34e04dcd5a224ea3e0ed/leidenalg-0.10.2-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:fda77a141a353ec3ef1de5578868c5ed336612fcf32685cdf3d67569ce9ade39", size = 2565393 }, + { url = "https://files.pythonhosted.org/packages/08/3b/7e6b6501e272443e08c4ee22673acdba6d9077dc01e3c4c6f85e906f1f05/leidenalg-0.10.2-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab11d9569d6bd76f27e00343deb5bd6d0efdbfa759ef612388162cef9d5ca949", size = 2527752 }, + { url = "https://files.pythonhosted.org/packages/89/53/fca3c0bbe545ea0180316f4e502cc6eae45754616f09fa87f7b1e457bf26/leidenalg-0.10.2-cp38-abi3-win32.whl", hash = "sha256:f6b4deb72c219d622bbcbf7a81151f680385d7f793f65c8e5a649580bedfcddd", size = 1268340 }, + { url = "https://files.pythonhosted.org/packages/29/2f/f315fca13523f6b7520b810cce942348e37e8e5ea4c39e4eaaeb3541fee0/leidenalg-0.10.2-cp38-abi3-win_amd64.whl", hash = "sha256:4ec2940665fc59e71175fb445e25d11ef0ab7e26f4076b932571eec2e9d05857", size = 1576010 }, + { url = "https://files.pythonhosted.org/packages/e8/18/8bfbc1714459739bfca040246d83e946b37be6785d32897683e6a2e0157d/leidenalg-0.10.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5ca6f746f9ed81ae1b795570165ff4198a1b189f745c55f32323433438294130", size = 1690497 }, + { url = "https://files.pythonhosted.org/packages/ab/d7/ce0f7f37b09b77d53b92b2d3a8f3f45350a2e2ef4cc223fec0458878450f/leidenalg-0.10.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02355ee9315d4cd596d1c8355c2ecf7d0a35dcce9d07119eb95427d47c0e10fd", size = 1696123 }, + { url = "https://files.pythonhosted.org/packages/7b/41/9e5d7775335ab7ba8cb4c760c2a8896ba80f4b32b4b57fee2a06e12f3d48/leidenalg-0.10.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66a73be26d85836bbec23131efde00e47bf7882b03e0a29856465fcac425aa27", size = 1883780 }, + { url = "https://files.pythonhosted.org/packages/3d/9f/d4c70c2951d83248d6f1fa9006db48109e2266d4a8b3779d68c151b5c4e9/leidenalg-0.10.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:342ce5b3ef61b965a695dc1ef5e053533645cdde1ab3fa738bc15f13d48e231d", size = 1798653 }, +] + +[[package]] +name = "lightning" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pytorch-lightning" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "torch" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/d0/78ea244ac044cd4df15aa8294a50ff3561fb177e7e5ba788aaa542046cae/lightning-2.4.0.tar.gz", hash = "sha256:9156604cc56e4b2b603f34fa7f0fe5107375c8e6d85e74544b319a15faa9ed0e", size = 620632 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/2c/85eaf42c983b0cd81bcda5876da2c8e2a9fd347908666ea9855724369171/lightning-2.4.0-py3-none-any.whl", hash = "sha256:560163af9711cf59055c448232c473150a299089efce0d2be3cc3288082d8768", size = 810971 }, +] + +[[package]] +name = "lightning-utilities" +version = "0.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/4c/5cb6b6bedc7564591b0ba1ffd3d5a9697d77248bc9da959503fec6fcf3cb/lightning_utilities-0.11.7.tar.gz", hash = "sha256:7e8458a9f0bfb51ffe6c5ab3957aa37b2792fe8281dd9f1b66aa513a558ec4ce", size = 28589 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/2a/d5de2884759ca5eb1103200c1c3b9c5df362250020870a1556d19d15a6d1/lightning_utilities-0.11.7-py3-none-any.whl", hash = "sha256:84eebbc700edbfaa6c005458fc911a7fe7f99f02970b00cb322b4d2767deba98", size = 26816 }, +] + +[[package]] +name = "llvmlite" +version = "0.43.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/3d/f513755f285db51ab363a53e898b85562e950f79a2e6767a364530c2f645/llvmlite-0.43.0.tar.gz", hash = "sha256:ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5", size = 157069 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ff/6ca7e98998b573b4bd6566f15c35e5c8bea829663a6df0c7aa55ab559da9/llvmlite-0.43.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a289af9a1687c6cf463478f0fa8e8aa3b6fb813317b0d70bf1ed0759eab6f761", size = 31064408 }, + { url = "https://files.pythonhosted.org/packages/ca/5c/a27f9257f86f0cda3f764ff21d9f4217b9f6a0d45e7a39ecfa7905f524ce/llvmlite-0.43.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d4fd101f571a31acb1559ae1af30f30b1dc4b3186669f92ad780e17c81e91bc", size = 28793153 }, + { url = "https://files.pythonhosted.org/packages/7e/3c/4410f670ad0a911227ea2ecfcba9f672a77cf1924df5280c4562032ec32d/llvmlite-0.43.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d434ec7e2ce3cc8f452d1cd9a28591745de022f931d67be688a737320dfcead", size = 42857276 }, + { url = "https://files.pythonhosted.org/packages/c6/21/2ffbab5714e72f2483207b4a1de79b2eecd9debbf666ff4e7067bcc5c134/llvmlite-0.43.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6912a87782acdff6eb8bf01675ed01d60ca1f2551f8176a300a886f09e836a6a", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/f2/26/b5478037c453554a61625ef1125f7e12bb1429ae11c6376f47beba9b0179/llvmlite-0.43.0-cp310-cp310-win_amd64.whl", hash = "sha256:14f0e4bf2fd2d9a75a3534111e8ebeb08eda2f33e9bdd6dfa13282afacdde0ed", size = 28123487 }, + { url = "https://files.pythonhosted.org/packages/95/8c/de3276d773ab6ce3ad676df5fab5aac19696b2956319d65d7dd88fb10f19/llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/ee/e1/38deed89ced4cf378c61e232265cfe933ccde56ae83c901aa68b477d14b1/llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57", size = 28793149 }, + { url = "https://files.pythonhosted.org/packages/2f/b2/4429433eb2dc8379e2cb582502dca074c23837f8fd009907f78a24de4c25/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2", size = 42857277 }, + { url = "https://files.pythonhosted.org/packages/6b/99/5d00a7d671b1ba1751fc9f19d3b36f3300774c6eebe2bcdb5f6191763eb4/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/20/ab/ed5ed3688c6ba4f0b8d789da19fd8e30a9cf7fc5852effe311bc5aefe73e/llvmlite-0.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5bd550001d26450bd90777736c69d68c487d17bf371438f975229b2b8241a91", size = 28107433 }, + { url = "https://files.pythonhosted.org/packages/0b/67/9443509e5d2b6d8587bae3ede5598fa8bd586b1c7701696663ea8af15b5b/llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/a2/9c/24139d3712d2d352e300c39c0e00d167472c08b3bd350c3c33d72c88ff8d/llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:35d80d61d0cda2d767f72de99450766250560399edc309da16937b93d3b676e7", size = 28793145 }, + { url = "https://files.pythonhosted.org/packages/bf/f1/4c205a48488e574ee9f6505d50e84370a978c90f08dab41a42d8f2c576b6/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f", size = 42857276 }, + { url = "https://files.pythonhosted.org/packages/00/5f/323c4d56e8401c50185fd0e875fcf06b71bf825a863699be1eb10aa2a9cb/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df6509e1507ca0760787a199d19439cc887bfd82226f5af746d6977bd9f66844", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/c6/94/dea10e263655ce78d777e78d904903faae39d1fc440762be4a9dc46bed49/llvmlite-0.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a2872ee80dcf6b5dbdc838763d26554c2a18aa833d31a2635bff16aafefb9c9", size = 28107442 }, +] + +[[package]] +name = "lnschema-core" +version = "0.73.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/fb/7545a45797fa05e1fda548b7dc22a18a2949ce59374ea781ddf99ca71b94/lnschema_core-0.73.3.tar.gz", hash = "sha256:09e18ebb5d11b81d78872258d57386d6222c5ecfbc367c918deba849f460abab", size = 57239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/45/cf6632c67db5319a89cf09612298878d7d282ae1608cfacbaa40bea147ec/lnschema_core-0.73.3-py2.py3-none-any.whl", hash = "sha256:d1bec50812b13f21d9e50e2b8b0318b9352be2144c695fd24109ae7dcfef1a44", size = 59564 }, +] + +[[package]] +name = "locket" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, +] + +[[package]] +name = "loompy" +version = "3.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h5py" }, + { name = "numba" }, + { name = "numpy" }, + { name = "numpy-groupies" }, + { name = "scipy" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/e3/8dc87471b34bc0db4e72f51a7aa0b454b3b9d551e15900862c022050aca3/loompy-3.0.7.tar.gz", hash = "sha256:b5cdf7b54734c6bed3a181d11947af70af2c6e0dcadc02fd0e871df232faa8f4", size = 4837617 } + +[[package]] +name = "louvain" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "igraph" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/14/4bf2d8b73639ffedc8a949e6ad40cd2207e0dc4ed9720afeb3f69656c194/louvain-0.8.2.tar.gz", hash = "sha256:ce040bb0c5e349aead5a1e5e99738dcd9f2d10c22526d0633281b6ae230ee8d4", size = 4219094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/30/73078108273bbda56fe67883fdd3f6ec66277d9b734e26cd1d9caf38c638/louvain-0.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a2f6a07d4d5120d16e1ac81a65368e3607a77ff1c2ea7f2d6959f043349fe8cc", size = 207129 }, + { url = "https://files.pythonhosted.org/packages/91/c7/becc3f0b6f338f5abca6db2e8eac79aee68caf9cd409f4c04f8b0e2e3a86/louvain-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac39e8a760ce620d53b1fac314a5c6c0cdc7bc471a4973b8acc3f566459f4d78", size = 185203 }, + { url = "https://files.pythonhosted.org/packages/5c/48/25ef90b37625944ca7c7f988fb26e2c9efdb1a4242c14d2fa5f1bd86132b/louvain-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17f59af1db73e5cfb49cd264bb57454a1f53f6287cde073844942e5d01898426", size = 1051667 }, + { url = "https://files.pythonhosted.org/packages/33/1c/79271563445c4d6b3e8bd11e022b7fdfd7384ba400e3be4caf46db3991f5/louvain-0.8.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e25e7c2242ba3ac3d998f12a6ee329d285ce0e286bdb29996cf43cf9f80774aa", size = 1056936 }, + { url = "https://files.pythonhosted.org/packages/5c/01/83d1dc711209568dd5847e87a856ff0d1a9bee092626f59b7c732b3c3fa4/louvain-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ffe980d7cfe7e00492eb4de8d847f7b46ce68ca2d1fa2d8c1598c03d773c66d", size = 1078284 }, + { url = "https://files.pythonhosted.org/packages/84/7b/fb5d1f3581dd3ad67dc56a559213584a1403a67637d55279dccd8e3c4a23/louvain-0.8.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:53dd1fa129025b71d0d5714af4ac09b85b35f9b0439e34cb36b71e8dd87e80ee", size = 1603157 }, + { url = "https://files.pythonhosted.org/packages/4c/1c/e6d7ac9a0f4309745a5ec1b96c3dd185fb70a5121c33938f496a121895a9/louvain-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5222b93da8be423507979cbdc875fff06987a56cc649717d4afa4b3042cfd800", size = 1589042 }, + { url = "https://files.pythonhosted.org/packages/8a/d3/54ff2e5fb782e22a5aaa28a889b3d53fd43e79f5654e0613667ade7b500f/louvain-0.8.2-cp310-cp310-win32.whl", hash = "sha256:8c5f1362e38b821b77863a8a1173d3c135982ebc947f0313ba71fb5f2702144f", size = 82073 }, + { url = "https://files.pythonhosted.org/packages/86/2d/6ef4192aa1fcced0cd8ad69a449090b3bc7834e5043231813d48b88ec252/louvain-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:9573f1b3ac42a35ff709a52bd4652aef3dcd041a5bbd589df2a4e831e3d81931", size = 89850 }, + { url = "https://files.pythonhosted.org/packages/4c/a0/b08b20e4a3366ef39555bcf390cc1489a1d12d76f53413c5cc4cc0e760a6/louvain-0.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0f20e5e9ed22db3c0cfec25d5c5f004a4a2ca00f556779f5cdc421d816a250", size = 207124 }, + { url = "https://files.pythonhosted.org/packages/fc/26/d99a77f5c17ef366bbd11b3509dfad47bcd968c4c1778bfccd4279e4ea25/louvain-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3514682845c7b9d8f14e275f3826ad8aeaff079267eadaec1353a52629f1212e", size = 185202 }, + { url = "https://files.pythonhosted.org/packages/ae/e4/9854d680fc4ae73bdc545544dc596d3a5f89f2a50abe597daded7140c4e2/louvain-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dc11889d69b596f7f5755a4a197ef96da480b6e09959d3340717836ae3cc255", size = 1051707 }, + { url = "https://files.pythonhosted.org/packages/99/15/dfa3d33935e4c90d5a45676e8d3bdf0cbd0c173e7a7f45dee23e7cc636bb/louvain-0.8.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7ae4a8b11f94acd90509972a2fc5d393ad2a6f327e5506be3ed5e97b6ec94ce", size = 1057039 }, + { url = "https://files.pythonhosted.org/packages/3f/3e/b20691ad452187d88c247202cc144dd55babe0dba20f67fd9f715bb0e6fe/louvain-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df66bf58b03ca257299e5652816bae0203a62447f31eec1008f719e0d5604b88", size = 1078332 }, + { url = "https://files.pythonhosted.org/packages/b7/12/1e8a2748dbce63eae1b05ed938834ab1568a7d60da615cf247b8918d4a83/louvain-0.8.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f25d97fe0c4367ea9a9ca3edd731d742b6a0f420e922ea1b4ce4448b8caa0a3b", size = 1605109 }, + { url = "https://files.pythonhosted.org/packages/c3/10/485c648c2dba47aae745f428f77728ec4e7188f77e16c8834e3aaa7c6342/louvain-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a4968137c22004b7ffb465f87f798d2cff1efb456c0f4ad2cea98d2eae057ad1", size = 1591018 }, + { url = "https://files.pythonhosted.org/packages/6e/8e/befb2f08063f1eef786b7c911f10588572bba11687b54056b79553730c93/louvain-0.8.2-cp311-cp311-win32.whl", hash = "sha256:5fee00958c0b45bfd43c20b9141370607c91e32cda28e04db4512187005616c9", size = 82079 }, + { url = "https://files.pythonhosted.org/packages/46/a0/ab037cddff15b67fe747bcbb04ab6e2668c78b749e031514af0cee1c6071/louvain-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:797fa410e2d0f208202eda27ecd686ebecefd2ce3631a754475408eb7ba01421", size = 89850 }, +] + +[[package]] +name = "lxml" +version = "5.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/20c3a4b24751377aaa6307eb230b66701024012c29dd374999cc92983269/lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f", size = 3679318 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ce/2789e39eddf2b13fac29878bfa465f0910eb6b0096e29090e5176bc8cf43/lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656", size = 8124570 }, + { url = "https://files.pythonhosted.org/packages/24/a8/f4010166a25d41715527129af2675981a50d3bbf7df09c5d9ab8ca24fbf9/lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d", size = 4413042 }, + { url = "https://files.pythonhosted.org/packages/41/a4/7e45756cecdd7577ddf67a68b69c1db0f5ddbf0c9f65021ee769165ffc5a/lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a", size = 5139213 }, + { url = "https://files.pythonhosted.org/packages/02/e2/ecf845b12323c92748077e1818b64e8b4dba509a4cb12920b3762ebe7552/lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8", size = 4838814 }, + { url = "https://files.pythonhosted.org/packages/12/91/619f9fb72cf75e9ceb8700706f7276f23995f6ad757e6d400fbe35ca4990/lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330", size = 5425084 }, + { url = "https://files.pythonhosted.org/packages/25/3b/162a85a8f0fd2a3032ec3f936636911c6e9523a8e263fffcfd581ce98b54/lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965", size = 4875993 }, + { url = "https://files.pythonhosted.org/packages/43/af/dd3f58cc7d946da6ae42909629a2b1d5dd2d1b583334d4af9396697d6863/lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22", size = 5012462 }, + { url = "https://files.pythonhosted.org/packages/69/c1/5ea46b2d4c98f5bf5c83fffab8a0ad293c9bc74df9ecfbafef10f77f7201/lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b", size = 4815288 }, + { url = "https://files.pythonhosted.org/packages/1d/51/a0acca077ad35da458f4d3f729ef98effd2b90f003440d35fc36323f8ae6/lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7", size = 5472435 }, + { url = "https://files.pythonhosted.org/packages/4d/6b/0989c9368986961a6b0f55b46c80404c4b758417acdb6d87bfc3bd5f4967/lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8", size = 4976354 }, + { url = "https://files.pythonhosted.org/packages/05/9e/87492d03ff604fbf656ed2bf3e2e8d28f5d58ea1f00ff27ac27b06509079/lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32", size = 5029973 }, + { url = "https://files.pythonhosted.org/packages/f9/cc/9ae1baf5472af88e19e2c454b3710c1be9ecafb20eb474eeabcd88a055d2/lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86", size = 4888837 }, + { url = "https://files.pythonhosted.org/packages/d2/10/5594ffaec8c120d75b17e3ad23439b740a51549a9b5fd7484b2179adfe8f/lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5", size = 5530555 }, + { url = "https://files.pythonhosted.org/packages/ea/9b/de17f05377c8833343b629905571fb06cff2028f15a6f58ae2267662e341/lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03", size = 5405314 }, + { url = "https://files.pythonhosted.org/packages/8a/b4/227be0f1f3cca8255925985164c3838b8b36e441ff0cc10c1d3c6bdba031/lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7", size = 5079303 }, + { url = "https://files.pythonhosted.org/packages/5c/ee/19abcebb7fc40319bb71cd6adefa1ad94d09b5660228715854d6cc420713/lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80", size = 3475126 }, + { url = "https://files.pythonhosted.org/packages/a1/35/183d32551447e280032b2331738cd850da435a42f850b71ebeaab42c1313/lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3", size = 3805065 }, + { url = "https://files.pythonhosted.org/packages/5c/a8/449faa2a3cbe6a99f8d38dcd51a3ee8844c17862841a6f769ea7c2a9cd0f/lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b", size = 8141056 }, + { url = "https://files.pythonhosted.org/packages/ac/8a/ae6325e994e2052de92f894363b038351c50ee38749d30cc6b6d96aaf90f/lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18", size = 4425238 }, + { url = "https://files.pythonhosted.org/packages/f8/fb/128dddb7f9086236bce0eeae2bfb316d138b49b159f50bc681d56c1bdd19/lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442", size = 5095197 }, + { url = "https://files.pythonhosted.org/packages/b4/f9/a181a8ef106e41e3086629c8bdb2d21a942f14c84a0e77452c22d6b22091/lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4", size = 4809809 }, + { url = "https://files.pythonhosted.org/packages/25/2f/b20565e808f7f6868aacea48ddcdd7e9e9fb4c799287f21f1a6c7c2e8b71/lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f", size = 5407593 }, + { url = "https://files.pythonhosted.org/packages/23/0e/caac672ec246d3189a16c4d364ed4f7d6bf856c080215382c06764058c08/lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e", size = 4866657 }, + { url = "https://files.pythonhosted.org/packages/67/a4/1f5fbd3f58d4069000522196b0b776a014f3feec1796da03e495cf23532d/lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c", size = 4967017 }, + { url = "https://files.pythonhosted.org/packages/ee/73/623ecea6ca3c530dd0a4ed0d00d9702e0e85cd5624e2d5b93b005fe00abd/lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16", size = 4810730 }, + { url = "https://files.pythonhosted.org/packages/1d/ce/fb84fb8e3c298f3a245ae3ea6221c2426f1bbaa82d10a88787412a498145/lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79", size = 5455154 }, + { url = "https://files.pythonhosted.org/packages/b1/72/4d1ad363748a72c7c0411c28be2b0dc7150d91e823eadad3b91a4514cbea/lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080", size = 4969416 }, + { url = "https://files.pythonhosted.org/packages/42/07/b29571a58a3a80681722ea8ed0ba569211d9bb8531ad49b5cacf6d409185/lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654", size = 5013672 }, + { url = "https://files.pythonhosted.org/packages/b9/93/bde740d5a58cf04cbd38e3dd93ad1e36c2f95553bbf7d57807bc6815d926/lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d", size = 4878644 }, + { url = "https://files.pythonhosted.org/packages/56/b5/645c8c02721d49927c93181de4017164ec0e141413577687c3df8ff0800f/lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763", size = 5511531 }, + { url = "https://files.pythonhosted.org/packages/85/3f/6a99a12d9438316f4fc86ef88c5d4c8fb674247b17f3173ecadd8346b671/lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec", size = 5402065 }, + { url = "https://files.pythonhosted.org/packages/80/8a/df47bff6ad5ac57335bf552babfb2408f9eb680c074ec1ba412a1a6af2c5/lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be", size = 5069775 }, + { url = "https://files.pythonhosted.org/packages/08/ae/e7ad0f0fbe4b6368c5ee1e3ef0c3365098d806d42379c46c1ba2802a52f7/lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9", size = 3474226 }, + { url = "https://files.pythonhosted.org/packages/c3/b5/91c2249bfac02ee514ab135e9304b89d55967be7e53e94a879b74eec7a5c/lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1", size = 3814971 }, + { url = "https://files.pythonhosted.org/packages/eb/6d/d1f1c5e40c64bf62afd7a3f9b34ce18a586a1cccbf71e783cd0a6d8e8971/lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859", size = 8171753 }, + { url = "https://files.pythonhosted.org/packages/bd/83/26b1864921869784355459f374896dcf8b44d4af3b15d7697e9156cb2de9/lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e", size = 4441955 }, + { url = "https://files.pythonhosted.org/packages/e0/d2/e9bff9fb359226c25cda3538f664f54f2804f4b37b0d7c944639e1a51f69/lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f", size = 5050778 }, + { url = "https://files.pythonhosted.org/packages/88/69/6972bfafa8cd3ddc8562b126dd607011e218e17be313a8b1b9cc5a0ee876/lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e", size = 4748628 }, + { url = "https://files.pythonhosted.org/packages/5d/ea/a6523c7c7f6dc755a6eed3d2f6d6646617cad4d3d6d8ce4ed71bfd2362c8/lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179", size = 5322215 }, + { url = "https://files.pythonhosted.org/packages/99/37/396fbd24a70f62b31d988e4500f2068c7f3fd399d2fd45257d13eab51a6f/lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a", size = 4813963 }, + { url = "https://files.pythonhosted.org/packages/09/91/e6136f17459a11ce1757df864b213efbeab7adcb2efa63efb1b846ab6723/lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3", size = 4923353 }, + { url = "https://files.pythonhosted.org/packages/1d/7c/2eeecf87c9a1fca4f84f991067c693e67340f2b7127fc3eca8fa29d75ee3/lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1", size = 4740541 }, + { url = "https://files.pythonhosted.org/packages/3b/ed/4c38ba58defca84f5f0d0ac2480fdcd99fc7ae4b28fc417c93640a6949ae/lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d", size = 5346504 }, + { url = "https://files.pythonhosted.org/packages/a5/22/bbd3995437e5745cb4c2b5d89088d70ab19d4feabf8a27a24cecb9745464/lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c", size = 4898077 }, + { url = "https://files.pythonhosted.org/packages/0a/6e/94537acfb5b8f18235d13186d247bca478fea5e87d224644e0fe907df976/lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99", size = 4946543 }, + { url = "https://files.pythonhosted.org/packages/8d/e8/4b15df533fe8e8d53363b23a41df9be907330e1fa28c7ca36893fad338ee/lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff", size = 4816841 }, + { url = "https://files.pythonhosted.org/packages/1a/e7/03f390ea37d1acda50bc538feb5b2bda6745b25731e4e76ab48fae7106bf/lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a", size = 5417341 }, + { url = "https://files.pythonhosted.org/packages/ea/99/d1133ab4c250da85a883c3b60249d3d3e7c64f24faff494cf0fd23f91e80/lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8", size = 5327539 }, + { url = "https://files.pythonhosted.org/packages/7d/ed/e6276c8d9668028213df01f598f385b05b55a4e1b4662ee12ef05dab35aa/lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d", size = 5012542 }, + { url = "https://files.pythonhosted.org/packages/36/88/684d4e800f5aa28df2a991a6a622783fb73cf0e46235cfa690f9776f032e/lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30", size = 3486454 }, + { url = "https://files.pythonhosted.org/packages/fc/82/ace5a5676051e60355bd8fb945df7b1ba4f4fb8447f2010fb816bfd57724/lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f", size = 3816857 }, + { url = "https://files.pythonhosted.org/packages/94/6a/42141e4d373903bfea6f8e94b2f554d05506dfda522ada5343c651410dc8/lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a", size = 8156284 }, + { url = "https://files.pythonhosted.org/packages/91/5e/fa097f0f7d8b3d113fb7312c6308af702f2667f22644441715be961f2c7e/lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd", size = 4432407 }, + { url = "https://files.pythonhosted.org/packages/2d/a1/b901988aa6d4ff937f2e5cfc114e4ec561901ff00660c3e56713642728da/lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51", size = 5048331 }, + { url = "https://files.pythonhosted.org/packages/30/0f/b2a54f48e52de578b71bbe2a2f8160672a8a5e103df3a78da53907e8c7ed/lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b", size = 4744835 }, + { url = "https://files.pythonhosted.org/packages/82/9d/b000c15538b60934589e83826ecbc437a1586488d7c13f8ee5ff1f79a9b8/lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002", size = 5316649 }, + { url = "https://files.pythonhosted.org/packages/e3/ee/ffbb9eaff5e541922611d2c56b175c45893d1c0b8b11e5a497708a6a3b3b/lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4", size = 4812046 }, + { url = "https://files.pythonhosted.org/packages/15/ff/7ff89d567485c7b943cdac316087f16b2399a8b997007ed352a1248397e5/lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492", size = 4918597 }, + { url = "https://files.pythonhosted.org/packages/c6/a3/535b6ed8c048412ff51268bdf4bf1cf052a37aa7e31d2e6518038a883b29/lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3", size = 4738071 }, + { url = "https://files.pythonhosted.org/packages/7a/8f/cbbfa59cb4d4fd677fe183725a76d8c956495d7a3c7f111ab8f5e13d2e83/lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4", size = 5342213 }, + { url = "https://files.pythonhosted.org/packages/5c/fb/db4c10dd9958d4b52e34d1d1f7c1f434422aeaf6ae2bbaaff2264351d944/lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367", size = 4893749 }, + { url = "https://files.pythonhosted.org/packages/f2/38/bb4581c143957c47740de18a3281a0cab7722390a77cc6e610e8ebf2d736/lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832", size = 4945901 }, + { url = "https://files.pythonhosted.org/packages/fc/d5/18b7de4960c731e98037bd48fa9f8e6e8f2558e6fbca4303d9b14d21ef3b/lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff", size = 4815447 }, + { url = "https://files.pythonhosted.org/packages/97/a8/cd51ceaad6eb849246559a8ef60ae55065a3df550fc5fcd27014361c1bab/lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd", size = 5411186 }, + { url = "https://files.pythonhosted.org/packages/89/c3/1e3dabab519481ed7b1fdcba21dcfb8832f57000733ef0e71cf6d09a5e03/lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb", size = 5324481 }, + { url = "https://files.pythonhosted.org/packages/b6/17/71e9984cf0570cd202ac0a1c9ed5c1b8889b0fc8dc736f5ef0ffb181c284/lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b", size = 5011053 }, + { url = "https://files.pythonhosted.org/packages/69/68/9f7e6d3312a91e30829368c2b3217e750adef12a6f8eb10498249f4e8d72/lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957", size = 3485634 }, + { url = "https://files.pythonhosted.org/packages/7d/db/214290d58ad68c587bd5d6af3d34e56830438733d0d0856c0275fde43652/lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d", size = 3814417 }, + { url = "https://files.pythonhosted.org/packages/99/f7/b73a431c8500565aa500e99e60b448d305eaf7c0b4c893c7c5a8a69cc595/lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c", size = 3925431 }, + { url = "https://files.pythonhosted.org/packages/db/48/4a206623c0d093d0e3b15f415ffb4345b0bdf661a3d0b15a112948c033c7/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a", size = 4216683 }, + { url = "https://files.pythonhosted.org/packages/54/47/577820c45dd954523ae8453b632d91e76da94ca6d9ee40d8c98dd86f916b/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005", size = 4326732 }, + { url = "https://files.pythonhosted.org/packages/68/de/96cb6d3269bc994b4f5ede8ca7bf0840f5de0a278bc6e50cb317ff71cafa/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce", size = 4218377 }, + { url = "https://files.pythonhosted.org/packages/a5/43/19b1ef6cbffa4244a217f95cc5f41a6cb4720fed33510a49670b03c5f1a0/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83", size = 4351237 }, + { url = "https://files.pythonhosted.org/packages/ba/b2/6a22fb5c0885da3b00e116aee81f0b829ec9ac8f736cd414b4a09413fc7d/lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba", size = 3487557 }, +] + +[[package]] +name = "lz4" +version = "4.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/31/ec1259ca8ad11568abaf090a7da719616ca96b60d097ccc5799cd0ff599c/lz4-4.3.3.tar.gz", hash = "sha256:01fe674ef2889dbb9899d8a67361e0c4a2c833af5aeb37dd505727cf5d2a131e", size = 171509 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/53/61258b5effac76dea5768b07042b2c3c56e15a91194cef92284a0dc0f5e7/lz4-4.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b891880c187e96339474af2a3b2bfb11a8e4732ff5034be919aa9029484cd201", size = 254266 }, + { url = "https://files.pythonhosted.org/packages/92/84/c243a5515950d72ff04220fd49903801825e4ac23691e19e7082d9d9f94b/lz4-4.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:222a7e35137d7539c9c33bb53fcbb26510c5748779364014235afc62b0ec797f", size = 212359 }, + { url = "https://files.pythonhosted.org/packages/10/26/5287564a909d069fdd6c25f2f420c58c5758993fa3ad2e064a7b610e6e5f/lz4-4.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f76176492ff082657ada0d0f10c794b6da5800249ef1692b35cf49b1e93e8ef7", size = 1237799 }, + { url = "https://files.pythonhosted.org/packages/cf/50/75c8f966dbcc524e7253f99b8e04c6cad7328f517eb0323abf8b4068f5bb/lz4-4.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1d18718f9d78182c6b60f568c9a9cec8a7204d7cb6fad4e511a2ef279e4cb05", size = 1263957 }, + { url = "https://files.pythonhosted.org/packages/91/54/0f61c77a9599beb14ac5b828e8da20a04c6eaadb4f3fdbd79a817c66eb74/lz4-4.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cdc60e21ec70266947a48839b437d46025076eb4b12c76bd47f8e5eb8a75dcc", size = 1184035 }, + { url = "https://files.pythonhosted.org/packages/8e/84/3be7fad87d84b67cd43174d67fc567e0aa3be154f8b0a1c2c0ff8df30854/lz4-4.3.3-cp310-cp310-win32.whl", hash = "sha256:c81703b12475da73a5d66618856d04b1307e43428a7e59d98cfe5a5d608a74c6", size = 87235 }, + { url = "https://files.pythonhosted.org/packages/21/08/dc4714eb771b502deec8a714e40e5fbd2242bacd5fe55dcd29a0cb35c567/lz4-4.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:43cf03059c0f941b772c8aeb42a0813d68d7081c009542301637e5782f8a33e2", size = 99781 }, + { url = "https://files.pythonhosted.org/packages/f9/f7/cfb942edd53c8a6aba168720ccf3d6a0cac3e891a7feba97d5823b5dd047/lz4-4.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:30e8c20b8857adef7be045c65f47ab1e2c4fabba86a9fa9a997d7674a31ea6b6", size = 254267 }, + { url = "https://files.pythonhosted.org/packages/71/ca/046bd7e7e1ed4639eb398192374bc3fbf5010d3c168361fec161b63e8bfa/lz4-4.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2f7b1839f795315e480fb87d9bc60b186a98e3e5d17203c6e757611ef7dcef61", size = 212353 }, + { url = "https://files.pythonhosted.org/packages/0c/c2/5beb6a7bb7fd27cd5fe5bb93c15636d30987794b161e4609fbf20dc3b5c7/lz4-4.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edfd858985c23523f4e5a7526ca6ee65ff930207a7ec8a8f57a01eae506aaee7", size = 1239095 }, + { url = "https://files.pythonhosted.org/packages/cf/d4/12915eb3083dfd1746d50b71b73334030b129cd25abbed9133dd2d413c21/lz4-4.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9c410b11a31dbdc94c05ac3c480cb4b222460faf9231f12538d0074e56c563", size = 1265760 }, + { url = "https://files.pythonhosted.org/packages/94/7b/5e72b7504d7675b484812bfc65fe958f7649a64e0d6fe35c11812511f0b5/lz4-4.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2507ee9c99dbddd191c86f0e0c8b724c76d26b0602db9ea23232304382e1f21", size = 1185451 }, + { url = "https://files.pythonhosted.org/packages/2f/b5/3726a678b3a0c64d24e71179e35e7ff8e3553da9d32c2fddce879d042b63/lz4-4.3.3-cp311-cp311-win32.whl", hash = "sha256:f180904f33bdd1e92967923a43c22899e303906d19b2cf8bb547db6653ea6e7d", size = 87232 }, + { url = "https://files.pythonhosted.org/packages/55/f9/69ed96043dae4d982286a4dda2feb473f49e95e4c90a928ec583d93769a2/lz4-4.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:b14d948e6dce389f9a7afc666d60dd1e35fa2138a8ec5306d30cd2e30d36b40c", size = 99794 }, + { url = "https://files.pythonhosted.org/packages/4d/6f/081811b17ccaec5f06b3030756af2737841447849118a6e1078481a78c6c/lz4-4.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e36cd7b9d4d920d3bfc2369840da506fa68258f7bb176b8743189793c055e43d", size = 254213 }, + { url = "https://files.pythonhosted.org/packages/53/4d/8e04ef75feff8848ba3c624ce81c7732bdcea5f8f994758afa88cd3d7764/lz4-4.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:31ea4be9d0059c00b2572d700bf2c1bc82f241f2c3282034a759c9a4d6ca4dc2", size = 212354 }, + { url = "https://files.pythonhosted.org/packages/a3/04/257a72d6a879dbc8c669018989f776fcdd5b4bf3c2c51c09a54f1ca31721/lz4-4.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33c9a6fd20767ccaf70649982f8f3eeb0884035c150c0b818ea660152cf3c809", size = 1238643 }, + { url = "https://files.pythonhosted.org/packages/d9/93/4a7e489156fa7ded03ba9cde4a8ca7f373672b5787cac9a0391befa752a1/lz4-4.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca8fccc15e3add173da91be8f34121578dc777711ffd98d399be35487c934bf", size = 1265014 }, + { url = "https://files.pythonhosted.org/packages/fd/a4/f84ebc23bc7602623b1b003b4e1120cbf86fb03a35c595c226be1985449b/lz4-4.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d84b479ddf39fe3ea05387f10b779155fc0990125f4fb35d636114e1c63a2e", size = 1184881 }, + { url = "https://files.pythonhosted.org/packages/de/3d/8ba48305378e84908221de143a21ba0c0ce52778893865cf85b66b1068da/lz4-4.3.3-cp312-cp312-win32.whl", hash = "sha256:337cb94488a1b060ef1685187d6ad4ba8bc61d26d631d7ba909ee984ea736be1", size = 87241 }, + { url = "https://files.pythonhosted.org/packages/c4/5d/7b70965a0692de29af2af1007fe837f46fd456bbe2aa8f838a8543a3b5cb/lz4-4.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:5d35533bf2cee56f38ced91f766cd0038b6abf46f438a80d50c52750088be93f", size = 99776 }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206 }, + { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079 }, + { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620 }, + { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818 }, + { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493 }, + { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630 }, + { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745 }, + { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021 }, + { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659 }, + { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213 }, + { url = "https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", size = 18219 }, + { url = "https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", size = 14098 }, + { url = "https://files.pythonhosted.org/packages/1c/cf/35fe557e53709e93feb65575c93927942087e9b97213eabc3fe9d5b25a55/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", size = 29014 }, + { url = "https://files.pythonhosted.org/packages/97/18/c30da5e7a0e7f4603abfc6780574131221d9148f323752c2755d48abad30/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", size = 28220 }, + { url = "https://files.pythonhosted.org/packages/0c/40/2e73e7d532d030b1e41180807a80d564eda53babaf04d65e15c1cf897e40/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", size = 27756 }, + { url = "https://files.pythonhosted.org/packages/18/46/5dca760547e8c59c5311b332f70605d24c99d1303dd9a6e1fc3ed0d73561/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", size = 33988 }, + { url = "https://files.pythonhosted.org/packages/6d/c5/27febe918ac36397919cd4a67d5579cbbfa8da027fa1238af6285bb368ea/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", size = 32718 }, + { url = "https://files.pythonhosted.org/packages/f8/81/56e567126a2c2bc2684d6391332e357589a96a76cb9f8e5052d85cb0ead8/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", size = 33317 }, + { url = "https://files.pythonhosted.org/packages/00/0b/23f4b2470accb53285c613a3ab9ec19dc944eaf53592cb6d9e2af8aa24cc/MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", size = 16670 }, + { url = "https://files.pythonhosted.org/packages/b7/a2/c78a06a9ec6d04b3445a949615c4c7ed86a0b2eb68e44e7541b9d57067cc/MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", size = 17224 }, + { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215 }, + { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069 }, + { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452 }, + { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462 }, + { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869 }, + { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906 }, + { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296 }, + { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038 }, + { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572 }, + { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127 }, +] + +[[package]] +name = "matplotlib" +version = "3.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/d8/3d7f706c69e024d4287c1110d74f7dabac91d9843b99eadc90de9efc8869/matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92", size = 36088381 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9d/84eeb82ecdd3ba71b12dd6ab5c820c5cc1e868003ecb3717d41b589ec02a/matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb", size = 7893310 }, + { url = "https://files.pythonhosted.org/packages/36/98/cbacbd30241369d099f9c13a2b6bc3b7068d85214f5b5795e583ac3d8aba/matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4", size = 7764089 }, + { url = "https://files.pythonhosted.org/packages/a8/a0/917f3c6d3a8774a3a1502d9f3dfc1456e07c1fa0c211a23b75a69e154180/matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64", size = 8192377 }, + { url = "https://files.pythonhosted.org/packages/8d/9d/d06860390f9d154fa884f1740a5456378fb153ff57443c91a4a32bab7092/matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66", size = 8303983 }, + { url = "https://files.pythonhosted.org/packages/9e/a7/c0e848ed7de0766c605af62d8097472a37f1a81d93e9afe94faa5890f24d/matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a", size = 9083318 }, + { url = "https://files.pythonhosted.org/packages/09/6c/0fa50c001340a45cde44853c116d6551aea741e59a7261c38f473b53553b/matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae", size = 7819628 }, + { url = "https://files.pythonhosted.org/packages/77/c2/f9d7fe80a8fcce9bb128d1381c6fe41a8d286d7e18395e273002e8e0fa34/matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772", size = 7902925 }, + { url = "https://files.pythonhosted.org/packages/28/ba/8be09886eb56ac04a218a1dc3fa728a5c4cac60b019b4f1687885166da00/matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41", size = 7773193 }, + { url = "https://files.pythonhosted.org/packages/e6/9a/5991972a560db3ab621312a7ca5efec339ae2122f25901c0846865c4b72f/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f", size = 8202378 }, + { url = "https://files.pythonhosted.org/packages/01/75/6c7ce560e95714a10fcbb3367d1304975a1a3e620f72af28921b796403f3/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447", size = 8314361 }, + { url = "https://files.pythonhosted.org/packages/6e/49/dc7384c6c092958e0b75e754efbd9e52500154939c3d715789cee9fb8a53/matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e", size = 9091428 }, + { url = "https://files.pythonhosted.org/packages/8b/ce/15b0bb2fb29b3d46211d8ca740b96b5232499fc49200b58b8d571292c9a6/matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7", size = 7829377 }, + { url = "https://files.pythonhosted.org/packages/82/de/54f7f38ce6de79cb77d513bb3eaa4e0b1031e9fd6022214f47943fa53a88/matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9", size = 7892511 }, + { url = "https://files.pythonhosted.org/packages/35/3e/5713b84a02b24b2a4bd4d6673bfc03017e6654e1d8793ece783b7ed4d484/matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d", size = 7769370 }, + { url = "https://files.pythonhosted.org/packages/5b/bd/c404502aa1824456d2862dd6b9b0c1917761a51a32f7f83ff8cf94b6d117/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7", size = 8193260 }, + { url = "https://files.pythonhosted.org/packages/27/75/de5b9cd67648051cae40039da0c8cbc497a0d99acb1a1f3d087cd66d27b7/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c", size = 8306310 }, + { url = "https://files.pythonhosted.org/packages/de/e3/2976e4e54d7ee76eaf54b7639fdc10a223d05c2bdded7045233e9871e469/matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e", size = 9086717 }, + { url = "https://files.pythonhosted.org/packages/d2/92/c2b9464a0562feb6ae780bdc152364810862e07ef5e6affa2b7686028db2/matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3", size = 7832805 }, + { url = "https://files.pythonhosted.org/packages/5c/7f/8932eac316b32f464b8f9069f151294dcd892c8fbde61fe8bcd7ba7f7f7e/matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9", size = 7893012 }, + { url = "https://files.pythonhosted.org/packages/90/89/9db9db3dd0ff3e2c49e452236dfe29e60b5586a88f8928ca1d153d0da8b5/matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa", size = 7769810 }, + { url = "https://files.pythonhosted.org/packages/67/26/d2661cdc2e1410b8929c5f12dfd521e4528abfed1b3c3d5a28ac48258b43/matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b", size = 8193779 }, + { url = "https://files.pythonhosted.org/packages/95/70/4839eaa672bf4eacc98ebc8d23633e02b6daf39e294e7433c4ab11a689be/matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413", size = 8306260 }, + { url = "https://files.pythonhosted.org/packages/88/62/7b263b2cb2724b45d3a4f9c8c6137696cc3ef037d44383fb01ac2a9555c2/matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b", size = 9086073 }, + { url = "https://files.pythonhosted.org/packages/b0/6d/3572fe243c74112fef120f0bc86f5edd21f49b60e8322fc7f6a01fe945dd/matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49", size = 7833041 }, + { url = "https://files.pythonhosted.org/packages/03/8f/9d505be3eb2f40ec731674fb6b47d10cc3147bbd6a9ea7a08c8da55415c6/matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03", size = 7933657 }, + { url = "https://files.pythonhosted.org/packages/5d/68/44b458b9794bcff2a66921f8c9a8110a50a0bb099bd5f7cabb428a1dc765/matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30", size = 7799276 }, + { url = "https://files.pythonhosted.org/packages/47/79/8486d4ddcaaf676314b5fb58e8fe19d1a6210a443a7c31fa72d4215fcb87/matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51", size = 8221027 }, + { url = "https://files.pythonhosted.org/packages/56/62/72a472181578c3d035dcda0d0fa2e259ba2c4cb91132588a348bb705b70d/matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c", size = 8329097 }, + { url = "https://files.pythonhosted.org/packages/01/8a/760f7fce66b39f447ad160800619d0bd5d0936d2b4633587116534a4afe0/matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e", size = 9093770 }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "ml-dtypes" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/50/17ab8a66d66bdf55ff6dea6fe2df424061cee65c6d772abc871bb563f91b/ml_dtypes-0.4.0.tar.gz", hash = "sha256:eaf197e72f4f7176a19fe3cb8b61846b38c6757607e7bf9cd4b1d84cd3e74deb", size = 692650 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/26/62b6c86ecbe59dbb960be9b134b1d153cc9e0b9c54c8f19b63759403f59c/ml_dtypes-0.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:93afe37f3a879d652ec9ef1fc47612388890660a2657fbb5747256c3b818fd81", size = 390928 }, + { url = "https://files.pythonhosted.org/packages/f4/7d/1e84fa0db717f9fd27d19649f67bd01df1e3f92e041d58b918b39e1898a4/ml_dtypes-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb83fd064db43e67e67d021e547698af4c8d5c6190f2e9b1c53c09f6ff5531d", size = 2184075 }, + { url = "https://files.pythonhosted.org/packages/9d/15/e5af59287e712b26ce776f00911c45c97ac9f4cd82d46500602cc94127ed/ml_dtypes-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03e7cda6ef164eed0abb31df69d2c00c3a5ab3e2610b6d4c42183a43329c72a5", size = 2158374 }, + { url = "https://files.pythonhosted.org/packages/ea/31/cc9b87fbbb3f4bf2cb1a4aeb7648bd6d6c558dc3f60e1bd21958f18ddf71/ml_dtypes-0.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:a15d96d090aebb55ee85173d1775ae325a001aab607a76c8ea0b964ccd6b5364", size = 126622 }, + { url = "https://files.pythonhosted.org/packages/42/6b/b2fa3e2386c2b7dde43f12b83c67f6e583039141dfbb58e5c8fd365a5a7d/ml_dtypes-0.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bdf689be7351cc3c95110c910c1b864002f113e682e44508910c849e144f3df1", size = 390927 }, + { url = "https://files.pythonhosted.org/packages/17/9b/6c655eae05ba3edb30cb03e116dfbe722775b26234b16ed0a14007c871ed/ml_dtypes-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c83e4d443962d891d51669ff241d5aaad10a8d3d37a81c5532a45419885d591c", size = 2186867 }, + { url = "https://files.pythonhosted.org/packages/84/17/a936d3dfad84d028ba8539a93167274b7dcd7985e0d9df487e94a62f9428/ml_dtypes-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1e2f4237b459a63c97c2c9f449baa637d7e4c20addff6a9bac486f22432f3b6", size = 2161456 }, + { url = "https://files.pythonhosted.org/packages/f0/36/290745178e5776f7416818abc1334c1b19afb93c7c87fd1bef3cc99f84ca/ml_dtypes-0.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:75b4faf99d0711b81f393db36d210b4255fd419f6f790bc6c1b461f95ffb7a9e", size = 126751 }, + { url = "https://files.pythonhosted.org/packages/30/9d/890e8c9cb556cec121f784fd84089e1e52939ba6eabf5dc62f6435db28d6/ml_dtypes-0.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ee9f91d4c4f9959a7e1051c141dc565f39e54435618152219769e24f5e9a4d06", size = 394380 }, + { url = "https://files.pythonhosted.org/packages/37/d5/3f3085b3a155e1b84c7fc680f05538d31cf01b835aa19cb17edd4994693f/ml_dtypes-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad6849a2db386b38e4d54fe13eb3293464561780531a918f8ef4c8169170dd49", size = 2181698 }, + { url = "https://files.pythonhosted.org/packages/8c/ef/5635b60d444db9c949b32d4e1a0a30b3ac237afbd71cce8bd1ccfb145723/ml_dtypes-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa32979ebfde3a0d7c947cafbf79edc1ec77ac05ad0780ee86c1d8df70f2259", size = 2158784 }, + { url = "https://files.pythonhosted.org/packages/0f/b7/7cfca987ca898b64c0b7d185e957fbd8dccb64fe5ae9e44f68ec83371df5/ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:3b67ec73a697c88c1122038e0de46520e48dc2ec876d42cf61bc5efe3c0b7675", size = 127498 }, +] + +[[package]] +name = "more-itertools" +version = "10.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", size = 121020 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", size = 60952 }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/f9/a892a6038c861fa849b11a2bb0502c07bc698ab6ea53359e5771397d883b/msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", size = 150428 }, + { url = "https://files.pythonhosted.org/packages/df/7a/d174cc6a3b6bb85556e6a046d3193294a92f9a8e583cdbd46dc8a1d7e7f4/msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", size = 84131 }, + { url = "https://files.pythonhosted.org/packages/08/52/bf4fbf72f897a23a56b822997a72c16de07d8d56d7bf273242f884055682/msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", size = 81215 }, + { url = "https://files.pythonhosted.org/packages/02/95/dc0044b439b518236aaf012da4677c1b8183ce388411ad1b1e63c32d8979/msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", size = 371229 }, + { url = "https://files.pythonhosted.org/packages/ff/75/09081792db60470bef19d9c2be89f024d366b1e1973c197bb59e6aabc647/msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", size = 378034 }, + { url = "https://files.pythonhosted.org/packages/32/d3/c152e0c55fead87dd948d4b29879b0f14feeeec92ef1fd2ec21b107c3f49/msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", size = 363070 }, + { url = "https://files.pythonhosted.org/packages/d9/2c/82e73506dd55f9e43ac8aa007c9dd088c6f0de2aa19e8f7330e6a65879fc/msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", size = 359863 }, + { url = "https://files.pythonhosted.org/packages/cb/a0/3d093b248837094220e1edc9ec4337de3443b1cfeeb6e0896af8ccc4cc7a/msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", size = 368166 }, + { url = "https://files.pythonhosted.org/packages/e4/13/7646f14f06838b406cf5a6ddbb7e8dc78b4996d891ab3b93c33d1ccc8678/msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", size = 370105 }, + { url = "https://files.pythonhosted.org/packages/67/fa/dbbd2443e4578e165192dabbc6a22c0812cda2649261b1264ff515f19f15/msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", size = 68513 }, + { url = "https://files.pythonhosted.org/packages/24/ce/c2c8fbf0ded750cb63cbcbb61bc1f2dfd69e16dca30a8af8ba80ec182dcd/msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", size = 74687 }, + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803 }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343 }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408 }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096 }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671 }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414 }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405 }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041 }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538 }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871 }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 }, +] + +[[package]] +name = "multidict" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628 }, + { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327 }, + { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689 }, + { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639 }, + { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315 }, + { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471 }, + { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585 }, + { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957 }, + { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609 }, + { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016 }, + { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542 }, + { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163 }, + { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832 }, + { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402 }, + { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800 }, + { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, + { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, + { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, + { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, + { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, + { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, + { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, + { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, + { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, + { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, + { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, + { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, + { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, + { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, + { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, + { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, + { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, + { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, + { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, + { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, + { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, + { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, + { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, + { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, + { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, + { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, + { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, + { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, + { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, + { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, + { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771 }, + { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533 }, + { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595 }, + { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094 }, + { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876 }, + { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099 }, + { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403 }, + { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348 }, + { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673 }, + { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927 }, + { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711 }, + { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519 }, + { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426 }, + { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531 }, + { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, +] + +[[package]] +name = "multiprocessing-on-dill" +version = "3.5.0a4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/4d/4b135e2e5cd0194eb29f2ed36e9a77a07596787a9a8ac2279bd4445398f2/multiprocessing_on_dill-3.5.0a4.tar.gz", hash = "sha256:d6d50c300ff4bd408bb71eb78725e60231039ee9b3d0d9bb7697b9d0e15045e7", size = 53330 } + +[[package]] +name = "mygene" +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "biothings-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/ec/a256003f84196aa3fdd65a7c6f5adfc0688398fb66442eba75b39c9b7627/mygene-3.2.2.tar.gz", hash = "sha256:e729cabbc28cf5afb221bca1ab637883b375cb1a3e2f067587ec79f71affdaea", size = 5399 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/b7/132b1673c0ec00881d49d56c09624942fa0ebd2fc21d73d80647efa082e9/mygene-3.2.2-py2.py3-none-any.whl", hash = "sha256:18d85d1b28ecee2be31d844607fb0c5f7d7c58573278432df819ee2a5e88fe46", size = 5357 }, +] + +[[package]] +name = "mysql-connector-python" +version = "8.0.29" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/aa/74c81e0c391723f5a6b28a716fd9b8fba4cb2d0adb299f41ea51aa2bdfb6/mysql-connector-python-8.0.29.tar.gz", hash = "sha256:29ec05ded856b4da4e47239f38489c03b31673ae0f46a090d0e4e29c670e6181", size = 286505 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/bd/3493d95c0ded30e0a6217f1922dfe6766baa57e55bcc1f2b51b8e80769e6/mysql_connector_python-8.0.29-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bed43ea3a11f8d4e7c2e3f20c891214e68b45451314f91fddf9ca701de7a53ac", size = 5019891 }, + { url = "https://files.pythonhosted.org/packages/8c/64/1574d09c4e9dd125b7394b7af7c4ff32b2aa9cb4b69e560b851bb6ccae0c/mysql_connector_python-8.0.29-cp310-cp310-manylinux1_i686.whl", hash = "sha256:6e2267ad75b37b5e1c480cde77cdc4f795427a54266ead30aabcdbf75ac70064", size = 24270759 }, + { url = "https://files.pythonhosted.org/packages/1e/06/283bbd988e67767cda6ebc96dce149cee62306cde57b745d7293e4cefeb0/mysql_connector_python-8.0.29-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d5afb766b379111942d4260f29499f93355823c7241926471d843c9281fe477c", size = 25199386 }, + { url = "https://files.pythonhosted.org/packages/6c/22/77a549720c5ff96fe03eb1c03792f4ce63e625031b72f9401016f298508c/mysql_connector_python-8.0.29-cp310-cp310-win_amd64.whl", hash = "sha256:4de5959e27038cbd11dfccb1afaa2fd258c013e59d3e15709dd1992086103050", size = 7736583 }, + { url = "https://files.pythonhosted.org/packages/32/cd/1581bfe8f5ad7fd2aecdc499f0387227ad7912419384f9393b6205a764da/mysql_connector_python-8.0.29-py2.py3-none-any.whl", hash = "sha256:047420715bbb51d3cba78de446c8a6db4666459cd23e168568009c620a3f5b90", size = 342027 }, +] + +[[package]] +name = "natsort" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, +] + +[[package]] +name = "networkx" +version = "3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/e6/b164f94c869d6b2c605b5128b7b0cfe912795a87fc90e78533920001f3ec/networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9", size = 2126579 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/e9/5f72929373e1a0e8d142a130f3f97e6ff920070f87f91c4e13e40e0fba5a/networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2", size = 1702396 }, +] + +[[package]] +name = "numba" +version = "0.60.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/2849300a9184775ba274aba6f82f303343669b0592b7bb0849ea713dabb0/numba-0.60.0.tar.gz", hash = "sha256:5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16", size = 2702171 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/cf/baa13a7e3556d73d9e38021e6d6aa4aeb30d8b94545aa8b70d0f24a1ccc4/numba-0.60.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d761de835cd38fb400d2c26bb103a2726f548dc30368853121d66201672e651", size = 2647627 }, + { url = "https://files.pythonhosted.org/packages/ac/ba/4b57fa498564457c3cc9fc9e570a6b08e6086c74220f24baaf04e54b995f/numba-0.60.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:159e618ef213fba758837f9837fb402bbe65326e60ba0633dbe6c7f274d42c1b", size = 2650322 }, + { url = "https://files.pythonhosted.org/packages/28/98/7ea97ee75870a54f938a8c70f7e0be4495ba5349c5f9db09d467c4a5d5b7/numba-0.60.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1527dc578b95c7c4ff248792ec33d097ba6bef9eda466c948b68dfc995c25781", size = 3407390 }, + { url = "https://files.pythonhosted.org/packages/79/58/cb4ac5b8f7ec64200460aef1fed88258fb872ceef504ab1f989d2ff0f684/numba-0.60.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe0b28abb8d70f8160798f4de9d486143200f34458d34c4a214114e445d7124e", size = 3699694 }, + { url = "https://files.pythonhosted.org/packages/1c/b0/c61a93ca947d12233ff45de506ddbf52af3f752066a0b8be4d27426e16da/numba-0.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:19407ced081d7e2e4b8d8c36aa57b7452e0283871c296e12d798852bc7d7f198", size = 2687030 }, + { url = "https://files.pythonhosted.org/packages/98/ad/df18d492a8f00d29a30db307904b9b296e37507034eedb523876f3a2e13e/numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8", size = 2647254 }, + { url = "https://files.pythonhosted.org/packages/9a/51/a4dc2c01ce7a850b8e56ff6d5381d047a5daea83d12bad08aa071d34b2ee/numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b", size = 2649970 }, + { url = "https://files.pythonhosted.org/packages/f9/4c/8889ac94c0b33dca80bed11564b8c6d9ea14d7f094e674c58e5c5b05859b/numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703", size = 3412492 }, + { url = "https://files.pythonhosted.org/packages/57/03/2b4245b05b71c0cee667e6a0b51606dfa7f4157c9093d71c6b208385a611/numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8", size = 3705018 }, + { url = "https://files.pythonhosted.org/packages/79/89/2d924ca60dbf949f18a6fec223a2445f5f428d9a5f97a6b29c2122319015/numba-0.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cac02c041e9b5bc8cf8f2034ff6f0dbafccd1ae9590dc146b3a02a45e53af4e2", size = 2686920 }, + { url = "https://files.pythonhosted.org/packages/eb/5c/b5ec752c475e78a6c3676b67c514220dbde2725896bbb0b6ec6ea54b2738/numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404", size = 2647866 }, + { url = "https://files.pythonhosted.org/packages/65/42/39559664b2e7c15689a638c2a38b3b74c6e69a04e2b3019b9f7742479188/numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c", size = 2650208 }, + { url = "https://files.pythonhosted.org/packages/67/88/c4459ccc05674ef02119abf2888ccd3e2fed12a323f52255f4982fc95876/numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e", size = 3466946 }, + { url = "https://files.pythonhosted.org/packages/8b/41/ac11cf33524def12aa5bd698226ae196a1185831c05ed29dc0c56eaa308b/numba-0.60.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0ebaa91538e996f708f1ab30ef4d3ddc344b64b5227b67a57aa74f401bb68b9d", size = 3761463 }, + { url = "https://files.pythonhosted.org/packages/ca/bd/0fe29fcd1b6a8de479a4ed25c6e56470e467e3611c079d55869ceef2b6d1/numba-0.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:f75262e8fe7fa96db1dca93d53a194a38c46da28b112b8a4aca168f0df860347", size = 2707588 }, +] + +[[package]] +name = "numcodecs" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/22/e5cba9013403186906390c0efb0ab0db60d4e580a8966650b2372ab967e1/numcodecs-0.13.0.tar.gz", hash = "sha256:ba4fac7036ea5a078c7afe1d4dffeb9685080d42f19c9c16b12dad866703aa2e", size = 5922216 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/80/7f4c8dea6bb1de807582c8eddb8e62df57c9434f7af6ffbb1ad645755360/numcodecs-0.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:56e49f68ce6aeba29f144992524c8897d94f846d02bbcc820dd29d7c5c2a073e", size = 1564457 }, + { url = "https://files.pythonhosted.org/packages/f7/59/011157ae0806eb16ade62c430869c63abe1869b992e41304fcb10a542a28/numcodecs-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:17bc4b568214582f4c623700592f633f3afd920848630049c584fa1e535253ad", size = 1171322 }, + { url = "https://files.pythonhosted.org/packages/e9/1a/7f36f6868a6f8752f90eb2f1dece0b3e7cb1b1a07308865054388eff4c3d/numcodecs-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eed420a9c62d0a569aa94a387f93045f068ad3e7bbd787c6ce70bc5fefbaa7d9", size = 8619198 }, + { url = "https://files.pythonhosted.org/packages/9a/6c/3f3085863f1989a34bf0ad2248e5fcf86775c61c14ed725a6ec3d5e4345b/numcodecs-0.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:e7d3b9693df52eeaf978d2a56971d01cf9b4e284ae769ec764807f2087cce51d", size = 832398 }, + { url = "https://files.pythonhosted.org/packages/a3/0b/485398ce69f2761baed595bc576a35962d1e1ac0294f0c9bc3a2c695e0aa/numcodecs-0.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f208a1b8b5e66c767ed043812ca74d9045e09b7b2e085d064a585c30b9efc8e7", size = 1564441 }, + { url = "https://files.pythonhosted.org/packages/95/7d/e0ade85bdce246dea138764d227f3d3d7dd3bc246842ac1fcb40a6027a87/numcodecs-0.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a68368d3ce625ec76fcacd84785f6110d30a232909d5c6093a7aa25628880477", size = 1171430 }, + { url = "https://files.pythonhosted.org/packages/87/4e/ff2511622e8653d6a59e50dd4d2fb7cb38bb04d2debcd29e416c537cc11c/numcodecs-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5904216811f2e9d312c23ffaad3b3d4c7442a3583d3a8bf81ca8319e9f5deb5", size = 8862311 }, + { url = "https://files.pythonhosted.org/packages/19/21/1d436326bf2508b2d464d428a002ddd60f363a274caf18b92ad78d6f83f3/numcodecs-0.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:208cab0f4d9cf4409e9c4a4c935e165833786614822c81dee9d865af372da9df", size = 833220 }, + { url = "https://files.pythonhosted.org/packages/13/98/f84a6c9d679897f771d81a725078ba8206e6d8cf0b76d12369497bec1ae3/numcodecs-0.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3cf462d2357998d7f6baaa0427657b0eeda3eb79fba2b146d2d04542912a513", size = 1565557 }, + { url = "https://files.pythonhosted.org/packages/5a/08/2079fb77e0922d78a890a69a389bbb01f1335292c478827deb811a0a1009/numcodecs-0.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ac4dd5556fb126271e93bd1a02266e21b01d3617db448d70d00eec8e034506b4", size = 1173464 }, + { url = "https://files.pythonhosted.org/packages/85/dd/c89fd8966b69ab4d6c6bd7496fb18bdf920f23dd9bcaec8c7ecce9871d0b/numcodecs-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:820be89729583c91601a6b35c052008cdd2665b25bfedb91b367cc155fb34ba0", size = 8836483 }, + { url = "https://files.pythonhosted.org/packages/f3/b2/2fbf5c79e3df7344f3bcf711f2237f1bc70f0bc49826990023847c718050/numcodecs-0.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:d67a859dd8a7f026829e91cb1799c26720cc9d29ee4ae0060cc7a581670abc06", size = 829715 }, +] + +[[package]] +name = "numexpr" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/61/dd156698c6211a877170303b49be711f6952570c2a03bfdd2ae3217fb213/numexpr-2.10.1.tar.gz", hash = "sha256:9bba99d354a65f1a008ab8b87f07d84404c668e66bab624df5b6b5373403cf81", size = 101580 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/e3/7fcce966d3447535f534d5d9d63260060c64062f0b1240d9aa86e2a2ff9c/numexpr-2.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bbd35f17f6efc00ebd4a480192af1ee30996094a0d5343b131b0e90e61e8b554", size = 141365 }, + { url = "https://files.pythonhosted.org/packages/1d/92/07a85f90737df22abf0355a86790eb698015e6886332a89765f78d188ff7/numexpr-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fecdf4bf3c1250e56583db0a4a80382a259ba4c2e1efa13e04ed43f0938071f5", size = 130975 }, + { url = "https://files.pythonhosted.org/packages/0b/43/05ccb35fef17d4c88fb6f079807b9aef93cf58bf738385ac1197e008ab58/numexpr-2.10.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2efa499f460124538a5b4f1bf2e77b28eb443ee244cc5573ed0f6a069ebc635", size = 402895 }, + { url = "https://files.pythonhosted.org/packages/0e/e2/f07ab8322b1cd207e562b417c746fb006367f190955ba1dbf17981bcfcd9/numexpr-2.10.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac23a72eff10f928f23b147bdeb0f1b774e862abe332fc9bf4837e9f1bc0bbf9", size = 405008 }, + { url = "https://files.pythonhosted.org/packages/8c/c3/bae733aa8e4acda51613dd1a039ca05d0b2d0544a593ccf4f7b8761e8679/numexpr-2.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b28eaf45f1cc1048aad9e90e3a8ada1aef58c5f8155a85267dc781b37998c046", size = 1375671 }, + { url = "https://files.pythonhosted.org/packages/00/99/6f3d06548abf29af0d0398be6a33adc81de2f3e10e3735449b219bf6be75/numexpr-2.10.1-cp310-cp310-win32.whl", hash = "sha256:4f0985bd1c493b23b5aad7d81fa174798f3812efb78d14844194834c9fee38b8", size = 148087 }, + { url = "https://files.pythonhosted.org/packages/6a/6e/c1db0f99c04240cff8a80334a50c74708bdd90b319b87799867f1f84bca9/numexpr-2.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:44f6d12a8c44be90199bbb10d3abf467f88951f48a3d1fbbd3c219d121f39c9d", size = 141168 }, + { url = "https://files.pythonhosted.org/packages/98/a2/b72bf13afc815e64779a671c880a9e2753ae62cff10d3a1548b5ba6cf5e8/numexpr-2.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3c0b0bf165b2d886eb981afa4e77873ca076f5d51c491c4d7b8fc10f17c876f", size = 141382 }, + { url = "https://files.pythonhosted.org/packages/ae/dd/2e64a90d5632cc8ceb964f84c801d896411a37edc563def94e2e9873e630/numexpr-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56648a04679063175681195670ad53e5c8ca19668166ed13875199b5600089c7", size = 130940 }, + { url = "https://files.pythonhosted.org/packages/d9/32/1100b44ca545ea969204daf260f747eebea71758f13236374f7a5ef759e1/numexpr-2.10.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce04ae6efe2a9d0be1a0e114115c3ae70c68b8b8fbc615c5c55c15704b01e6a4", size = 404509 }, + { url = "https://files.pythonhosted.org/packages/2f/b3/55ac60a4003fcc6013ef87a3c97fd7811c5662cb1c19ea438c03601c3d8f/numexpr-2.10.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:45f598182b4f5c153222e47d5163c3bee8d5ebcaee7e56dd2a5898d4d97e4473", size = 406661 }, + { url = "https://files.pythonhosted.org/packages/02/89/9b78120ddaf9b4615a7a9ebaffaf93e0931aec0a219e72b7ade9823280a8/numexpr-2.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a50370bea77ba94c3734a44781c716751354c6bfda2d369af3aed3d67d42871", size = 1377483 }, + { url = "https://files.pythonhosted.org/packages/e1/a7/2d6e4832a23142ccaefe26c3f0e901fd782dd73a30eaef6f78f387cc9f52/numexpr-2.10.1-cp311-cp311-win32.whl", hash = "sha256:fa4009d84a8e6e21790e718a80a22d57fe7f215283576ef2adc4183f7247f3c7", size = 148088 }, + { url = "https://files.pythonhosted.org/packages/06/c6/da8f79ce916598d82d3240318f282eb70120c95dab0e61ece1c67c41434f/numexpr-2.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:fcbf013bb8494e8ef1d11fa3457827c1571c6a3153982d709e5d17594999d4dd", size = 141170 }, + { url = "https://files.pythonhosted.org/packages/c1/29/6470c540591f0f19529dd1ffb3c45dd1ca0a413317ba6b9441609f0dc370/numexpr-2.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:82fc95c301b15ff4823f98989ee363a2d5555d16a7cfd3710e98ddee726eaaaa", size = 141591 }, + { url = "https://files.pythonhosted.org/packages/1f/09/d6e9d502ec37c3a8bdecd45b8c7ddd61c19076649616e285f8d6196dafb5/numexpr-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbf79fef834f88607f977ab9867061dcd9b40ccb08bb28547c6dc6c73e560895", size = 131084 }, + { url = "https://files.pythonhosted.org/packages/48/0c/35fc08876bbfef03a7ed083c92041a28d71fabfab81a202e46a8ebe772aa/numexpr-2.10.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:552c8d4b2e3b87cdb2abb40a781b9a61a9090a9f66ac7357fc5a0b93aff76be3", size = 405802 }, + { url = "https://files.pythonhosted.org/packages/04/ad/5c9c9943323692e1027484b95f2fe5166c36eb71039d4133ebd29f2569d2/numexpr-2.10.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22cc65e9121aeb3187a2b50827715b2b087ea70e8ab21416ea52662322087b43", size = 408540 }, + { url = "https://files.pythonhosted.org/packages/be/c7/4ceec83eb39931d7132bf218b84b26efacadd32b022042ffa407050962c5/numexpr-2.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:00204e5853713b5eba5f3d0bc586a5d8d07f76011b597c8b4087592cc2ec2928", size = 1379067 }, + { url = "https://files.pythonhosted.org/packages/c2/0e/c6a4c67ad3e3aec2da87b3c300363a2b3c9a689f6ba67a4b71f444240989/numexpr-2.10.1-cp312-cp312-win32.whl", hash = "sha256:82bf04a1495ac475de4ab49fbe0a3a2710ed3fd1a00bc03847316b5d7602402d", size = 148228 }, + { url = "https://files.pythonhosted.org/packages/f5/4f/6c2621db459b8cab5cfcbd21c6ccc6cde594d0256853d9a79e4f454ed131/numexpr-2.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:300e577b3c006dd7a8270f1bb2e8a00ee15bf235b1650fe2a6febec2954bc2c3", size = 141256 }, +] + +[[package]] +name = "numpy" +version = "1.26.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, + { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, + { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889 }, + { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746 }, + { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620 }, + { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659 }, + { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905 }, + { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554 }, + { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127 }, + { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994 }, + { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005 }, + { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297 }, + { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567 }, + { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812 }, + { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913 }, + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901 }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868 }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109 }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613 }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172 }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643 }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803 }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754 }, +] + +[[package]] +name = "numpy-groupies" +version = "0.11.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/56/4fdd73388ec13a1ac3d4b27856a67b098eac6c120bbb43b42b2822e20f6c/numpy_groupies-0.11.2.tar.gz", hash = "sha256:2fda978c4d28d2f1633a63972f425d0a7f2f12a75505d215b41b6de712e2ec4b", size = 159015 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/42/230a3fc58aa50ce28649f3f9162d83bbf3d77e29fdd397a4766d8a88409f/numpy_groupies-0.11.2-py3-none-any.whl", hash = "sha256:8d0d686160f860c12d97f12f457116f8b8bebfa33a68b8efcd24dcfedc2837f1", size = 40634 }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.1.3.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/6d/121efd7382d5b0284239f4ab1fc1590d86d34ed4a4a2fdb13b30ca8e5740/nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728", size = 410594774 }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.1.105" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/00/6b218edd739ecfc60524e585ba8e6b00554dd908de2c9c66c1af3e44e18d/nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e", size = 14109015 }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.1.105" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/9f/c64c03f49d6fbc56196664d05dba14e3a561038a81a638eeb47f4d4cfd48/nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2", size = 23671734 }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.1.105" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/d5/c68b1d2cdfcc59e72e8a5949a37ddb22ae6cade80cd4a57a84d4c8b55472/nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40", size = 823596 }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "8.9.2.26" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/74/a2e2be7fb83aaedec84f391f082cf765dfb635e7caa9b49065f73e4835d8/nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9", size = 731725872 }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.0.2.54" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/94/eb540db023ce1d162e7bea9f8f5aa781d57c65aed513c33ee9a5123ead4d/nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56", size = 121635161 }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.2.106" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/31/4890b1c9abc496303412947fc7dcea3d14861720642b49e8ceed89636705/nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0", size = 56467784 }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.4.5.107" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, + { name = "nvidia-cusparse-cu12" }, + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/1d/8de1e5c67099015c834315e333911273a8c6aaba78923dd1d1e25fc5f217/nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd", size = 124161928 }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.1.0.106" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/5b/cfaeebf25cd9fdec14338ccb16f6b2c4c7fa9163aefcf057d86b9cc248bb/nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c", size = 195958278 }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.19.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/00/d0d4e48aef772ad5aebcf70b73028f88db6e5640b36c38e90445b7a57c45/nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl", hash = "sha256:a9734707a2c96443331c1e48c717024aa6678a0e2a4cb66b2c364d18cee6b48d", size = 165987969 }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.6.68" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/8c/69c9e39cd6bfa813852a94e9bd3c075045e2707d163e9dc2326c82d2c330/nvidia_nvjitlink_cu12-12.6.68-py3-none-manylinux2014_aarch64.whl", hash = "sha256:b3fd0779845f68b92063ab1393abab1ed0a23412fc520df79a8190d098b5cd6b", size = 19253287 }, + { url = "https://files.pythonhosted.org/packages/a8/48/a9775d377cb95585fb188b469387f58ba6738e268de22eae2ad4cedb2c41/nvidia_nvjitlink_cu12-12.6.68-py3-none-manylinux2014_x86_64.whl", hash = "sha256:125a6c2a44e96386dda634e13d944e60b07a0402d391a070e8fb4104b34ea1ab", size = 19725597 }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.1.105" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/d3/8057f0587683ed2fcd4dbfbdfdfa807b9160b809976099d36b8f60d08f03/nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5", size = 99138 }, +] + +[[package]] +name = "omegaconf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500 }, +] + +[[package]] +name = "omnipath" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "docrep" }, + { name = "inflect" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "urllib3" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/fd/8706888556daa77e089e4ccd21840f99fedc180d4f145b97aae2413ededb/omnipath-1.0.8.tar.gz", hash = "sha256:3821b9ba11957412ff9e4932eb6d0c17242939661468064ad1ce28ee3e27394f", size = 1948481 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/f3/00971472499c8a76a8bfd38b987736a7eb06d6c2f20d537363b6b28dfcec/omnipath-1.0.8-py3-none-any.whl", hash = "sha256:34dba15830c225421d9464e062e7dd0b4d46b569e7394786ce181f9e294a4442", size = 68948 }, +] + +[[package]] +name = "opt-einsum" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/bf/9257e53a0e7715bc1127e15063e831f076723c6cd60985333a1c18878fb8/opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549", size = 73951 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/19/404708a7e54ad2798907210462fd950c3442ea51acc8790f3da48d2bee8b/opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147", size = 65486 }, +] + +[[package]] +name = "owlready2" +version = "0.46" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/61/38/95f5353f10e9d7a7c46574b739f8e4d77b2e81dd8e389afb15f741969541/owlready2-0.46.tar.gz", hash = "sha256:3c1b06dbe85df77dfa2de5a13ba1d11b4b8543c1c0ccdc5be252a81e3c0de55a", size = 27354377 } + +[[package]] +name = "packaging" +version = "24.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, +] + +[[package]] +name = "pandas" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/d9/ecf715f34c73ccb1d8ceb82fc01cd1028a65a5f6dbc57bfa6ea155119058/pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54", size = 4398391 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/2d/39600d073ea70b9cafdc51fab91d69c72b49dd92810f24cb5ac6631f387f/pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce", size = 12551798 }, + { url = "https://files.pythonhosted.org/packages/fd/4b/0cd38e68ab690b9df8ef90cba625bf3f93b82d1c719703b8e1b333b2c72d/pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238", size = 11287392 }, + { url = "https://files.pythonhosted.org/packages/01/c6/d3d2612aea9b9f28e79a30b864835dad8f542dcf474eee09afeee5d15d75/pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08", size = 15634823 }, + { url = "https://files.pythonhosted.org/packages/89/1b/12521efcbc6058e2673583bb096c2b5046a9df39bd73eca392c1efed24e5/pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0", size = 13032214 }, + { url = "https://files.pythonhosted.org/packages/e4/d7/303dba73f1c3a9ef067d23e5afbb6175aa25e8121be79be354dcc740921a/pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51", size = 16278302 }, + { url = "https://files.pythonhosted.org/packages/ba/df/8ff7c5ed1cc4da8c6ab674dc8e4860a4310c3880df1283e01bac27a4333d/pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99", size = 13892866 }, + { url = "https://files.pythonhosted.org/packages/69/a6/81d5dc9a612cf0c1810c2ebc4f2afddb900382276522b18d128213faeae3/pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772", size = 11621592 }, + { url = "https://files.pythonhosted.org/packages/1b/70/61704497903d43043e288017cb2b82155c0d41e15f5c17807920877b45c2/pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288", size = 12574808 }, + { url = "https://files.pythonhosted.org/packages/16/c6/75231fd47afd6b3f89011e7077f1a3958441264aca7ae9ff596e3276a5d0/pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151", size = 11304876 }, + { url = "https://files.pythonhosted.org/packages/97/2d/7b54f80b93379ff94afb3bd9b0cd1d17b48183a0d6f98045bc01ce1e06a7/pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b", size = 15602548 }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4d82be566f069d7a9a702dcdf6f9106df0e0b042e738043c0cc7ddd7e3f6/pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee", size = 13031332 }, + { url = "https://files.pythonhosted.org/packages/92/a2/b79c48f530673567805e607712b29814b47dcaf0d167e87145eb4b0118c6/pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db", size = 16286054 }, + { url = "https://files.pythonhosted.org/packages/40/c7/47e94907f1d8fdb4868d61bd6c93d57b3784a964d52691b77ebfdb062842/pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1", size = 13879507 }, + { url = "https://files.pythonhosted.org/packages/ab/63/966db1321a0ad55df1d1fe51505d2cdae191b84c907974873817b0a6e849/pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24", size = 11634249 }, + { url = "https://files.pythonhosted.org/packages/dd/49/de869130028fb8d90e25da3b7d8fb13e40f5afa4c4af1781583eb1ff3839/pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef", size = 12500886 }, + { url = "https://files.pythonhosted.org/packages/db/7c/9a60add21b96140e22465d9adf09832feade45235cd22f4cb1668a25e443/pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce", size = 11340320 }, + { url = "https://files.pythonhosted.org/packages/b0/85/f95b5f322e1ae13b7ed7e97bd999160fa003424711ab4dc8344b8772c270/pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad", size = 15204346 }, + { url = "https://files.pythonhosted.org/packages/40/10/79e52ef01dfeb1c1ca47a109a01a248754ebe990e159a844ece12914de83/pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad", size = 12733396 }, + { url = "https://files.pythonhosted.org/packages/35/9d/208febf8c4eb5c1d9ea3314d52d8bd415fd0ef0dd66bb24cc5bdbc8fa71a/pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76", size = 15858913 }, + { url = "https://files.pythonhosted.org/packages/99/d1/2d9bd05def7a9e08a92ec929b5a4c8d5556ec76fae22b0fa486cbf33ea63/pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32", size = 13417786 }, + { url = "https://files.pythonhosted.org/packages/22/a5/a0b255295406ed54269814bc93723cfd1a0da63fb9aaf99e1364f07923e5/pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23", size = 11498828 }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, +] + +[[package]] +name = "partd" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "locket" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, +] + +[[package]] +name = "patsy" +version = "0.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/18/12e76e52d589c4a812a2f1fb2406b486c226b7ac263ac8ef4b5f4bb04058/patsy-0.5.6.tar.gz", hash = "sha256:95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb", size = 398011 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/f3/1d311a09c34f14f5973bb0bb0dc3a6e007e1eda90b5492d082689936ca51/patsy-0.5.6-py2.py3-none-any.whl", hash = "sha256:19056886fd8fa71863fa32f0eb090267f21fb74be00f19f5c70b2e9d76c883c6", size = 233945 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271 }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658 }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075 }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808 }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290 }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163 }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100 }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880 }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218 }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487 }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265 }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655 }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304 }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804 }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126 }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541 }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616 }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213 }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498 }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350 }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980 }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799 }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973 }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054 }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484 }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375 }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773 }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690 }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951 }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427 }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685 }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883 }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837 }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562 }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761 }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767 }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989 }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255 }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603 }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972 }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889 }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160 }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020 }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539 }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125 }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373 }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/75/a0/d7cab8409cdc7d39b037c85ac46d92434fb6595432e069251b38e5c8dd0e/platformdirs-4.3.2.tar.gz", hash = "sha256:9e5e27a08aa095dd127b9f2e764d74254f482fef22b0970773bfba79d091ab8c", size = 21276 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/8b/d497999c4017b80678017ddce745cf675489c110681ad3c84a55eddfd3e7/platformdirs-4.3.2-py3-none-any.whl", hash = "sha256:eb1c8582560b34ed4ba105009a4badf7f6f85768b30126f351328507b2beb617", size = 18417 }, +] + +[[package]] +name = "plottable" +version = "0.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/3e/15137d0dde8eb6721d2a42b8d45359f37c2fc76dd688903d04c6bdbf43c7/plottable-0.1.5.tar.gz", hash = "sha256:235d762a31c82129dc5bf74205c103a14b1e4393d0f921cc0231be5de884041d", size = 21616 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/cf/23ea4b6f9460312604ed67b74e7db3e702fcaefc04743224ef1cdda663f4/plottable-0.1.5-py3-none-any.whl", hash = "sha256:5c5d1128d90065fc940e5c8445b2603d253909745bb0cee0c9828651b812441c", size = 24734 }, +] + +[[package]] +name = "pooch" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "platformdirs" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574 }, +] + +[[package]] +name = "postgrest" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecation" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "strenum" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/b6/b5b43e3243a1c64e1c68cff20de6694164259aa0e5e657d9ea8b587ff73f/postgrest-0.13.2.tar.gz", hash = "sha256:aaaec0fd7e4745dc02c77e1b310689fcdfb669e43b4cb36d462221dc1d19a1bf", size = 13911 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/b9/ec3686d4acb6cb2c819790d28a65570586fbc380d799f3f9d4d7d727b5c7/postgrest-0.13.2-py3-none-any.whl", hash = "sha256:a1a120ca982617d90c8906b85e2731fac4a3a3a5c7a3ca1095fe1cebd0bc02be", size = 19677 }, +] + +[[package]] +name = "powerlaw" +version = "1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "mpmath" }, + { name = "numpy" }, + { name = "scipy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/26/e0daa306f83d705bc1ed4d6759b7fc945cc787530c230ee1fe299cc28093/powerlaw-1.5-py3-none-any.whl", hash = "sha256:633a669573d9fd663d2f452f121117f2d6b2f2c502eca532f9355f733abfec96", size = 24982 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.47" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/6d/0279b119dafc74c1220420028d490c4399b790fc1256998666e3a341879f/prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360", size = 425859 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/23/22750c4b768f09386d1c3cc4337953e8936f48a888fa6dddfb669b2c9088/prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10", size = 386411 }, +] + +[[package]] +name = "pronto" +version = "2.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "chardet" }, + { name = "fastobo" }, + { name = "networkx" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/b8/568e31c1185cc873e8a1045c821d5c5f0c265def7ea311b9cfb0bba6f232/pronto-2.5.5.tar.gz", hash = "sha256:8f9a0917156248b2cce05d238c5d76a7b49ee07619f2bce3c73796bff82d5b4f", size = 60441 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/0d/ce1e0b2a7308e8de5129529eb515148de14bd8d2243b9683f18bd9ebe189/pronto-2.5.5-py2.py3-none-any.whl", hash = "sha256:92d1206365c81abe733a44be3a70b0b54081dfd21a1f4a826d7a2c1e6d18d256", size = 61547 }, +] + +[[package]] +name = "protobuf" +version = "5.28.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d7/331ee1f3b798c34d2257c79d5426ecbe95d46d2b40ba808a29da6947f6d8/protobuf-5.28.0.tar.gz", hash = "sha256:dde74af0fa774fa98892209992295adbfb91da3fa98c8f67a88afe8f5a349add", size = 422388 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/34/fc43138c93316839080324cb066f35224b75dae56b9f0fdd9d47c988ee9a/protobuf-5.28.0-cp310-abi3-win32.whl", hash = "sha256:66c3edeedb774a3508ae70d87b3a19786445fe9a068dd3585e0cefa8a77b83d0", size = 419672 }, + { url = "https://files.pythonhosted.org/packages/de/f7/e7e03be7e7307123f6467080f283e484de7e892db54dd9a46f057d08c9ee/protobuf-5.28.0-cp310-abi3-win_amd64.whl", hash = "sha256:6d7cc9e60f976cf3e873acb9a40fed04afb5d224608ed5c1a105db4a3f09c5b6", size = 431486 }, + { url = "https://files.pythonhosted.org/packages/ce/ec/34f67d6a3398aa360524d90f75a8c648c99c807b2f1001f5ab16355c1d12/protobuf-5.28.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:532627e8fdd825cf8767a2d2b94d77e874d5ddb0adefb04b237f7cc296748681", size = 414744 }, + { url = "https://files.pythonhosted.org/packages/fe/79/636415c84eed9835fed83183db73fd6ea7ba76a85cae321ff2eaad722e85/protobuf-5.28.0-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:018db9056b9d75eb93d12a9d35120f97a84d9a919bcab11ed56ad2d399d6e8dd", size = 316527 }, + { url = "https://files.pythonhosted.org/packages/19/15/da43113361db20f2d521bc38d92549edbe06856aeec085c420b2b8af5751/protobuf-5.28.0-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:6206afcb2d90181ae8722798dcb56dc76675ab67458ac24c0dd7d75d632ac9bd", size = 316615 }, + { url = "https://files.pythonhosted.org/packages/e3/b2/4df9958122a0377e571972c71692420bafd623d1df3ce506d88c2aba7e12/protobuf-5.28.0-py3-none-any.whl", hash = "sha256:510ed78cd0980f6d3218099e874714cdf0d8a95582e7b059b06cabad855ed0a0", size = 169574 }, +] + +[[package]] +name = "psutil" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/66/78c9c3020f573c58101dc43a44f6855d01bbbd747e24da2f0c4491200ea3/psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35", size = 249766 }, + { url = "https://files.pythonhosted.org/packages/e1/3f/2403aa9558bea4d3854b0e5e567bc3dd8e9fbc1fc4453c0aa9aafeb75467/psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1", size = 253024 }, + { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961 }, + { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478 }, + { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455 }, + { url = "https://files.pythonhosted.org/packages/cd/5f/60038e277ff0a9cc8f0c9ea3d0c5eb6ee1d2470ea3f9389d776432888e47/psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132", size = 292046 }, + { url = "https://files.pythonhosted.org/packages/8b/20/2ff69ad9c35c3df1858ac4e094f20bd2374d33c8643cf41da8fd7cdcb78b/psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d", size = 253560 }, + { url = "https://files.pythonhosted.org/packages/73/44/561092313ae925f3acfaace6f9ddc4f6a9c748704317bad9c8c8f8a36a79/psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3", size = 257399 }, + { url = "https://files.pythonhosted.org/packages/7c/06/63872a64c312a24fb9b4af123ee7007a306617da63ff13bcc1432386ead7/psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0", size = 251988 }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/07/e720e53bfab016ebcc34241695ccc06a9e3d91ba19b40ca81317afbdc440/psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c", size = 384973 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7c/6aaf8c3cb05d86d2c3f407b95bac0c71a43f2718e38c1091972aacb5e1b2/psycopg2_binary-2.9.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c2470da5418b76232f02a2fcd2229537bb2d5a7096674ce61859c3229f2eb202", size = 2822503 }, + { url = "https://files.pythonhosted.org/packages/72/3d/acab427845198794aafd963dd073ee35810e2c52606e8a28c12db39821fb/psycopg2_binary-2.9.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6af2a6d4b7ee9615cbb162b0738f6e1fd1f5c3eda7e5da17861eacf4c717ea7", size = 2552645 }, + { url = "https://files.pythonhosted.org/packages/ed/be/6c787962d706e55a528ef1693dd7251de657ae60e4d9d767ed61e8e2975c/psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75723c3c0fbbf34350b46a3199eb50638ab22a0228f93fb472ef4d9becc2382b", size = 2850980 }, + { url = "https://files.pythonhosted.org/packages/83/50/a054076c6358753661cd1da59f4dabc03e83d51690371f3fd1edb9e2cf72/psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83791a65b51ad6ee6cf0845634859d69a038ea9b03d7b26e703f94c7e93dbcf9", size = 3080543 }, + { url = "https://files.pythonhosted.org/packages/9c/02/826dc5cdfc9515423ec912ba00cc2e4eb09f69e0339b177c9c742f2a09a2/psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ef4854e82c09e84cc63084a9e4ccd6d9b154f1dbdd283efb92ecd0b5e2b8c84", size = 3264316 }, + { url = "https://files.pythonhosted.org/packages/bc/0d/486e3fa27f39a00168abfcf14a3d8444f437f4b755cc34316da1124f293d/psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1184ab8f113e8d660ce49a56390ca181f2981066acc27cf637d5c1e10ce46e", size = 3019508 }, + { url = "https://files.pythonhosted.org/packages/41/af/bce37630c525d2b9cf93f930110fc98616d6aca308d59b833b83b3a38176/psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d2997c458c690ec2bc6b0b7ecbafd02b029b7b4283078d3b32a852a7ce3ddd98", size = 2355821 }, + { url = "https://files.pythonhosted.org/packages/3b/76/e46dae1b2273814ef80231f86d59cadf94ec36fd757045ed713c5b75cde7/psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b58b4710c7f4161b5e9dcbe73bb7c62d65670a87df7bcce9e1faaad43e715245", size = 2534855 }, + { url = "https://files.pythonhosted.org/packages/0e/6d/e97245eabff29d7c2de5fc1fc17cf7ef427beee93d20a5ae114c6e6718bd/psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0c009475ee389757e6e34611d75f6e4f05f0cf5ebb76c6037508318e1a1e0d7e", size = 2486614 }, + { url = "https://files.pythonhosted.org/packages/70/a7/2cd2c9d5e23b556c11e3b7da41895808d9b056f8f34f50de4375a35b4951/psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8dbf6d1bc73f1d04ec1734bae3b4fb0ee3cb2a493d35ede9badbeb901fb40f6f", size = 2454928 }, + { url = "https://files.pythonhosted.org/packages/63/41/815d19767e2adb1a585213b801c954f46102f305c352c4a4f96287342d44/psycopg2_binary-2.9.9-cp310-cp310-win32.whl", hash = "sha256:3f78fd71c4f43a13d342be74ebbc0666fe1f555b8837eb113cb7416856c79682", size = 1025249 }, + { url = "https://files.pythonhosted.org/packages/5e/4c/9233e0e206634a5387f3ab40f334a5325fb8bef2ca4e12ee7dbdeaf96afc/psycopg2_binary-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:876801744b0dee379e4e3c38b76fc89f88834bb15bf92ee07d94acd06ec890a0", size = 1163645 }, + { url = "https://files.pythonhosted.org/packages/a5/ac/702d300f3df169b9d0cbef0340d9f34a78bc18dc2dbafbcb39ff0f165cf8/psycopg2_binary-2.9.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee825e70b1a209475622f7f7b776785bd68f34af6e7a46e2e42f27b659b5bc26", size = 2822581 }, + { url = "https://files.pythonhosted.org/packages/7a/1f/a6cf0cdf944253f7c45d90fbc876cc8bed5cc9942349306245715c0d88d6/psycopg2_binary-2.9.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1ea665f8ce695bcc37a90ee52de7a7980be5161375d42a0b6c6abedbf0d81f0f", size = 2552633 }, + { url = "https://files.pythonhosted.org/packages/81/0b/3adf561107c865928455891156d1dde5325253f7f4316fe56cd2c3f73570/psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:143072318f793f53819048fdfe30c321890af0c3ec7cb1dfc9cc87aa88241de2", size = 2851075 }, + { url = "https://files.pythonhosted.org/packages/f7/98/c2fedcbf0a9607519a010dcf88571138b2251062dbde3610cdba5ba1eee1/psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c332c8d69fb64979ebf76613c66b985414927a40f8defa16cf1bc028b7b0a7b0", size = 3080509 }, + { url = "https://files.pythonhosted.org/packages/c2/05/81e8bc7fca95574c9323e487d9ce1b58a4cfcc17f89b8fe843af46361211/psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7fc5a5acafb7d6ccca13bfa8c90f8c51f13d8fb87d95656d3950f0158d3ce53", size = 3264303 }, + { url = "https://files.pythonhosted.org/packages/ce/85/62825cabc6aad53104b7b6d12eb2ad74737d268630032d07b74d4444cb72/psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977646e05232579d2e7b9c59e21dbe5261f403a88417f6a6512e70d3f8a046be", size = 3019515 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/9ca2b8e01a0912c9a14234fd5df7a241a1e44778c5797bf4b8eaa8dc3d3a/psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b6356793b84728d9d50ead16ab43c187673831e9d4019013f1402c41b1db9b27", size = 2355892 }, + { url = "https://files.pythonhosted.org/packages/73/17/ba28bb0022db5e2015a82d2df1c4b0d419c37fa07a588b3aff3adc4939f6/psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc7bb56d04601d443f24094e9e31ae6deec9ccb23581f75343feebaf30423359", size = 2534903 }, + { url = "https://files.pythonhosted.org/packages/3b/92/b463556409cdc12791cd8b1dae0072bf8efe817ef68b7ea3d9cf7d0e5656/psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:77853062a2c45be16fd6b8d6de2a99278ee1d985a7bd8b103e97e41c034006d2", size = 2486597 }, + { url = "https://files.pythonhosted.org/packages/92/57/96576e07132d7f7a1ac1df939575e6fdd8951aea337ee152b586bb51a971/psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:78151aa3ec21dccd5cdef6c74c3e73386dcdfaf19bced944169697d7ac7482fc", size = 2454908 }, + { url = "https://files.pythonhosted.org/packages/7c/ae/cedd56e1f4a2b0e37213283caf3733a875c4c76f3372241e19c0d2a87355/psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d", size = 1024240 }, + { url = "https://files.pythonhosted.org/packages/25/1f/7ae31759142999a8d06b3e250c1346c4abcdcada8fa884376775dc1de686/psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417", size = 1163655 }, + { url = "https://files.pythonhosted.org/packages/a7/d0/5f2db14e7b53552276ab613399a83f83f85b173a862d3f20580bc7231139/psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf", size = 2823784 }, + { url = "https://files.pythonhosted.org/packages/18/ca/da384fd47233e300e3e485c90e7aab5d7def896d1281239f75901faf87d4/psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d", size = 2553308 }, + { url = "https://files.pythonhosted.org/packages/50/66/fa53d2d3d92f6e1ef469d92afc6a4fe3f6e8a9a04b687aa28fb1f1d954ee/psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212", size = 2851283 }, + { url = "https://files.pythonhosted.org/packages/04/37/2429360ac5547378202db14eec0dde76edbe1f6627df5a43c7e164922859/psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493", size = 3081839 }, + { url = "https://files.pythonhosted.org/packages/62/2a/c0530b59d7e0d09824bc2102ecdcec0456b8ca4d47c0caa82e86fce3ed4c/psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996", size = 3264488 }, + { url = "https://files.pythonhosted.org/packages/19/57/9f172b900795ea37246c78b5f52e00f4779984370855b3e161600156906d/psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e6f98446430fdf41bd36d4faa6cb409f5140c1c2cf58ce0bbdaf16af7d3f119", size = 3020700 }, + { url = "https://files.pythonhosted.org/packages/94/68/1176fc14ea76861b7b8360be5176e87fb20d5091b137c76570eb4e237324/psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c77e3d1862452565875eb31bdb45ac62502feabbd53429fdc39a1cc341d681ba", size = 2355968 }, + { url = "https://files.pythonhosted.org/packages/70/bb/aec2646a705a09079d008ce88073401cd61fc9b04f92af3eb282caa3a2ec/psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07", size = 2536101 }, + { url = "https://files.pythonhosted.org/packages/14/33/12818c157e333cb9d9e6753d1b2463b6f60dbc1fade115f8e4dc5c52cac4/psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb", size = 2487064 }, + { url = "https://files.pythonhosted.org/packages/56/a2/7851c68fe8768f3c9c246198b6356ee3e4a8a7f6820cc798443faada3400/psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe", size = 2456257 }, + { url = "https://files.pythonhosted.org/packages/6f/ee/3ba07c6dc7c3294e717e94720da1597aedc82a10b1b180203ce183d4631a/psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93", size = 1024709 }, + { url = "https://files.pythonhosted.org/packages/7b/08/9c66c269b0d417a0af9fb969535f0371b8c538633535a7a6a5ca3f9231e2/psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab", size = 1163864 }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, +] + +[[package]] +name = "pyarrow" +version = "12.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/68/d3410e975bebbf5be00c1238d0418345d8ec5d88b7a6c102211a1c967edd/pyarrow-12.0.1.tar.gz", hash = "sha256:cce317fc96e5b71107bf1f9f184d5e54e2bd14bbf3f9a3d62819961f0af86fec", size = 1015259 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/2f/a42dbdf34528c70bbd5736a968631e3c8c2f911aea89f9c49f6f834e83b5/pyarrow-12.0.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:6d288029a94a9bb5407ceebdd7110ba398a00412c5b0155ee9813a40d246c5df", size = 24731979 }, + { url = "https://files.pythonhosted.org/packages/64/05/76bcbea6903957c6467f99fcc6aaf07ac5ea675c02e75881719949801335/pyarrow-12.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345e1828efdbd9aa4d4de7d5676778aba384a2c3add896d995b23d368e60e5af", size = 22646475 }, + { url = "https://files.pythonhosted.org/packages/60/94/e56483c49ae2acee47af880ab4e0af7749811a0142a584d45543957ee1b3/pyarrow-12.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d6009fdf8986332b2169314da482baed47ac053311c8934ac6651e614deacd6", size = 36386496 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/886acfcce7cb2f7552f538d2b6deafd4841f3de42902943db15f1b42313d/pyarrow-12.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d3c4cbbf81e6dd23fe921bc91dc4619ea3b79bc58ef10bce0f49bdafb103daf", size = 38938438 }, + { url = "https://files.pythonhosted.org/packages/13/68/1bc83fe2de87e2b785c503ef28293b56a4405d632f2b443cf00265b12d90/pyarrow-12.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdacf515ec276709ac8042c7d9bd5be83b4f5f39c6c037a17a60d7ebfd92c890", size = 21465027 }, + { url = "https://files.pythonhosted.org/packages/90/1e/fb0177d214a77198083156d750358c0a3ff696c96b329f443ad5513d25b6/pyarrow-12.0.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:749be7fd2ff260683f9cc739cb862fb11be376de965a2a8ccbf2693b098db6c7", size = 24687651 }, + { url = "https://files.pythonhosted.org/packages/a7/ca/a34c5dd3393644865b82ac5df66e52311fd4ae2fc073f62b68b8538a0da4/pyarrow-12.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6895b5fb74289d055c43db3af0de6e16b07586c45763cb5e558d38b86a91e3a7", size = 22601949 }, + { url = "https://files.pythonhosted.org/packages/6a/ba/571de5dc75831b9a0f9e8d23823c1286b5c940588d4d8c87aab535779d53/pyarrow-12.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1887bdae17ec3b4c046fcf19951e71b6a619f39fa674f9881216173566c8f718", size = 36384544 }, + { url = "https://files.pythonhosted.org/packages/c5/52/19832487e6834164c523386a1b047dd5539fcbb876196b6f5619dfdab465/pyarrow-12.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c9cb8eeabbadf5fcfc3d1ddea616c7ce893db2ce4dcef0ac13b099ad7ca082", size = 38930218 }, + { url = "https://files.pythonhosted.org/packages/53/98/823deb5d3ff75386d5ab19b90c25b4a3aca01299bb53f217f2cfa954329c/pyarrow-12.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:ce4aebdf412bd0eeb800d8e47db854f9f9f7e2f5a0220440acf219ddfddd4f63", size = 21453804 }, +] + +[[package]] +name = "pyarrow-hotfix" +version = "0.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/0a/71da7b0db0c7078d4cf34ecf0c70ded5ed29decc06612097474e0114f4cc/pyarrow_hotfix-0.6.tar.gz", hash = "sha256:79d3e030f7ff890d408a100ac16d6f00b14d44a502d7897cd9fc3e3a534e9945", size = 9754 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/f4/9ec2222f5f5f8ea04f66f184caafd991a39c8782e31f5b0266f101cb68ca/pyarrow_hotfix-0.6-py3-none-any.whl", hash = "sha256:dcc9ae2d220dff0083be6a9aa8e0cdee5182ad358d4931fce825c545e5c89178", size = 7888 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/15/3d989541b9c8128b96d532cfd2dd10131ddcc75a807330c00feb3d42a5bd/pydantic-2.9.1.tar.gz", hash = "sha256:1363c7d975c7036df0db2b4a61f2e062fbc0aa5ab5f2772e0ffc7191a4f4bce2", size = 768511 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/28/fff23284071bc1ba419635c7e86561c8b9b8cf62a5bcb459b92d7625fd38/pydantic-2.9.1-py3-none-any.whl", hash = "sha256:7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612", size = 434363 }, +] + +[[package]] +name = "pydantic-core" +version = "2.23.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/cc/07bec3fb337ff80eacd6028745bd858b9642f61ee58cfdbfb64451c1def0/pydantic_core-2.23.3.tar.gz", hash = "sha256:3cb0f65d8b4121c1b015c60104a685feb929a29d7cf204387c7f2688c7974690", size = 402277 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/fb/fc7077473d843fd70bd1e09177c3225be95621881765d6f7d123036fb9c7/pydantic_core-2.23.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7f10a5d1b9281392f1bf507d16ac720e78285dfd635b05737c3911637601bae6", size = 1845897 }, + { url = "https://files.pythonhosted.org/packages/92/8c/c6f1a0f72328c5687acc0847baf806c4cb31c1a9321de70c3cbcbb37cece/pydantic_core-2.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c09a7885dd33ee8c65266e5aa7fb7e2f23d49d8043f089989726391dd7350c5", size = 1777037 }, + { url = "https://files.pythonhosted.org/packages/bd/fc/89e2a998218230ed8c38f0ba11d8f73947df90ac59a1e9f2fb4e1ba318a5/pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6470b5a1ec4d1c2e9afe928c6cb37eb33381cab99292a708b8cb9aa89e62429b", size = 1801481 }, + { url = "https://files.pythonhosted.org/packages/d7/f3/81a5f69ea1359633876ea2283728d0afe2ed62e028d91d747dcdfabc594e/pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9172d2088e27d9a185ea0a6c8cebe227a9139fd90295221d7d495944d2367700", size = 1807280 }, + { url = "https://files.pythonhosted.org/packages/7a/91/b20f5646d7ef7c2629744b49e6fb86f839aa676b1aa11fb3998371ac5860/pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86fc6c762ca7ac8fbbdff80d61b2c59fb6b7d144aa46e2d54d9e1b7b0e780e01", size = 2003100 }, + { url = "https://files.pythonhosted.org/packages/89/71/59172c61f2ecd4b33276774512ef31912944429fabaa0f4483151f788a35/pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0cb80fd5c2df4898693aa841425ea1727b1b6d2167448253077d2a49003e0ed", size = 2662832 }, + { url = "https://files.pythonhosted.org/packages/80/d1/c6f8e23987dc166976996a910876596635d71e529335b846880d856589fd/pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03667cec5daf43ac4995cefa8aaf58f99de036204a37b889c24a80927b629cec", size = 2057218 }, + { url = "https://files.pythonhosted.org/packages/ae/f3/f4381383b65cf16392aead51643fd5fb3feeb69972226d276ce5c6cfb948/pydantic_core-2.23.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:047531242f8e9c2db733599f1c612925de095e93c9cc0e599e96cf536aaf56ba", size = 1923455 }, + { url = "https://files.pythonhosted.org/packages/a1/8d/d845077d39e55763bdb99d64ef86f8961827f8896b6e58ce08ce6b255bde/pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5499798317fff7f25dbef9347f4451b91ac2a4330c6669821c8202fd354c7bee", size = 1966890 }, + { url = "https://files.pythonhosted.org/packages/53/f8/56355d7b1cf84df63f93b1a455ebb53fd9588edbb63a44fd4d801444a060/pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bbb5e45eab7624440516ee3722a3044b83fff4c0372efe183fd6ba678ff681fe", size = 2112163 }, + { url = "https://files.pythonhosted.org/packages/06/32/a0a7a3a318b4ae98a0e6b9e18db31fadbd3cfc46b31191e4ed4ca658e2d4/pydantic_core-2.23.3-cp310-none-win32.whl", hash = "sha256:8b5b3ed73abb147704a6e9f556d8c5cb078f8c095be4588e669d315e0d11893b", size = 1717086 }, + { url = "https://files.pythonhosted.org/packages/e3/31/38aebe234508fc30c80b4825661d3c1ef0d51b1c40a12e50855b108acd35/pydantic_core-2.23.3-cp310-none-win_amd64.whl", hash = "sha256:2b603cde285322758a0279995b5796d64b63060bfbe214b50a3ca23b5cee3e83", size = 1918933 }, + { url = "https://files.pythonhosted.org/packages/4a/60/ef8eaad365c1d94962d158633f66313e051f7b90cead647e65a96993da22/pydantic_core-2.23.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c889fd87e1f1bbeb877c2ee56b63bb297de4636661cc9bbfcf4b34e5e925bc27", size = 1843251 }, + { url = "https://files.pythonhosted.org/packages/57/f4/20aa352e03379a3b5d6c2fb951a979f70718138ea747e3f756d63dda69da/pydantic_core-2.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea85bda3189fb27503af4c45273735bcde3dd31c1ab17d11f37b04877859ef45", size = 1776367 }, + { url = "https://files.pythonhosted.org/packages/f1/b9/e5482ac4ea2d128925759d905fb05a08ca98e67ed1d8ab7401861997c6c8/pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f7f72f721223f33d3dc98a791666ebc6a91fa023ce63733709f4894a7dc611", size = 1800135 }, + { url = "https://files.pythonhosted.org/packages/78/9f/387353f6b6b2ed023f973cffa4e2384bb2e52d15acf5680bc70c50f6c48f/pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b2b55b0448e9da68f56b696f313949cda1039e8ec7b5d294285335b53104b61", size = 1805896 }, + { url = "https://files.pythonhosted.org/packages/4f/70/9a153f19394e2ef749f586273ebcdb3de97e2fa97e175b957a8e5a2a77f9/pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c24574c7e92e2c56379706b9a3f07c1e0c7f2f87a41b6ee86653100c4ce343e5", size = 2001492 }, + { url = "https://files.pythonhosted.org/packages/a5/1c/79d976846fcdcae0c657922d0f476ca287fa694e69ac1fc9d397b831e1cc/pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b05e6ccbee333a8f4b8f4d7c244fdb7a979e90977ad9c51ea31261e2085ce0", size = 2659827 }, + { url = "https://files.pythonhosted.org/packages/fd/89/cdd76ae363cabae23a4b70df50d603c81c517415ff9d5d65e72e35251cf6/pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c409ce1c219c091e47cb03feb3c4ed8c2b8e004efc940da0166aaee8f9d6c8", size = 2055160 }, + { url = "https://files.pythonhosted.org/packages/1a/82/7d62c3dd4e2e101a81ac3fa138d986bfbad9727a6275fc2b4a5efb98bdbd/pydantic_core-2.23.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d965e8b325f443ed3196db890d85dfebbb09f7384486a77461347f4adb1fa7f8", size = 1922282 }, + { url = "https://files.pythonhosted.org/packages/85/e6/ef09f395c974d08674464dd3d49066612fe7cc0466ef8ce9427cadf13e5b/pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f56af3a420fb1ffaf43ece3ea09c2d27c444e7c40dcb7c6e7cf57aae764f2b48", size = 1965827 }, + { url = "https://files.pythonhosted.org/packages/a4/5e/e589474af850c77c3180b101b54bc98bf812ad09728ba2cff4989acc9734/pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b01a078dd4f9a52494370af21aa52964e0a96d4862ac64ff7cea06e0f12d2c5", size = 2110810 }, + { url = "https://files.pythonhosted.org/packages/e0/ff/626007d5b7ac811f9bcac6d8af3a574ccee4505c1f015d25806101842f0c/pydantic_core-2.23.3-cp311-none-win32.whl", hash = "sha256:560e32f0df04ac69b3dd818f71339983f6d1f70eb99d4d1f8e9705fb6c34a5c1", size = 1715479 }, + { url = "https://files.pythonhosted.org/packages/4f/ff/6dc33f3b71e34ef633e35d6476d245bf303fc3eaf18a00f39bb54f78faf3/pydantic_core-2.23.3-cp311-none-win_amd64.whl", hash = "sha256:c744fa100fdea0d000d8bcddee95213d2de2e95b9c12be083370b2072333a0fa", size = 1918281 }, + { url = "https://files.pythonhosted.org/packages/8f/35/6d81bc4aa7d06e716f39e2bffb0eabcbcebaf7bab94c2f8278e277ded0ea/pydantic_core-2.23.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e0ec50663feedf64d21bad0809f5857bac1ce91deded203efc4a84b31b2e4305", size = 1845250 }, + { url = "https://files.pythonhosted.org/packages/18/42/0821cd46f76406e0fe57df7a89d6af8fddb22cce755bcc2db077773c7d1a/pydantic_core-2.23.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db6e6afcb95edbe6b357786684b71008499836e91f2a4a1e55b840955b341dbb", size = 1769993 }, + { url = "https://files.pythonhosted.org/packages/e5/55/b969088e48bd8ea588548a7194d425de74370b17b385cee4d28f5a79013d/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ccd69edcf49f0875d86942f4418a4e83eb3047f20eb897bffa62a5d419c8fa", size = 1791250 }, + { url = "https://files.pythonhosted.org/packages/43/c1/1d460d09c012ac76b68b2a1fd426ad624724f93b40e24a9a993763f12c61/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a678c1ac5c5ec5685af0133262103defb427114e62eafeda12f1357a12140162", size = 1802530 }, + { url = "https://files.pythonhosted.org/packages/70/8e/fd3c9eda00fbdadca726f17a0f863ecd871a65b3a381b77277ae386d3bcd/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01491d8b4d8db9f3391d93b0df60701e644ff0894352947f31fff3e52bd5c801", size = 1997848 }, + { url = "https://files.pythonhosted.org/packages/f0/67/13fa22d7b09395e83721edc31bae2bd5c5e2c36a09d470c18f5d1de46958/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcf31facf2796a2d3b7fe338fe8640aa0166e4e55b4cb108dbfd1058049bf4cb", size = 2662790 }, + { url = "https://files.pythonhosted.org/packages/fa/1b/1d689c53d15ab67cb0df1c3a2b1df873b50409581e93e4848289dce57e2f/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326", size = 2074114 }, + { url = "https://files.pythonhosted.org/packages/3d/d9/b565048609db77760b9a0900f6e0a3b2f33be47cd3c4a433f49653a0d2b5/pydantic_core-2.23.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc1636770a809dee2bd44dd74b89cc80eb41172bcad8af75dd0bc182c2666d4c", size = 1918153 }, + { url = "https://files.pythonhosted.org/packages/41/94/8ee55c51333ed8df3a6f1e73c6530c724a9a37d326e114c9e3b24faacff9/pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:67a5def279309f2e23014b608c4150b0c2d323bd7bccd27ff07b001c12c2415c", size = 1969019 }, + { url = "https://files.pythonhosted.org/packages/f7/49/0233bae5778a5526cef000447a93e8d462f4f13e2214c13c5b23d379cb25/pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:748bdf985014c6dd3e1e4cc3db90f1c3ecc7246ff5a3cd4ddab20c768b2f1dab", size = 2121325 }, + { url = "https://files.pythonhosted.org/packages/42/a1/2f262db2fd6f9c2c9904075a067b1764cc6f71c014be5c6c91d9de52c434/pydantic_core-2.23.3-cp312-none-win32.whl", hash = "sha256:255ec6dcb899c115f1e2a64bc9ebc24cc0e3ab097775755244f77360d1f3c06c", size = 1725252 }, + { url = "https://files.pythonhosted.org/packages/9a/00/a57937080b49500df790c4853d3e7bc605bd0784e4fcaf1a159456f37ef1/pydantic_core-2.23.3-cp312-none-win_amd64.whl", hash = "sha256:40b8441be16c1e940abebed83cd006ddb9e3737a279e339dbd6d31578b802f7b", size = 1920660 }, + { url = "https://files.pythonhosted.org/packages/e1/3c/32958c0a5d1935591b58337037a1695782e61261582d93d5a7f55441f879/pydantic_core-2.23.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6daaf5b1ba1369a22c8b050b643250e3e5efc6a78366d323294aee54953a4d5f", size = 1845068 }, + { url = "https://files.pythonhosted.org/packages/92/a1/7e628e19b78e6ffdb2c92cccbb7eca84bfd3276cee4cafcae8833452f458/pydantic_core-2.23.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d015e63b985a78a3d4ccffd3bdf22b7c20b3bbd4b8227809b3e8e75bc37f9cb2", size = 1770095 }, + { url = "https://files.pythonhosted.org/packages/bb/17/d15fd8ce143cd1abb27be924eeff3c5c0fe3b0582f703c5a5273c11e67ce/pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3fc572d9b5b5cfe13f8e8a6e26271d5d13f80173724b738557a8c7f3a8a3791", size = 1790964 }, + { url = "https://files.pythonhosted.org/packages/24/cc/37feff1792f09dc33207fbad3897373229279d1973c211f9562abfdf137d/pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f6bd91345b5163ee7448bee201ed7dd601ca24f43f439109b0212e296eb5b423", size = 1802384 }, + { url = "https://files.pythonhosted.org/packages/44/d8/ca9acd7f5f044d9ff6e43d7f35aab4b1d5982b4773761eabe3317fc68e30/pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc379c73fd66606628b866f661e8785088afe2adaba78e6bbe80796baf708a63", size = 1997824 }, + { url = "https://files.pythonhosted.org/packages/35/0f/146269dba21b10d5bf86f9a7a7bbeab4ce1db06f466a1ab5ec3dec68b409/pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbdce4b47592f9e296e19ac31667daed8753c8367ebb34b9a9bd89dacaa299c9", size = 2662907 }, + { url = "https://files.pythonhosted.org/packages/5a/7d/9573f006e39cd1a7b7716d1a264e3f4f353cf0a6042c04c01c6e31666f62/pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3cf31edf405a161a0adad83246568647c54404739b614b1ff43dad2b02e6d5", size = 2073953 }, + { url = "https://files.pythonhosted.org/packages/7e/a5/25200aaafd1e97e2ec3c1eb4b357669dd93911f2eba252bc60b6ba884fff/pydantic_core-2.23.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e22b477bf90db71c156f89a55bfe4d25177b81fce4aa09294d9e805eec13855", size = 1917822 }, + { url = "https://files.pythonhosted.org/packages/3e/b4/ac069c58e3cee70c69f03693222cc173fdf740d20d53167bceafc1efc7ca/pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0a0137ddf462575d9bce863c4c95bac3493ba8e22f8c28ca94634b4a1d3e2bb4", size = 1968838 }, + { url = "https://files.pythonhosted.org/packages/d1/3d/9f96bbd6212b4b0a6dc6d037e446208d3420baba2b2b81e544094b18a859/pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:203171e48946c3164fe7691fc349c79241ff8f28306abd4cad5f4f75ed80bc8d", size = 2121468 }, + { url = "https://files.pythonhosted.org/packages/ac/50/7399d536d6600d69059a87fff89861332c97a7b3471327a3663c7576e707/pydantic_core-2.23.3-cp313-none-win32.whl", hash = "sha256:76bdab0de4acb3f119c2a4bff740e0c7dc2e6de7692774620f7452ce11ca76c8", size = 1725373 }, + { url = "https://files.pythonhosted.org/packages/24/ba/9ac8744ab636c1161c598cc5e8261379b6b0f1d63c31242bf9d5ed41ed32/pydantic_core-2.23.3-cp313-none-win_amd64.whl", hash = "sha256:37ba321ac2a46100c578a92e9a6aa33afe9ec99ffa084424291d84e456f490c1", size = 1920594 }, + { url = "https://files.pythonhosted.org/packages/c0/2d/1f4ec8614225b516366f6c4c49d55ec42ebb93004c0bc9a3e0d21d0ed3c0/pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f399e8657c67313476a121a6944311fab377085ca7f490648c9af97fc732732d", size = 1834597 }, + { url = "https://files.pythonhosted.org/packages/4d/f0/665d4cd60147992b1da0f5a9d1fd7f309c7f12999e3a494c4898165c64ab/pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b5547d098c76e1694ba85f05b595720d7c60d342f24d5aad32c3049131fa5c4", size = 1721339 }, + { url = "https://files.pythonhosted.org/packages/a7/02/7b85ae2c3452e6b9f43b89482dc2a2ba771c31d86d93c2a5a250870b243b/pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dda0290a6f608504882d9f7650975b4651ff91c85673341789a476b1159f211", size = 1794316 }, + { url = "https://files.pythonhosted.org/packages/61/09/f0fde8a9d66f37f3e08e03965a9833d71c4b5fb0287d8f625f88d79dfcd6/pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b6e5da855e9c55a0c67f4db8a492bf13d8d3316a59999cfbaf98cc6e401961", size = 1944713 }, + { url = "https://files.pythonhosted.org/packages/61/2b/0bfe144cac991700dbeaff620fed38b0565352acb342f90374ebf1350084/pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:09e926397f392059ce0afdcac920df29d9c833256354d0c55f1584b0b70cf07e", size = 1916385 }, + { url = "https://files.pythonhosted.org/packages/02/4f/7d1b8a28e4a1dd96cdde9e220627abd4d3a7860eb79cc682ccf828cf93e4/pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:87cfa0ed6b8c5bd6ae8b66de941cece179281239d482f363814d2b986b79cedc", size = 1959666 }, + { url = "https://files.pythonhosted.org/packages/5d/9a/b2c520ef627001c68cf23990b2de42ba66eae58a3f56f13375ae9aecb88d/pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e61328920154b6a44d98cabcb709f10e8b74276bc709c9a513a8c37a18786cc4", size = 2103742 }, + { url = "https://files.pythonhosted.org/packages/cd/43/b9a88a4e6454fcad63317e3dade687b68ae7d9f324c868411b1ea70218b3/pydantic_core-2.23.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce3317d155628301d649fe5e16a99528d5680af4ec7aa70b90b8dacd2d725c9b", size = 1916507 }, +] + +[[package]] +name = "pydantic-settings" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/14/7bfb313ccee79f97dc235721b035174af94ef4472cfe455c259cd2971f2f/pydantic_settings-2.4.0.tar.gz", hash = "sha256:ed81c3a0f46392b4d7c0a565c05884e6e54b3456e6f0fe4d8814981172dc9a88", size = 63033 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/46/7f90f36c1bdcf24962d2b7b0e11aba3bbd65ea7904cb2553072882a4e6b7/pydantic_settings-2.4.0-py3-none-any.whl", hash = "sha256:bb6849dc067f1687574c12a639e231f3a6feeed0a12d710c1382045c5db1c315", size = 23996 }, +] + +[[package]] +name = "pydot" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/aa/4cf0b17a070fb57798e8e0f5b1665abf5b2f19ee8ea47957aec2c37b9ced/pydot-3.0.1.tar.gz", hash = "sha256:e18cf7f287c497d77b536a3d20a46284568fea390776dface6eabbdf1b1b5efc", size = 155792 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/fd/df3932340498a8f38c6107c95b0eb1d9ac406c5ea1307c8f43408977378e/pydot-3.0.1-py3-none-any.whl", hash = "sha256:43f1e878dc1ff7c1c2e3470a6999d4e9e97771c5c862440c2f0af0ba844c231f", size = 22565 }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, +] + +[[package]] +name = "pynndescent" +version = "0.5.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "llvmlite" }, + { name = "numba" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/58/560a4db5eb3794d922fe55804b10326534ded3d971e1933c1eef91193f5e/pynndescent-0.5.13.tar.gz", hash = "sha256:d74254c0ee0a1eeec84597d5fe89fedcf778593eeabe32c2f97412934a9800fb", size = 2975955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/53/d23a97e0a2c690d40b165d1062e2c4ccc796be458a1ce59f6ba030434663/pynndescent-0.5.13-py3-none-any.whl", hash = "sha256:69aabb8f394bc631b6ac475a1c7f3994c54adf3f51cd63b2730fefba5771b949", size = 56850 }, +] + +[[package]] +name = "pyparsing" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/08/13f3bce01b2061f2bbd582c9df82723de943784cf719a35ac886c652043a/pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032", size = 900231 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/0c/0e3c05b1c87bb6a1c76d281b0f35e78d2d80ac91b5f8f524cebf77f51049/pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c", size = 104100 }, +] + +[[package]] +name = "pyscenic" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "arboreto" }, + { name = "attrs" }, + { name = "boltons" }, + { name = "cloudpickle" }, + { name = "ctxcore" }, + { name = "cytoolz" }, + { name = "dask" }, + { name = "distributed" }, + { name = "frozendict" }, + { name = "fsspec" }, + { name = "interlap" }, + { name = "llvmlite" }, + { name = "loompy" }, + { name = "multiprocessing-on-dill" }, + { name = "networkx" }, + { name = "numba" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "requests" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "setuptools" }, + { name = "tqdm" }, + { name = "umap-learn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/ea/109aa69d72b54ab78eb353ddc8b6ff7e78208b5d85b7d77f5d146b78681d/pyscenic-0.12.1.tar.gz", hash = "sha256:ae8fafa707d2578ffe08f9eed85f14a4cd9e1b53d57217420e2e956f0a8ddba2", size = 7028054 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/e3/6a0eaf46a897da829c896f0a034fce82133fce72f95d314bea81287c4279/pyscenic-0.12.1-py3-none-any.whl", hash = "sha256:a250d682e073e67dc80505843764d9cade68dada45a40a622e1aefbae78756e9", size = 7099773 }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }, +] + +[[package]] +name = "pytorch-lightning" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "torch" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/f0/3207bd5019c43899efbb5444da263577497a5c4dc82719633a3bf63d8f45/pytorch-lightning-2.4.0.tar.gz", hash = "sha256:6aa897fd9d6dfa7b7b49f37c2f04e13592861831d08deae584dfda423fdb71c8", size = 625320 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/d2/ecd65ff1e0b1ca79f9785dd65d5ced7ec2643a828068aaa24e47e4c84a14/pytorch_lightning-2.4.0-py3-none-any.whl", hash = "sha256:9ac7935229ac022ef06994c928217ed37f525ac6700f7d4fc57009624570e655", size = 815151 }, +] + +[[package]] +name = "pytz" +version = "2024.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/26/9f1f00a5d021fff16dee3de13d43e5e978f3d58928e129c3a62cf7eb9738/pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812", size = 316214 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319", size = 505474 }, +] + +[[package]] +name = "pyvis" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipython" }, + { name = "jinja2" }, + { name = "jsonpickle" }, + { name = "networkx" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/4b/e37e4e5d5ee1179694917b445768bdbfb084f5a59ecd38089d3413d4c70f/pyvis-0.3.2-py3-none-any.whl", hash = "sha256:5720c4ca8161dc5d9ab352015723abb7a8bb8fb443edeb07f7a322db34a97555", size = 756038 }, +] + +[[package]] +name = "pywin32" +version = "306" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/dc/28c668097edfaf4eac4617ef7adf081b9cf50d254672fcf399a70f5efc41/pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d", size = 8506422 }, + { url = "https://files.pythonhosted.org/packages/d3/d6/891894edec688e72c2e308b3243fad98b4066e1839fd2fe78f04129a9d31/pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8", size = 9226392 }, + { url = "https://files.pythonhosted.org/packages/8b/1e/fc18ad83ca553e01b97aa8393ff10e33c1fb57801db05488b83282ee9913/pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407", size = 8507689 }, + { url = "https://files.pythonhosted.org/packages/7e/9e/ad6b1ae2a5ad1066dc509350e0fbf74d8d50251a51e420a2a8feaa0cecbd/pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e", size = 9227547 }, + { url = "https://files.pythonhosted.org/packages/91/20/f744bff1da8f43388498503634378dbbefbe493e65675f2cc52f7185c2c2/pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a", size = 10388324 }, + { url = "https://files.pythonhosted.org/packages/14/91/17e016d5923e178346aabda3dfec6629d1a26efe587d19667542105cf0a6/pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b", size = 8507705 }, + { url = "https://files.pythonhosted.org/packages/83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e", size = 9227429 }, + { url = "https://files.pythonhosted.org/packages/1c/43/e3444dc9a12f8365d9603c2145d16bf0a2f8180f343cf87be47f5579e547/pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040", size = 10388145 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_system != 'Darwin' and sys_platform == 'linux'", +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/e5/af35f7ea75cf72f2cd079c95ee16797de7cd71f29ea7c68ae5ce7be1eda0/PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", size = 125201 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/06/4beb652c0fe16834032e54f0956443d4cc797fe645527acee59e7deaa0a2/PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", size = 189447 }, + { url = "https://files.pythonhosted.org/packages/5b/07/10033a403b23405a8fc48975444463d3d10a5c2736b7eb2550b07b367429/PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f", size = 169264 }, + { url = "https://files.pythonhosted.org/packages/f1/26/55e4f21db1f72eaef092015d9017c11510e7e6301c62a6cfee91295d13c6/PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", size = 677003 }, + { url = "https://files.pythonhosted.org/packages/ba/91/090818dfa62e85181f3ae23dd1e8b7ea7f09684864a900cab72d29c57346/PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", size = 699070 }, + { url = "https://files.pythonhosted.org/packages/29/61/bf33c6c85c55bc45a29eee3195848ff2d518d84735eb0e2d8cb42e0d285e/PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", size = 705525 }, + { url = "https://files.pythonhosted.org/packages/07/91/45dfd0ef821a7f41d9d0136ea3608bb5b1653e42fd56a7970532cb5c003f/PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", size = 707514 }, + { url = "https://files.pythonhosted.org/packages/b6/a0/b6700da5d49e9fed49dc3243d3771b598dad07abb37cc32e524607f96adc/PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", size = 130488 }, + { url = "https://files.pythonhosted.org/packages/24/97/9b59b43431f98d01806b288532da38099cc6f2fea0f3d712e21e269c0279/PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", size = 145338 }, + { url = "https://files.pythonhosted.org/packages/ec/0d/26fb23e8863e0aeaac0c64e03fd27367ad2ae3f3cccf3798ee98ce160368/PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", size = 187867 }, + { url = "https://files.pythonhosted.org/packages/28/09/55f715ddbf95a054b764b547f617e22f1d5e45d83905660e9a088078fe67/PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", size = 167530 }, + { url = "https://files.pythonhosted.org/packages/5e/94/7d5ee059dfb92ca9e62f4057dcdec9ac08a9e42679644854dc01177f8145/PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", size = 732244 }, + { url = "https://files.pythonhosted.org/packages/06/92/e0224aa6ebf9dc54a06a4609da37da40bb08d126f5535d81bff6b417b2ae/PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", size = 752871 }, + { url = "https://files.pythonhosted.org/packages/7b/5e/efd033ab7199a0b2044dab3b9f7a4f6670e6a52c089de572e928d2873b06/PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", size = 757729 }, + { url = "https://files.pythonhosted.org/packages/03/5c/c4671451b2f1d76ebe352c0945d4cd13500adb5d05f5a51ee296d80152f7/PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", size = 748528 }, + { url = "https://files.pythonhosted.org/packages/73/9c/766e78d1efc0d1fca637a6b62cea1b4510a7fb93617eb805223294fef681/PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", size = 130286 }, + { url = "https://files.pythonhosted.org/packages/b3/34/65bb4b2d7908044963ebf614fe0fdb080773fc7030d7e39c8d3eddcd4257/PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", size = 144699 }, + { url = "https://files.pythonhosted.org/packages/bc/06/1b305bf6aa704343be85444c9d011f626c763abb40c0edc1cad13bfd7f86/PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", size = 178692 }, + { url = "https://files.pythonhosted.org/packages/84/02/404de95ced348b73dd84f70e15a41843d817ff8c1744516bf78358f2ffd2/PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", size = 165622 }, + { url = "https://files.pythonhosted.org/packages/c7/4c/4a2908632fc980da6d918b9de9c1d9d7d7e70b2672b1ad5166ed27841ef7/PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef", size = 696937 }, + { url = "https://files.pythonhosted.org/packages/b4/33/720548182ffa8344418126017aa1d4ab4aeec9a2275f04ce3f3573d8ace8/PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", size = 724969 }, + { url = "https://files.pythonhosted.org/packages/4f/78/77b40157b6cb5f2d3d31a3d9b2efd1ba3505371f76730d267e8b32cf4b7f/PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", size = 712604 }, + { url = "https://files.pythonhosted.org/packages/2e/97/3e0e089ee85e840f4b15bfa00e4e63d84a3691ababbfea92d6f820ea6f21/PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", size = 126098 }, + { url = "https://files.pythonhosted.org/packages/2b/9f/fbade56564ad486809c27b322d0f7e6a89c01f6b4fe208402e90d4443a99/PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", size = 138675 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'", +] +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, +] + +[[package]] +name = "pyzmq" +version = "26.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/a8/9837c39aba390eb7d01924ace49d761c8dbe7bc2d6082346d00c8332e431/pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629", size = 1340058 }, + { url = "https://files.pythonhosted.org/packages/a2/1f/a006f2e8e4f7d41d464272012695da17fb95f33b54342612a6890da96ff6/pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b", size = 1008818 }, + { url = "https://files.pythonhosted.org/packages/b6/09/b51b6683fde5ca04593a57bbe81788b6b43114d8f8ee4e80afc991e14760/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764", size = 673199 }, + { url = "https://files.pythonhosted.org/packages/c9/78/486f3e2e824f3a645238332bf5a4c4b4477c3063033a27c1e4052358dee2/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c", size = 911762 }, + { url = "https://files.pythonhosted.org/packages/5e/3b/2eb1667c9b866f53e76ee8b0c301b0469745a23bd5a87b7ee3d5dd9eb6e5/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a", size = 868773 }, + { url = "https://files.pythonhosted.org/packages/16/29/ca99b4598a9dc7e468b5417eda91f372b595be1e3eec9b7cbe8e5d3584e8/pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88", size = 868834 }, + { url = "https://files.pythonhosted.org/packages/ad/e5/9efaeb1d2f4f8c50da04144f639b042bc52869d3a206d6bf672ab3522163/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f", size = 1202861 }, + { url = "https://files.pythonhosted.org/packages/c3/62/c721b5608a8ac0a69bb83cbb7d07a56f3ff00b3991a138e44198a16f94c7/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282", size = 1515304 }, + { url = "https://files.pythonhosted.org/packages/87/84/e8bd321aa99b72f48d4606fc5a0a920154125bd0a4608c67eab742dab087/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea", size = 1414712 }, + { url = "https://files.pythonhosted.org/packages/cd/cd/420e3fd1ac6977b008b72e7ad2dae6350cc84d4c5027fc390b024e61738f/pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2", size = 578113 }, + { url = "https://files.pythonhosted.org/packages/5c/57/73930d56ed45ae0cb4946f383f985c855c9b3d4063f26416998f07523c0e/pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971", size = 641631 }, + { url = "https://files.pythonhosted.org/packages/61/d2/ae6ac5c397f1ccad59031c64beaafce7a0d6182e0452cc48f1c9c87d2dd0/pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa", size = 543528 }, + { url = "https://files.pythonhosted.org/packages/12/20/de7442172f77f7c96299a0ac70e7d4fb78cd51eca67aa2cf552b66c14196/pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218", size = 1340639 }, + { url = "https://files.pythonhosted.org/packages/98/4d/5000468bd64c7910190ed0a6c76a1ca59a68189ec1f007c451dc181a22f4/pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4", size = 1008710 }, + { url = "https://files.pythonhosted.org/packages/e1/bf/c67fd638c2f9fbbab8090a3ee779370b97c82b84cc12d0c498b285d7b2c0/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef", size = 673129 }, + { url = "https://files.pythonhosted.org/packages/86/94/99085a3f492aa538161cbf27246e8886ff850e113e0c294a5b8245f13b52/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317", size = 910107 }, + { url = "https://files.pythonhosted.org/packages/31/1d/346809e8a9b999646d03f21096428453465b1bca5cd5c64ecd048d9ecb01/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf", size = 867960 }, + { url = "https://files.pythonhosted.org/packages/ab/68/6fb6ae5551846ad5beca295b7bca32bf0a7ce19f135cb30e55fa2314e6b6/pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e", size = 869204 }, + { url = "https://files.pythonhosted.org/packages/0f/f9/18417771dee223ccf0f48e29adf8b4e25ba6d0e8285e33bcbce078070bc3/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37", size = 1203351 }, + { url = "https://files.pythonhosted.org/packages/e0/46/f13e67fe0d4f8a2315782cbad50493de6203ea0d744610faf4d5f5b16e90/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3", size = 1514204 }, + { url = "https://files.pythonhosted.org/packages/50/11/ddcf7343b7b7a226e0fc7b68cbf5a5bb56291fac07f5c3023bb4c319ebb4/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6", size = 1414339 }, + { url = "https://files.pythonhosted.org/packages/01/14/1c18d7d5b7be2708f513f37c61bfadfa62161c10624f8733f1c8451b3509/pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4", size = 576928 }, + { url = "https://files.pythonhosted.org/packages/3b/1b/0a540edd75a41df14ec416a9a500b9fec66e554aac920d4c58fbd5756776/pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5", size = 642317 }, + { url = "https://files.pythonhosted.org/packages/98/77/1cbfec0358078a4c5add529d8a70892db1be900980cdb5dd0898b3d6ab9d/pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003", size = 543834 }, + { url = "https://files.pythonhosted.org/packages/28/2f/78a766c8913ad62b28581777ac4ede50c6d9f249d39c2963e279524a1bbe/pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9", size = 1343105 }, + { url = "https://files.pythonhosted.org/packages/b7/9c/4b1e2d3d4065be715e007fe063ec7885978fad285f87eae1436e6c3201f4/pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52", size = 1008365 }, + { url = "https://files.pythonhosted.org/packages/4f/ef/5a23ec689ff36d7625b38d121ef15abfc3631a9aecb417baf7a4245e4124/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08", size = 665923 }, + { url = "https://files.pythonhosted.org/packages/ae/61/d436461a47437d63c6302c90724cf0981883ec57ceb6073873f32172d676/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5", size = 903400 }, + { url = "https://files.pythonhosted.org/packages/47/42/fc6d35ecefe1739a819afaf6f8e686f7f02a4dd241c78972d316f403474c/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae", size = 860034 }, + { url = "https://files.pythonhosted.org/packages/07/3b/44ea6266a6761e9eefaa37d98fabefa112328808ac41aa87b4bbb668af30/pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711", size = 860579 }, + { url = "https://files.pythonhosted.org/packages/38/6f/4df2014ab553a6052b0e551b37da55166991510f9e1002c89cab7ce3b3f2/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6", size = 1196246 }, + { url = "https://files.pythonhosted.org/packages/38/9d/ee240fc0c9fe9817f0c9127a43238a3e28048795483c403cc10720ddef22/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3", size = 1507441 }, + { url = "https://files.pythonhosted.org/packages/85/4f/01711edaa58d535eac4a26c294c617c9a01f09857c0ce191fd574d06f359/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b", size = 1406498 }, + { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768 }, + { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675 }, + { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564 }, + { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447 }, + { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485 }, + { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484 }, + { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981 }, + { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334 }, + { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179 }, + { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668 }, + { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539 }, + { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567 }, + { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551 }, + { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378 }, + { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378 }, + { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532 }, + { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242 }, + { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404 }, + { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858 }, + { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375 }, + { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489 }, + { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932 }, + { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, + { url = "https://files.pythonhosted.org/packages/53/fb/36b2b2548286e9444e52fcd198760af99fd89102b5be50f0660fcfe902df/pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072", size = 906955 }, + { url = "https://files.pythonhosted.org/packages/77/8f/6ce54f8979a01656e894946db6299e2273fcee21c8e5fa57c6295ef11f57/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1", size = 565701 }, + { url = "https://files.pythonhosted.org/packages/ee/1c/bf8cd66730a866b16db8483286078892b7f6536f8c389fb46e4beba0a970/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d", size = 794312 }, + { url = "https://files.pythonhosted.org/packages/71/43/91fa4ff25bbfdc914ab6bafa0f03241d69370ef31a761d16bb859f346582/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca", size = 752775 }, + { url = "https://files.pythonhosted.org/packages/ec/d2/3b2ab40f455a256cb6672186bea95cd97b459ce4594050132d71e76f0d6f/pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c", size = 550762 }, +] + +[[package]] +name = "rapidfuzz" +version = "3.9.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/17/ac/1f1bf726645d7740df2d1371380e35098bb8a460f482343cba1dd1668ab6/rapidfuzz-3.9.7.tar.gz", hash = "sha256:f1c7296534c1afb6f495aa95871f14ccdc197c6db42965854e483100df313030", size = 1596228 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/5d/e8dd3ffca0c27a397bbe9b3581b10195e7b8e5a6f587dd5d1a81b04c30a2/rapidfuzz-3.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ccf68e30b80e903f2309f90a438dbd640dd98e878eeb5ad361a288051ee5b75c", size = 2054341 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/38bd009fef815f2f2fa726019f0cc16ae600b7521acccb18a7afae63dbb6/rapidfuzz-3.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:696a79018ef989bf1c9abd9005841cee18005ccad4748bad8a4c274c47b6241a", size = 1509592 }, + { url = "https://files.pythonhosted.org/packages/f9/b5/cbf4b1333b616d9808d8af9447b738c092f75c814e2509716d881992f369/rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4eebf6c93af0ae866c22b403a84747580bb5c10f0d7b51c82a87f25405d4dcb", size = 1566069 }, + { url = "https://files.pythonhosted.org/packages/57/e9/a65810d38638e8ee005fa30116829994fd4ca7a487d2ec6fe6728e04db29/rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e9125377fa3d21a8abd4fbdbcf1c27be73e8b1850f0b61b5b711364bf3b59db", size = 5969873 }, + { url = "https://files.pythonhosted.org/packages/fe/2b/b7fb39e63fb4375c491e1c28264f56286ab2dfbe4918324ab765a50c53f3/rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c12d180b17a22d107c8747de9c68d0b9c1d15dcda5445ff9bf9f4ccfb67c3e16", size = 1815304 }, + { url = "https://files.pythonhosted.org/packages/b0/9b/f95b96f20fba46c6d877ad30f41b67be92b1797e22b1b6a143c5d74e8485/rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1318d42610c26dcd68bd3279a1bf9e3605377260867c9a8ed22eafc1bd93a7c", size = 1828260 }, + { url = "https://files.pythonhosted.org/packages/ca/66/aca839c3312f27e37b9c32ff0e1d3e0d13d9e9a7223265cd0114d101818f/rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5fa6e3c6e0333051c1f3a49f0807b3366f4131c8d6ac8c3e05fd0d0ce3755c", size = 3381962 }, + { url = "https://files.pythonhosted.org/packages/40/1c/df36c12506f345145200eca743d5fd7525fdca405c78419fa5aa1635887e/rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fcf79b686962d7bec458a0babc904cb4fa319808805e036b9d5a531ee6b9b835", size = 2457404 }, + { url = "https://files.pythonhosted.org/packages/e2/79/147729336be225c48bcf6fad4d4043d31f50b9e84dc789b6cd00efb34500/rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8b01153c7466d0bad48fba77a303d5a768e66f24b763853469f47220b3de4661", size = 7238408 }, + { url = "https://files.pythonhosted.org/packages/b4/a9/74d433794f1a496652d5c6c3dd8a7f0ea4b89445106a034131764c867522/rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:94baaeea0b4f8632a6da69348b1e741043eba18d4e3088d674d3f76586b6223d", size = 2836522 }, + { url = "https://files.pythonhosted.org/packages/5c/ab/4782ad61518ff21a6d280859a2ebf95a97644765b135becfdd5016551001/rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6c5b32875646cb7f60c193ade99b2e4b124f19583492115293cd00f6fb198b17", size = 3392431 }, + { url = "https://files.pythonhosted.org/packages/12/be/1293e9ed820532b28800c4def8b30f972472864b06def9bdd3a04ae72352/rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:110b6294396bc0a447648627479c9320f095c2034c0537f687592e0f58622638", size = 4390214 }, + { url = "https://files.pythonhosted.org/packages/ea/50/65203f60a3ecd4aa013b6368b52c1e5907e47fe7ec858658835a1e7fb195/rapidfuzz-3.9.7-cp310-cp310-win32.whl", hash = "sha256:3445a35c4c8d288f2b2011eb61bce1227c633ce85a3154e727170f37c0266bb2", size = 1858137 }, + { url = "https://files.pythonhosted.org/packages/0e/1c/778e96d260990e1e2c1efb4a6e0f74f8f019959a80992cf50421b0472b7e/rapidfuzz-3.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:0d1415a732ee75e74a90af12020b77a0b396b36c60afae1bde3208a78cd2c9fc", size = 1662268 }, + { url = "https://files.pythonhosted.org/packages/61/7b/809ec9cbc881015dac6be3f301331636ca4e60956c13ecabdc92df8c220f/rapidfuzz-3.9.7-cp310-cp310-win_arm64.whl", hash = "sha256:836f4d88b8bd0fff2ebe815dcaab8aa6c8d07d1d566a7e21dd137cf6fe11ed5b", size = 855423 }, + { url = "https://files.pythonhosted.org/packages/18/dd/530be3f5fb7ad43cc8ccce2cb391146602e11b5df1f1e948adfa7bae0802/rapidfuzz-3.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d098ce6162eb5e48fceb0745455bc950af059df6113eec83e916c129fca11408", size = 2055425 }, + { url = "https://files.pythonhosted.org/packages/60/e5/c919e2257c8c3ee43155f580bb86682d3b1f16256dc3622ca2e416068d67/rapidfuzz-3.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:048d55d36c02c6685a2b2741688503c3d15149694506655b6169dcfd3b6c2585", size = 1510614 }, + { url = "https://files.pythonhosted.org/packages/06/09/efe65f1b01e1778e57b8f29e9f8d39c8203c6022698a246f6c57e8471000/rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c33211cfff9aec425bb1bfedaf94afcf337063aa273754f22779d6dadebef4c2", size = 1559939 }, + { url = "https://files.pythonhosted.org/packages/c1/f0/344a41ac82970e0a7b88821f9cfd3b46779db88089c146c9937e4bbfcc6c/rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6d9db2fa4e9be171e9bb31cf2d2575574774966b43f5b951062bb2e67885852", size = 5964378 }, + { url = "https://files.pythonhosted.org/packages/83/31/3194dc0262dfa3c3bd585e6aac95af21c78e26981a9b19da08a4fd97adda/rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4e049d5ad61448c9a020d1061eba20944c4887d720c4069724beb6ea1692507", size = 1825499 }, + { url = "https://files.pythonhosted.org/packages/e6/3e/ea01677779779819c083580e501aba1773f4fbcd7082fc52f110e73c09f5/rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cfa74aac64c85898b93d9c80bb935a96bf64985e28d4ee0f1a3d1f3bf11a5106", size = 1830054 }, + { url = "https://files.pythonhosted.org/packages/8a/c4/a06602d0bf830414dd6b458785d868252d6f2cbe1a0a1f57a62cfab1a9ec/rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965693c2e9efd425b0f059f5be50ef830129f82892fa1858e220e424d9d0160f", size = 3384099 }, + { url = "https://files.pythonhosted.org/packages/87/f3/787a2950df7cc23eac5a89b9ee47cf833a9b5759f59b90a50d351467c257/rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8501000a5eb8037c4b56857724797fe5a8b01853c363de91c8d0d0ad56bef319", size = 2458238 }, + { url = "https://files.pythonhosted.org/packages/41/85/e3531a970ae92dfe8c1c8060920d83ba083f4d56cd0953f444aaa15af9a9/rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d92c552c6b7577402afdd547dcf5d31ea6c8ae31ad03f78226e055cfa37f3c6", size = 7239492 }, + { url = "https://files.pythonhosted.org/packages/b3/5f/08d5637681c80c2d5ae20d2f1e5be9e37351e8313359c2a00770efa14be7/rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1ee2086f490cb501d86b7e386c1eb4e3a0ccbb0c99067089efaa8c79012c8952", size = 2837408 }, + { url = "https://files.pythonhosted.org/packages/0a/54/6f44905e09fc0136621ffa914737326aa3b6b9b6c24f3565af1c63cf3f3f/rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1de91e7fd7f525e10ea79a6e62c559d1b0278ec097ad83d9da378b6fab65a265", size = 3386607 }, + { url = "https://files.pythonhosted.org/packages/77/a3/ac9b99d96a91b5d2ffa920481cbd94fcc73a042aee0b17ba627a146e7199/rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4da514d13f4433e16960a17f05b67e0af30ac771719c9a9fb877e5004f74477", size = 4392097 }, + { url = "https://files.pythonhosted.org/packages/f0/cc/67f959d95e556f1925b4c9211fb7f63c0df60610c28c2c618b48df9ff1d6/rapidfuzz-3.9.7-cp311-cp311-win32.whl", hash = "sha256:a40184c67db8252593ec518e17fb8a6e86d7259dc9f2d6c0bf4ff4db8cf1ad4b", size = 1857658 }, + { url = "https://files.pythonhosted.org/packages/64/d9/c86f7b247b1603cae62d5d39cbc12f5baaeb34e80fd00c7211fe43157a66/rapidfuzz-3.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:c4f28f1930b09a2c300357d8465b388cecb7e8b2f454a5d5425561710b7fd07f", size = 1662871 }, + { url = "https://files.pythonhosted.org/packages/67/43/ca9cda58a08808b891866afecf567f5dd317c72816fe3df50cb87649d625/rapidfuzz-3.9.7-cp311-cp311-win_arm64.whl", hash = "sha256:675b75412a943bb83f1f53e2e54fd18c80ef15ed642dc6eb0382d1949419d904", size = 856548 }, + { url = "https://files.pythonhosted.org/packages/c5/69/3382886cf73774d6b4085e177e665326ee065d806ed775aa61e5d9e5cd8a/rapidfuzz-3.9.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1ef6a1a8f0b12f8722f595f15c62950c9a02d5abc64742561299ffd49f6c6944", size = 2053430 }, + { url = "https://files.pythonhosted.org/packages/33/58/d67551479432be743b9e36eaf46e8ca6a76a8edfeb060137856576836129/rapidfuzz-3.9.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32532af1d70c6ec02ea5ac7ee2766dfff7c8ae8c761abfe8da9e527314e634e8", size = 1506225 }, + { url = "https://files.pythonhosted.org/packages/f0/d5/294e26070cc5f3ad079c001606f6fcccbd6e0d7e8b58dd1c9d4048971706/rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1a38bade755aa9dd95a81cda949e1bf9cd92b79341ccc5e2189c9e7bdfc5ec", size = 1542826 }, + { url = "https://files.pythonhosted.org/packages/24/4d/3e7f2afdb4571031e2b122d5d7a029dbc3e98a54d11ef5b20be142dbc688/rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d73ee2df41224c87336448d279b5b6a3a75f36e41dd3dcf538c0c9cce36360d8", size = 5858829 }, + { url = "https://files.pythonhosted.org/packages/c3/37/71c46506ec0e71a3508fc1ea23a44c34f948b8e21057dd5cc23ebd252267/rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be3a1fc3e2ab3bdf93dc0c83c00acca8afd2a80602297d96cf4a0ba028333cdf", size = 1794619 }, + { url = "https://files.pythonhosted.org/packages/5b/66/c62120f3d559136eb5d9504d0a1665f3d3ba63f0fe936360a605de8b3a4a/rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603f48f621272a448ff58bb556feb4371252a02156593303391f5c3281dfaeac", size = 1818937 }, + { url = "https://files.pythonhosted.org/packages/1e/bf/4717fb73e06c717d25472433420dec570cf8ee283a23529a643eb6317284/rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:268f8e1ca50fc61c0736f3fe9d47891424adf62d96ed30196f30f4bd8216b41f", size = 3381291 }, + { url = "https://files.pythonhosted.org/packages/e7/33/d3dce4519a2d2d0c52174780aba6908ecb7c01182d8c3411a30d85849635/rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f8bf3f0d02935751d8660abda6044821a861f6229f7d359f98bcdcc7e66c39b", size = 2425772 }, + { url = "https://files.pythonhosted.org/packages/30/72/0fb88a4e5d500cfc15bcc1d3c854fe53cf6242ba917a0626a615a1f5c579/rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b997ff3b39d4cee9fb025d6c46b0a24bd67595ce5a5b652a97fb3a9d60beb651", size = 7176976 }, + { url = "https://files.pythonhosted.org/packages/61/21/82acba73a147dd009aef4603da95ff8cbacb644e79f409244ee65fd5a299/rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca66676c8ef6557f9b81c5b2b519097817a7c776a6599b8d6fcc3e16edd216fe", size = 2800261 }, + { url = "https://files.pythonhosted.org/packages/73/3a/edccc360599fe6153472d4f2452cff65dd45422453141504d5002e1ce450/rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:35d3044cb635ca6b1b2b7b67b3597bd19f34f1753b129eb6d2ae04cf98cd3945", size = 3345108 }, + { url = "https://files.pythonhosted.org/packages/38/00/e7b2656faa7a4ec6760299ab973d37fa9cae6ae91f6e3ca3987577665b99/rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a93c9e60904cb76e7aefef67afffb8b37c4894f81415ed513db090f29d01101", size = 4360023 }, + { url = "https://files.pythonhosted.org/packages/0d/c5/a9ab2e06a6661aa6f3955b478e3c6c6c2ebd9016570d6a34e88f41b4e59f/rapidfuzz-3.9.7-cp312-cp312-win32.whl", hash = "sha256:579d107102c0725f7c79b4e79f16d3cf4d7c9208f29c66b064fa1fd4641d5155", size = 1842729 }, + { url = "https://files.pythonhosted.org/packages/70/e6/4aa3e901452f54c201435da7f61a896daa16dce7899d4aebb856666ddb6b/rapidfuzz-3.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:953b3780765c8846866faf891ee4290f6a41a6dacf4fbcd3926f78c9de412ca6", size = 1655171 }, + { url = "https://files.pythonhosted.org/packages/0d/16/8fadcef053e7658e731e2155ca795279c5159a28035891324f482e4ff6fc/rapidfuzz-3.9.7-cp312-cp312-win_arm64.whl", hash = "sha256:7c20c1474b068c4bd45bf2fd0ad548df284f74e9a14a68b06746c56e3aa8eb70", size = 851234 }, + { url = "https://files.pythonhosted.org/packages/78/5c/7a2f42b4610a1edf23aca94f609bf3390671e3b0e1bb42dab32274699b23/rapidfuzz-3.9.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fde81b1da9a947f931711febe2e2bee694e891f6d3e6aa6bc02c1884702aea19", size = 2026090 }, + { url = "https://files.pythonhosted.org/packages/93/60/9cfaac357675e8459f3360cd300cbb34dfa58061f8ad3acab0b5bf474c6f/rapidfuzz-3.9.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47e92c155a14f44511ea8ebcc6bc1535a1fe8d0a7d67ad3cc47ba61606df7bcf", size = 1499416 }, + { url = "https://files.pythonhosted.org/packages/f2/53/1c2a0a525f709bb0cb0891c51d914a08e8f1e2f66078d43c17586f43610a/rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8772b745668260c5c4d069c678bbaa68812e6c69830f3771eaad521af7bc17f8", size = 1537254 }, + { url = "https://files.pythonhosted.org/packages/cc/0e/4c7e85cc9f10ea005c3695af3f6ba47e5796fbe28a7700170cb09b266156/rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578302828dd97ee2ba507d2f71d62164e28d2fc7bc73aad0d2d1d2afc021a5d5", size = 5877170 }, + { url = "https://files.pythonhosted.org/packages/07/71/548af38b262bc4494266a7e26250e22ebd686203b5c9269e2878383b34fc/rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc3e6081069eea61593f1d6839029da53d00c8c9b205c5534853eaa3f031085c", size = 1766905 }, + { url = "https://files.pythonhosted.org/packages/9c/ef/96159e7e0236efe9ffb78d7b02cee1b6a02dede9c23ede56ae4454031348/rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b1c2d504eddf97bc0f2eba422c8915576dbf025062ceaca2d68aecd66324ad9", size = 1819869 }, + { url = "https://files.pythonhosted.org/packages/75/8d/73d521da17f32ad389e8593f9d3d5df06b889ed2d261ca5a5bed657a13e8/rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb76e5a21034f0307c51c5a2fc08856f698c53a4c593b17d291f7d6e9d09ca3", size = 3361102 }, + { url = "https://files.pythonhosted.org/packages/3a/bc/394837f81c377aad90cc6d5e0fa138da91101a63cac31b31f2ca85a65c7c/rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d4ba2318ef670ce505f42881a5d2af70f948124646947341a3c6ccb33cd70369", size = 2421346 }, + { url = "https://files.pythonhosted.org/packages/96/fa/daf98b62dc5e6b6e094d6d17f0b23340463f1b4c9e556249103acba4ee7c/rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:057bb03f39e285047d7e9412e01ecf31bb2d42b9466a5409d715d587460dd59b", size = 7190698 }, + { url = "https://files.pythonhosted.org/packages/dc/da/d548faf4d8cf14c0c58bd2ea91d27d3f0137dd2a7973eece7a561e0b9a2c/rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a8feac9006d5c9758438906f093befffc4290de75663dbb2098461df7c7d28dd", size = 2791263 }, + { url = "https://files.pythonhosted.org/packages/35/17/5cb93655581eccf105c006c3d1918e9e7f359df6b2dbe0fbb012e4a4a4cd/rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:95b8292383e717e10455f2c917df45032b611141e43d1adf70f71b1566136b11", size = 3341012 }, + { url = "https://files.pythonhosted.org/packages/a5/77/3486e011a9977ca5f070469f1ff38c7e38877e5ca4299368c85af48e1189/rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e9fbf659537d246086d0297628b3795dc3e4a384101ecc01e5791c827b8d7345", size = 4355424 }, + { url = "https://files.pythonhosted.org/packages/6d/c7/a4add18324590be9cf311763baf0b3afe24a3065f54604052e6141161a45/rapidfuzz-3.9.7-cp313-cp313-win32.whl", hash = "sha256:1dc516ac6d32027be2b0196bedf6d977ac26debd09ca182376322ad620460feb", size = 1840822 }, + { url = "https://files.pythonhosted.org/packages/6e/3c/cc468b42740bb77dc94dd92cd29cf18ea4301a6f0cea3663d3291d97800a/rapidfuzz-3.9.7-cp313-cp313-win_amd64.whl", hash = "sha256:b4f86e09d3064dca0b014cd48688964036a904a2d28048f00c8f4640796d06a8", size = 1652011 }, + { url = "https://files.pythonhosted.org/packages/96/c7/b1fbae97a9e53ae833d477653bf5ab095b14338da0e79db4ae4bbf985ebb/rapidfuzz-3.9.7-cp313-cp313-win_arm64.whl", hash = "sha256:19c64d8ddb2940b42a4567b23f1681af77f50a5ff6c9b8e85daba079c210716e", size = 850094 }, + { url = "https://files.pythonhosted.org/packages/da/01/23fe5ddedeef8af6c7c5dcff379b4be16f409406d852eaf94699a8f36817/rapidfuzz-3.9.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d7df9c2194c7ec930b33c991c55dbd0c10951bd25800c0b7a7b571994ebbced5", size = 1938516 }, + { url = "https://files.pythonhosted.org/packages/b1/58/0027dd6c8d2a3a2fb762677697b9fc2b5eb03224934c24048daff381c0ab/rapidfuzz-3.9.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:68bd888eafd07b09585dcc8bc2716c5ecdb7eed62827470664d25588982b2873", size = 1440002 }, + { url = "https://files.pythonhosted.org/packages/1a/f7/b44843524be03df630b8b18a815a0570de5c3bb092d41b89f504cb029037/rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1230e0f9026851a6a432beaa0ce575dda7b39fe689b576f99a0704fbb81fc9c", size = 1491163 }, + { url = "https://files.pythonhosted.org/packages/35/f5/432986f296c4bd43e80b04a09d7d64ae265b7bfb5ff3e28843145dd0043c/rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b36e1c61b796ae1777f3e9e11fd39898b09d351c9384baf6e3b7e6191d8ced", size = 5802654 }, + { url = "https://files.pythonhosted.org/packages/2a/10/2dedc65458ef52e06db061def202449ff7deb06909350f60f323cb2d7df1/rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dba13d86806fcf3fe9c9919f58575e0090eadfb89c058bde02bcc7ab24e4548", size = 3289830 }, + { url = "https://files.pythonhosted.org/packages/f1/95/87433bee93a3adec5a81244f3b3d4c694cc3adaac924eeaf84174040b73a/rapidfuzz-3.9.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1f1a33e84056b7892c721d84475d3bde49a145126bc4c6efe0d6d0d59cb31c29", size = 1592566 }, +] + +[[package]] +name = "realtime" +version = "1.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "typing-extensions" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/05/be505ac7b3b6496cecd6eff5f4fb2e314d74eaf419f1bd06650b0a010c83/realtime-1.0.6.tar.gz", hash = "sha256:2be0d8a6305513d423604ee319216108fc20105cb7438922d5c8958c48f40a47", size = 7934 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/d8/412c4ae92743484f500520828309b7e98dba9f258f5b1d18e51f54af54ff/realtime-1.0.6-py3-none-any.whl", hash = "sha256:c66918a106d8ef348d1821f2dbf6683d8833825580d95b2fdea9995406b42838", size = 8967 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rich" +version = "13.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/60/5959113cae0ce512cf246a6871c623117330105a0d5f59b4e26138f2c9cc/rich-13.8.0.tar.gz", hash = "sha256:a5ac1f1cd448ade0d59cc3356f7db7a7ccda2c8cbae9c7a90c28ff463d3e91f4", size = 222072 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/d9/c2a126eeae791e90ea099d05cb0515feea3688474b978343f3cdcfe04523/rich-13.8.0-py3-none-any.whl", hash = "sha256:2e85306a063b9492dffc86278197a60cbece75bcb766022f3436f567cae11bdc", size = 241597 }, +] + +[[package]] +name = "rich-click" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/a9/a1f1af87e83832d794342fbc09c96cc7cd6798b8dfb8adfbe6ccbef8d70c/rich_click-1.8.3.tar.gz", hash = "sha256:6d75bdfa7aa9ed2c467789a0688bc6da23fbe3a143e19aa6ad3f8bac113d2ab3", size = 38209 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ea/5a0c5a8e6532e971983d1b0fc99268eb66a10f489da35d9022ce01044191/rich_click-1.8.3-py3-none-any.whl", hash = "sha256:636d9c040d31c5eee242201b5bf4f2d358bfae4db14bb22ec1cafa717cfd02cd", size = 35032 }, +] + +[[package]] +name = "s3fs" +version = "2024.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiobotocore" }, + { name = "aiohttp" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/de/1dbadd86b81a587d9d6cce18512ab130062d386edf0e368a1ff7c2e2f462/s3fs-2024.9.0.tar.gz", hash = "sha256:6493705abb50374d6b7994f9616d27adbdd8a219c8635100bdc286382efd91f5", size = 74925 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/af/add60ba3a0bb78d900f6d9365000c1b0e06c97284154e20f0bda02dbb717/s3fs-2024.9.0-py3-none-any.whl", hash = "sha256:3a7dc7acae4358af8e8dfb693e82a8477f9f2c847de5d44cf65fee75752eaca3", size = 29463 }, +] + +[[package]] +name = "scanpy" +version = "1.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "h5py" }, + { name = "joblib" }, + { name = "legacy-api-wrap" }, + { name = "matplotlib" }, + { name = "natsort" }, + { name = "networkx" }, + { name = "numba" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "patsy" }, + { name = "pynndescent" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "session-info" }, + { name = "statsmodels" }, + { name = "tqdm" }, + { name = "umap-learn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/92/86ba1b2a39feea97993623c6bc7d08c991d177c03e871af0855ab8d6c992/scanpy-1.10.2.tar.gz", hash = "sha256:5d1649e73ac35e3ad02b455d8a16fdb16d4c8dc27330e696f4cd4e27f2d879be", size = 14340305 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/9d/05129619c6bd9a657a64a9c19ec8d0eb46eb06c3107c48e38b1b6e70c088/scanpy-1.10.2-py3-none-any.whl", hash = "sha256:2ad4348e214b1dd0db5a4cf21d73695be11b8f5f0ef47508d3075525d9d1c7c6", size = 2083998 }, +] + +[[package]] +name = "scdataloader" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "biomart" }, + { name = "bionty" }, + { name = "cellxgene-census" }, + { name = "decoupler" }, + { name = "django" }, + { name = "ipykernel" }, + { name = "lamindb" }, + { name = "leidenalg" }, + { name = "lightning" }, + { name = "matplotlib" }, + { name = "pandas" }, + { name = "scikit-misc" }, + { name = "seaborn" }, + { name = "torch" }, + { name = "torchdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/87/26bb22f4185e2f061d05571525ffa5e3d680c66b791be98e4516858644cd/scdataloader-1.1.3.tar.gz", hash = "sha256:cf6398988948d9823878eb686a64d046e31105adaaa7828059b59af6178eca64", size = 59629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/bb/5d21c74ac19078ecacc771c22eb11fec2eaa37f70b60736e7876112c5d67/scdataloader-1.1.3-py3-none-any.whl", hash = "sha256:54d4235b663ca2bc690dc6398eaf2f2bdb75b942a702a9f2c548a027b8419023", size = 61865 }, +] + +[[package]] +name = "scib" +version = "1.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "deprecated" }, + { name = "h5py" }, + { name = "igraph" }, + { name = "leidenalg" }, + { name = "llvmlite" }, + { name = "matplotlib" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pydot" }, + { name = "scanpy" }, + { name = "scikit-learn" }, + { name = "scikit-misc" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "umap-learn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/1e/74d194a4597bc6c3adae7e286a75fa102bf4e4b2094439df2cf01c77ba76/scib-1.1.5.tar.gz", hash = "sha256:7ab3183065f2d861b64f88823a55cec767327a37ad6d0eaccce7b43c996293ad", size = 74372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/f4/4a27b5bec99be3f24a0634761deba4cd336962c105b70888294762fb3bf0/scib-1.1.5-1-py3-none-any.whl", hash = "sha256:e5aec8037bb001a5f1b920ea81bac5288758e6013b2f89f1fbc3dcbd1e6c4e47", size = 79544 }, +] + +[[package]] +name = "scib-metrics" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "chex" }, + { name = "igraph" }, + { name = "jax" }, + { name = "jaxlib" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "plottable" }, + { name = "pynndescent" }, + { name = "rich" }, + { name = "scanpy" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tqdm" }, + { name = "umap-learn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/fd/1d6df8fb908dae10e4165d8144e63c17c4f2f7beb7cbe7fec0c62fb11310/scib_metrics-0.5.1.tar.gz", hash = "sha256:74d10251acf1c11402b994faf063e55317881d7950fb78f6cef011d232a1e266", size = 431543 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/50/a9ed815be660207f7aba3ac4fd2ac1905c1fcb2543e882925b529940ee85/scib_metrics-0.5.1-py3-none-any.whl", hash = "sha256:42d0a48f5722d0d36aefb65a70067bce3322b3643a65ae3be6a5274e4e7124e1", size = 36704 }, +] + +[[package]] +name = "scikit-learn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/72/2961b9874a9ddf2b0f95f329d4e67f67c3301c1d88ba5e239ff25661bb85/scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414", size = 6958368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/59/d8ea8c05e61d2afa988dfcfe47526595b531e94d23babf58d2e00a35f646/scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745", size = 12102257 }, + { url = "https://files.pythonhosted.org/packages/1f/c6/ba8e5691acca616adc8f0d6f8f5e79d55b927530aa404ee712b077acf0cf/scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7", size = 10975310 }, + { url = "https://files.pythonhosted.org/packages/5c/c6/e362563cc7dfe37e4699cbf2b2d22c2854be227c254976de1c4854fc6e84/scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac", size = 12496508 }, + { url = "https://files.pythonhosted.org/packages/f2/60/6c589c91e474721efdcec82ea9cc5c743359e52637e46c364ee5236666ef/scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21", size = 13352348 }, + { url = "https://files.pythonhosted.org/packages/f1/13/de29b945fb28fc0c24159d3a83f1250c5232c1c9abac12434c7c3447e9cc/scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1", size = 10966250 }, + { url = "https://files.pythonhosted.org/packages/03/86/ab9f95e338c5ef5b4e79463ee91e55aae553213835e59bf038bc0cc21bf8/scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2", size = 12087598 }, + { url = "https://files.pythonhosted.org/packages/7d/d7/fb80c63062b60b1fa5dcb2d4dd3a4e83bd8c68cdc83cf6ff8c016228f184/scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe", size = 10979067 }, + { url = "https://files.pythonhosted.org/packages/c1/f8/fd3fa610cac686952d8c78b8b44cf5263c6c03885bd8e5d5819c684b44e8/scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4", size = 12485469 }, + { url = "https://files.pythonhosted.org/packages/32/63/ed228892adad313aab0d0f9261241e7bf1efe36730a2788ad424bcad00ca/scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf", size = 13335048 }, + { url = "https://files.pythonhosted.org/packages/5d/55/0403bf2031250ac982c8053397889fbc5a3a2b3798b913dae4f51c3af6a4/scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b", size = 10988436 }, + { url = "https://files.pythonhosted.org/packages/b1/8d/cf392a56e24627093a467642c8b9263052372131359b570df29aaf4811ab/scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395", size = 12102404 }, + { url = "https://files.pythonhosted.org/packages/d5/2c/734fc9269bdb6768905ac41b82d75264b26925b1e462f4ebf45fe4f17646/scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1", size = 11037398 }, + { url = "https://files.pythonhosted.org/packages/d3/a9/15774b178bcd1cde1c470adbdb554e1504dce7c302e02ff736c90d65e014/scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915", size = 12089887 }, + { url = "https://files.pythonhosted.org/packages/8a/5d/047cde25131eef3a38d03317fa7d25d6f60ce6e8ccfd24ac88b3e309fc00/scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b", size = 13079093 }, + { url = "https://files.pythonhosted.org/packages/cb/be/dec2a8d31d133034a8ec51ae68ac564ec9bde1c78a64551f1438c3690b9e/scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74", size = 10945350 }, +] + +[[package]] +name = "scikit-misc" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/c5/87ff89128cf05f560ba70c762f8d6cb79011054ea5d5d6e21fa5fc2f6ce7/scikit_misc-0.5.1.tar.gz", hash = "sha256:c5c1f69ac5f84e0103f40525c7d28ecc0ee028314cbc9f07c497cc39143e52a3", size = 298630 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/fa/ab5b20be6223895c0eaf762888ba552a29e160247cd7e2b2a62717a91fb8/scikit_misc-0.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b68d9fc6c71471256b7dedc5ddb7927d3dd874a90260e80662f0f78087bf78c1", size = 169913 }, + { url = "https://files.pythonhosted.org/packages/cd/3e/e147be0c2ec70f55370c276e730379ae2b0d38feccdd9c242ef8f1d20422/scikit_misc-0.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b2a77003b5a6ae4b608900a6ad30caf4fffa52001abd730dde196b789ef30b8b", size = 161811 }, + { url = "https://files.pythonhosted.org/packages/00/73/d1fa42edfd1c9100364e40852cf41e20979b10aeb36ca9dd91a4dae04a7c/scikit_misc-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f983014e2ae971d30379e7f0204a90dbca96f726d33ed7d19de3a69ddee4f8", size = 188804 }, + { url = "https://files.pythonhosted.org/packages/8e/af/7812181e96f4e5235d1029e52c736e1c4afa4e2040ffe3acbc32f56b74b8/scikit_misc-0.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:17e5cb78422ed75a39904f4cd57ae545ae15b2e83c807ca59b2634e8ed9d2f4d", size = 156896 }, + { url = "https://files.pythonhosted.org/packages/d9/ff/fa5c1f0bf258d2e8dc6cda975d9c72cbc35a4da347057593cd04d93e9621/scikit_misc-0.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ab7ee6c79ad16e5fc2db80b55fd35da91fccfc65ba40596a85069e1e241ae20e", size = 170414 }, + { url = "https://files.pythonhosted.org/packages/69/fe/413049c52d04236bb23c6d852d10e7033f6957caf6252922490d10afe33d/scikit_misc-0.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:496a65c0ed0903deca80aa641102f3d8dca1acd2ed5fafc98d2101e7bbbfde90", size = 161857 }, + { url = "https://files.pythonhosted.org/packages/14/6b/93b07eb8e355467243a1518d9501fb60f1b65add98a5a0c327c7ab9b7e31/scikit_misc-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd9a12ab92725b69eccacff033179597d46b4c45378eb127d8db400236ee6aae", size = 188964 }, + { url = "https://files.pythonhosted.org/packages/98/7a/0ef8646dac8bcac7151c5dd3e604a33c497d6d093f4db538e25656144394/scikit_misc-0.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:cf4a26d901157fa820a2da5b15ddc8aef18d6c17395f18b5cf5cc9663b81aac3", size = 157243 }, + { url = "https://files.pythonhosted.org/packages/81/f0/047b2b1742c679327d49a16e7c7cf4acfc8e66126ff45a1ced72514961df/scikit_misc-0.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e036e0f57cb7317ef7499497d2c0506274eb1b18513d54fe188c9e5619e3cef3", size = 170091 }, + { url = "https://files.pythonhosted.org/packages/49/01/e2886b471a8a3dbf8292cbb1ef133e3fc727850b88caaefde3529fdd9b42/scikit_misc-0.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34aa6f468234be81f70374bc22b1ec159991c72148ea664308c2b194d7255a95", size = 161862 }, + { url = "https://files.pythonhosted.org/packages/6d/7c/014980a1b5fe2ee990c222ae5c9b1602fe7b64359643319123d8e1df5009/scikit_misc-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8237509cbb1c4420d99d2d3cccfde8a2ca45ca6ea86fbd17516e5d6a0867d8b4", size = 183556 }, + { url = "https://files.pythonhosted.org/packages/63/2e/1da9f27515bdb92364bc5a8796b8e7d10e7b1f667b722681c5ceae168854/scikit_misc-0.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:fd350ade48b79b930d8d7bdc8bd659349193afc319cb34f2ddbedada6f2464e0", size = 157041 }, +] + +[[package]] +name = "scipy" +version = "1.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/85/cdbf2c3c460fe5aae812917866392068a88d02f07de0fe31ce738734c477/scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3", size = 56811768 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/d9/214971dae573bd7e9303b56d2612dae439decbfc0dae0f539a591c0562ce/scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b", size = 38900384 }, + { url = "https://files.pythonhosted.org/packages/dd/14/549fd7066a112c4bdf1cc11228d11284bc784ea09124fc4d663f28815564/scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1", size = 31357553 }, + { url = "https://files.pythonhosted.org/packages/69/1d/0582401b6d77865e080c90f39e52f65ca2bdc94e668e0bfbed8977dae3f4/scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563", size = 34789974 }, + { url = "https://files.pythonhosted.org/packages/f5/aa/8e6071a5e4dca4ec68b5b22e4991ee74c59c5d372112b9c236ec1faff57d/scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c", size = 38441046 }, + { url = "https://files.pythonhosted.org/packages/65/9e/43b86ec57ecdc9931b43aaf727f9d71743bfd06bdddfd441165bd3d8c6be/scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd", size = 38630107 }, + { url = "https://files.pythonhosted.org/packages/fd/a7/5f829b100d208c85163aecba93faf01d088d944fc91585338751d812f1e4/scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2", size = 46191228 }, + { url = "https://files.pythonhosted.org/packages/c3/32/7915195ca4643508fe9730691eaed57b879646279572b10b02bdadf165c5/scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08", size = 38908720 }, + { url = "https://files.pythonhosted.org/packages/21/d4/e6c57acc61e59cd46acca27af1f400094d5dee218e372cc604b8162b97cb/scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c", size = 31392892 }, + { url = "https://files.pythonhosted.org/packages/e3/c5/d40abc1a857c1c6519e1a4e096d6aee86861eddac019fb736b6af8a58d25/scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467", size = 34733860 }, + { url = "https://files.pythonhosted.org/packages/d4/b8/7169935f9a2ea9e274ad8c21d6133d492079e6ebc3fc69a915c2375616b0/scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a", size = 38418720 }, + { url = "https://files.pythonhosted.org/packages/64/e7/4dbb779d09d1cb757ddbe42cae7c4fe8270497566bb902138d637b04d88c/scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba", size = 38652247 }, + { url = "https://files.pythonhosted.org/packages/9a/25/5b30cb3efc9566f0ebeaeca1976150316353c17031ad7868ef46de5ab8dc/scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70", size = 46162940 }, + { url = "https://files.pythonhosted.org/packages/0d/4a/b2b2cae0c5dfd46361245a67102886ed7188805bdf7044e36fe838bbcf26/scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372", size = 38911995 }, + { url = "https://files.pythonhosted.org/packages/71/ba/744bbdd65eb3fce1412dd4633fc425ad39e6b4068b5b158aee1cd3afeb54/scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3", size = 31433326 }, + { url = "https://files.pythonhosted.org/packages/db/fd/81feac476e1ae495b51b8c3636aee1f50a1c5ca2a3557f5b0043d4e2fb02/scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc", size = 34165749 }, + { url = "https://files.pythonhosted.org/packages/11/7d/850bfe9462fff393130519eb54f97d43ad9c280ec4297b4cb98b7c2e96cd/scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c", size = 37790844 }, + { url = "https://files.pythonhosted.org/packages/7e/7f/504b7b3834d8c9229831c6c58a44943e29a34004eeb34c7ff150add4e001/scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338", size = 38026369 }, + { url = "https://files.pythonhosted.org/packages/f3/31/91a2a3c5eb85d2bfa86d7c98f2df5d77dcdefb3d80ca9f9037ad04393acf/scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c", size = 45816713 }, +] + +[[package]] +name = "scprint" +version = "1.1.3" +source = { editable = "." } +dependencies = [ + { name = "anndata" }, + { name = "attridict", version = "0.0.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "attridict", version = "0.0.9", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "bengrn" }, + { name = "bio" }, + { name = "biomart" }, + { name = "bionty" }, + { name = "cellxgene-census" }, + { name = "decoupler" }, + { name = "django" }, + { name = "docstring-parser" }, + { name = "einops" }, + { name = "fair-esm" }, + { name = "gget" }, + { name = "grnndata" }, + { name = "gseapy" }, + { name = "hdbscan" }, + { name = "huggingface-hub" }, + { name = "hydra-core" }, + { name = "ipykernel" }, + { name = "jsonargparse" }, + { name = "lamindb" }, + { name = "leidenalg" }, + { name = "lightning" }, + { name = "louvain" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "owlready2" }, + { name = "pandas" }, + { name = "pynndescent" }, + { name = "rich" }, + { name = "scdataloader" }, + { name = "scib" }, + { name = "scib-metrics" }, + { name = "scikit-learn" }, + { name = "scikit-misc" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tensorly" }, + { name = "torch" }, + { name = "torchaudio" }, + { name = "torchdata" }, + { name = "torchtext" }, + { name = "torchvision" }, + { name = "typeshed-client" }, + { name = "wandb" }, + { name = "wandb-core" }, + { name = "zarr" }, +] + +[package.metadata] +requires-dist = [ + { name = "anndata" }, + { name = "attridict" }, + { name = "bengrn" }, + { name = "bio" }, + { name = "biomart" }, + { name = "bionty", specifier = "==0.49.0" }, + { name = "cellxgene-census" }, + { name = "coverage", marker = "extra == 'dev'", specifier = ">=7.3.2,<8.0.0" }, + { name = "decoupler" }, + { name = "django" }, + { name = "docstring-parser" }, + { name = "einops" }, + { name = "fair-esm" }, + { name = "gget" }, + { name = "gitchangelog", marker = "extra == 'dev'", specifier = ">=3.0.4,<4.0.0" }, + { name = "grnndata" }, + { name = "gseapy" }, + { name = "hdbscan" }, + { name = "huggingface-hub" }, + { name = "hydra-core" }, + { name = "ipykernel" }, + { name = "jsonargparse" }, + { name = "lamindb", specifier = "==0.76.3" }, + { name = "leidenalg" }, + { name = "lightning" }, + { name = "louvain" }, + { name = "matplotlib" }, + { name = "mkdocs", marker = "extra == 'dev'", specifier = ">=1.5.3,<2.0.0" }, + { name = "numpy" }, + { name = "owlready2" }, + { name = "pandas", specifier = ">=2.0.0" }, + { name = "pynndescent", specifier = ">=0.5.11" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.3,<8.0.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0,<5.0.0" }, + { name = "pytorch-fast-transformers", marker = "extra == 'flash'" }, + { name = "rich" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.6.4,<0.7.0" }, + { name = "scdataloader" }, + { name = "scib" }, + { name = "scib-metrics" }, + { name = "scikit-learn" }, + { name = "scikit-misc" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tensorly" }, + { name = "torch", specifier = "==2.2.0" }, + { name = "torchaudio" }, + { name = "torchdata" }, + { name = "torchtext" }, + { name = "torchvision" }, + { name = "triton", marker = "extra == 'flash'", specifier = "==2.2.0" }, + { name = "typeshed-client" }, + { name = "wandb" }, + { name = "wandb-core" }, + { name = "zarr" }, +] + +[[package]] +name = "seaborn" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914 }, +] + +[[package]] +name = "sentry-sdk" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/23/6527e56fb17817153c37d702d6b9ed0a2f75ed213fd98a176c1b8894ad20/sentry_sdk-2.14.0.tar.gz", hash = "sha256:1e0e2eaf6dad918c7d1e0edac868a7bf20017b177f242cefe2a6bcd47955961d", size = 282948 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/de/956ce1d71459fa1af0486ca141fc605ac16f7c8855750668ff663e2b436a/sentry_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:b8bc3dc51d06590df1291b7519b85c75e2ced4f28d9ea655b6d54033503b5bf4", size = 311425 }, +] + +[[package]] +name = "session-info" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "stdlib-list" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/e4/ea615bb8185a298b21df1ac52a4a5db4e3351823a218f47ef3f883def88c/session_info-1.0.0.tar.gz", hash = "sha256:3cda5e03cca703f32ae2eadbd6bd80b6c21442cfb60e412c21cb8ad6d5cbb6b7", size = 24345 } + +[[package]] +name = "setproctitle" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/e1/b16b16a1aa12174349d15b73fd4b87e641a8ae3fb1163e80938dbbf6ae98/setproctitle-1.3.3.tar.gz", hash = "sha256:c913e151e7ea01567837ff037a23ca8740192880198b7fbb90b16d181607caae", size = 27253 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/cc/c51e6371f640a9adbe693ddb89d68596e5a8e4b5e05b4d3c65ec504e2f6d/setproctitle-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:897a73208da48db41e687225f355ce993167079eda1260ba5e13c4e53be7f754", size = 16954 }, + { url = "https://files.pythonhosted.org/packages/c3/7d/d03f319e0f3b3a6e98731a56cd4d81478ed0c12531b822fd2c728b948edb/setproctitle-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c331e91a14ba4076f88c29c777ad6b58639530ed5b24b5564b5ed2fd7a95452", size = 11304 }, + { url = "https://files.pythonhosted.org/packages/9c/56/6f4a4e80b2810eb7ea9ab355022c780ef80457de368ab5b6b21b795e4f05/setproctitle-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbbd6c7de0771c84b4aa30e70b409565eb1fc13627a723ca6be774ed6b9d9fa3", size = 31249 }, + { url = "https://files.pythonhosted.org/packages/d0/ae/010811bece9a59a8bba131d9e7acea9c2e3c3cbf544bf06d8b10b8c28ff5/setproctitle-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c05ac48ef16ee013b8a326c63e4610e2430dbec037ec5c5b58fcced550382b74", size = 32594 }, + { url = "https://files.pythonhosted.org/packages/87/7b/69bdc791001250dff279a1a81904f3f563caece4fa1607a95b9fd5197d6e/setproctitle-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1342f4fdb37f89d3e3c1c0a59d6ddbedbde838fff5c51178a7982993d238fe4f", size = 29713 }, + { url = "https://files.pythonhosted.org/packages/79/e7/54b36be02aee8ad573be68f6f46fd62838735c2f007b22df50eb5e13a20d/setproctitle-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc74e84fdfa96821580fb5e9c0b0777c1c4779434ce16d3d62a9c4d8c710df39", size = 30755 }, + { url = "https://files.pythonhosted.org/packages/69/a7/2a77b68c11db87c22350381d6ce022011eb420076790e0e3697153e89458/setproctitle-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9617b676b95adb412bb69645d5b077d664b6882bb0d37bfdafbbb1b999568d85", size = 38562 }, + { url = "https://files.pythonhosted.org/packages/9d/09/bc108723bbfb7c50c22fdf22191f3e32abcb5d6f46610018030b25f601c5/setproctitle-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6a249415f5bb88b5e9e8c4db47f609e0bf0e20a75e8d744ea787f3092ba1f2d0", size = 36991 }, + { url = "https://files.pythonhosted.org/packages/94/ad/4166381d79f6ae8138be9b49f05d193a8deb748debace9896dffad45a753/setproctitle-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:38da436a0aaace9add67b999eb6abe4b84397edf4a78ec28f264e5b4c9d53cd5", size = 39866 }, + { url = "https://files.pythonhosted.org/packages/3d/92/17168f4bb1a695094e93e73a1ef1f7b89953a6d91e8a7699a2c840ba712f/setproctitle-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da0d57edd4c95bf221b2ebbaa061e65b1788f1544977288bdf95831b6e44e44d", size = 38221 }, + { url = "https://files.pythonhosted.org/packages/0c/1b/753432a877bcdfb099e280795c86ac7dc245d9651b98308f606bb3db610d/setproctitle-1.3.3-cp310-cp310-win32.whl", hash = "sha256:a1fcac43918b836ace25f69b1dca8c9395253ad8152b625064415b1d2f9be4fb", size = 11064 }, + { url = "https://files.pythonhosted.org/packages/29/ff/80a02c5b414c2d3ff49c36c0a571a94aa3b4236f07eee39f72ebdb7314a0/setproctitle-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:200620c3b15388d7f3f97e0ae26599c0c378fdf07ae9ac5a13616e933cbd2086", size = 11815 }, + { url = "https://files.pythonhosted.org/packages/c9/17/7f9d5ddf4cfc4386e74565ccf63b8381396336e4629bb165b52b803ceddb/setproctitle-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:334f7ed39895d692f753a443102dd5fed180c571eb6a48b2a5b7f5b3564908c8", size = 16948 }, + { url = "https://files.pythonhosted.org/packages/ff/5d/77edf4c29c8d6728b49d3f0abb22159bb9c0c4ddebd721c09486b34985c8/setproctitle-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:950f6476d56ff7817a8fed4ab207727fc5260af83481b2a4b125f32844df513a", size = 11305 }, + { url = "https://files.pythonhosted.org/packages/13/f0/263954ca925a278036f100405e7ba82d4341e1e6bdc09f35362a7b40f684/setproctitle-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:195c961f54a09eb2acabbfc90c413955cf16c6e2f8caa2adbf2237d1019c7dd8", size = 31578 }, + { url = "https://files.pythonhosted.org/packages/79/52/503b546da451deb78fde27fec96c39d3f63a7958be60c9a837de89f47a0d/setproctitle-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f05e66746bf9fe6a3397ec246fe481096664a9c97eb3fea6004735a4daf867fd", size = 32910 }, + { url = "https://files.pythonhosted.org/packages/48/72/aeb734419a58a85ca7845c3d0011c322597da4ff601ebbc28f6c1dfd1ae8/setproctitle-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5901a31012a40ec913265b64e48c2a4059278d9f4e6be628441482dd13fb8b5", size = 30086 }, + { url = "https://files.pythonhosted.org/packages/fd/df/44b267cb8f073a4ae77e120f0705ab3a07165ad90cecd4881b34c7e1e37b/setproctitle-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64286f8a995f2cd934082b398fc63fca7d5ffe31f0e27e75b3ca6b4efda4e353", size = 31076 }, + { url = "https://files.pythonhosted.org/packages/82/c2/79ad43c914418cb1920e0198ac7326061c05cd4ec75c86ed0ca456b7e957/setproctitle-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:184239903bbc6b813b1a8fc86394dc6ca7d20e2ebe6f69f716bec301e4b0199d", size = 41226 }, + { url = "https://files.pythonhosted.org/packages/81/1b/0498c36a07a73d39a7070f45d96a299006e624efc07fc2e2296286237316/setproctitle-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:664698ae0013f986118064b6676d7dcd28fefd0d7d5a5ae9497cbc10cba48fa5", size = 39723 }, + { url = "https://files.pythonhosted.org/packages/3a/fe/ebbcffd6012b9cf5edb017a9c30cfc2beccf707f5bf495da8cf69b4abe69/setproctitle-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e5119a211c2e98ff18b9908ba62a3bd0e3fabb02a29277a7232a6fb4b2560aa0", size = 42773 }, + { url = "https://files.pythonhosted.org/packages/64/b1/5786c0442435eb18d04299c8ce7d1f86feb5154444ac684963527a76e169/setproctitle-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:417de6b2e214e837827067048f61841f5d7fc27926f2e43954567094051aff18", size = 41089 }, + { url = "https://files.pythonhosted.org/packages/33/fb/14b41e920406a12de0a164ef3b86d62edb4fac63d91d9f86f3b80dae5b38/setproctitle-1.3.3-cp311-cp311-win32.whl", hash = "sha256:6a143b31d758296dc2f440175f6c8e0b5301ced3b0f477b84ca43cdcf7f2f476", size = 11066 }, + { url = "https://files.pythonhosted.org/packages/7e/ba/f6da9ba74e8c2c662e932b27a01025c1bee2846222f6a2e87a69c259772f/setproctitle-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a680d62c399fa4b44899094027ec9a1bdaf6f31c650e44183b50d4c4d0ccc085", size = 11817 }, + { url = "https://files.pythonhosted.org/packages/32/22/9672612b194e4ac5d9fb67922ad9d30232b4b66129b0381ab5efeb6ae88f/setproctitle-1.3.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d4460795a8a7a391e3567b902ec5bdf6c60a47d791c3b1d27080fc203d11c9dc", size = 16917 }, + { url = "https://files.pythonhosted.org/packages/49/e5/562ff00f2f3f4253ff8fa6886e0432b8eae8cde82530ac19843d8ed2c485/setproctitle-1.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bdfd7254745bb737ca1384dee57e6523651892f0ea2a7344490e9caefcc35e64", size = 11264 }, + { url = "https://files.pythonhosted.org/packages/8f/1f/f97ea7bf71c873590a63d62ba20bf7294439d1c28603e5c63e3616c2131a/setproctitle-1.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477d3da48e216d7fc04bddab67b0dcde633e19f484a146fd2a34bb0e9dbb4a1e", size = 31907 }, + { url = "https://files.pythonhosted.org/packages/66/fb/2d90806b9a2ed97c140baade3d1d2d41d3b51458300a2d999268be24d21d/setproctitle-1.3.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ab2900d111e93aff5df9fddc64cf51ca4ef2c9f98702ce26524f1acc5a786ae7", size = 33333 }, + { url = "https://files.pythonhosted.org/packages/38/39/e7ce791f5635f3a16bd21d6b79bd9280c4c4aed8ab936b4b21334acf05a7/setproctitle-1.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088b9efc62d5aa5d6edf6cba1cf0c81f4488b5ce1c0342a8b67ae39d64001120", size = 30573 }, + { url = "https://files.pythonhosted.org/packages/20/22/fd76bbde4194d4e31d5b31a02f80c8e7e54a99d3d8ff34f3d656c6655689/setproctitle-1.3.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6d50252377db62d6a0bb82cc898089916457f2db2041e1d03ce7fadd4a07381", size = 31601 }, + { url = "https://files.pythonhosted.org/packages/51/5c/a6257cc68e17abcc4d4a78cc6666aa0d3805af6d942576625c4a468a72f0/setproctitle-1.3.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:87e668f9561fd3a457ba189edfc9e37709261287b52293c115ae3487a24b92f6", size = 40717 }, + { url = "https://files.pythonhosted.org/packages/db/31/4f0faad7ef641be4e8dfcbc40829775f2d6a4ca1ff435a4074047fa3dad1/setproctitle-1.3.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:287490eb90e7a0ddd22e74c89a92cc922389daa95babc833c08cf80c84c4df0a", size = 39384 }, + { url = "https://files.pythonhosted.org/packages/22/17/8763dc4f9ddf36af5f043ceec213b0f9f45f09fd2d5061a89c699aabe8b0/setproctitle-1.3.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe1c49486109f72d502f8be569972e27f385fe632bd8895f4730df3c87d5ac8", size = 42350 }, + { url = "https://files.pythonhosted.org/packages/7b/b2/2403cecf2e5c5b4da22f7d9df4b2149bf92d03a3422185e682e81055549c/setproctitle-1.3.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a6ba2494a6449b1f477bd3e67935c2b7b0274f2f6dcd0f7c6aceae10c6c6ba3", size = 40704 }, + { url = "https://files.pythonhosted.org/packages/5e/c1/11e80061ac06aece2a0ffcaf018cdc088aebb2fc586f68201755518532ad/setproctitle-1.3.3-cp312-cp312-win32.whl", hash = "sha256:2df2b67e4b1d7498632e18c56722851ba4db5d6a0c91aaf0fd395111e51cdcf4", size = 11057 }, + { url = "https://files.pythonhosted.org/packages/90/e8/ece468e93e99d3b2826e9649f6d03e80f071d451e20c742f201f77d1bea1/setproctitle-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:f38d48abc121263f3b62943f84cbaede05749047e428409c2c199664feb6abc7", size = 11809 }, + { url = "https://files.pythonhosted.org/packages/24/55/8b369b56007a5a2c7594cdb58cd4a09d7cca65b28483bb5582c6975663f1/setproctitle-1.3.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6b9e62ddb3db4b5205c0321dd69a406d8af9ee1693529d144e86bd43bcb4b6c0", size = 10726 }, + { url = "https://files.pythonhosted.org/packages/35/30/ac99ecae8458ba995f85aa3aa911004679b405922e1487b0fba6fe8f4d37/setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e3b99b338598de0bd6b2643bf8c343cf5ff70db3627af3ca427a5e1a1a90dd9", size = 13368 }, + { url = "https://files.pythonhosted.org/packages/70/1d/3b2249c833c7d52b59ff0602d760df0543dc1e6c272f145b949750edeb01/setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ae9a02766dad331deb06855fb7a6ca15daea333b3967e214de12cfae8f0ef5", size = 12969 }, + { url = "https://files.pythonhosted.org/packages/76/78/97f36752438cb5c6409b53eb3b1a334827cede43acab65e4fc4a0014cf9f/setproctitle-1.3.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:200ede6fd11233085ba9b764eb055a2a191fb4ffb950c68675ac53c874c22e20", size = 11848 }, +] + +[[package]] +name = "setuptools" +version = "74.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/2c/f0a538a2f91ce633a78daaeb34cbfb93a54bd2132a6de1f6cec028eee6ef/setuptools-74.1.2.tar.gz", hash = "sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6", size = 1356467 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/9c/9ad11ac06b97e55ada655f8a6bea9d1d3f06e120b178cd578d80e558191d/setuptools-74.1.2-py3-none-any.whl", hash = "sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308", size = 1262071 }, +] + +[[package]] +name = "six" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, +] + +[[package]] +name = "sklearn" +version = "0.0.post12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/1c/395a83ee7b2d2ad7a05b453872053d41449564477c81dc356f720b16eac4/sklearn-0.0.post12.tar.gz", hash = "sha256:54cff9e20839b7b202321178228af4d9388bedf78425d9299fd9ee170d68802e", size = 2578 } + +[[package]] +name = "smmap" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/04/b5bf6d21dc4041000ccba7eb17dd3055feb237e7ffc2c20d3fae3af62baa/smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62", size = 22291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/10f97f73544edcdef54409f1d839f6049a0d79df68adbc1ceb24d1aaca42/smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da", size = 24282 }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, +] + +[[package]] +name = "somacore" +version = "1.0.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "attrs" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pyarrow-hotfix" }, + { name = "scipy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/7d/23e6092b58ce373cbbe6a738c4eec29bc10382264fa03a530544eaedee29/somacore-1.0.13.tar.gz", hash = "sha256:da71943e9991b66f9a4d3279affb67d6e20f79710b9baf04b768e9b4a424c909", size = 29258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/63/00812e45e9dfc1b13973f70fb984f0336af2d04489e16a518b6054ab24c1/somacore-1.0.13-py3-none-any.whl", hash = "sha256:a46dcdc38fe642912802ca99c4afb05b803365d31c9edc3f84336e0f12336e8f", size = 35951 }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, +] + +[[package]] +name = "soupsieve" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, +] + +[[package]] +name = "sqlparse" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/82/dfa23ec2cbed08a801deab02fe7c904bfb00765256b155941d789a338c68/sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e", size = 84502 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156 }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, +] + +[[package]] +name = "statsmodels" +version = "0.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "patsy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/a3/4a7a240e9bc9e146fbd9f0c410ecac328a899ca0c4467c72d9b8aa1e4015/statsmodels-0.14.2.tar.gz", hash = "sha256:890550147ad3a81cda24f0ba1a5c4021adc1601080bd00e191ae7cd6feecd6ad", size = 20352531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/49/a62b5f00d49d78bec0e2bd90c89718f0d376ab6fa868e2d4aa6a7a055cae/statsmodels-0.14.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df5d6f95c46f0341da6c79ee7617e025bf2b371e190a8e60af1ae9cabbdb7a97", size = 10447008 }, + { url = "https://files.pythonhosted.org/packages/13/90/12e9e6bc54a72d305749948ed9e94010ed044c814d2bb333612778a16818/statsmodels-0.14.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a87ef21fadb445b650f327340dde703f13aec1540f3d497afb66324499dea97a", size = 10102968 }, + { url = "https://files.pythonhosted.org/packages/b0/ca/828c82dc0252b048f994d6a7a2fcf8380d976978056b2c31f0e045582128/statsmodels-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5827a12e3ede2b98a784476d61d6bec43011fedb64aa815f2098e0573bece257", size = 10439289 }, + { url = "https://files.pythonhosted.org/packages/9f/06/2f1d2ba024c802e812fe9e85eebc06871d76f1f4e0bb2beb0faa22cbe330/statsmodels-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f2b7611a61adb7d596a6d239abdf1a4d5492b931b00d5ed23d32844d40e48e", size = 10777478 }, + { url = "https://files.pythonhosted.org/packages/55/46/531a3d175278cb2b2dcdae85fddb2facb59a05051c92dc6e61e425890a6c/statsmodels-0.14.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c254c66142f1167b4c7d031cf8db55294cc62ff3280e090fc45bd10a7f5fd029", size = 10882244 }, + { url = "https://files.pythonhosted.org/packages/92/97/9864056a980513d7be53cf98f0fc476501b70bae4a1321bf46b0668f9c0c/statsmodels-0.14.2-cp310-cp310-win_amd64.whl", hash = "sha256:0e46e9d59293c1af4cc1f4e5248f17e7e7bc596bfce44d327c789ac27f09111b", size = 9849706 }, + { url = "https://files.pythonhosted.org/packages/08/70/7c79a485086f0dac0dfbda0212e8c868f0e1136e1d78721d643885d40674/statsmodels-0.14.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:50fcb633987779e795142f51ba49fb27648d46e8a1382b32ebe8e503aaabaa9e", size = 10443533 }, + { url = "https://files.pythonhosted.org/packages/fb/b1/b16836310f6ca89ddfb30fe65f8851c1a8d63152190ed740a236eca15012/statsmodels-0.14.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:876794068abfaeed41df71b7887000031ecf44fbfa6b50d53ccb12ebb4ab747a", size = 10100745 }, + { url = "https://files.pythonhosted.org/packages/13/18/5730de2cbc604afcf713e984179221c797e0cc12cd62368e4966af926caa/statsmodels-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a91f6c4943de13e3ce2e20ee3b5d26d02bd42300616a421becd53756f5deb37", size = 10415337 }, + { url = "https://files.pythonhosted.org/packages/7f/0a/28b3b3c807a518b7d0ed0ae45bfdd6be23b38a0c60790f90ce1f8383a640/statsmodels-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4864a1c4615c5ea5f2e3b078a75bdedc90dd9da210a37e0738e064b419eccee2", size = 10728568 }, + { url = "https://files.pythonhosted.org/packages/be/de/2bb965f47c07a22afb93f68542e5a04d39b718dbb43444e2fe7344718864/statsmodels-0.14.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afbd92410e0df06f3d8c4e7c0e2e71f63f4969531f280fb66059e2ecdb6e0415", size = 10869438 }, + { url = "https://files.pythonhosted.org/packages/d5/7e/61ec96b208af273126a211a9aa1c9dfefb216725192973fc52a858ac9219/statsmodels-0.14.2-cp311-cp311-win_amd64.whl", hash = "sha256:8e004cfad0e46ce73fe3f3812010c746f0d4cfd48e307b45c14e9e360f3d2510", size = 9853196 }, + { url = "https://files.pythonhosted.org/packages/34/97/a4acebeb223fa827bbb16aece2b93d91bf42f88bed39d93afa96b13bce54/statsmodels-0.14.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb0ba1ad3627705f5ae20af6b2982f500546d43892543b36c7bca3e2f87105e7", size = 10396398 }, + { url = "https://files.pythonhosted.org/packages/e7/fd/d282f6a0a55c5903dd66c2116589d1973a352739653382c39d70dcfd0fbc/statsmodels-0.14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:90fd2f0110b73fc3fa5a2f21c3ca99b0e22285cccf38e56b5b8fd8ce28791b0f", size = 10094238 }, + { url = "https://files.pythonhosted.org/packages/a5/80/1b7669f6af12697316888786c97fc1405e085fc6cb0396ce5a7d2d6c8adb/statsmodels-0.14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac780ad9ff552773798829a0b9c46820b0faa10e6454891f5e49a845123758ab", size = 10300515 }, + { url = "https://files.pythonhosted.org/packages/08/24/00c0c8dda62ea9ba93b8538f8e2760ca65d6bf92e8c20ac6edb04602a752/statsmodels-0.14.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55d1742778400ae67acb04b50a2c7f5804182f8a874bd09ca397d69ed159a751", size = 10712980 }, + { url = "https://files.pythonhosted.org/packages/65/fc/4cfc2546f36c41e1d7a684b5401ed51d4f86fbd3976eafefd8e785c36658/statsmodels-0.14.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f870d14a587ea58a3b596aa994c2ed889cc051f9e450e887d2c83656fc6a64bf", size = 10793220 }, + { url = "https://files.pythonhosted.org/packages/bf/53/1e7077d1bf324c1b1055dedb72e1410d089e459a86940e25b28f545f776e/statsmodels-0.14.2-cp312-cp312-win_amd64.whl", hash = "sha256:f450fcbae214aae66bd9d2b9af48e0f8ba1cb0e8596c6ebb34e6e3f0fec6542c", size = 9825600 }, +] + +[[package]] +name = "stdlib-list" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/bb/1cdbc326a5ab0026602e0489cbf02357e78140253c4b57cd866d380eb355/stdlib_list-0.10.0.tar.gz", hash = "sha256:6519c50d645513ed287657bfe856d527f277331540691ddeaf77b25459964a14", size = 59447 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/d9/9085375f0d23a4896b307bf14dcc61b49ec8cc67cb33e06cf95bf3af3966/stdlib_list-0.10.0-py3-none-any.whl", hash = "sha256:b3a911bc441d03e0332dd1a9e7d0870ba3bb0a542a74d7524f54fb431256e214", size = 79814 }, +] + +[[package]] +name = "storage3" +version = "0.7.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", extra = ["http2"] }, + { name = "python-dateutil" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/7e/c644337cc0147e1784c34258a518823d505c008282c82305edcbb7ccc600/storage3-0.7.7.tar.gz", hash = "sha256:9fba680cf761d139ad764f43f0e91c245d1ce1af2cc3afe716652f835f48f83e", size = 9282 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/fa/92bd5459ca82d3c24def4f2a72f07f401c4e95de4d44840e2671bed3f052/storage3-0.7.7-py3-none-any.whl", hash = "sha256:ed80a2546cd0b5c22e2c30ea71096db6c99268daf2958c603488e7d72efb8426", size = 16057 }, +] + +[[package]] +name = "strenum" +version = "0.4.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/ad/430fb60d90e1d112a62ff57bdd1f286ec73a2a0331272febfddd21f330e1/StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff", size = 23384 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/69/297302c5f5f59c862faa31e6cb9a4cd74721cd1e052b38e464c5b402df8b/StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659", size = 8851 }, +] + +[[package]] +name = "supabase" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gotrue" }, + { name = "httpx" }, + { name = "postgrest" }, + { name = "realtime" }, + { name = "storage3" }, + { name = "supafunc" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/5d/281038809cd3a88af11b661e5f49342e1517f2efdefaead1d01b93f7c078/supabase-2.2.1.tar.gz", hash = "sha256:d724c16245b92b0faef5c467dafbb81e561f6b44c56195a076666da1bd327317", size = 13242 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/93/54929029375ee343205bbf3532d8c2047e521cae7d92e89efe78198f5ab9/supabase-2.2.1-py3-none-any.whl", hash = "sha256:ce5a5773e47b009714dad645b5d417cc9759725f807e549f08a65e513cee17d3", size = 15739 }, +] + +[[package]] +name = "supafunc" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/43/0db8ccf7d44c8db26ce74537f76f462571685f3bd4946cccf16c1be27c6d/supafunc-0.3.3.tar.gz", hash = "sha256:c35897a2f40465b40d7a08ae11f872f08eb8d1390c3ebc72c80e27d33ba91b99", size = 3923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/5f/efb275d649845e6fe3a65c08e8c1e424d56dbc14016b89dca83055ec656e/supafunc-0.3.3-py3-none-any.whl", hash = "sha256:8260b4742335932f9cab64c8f66fb6998681b7e8ca7a46b559a4eb640cc0af80", size = 6098 }, +] + +[[package]] +name = "sympy" +version = "1.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/15/4a041424c7187f41cce678f5a02189b244e9aac61a18b45cd415a3a470f3/sympy-1.13.2.tar.gz", hash = "sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13", size = 7532926 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/f9/6845bf8fca0eaf847da21c5d5bc6cd92797364662824a11d3f836423a1a5/sympy-1.13.2-py3-none-any.whl", hash = "sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9", size = 6189289 }, +] + +[[package]] +name = "tblib" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/df/4f2cd7eaa6d41a7994d46527349569d46e34d9cdd07590b5c5b0dcf53de3/tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6", size = 30616 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/87/ce70db7cae60e67851eb94e1a2127d4abb573d3866d2efd302ceb0d4d2a5/tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", size = 12478 }, +] + +[[package]] +name = "tensorly" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/7f/813ac904fc85733a93a9703aea5fe320f0573855cf0eb092531c6b0a8a88/tensorly-0.8.1.tar.gz", hash = "sha256:cf78e4ffe612feca3510214002845c6831b267b1f2c1181154d41430310b237d", size = 171251 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/6c/b07811af60b429d29ff1aab7a8d7b845f24e27462c7455c3df734007dd67/tensorly-0.8.1-py3-none-any.whl", hash = "sha256:08988dbc5e433c3f255d0e00855f99a613fe273d50a1627b7e82b03ff2a6da9a", size = 229666 }, +] + +[[package]] +name = "texttable" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/dc/0aff23d6036a4d3bf4f1d8c8204c5c79c4437e25e0ae94ffe4bbb55ee3c2/texttable-1.7.0.tar.gz", hash = "sha256:2d2068fb55115807d3ac77a4ca68fa48803e84ebb0ee2340f858107a36522638", size = 12831 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl", hash = "sha256:72227d592c82b3d7f672731ae73e4d1f88cd8e2ef5b075a7a7f01a23a3743917", size = 10768 }, +] + +[[package]] +name = "threadpoolctl" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/55/b5148dcbf72f5cde221f8bfe3b6a540da7aa1842f6b491ad979a6c8b84af/threadpoolctl-3.5.0.tar.gz", hash = "sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107", size = 41936 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/2c/ffbf7a134b9ab11a67b0cf0726453cedd9c5043a4fe7a35d1cefa9a1bcfb/threadpoolctl-3.5.0-py3-none-any.whl", hash = "sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467", size = 18414 }, +] + +[[package]] +name = "tiledb" +version = "0.31.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1e/ce/2798308c08e936e414068a34b8b57e529b03552ba044028dfaf9e41de0d1/tiledb-0.31.1.tar.gz", hash = "sha256:7b9ddd32c4c7437111764645d8a042d603102a813c8b89addaf9a15bd40dd939", size = 365917 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/ed/ae52f82f4bff7105df48760bdcc6b1a63e45c07e5d4b04390b0e87a36802/tiledb-0.31.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:816b715893f657876ac67490ea300e233febcf6cc2b71743339d1930700b7bfa", size = 11738901 }, + { url = "https://files.pythonhosted.org/packages/1b/92/fad04cbc4ec79a225a0937a018e00f3c784119b422a904adf125b089c046/tiledb-0.31.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6a5b6730f2476fdd5dd958648aee43b6d3fddcd755f25a293210327bf354eb24", size = 13008760 }, + { url = "https://files.pythonhosted.org/packages/0c/26/5184b380f8c5ce7dd191788f7e92405ec2f1d7ae9598e3bb3a4a59a64d69/tiledb-0.31.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298b5ec9a71fef2be96895fdbceec42310a3679c44b4e149d409e2c1f7ef26c7", size = 15854485 }, + { url = "https://files.pythonhosted.org/packages/9e/69/b5e95869a0974dd4b5f3422a8abc4a43a36b6c96579a1ffd83c3b1af3f99/tiledb-0.31.1-cp310-cp310-win_amd64.whl", hash = "sha256:7a7b0741f3765097db43d5f69a62b13eea7f664237b6aedb7f37abd140bb7188", size = 8538870 }, + { url = "https://files.pythonhosted.org/packages/8d/b4/3acdb17cdf4338137964eee150688da74da17830f01df69579116f2df841/tiledb-0.31.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe1f321bd4ab0bbb9e3c216e1ae26c5dad7b62307f568dabe93dade25714d8a4", size = 11742197 }, + { url = "https://files.pythonhosted.org/packages/43/6b/41cee0cf4cded67170471cba117bcee04ff0cce5498106cffb26e2efaa9b/tiledb-0.31.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:061adc8c5734ab21634ea88a2e59b7e25ce256913fd2e4a9745ba4015c2af09d", size = 13013009 }, + { url = "https://files.pythonhosted.org/packages/80/d8/d27ccf395d2a0934d44f0ed424399a6b7239d2b90cf622a144892251d049/tiledb-0.31.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dbf5429d6c2dba29de3844c8096c92f14e961c39305b2a854f13b2ed926e57c", size = 15840936 }, + { url = "https://files.pythonhosted.org/packages/ad/84/63e9fa0525894572a80c20954b729f9a905d7663cb31a67e331bd1bb4b29/tiledb-0.31.1-cp311-cp311-win_amd64.whl", hash = "sha256:cc263960a1497915fcd1ea7a206656cde4445754e81017b64ebc2db310fa1890", size = 8544353 }, + { url = "https://files.pythonhosted.org/packages/68/b0/0e6261001b8777687fdc763c55c5c40cbd593864ca9a1daa11f414d9694c/tiledb-0.31.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e9a5f0a692a5282f95861378645fb9ca3823e1e6e3271e694165ce41e3fdf53", size = 11746151 }, + { url = "https://files.pythonhosted.org/packages/87/02/065e5ad7058b10d38f3f943b9f9f3ccfdbb2da82b1e8b095a9ff1b9bd000/tiledb-0.31.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:77a8e8b29b2ed5c3bc1128c0018791c9e46fcd3ca8f1f73b0795d709e287ab8c", size = 13031209 }, + { url = "https://files.pythonhosted.org/packages/31/66/d1221fecd95ca66a75e3caf217a01141b16c317f170fd583265f603abc30/tiledb-0.31.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cf1fffad7e660e97499ed3dbf4b82e59c5ed827735ec04ee70cb2415cd862d8", size = 15807289 }, + { url = "https://files.pythonhosted.org/packages/a9/4b/a31396a65b672a2276d2a6ae7348852b5686673205e6768a418ea0eee1f1/tiledb-0.31.1-cp312-cp312-win_amd64.whl", hash = "sha256:630a3b9a1bb8c03643820af437e4fc0c7438d6bcccc61b71cba9b25c648c3ea2", size = 8535574 }, +] + +[[package]] +name = "tiledbsoma" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anndata" }, + { name = "attrs" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pyarrow-hotfix" }, + { name = "scanpy" }, + { name = "scipy" }, + { name = "somacore" }, + { name = "tiledb" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/0d/29334ea331ad4b2aa370f72391de72977bc98d789238b7cd37af19a33d1d/tiledbsoma-1.13.1.tar.gz", hash = "sha256:14db76fb643e22c267645b7d9cf59a4495d6b9372da543a9322c341bcd142da0", size = 430124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/78/56f0871a3d85f5415a1edb9324f6b10e1f7cf2fe6ccef35d9d8549cd60db/tiledbsoma-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:38d92ac3f6c7542944a43c9ebc163dcc1ab1f12ade45c7251cff2bfd8620c7c8", size = 22090742 }, + { url = "https://files.pythonhosted.org/packages/45/9e/e3f22238f00b74c6fa4498709dc0e0029589fad0e8e41a267641693b53e1/tiledbsoma-1.13.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:44e54e9037c507097d4951179e24226a39e4fcd0c5250ee0362bb5c27f905866", size = 24861196 }, + { url = "https://files.pythonhosted.org/packages/dc/ec/995a641df9e34232d9cb242c4319a77d26f47c25639746b3f6fe5316c931/tiledbsoma-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a6818ad9346c44a02b197e9da4619847ef4c985a09ce33afff4e49b3a2589d", size = 16285933 }, + { url = "https://files.pythonhosted.org/packages/76/13/48c2314a6458102a84eb2faf33e96677e0a3022dd18965cb960f8ff4db6c/tiledbsoma-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f4a6d4b1977f1013494a7653249fb322f489e2a9808696d71e03f073af0184c2", size = 22092428 }, + { url = "https://files.pythonhosted.org/packages/80/19/b3e03a19fc2e46dfa3d7627722ae68dc4c931bf50866d122ee9df6c5e5bc/tiledbsoma-1.13.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:d34428cff5155499950646dcb48e770dda0344302154cdd5b7850baae4096c01", size = 24862642 }, + { url = "https://files.pythonhosted.org/packages/88/83/90c7fcaae7dc4c66d493aee6b901ef202336928a86d5799355be2e72ccef/tiledbsoma-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c04c2cc4c347268c1fde7b08cc311d78eba34aa7f8f7a85b3a4d223b4c95cada", size = 16290998 }, +] + +[[package]] +name = "toolz" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/bf/5e12db234df984f6df3c7f12f1428aa680ba4e101f63f4b8b3f9e8d2e617/toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d", size = 66550 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/8a/d82202c9f89eab30f9fc05380daae87d617e2ad11571ab23d7c13a29bb54/toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85", size = 56121 }, +] + +[[package]] +name = "torch" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "sympy" }, + { name = "triton", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/67/fcc9b9e2369a9bae4da492aedc0c2dfa95d563ef0eaa9228b70c98395ec2/torch-2.2.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d366158d6503a3447e67f8c0ad1328d54e6c181d88572d688a625fac61b13a97", size = 755505538 }, + { url = "https://files.pythonhosted.org/packages/2a/2a/b6064e03a71d2dc4936975c667703f333ce663977ce489b50090daee332f/torch-2.2.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:707f2f80402981e9f90d0038d7d481678586251e6642a7a6ef67fc93511cb446", size = 86592741 }, + { url = "https://files.pythonhosted.org/packages/c8/ed/f11e9eb1e21d7ea8fc82a9fd373f9ff2023a7ee9e47d07c9bc9efce46eca/torch-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:15c8f0a105c66b28496092fca1520346082e734095f8eaf47b5786bac24b8a31", size = 198565666 }, + { url = "https://files.pythonhosted.org/packages/e7/0a/e42e6012b710e49bc56b4e6ce501fa39baa46fd978de014244aae108e6e1/torch-2.2.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:0ca4df4b728515ad009b79f5107b00bcb2c63dc202d991412b9eb3b6a4f24349", size = 150796203 }, + { url = "https://files.pythonhosted.org/packages/6c/b6/18f8b358cab98a048b07cc049e1692231656fe2572443f2b4f56e75a8151/torch-2.2.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:3d3eea2d5969b9a1c9401429ca79efc668120314d443d3463edc3289d7f003c7", size = 59699382 }, + { url = "https://files.pythonhosted.org/packages/c8/02/d3adf4b4851d99a31c5a9cf7b668f171e84334945d05fb7b51c42bf41abf/torch-2.2.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:0d1c580e379c0d48f0f0a08ea28d8e373295aa254de4f9ad0631f9ed8bc04c24", size = 755522292 }, + { url = "https://files.pythonhosted.org/packages/4f/a7/098bdc65e141b29f571989c4561cbc7fe7c78c9a12dbe61cba540ca1d5ef/torch-2.2.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9328e3c1ce628a281d2707526b4d1080eae7c4afab4f81cea75bde1f9441dc78", size = 86610755 }, + { url = "https://files.pythonhosted.org/packages/58/b8/51b956c2da9729390a3080397cd2f31171394543af7746681466e372f69a/torch-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:03c8e660907ac1b8ee07f6d929c4e15cd95be2fb764368799cca02c725a212b8", size = 198571687 }, + { url = "https://files.pythonhosted.org/packages/c7/4e/578c4e3c7ac486cddcce3e85e4704a474854835baea4eba8bc707d4a0823/torch-2.2.0-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:da0cefe7f84ece3e3b56c11c773b59d1cb2c0fd83ddf6b5f7f1fd1a987b15c3e", size = 150571355 }, + { url = "https://files.pythonhosted.org/packages/96/4e/970cd3e13ad95aed81102272f0678d8cc48101880b8be5bae8aad22e7f3b/torch-2.2.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:f81d23227034221a4a4ff8ef24cc6cec7901edd98d9e64e32822778ff01be85e", size = 59360869 }, + { url = "https://files.pythonhosted.org/packages/d5/2f/f7a1701f1bc6c48401bcdd16208da2b9c8a3c1227e171782a06e5c3a64ba/torch-2.2.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:dcbfb2192ac41ca93c756ebe9e2af29df0a4c14ee0e7a0dd78f82c67a63d91d4", size = 755447496 }, + { url = "https://files.pythonhosted.org/packages/49/0c/46ffc4377156b1126c1bec9e177e16bb0410b592c5391e690486b21e4f62/torch-2.2.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:9eeb42971619e24392c9088b5b6d387d896e267889d41d267b1fec334f5227c5", size = 86509406 }, + { url = "https://files.pythonhosted.org/packages/60/6a/5374d5be17d951714b5a8f7956a70aebf52c5e98f579dfad880bed98c787/torch-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:c718b2ca69a6cac28baa36d86d8c0ec708b102cebd1ceb1b6488e404cd9be1d1", size = 198514435 }, + { url = "https://files.pythonhosted.org/packages/a0/ef/c09d5e8739f99ed99c821a468830b06ac0af0d21e443afda8d2459fdc50a/torch-2.2.0-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:f11d18fceb4f9ecb1ac680dde7c463c120ed29056225d75469c19637e9f98d12", size = 150803751 }, + { url = "https://files.pythonhosted.org/packages/99/4d/1ac78e96fca1cc2846a42d5e11a08851ae577ef9f02d117f83f5ccbabaea/torch-2.2.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:ee1da852bfd4a7e674135a446d6074c2da7194c1b08549e31eae0b3138c6b4d2", size = 59672586 }, +] + +[[package]] +name = "torchaudio" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "torch" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/8f/e026d46178b918b888660dbbdbbe6d406c63a8e61be799ab2f39226fe717/torchaudio-2.2.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:59e56836cd2be81940cebacd3f4ee3779c4b78378a3e61945446da77c16384b4", size = 3398628 }, + { url = "https://files.pythonhosted.org/packages/df/97/a76b5818c7fcc1e8ee2858db96ce5908798159354d57b9b38287d1c2bcdb/torchaudio-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc48f966cc1973a8d58a9686335e517ac00ddae9cd7b592916a04b77499ef2bb", size = 1806587 }, + { url = "https://files.pythonhosted.org/packages/30/fc/cdcf7c2071539ea147ddb6de2b538d9c1599665b621f2e6cf0b3ef51d20d/torchaudio-2.2.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:e2dc32b76eab278707cef43dbbadaad324a98b0f77f088cc4bbe5c2b08a56af1", size = 3345657 }, + { url = "https://files.pythonhosted.org/packages/45/a5/74d8a03fdf47cf89e9a2f6c58a65ffe4b392e8cfa503f148baec43377f24/torchaudio-2.2.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d4ea094b8721a361982db062ee993f2a6f71dfe16f62a84f8900b2364f33a2e4", size = 1646336 }, + { url = "https://files.pythonhosted.org/packages/c4/ae/26a0efbdda4a240237f75bbaee5056aa66097ae3d56bc158c92ebbd8af63/torchaudio-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:3636fb7d8a7a964b5b49cc9372d231bbdcf985b65a5f8780f68979c75e2dcca1", size = 2363940 }, + { url = "https://files.pythonhosted.org/packages/71/3b/c03e09d76f8be206abe382b67a93d534bdbaf1e94972fdd8e40e41ec9955/torchaudio-2.2.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:971ede9e8488a8b85d6724a0586c3828648703d805054f5d1275d32060c17949", size = 3411800 }, + { url = "https://files.pythonhosted.org/packages/79/f7/5929802a1d14693d2dea6e60c51a923724348f134a91558f22bc686d3d8b/torchaudio-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6a84522a48d4605e42f68e5729c0b0ea3c5a604c97aa34f10b8147ed010eee07", size = 1817474 }, + { url = "https://files.pythonhosted.org/packages/37/98/3136b10673b2b44ed755cc5261921db9a96af72fda6c3c852696a705d5c4/torchaudio-2.2.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:622098474488bd6d3be3ad0d3b3357bc67544a212a5e6eaff1738c234264e1f4", size = 3349797 }, + { url = "https://files.pythonhosted.org/packages/c5/b0/ee24c3ebb6dd448993042d55fc7b31f7f54dd5f2c7541b3f21f13b3165d7/torchaudio-2.2.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9be18ca20a0c2e8ca0b633887114083c928c95e454870b1d6ea8cfe05982cec9", size = 1651336 }, + { url = "https://files.pythonhosted.org/packages/07/1f/ddc210fc946855233d9be29d6509fb0c06803416b500a6ae7414f2371edb/torchaudio-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:acc9c1e371cc007b32db3c4db2c24b44793eb9102156642d5b0811813049adb9", size = 2370425 }, + { url = "https://files.pythonhosted.org/packages/9f/7a/19a09df71ad12549dcf91749ffc521edf32a09e532c9277d3289b71949a4/torchaudio-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9fd98ae6f7fa191d9e3399b6653962e416f63ac172b97b0c24d63fd46243f94e", size = 3400587 }, + { url = "https://files.pythonhosted.org/packages/49/89/44b043bc28c346dd70217ca768cacbb17dbf5db6f8e7e424978fb05e8930/torchaudio-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a26447ec3d8be03a0b9f429a9de09c7ad4119de08c78491e4cc6569bed1cfdd6", size = 1803852 }, + { url = "https://files.pythonhosted.org/packages/14/ef/83df7a386f05ad2a13d76a34a001e97b607ecfbc8306b3b0b11c4e5d547d/torchaudio-2.2.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:0e874a34c0bee0e9374907512a7e89688ab7ed179b2f7f30b878fb991a852237", size = 3344093 }, + { url = "https://files.pythonhosted.org/packages/e3/04/eb71086ca35dbb0db6133fcf2ee5ddde8ee8e046b6f5e2970672cfcdc02d/torchaudio-2.2.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a8dbb5f76327a3f2e31dcd3bf93b6716f6ba0342aeb182bb2782daf67b3a5aea", size = 1646814 }, + { url = "https://files.pythonhosted.org/packages/65/d0/355175f1f2abd6f193c80a312da01bceb633c98d02b731381c71aa2c58ac/torchaudio-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:eb4b03f69d1e399f0ed082b37eeaf189754102512772eded257be908f71d948e", size = 2351229 }, +] + +[[package]] +name = "torchdata" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "torch" }, + { name = "urllib3" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/8a/3251c64214ab09d1c1756677f36e78f8cf0ce9dabb3a21386e78ef50540e/torchdata-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:082e27b2acb1768cb6a30ddd2f8d9c68e407164ce207194bf8bfa616d621a801", size = 4904801 }, + { url = "https://files.pythonhosted.org/packages/da/90/058fe345dfac8b50d2d0fdb421ce04c78c88b06a5f220dd8d64d424ccdbe/torchdata-0.8.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:44f7875a62f3fab86e2f8e5af92c4929f8f7390aa17bd697fdd0965723bc1e98", size = 2691733 }, + { url = "https://files.pythonhosted.org/packages/2f/54/d6f64a6e210ee50b68220d3b5564ffdda8bcc8d26c02a39a8a587caffe2f/torchdata-0.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:07e985d69c5692dda9181a8ef3e14c7f08b0460226f7cd4cf1c1bb0e6975700f", size = 1341187 }, + { url = "https://files.pythonhosted.org/packages/82/aa/4da6c725b03fb51c5a10405803308afd43970e66aad45e8cca872786ba1b/torchdata-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1635cecf4226fec8539c5d06ba764a48c41363ea0bbea09407ab379828527a8b", size = 4904783 }, + { url = "https://files.pythonhosted.org/packages/64/e8/c691e8e73dc6cbb09ba84ffb0341a6466d3184ff422cda07ebade3b929ef/torchdata-0.8.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:2d63d3fdcc68cf912c81709c8704b9cf435ba89bceed41a365e7362eb5740394", size = 2691483 }, + { url = "https://files.pythonhosted.org/packages/2c/f6/438a82c2f8d69114ef943c0b58f69f66ea5249bd7b2e4799d44f185f7797/torchdata-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:8db8a7cb946e82983517cff94317f1898128cbfe4f48821d0c3509c0cdafa4c9", size = 1341021 }, + { url = "https://files.pythonhosted.org/packages/3e/f7/2d1cd02ebcca73ff151dd94b0a08d30808574d944a360470b52a89f0be4e/torchdata-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4e3f7efac3d8a4bd4efcb1427869c04043d0a0a019f9aa1eb381bd6c6b321e62", size = 4905186 }, + { url = "https://files.pythonhosted.org/packages/ea/94/d9ac51405d4259094dfa0a1dc3fa4ed2efe057d194873c9f1ba1881b06c9/torchdata-0.8.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:bb878e243e58526a5b3ac54583f7c029ad643a34ade798800c1878c83f1c36ee", size = 2691660 }, + { url = "https://files.pythonhosted.org/packages/d2/c4/623f7237c69606d202870bc9e44a8ed9070cc3eb1ac03f02c457083aa746/torchdata-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a43fc7e8d3ae2632859f15d5439cd97b83af559fecd8963e5f09e08f93b81e2", size = 1341201 }, +] + +[[package]] +name = "torchmetrics" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lightning-utilities" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "torch" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/1b/b38033e61c28e52dde7bd459df6567c04c127ee153722c73b9acd0fe550b/torchmetrics-1.4.1-py3-none-any.whl", hash = "sha256:c2e7cd56dd8bdc60ae63d712f3bdce649f23bd174d9180bdd0b746e0230b865a", size = 866212 }, +] + +[[package]] +name = "torchtext" +version = "0.11.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "requests" }, + { name = "torch" }, + { name = "tqdm" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/bb/02bc624552b5d504103cad71ce0bd93b0cdec71360fa5463707554ccf968/torchtext-0.11.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f1f7c0b5ede8b8dc6d3dab05e5d06748d84163e6bdd723dd29ff2ead2df3e925", size = 9744499 }, +] + +[[package]] +name = "torchvision" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, + { name = "requests" }, + { name = "torch" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/da/dedf05fab34a0ef38abc20b8a86b836a486fdef774641812fe556db8ef5a/torchvision-0.17.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:153882cd8ff8e3dbef5c5054fdd15df64e85420546805a90c0b2221f2f119c4a", size = 1667125 }, + { url = "https://files.pythonhosted.org/packages/95/f5/5f3f013ddb3eb8561d3313fd5a5951e5883aff4aba8398ad93d1b183a214/torchvision-0.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c55c2f86e3f3a21ddd92739a972366244e9b17916e836ec47167b0a0c083c65f", size = 1571848 }, + { url = "https://files.pythonhosted.org/packages/d8/51/55393d57c2d95311b1675c8cd37d307f5022460cf98746e4df882dfb415c/torchvision-0.17.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:605950cdcefe6c5aef85709ade17b1525bcf171e122cce1df09e666d96525b90", size = 6916370 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/c02da47623d870a53007f4628f69787cbe62a50fcedc3327d03d5951ae5c/torchvision-0.17.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:3d86c212fc6379e9bec3ac647d062e34c2cf36c26b98840b66573eb9fbe1f1d9", size = 14011345 }, + { url = "https://files.pythonhosted.org/packages/7f/c9/10ca7837d786f2a96328ddf3a93767897d5e6eb04cf42b043778a771d04a/torchvision-0.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:71b314813faf13cecb09a4a635b5e4b274e8df0b1921681038d491c529555bb6", size = 1166258 }, + { url = "https://files.pythonhosted.org/packages/32/81/f81f5c6ecb0ef29affb69d2e615e20b531420ba866dd7cd504f9dc766d8c/torchvision-0.17.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:10d276821f115fb369e6cf1f1b77b2cca60cda12cbb39a41513a9d3d0f2a93ae", size = 1667134 }, + { url = "https://files.pythonhosted.org/packages/3e/4f/ad5c2a7d2783649c8ea691441a9f285accae922a1625e21603c45e3ddff4/torchvision-0.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3eef2daddadb5c21e802e0550dd7e3ee3d98c430f4aed212ae3ba0358558be1", size = 1571854 }, + { url = "https://files.pythonhosted.org/packages/c7/6a/5a3e396a4ac5d869acf9bb0db9c301c4780af1b68fdb5883d61d63e595b6/torchvision-0.17.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:acc0d098ab8c295a750f0218bf5bf7bfc2f2c21f9c2fe3fc30b695cd94f4c759", size = 6916629 }, + { url = "https://files.pythonhosted.org/packages/5f/96/4300bd970f7de2e5dbf0fe1a78baa8670ea3f09cadca51b05e1dfc346fe3/torchvision-0.17.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:3d2e9552d72e4037f2db6f7d97989a2e2f95763aa1861963a3faf521bb1610c4", size = 14011347 }, + { url = "https://files.pythonhosted.org/packages/b5/56/38e892200f8638032b64f6fc8660049f0d00ccba086cf1dcb884bd6370d2/torchvision-0.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:f8e542cf71e1294fcb5635038eae6702df543dc90706f0836ec80e75efc511fc", size = 1166261 }, + { url = "https://files.pythonhosted.org/packages/8a/27/c7860ad0973f6f555bc5e03fbc9e001f79816ff503321b34941ee60fe44c/torchvision-0.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:816ae1a4506b1cb0f638e1827cae7ab768c731369ab23e86839f177926197143", size = 1667123 }, + { url = "https://files.pythonhosted.org/packages/a8/16/b208d6704061438b80f63937c6a00a70c5e91062bbb281e106e007ecd41b/torchvision-0.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be39874c239215a39b3c431c7016501f1a45bfbbebf2fe8e11d8339b5ea23bca", size = 1571848 }, + { url = "https://files.pythonhosted.org/packages/3a/20/c57ef160aa7477478544f05b9ef949625166b49e35f06e987eeb8b0882d6/torchvision-0.17.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:8fe14d580557aef2c45dd462c069ff936b6507b215c4b496f30973ae8cff917d", size = 6916663 }, + { url = "https://files.pythonhosted.org/packages/f6/87/ed1fb27b3b22b77587c518441a19a2812d153af4e4dadf8d9f74cc21e645/torchvision-0.17.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:4608ba3246c45c968ede40e7640e4eed64556210faa154cf1ffccb1cadabe445", size = 14011677 }, + { url = "https://files.pythonhosted.org/packages/be/a6/ed6d3413761b1d3ff572d8436601e0854471ff67c0c986064ad01bcba303/torchvision-0.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:b755d6d3e021239d2408bf3794d0d3dcffbc629f1fd808c43d8b346045a098c4", size = 1166260 }, +] + +[[package]] +name = "tornado" +version = "6.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/66/398ac7167f1c7835406888a386f6d0d26ee5dbf197d8a571300be57662d3/tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9", size = 500623 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/d9/c33be3c1a7564f7d42d87a8d186371a75fd142097076767a5c27da941fef/tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8", size = 435924 }, + { url = "https://files.pythonhosted.org/packages/2e/0f/721e113a2fac2f1d7d124b3279a1da4c77622e104084f56119875019ffab/tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14", size = 433883 }, + { url = "https://files.pythonhosted.org/packages/13/cf/786b8f1e6fe1c7c675e79657448178ad65e41c1c9765ef82e7f6f765c4c5/tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4", size = 437224 }, + { url = "https://files.pythonhosted.org/packages/e4/8e/a6ce4b8d5935558828b0f30f3afcb2d980566718837b3365d98e34f6067e/tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842", size = 436597 }, + { url = "https://files.pythonhosted.org/packages/22/d4/54f9d12668b58336bd30defe0307e6c61589a3e687b05c366f804b7faaf0/tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3", size = 436797 }, + { url = "https://files.pythonhosted.org/packages/cf/3f/2c792e7afa7dd8b24fad7a2ed3c2f24a5ec5110c7b43a64cb6095cc106b8/tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f", size = 437516 }, + { url = "https://files.pythonhosted.org/packages/71/63/c8fc62745e669ac9009044b889fc531b6f88ac0f5f183cac79eaa950bb23/tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4", size = 436958 }, + { url = "https://files.pythonhosted.org/packages/94/d4/f8ac1f5bd22c15fad3b527e025ce219bd526acdbd903f52053df2baecc8b/tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698", size = 436882 }, + { url = "https://files.pythonhosted.org/packages/4b/3e/a8124c21cc0bbf144d7903d2a0cadab15cadaf683fa39a0f92bc567f0d4d/tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d", size = 438092 }, + { url = "https://files.pythonhosted.org/packages/d9/2f/3f2f05e84a7aff787a96d5fb06821323feb370fe0baed4db6ea7b1088f32/tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7", size = 438532 }, +] + +[[package]] +name = "tqdm" +version = "4.66.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/83/6ba9844a41128c62e810fddddd72473201f3eacde02046066142a2d96cc5/tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad", size = 169504 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd", size = 78351 }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, +] + +[[package]] +name = "triton" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/05/ed974ce87fe8c8843855daa2136b3409ee1c126707ab54a8b72815c08b49/triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2294514340cfe4e8f4f9e5c66c702744c4a117d25e618bd08469d0bfed1e2e5", size = 167900779 }, + { url = "https://files.pythonhosted.org/packages/bd/ac/3974caaa459bf2c3a244a84be8d17561f631f7d42af370fc311defeca2fb/triton-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da58a152bddb62cafa9a857dd2bc1f886dbf9f9c90a2b5da82157cd2b34392b0", size = 167928356 }, + { url = "https://files.pythonhosted.org/packages/0e/49/2e1bbae4542b8f624e409540b4197e37ab22a88e8685e99debe721cc2b50/triton-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af58716e721460a61886668b205963dc4d1e4ac20508cc3f623aef0d70283d5", size = 167933985 }, +] + +[[package]] +name = "typeguard" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/e1/3178b3e5369a98239ed7301e3946747048c66f4023163d55918f11b82d4e/typeguard-4.3.0.tar.gz", hash = "sha256:92ee6a0aec9135181eae6067ebd617fd9de8d75d714fb548728a4933b1dea651", size = 73374 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/de/be0ba39ee73760bf33329b7c6f95bc67e96593c69c881671e312538e24bb/typeguard-4.3.0-py3-none-any.whl", hash = "sha256:4d24c5b39a117f8a895b9da7a9b3114f04eb63bade45a4492de49b175b6f7dfa", size = 35385 }, +] + +[[package]] +name = "typeshed-client" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/1e/f20e33447be772486acf028295cdd21437454a051adb602d52ddb5334f9e/typeshed_client-2.7.0.tar.gz", hash = "sha256:e63df1e738588ad39f1226de042f4407ab6a99c456f0837063afd83b1415447c", size = 433569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/39/4702c2901899c018189b9aa7eb75aa8eb54527aed71c3f285895190dc664/typeshed_client-2.7.0-py3-none-any.whl", hash = "sha256:97084e5abc58a76ace2c4618ecaebd625f2d19bbd85aa1b3fb86216bf174bbea", size = 624417 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2024.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/5b/e025d02cb3b66b7b76093404392d4b44343c69101cc85f4d180dd5784717/tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd", size = 190559 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252", size = 345370 }, +] + +[[package]] +name = "umap-learn" +version = "0.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numba" }, + { name = "numpy" }, + { name = "pynndescent" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/c0/a21f7e83dc471cb4bdb7bfb10244eb63a0c0b68ee2939b6698add0377eee/umap-learn-0.5.6.tar.gz", hash = "sha256:5b3917a862c23ba0fc83bfcd67a7b719dec85b3d9c01fdc7d894cce455df4e03", size = 89627 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/1b/46802a050b1c55d10c4f59fc6afd2b45ac9b4f62b2e12092d3f599286f14/umap_learn-0.5.6-py3-none-any.whl", hash = "sha256:881cc0c2ee845b790bf0455aa1664f9f68b838d9d0fe12a1291b85c5a559c913", size = 85712 }, +] + +[[package]] +name = "universal-pathlib" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/1c/7d1d5d105fb60d9151c1246bee33706164a5f77c3e131763775bf41fa068/universal_pathlib-0.2.2.tar.gz", hash = "sha256:6bc215548792ad5db3553708b1c19bafd9e2fa1667dc925ed404c95e52ae2f13", size = 167191 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/a2/d8fe0f7e233c5e0201442d82279f3a0ffb30edcb8d7c4c5eba695c16647f/universal_pathlib-0.2.2-py3-none-any.whl", hash = "sha256:9bc176112d593348bb29806a47e409eda78dff8d95391d66dd6f85e443aaa75d", size = 46704 }, +] + +[[package]] +name = "urllib3" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/6d/fa469ae21497ddc8bc93e5877702dca7cb8f911e337aca7452b5724f1bb6/urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168", size = 292266 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", size = 121444 }, +] + +[[package]] +name = "wandb" +version = "0.17.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "docker-pycreds" }, + { name = "gitpython" }, + { name = "platformdirs" }, + { name = "protobuf" }, + { name = "psutil" }, + { name = "pyyaml", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or python_full_version >= '3.11'" }, + { name = "pyyaml", version = "6.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'linux'" }, + { name = "requests" }, + { name = "sentry-sdk" }, + { name = "setproctitle" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/d6/35047e0fb68c380f04cefb552dfc02c89fc187ff5aa35ed1edb0c5ef1851/wandb-0.17.9.tar.gz", hash = "sha256:744e27c17636c8f8bdce05c7fe9d17b4814a4196cff313b97b3bf92e7593d2ce", size = 6143755 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/94/636d6177f305bd656afef161eb56bae8d8abcfe682f4ca098c76413095d6/wandb-0.17.9-py3-none-any.whl", hash = "sha256:475da9aeb921f49352107d940a5d2a67e5bdc980d561fbdaf990309fe8faeaa4", size = 5072743 }, + { url = "https://files.pythonhosted.org/packages/00/23/5d3e2502865a7961fd3552aa44e216cc025bad72ccc8c25aa7bf601f9c19/wandb-0.17.9-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:9c056e36f12e1a6e7a03cf2abc806264baad44697bda33b5d901a42dc39f1bf8", size = 6912324 }, + { url = "https://files.pythonhosted.org/packages/d5/46/d969846ad802b207fd04b79f8b48e953b3bae109b5319dcbcafc1d3c7345/wandb-0.17.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9038d7971a9e86a8cdac4802b43c3167d4f1a00f9f5504b5e323ddec71d2e55a", size = 6643188 }, + { url = "https://files.pythonhosted.org/packages/ee/09/f8174da269d6beacaab853b951e4363f4ea136aa5c5dd271b9e663f93689/wandb-0.17.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1968d294fc357c8a8cd82c76f8b063a43d4225139bc8d4390100d47978f8f22", size = 9063367 }, + { url = "https://files.pythonhosted.org/packages/10/65/940e2f0cdaaf818ea14d47fcc5e9f05a7e98f9052295e1bf525e393b3743/wandb-0.17.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1cbb833987e8fd9754e94cbb18bb0564b01bc9c743b67d499700192de0bd154", size = 9425254 }, + { url = "https://files.pythonhosted.org/packages/25/3b/464f8001b330e7d037f66d4f63de691d6ab83c86765ddb3d9523cd7d399d/wandb-0.17.9-py3-none-win32.whl", hash = "sha256:a6b83dba8199923ce44da6360a174df6eb8430dc6912e29afb60ad882a4f2c18", size = 6550874 }, + { url = "https://files.pythonhosted.org/packages/01/8f/6adbbe9727dbd400eea6ac388aa52b928f7b5fbceba433fbd28770601aa2/wandb-0.17.9-py3-none-win_amd64.whl", hash = "sha256:c5dad3d8650ccc84323d86f211cd2af9a66e7ed23dc62c8a897fcb0f4337a394", size = 6550876 }, +] + +[[package]] +name = "wandb-core" +version = "0.17.0b11" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/f1/0a14ef2978d5e370fa55b91599dac86424dc84ced8fe5779611c2ce36918/wandb_core-0.17.0b11-py3-none-any.whl", hash = "sha256:93d044bd20c0cb8ab7f11c19ccc43ccb097e4feccbd14fc2bc521a45852b7bfb", size = 3505 }, + { url = "https://files.pythonhosted.org/packages/b2/83/bce028167eab29f45581df9970080de5bcd579ca4a25f9b0003d1ffe31fc/wandb_core-0.17.0b11-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:53d4d0519ec46554ec2c873a3ceb99227dc658c86b81826c1d4d4e55368b37bd", size = 4879447 }, + { url = "https://files.pythonhosted.org/packages/19/f6/581171aa205caec2c6beaeacdabbaad3bcddaa5b81542e22a3a4aaa5d56a/wandb_core-0.17.0b11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e7a2b3ba8a531eba5974aee9ee1c3035f146eda4c5b47b0f99f805048872d72d", size = 4593162 }, + { url = "https://files.pythonhosted.org/packages/eb/50/ebec640b2f6c535fcc8b70ea39f4dbe0c2aedaf5cd97e17fc45dc832efe7/wandb_core-0.17.0b11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:addaa93cdf6192c360cba980e6d09684b67fddc828824663c0e49aa40ecd5a78", size = 4144246 }, + { url = "https://files.pythonhosted.org/packages/4b/3c/ad6d173639e233461329899067dcd3af7d4d20f637f323ecfe74bbead463/wandb_core-0.17.0b11-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da7cf560a04b248d736542070b439847578a706d2f667e12a7a59c69cdafaa39", size = 4521565 }, + { url = "https://files.pythonhosted.org/packages/f1/00/1c2375e0cbac18dd0e0ccf7cc8249711e8b6dddab885b4e90cf193cf7b0b/wandb_core-0.17.0b11-py3-none-win32.whl", hash = "sha256:219f2def5ce8e0180e7231ba3e3cc8d186493ad8ac39907b69adf51684a083fa", size = 4585070 }, + { url = "https://files.pythonhosted.org/packages/fb/ed/13e49074a044b28da55265e0ae95dd14f6f2e2b16b9d08ec94253d045bd4/wandb_core-0.17.0b11-py3-none-win_amd64.whl", hash = "sha256:1891ae0af383c9c32d393f057e04ce0718dba5d70bfab55747718a92e3bca7df", size = 4585076 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "websockets" +version = "12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/62/7a7874b7285413c954a4cca3c11fd851f11b2fe5b4ae2d9bee4f6d9bdb10/websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", size = 104994 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/b9/360b86ded0920a93bff0db4e4b0aa31370b0208ca240b2e98d62aad8d082/websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", size = 124025 }, + { url = "https://files.pythonhosted.org/packages/bb/d3/1eca0d8fb6f0665c96f0dc7c0d0ec8aa1a425e8c003e0c18e1451f65d177/websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", size = 121261 }, + { url = "https://files.pythonhosted.org/packages/4e/e1/f6c3ecf7f1bfd9209e13949db027d7fdea2faf090c69b5f2d17d1d796d96/websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", size = 121328 }, + { url = "https://files.pythonhosted.org/packages/74/4d/f88eeceb23cb587c4aeca779e3f356cf54817af2368cb7f2bd41f93c8360/websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", size = 130925 }, + { url = "https://files.pythonhosted.org/packages/16/17/f63d9ee6ffd9afbeea021d5950d6e8db84cd4aead306c6c2ca523805699e/websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", size = 129930 }, + { url = "https://files.pythonhosted.org/packages/9a/12/c7a7504f5bf74d6ee0533f6fc7d30d8f4b79420ab179d1df2484b07602eb/websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", size = 130245 }, + { url = "https://files.pythonhosted.org/packages/e4/6a/3600c7771eb31116d2e77383d7345618b37bb93709d041e328c08e2a8eb3/websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", size = 134966 }, + { url = "https://files.pythonhosted.org/packages/22/26/df77c4b7538caebb78c9b97f43169ef742a4f445e032a5ea1aaef88f8f46/websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", size = 134196 }, + { url = "https://files.pythonhosted.org/packages/e5/18/18ce9a4a08203c8d0d3d561e3ea4f453daf32f099601fc831e60c8a9b0f2/websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", size = 134822 }, + { url = "https://files.pythonhosted.org/packages/45/51/1f823a341fc20a880e67ae62f6c38c4880a24a4b60fbe544a38f516f39a1/websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", size = 124454 }, + { url = "https://files.pythonhosted.org/packages/41/b0/5ec054cfcf23adfc88d39359b85e81d043af8a141e3ac8ce40f45a5ce5f4/websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", size = 124974 }, + { url = "https://files.pythonhosted.org/packages/02/73/9c1e168a2e7fdf26841dc98f5f5502e91dea47428da7690a08101f616169/websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", size = 124047 }, + { url = "https://files.pythonhosted.org/packages/e4/2d/9a683359ad2ed11b2303a7a94800db19c61d33fa3bde271df09e99936022/websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", size = 121282 }, + { url = "https://files.pythonhosted.org/packages/95/aa/75fa3b893142d6d98a48cb461169bd268141f2da8bfca97392d6462a02eb/websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", size = 121325 }, + { url = "https://files.pythonhosted.org/packages/6e/a4/51a25e591d645df71ee0dc3a2c880b28e5514c00ce752f98a40a87abcd1e/websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", size = 131502 }, + { url = "https://files.pythonhosted.org/packages/cd/ea/0ceeea4f5b87398fe2d9f5bcecfa00a1bcd542e2bfcac2f2e5dd612c4e9e/websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", size = 130491 }, + { url = "https://files.pythonhosted.org/packages/e3/05/f52a60b66d9faf07a4f7d71dc056bffafe36a7e98c4eb5b78f04fe6e4e85/websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", size = 130872 }, + { url = "https://files.pythonhosted.org/packages/ac/4e/c7361b2d7b964c40fea924d64881145164961fcd6c90b88b7e3ab2c4f431/websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", size = 136318 }, + { url = "https://files.pythonhosted.org/packages/0a/31/337bf35ae5faeaf364c9cddec66681cdf51dc4414ee7a20f92a18e57880f/websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", size = 135594 }, + { url = "https://files.pythonhosted.org/packages/95/aa/1ac767825c96f9d7e43c4c95683757d4ef28cf11fa47a69aca42428d3e3a/websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", size = 136191 }, + { url = "https://files.pythonhosted.org/packages/28/4b/344ec5cfeb6bc417da097f8253607c3aed11d9a305fb58346f506bf556d8/websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402", size = 124453 }, + { url = "https://files.pythonhosted.org/packages/d1/40/6b169cd1957476374f51f4486a3e85003149e62a14e6b78a958c2222337a/websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b", size = 124971 }, + { url = "https://files.pythonhosted.org/packages/a9/6d/23cc898647c8a614a0d9ca703695dd04322fb5135096a20c2684b7c852b6/websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df", size = 124061 }, + { url = "https://files.pythonhosted.org/packages/39/34/364f30fdf1a375e4002a26ee3061138d1571dfda6421126127d379d13930/websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc", size = 121296 }, + { url = "https://files.pythonhosted.org/packages/2e/00/96ae1c9dcb3bc316ef683f2febd8c97dde9f254dc36c3afc65c7645f734c/websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b", size = 121326 }, + { url = "https://files.pythonhosted.org/packages/af/f1/bba1e64430685dd456c1a1fd6b0c791ae33104967b928aefeff261761e8d/websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb", size = 131807 }, + { url = "https://files.pythonhosted.org/packages/62/3b/98ee269712f37d892b93852ce07b3e6d7653160ca4c0d4f8c8663f8021f8/websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92", size = 130751 }, + { url = "https://files.pythonhosted.org/packages/f1/00/d6f01ca2b191f8b0808e4132ccd2e7691f0453cbd7d0f72330eb97453c3a/websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed", size = 131176 }, + { url = "https://files.pythonhosted.org/packages/af/9c/703ff3cd8109dcdee6152bae055d852ebaa7750117760ded697ab836cbcf/websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5", size = 136246 }, + { url = "https://files.pythonhosted.org/packages/0b/a5/1a38fb85a456b9dc874ec984f3ff34f6550eafd17a3da28753cd3c1628e8/websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2", size = 135466 }, + { url = "https://files.pythonhosted.org/packages/3c/98/1261f289dff7e65a38d59d2f591de6ed0a2580b729aebddec033c4d10881/websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", size = 136083 }, + { url = "https://files.pythonhosted.org/packages/a9/1c/f68769fba63ccb9c13fe0a25b616bd5aebeef1c7ddebc2ccc32462fb784d/websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", size = 124460 }, + { url = "https://files.pythonhosted.org/packages/20/52/8915f51f9aaef4e4361c89dd6cf69f72a0159f14e0d25026c81b6ad22525/websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", size = 124985 }, + { url = "https://files.pythonhosted.org/packages/43/8b/554a8a8bb6da9dd1ce04c44125e2192af7b7beebf6e3dbfa5d0e285cc20f/websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", size = 121110 }, + { url = "https://files.pythonhosted.org/packages/b0/8e/58b8812940d746ad74d395fb069497255cb5ef50748dfab1e8b386b1f339/websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", size = 123216 }, + { url = "https://files.pythonhosted.org/packages/81/ee/272cb67ace1786ce6d9f39d47b3c55b335e8b75dd1972a7967aad39178b6/websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", size = 122821 }, + { url = "https://files.pythonhosted.org/packages/a8/03/387fc902b397729df166763e336f4e5cec09fe7b9d60f442542c94a21be1/websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", size = 122768 }, + { url = "https://files.pythonhosted.org/packages/50/f0/5939fbc9bc1979d79a774ce5b7c4b33c0cefe99af22fb70f7462d0919640/websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", size = 125009 }, + { url = "https://files.pythonhosted.org/packages/79/4d/9cc401e7b07e80532ebc8c8e993f42541534da9e9249c59ee0139dcb0352/websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", size = 118370 }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/fc/238c424fd7f4ebb25f8b1da9a934a3ad7c848286732ae04263661eb0fc03/widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6", size = 1164730 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/02/88b65cc394961a60c43c70517066b6b679738caf78506a5da7b88ffcb643/widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71", size = 2335872 }, +] + +[[package]] +name = "wrapt" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/c6/5375258add3777494671d8cec27cdf5402abd91016dee24aa2972c61fedf/wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4", size = 37315 }, + { url = "https://files.pythonhosted.org/packages/32/12/e11adfde33444986135d8881b401e4de6cbb4cced046edc6b464e6ad7547/wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020", size = 38160 }, + { url = "https://files.pythonhosted.org/packages/70/7d/3dcc4a7e96f8d3e398450ec7703db384413f79bd6c0196e0e139055ce00f/wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440", size = 80419 }, + { url = "https://files.pythonhosted.org/packages/d1/c4/8dfdc3c2f0b38be85c8d9fdf0011ebad2f54e40897f9549a356bebb63a97/wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487", size = 72669 }, + { url = "https://files.pythonhosted.org/packages/49/83/b40bc1ad04a868b5b5bcec86349f06c1ee1ea7afe51dc3e46131e4f39308/wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf", size = 80271 }, + { url = "https://files.pythonhosted.org/packages/19/d4/cd33d3a82df73a064c9b6401d14f346e1d2fb372885f0295516ec08ed2ee/wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72", size = 84748 }, + { url = "https://files.pythonhosted.org/packages/ef/58/2fde309415b5fa98fd8f5f4a11886cbf276824c4c64d45a39da342fff6fe/wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0", size = 77522 }, + { url = "https://files.pythonhosted.org/packages/07/44/359e4724a92369b88dbf09878a7cde7393cf3da885567ea898e5904049a3/wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136", size = 84780 }, + { url = "https://files.pythonhosted.org/packages/88/8f/706f2fee019360cc1da652353330350c76aa5746b4e191082e45d6838faf/wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d", size = 35335 }, + { url = "https://files.pythonhosted.org/packages/19/2b/548d23362e3002ebbfaefe649b833fa43f6ca37ac3e95472130c4b69e0b4/wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2", size = 37528 }, + { url = "https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", size = 37313 }, + { url = "https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", size = 38164 }, + { url = "https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", size = 80890 }, + { url = "https://files.pythonhosted.org/packages/b7/96/bb5e08b3d6db003c9ab219c487714c13a237ee7dcc572a555eaf1ce7dc82/wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", size = 73118 }, + { url = "https://files.pythonhosted.org/packages/6e/52/2da48b35193e39ac53cfb141467d9f259851522d0e8c87153f0ba4205fb1/wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", size = 80746 }, + { url = "https://files.pythonhosted.org/packages/11/fb/18ec40265ab81c0e82a934de04596b6ce972c27ba2592c8b53d5585e6bcd/wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", size = 85668 }, + { url = "https://files.pythonhosted.org/packages/0f/ef/0ecb1fa23145560431b970418dce575cfaec555ab08617d82eb92afc7ccf/wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", size = 78556 }, + { url = "https://files.pythonhosted.org/packages/25/62/cd284b2b747f175b5a96cbd8092b32e7369edab0644c45784871528eb852/wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", size = 85712 }, + { url = "https://files.pythonhosted.org/packages/e5/a7/47b7ff74fbadf81b696872d5ba504966591a3468f1bc86bca2f407baef68/wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", size = 35327 }, + { url = "https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", size = 37523 }, + { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 }, + { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 }, + { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 }, + { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 }, + { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 }, + { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 }, + { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 }, + { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 }, + { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 }, + { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 }, + { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, +] + +[[package]] +name = "xyzservices" +version = "2024.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/16/ae87cbd2d6bfc40a419077521c35aadf5121725b7bee3d7c51b56f50958b/xyzservices-2024.9.0.tar.gz", hash = "sha256:68fb8353c9dbba4f1ff6c0f2e5e4e596bb9e1db7f94f4f7dfbcb26e25aa66fde", size = 1131900 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/d3/e07ce413d16ef64e885bea37551eac4c5ca3ddd440933f9c94594273d0d9/xyzservices-2024.9.0-py3-none-any.whl", hash = "sha256:776ae82b78d6e5ca63dd6a94abb054df8130887a4a308473b54a6bd364de8644", size = 85130 }, +] + +[[package]] +name = "yarl" +version = "1.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/3d/4924f9ed49698bac5f112bc9b40aa007bbdcd702462c1df3d2e1383fb158/yarl-1.11.1.tar.gz", hash = "sha256:1bb2d9e212fb7449b8fb73bc461b51eaa17cc8430b4a87d87be7b25052d92f53", size = 162095 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a3/4e67b1463c12ba178aace33b62468377473c77b33a95bcb12b67b2b93817/yarl-1.11.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:400cd42185f92de559d29eeb529e71d80dfbd2f45c36844914a4a34297ca6f00", size = 188473 }, + { url = "https://files.pythonhosted.org/packages/f3/86/c0c76e69a390fb43533783582714e8a58003f443b81cac1605ce71cade00/yarl-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8258c86f47e080a258993eed877d579c71da7bda26af86ce6c2d2d072c11320d", size = 114362 }, + { url = "https://files.pythonhosted.org/packages/07/ef/e6bee78c1bf432de839148fe9fdc1cf5e7fbd6402d8b0b7d7a1522fb9733/yarl-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2164cd9725092761fed26f299e3f276bb4b537ca58e6ff6b252eae9631b5c96e", size = 112537 }, + { url = "https://files.pythonhosted.org/packages/37/f4/3406e76ed71e4d3023dbae4514513a387e2e753cb8a4cadd6ff9ba08a046/yarl-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08ea567c16f140af8ddc7cb58e27e9138a1386e3e6e53982abaa6f2377b38cc", size = 442573 }, + { url = "https://files.pythonhosted.org/packages/37/15/98b4951271a693142e551fea24bca1e96be71b5256b3091dbe8433532a45/yarl-1.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:768ecc550096b028754ea28bf90fde071c379c62c43afa574edc6f33ee5daaec", size = 468046 }, + { url = "https://files.pythonhosted.org/packages/88/1a/f10b88c4d8200708cbc799aad978a37a0ab15a4a72511c60bed11ee585c4/yarl-1.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2909fa3a7d249ef64eeb2faa04b7957e34fefb6ec9966506312349ed8a7e77bf", size = 462124 }, + { url = "https://files.pythonhosted.org/packages/02/a3/97b527b5c4551c3b17fd095fe019435664330060b3879c8c1ae80985d4bc/yarl-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01a8697ec24f17c349c4f655763c4db70eebc56a5f82995e5e26e837c6eb0e49", size = 446807 }, + { url = "https://files.pythonhosted.org/packages/40/06/da47aae54f1bb8ac0668d68bbdde40ba761643f253b2c16fdb4362af8ca3/yarl-1.11.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e286580b6511aac7c3268a78cdb861ec739d3e5a2a53b4809faef6b49778eaff", size = 431778 }, + { url = "https://files.pythonhosted.org/packages/ba/a1/54992cd68f61c11d975184f4c8a4c7f43a838e7c6ce183030a3fc0a257a6/yarl-1.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4179522dc0305c3fc9782549175c8e8849252fefeb077c92a73889ccbcd508ad", size = 443702 }, + { url = "https://files.pythonhosted.org/packages/5c/8b/adf290dc272a1a30a0e9dc04e2e62486be80f371bd9da2e9899f8e6181f3/yarl-1.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27fcb271a41b746bd0e2a92182df507e1c204759f460ff784ca614e12dd85145", size = 448289 }, + { url = "https://files.pythonhosted.org/packages/fc/98/e6ad935fa009890b9ef2769266dc9dceaeee5a7f9a57bc7daf50b5b6c305/yarl-1.11.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f61db3b7e870914dbd9434b560075e0366771eecbe6d2b5561f5bc7485f39efd", size = 471660 }, + { url = "https://files.pythonhosted.org/packages/91/5d/1ad82849ce3c02661395f5097878c58ecabc4dac5d2d98e4f85949386448/yarl-1.11.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c92261eb2ad367629dc437536463dc934030c9e7caca861cc51990fe6c565f26", size = 469830 }, + { url = "https://files.pythonhosted.org/packages/e0/70/376046a7f69cfec814b97fb8bf1af6f16dcbe37fd0ef89a9f87b04156923/yarl-1.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d95b52fbef190ca87d8c42f49e314eace4fc52070f3dfa5f87a6594b0c1c6e46", size = 457671 }, + { url = "https://files.pythonhosted.org/packages/33/49/825f84f9a5d26d26fbf82531cee3923f356e2d8efc1819b85ada508fa91f/yarl-1.11.1-cp310-cp310-win32.whl", hash = "sha256:489fa8bde4f1244ad6c5f6d11bb33e09cf0d1d0367edb197619c3e3fc06f3d91", size = 101184 }, + { url = "https://files.pythonhosted.org/packages/b0/29/2a08a45b9f2eddd1b840813698ee655256f43b507c12f7f86df947cf5f8f/yarl-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:476e20c433b356e16e9a141449f25161e6b69984fb4cdbd7cd4bd54c17844998", size = 110175 }, + { url = "https://files.pythonhosted.org/packages/af/f1/f3e6be722461cab1e7c6aea657685897956d6e4743940d685d167914e31c/yarl-1.11.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:946eedc12895873891aaceb39bceb484b4977f70373e0122da483f6c38faaa68", size = 188410 }, + { url = "https://files.pythonhosted.org/packages/4b/c1/21cc66b263fdc2ec10b6459aed5b239f07eed91a77438d88f0e1bd70e202/yarl-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21a7c12321436b066c11ec19c7e3cb9aec18884fe0d5b25d03d756a9e654edfe", size = 114293 }, + { url = "https://files.pythonhosted.org/packages/31/7a/0ecab63a166a22357772f4a2852c859e2d5a7b02a5c58803458dd516e6b4/yarl-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c35f493b867912f6fda721a59cc7c4766d382040bdf1ddaeeaa7fa4d072f4675", size = 112548 }, + { url = "https://files.pythonhosted.org/packages/57/5d/78152026864475e841fdae816499345364c8e364b45ea6accd0814a295f0/yarl-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25861303e0be76b60fddc1250ec5986c42f0a5c0c50ff57cc30b1be199c00e63", size = 485002 }, + { url = "https://files.pythonhosted.org/packages/d3/70/2e880d74aeb4908d45c6403e46bbd4aa866ae31ddb432318d9b8042fe0f6/yarl-1.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4b53f73077e839b3f89c992223f15b1d2ab314bdbdf502afdc7bb18e95eae27", size = 504850 }, + { url = "https://files.pythonhosted.org/packages/06/58/5676a47b6d2751853f89d1d68b6a54d725366da6a58482f2410fa7eb38af/yarl-1.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:327c724b01b8641a1bf1ab3b232fb638706e50f76c0b5bf16051ab65c868fac5", size = 499291 }, + { url = "https://files.pythonhosted.org/packages/4d/e5/b56d535703a63a8d86ac82059e630e5ba9c0d5626d9c5ac6af53eed815c2/yarl-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4307d9a3417eea87715c9736d050c83e8c1904e9b7aada6ce61b46361b733d92", size = 487818 }, + { url = "https://files.pythonhosted.org/packages/f3/b4/6b95e1e0983593f4145518980b07126a27e2a4938cb6afb8b592ce6fc2c9/yarl-1.11.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a28bed68ab8fb7e380775f0029a079f08a17799cb3387a65d14ace16c12e2b", size = 470447 }, + { url = "https://files.pythonhosted.org/packages/a8/e5/5d349b7b04ed4247d4f717f271fce601a79d10e2ac81166c13f97c4973a9/yarl-1.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:067b961853c8e62725ff2893226fef3d0da060656a9827f3f520fb1d19b2b68a", size = 484544 }, + { url = "https://files.pythonhosted.org/packages/fa/dc/ce90e9d85ef2233e81148a9658e4ea8372c6de070ce96c5c8bd3ff365144/yarl-1.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8215f6f21394d1f46e222abeb06316e77ef328d628f593502d8fc2a9117bde83", size = 482409 }, + { url = "https://files.pythonhosted.org/packages/4c/a1/17c0a03615b0cd213aee2e318a0fbd3d07259c37976d85af9eec6184c589/yarl-1.11.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:498442e3af2a860a663baa14fbf23fb04b0dd758039c0e7c8f91cb9279799bff", size = 512970 }, + { url = "https://files.pythonhosted.org/packages/6c/ed/1e317799d54c79a3e4846db597510f5c84fb7643bb8703a3848136d40809/yarl-1.11.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:69721b8effdb588cb055cc22f7c5105ca6fdaa5aeb3ea09021d517882c4a904c", size = 515203 }, + { url = "https://files.pythonhosted.org/packages/7a/37/9a4e2d73953956fa686fa0f0c4a0881245f39423fa75875d981b4f680611/yarl-1.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e969fa4c1e0b1a391f3fcbcb9ec31e84440253325b534519be0d28f4b6b533e", size = 497323 }, + { url = "https://files.pythonhosted.org/packages/a3/c3/a25ae9c85c0e50a8722aecc486ac5ba53b28d1384548df99b2145cb69862/yarl-1.11.1-cp311-cp311-win32.whl", hash = "sha256:7d51324a04fc4b0e097ff8a153e9276c2593106a811704025bbc1d6916f45ca6", size = 101226 }, + { url = "https://files.pythonhosted.org/packages/90/6d/c62ba0ae0232a0b0012706a7735a16b44a03216fedfb6ea0bcda79d1e12c/yarl-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:15061ce6584ece023457fb8b7a7a69ec40bf7114d781a8c4f5dcd68e28b5c53b", size = 110471 }, + { url = "https://files.pythonhosted.org/packages/3b/05/379002019a0c9d5dc0c4cc6f71e324ea43461ae6f58e94ee87e07b8ffa90/yarl-1.11.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a4264515f9117be204935cd230fb2a052dd3792789cc94c101c535d349b3dab0", size = 189044 }, + { url = "https://files.pythonhosted.org/packages/23/d5/e62cfba5ceaaf92ee4f9af6f9c9ab2f2b47d8ad48687fa69570a93b0872c/yarl-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f41fa79114a1d2eddb5eea7b912d6160508f57440bd302ce96eaa384914cd265", size = 114867 }, + { url = "https://files.pythonhosted.org/packages/b1/10/6abc0bd7e7fe7c6b9b9e9ce0ff558912c9ecae65a798f5442020ef9e4177/yarl-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02da8759b47d964f9173c8675710720b468aa1c1693be0c9c64abb9d8d9a4867", size = 112737 }, + { url = "https://files.pythonhosted.org/packages/37/a5/ad026afde5efe1849f4f55bd9f9a2cb5b006511b324db430ae5336104fb3/yarl-1.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9361628f28f48dcf8b2f528420d4d68102f593f9c2e592bfc842f5fb337e44fd", size = 482887 }, + { url = "https://files.pythonhosted.org/packages/f8/82/b8bee972617b800319b4364cfcd69bfaf7326db052e91a56e63986cc3e05/yarl-1.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b91044952da03b6f95fdba398d7993dd983b64d3c31c358a4c89e3c19b6f7aef", size = 498635 }, + { url = "https://files.pythonhosted.org/packages/af/ad/ac688503b134e02e8505415f0b8e94dc8e92a97e82abdd9736658389b5ae/yarl-1.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74db2ef03b442276d25951749a803ddb6e270d02dda1d1c556f6ae595a0d76a8", size = 496198 }, + { url = "https://files.pythonhosted.org/packages/ce/f2/b6cae0ad1afed6e95f82ab2cb9eb5b63e41f1463ece2a80c39d80cf6167a/yarl-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e975a2211952a8a083d1b9d9ba26472981ae338e720b419eb50535de3c02870", size = 489068 }, + { url = "https://files.pythonhosted.org/packages/c8/f4/355e69b5563154b40550233ffba8f6099eac0c99788600191967763046cf/yarl-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aef97ba1dd2138112890ef848e17d8526fe80b21f743b4ee65947ea184f07a2", size = 468286 }, + { url = "https://files.pythonhosted.org/packages/26/3d/3c37f3f150faf87b086f7915724f2fcb9ff2f7c9d3f6c0f42b7722bd9b77/yarl-1.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a7915ea49b0c113641dc4d9338efa9bd66b6a9a485ffe75b9907e8573ca94b84", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/94/ee/d591abbaea3b14e0f68bdec5cbcb75f27107190c51889d518bafe5d8f120/yarl-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:504cf0d4c5e4579a51261d6091267f9fd997ef58558c4ffa7a3e1460bd2336fa", size = 484947 }, + { url = "https://files.pythonhosted.org/packages/57/70/ad1c65a13315f03ff0c63fd6359dd40d8198e2a42e61bf86507602a0364f/yarl-1.11.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3de5292f9f0ee285e6bd168b2a77b2a00d74cbcfa420ed078456d3023d2f6dff", size = 505610 }, + { url = "https://files.pythonhosted.org/packages/4c/8c/6086dec0f8d7df16d136b38f373c49cf3d2fb94464e5a10bf788b36f3f54/yarl-1.11.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a34e1e30f1774fa35d37202bbeae62423e9a79d78d0874e5556a593479fdf239", size = 515951 }, + { url = "https://files.pythonhosted.org/packages/49/79/e0479e9a3bbb7bdcb82779d89711b97cea30902a4bfe28d681463b7071ce/yarl-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66b63c504d2ca43bf7221a1f72fbe981ff56ecb39004c70a94485d13e37ebf45", size = 501273 }, + { url = "https://files.pythonhosted.org/packages/8e/85/eab962453e81073276b22f3d1503dffe6bfc3eb9cd0f31899970de05d490/yarl-1.11.1-cp312-cp312-win32.whl", hash = "sha256:a28b70c9e2213de425d9cba5ab2e7f7a1c8ca23a99c4b5159bf77b9c31251447", size = 101139 }, + { url = "https://files.pythonhosted.org/packages/5d/de/618b3e5cab10af8a2ed3eb625dac61c1d16eb155d1f56f9fdb3500786c12/yarl-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:17b5a386d0d36fb828e2fb3ef08c8829c1ebf977eef88e5367d1c8c94b454639", size = 110504 }, + { url = "https://files.pythonhosted.org/packages/07/b7/948e4f427817e0178f3737adf6712fea83f76921e11e2092f403a8a9dc4a/yarl-1.11.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1fa2e7a406fbd45b61b4433e3aa254a2c3e14c4b3186f6e952d08a730807fa0c", size = 185061 }, + { url = "https://files.pythonhosted.org/packages/f3/67/8d91ad79a3b907b4fef27fafa912350554443ba53364fff3c347b41105cb/yarl-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:750f656832d7d3cb0c76be137ee79405cc17e792f31e0a01eee390e383b2936e", size = 113056 }, + { url = "https://files.pythonhosted.org/packages/a1/77/6b2348a753702fa87f435cc33dcec21981aaca8ef98a46566a7b29940b4a/yarl-1.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b8486f322d8f6a38539136a22c55f94d269addb24db5cb6f61adc61eabc9d93", size = 110958 }, + { url = "https://files.pythonhosted.org/packages/8e/3e/6eadf32656741549041f549a392f3b15245d3a0a0b12a9bc22bd6b69621f/yarl-1.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fce4da3703ee6048ad4138fe74619c50874afe98b1ad87b2698ef95bf92c96d", size = 470326 }, + { url = "https://files.pythonhosted.org/packages/3d/a4/1b641a8c7899eeaceec45ff105a2e7206ec0eb0fb9d86403963cc8521c5e/yarl-1.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed653638ef669e0efc6fe2acb792275cb419bf9cb5c5049399f3556995f23c7", size = 484778 }, + { url = "https://files.pythonhosted.org/packages/8a/f5/80c142f34779a5c26002b2bf1f73b9a9229aa9e019ee6f9fd9d3e9704e78/yarl-1.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18ac56c9dd70941ecad42b5a906820824ca72ff84ad6fa18db33c2537ae2e089", size = 485568 }, + { url = "https://files.pythonhosted.org/packages/f8/f2/6b40ffea2d5d3a11f514ab23c30d14f52600c36a3210786f5974b6701bb8/yarl-1.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:688654f8507464745ab563b041d1fb7dab5d9912ca6b06e61d1c4708366832f5", size = 477801 }, + { url = "https://files.pythonhosted.org/packages/4c/1a/e60c116f3241e4842ed43c104eb2751abe02f6bac0301cdae69e4fda9c3a/yarl-1.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4973eac1e2ff63cf187073cd4e1f1148dcd119314ab79b88e1b3fad74a18c9d5", size = 455361 }, + { url = "https://files.pythonhosted.org/packages/b9/98/fe0aeee425a4bc5cd3ed86e867661d2bfa782544fa07a8e3dcd97d51ae3d/yarl-1.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:964a428132227edff96d6f3cf261573cb0f1a60c9a764ce28cda9525f18f7786", size = 473893 }, + { url = "https://files.pythonhosted.org/packages/6b/9b/677455d146bd3cecd350673f0e4bb28854af66726493ace3b640e9c5552b/yarl-1.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6d23754b9939cbab02c63434776df1170e43b09c6a517585c7ce2b3d449b7318", size = 476407 }, + { url = "https://files.pythonhosted.org/packages/33/ca/ce85766247a9a9b56654428fb78a3e14ea6947a580a9c4e891b3aa7da322/yarl-1.11.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c2dc4250fe94d8cd864d66018f8344d4af50e3758e9d725e94fecfa27588ff82", size = 490848 }, + { url = "https://files.pythonhosted.org/packages/6d/d6/717f0f19bcf2c4705ad95550b4b6319a0d8d1d4f137ea5e223207f00df50/yarl-1.11.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09696438cb43ea6f9492ef237761b043f9179f455f405279e609f2bc9100212a", size = 501084 }, + { url = "https://files.pythonhosted.org/packages/14/b5/b93c70d9a462b802c8df65c64b85f49d86b4ba70c393fbad95cf7ec053cb/yarl-1.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:999bfee0a5b7385a0af5ffb606393509cfde70ecca4f01c36985be6d33e336da", size = 491776 }, + { url = "https://files.pythonhosted.org/packages/03/0f/5a52eaa402a6a93265ba82f42c6f6085ccbe483e1b058ad34207e75812b1/yarl-1.11.1-cp313-cp313-win32.whl", hash = "sha256:ce928c9c6409c79e10f39604a7e214b3cb69552952fbda8d836c052832e6a979", size = 485250 }, + { url = "https://files.pythonhosted.org/packages/dd/97/946d26a5d82706a6769399cabd472c59f9a3227ce1432afb4739b9c29572/yarl-1.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:501c503eed2bb306638ccb60c174f856cc3246c861829ff40eaa80e2f0330367", size = 492590 }, + { url = "https://files.pythonhosted.org/packages/5b/b3/841f7d706137bdc8b741c6826106b6f703155076d58f1830f244da857451/yarl-1.11.1-py3-none-any.whl", hash = "sha256:72bf26f66456baa0584eff63e44545c9f0eaed9b73cb6601b647c91f14c11f38", size = 38648 }, +] + +[[package]] +name = "zarr" +version = "2.18.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asciitree" }, + { name = "fasteners", marker = "sys_platform != 'emscripten'" }, + { name = "numcodecs" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/c4/187a21ce7cf7c8f00c060dd0e04c2a81139bb7b1ab178bba83f2e1134ce2/zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce", size = 3603224 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd", size = 210723 }, +] + +[[package]] +name = "zict" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/ac/3c494dd7ec5122cff8252c1a209b282c0867af029f805ae9befd73ae37eb/zict-3.0.0.tar.gz", hash = "sha256:e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5", size = 33238 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae", size = 43332 }, +] + +[[package]] +name = "zipp" +version = "3.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/8b/1239a3ef43a0d0ebdca623fb6413bc7702c321400c5fdd574f0b7aa0fbb4/zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b", size = 23848 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/9e/c96f7a4cd0bf5625bb409b7e61e99b1130dc63a98cb8b24aeabae62d43e8/zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064", size = 8988 }, +] From 46cd9212bf08beeda1fc9af8949123d32008c793 Mon Sep 17 00:00:00 2001 From: jkobject Date: Fri, 13 Sep 2024 10:47:12 +0200 Subject: [PATCH 4/6] better reqs and lamin update --- .../update_lamin_or_cellxgene.ipynb | 977 +++++++---------- requirements.txt | 997 +++++++++++++++--- 2 files changed, 1234 insertions(+), 740 deletions(-) diff --git a/notebooks/additional/update_lamin_or_cellxgene.ipynb b/notebooks/additional/update_lamin_or_cellxgene.ipynb index ffcf766..a8a1193 100644 --- a/notebooks/additional/update_lamin_or_cellxgene.ipynb +++ b/notebooks/additional/update_lamin_or_cellxgene.ipynb @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -84,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -93,7 +93,7 @@ "937" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -137,300 +137,69 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
namedefinitionsynonymsparents
ontology_id
CL:0000000cellA Material Entity Of Anatomical Origin (Part O...None[]
CL:0000001primary cultured cellA Cultured Cell That Is Freshly Isolated From ...primary cell culture cell|unpassaged cultured ...[CL:0000010]
CL:0000002obsolete immortal cell line cellObsolete: A Cell Line Cell That Is Expected To...permanent cell line cell|continuous cell line ...[]
CL:0000003obsolete native cellObsolete. A Cell That Is Found In A Natural Se...None[]
CL:0000004obsolete cell by organismObsolete: A Classification Of Cells By The Org...None[]
...............
CL:4042007protoplasmic astrocyteAn Astrocyte With Highly Branched Protrusions,...None[CL:0000029, CL:0002605, CL:0010012]
CL:4042008fibrous astrocyteA Cell Type Located In The First Layer Of The ...None[CL:0000029, CL:2000029, CL:0000127]
CL:4042009interlaminar astrocyteAn Astrocyte Type That Presents Radial Protrus...None[CL:0000029, CL:0002605, CL:0010012]
CL:4042010pial interlaminar astrocyteAn Interlaminar Astrocyte Whose Soma Is Part O...None[CL:4042009]
CL:4042011subpial interlaminar astrocyteAn Interlaminar Astrocyte Type Whose Soma Is P...None[CL:4042009]
\n", - "

2931 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " name \\\n", - "ontology_id \n", - "CL:0000000 cell \n", - "CL:0000001 primary cultured cell \n", - "CL:0000002 obsolete immortal cell line cell \n", - "CL:0000003 obsolete native cell \n", - "CL:0000004 obsolete cell by organism \n", - "... ... \n", - "CL:4042007 protoplasmic astrocyte \n", - "CL:4042008 fibrous astrocyte \n", - "CL:4042009 interlaminar astrocyte \n", - "CL:4042010 pial interlaminar astrocyte \n", - "CL:4042011 subpial interlaminar astrocyte \n", - "\n", - " definition \\\n", - "ontology_id \n", - "CL:0000000 A Material Entity Of Anatomical Origin (Part O... \n", - "CL:0000001 A Cultured Cell That Is Freshly Isolated From ... \n", - "CL:0000002 Obsolete: A Cell Line Cell That Is Expected To... \n", - "CL:0000003 Obsolete. A Cell That Is Found In A Natural Se... \n", - "CL:0000004 Obsolete: A Classification Of Cells By The Org... \n", - "... ... \n", - "CL:4042007 An Astrocyte With Highly Branched Protrusions,... \n", - "CL:4042008 A Cell Type Located In The First Layer Of The ... \n", - "CL:4042009 An Astrocyte Type That Presents Radial Protrus... \n", - "CL:4042010 An Interlaminar Astrocyte Whose Soma Is Part O... \n", - "CL:4042011 An Interlaminar Astrocyte Type Whose Soma Is P... \n", - "\n", - " synonyms \\\n", - "ontology_id \n", - "CL:0000000 None \n", - "CL:0000001 primary cell culture cell|unpassaged cultured ... \n", - "CL:0000002 permanent cell line cell|continuous cell line ... \n", - "CL:0000003 None \n", - "CL:0000004 None \n", - "... ... \n", - "CL:4042007 None \n", - "CL:4042008 None \n", - "CL:4042009 None \n", - "CL:4042010 None \n", - "CL:4042011 None \n", - "\n", - " parents \n", - "ontology_id \n", - "CL:0000000 [] \n", - "CL:0000001 [CL:0000010] \n", - "CL:0000002 [] \n", - "CL:0000003 [] \n", - "CL:0000004 [] \n", - "... ... \n", - "CL:4042007 [CL:0000029, CL:0002605, CL:0010012] \n", - "CL:4042008 [CL:0000029, CL:2000029, CL:0000127] \n", - "CL:4042009 [CL:0000029, CL:0002605, CL:0010012] \n", - "CL:4042010 [CL:4042009] \n", - "CL:4042011 [CL:4042009] \n", - "\n", - "[2931 rows x 4 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "names = bt.CellType.public().df()\n", - "names" - ] - }, - { - "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[92m→\u001b[0m returning existing Organism record with same name: 'unknown'\n" - ] - } - ], + "outputs": [], "source": [ - "populate_my_ontology(organisms=[\"NCBITaxon:9544\", \"NCBITaxon:9483\", \"NCBITaxon:10090\", \"NCBITaxon:9606\"])" + "bt.DevelopmentalStage.artifacts.through.objects.all().delete()\n", + "bt.DevelopmentalStage.filter().delete()" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "bt.Tissue.import_from_source() \n", + "#bt.Tissue.import_from_source() \n", "bt.DevelopmentalStage.import_from_source() " ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "name intra-acinar venule\n", - "definition A Venule That Receives Drainage From The Capil...\n", - "synonyms None\n", - "parents [UBERON:8600024, UBERON:0008874, UBERON:0010369]\n", - "Name: UBERON:8600061, dtype: object" + "array(['HsapDv:0000000', 'HsapDv:0000240', 'HsapDv:0000267',\n", + " 'HsapDv:0000226', 'HsapDv:0000258', 'HsapDv:0010000',\n", + " 'HsapDv:0000001'], dtype=object)" ] }, - "execution_count": 62, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "bt.Tissue.public().df().loc[\"UBERON:8600061\"]" + "bt.DevelopmentalStage.public().df().loc[\"HsapDv:0000144\"].parents" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "names = bt.Tissue.public().df().index\n", - "records = bt.Tissue.from_values(names, field=\"ontology_id\")\n", - "ln.save(records)\n", - "#bt.Tissue(name=\"unknown\", ontology_id=\"unknown\").save()" + "# we have a match between the sources" ] }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1BNq2HpI\n", - "\n", - "\n", - "\n", - "1BNq2HpI\n", - "\n", - "intra-acinar venule\n", - "uid=1BNq2HpI\n", - "\n", - "\n", - "\n", - "6XhlhdZp\n", - "\n", - "pulmonary venule\n", - "uid=6XhlhdZp\n", - "\n", - "\n", - "\n", - "6XhlhdZp->1BNq2HpI\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "text/plain": [ + "['HsapDv:0000000',\n", + " 'HsapDv:0000240',\n", + " 'HsapDv:0000267',\n", + " 'HsapDv:0000226',\n", + " 'HsapDv:0000258',\n", + " 'HsapDv:0010000',\n", + " 'HsapDv:0000001']" ] }, "metadata": {}, @@ -438,85 +207,60 @@ } ], "source": [ - "bt.Tissue.filter(ontology_id=\"UBERON:8600061\").one().view_parents()" + "bt.DevelopmentalStage.filter().df(include=[\"parents__ontology_id\"]).set_index(\"ontology_id\").loc[\"HsapDv:0000144\"].parents__ontology_id" ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 15, "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1BNq2HpI\n", - "\n", - "\n", - "\n", - "1BNq2HpI\n", - "\n", - "intra-acinar venule\n", - "uid=1BNq2HpI\n", - "\n", - "\n", - "\n", - "6XhlhdZp\n", - "\n", - "pulmonary venule\n", - "uid=6XhlhdZp\n", - "\n", - "\n", - "\n", - "6XhlhdZp->1BNq2HpI\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "bt.Tissue.from_values([\"UBERON:8600061\"], field=\"ontology_id\")[0].view_parents()" + "source = bt.PublicSource.filter(organism=\"mouse\", name=\"mmusdv\").last()" ] }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 16, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['UBERON:8600024', 'UBERON:0008874', 'UBERON:0010369'], dtype=object)" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "bt.Tissue.public().df().loc[\"UBERON:8600061\"].parents" + "bt.DevelopmentalStage.import_from_source(source=source)" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# delete all old artifacts\n", + "bt.Tissue.artifacts.through.objects.all().delete()\n", + "bt.Tissue.filter().delete()\n", + "bt.Disease.artifacts.through.objects.all().delete()\n", + "bt.Disease.filter().delete()\n", + "bt.CellType.artifacts.through.objects.all().delete()\n", + "bt.CellType.filter().delete()\n", + "bt.ExperimentalFactor.artifacts.through.objects.all().delete()\n", + "bt.ExperimentalFactor.filter().delete()\n", + "bt.Ethnicity.artifacts.through.objects.all().delete()\n", + "bt.Ethnicity.filter().delete()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92m→\u001b[0m returning existing Organism record with same name: 'unknown'\n", + "\u001b[92m→\u001b[0m returning existing Phenotype record with same name: 'unknown'\n", + "\u001b[93m!\u001b[0m record with similar name exists! did you mean to load it?\n" + ] + }, { "data": { "text/html": [ @@ -538,450 +282,445 @@ " \n", " \n", " \n", - " parents__ontology_id\n", " uid\n", " name\n", " ontology_id\n", " abbr\n", " synonyms\n", " description\n", + " molecule\n", + " instrument\n", + " measurement\n", " source_id\n", " run_id\n", " created_by_id\n", " updated_at\n", " \n", + " \n", + " id\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 27\n", - " [UBERON:0001560, UBERON:0005156]\n", - " 20geV8TQ\n", - " uterine cervix\n", - " UBERON:0000002\n", + " 21073\n", + " 63btPuBB\n", + " fever of unknown origin\n", + " EFO:0003952\n", + " None\n", + " Unknown Origin Fever|Unknown Origin Fevers\n", + " Fever In Which The Etiology Cannot Be Ascertai...\n", " None\n", - " neck of uterus|uterine cervix|cervical canal o...\n", - " Lower, Narrow Portion Of The Uterus Where It J...\n", - " 24.0\n", " None\n", - " 1\n", - " 2023-11-22 12:56:57.143896+00:00\n", - " \n", - " \n", - " 28\n", - " [UBERON:0004121, UBERON:0002268, UBERON:001031...\n", - " 7adwnYzJ\n", - " nose\n", - " UBERON:0000004\n", " None\n", - " nasal sac|peripheral olfactory organ|nose\n", - " The Olfactory Organ Of Vertebrates, Consisting...\n", - " 24.0\n", + " 78\n", " None\n", " 1\n", - " 2023-11-22 12:56:57.143959+00:00\n", + " 2024-09-12 12:22:42.173128+00:00\n", + " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " uid name ontology_id abbr \\\n", + "id \n", + "21073 63btPuBB fever of unknown origin EFO:0003952 None \n", + "\n", + " synonyms \\\n", + "id \n", + "21073 Unknown Origin Fever|Unknown Origin Fevers \n", + "\n", + " description molecule instrument \\\n", + "id \n", + "21073 Fever In Which The Etiology Cannot Be Ascertai... None None \n", + "\n", + " measurement source_id run_id created_by_id \\\n", + "id \n", + "21073 None 78 None 1 \n", + "\n", + " updated_at \n", + "id \n", + "21073 2024-09-12 12:22:42.173128+00:00 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m!\u001b[0m DevelopmentalStage records from source (hsapdv, 2024-05-28) are already in the database!\n", + " → pass `update=True` to update the records\n", + "\u001b[93m!\u001b[0m DevelopmentalStage records from source (mmusdv, 2024-05-28) are already in the database!\n", + " → pass `update=True` to update the records\n", + "\u001b[92m→\u001b[0m returning existing DevelopmentalStage record with same name: 'unknown'\n", + "\u001b[93m!\u001b[0m records with similar names exist! did you mean to load one of them?\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
29[UBERON:0004119, UBERON:0034922]1H8ChOUNislet of LangerhansUBERON:0000006Nonepancreatic insula|pancreatic isletThe Clusters Of Hormone-Producing Cells That A...24.0None12023-11-22 12:56:57.144013+00:00id
30[UBERON:0004121, UBERON:0034944]4At9Dys5zone of skinUBERON:0000014270757CKxLDluobsolete congenital abnormalityMONDO:0000839Noneskin|skin region|portion of skin|skin zone|reg...Any Portion Of The Organ That Covers That Body...24.0congenital abnormality|congenital anatomic Abn...Obsolete. Any Abnormality, Anatomical Or Bioch...69None12023-11-22 12:56:57.144065+00:002024-09-12 12:22:55.501725+00:00
31[UBERON:0004119, UBERON:0000471]6Pa15wyuendocrine pancreasUBERON:0000016271175pHdg2Icobsolete myeloid and lymphoid neoplasms with e...MONDO:0000881NoneNoneendocrine pancreas|pars endocrina pancreatisThe Part Of The Pancreas That Is Part Of The E...24.0None69None12023-11-22 12:56:57.144116+00:00
....................................2024-09-12 12:22:55.504418+00:00
15571[UBERON:8600030]2Odu6v1Jchorionic terminal villous capillaryUBERON:8600041271205lzQM8ubmyeloid and lymphoid neoplasms associated with...MONDO:0000884NoneNoneA Capillary That Is Part Of A Chorionic Termin...96.0None69None12024-09-09 10:50:12.721936+00:002024-09-12 12:22:55.504609+00:00
\n", + "
" + ], + "text/plain": [ + " uid name \\\n", + "id \n", + "27075 7CKxLDlu obsolete congenital abnormality \n", + "27117 5pHdg2Ic obsolete myeloid and lymphoid neoplasms with e... \n", + "27120 5lzQM8ub myeloid and lymphoid neoplasms associated with... \n", + "\n", + " ontology_id abbr synonyms \\\n", + "id \n", + "27075 MONDO:0000839 None congenital abnormality|congenital anatomic Abn... \n", + "27117 MONDO:0000881 None None \n", + "27120 MONDO:0000884 None None \n", + "\n", + " description source_id run_id \\\n", + "id \n", + "27075 Obsolete. Any Abnormality, Anatomical Or Bioch... 69 None \n", + "27117 None 69 None \n", + "27120 None 69 None \n", + "\n", + " created_by_id updated_at \n", + "id \n", + "27075 1 2024-09-12 12:22:55.501725+00:00 \n", + "27117 1 2024-09-12 12:22:55.504418+00:00 \n", + "27120 1 2024-09-12 12:22:55.504609+00:00 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m!\u001b[0m records with similar names exist! did you mean to load one of them?\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", "
uidnameontology_idabbrsynonymsdescriptionsource_idrun_idcreated_by_idupdated_at
15574[UBERON:8600043]3y3Ugd1zleft lateral wall of urinary bladderUBERON:8600044Noneleft wall of urinary bladderA Lateral Wall Of The Urinary Bladder That Is ...96.0None12024-09-09 10:50:12.722297+00:00id
15575[UBERON:8600043]3RQjC3wGright lateral wall of urinary bladderUBERON:8600045339411wpjcCa5hemoglobin--variants for which the chain carry...MONDO:0007717Noneright wall of urinary bladderA Lateral Wall Of The Urinary Bladder That Is ...96.0NoneNone69None12024-09-09 10:50:12.722417+00:002024-09-12 12:22:56.435466+00:00
15591[UBERON:8600024]1BNq2HpIintra-acinar venuleUBERON:8600061None428112C05jMg9sporadic adult-onset ataxia of unknown etiologyMONDO:0016591NoneA Venule That Receives Drainage From The Capil...96.0SAOA|idiopathic late-onset cerebellar ataxiaSporadic Adult-Onset Ataxia Of Unknown Etiolog...69None12024-09-09 10:50:12.724339+00:002024-09-12 12:22:57.181985+00:00
15597[UBERON:8600024]HNELNNmRbronchial venuleUBERON:8600067429244sqESY3Dobsolete glial tumor of neuroepithelial tissue...MONDO:0016704NoneNoneA Venule That Is Tributary Of The Bronchial Ve...96.0None69None12024-09-09 10:50:12.725057+00:002024-09-12 12:22:57.190972+00:00
\n", - "

566 rows × 11 columns

\n", "
" ], "text/plain": [ - " parents__ontology_id uid \\\n", - "27 [UBERON:0001560, UBERON:0005156] 20geV8TQ \n", - "28 [UBERON:0004121, UBERON:0002268, UBERON:001031... 7adwnYzJ \n", - "29 [UBERON:0004119, UBERON:0034922] 1H8ChOUN \n", - "30 [UBERON:0004121, UBERON:0034944] 4At9Dys5 \n", - "31 [UBERON:0004119, UBERON:0000471] 6Pa15wyu \n", - "... ... ... \n", - "15571 [UBERON:8600030] 2Odu6v1J \n", - "15574 [UBERON:8600043] 3y3Ugd1z \n", - "15575 [UBERON:8600043] 3RQjC3wG \n", - "15591 [UBERON:8600024] 1BNq2HpI \n", - "15597 [UBERON:8600024] HNELNNmR \n", - "\n", - " name ontology_id abbr \\\n", - "27 uterine cervix UBERON:0000002 None \n", - "28 nose UBERON:0000004 None \n", - "29 islet of Langerhans UBERON:0000006 None \n", - "30 zone of skin UBERON:0000014 None \n", - "31 endocrine pancreas UBERON:0000016 None \n", - "... ... ... ... \n", - "15571 chorionic terminal villous capillary UBERON:8600041 None \n", - "15574 left lateral wall of urinary bladder UBERON:8600044 None \n", - "15575 right lateral wall of urinary bladder UBERON:8600045 None \n", - "15591 intra-acinar venule UBERON:8600061 None \n", - "15597 bronchial venule UBERON:8600067 None \n", + " uid name \\\n", + "id \n", + "33941 1wpjcCa5 hemoglobin--variants for which the chain carry... \n", + "42811 2C05jMg9 sporadic adult-onset ataxia of unknown etiology \n", + "42924 4sqESY3D obsolete glial tumor of neuroepithelial tissue... \n", "\n", - " synonyms \\\n", - "27 neck of uterus|uterine cervix|cervical canal o... \n", - "28 nasal sac|peripheral olfactory organ|nose \n", - "29 pancreatic insula|pancreatic islet \n", - "30 skin|skin region|portion of skin|skin zone|reg... \n", - "31 endocrine pancreas|pars endocrina pancreatis \n", - "... ... \n", - "15571 None \n", - "15574 left wall of urinary bladder \n", - "15575 right wall of urinary bladder \n", - "15591 None \n", - "15597 None \n", + " ontology_id abbr synonyms \\\n", + "id \n", + "33941 MONDO:0007717 None None \n", + "42811 MONDO:0016591 None SAOA|idiopathic late-onset cerebellar ataxia \n", + "42924 MONDO:0016704 None None \n", "\n", " description source_id run_id \\\n", - "27 Lower, Narrow Portion Of The Uterus Where It J... 24.0 None \n", - "28 The Olfactory Organ Of Vertebrates, Consisting... 24.0 None \n", - "29 The Clusters Of Hormone-Producing Cells That A... 24.0 None \n", - "30 Any Portion Of The Organ That Covers That Body... 24.0 None \n", - "31 The Part Of The Pancreas That Is Part Of The E... 24.0 None \n", - "... ... ... ... \n", - "15571 A Capillary That Is Part Of A Chorionic Termin... 96.0 None \n", - "15574 A Lateral Wall Of The Urinary Bladder That Is ... 96.0 None \n", - "15575 A Lateral Wall Of The Urinary Bladder That Is ... 96.0 None \n", - "15591 A Venule That Receives Drainage From The Capil... 96.0 None \n", - "15597 A Venule That Is Tributary Of The Bronchial Ve... 96.0 None \n", + "id \n", + "33941 None 69 None \n", + "42811 Sporadic Adult-Onset Ataxia Of Unknown Etiolog... 69 None \n", + "42924 None 69 None \n", "\n", " created_by_id updated_at \n", - "27 1 2023-11-22 12:56:57.143896+00:00 \n", - "28 1 2023-11-22 12:56:57.143959+00:00 \n", - "29 1 2023-11-22 12:56:57.144013+00:00 \n", - "30 1 2023-11-22 12:56:57.144065+00:00 \n", - "31 1 2023-11-22 12:56:57.144116+00:00 \n", - "... ... ... \n", - "15571 1 2024-09-09 10:50:12.721936+00:00 \n", - "15574 1 2024-09-09 10:50:12.722297+00:00 \n", - "15575 1 2024-09-09 10:50:12.722417+00:00 \n", - "15591 1 2024-09-09 10:50:12.724339+00:00 \n", - "15597 1 2024-09-09 10:50:12.725057+00:00 \n", - "\n", - "[566 rows x 11 columns]" + "id \n", + "33941 1 2024-09-12 12:22:56.435466+00:00 \n", + "42811 1 2024-09-12 12:22:57.181985+00:00 \n", + "42924 1 2024-09-12 12:22:57.190972+00:00 " ] }, - "execution_count": 65, "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bt.Tissue.filter().df(include=[\"parents__ontology_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "ename": "ProtectedError", - "evalue": "(\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mProtectedError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[11], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [i\u001b[38;5;241m.\u001b[39mdelete() \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\n", - "Cell \u001b[0;32mIn[11], line 1\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[43mi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/lamindb/_record.py:623\u001b[0m, in \u001b[0;36mdelete\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 621\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnew latest version is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_latest\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 622\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 623\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mRecord\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/base.py:1182\u001b[0m, in \u001b[0;36mModel.delete\u001b[0;34m(self, using, keep_parents)\u001b[0m\n\u001b[1;32m 1180\u001b[0m using \u001b[38;5;241m=\u001b[39m using \u001b[38;5;129;01mor\u001b[39;00m router\u001b[38;5;241m.\u001b[39mdb_for_write(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, instance\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 1181\u001b[0m collector \u001b[38;5;241m=\u001b[39m Collector(using\u001b[38;5;241m=\u001b[39musing, origin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m-> 1182\u001b[0m \u001b[43mcollector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcollect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeep_parents\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeep_parents\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m collector\u001b[38;5;241m.\u001b[39mdelete()\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/deletion.py:355\u001b[0m, in \u001b[0;36mCollector.collect\u001b[0;34m(self, objs, source, nullable, collect_related, source_attr, reverse_dependency, keep_parents, fail_on_restricted)\u001b[0m\n\u001b[1;32m 353\u001b[0m protected_objects[key] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m error\u001b[38;5;241m.\u001b[39mprotected_objects\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m protected_objects:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ProtectedError(\n\u001b[1;32m 356\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot delete some instances of model \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m because they are \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 357\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreferenced through protected foreign keys: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 358\u001b[0m \u001b[38;5;241m%\u001b[39m (\n\u001b[1;32m 359\u001b[0m model\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m,\n\u001b[1;32m 360\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(protected_objects),\n\u001b[1;32m 361\u001b[0m ),\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28mset\u001b[39m(chain\u001b[38;5;241m.\u001b[39mfrom_iterable(protected_objects\u001b[38;5;241m.\u001b[39mvalues())),\n\u001b[1;32m 363\u001b[0m )\n\u001b[1;32m 364\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m related_model, related_fields \u001b[38;5;129;01min\u001b[39;00m model_fast_deletes\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 365\u001b[0m batches \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_del_batches(new_objs, related_fields)\n", - "\u001b[0;31mProtectedError\u001b[0m: (\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})" - ] + "output_type": "display_data" } ], "source": [ - "[i.delete() for i in bt.DevelopmentalStage.filter()]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# load the latest datasets / load datasets that were initially dropped" + "# more straightforward\n", + "populate_my_ontology(organisms=[\"NCBITaxon:9544\", \"NCBITaxon:9483\", \"NCBITaxon:10090\", \"NCBITaxon:9606\"])" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(['HsapDv:0000000', 'HsapDv:0000240', 'HsapDv:0000267',\n", - " 'HsapDv:0000226', 'HsapDv:0000258', 'HsapDv:0010000',\n", - " 'HsapDv:0000001'], dtype=object)" + "[Disease(uid='4oYaDnBG', name='alopecia', ontology_id='MONDO:0004907', synonyms='alopecia|hair loss|loss Of hair', description='Hair Loss Usually From The Scalp. It May Result In Bald Spots Or Spread To The Entire Scalp Or The Entire Epidermis. It May Be Androgenetic Or Caused By Chemotherapeutic Agents, Compulsive Hair Pulling, Autoimmune Disorders Or Congenital Conditions.', created_by_id=1, source_id=69, updated_at='2024-09-12 12:22:56 UTC'),\n", + " Disease(uid='1KQgvwK8', name='hereditary skin disorder', ontology_id='MONDO:0100118', synonyms='genodermatosis|diseases, genetic skin|skin disease, genetic|genetic skin diseases|disease, genetic skin|genetic skin disease', description='An Instance Of Skin Disease That Is Caused By A Modification Of The Individual'S Genome.', created_by_id=1, source_id=69, updated_at='2024-09-12 12:22:58 UTC')]" ] }, - "execution_count": 5, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bt.DevelopmentalStage.public().df().loc[\"HsapDv:0000144\"].parents" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2iDmILg8\n", - "\n", - "\n", - "\n", - "2iDmILg8\n", - "\n", - " <50-year-old human stage<BR/><FONT COLOR="GREY" POINT-SIZE="10" FACE="Monospace">uid=2iDmILg8</FONT>>\n", - "\n", - "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "bt.DevelopmentalStage.filter(ontology_id=\"HsapDv:0000144\").one().view_parents()#.df(include=[\"parents\"])" + "list(bt.Disease.filter(ontology_id=\"MONDO:0000005\").one().parents.filter())" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "array(['MONDO:0100118', 'MONDO:0004907'], dtype=object)" ] }, - "execution_count": 9, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bt.DevelopmentalStage.filter(ontology_id=\"HsapDv:0000144\").one().parents.filter()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "bt.DevelopmentalStage.import_from_source(update=True)" + "bt.Disease.public().df().loc[\"MONDO:0000005\"].parents" ] }, { - "cell_type": "code", - "execution_count": 25, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "ename": "ProtectedError", - "evalue": "(\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mProtectedError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[25], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [i\u001b[38;5;241m.\u001b[39mdelete() \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\u001b[38;5;66;03m#.delete()\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#bt.DevelopmentalStage.import_from_source()\u001b[39;00m\n", - "Cell \u001b[0;32mIn[25], line 1\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[43mi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m bt\u001b[38;5;241m.\u001b[39mDevelopmentalStage\u001b[38;5;241m.\u001b[39mfilter()]\u001b[38;5;66;03m#.delete()\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#bt.DevelopmentalStage.import_from_source()\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/lamindb/_record.py:600\u001b[0m, in \u001b[0;36mdelete\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 598\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnew latest version is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_latest\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 599\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 600\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mRecord\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/base.py:1182\u001b[0m, in \u001b[0;36mModel.delete\u001b[0;34m(self, using, keep_parents)\u001b[0m\n\u001b[1;32m 1180\u001b[0m using \u001b[38;5;241m=\u001b[39m using \u001b[38;5;129;01mor\u001b[39;00m router\u001b[38;5;241m.\u001b[39mdb_for_write(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, instance\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 1181\u001b[0m collector \u001b[38;5;241m=\u001b[39m Collector(using\u001b[38;5;241m=\u001b[39musing, origin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m-> 1182\u001b[0m \u001b[43mcollector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcollect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeep_parents\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeep_parents\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m collector\u001b[38;5;241m.\u001b[39mdelete()\n", - "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/django/db/models/deletion.py:355\u001b[0m, in \u001b[0;36mCollector.collect\u001b[0;34m(self, objs, source, nullable, collect_related, source_attr, reverse_dependency, keep_parents, fail_on_restricted)\u001b[0m\n\u001b[1;32m 353\u001b[0m protected_objects[key] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m error\u001b[38;5;241m.\u001b[39mprotected_objects\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m protected_objects:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ProtectedError(\n\u001b[1;32m 356\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot delete some instances of model \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m because they are \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 357\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreferenced through protected foreign keys: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 358\u001b[0m \u001b[38;5;241m%\u001b[39m (\n\u001b[1;32m 359\u001b[0m model\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m,\n\u001b[1;32m 360\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(protected_objects),\n\u001b[1;32m 361\u001b[0m ),\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28mset\u001b[39m(chain\u001b[38;5;241m.\u001b[39mfrom_iterable(protected_objects\u001b[38;5;241m.\u001b[39mvalues())),\n\u001b[1;32m 363\u001b[0m )\n\u001b[1;32m 364\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m related_model, related_fields \u001b[38;5;129;01min\u001b[39;00m model_fast_deletes\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 365\u001b[0m batches \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_del_batches(new_objs, related_fields)\n", - "\u001b[0;31mProtectedError\u001b[0m: (\"Cannot delete some instances of model 'DevelopmentalStage' because they are referenced through protected foreign keys: 'ArtifactDevelopmentalStage.developmentalstage'.\", {ArtifactDevelopmentalStage(created_by_id=1, artifact_id=13, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=1, developmentalstage_id=1), ArtifactDevelopmentalStage(created_by_id=1, artifact_id=4, developmentalstage_id=1)})" - ] - } - ], "source": [ - "[i.delete() for i in bt.DevelopmentalStage.filter()]#.delete()\n", - "#bt.DevelopmentalStage.import_from_source()" + "# load the latest datasets / load datasets that were initially dropped" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "1" + "[Collection(uid='dMyEX3NTfKOEYXyMu591', version='2023-12-15', is_latest=False, name='cellxgene-census', hash='0NB32iVKG5ttaW5XILvG', visibility=1, created_by_id=1, transform_id=19, run_id=24, updated_at='2024-01-30 09:09:49 UTC'),\n", + " Collection(uid='dMyEX3NTfKOEYXyMKDAQ', version='2023-07-25', is_latest=False, name='cellxgene-census', hash='pEJ9uvIeTLvHkZW2TBT5', visibility=1, created_by_id=1, transform_id=18, run_id=23, updated_at='2024-01-30 09:06:05 UTC'),\n", + " Collection(uid='dMyEX3NTfKOEYXyMKDD7', version='2024-07-01', is_latest=True, name='cellxgene-census', hash='nI8Ag-HANeOpZOz-8CSn', visibility=1, created_by_id=1, transform_id=22, run_id=27, updated_at='2024-07-16 12:24:38 UTC')]" ] }, - "execution_count": 80, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(list(bt.Disease.filter(ontology_id=\"MONDO:0000005\").one().parents.filter()))" + "list(ln.Collection.using(instance=\"laminlabs/cellxgene\").filter(name=\"cellxgene-census\").all())" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 26, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m!\u001b[0m no run & transform get linked, consider calling ln.context.track()\n" + ] + }, { "data": { "text/plain": [ - "array(['MONDO:0100118', 'MONDO:0004907'], dtype=object)" + "(Collection(uid='dMyEX3NTfKOEYXyMKDD7', version='2024-07-01', is_latest=True, name='cellxgene-census', hash='nI8Ag-HANeOpZOz-8CSn', visibility=1, created_by_id=1, transform_id=22, run_id=27, updated_at='2024-07-16 12:24:38 UTC'),\n", + " 812)" ] }, - "execution_count": 75, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bt.Disease.public().df().loc[\"MONDO:0000005\"].parents" + "cx_dataset = ln.Collection.using(instance=\"laminlabs/cellxgene\").filter(name=\"cellxgene-census\", version='2024-07-01').one()\n", + "cx_dataset, len(cx_dataset.artifacts.all())" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, diff --git a/requirements.txt b/requirements.txt index 6a1fca4..2746c0d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,281 +1,1036 @@ -accelerate==0.28.0 +# This file was autogenerated by uv via the following command: +# uv pip compile pyproject.toml -o requirements.txt +absl-py==2.1.0 + # via chex aiobotocore==2.11.2 + # via s3fs aiohttp==3.9.3 + # via + # aiobotocore + # fsspec + # pyscenic + # s3fs aioitertools==0.11.0 + # via aiobotocore aiosignal==1.3.1 + # via aiohttp anndata==0.10.3 + # via + # scprint (pyproject.toml) + # bengrn + # cellxgene-census + # decoupler + # grnndata + # lamindb + # scanpy + # scdataloader + # scib + # scib-metrics + # somacore + # tiledbsoma +annotated-types==0.7.0 + # via pydantic antlr4-python3-runtime==4.9.3 + # via + # hydra-core + # omegaconf anyio==4.2.0 + # via httpcore appdirs==1.4.4 -argon2-cffi==23.1.0 -argon2-cffi-bindings==21.2.0 -array_api_compat==1.4.1 -arrow==1.3.0 + # via + # lamindb-setup + # wandb +arboreto==0.1.6 + # via + # bengrn + # pyscenic +array-api-compat==1.4.1 + # via anndata +asciitree==0.3.3 + # via zarr asgiref==3.7.2 + # via django asttokens==2.4.1 -async-lru==2.0.4 -async-timeout==4.0.3 + # via stack-data attridict==0.0.8 + # via scprint (pyproject.toml) attrs==23.2.0 -Babel==2.14.0 + # via + # aiohttp + # omnipath + # pyscenic + # somacore + # tiledbsoma beautifulsoup4==4.12.3 + # via gget +bengrn==1.1.0 + # via scprint (pyproject.toml) bio==1.6.2 + # via scprint (pyproject.toml) biomart==0.9.2 -bionty==0.42.6 -bionty-base==0.37.2 + # via + # scprint (pyproject.toml) + # scdataloader +bionty==0.49.0 + # via + # scprint (pyproject.toml) + # scdataloader biopython==1.83 + # via bio biothings-client==0.3.1 -bitsandbytes==0.43.0 -bleach==6.1.0 + # via mygene +bokeh==3.5.2 + # via dask +boltons==24.0.0 + # via pyscenic botocore==1.34.34 -cachetools==5.3.3 + # via + # aiobotocore + # lamindb-setup cellxgene-census==1.10.2 + # via + # scprint (pyproject.toml) + # scdataloader certifi==2024.2.2 -cffi==1.16.0 + # via + # httpcore + # httpx + # requests + # sentry-sdk chardet==5.2.0 + # via pronto charset-normalizer==3.3.2 + # via requests +chex==0.1.86 + # via scib-metrics click==8.1.7 -cmake==3.28.3 + # via + # dask + # distributed + # loompy + # rich-click + # wandb +cloudpickle==3.0.0 + # via + # dask + # distributed + # pyscenic +colourmap==1.1.17 + # via d3graph comm==0.2.1 + # via + # ipykernel + # ipywidgets contourpy==1.2.0 + # via + # bokeh + # matplotlib +ctxcore==0.2.0 + # via + # bengrn + # pyscenic cycler==0.12.1 -datasets==2.18.0 + # via matplotlib +cytoolz==0.12.3 + # via + # ctxcore + # pyscenic +d3graph==2.5.0 + # via grnndata +dask==2024.8.2 + # via + # arboreto + # dask-expr + # distributed + # pyscenic +dask-expr==1.1.13 + # via + # bengrn + # dask +datazets==0.1.9 + # via d3graph debugpy==1.8.1 + # via ipykernel decorator==5.1.1 + # via ipython decoupler==1.5.0 -defusedxml==0.7.1 -Deprecated==1.2.14 + # via + # scprint (pyproject.toml) + # bengrn + # scdataloader +deprecated==1.2.14 + # via scib deprecation==2.1.0 + # via postgrest dill==0.3.8 + # via multiprocessing-on-dill +distributed==2024.8.2 + # via + # arboreto + # dask + # pyscenic dj-database-url==2.1.0 -Django==5.0.2 + # via lamindb-setup +django==5.0.2 + # via + # scprint (pyproject.toml) + # dj-database-url + # lamindb-setup + # scdataloader docker-pycreds==0.4.0 + # via wandb +docrep==0.3.2 + # via omnipath docstring-parser==0.15 + # via scprint (pyproject.toml) einops==0.7.0 -evaluate==0.4.1 -exceptiongroup==1.2.0 + # via scprint (pyproject.toml) executing==2.0.1 -git+https://github.com/facebookresearch/esm.git@2b369911bb5b4b0dda914521b9475cad1656b2ac -fastjsonschema==2.19.1 + # via stack-data +fair-esm==2.0.0 + # via scprint (pyproject.toml) +fasteners==0.19 + # via zarr fastobo==0.12.3 + # via pronto filelock==3.13.1 + # via + # bionty + # huggingface-hub + # torch + # triton fonttools==4.49.0 -fqdn==1.5.1 + # via matplotlib +frozendict==2.4.4 + # via + # ctxcore + # pyscenic frozenlist==1.4.1 + # via + # aiohttp + # aiosignal fsspec==2024.2.0 -git+https://github.com/jiaweizzhao/GaLore@a6bc1650984b1c090a4e108d7c0e3109ee7ad844#egg=galore_torch + # via + # dask + # huggingface-hub + # lamindb + # lightning + # pyscenic + # pytorch-lightning + # s3fs + # torch + # universal-pathlib gget==0.28.4 + # via scprint (pyproject.toml) gitdb==4.0.11 -GitPython==3.1.42 + # via gitpython +gitpython==3.1.42 + # via wandb gotrue==2.1.0 + # via + # lamindb-setup + # supabase gprofiler-official==1.0.0 + # via bio graphviz==0.20.1 + # via lamindb +grnndata==1.1.2 + # via + # scprint (pyproject.toml) + # bengrn gseapy==1.1.1 + # via + # scprint (pyproject.toml) + # grnndata h11==0.14.0 + # via httpcore h5py==3.10.0 + # via + # anndata + # loompy + # scanpy + # scib +hdbscan==0.8.38.post1 + # via scprint (pyproject.toml) httpcore==0.17.3 + # via httpx httpx==0.24.1 + # via + # gotrue + # postgrest + # storage3 + # supabase + # supafunc huggingface-hub==0.20.3 + # via scprint (pyproject.toml) hydra-core==1.3.2 + # via scprint (pyproject.toml) idna==3.6 + # via + # anyio + # httpx + # requests + # yarl igraph==0.11.4 + # via + # leidenalg + # louvain + # scib + # scib-metrics +importlib-metadata==8.4.0 + # via dask importlib-resources==6.1.1 + # via typeshed-client +inflect==7.4.0 + # via omnipath +interlap==0.2.7 + # via pyscenic ipykernel==6.29.2 + # via + # scprint (pyproject.toml) + # scdataloader ipython==8.21.0 + # via + # gget + # ipykernel + # ipywidgets + # pyvis ipywidgets==8.1.2 -isoduration==20.11.0 + # via gget +ismember==1.0.5 + # via d3graph +jax==0.4.31 + # via + # chex + # scib-metrics +jaxlib==0.4.31 + # via + # chex + # jax + # scib-metrics jedi==0.19.1 -Jinja2==3.1.3 + # via ipython +jinja2==3.1.3 + # via + # bokeh + # d3graph + # dask + # distributed + # pyvis + # torch jmespath==1.0.1 + # via botocore joblib==1.3.2 -json5==0.9.17 + # via + # hdbscan + # pynndescent + # scanpy + # scikit-learn jsonargparse==4.27.5 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-specifications==2023.12.1 -jupyter==1.0.0 -jupyter-console==6.6.3 -jupyter-events==0.9.0 -jupyter-lsp==2.2.3 -jupyter_client==8.6.0 -jupyter_core==5.7.1 -jupyter_server==2.12.5 -jupyter_server_terminals==0.5.2 -jupyterlab==4.1.2 -jupyterlab_pygments==0.3.0 -jupyterlab_server==2.25.3 -jupyterlab_widgets==3.0.10 + # via scprint (pyproject.toml) +jsonpickle==3.3.0 + # via pyvis +jupyter-client==8.6.0 + # via ipykernel +jupyter-core==5.7.1 + # via + # ipykernel + # jupyter-client +jupyterlab-widgets==3.0.10 + # via ipywidgets kiwisolver==1.4.5 -lamin_cli==0.12.1 -lamin_utils==0.13.1 -lamindb==0.69.9 -lamindb_setup==0.69.0 + # via matplotlib +lamin-cli==0.16.2 + # via lamindb +lamin-utils==0.13.4 + # via + # lamindb + # lamindb-setup +lamindb==0.76.3 + # via + # scprint (pyproject.toml) + # bionty + # scdataloader +lamindb-setup==0.76.7 + # via lamindb leidenalg==0.10.2 + # via + # scprint (pyproject.toml) + # grnndata + # scdataloader + # scib lightning==2.2.0.post0 + # via + # scprint (pyproject.toml) + # scdataloader lightning-utilities==0.10.1 -lion-pytorch==0.1.2 -lit==17.0.6 + # via + # lightning + # pytorch-lightning + # torchmetrics llvmlite==0.42.0 -lnschema_bionty==0.41.7 -lnschema_core==0.64.6 -loguru==0.7.2 + # via + # numba + # pynndescent + # pyscenic + # scib +lnschema-core==0.73.3 + # via + # lamindb + # lamindb-setup +locket==1.0.0 + # via + # distributed + # partd +loompy==3.0.7 + # via pyscenic +louvain==0.8.2 + # via + # scprint (pyproject.toml) + # grnndata lxml==5.1.0 + # via gget +lz4==4.3.3 + # via dask markdown-it-py==3.0.0 -MarkupSafe==2.1.5 + # via rich +markupsafe==2.0.1 + # via + # d3graph + # jinja2 matplotlib==3.8.3 + # via + # scprint (pyproject.toml) + # colourmap + # gget + # gseapy + # plottable + # powerlaw + # scanpy + # scdataloader + # scib + # scib-metrics + # seaborn matplotlib-inline==0.1.6 + # via + # ipykernel + # ipython mdurl==0.1.2 -mistune==3.0.2 + # via markdown-it-py +ml-dtypes==0.4.0 + # via + # jax + # jaxlib +more-itertools==10.5.0 + # via inflect mpmath==1.3.0 + # via + # powerlaw + # sympy +msgpack==1.1.0 + # via distributed multidict==6.0.5 -multiprocess==0.70.16 + # via + # aiohttp + # yarl +multiprocessing-on-dill==3.5.0a4 + # via pyscenic mygene==3.2.2 + # via bio mysql-connector-python==8.0.29 + # via gget natsort==8.4.0 -nbclient==0.9.0 -nbconvert==7.16.1 -nbformat==5.9.2 + # via + # anndata + # grnndata + # scanpy nest-asyncio==1.6.0 + # via ipykernel networkx==3.2.1 -notebook==7.1.1 -notebook_shim==0.2.4 + # via + # d3graph + # grnndata + # pronto + # pyscenic + # python-louvain + # pyvis + # scanpy + # torch numba==0.59.0 + # via + # ctxcore + # decoupler + # loompy + # pynndescent + # pyscenic + # scanpy + # scib + # somacore + # tiledbsoma + # umap-learn +numcodecs==0.13.0 + # via zarr +numexpr==2.10.1 + # via pyscenic numpy==1.26.4 -nvidia-cublas-cu11==11.10.3.66 -nvidia-cuda-cupti-cu11==11.7.101 + # via + # scprint (pyproject.toml) + # anndata + # arboreto + # bengrn + # biopython + # bokeh + # cellxgene-census + # chex + # colourmap + # contourpy + # ctxcore + # d3graph + # dask + # datazets + # gget + # grnndata + # gseapy + # h5py + # hdbscan + # ismember + # jax + # jaxlib + # lightning + # loompy + # matplotlib + # ml-dtypes + # numba + # numcodecs + # numexpr + # numpy-groupies + # opt-einsum + # pandas + # patsy + # plottable + # powerlaw + # pyarrow + # pyscenic + # python-louvain + # pytorch-lightning + # scanpy + # scib + # scib-metrics + # scikit-learn + # scikit-misc + # scipy + # seaborn + # somacore + # statsmodels + # tensorly + # tiledb + # torchmetrics + # torchtext + # torchvision + # umap-learn + # zarr +numpy-groupies==0.11.2 + # via loompy +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch nvidia-cuda-cupti-cu12==12.1.105 -nvidia-cuda-nvrtc-cu11==11.7.99 + # via torch nvidia-cuda-nvrtc-cu12==12.1.105 -nvidia-cuda-runtime-cu11==11.7.99 + # via torch nvidia-cuda-runtime-cu12==12.1.105 -nvidia-cudnn-cu11==8.5.0.96 -nvidia-cufft-cu11==10.9.0.58 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch nvidia-cufft-cu12==11.0.2.54 -nvidia-curand-cu11==10.2.10.91 + # via torch nvidia-curand-cu12==10.3.2.106 -nvidia-cusolver-cu11==11.4.0.1 -nvidia-cusparse-cu11==11.7.4.91 -nvidia-ml-py==12.535.133 -nvidia-nccl-cu11==2.14.3 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch nvidia-nccl-cu12==2.19.3 + # via torch nvidia-nvjitlink-cu12==12.3.101 -nvidia-nvtx-cu11==11.7.91 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 nvidia-nvtx-cu12==12.1.105 -nvitop==1.3.2 + # via torch omegaconf==2.3.0 -overrides==7.7.0 + # via hydra-core +omnipath==1.0.8 + # via bengrn +opt-einsum==3.3.0 + # via jax owlready2==0.45 + # via scprint (pyproject.toml) packaging==23.2 + # via + # anndata + # bokeh + # d3graph + # dask + # deprecation + # distributed + # huggingface-hub + # hydra-core + # ipykernel + # lightning + # lightning-utilities + # matplotlib + # omnipath + # pooch + # pytorch-lightning + # scanpy + # statsmodels + # tiledb + # torchmetrics pandas==2.2.0 -pandocfilters==1.5.1 + # via + # scprint (pyproject.toml) + # anndata + # arboreto + # bengrn + # bio + # bokeh + # ctxcore + # d3graph + # dask + # dask-expr + # datazets + # gget + # gseapy + # lamindb + # omnipath + # plottable + # pyscenic + # scanpy + # scdataloader + # scib + # scib-metrics + # seaborn + # somacore + # statsmodels + # tiledbsoma parso==0.8.3 + # via jedi +partd==1.4.2 + # via dask patsy==0.5.6 -peft==0.9.0 + # via + # scanpy + # statsmodels pexpect==4.9.0 -pillow==10.2.0 + # via ipython +pillow==10.2.0 + # via + # bokeh + # matplotlib + # plottable + # torchvision platformdirs==4.2.0 + # via + # jupyter-core + # pooch +plottable==0.1.5 + # via scib-metrics pooch==1.8.0 + # via bio postgrest==0.13.2 -prometheus_client==0.20.0 + # via supabase +powerlaw==1.5 + # via grnndata prompt-toolkit==3.0.43 + # via ipython pronto==2.5.5 + # via bionty protobuf==4.25.3 + # via + # mysql-connector-python + # wandb psutil==5.9.8 + # via + # distributed + # ipykernel + # lamindb-setup + # wandb psycopg2-binary==2.9.9 + # via lamindb ptyprocess==0.7.0 + # via pexpect pure-eval==0.2.2 + # via stack-data pyarrow==15.0.0 + # via + # ctxcore + # dask + # dask-expr + # lamindb + # somacore + # tiledbsoma pyarrow-hotfix==0.6 -pycparser==2.21 -pydantic==1.10.14 + # via + # somacore + # tiledbsoma +pydantic==2.9.1 + # via + # gotrue + # postgrest + # pydantic-settings +pydantic-core==2.23.3 + # via pydantic +pydantic-settings==2.4.0 + # via lamindb-setup pydot==2.0.0 -Pygments==2.17.2 + # via scib +pygments==2.17.2 + # via + # ipython + # rich pynndescent==0.5.11 + # via + # scprint (pyproject.toml) + # scib-metrics + # umap-learn pyparsing==3.1.1 + # via + # matplotlib + # pydot +pyscenic==0.12.1 + # via bengrn python-dateutil==2.8.2 + # via + # botocore + # jupyter-client + # lamindb + # matplotlib + # pandas + # pronto + # realtime + # storage3 python-dotenv==1.0.1 -python-json-logger==2.0.7 -pytorch-fast-transformers==0.4.0 + # via pydantic-settings +python-louvain==0.16 + # via d3graph pytorch-lightning==2.2.0.post0 + # via lightning pytz==2024.1 -PyYAML==6.0.1 + # via pandas +pyvis==0.3.2 + # via grnndata +pyyaml==6.0.1 + # via + # bionty + # bokeh + # ctxcore + # dask + # distributed + # huggingface-hub + # jsonargparse + # lightning + # omegaconf + # pyscenic + # pytorch-lightning + # wandb pyzmq==25.1.2 -qtconsole==5.5.1 -QtPy==2.4.1 + # via + # ipykernel + # jupyter-client rapidfuzz==3.6.1 + # via lamindb realtime==1.0.2 -referencing==0.33.0 -regex==2023.12.25 + # via supabase requests==2.31.0 -responses==0.18.0 -rfc3339-validator==0.1.4 -rfc3986-validator==0.1.1 + # via + # bio + # biomart + # bionty + # biothings-client + # cellxgene-census + # datazets + # gget + # gprofiler-official + # gseapy + # huggingface-hub + # lamindb-setup + # omnipath + # pooch + # pyscenic + # torchdata + # torchtext + # torchvision + # wandb rich==13.7.0 + # via + # scprint (pyproject.toml) + # rich-click + # scib-metrics rich-click==1.7.3 -rpds-py==0.18.0 + # via lamin-cli s3fs==2024.2.0 -safetensors==0.4.2 + # via cellxgene-census scanpy==1.9.8 -git+https://github.com/jkobject/scDataLoader@33184c502c5c9979dea4a1131f3ddec494b84b0b#egg=scdataloader&subdirectory=../../scDataLoader -scib==1.1.4 + # via + # grnndata + # scib + # scib-metrics + # tiledbsoma +scdataloader==1.1.3 + # via scprint (pyproject.toml) +scib==1.1.5 + # via scprint (pyproject.toml) +scib-metrics==0.5.1 + # via scprint (pyproject.toml) scikit-learn==1.4.1.post1 + # via + # scprint (pyproject.toml) + # arboreto + # bengrn + # grnndata + # hdbscan + # pynndescent + # pyscenic + # scanpy + # scib + # scib-metrics + # umap-learn scikit-misc==0.3.1 + # via + # scprint (pyproject.toml) + # scdataloader + # scib scipy==1.12.0 + # via + # scprint (pyproject.toml) + # anndata + # arboreto + # bengrn + # grnndata + # gseapy + # hdbscan + # jax + # jaxlib + # lamindb + # loompy + # powerlaw + # pynndescent + # pyscenic + # scanpy + # scib + # scib-metrics + # scikit-learn + # somacore + # statsmodels + # tensorly + # tiledbsoma + # umap-learn seaborn==0.13.2 -Send2Trash==1.8.2 + # via + # scprint (pyproject.toml) + # bengrn + # scanpy + # scdataloader + # scib +sentencepiece==0.2.0 + # via torchtext sentry-sdk==1.40.4 + # via wandb session-info==1.0.0 + # via scanpy setproctitle==1.3.3 + # via wandb +setuptools==74.1.2 + # via + # lightning-utilities + # loompy + # pyscenic + # wandb six==1.16.0 + # via + # asttokens + # docker-pycreds + # docrep + # patsy + # python-dateutil + # torchtext smmap==5.0.1 + # via gitdb sniffio==1.3.0 -somacore==1.0.7 + # via + # anyio + # httpcore + # httpx +somacore==1.0.8 + # via tiledbsoma +sortedcontainers==2.4.0 + # via distributed soupsieve==2.5 + # via beautifulsoup4 sqlparse==0.4.4 + # via django stack-data==0.6.3 + # via ipython statsmodels==0.14.1 + # via scanpy stdlib-list==0.10.0 + # via session-info storage3==0.7.0 -StrEnum==0.4.15 + # via supabase +strenum==0.4.15 + # via postgrest supabase==2.2.1 + # via lamindb-setup supafunc==0.3.3 + # via supabase sympy==1.12 -tensorboardX==2.6.2.2 -termcolor==2.4.0 -terminado==0.18.0 + # via torch +tblib==3.0.0 + # via distributed +tensorly==0.8.1 + # via scprint (pyproject.toml) texttable==1.7.0 + # via igraph threadpoolctl==3.3.0 + # via scikit-learn tiledb==0.25.0 -tiledbsoma==1.7.1 -tinycss2==1.2.1 -tokenizers==0.13.3 -tomli==2.0.1 -torch==2.0.0 -torchaudio==2.0.1 -torchdata==0.6.0 + # via tiledbsoma +tiledbsoma==1.7.3 + # via cellxgene-census +toolz==0.12.1 + # via + # chex + # cytoolz + # dask + # distributed + # partd +torch==2.2.0 + # via + # scprint (pyproject.toml) + # lightning + # pytorch-lightning + # scdataloader + # torchaudio + # torchdata + # torchmetrics + # torchtext + # torchvision +torchaudio==2.2.0 + # via scprint (pyproject.toml) +torchdata==0.8.0 + # via + # scprint (pyproject.toml) + # scdataloader torchmetrics==1.3.1 -torchtext==0.15.1 -torchvision==0.15.1 + # via + # lightning + # pytorch-lightning +torchtext==0.6.0 + # via scprint (pyproject.toml) +torchvision==0.17.0 + # via scprint (pyproject.toml) tornado==6.4 + # via + # bokeh + # distributed + # ipykernel + # jupyter-client tqdm==4.66.2 + # via + # bio + # ctxcore + # decoupler + # gget + # huggingface-hub + # lightning + # omnipath + # pyscenic + # pytorch-lightning + # scanpy + # scib-metrics + # torchtext + # umap-learn traitlets==5.14.1 -transformers==4.31.0 -triton==2.0.0.dev20221202 -types-python-dateutil==2.8.19.20240106 + # via + # comm + # ipykernel + # ipython + # ipywidgets + # jupyter-client + # jupyter-core + # matplotlib-inline +triton==2.2.0 + # via torch +typeguard==4.2.0 + # via inflect typeshed-client==2.4.0 -typing_extensions==4.9.0 + # via scprint (pyproject.toml) +typing-extensions==4.9.0 + # via + # cellxgene-census + # chex + # decoupler + # dj-database-url + # huggingface-hub + # lamindb + # lightning + # lightning-utilities + # omnipath + # pydantic + # pydantic-core + # pytorch-lightning + # realtime + # rich-click + # somacore + # storage3 + # tiledbsoma + # torch + # typeguard tzdata==2024.1 + # via pandas umap-learn==0.5.5 -universal-pathlib==0.1.4 -uri-template==1.3.0 + # via + # pyscenic + # scanpy + # scib + # scib-metrics +universal-pathlib==0.2.2 + # via lamindb-setup urllib3==2.0.7 + # via + # botocore + # distributed + # omnipath + # requests + # sentry-sdk + # torchdata wandb==0.16.3 + # via scprint (pyproject.toml) +wandb-core==0.17.0b11 + # via scprint (pyproject.toml) wcwidth==0.2.13 -webcolors==1.13 -webencodings==0.5.1 -websocket-client==1.7.0 + # via prompt-toolkit websockets==11.0.3 + # via realtime widgetsnbextension==4.0.10 + # via ipywidgets wrapt==1.16.0 -xxhash==3.4.1 + # via + # aiobotocore + # deprecated + # omnipath +xyzservices==2024.9.0 + # via bokeh yarl==1.9.4 + # via aiohttp +zarr==2.18.3 + # via scprint (pyproject.toml) +zict==3.0.0 + # via distributed +zipp==3.20.1 + # via importlib-metadata From 612c466e7f2d82b6b297241c8be8cfe092a8277c Mon Sep 17 00:00:00 2001 From: jkobject Date: Tue, 17 Sep 2024 14:26:31 +0200 Subject: [PATCH 5/6] adding docker --- Dockerfile | 29 +++++ README.md | 39 +++++++ .../{test_zinb1.ipynb => test_zinb.ipynb} | 55 +++++++-- .../update_lamin_or_cellxgene.ipynb | 108 ++++++++++++------ presentation.md | 51 +++++++-- 5 files changed, 227 insertions(+), 55 deletions(-) create mode 100644 Dockerfile rename notebooks/additional/{test_zinb1.ipynb => test_zinb.ipynb} (76%) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..28e448f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Use the specified base image +FROM pytorch/pytorch:2.2.0-cuda12.1-cudnn8-devel + +# Set environment variable to prevent interactive prompts +ENV DEBIAN_FRONTEND=noninteractive + +# Update the package list +RUN apt-get update -y + +# Install git +RUN apt-get install -y git + +# Install Python packages using pip +RUN git clone https://github.com/jkobject/scprint . +RUN cd scprint +RUN pip install -e ".[flash,dev]" +RUN lamin init --storage ./main --name main --schema bionty +RUN python -c 'import bionty as bt; bt.base.reset_sources(); bt.core.sync_all_sources_to_latest()' +RUN lamin load main +RUN python -c 'from scdataloader.utils import populate_my_ontology; populate_my_ontology()' + +# Set the default command (can be overridden) +CMD ["scprint", "--help"] + +# to install the nvidia-cuda-toolkit +# curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg +# curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list +# sudo apt-get update +# sudo apt-get install -y nvidia-container-toolkit \ No newline at end of file diff --git a/README.md b/README.md index 561a0e0..7b2b0dc 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,10 @@ scPRINT can be used to perform the following analyses: - [where to find the gene embeddings?](#where-to-find-the-gene-embeddings) - [Documentation](#documentation) - [Model Weights](#model-weights) + - [Docker](#docker) + - [Building the Docker Image](#building-the-docker-image) + - [Pulling the Docker Image from Docker Hub](#pulling-the-docker-image-from-docker-hub) + - [Running the Docker Container](#running-the-docker-container) - [Development](#development) - [Work in progress (PR welcomed):](#work-in-progress-pr-welcomed) @@ -263,6 +267,41 @@ For more information on usage please see the documentation in [https://www.jkobj Model weights are available on [hugging face](https://huggingface.co/jkobject/scPRINT/). +## Docker + +By using the `scPRINT Docker image`, you can bypass the complexities of manual package installation, ensuring a consistent deployment environment. Included in this repository is a Dockerfile that lets you craft a container for the project; you have the choice to either build this image on your own or conveniently pull it from Docker Hub. + +Make sure that you have the `docker` command line interface installed on your system. + +A recommended way to install docker with the correct nvidia drivers on linux is to use this [script](https://gist.github.com/xueerchen1990/baad7baa545cb547e8633bc9e5b84786) + +### Building the Docker Image + +To build the Docker image from the provided `Dockerfile`, run the following command from the root directory of this repository: + +```bash +docker build -t scprint:latest -f Dockerfile . +``` + +### Pulling the Docker Image from Docker Hub + +If you don't want to build the image yourself, you can pull it directly from Docker Hub: + +```bash +docker pull jkobject/scprint:1.1.3 +docker tag jkobject/scprint:1.1.3 scprint:latest +``` + +### Running the Docker Container + +Once you have the image (either by building it or pulling it), you can start a container with: + +```bash +docker run --gpus all --rm -it scprint:latest bash +``` + +Please note: When running the Docker container, ensure you mount any necessary folders using the -v option to access them inside the container. +` ## Development Read the [CONTRIBUTING.md](CONTRIBUTING.md) file. diff --git a/notebooks/additional/test_zinb1.ipynb b/notebooks/additional/test_zinb.ipynb similarity index 76% rename from notebooks/additional/test_zinb1.ipynb rename to notebooks/additional/test_zinb.ipynb index 41e24b0..829dd77 100644 --- a/notebooks/additional/test_zinb1.ipynb +++ b/notebooks/additional/test_zinb.ipynb @@ -123,22 +123,59 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def nb(target: Tensor, mu: Tensor, theta: Tensor, eps=1e-8):\n", + " \"\"\"\n", + " Computes the negative binomial (NB) loss.\n", + "\n", + " This function was adapted from scvi-tools.\n", + "\n", + " Args:\n", + " target (Tensor): Ground truth data.\n", + " mu (Tensor): Means of the negative binomial distribution (must have positive support).\n", + " theta (Tensor): Inverse dispersion parameter (must have positive support).\n", + " eps (float, optional): Numerical stability constant. Defaults to 1e-8.\n", + "\n", + " Returns:\n", + " Tensor: NB loss value.\n", + " \"\"\"\n", + " if theta.ndimension() == 1:\n", + " theta = theta.view(1, theta.size(0))\n", + "\n", + " log_theta_mu_eps = torch.log(theta + mu + eps)\n", + " res = (\n", + " theta * (torch.log(theta + eps) - log_theta_mu_eps)\n", + " + target * (torch.log(mu + eps) - log_theta_mu_eps)\n", + " + torch.lgamma(target + theta)\n", + " - torch.lgamma(theta)\n", + " - torch.lgamma(target + 1)\n", + " )\n", + "\n", + " return -res.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Original ZINB Loss: 1.609736680984497\n", - "Original ZINB Loss: 1.606806993484497\n", - "New ZINB Loss: 1.607421875\n" + "Original ZINB Loss: 1.615840196609497\n", + "Original ZINB Loss with error term: 1.616633653640747\n", + "New ZINB Loss: 1.615966796875\n", + "NB Loss: 1.179560899734497\n" ] } ], "source": [ "# Test both functions with the same input\n", - "THETA = 10000 # above this, nothing changes\n", + "THETA = 10_000 # above this, it gets worse\n", "\n", "TARGET = [100,10,10,1,1,0,0,0]\n", "MINPI = 0.01\n", @@ -156,11 +193,15 @@ "\n", "# Test original zinb function with error\n", "original_loss = zinb(target, mu+torch.Tensor(ERROR), theta, pi)\n", - "print(f\"Original ZINB Loss: {original_loss.item()}\")\n", + "print(f\"Original ZINB Loss with error term: {original_loss.item()}\")\n", "\n", "# Test updated zinb_sonnet function\n", "new_loss = zinb_sonnet(target, mu, theta, pi)\n", - "print(f\"New ZINB Loss: {new_loss.item()}\")" + "print(f\"New ZINB Loss: {new_loss.item()}\")\n", + "\n", + "# Test nb function\n", + "nb_loss = nb(target, mu, theta)\n", + "print(f\"NB Loss: {nb_loss.item()}\")" ] } ], diff --git a/notebooks/additional/update_lamin_or_cellxgene.ipynb b/notebooks/additional/update_lamin_or_cellxgene.ipynb index a8a1193..b7528ec 100644 --- a/notebooks/additional/update_lamin_or_cellxgene.ipynb +++ b/notebooks/additional/update_lamin_or_cellxgene.ipynb @@ -63,14 +63,15 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[92m→\u001b[0m connected lamindb: jkobject/scprint\n" + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" ] } ], @@ -84,16 +85,16 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "937" + "0" ] }, - "execution_count": 5, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -104,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -113,7 +114,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -137,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -147,9 +148,29 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/home/ml4ig1/.lamin/bionty/versions/.lamindb_current_sources.yaml'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[41], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#bt.Tissue.import_from_source() \u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mbt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDevelopmentalStage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimport_from_source\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/models.py:266\u001b[0m, in \u001b[0;36mBioRecord.import_from_source\u001b[0;34m(cls, source, ontology_ids, organism, ignore_conflicts, update)\u001b[0m\n\u001b[1;32m 263\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_add_ontology\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m add_ontology_from_df, check_source_in_db\n\u001b[1;32m 265\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mcls\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124montology_id\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m--> 266\u001b[0m \u001b[43madd_ontology_from_df\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 267\u001b[0m \u001b[43m \u001b[49m\u001b[43mregistry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[43m \u001b[49m\u001b[43montology_ids\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43montology_ids\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 269\u001b[0m \u001b[43m \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 270\u001b[0m \u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 271\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_conflicts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_conflicts\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 272\u001b[0m \u001b[43m \u001b[49m\u001b[43mupdate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mupdate\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 273\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 274\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 275\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mlamindb\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mln\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/core/_add_ontology.py:146\u001b[0m, in \u001b[0;36madd_ontology_from_df\u001b[0;34m(registry, ontology_ids, organism, source, ignore_conflicts, update)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mlamindb\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mln\u001b[39;00m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mbionty\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_bionty\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_source_record\n\u001b[0;32m--> 146\u001b[0m public \u001b[38;5;241m=\u001b[39m \u001b[43mregistry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpublic\u001b[49m\u001b[43m(\u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m df \u001b[38;5;241m=\u001b[39m prepare_dataframe(public\u001b[38;5;241m.\u001b[39mdf())\n\u001b[1;32m 149\u001b[0m \u001b[38;5;66;03m# TODO: consider StaticReference\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/models.py:394\u001b[0m, in \u001b[0;36mBioRecord.public\u001b[0;34m(cls, organism, source)\u001b[0m\n\u001b[1;32m 391\u001b[0m version \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 393\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 394\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mbionty_base\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;18;43m__name__\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 395\u001b[0m \u001b[43m \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mversion\u001b[49m\n\u001b[1;32m 396\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mAttributeError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m):\n\u001b[1;32m 398\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m source \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/entities/_developmentalstage.py:26\u001b[0m, in \u001b[0;36mDevelopmentalStage.__init__\u001b[0;34m(self, organism, source, version, **kwargs)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 21\u001b[0m organism: Optional[Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhuman\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmouse\u001b[39m\u001b[38;5;124m\"\u001b[39m]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 25\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mversion\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 30\u001b[0m \u001b[43m \u001b[49m\u001b[43minclude_id_prefixes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhsapdv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHsapDv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmmusdv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mMmusDv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 31\u001b[0m \u001b[43m \u001b[49m\u001b[43minclude_rel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpart_of\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 32\u001b[0m \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 33\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_public_ontology.py:56\u001b[0m, in \u001b[0;36mPublicOntology.__init__\u001b[0;34m(self, source, version, organism, include_id_prefixes, include_rel)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 48\u001b[0m source: \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 53\u001b[0m include_rel: \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 54\u001b[0m ):\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 56\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fetch_sources\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 58\u001b[0m \u001b[38;5;66;03m# match user input organism, source and version with currently used sources\u001b[39;00m\n\u001b[1;32m 59\u001b[0m current \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_match_sources(\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_sources,\n\u001b[1;32m 61\u001b[0m source\u001b[38;5;241m=\u001b[39msource,\n\u001b[1;32m 62\u001b[0m version\u001b[38;5;241m=\u001b[39mversion,\n\u001b[1;32m 63\u001b[0m organism\u001b[38;5;241m=\u001b[39morganism,\n\u001b[1;32m 64\u001b[0m )\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_public_ontology.py:177\u001b[0m, in \u001b[0;36mPublicOntology._fetch_sources\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_subset_to_entity\u001b[39m(df: pd\u001b[38;5;241m.\u001b[39mDataFrame, key: \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 174\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m df\u001b[38;5;241m.\u001b[39mloc[[key]] \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(df\u001b[38;5;241m.\u001b[39mloc[key], pd\u001b[38;5;241m.\u001b[39mSeries) \u001b[38;5;28;01melse\u001b[39;00m df\u001b[38;5;241m.\u001b[39mloc[key]\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_sources \u001b[38;5;241m=\u001b[39m _subset_to_entity(\n\u001b[0;32m--> 177\u001b[0m \u001b[43mdisplay_currently_used_sources\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[1;32m 178\u001b[0m )\n\u001b[1;32m 180\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_all_sources \u001b[38;5;241m=\u001b[39m _subset_to_entity(\n\u001b[1;32m 181\u001b[0m display_available_sources(), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[1;32m 182\u001b[0m )\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_display_sources.py:38\u001b[0m, in \u001b[0;36mdisplay_currently_used_sources\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Displays all currently used sources.\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \n\u001b[1;32m 26\u001b[0m \u001b[38;5;124;03mActive version is unique for entity + organism.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;124;03m >>> bt.display_currently_used_sources()\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 32\u001b[0m VERSIONS_FILE_PATH \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 33\u001b[0m settings\u001b[38;5;241m.\u001b[39mlamindb_sources\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m LAMINDB_INSTANCE_LOADED()\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m settings\u001b[38;5;241m.\u001b[39mcurrent_sources\n\u001b[1;32m 36\u001b[0m )\n\u001b[0;32m---> 38\u001b[0m versions \u001b[38;5;241m=\u001b[39m \u001b[43mload_yaml\u001b[49m\u001b[43m(\u001b[49m\u001b[43mVERSIONS_FILE_PATH\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 40\u001b[0m df_rows \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m bionty_class, bionty_class_data \u001b[38;5;129;01min\u001b[39;00m versions\u001b[38;5;241m.\u001b[39mitems():\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/dev/_io.py:15\u001b[0m, in \u001b[0;36mload_yaml\u001b[0;34m(filename, convert_dates)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mload_yaml\u001b[39m(\n\u001b[1;32m 13\u001b[0m filename: Union[\u001b[38;5;28mstr\u001b[39m, Path], convert_dates: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 14\u001b[0m ): \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m yaml\u001b[38;5;241m.\u001b[39msafe_load(f)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/ml4ig1/.lamin/bionty/versions/.lamindb_current_sources.yaml'" + ] + } + ], "source": [ "#bt.Tissue.import_from_source() \n", "bt.DevelopmentalStage.import_from_source() " @@ -157,19 +178,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array(['HsapDv:0000000', 'HsapDv:0000240', 'HsapDv:0000267',\n", - " 'HsapDv:0000226', 'HsapDv:0000258', 'HsapDv:0010000',\n", - " 'HsapDv:0000001'], dtype=object)" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/home/ml4ig1/.lamin/bionty/versions/.lamindb_current_sources.yaml'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[19], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mbt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDevelopmentalStage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpublic\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mdf()\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mHsapDv:0000144\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mparents\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/models.py:394\u001b[0m, in \u001b[0;36mBioRecord.public\u001b[0;34m(cls, organism, source)\u001b[0m\n\u001b[1;32m 391\u001b[0m version \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 393\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 394\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mbionty_base\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;18;43m__name__\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 395\u001b[0m \u001b[43m \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mversion\u001b[49m\n\u001b[1;32m 396\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mAttributeError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m):\n\u001b[1;32m 398\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m source \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/entities/_developmentalstage.py:26\u001b[0m, in \u001b[0;36mDevelopmentalStage.__init__\u001b[0;34m(self, organism, source, version, **kwargs)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 21\u001b[0m organism: Optional[Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhuman\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmouse\u001b[39m\u001b[38;5;124m\"\u001b[39m]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 25\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msource\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mversion\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morganism\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 30\u001b[0m \u001b[43m \u001b[49m\u001b[43minclude_id_prefixes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhsapdv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHsapDv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmmusdv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mMmusDv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 31\u001b[0m \u001b[43m \u001b[49m\u001b[43minclude_rel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpart_of\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 32\u001b[0m \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 33\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_public_ontology.py:56\u001b[0m, in \u001b[0;36mPublicOntology.__init__\u001b[0;34m(self, source, version, organism, include_id_prefixes, include_rel)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 48\u001b[0m source: \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 53\u001b[0m include_rel: \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 54\u001b[0m ):\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 56\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fetch_sources\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 58\u001b[0m \u001b[38;5;66;03m# match user input organism, source and version with currently used sources\u001b[39;00m\n\u001b[1;32m 59\u001b[0m current \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_match_sources(\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_sources,\n\u001b[1;32m 61\u001b[0m source\u001b[38;5;241m=\u001b[39msource,\n\u001b[1;32m 62\u001b[0m version\u001b[38;5;241m=\u001b[39mversion,\n\u001b[1;32m 63\u001b[0m organism\u001b[38;5;241m=\u001b[39morganism,\n\u001b[1;32m 64\u001b[0m )\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_public_ontology.py:177\u001b[0m, in \u001b[0;36mPublicOntology._fetch_sources\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_subset_to_entity\u001b[39m(df: pd\u001b[38;5;241m.\u001b[39mDataFrame, key: \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 174\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m df\u001b[38;5;241m.\u001b[39mloc[[key]] \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(df\u001b[38;5;241m.\u001b[39mloc[key], pd\u001b[38;5;241m.\u001b[39mSeries) \u001b[38;5;28;01melse\u001b[39;00m df\u001b[38;5;241m.\u001b[39mloc[key]\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_sources \u001b[38;5;241m=\u001b[39m _subset_to_entity(\n\u001b[0;32m--> 177\u001b[0m \u001b[43mdisplay_currently_used_sources\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[1;32m 178\u001b[0m )\n\u001b[1;32m 180\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_all_sources \u001b[38;5;241m=\u001b[39m _subset_to_entity(\n\u001b[1;32m 181\u001b[0m display_available_sources(), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[1;32m 182\u001b[0m )\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/_display_sources.py:38\u001b[0m, in \u001b[0;36mdisplay_currently_used_sources\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Displays all currently used sources.\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \n\u001b[1;32m 26\u001b[0m \u001b[38;5;124;03mActive version is unique for entity + organism.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;124;03m >>> bt.display_currently_used_sources()\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 32\u001b[0m VERSIONS_FILE_PATH \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 33\u001b[0m settings\u001b[38;5;241m.\u001b[39mlamindb_sources\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m LAMINDB_INSTANCE_LOADED()\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m settings\u001b[38;5;241m.\u001b[39mcurrent_sources\n\u001b[1;32m 36\u001b[0m )\n\u001b[0;32m---> 38\u001b[0m versions \u001b[38;5;241m=\u001b[39m \u001b[43mload_yaml\u001b[49m\u001b[43m(\u001b[49m\u001b[43mVERSIONS_FILE_PATH\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 40\u001b[0m df_rows \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m bionty_class, bionty_class_data \u001b[38;5;129;01min\u001b[39;00m versions\u001b[38;5;241m.\u001b[39mitems():\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/bionty/base/dev/_io.py:15\u001b[0m, in \u001b[0;36mload_yaml\u001b[0;34m(filename, convert_dates)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mload_yaml\u001b[39m(\n\u001b[1;32m 13\u001b[0m filename: Union[\u001b[38;5;28mstr\u001b[39m, Path], convert_dates: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 14\u001b[0m ): \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m yaml\u001b[38;5;241m.\u001b[39msafe_load(f)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/ml4ig1/.lamin/bionty/versions/.lamindb_current_sources.yaml'" + ] } ], "source": [ @@ -187,23 +214,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "['HsapDv:0000000',\n", - " 'HsapDv:0000240',\n", - " 'HsapDv:0000267',\n", - " 'HsapDv:0000226',\n", - " 'HsapDv:0000258',\n", - " 'HsapDv:0010000',\n", - " 'HsapDv:0000001']" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "KeyError", + "evalue": "'HsapDv:0000144'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/indexes/base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 3805\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_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[0;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mpandas/_libs/hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mpandas/_libs/hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'HsapDv:0000144'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[20], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mbt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDevelopmentalStage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfilter\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m(\u001b[49m\u001b[43minclude\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mparents__ontology_id\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_index\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43montology_id\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHsapDv:0000144\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241m.\u001b[39mparents__ontology_id\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/indexing.py:1191\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1189\u001b[0m maybe_callable \u001b[38;5;241m=\u001b[39m com\u001b[38;5;241m.\u001b[39mapply_if_callable(key, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj)\n\u001b[1;32m 1190\u001b[0m maybe_callable \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_deprecated_callable_usage(key, maybe_callable)\n\u001b[0;32m-> 1191\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_getitem_axis\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmaybe_callable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/indexing.py:1431\u001b[0m, in \u001b[0;36m_LocIndexer._getitem_axis\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m 1429\u001b[0m \u001b[38;5;66;03m# fall thru to straight lookup\u001b[39;00m\n\u001b[1;32m 1430\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_key(key, axis)\n\u001b[0;32m-> 1431\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_get_label\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/indexing.py:1381\u001b[0m, in \u001b[0;36m_LocIndexer._get_label\u001b[0;34m(self, label, axis)\u001b[0m\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_label\u001b[39m(\u001b[38;5;28mself\u001b[39m, label, axis: AxisInt):\n\u001b[1;32m 1380\u001b[0m \u001b[38;5;66;03m# GH#5567 this will fail if the label is not present in the axis.\u001b[39;00m\n\u001b[0;32m-> 1381\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[43mobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mxs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/generic.py:4301\u001b[0m, in \u001b[0;36mNDFrame.xs\u001b[0;34m(self, key, axis, level, drop_level)\u001b[0m\n\u001b[1;32m 4299\u001b[0m new_index \u001b[38;5;241m=\u001b[39m index[loc]\n\u001b[1;32m 4300\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 4301\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4303\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(loc, np\u001b[38;5;241m.\u001b[39mndarray):\n\u001b[1;32m 4304\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m loc\u001b[38;5;241m.\u001b[39mdtype \u001b[38;5;241m==\u001b[39m np\u001b[38;5;241m.\u001b[39mbool_:\n", + "File \u001b[0;32m~/miniconda3/envs/scprint/lib/python3.10/site-packages/pandas/core/indexes/base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3807\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[1;32m 3808\u001b[0m \u001b[38;5;28misinstance\u001b[39m(casted_key, abc\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 3809\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[1;32m 3810\u001b[0m ):\n\u001b[1;32m 3811\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[0;32m-> 3812\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[1;32m 3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[1;32m 3814\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[1;32m 3815\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[1;32m 3816\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n\u001b[1;32m 3817\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n", + "\u001b[0;31mKeyError\u001b[0m: 'HsapDv:0000144'" + ] } ], "source": [ @@ -212,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -230,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ diff --git a/presentation.md b/presentation.md index ea43d02..70ee4ae 100644 --- a/presentation.md +++ b/presentation.md @@ -1,36 +1,53 @@ # icon and intro slide -# What can 50M cells teach us about gene networks? +What can 50M cells teach us about gene networks? -## Explain Gene networks +# Introduction -## Explain scRNAseq +add a math part in all slides -## issues +explain the problem and issues by also presenting existing works -is lack of ground truth and high dimension -# Current methods +## Explain scRNAseq, very large amount of data generated -GRN inference methods, Large Cell Models claiming to map a model of the cell and doing so, can infer meaningful gene networks +Omics technologies have dramatically improved, with new modalities called single-cell RNA-seq, allowing us to measure the gene expression of individual cells. -LCM == -> +This has dramatically increase in scale with tens of millions of cells being sequenced. -GENIE3 but also GNN based, other modalities, a bunch of models +transcriptome slide: +.... -train on one dataset only, need ground truth, slow to run and small networks, mostly on ODE generated fake data +Unfortunately, this has led to a challenge in data analysis due to the large scale of the input space. With over 20,000 genes or features. x_j ∈ ℝ^n represent the gene expression vector for a single cell, where n > 20,000. d_j = f(x_j), where d_j ∈ ℝ^m and m << n. +tools to compress the data are... +large batch effects where datasets groups more by technical features like sequencer used, and how many transcripts we sequenced (also called depth) +than biological features like cell type, etc.(tools to correct for batch effects are...) +depth_j=sum_i(c_ij) +Some of the largest database of such dataset is cellxgene from the czi, totalling more than 50M cells withing 500+ datasets. +Although this still pales in comparison to the number of cells in the human body (10^13) and the human diversity of etchnicity age, disease, etc. + +## Explain Gene networks + +number of genes + +choose other slide titles -## other tools ## transformer models +re-explain the input and transformer model really well + # scPRINT +## training + ## in depth overview -# training + +what do we propose that is new? + ## encoder and input @@ -46,6 +63,16 @@ train on one dataset only, need ground truth, slow to run and small networks, mo ## Assessment +# Current methods + +GRN inference methods, Large Cell Models claiming to map a model of the cell and doing so, can infer meaningful gene networks + +LCM == -> + +GENIE3 but also GNN based, other modalities, a bunch of models + +train on one dataset only, need ground truth, slow to run and small networks, mostly on ODE generated fake data + # General overview ## omnipath From 3b3a074e7cc0286a3873f6720344654bf1bfaca1 Mon Sep 17 00:00:00 2001 From: jkobject Date: Thu, 19 Sep 2024 16:56:13 +0200 Subject: [PATCH 6/6] =?UTF-8?q?release:=20version=201.1.4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY.md | 18 ++++++++++++++++++ pyproject.toml | 4 ++-- scprint/VERSION | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index dcadd8b..aebdedc 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -4,6 +4,24 @@ Changelog (unreleased) ------------ +- Adding docker. [jkobject] +- Better reqs and lamin update. [jkobject] +- Add ruff and uv. [jkobject] +- Work in progress. [jkobject] +- Work on multiple updates. [jkobject] +- Merge remote-tracking branch 'origin/main' into dev. [jkobject] +- Better tests. [jkobject] +- Should be good now. [jkobject] +- Error. [jkobject] +- Trying precising the attenion type. [jkobject] +- Better tests. [jkobject] +- Merge branch 'main' into dev. [maestro-jk] +- Merge branch 'main' into dev. [jkobject] + + +1.1.3 (2024-09-04) +------------------ +- Release: version 1.1.3 🚀 [jkobject] - Ready now. [jkobject] diff --git a/pyproject.toml b/pyproject.toml index e4164a3..c5f17e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "scprint" -version = "1.1.3" +version = "1.1.4" license = "MIT" description = "scPRINT is a Large Cell Model for Gene Network Inference, Denoising and more from scRNAseq data" authors = ["jeremie kalfon"] @@ -10,7 +10,7 @@ keywords = ["scRNAseq","transformer","GRN","gene regulatory network","scPRINT"," [project] name = "scprint" -version = "1.1.3" +version = "1.1.4" description = "scPRINT is a Large Cell Model for Gene Network Inference, Denoising and more from scRNAseq data" authors = ["jeremie kalfon"] readme = ["README.md", "LICENSE"] diff --git a/scprint/VERSION b/scprint/VERSION index 781dcb0..65087b4 100644 --- a/scprint/VERSION +++ b/scprint/VERSION @@ -1 +1 @@ -1.1.3 +1.1.4