diff --git a/README.md b/README.md index e3dfa4c..b7b9447 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Can also be called GPN-SS (single sequence). - Specify config overrides: e.g. `--config_overrides n_layers=30` - Example: ```bash -WANDB_PROJECT=your_project python -m gpn.ss.run_mlm --do_train --do_eval \ +WANDB_PROJECT=your_project torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{print NF}') -m gpn.ss.run_mlm --do_train --do_eval \ --fp16 --report_to wandb --prediction_loss_only True --remove_unused_columns False \ --dataset_name results/dataset --tokenizer_name gonzalobenegas/tokenizer-dna-mlm \ --soft_masked_loss_weight_train 0.1 --soft_masked_loss_weight_evaluation 0.0 \ @@ -54,20 +54,21 @@ WANDB_PROJECT=your_project python -m gpn.ss.run_mlm --do_train --do_eval \ --eval_steps 10000 --logging_steps 10000 --max_steps 120000 --warmup_steps 1000 \ --learning_rate 1e-3 --lr_scheduler_type constant_with_warmup \ --run_name your_run --output_dir your_output_dir --model_type ConvNet \ - --per_device_train_batch_size 512 --per_device_eval_batch_size 512 --gradient_accumulation_steps 1 + --per_device_train_batch_size 512 --per_device_eval_batch_size 512 --gradient_accumulation_steps 1 \ + --torch_compile ``` 3. Extract embeddings - Input file requires `chrom`, `start`, `end` - Example: ```bash -python -m gpn.ss.get_embeddings windows.parquet genome.fa.gz 100 your_output_dir \ +torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{print NF}') -m gpn.ss.get_embeddings windows.parquet genome.fa.gz 100 your_output_dir \ results.parquet --per-device-batch-size 4000 --is-file --dataloader-num-workers 16 ``` 4. Variant effect prediction - Input file requires `chrom`, `pos`, `ref`, `alt` - Example: ```bash -python -m gpn.ss.run_vep variants.parquet genome.fa.gz 512 your_output_dir results.parquet \ +torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{print NF}') -m gpn.ss.run_vep variants.parquet genome.fa.gz 512 your_output_dir results.parquet \ --per-device-batch-size 4000 --is-file --dataloader-num-workers 16 ``` diff --git a/analysis/human/workflow/Snakefile b/analysis/human/workflow/Snakefile index a0cbdf3..e832635 100644 --- a/analysis/human/workflow/Snakefile +++ b/analysis/human/workflow/Snakefile @@ -56,28 +56,29 @@ hparams = { "multiz100way/89/128/64/True/defined.phastCons.percentile-75_0.05_0.001", # changing percentage - "multiz100way/89/128/64/True/defined.phastCons.percentile-75_0.50_0.001", + #"multiz100way/89/128/64/True/defined.phastCons.percentile-75_0.50_0.001", # using more species - "multiz100way/99/128/64/True/defined.phastCons.percentile-75_0.05_0.001", + #"multiz100way/99/128/64/True/defined.phastCons.percentile-75_0.05_0.001", # changing window size + "multiz100way/89/64/32/True/defined.phastCons.percentile-75_0.05_0.001", "multiz100way/89/256/128/True/defined.phastCons.percentile-75_0.05_0.001", ], "use_aux_features": [ True, - False, + #False, ], "loss_weight": [ 0.1, ], "weight_conserved": [ True, - False, + #False, ], "flip_nonconserved": [ True, - False, + #False, ], } diff --git a/analysis/human/workflow/notebooks/gwas.ipynb b/analysis/human/workflow/notebooks/gwas.ipynb index 140abde..3f40a9f 100644 --- a/analysis/human/workflow/notebooks/gwas.ipynb +++ b/analysis/human/workflow/notebooks/gwas.ipynb @@ -572,7 +572,10 @@ " \"LongSafari/hyenadna-large-1m-seqlen-hf\",\n", " \"multiz100way/89/128/64/True/defined.phastCons.percentile-75_0.05_0.001/medium/0.1/42/30000/True/True/True\",\n", "]\n", - "embedding_models = models[-3:] + [\"Enformer\"]\n", + "embedding_models = models[-3:] + [\n", + " \"Enformer\",\n", + " #\"multiz100way/89/256/128/True/defined.phastCons.percentile-75_0.05_0.001/medium/0.1/42/30000/True/True/True\",\n", + "]\n", "\n", "\n", "model_renaming = {\n", @@ -583,6 +586,8 @@ " \"phyloP-Zoonomia\": \"phyloP-241-mammals\",\n", " \"InstaDeepAI/nucleotide-transformer-2.5b-multi-species\": \"NT\",\n", " \"LongSafari/hyenadna-large-1m-seqlen-hf\": \"HyenaDNA\",\n", + " \n", + " \"multiz100way/89/256/128/True/defined.phastCons.percentile-75_0.05_0.001/medium/0.1/42/30000/True/True/True\": \"GPN-MSA-256\",\n", "}\n", "\n", "V = pd.read_parquet(f\"../../{dataset_path}/test.parquet\")\n", @@ -1900,7 +1905,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 2560/2560 [00:05<00:00, 459.16it/s]\n" + "100%|██████████| 2560/2560 [00:05<00:00, 435.23it/s]\n" ] }, { @@ -1915,7 +1920,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 256/256 [00:00<00:00, 457.41it/s]\n" + "100%|██████████| 256/256 [00:00<00:00, 443.75it/s]\n" ] }, { @@ -1930,7 +1935,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 768/768 [00:01<00:00, 481.92it/s]\n" + "100%|██████████| 768/768 [00:01<00:00, 436.82it/s]\n" ] }, { @@ -1945,7 +1950,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 5313/5313 [00:11<00:00, 456.02it/s]\n" + "100%|██████████| 5313/5313 [00:12<00:00, 419.97it/s]\n" ] }, { @@ -1962,7 +1967,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 2560/2560 [00:05<00:00, 460.34it/s]\n" + "100%|██████████| 2560/2560 [00:05<00:00, 439.83it/s]\n" ] }, { @@ -1977,7 +1982,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 256/256 [00:00<00:00, 466.68it/s]\n" + "100%|██████████| 256/256 [00:00<00:00, 437.20it/s]\n" ] }, { @@ -1992,7 +1997,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 768/768 [00:01<00:00, 485.14it/s]\n" + "100%|██████████| 768/768 [00:01<00:00, 445.33it/s]\n" ] }, { @@ -2007,7 +2012,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 5313/5313 [00:11<00:00, 461.90it/s]\n" + "100%|██████████| 5313/5313 [00:12<00:00, 427.87it/s]\n" ] }, { diff --git a/analysis/human/workflow/notebooks/mpra.ipynb b/analysis/human/workflow/notebooks/mpra.ipynb index 430e485..bb08c35 100644 --- a/analysis/human/workflow/notebooks/mpra.ipynb +++ b/analysis/human/workflow/notebooks/mpra.ipynb @@ -324,6 +324,7 @@ "embedding_models = models[-1:] + [\n", " \"InstaDeepAI/nucleotide-transformer-2.5b-multi-species\",\n", " #\"LongSafari/hyenadna-large-1m-seqlen-hf\",\n", + " #\"multiz100way/89/256/128/True/defined.phastCons.percentile-75_0.05_0.001/medium/0.1/42/30000/True/True/True\",\n", "]\n", "\n", "model_renaming = {\n", @@ -334,6 +335,8 @@ " \"phyloP-Zoonomia\": \"phyloP-241-mammals\",\n", " \"InstaDeepAI/nucleotide-transformer-2.5b-multi-species\": \"NT\",\n", " \"LongSafari/hyenadna-large-1m-seqlen-hf\": \"HyenaDNA\",\n", + " \n", + " \"multiz100way/89/256/128/True/defined.phastCons.percentile-75_0.05_0.001/medium/0.1/42/30000/True/True/True\": \"GPN-MSA-256\",\n", "}\n", "\n", "V = load_dataset(f\"../../{dataset_path}\", split=\"test\").to_pandas()\n", @@ -1224,22 +1227,15 @@ "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GPN-MSA\n", - "NT\n" - ] - } - ], + "outputs": [], "source": [ + "\"\"\"\n", "for m in embedding_models:\n", " print(m)\n", " model_name = f\"{m} - full inner product\"\n", " V[model_name] = V[features[m]].sum(axis=1)\n", - " if model_name not in models: models.append(model_name)" + " if model_name not in models: models.append(model_name)\n", + "\"\"\";" ] }, { @@ -1254,7 +1250,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 29/29 [03:14<00:00, 6.72s/it]\n" + "100%|██████████| 29/29 [00:24<00:00, 1.17it/s]\n" ] }, { @@ -1289,15 +1285,15 @@ " P-Value\n", " Element\n", " ...\n", + " NT_embedding_2553\n", + " NT_embedding_2554\n", + " NT_embedding_2555\n", + " NT_embedding_2556\n", " NT_embedding_2557\n", " NT_embedding_2558\n", " NT_embedding_2559\n", " label\n", - " GPN-MSA - full inner product\n", - " NT - full inner product\n", - " GPN-MSA - best inner product\n", " GPN-MSA - LR(inner products)\n", - " NT - best inner product\n", " NT - LR(inner products)\n", " \n", " \n", @@ -1315,15 +1311,15 @@ " 0.38889\n", " BCL11A\n", " ...\n", + " 713.731995\n", + " 280.904968\n", + " 639.018616\n", + " 611.724182\n", " 393.658295\n", " 246.889572\n", " 438.870209\n", " 0.05\n", - " 99657.101562\n", - " 1.821563e+06\n", - " 108.937408\n", " -0.047911\n", - " 390.412842\n", " -0.046358\n", " \n", " \n", @@ -1339,15 +1335,15 @@ " 0.13721\n", " BCL11A\n", " ...\n", + " 714.082642\n", + " 280.716614\n", + " 638.803955\n", + " 613.168945\n", " 393.661713\n", " 247.011124\n", " 439.019897\n", " 0.13\n", - " 99611.007812\n", - " 1.821785e+06\n", - " 106.925522\n", " -0.048028\n", - " 390.080261\n", " -0.046376\n", " \n", " \n", @@ -1363,15 +1359,15 @@ " 0.00000\n", " BCL11A\n", " ...\n", + " 713.725098\n", + " 280.945099\n", + " 638.307739\n", + " 612.376953\n", " 393.744720\n", " 246.844040\n", " 438.470886\n", " 0.70\n", - " 99599.257812\n", - " 1.821628e+06\n", - " 108.634087\n", " -0.047724\n", - " 390.127380\n", " -0.046210\n", " \n", " \n", @@ -1387,15 +1383,15 @@ " 0.00413\n", " BCL11A\n", " ...\n", + " 750.433105\n", + " 275.491791\n", + " 582.535522\n", + " 625.180237\n", " 415.684326\n", " 251.629257\n", " 489.781494\n", " 0.08\n", - " 99660.898438\n", - " 1.830362e+06\n", - " 175.392303\n", " -0.092563\n", - " 326.524475\n", " -0.056081\n", " \n", " \n", @@ -1411,15 +1407,15 @@ " 0.47756\n", " BCL11A\n", " ...\n", + " 750.523743\n", + " 275.479004\n", + " 582.367126\n", + " 626.136963\n", " 415.015259\n", " 251.971130\n", " 488.997864\n", " 0.06\n", - " 99620.968750\n", - " 1.830197e+06\n", - " 174.267456\n", " -0.092231\n", - " 326.610840\n", " -0.056132\n", " \n", " \n", @@ -1459,15 +1455,15 @@ " 0.39490\n", " ZRSh-13h2\n", " ...\n", + " 758.900330\n", + " 292.959381\n", + " 725.619385\n", + " 483.129639\n", " 444.974670\n", " 288.532288\n", " 566.185303\n", " 0.04\n", - " 99183.898438\n", - " 1.883023e+06\n", - " 63.325607\n", " -0.062691\n", - " 371.265442\n", " -0.013546\n", " \n", " \n", @@ -1483,15 +1479,15 @@ " 0.00001\n", " ZRSh-13h2\n", " ...\n", + " 758.965576\n", + " 290.691437\n", + " 722.373108\n", + " 482.941101\n", " 442.876526\n", " 288.728088\n", " 555.536621\n", " 0.10\n", - " 99236.718750\n", - " 1.879469e+06\n", - " 63.572510\n", " -0.062872\n", - " 371.033447\n", " -0.015167\n", " \n", " \n", @@ -1507,15 +1503,15 @@ " 0.33374\n", " ZRSh-13h2\n", " ...\n", + " 836.688110\n", + " 247.580978\n", + " 644.393799\n", + " 482.822723\n", " 497.064911\n", " 270.218353\n", " 438.244843\n", " 0.17\n", - " 99248.562500\n", - " 1.892339e+06\n", - " 82.958252\n", " -0.058924\n", - " 528.213379\n", " -0.051151\n", " \n", " \n", @@ -1531,15 +1527,15 @@ " 0.09092\n", " ZRSh-13h2\n", " ...\n", + " 837.419922\n", + " 247.332809\n", + " 645.774658\n", + " 483.212708\n", " 496.339264\n", " 270.630676\n", " 438.434357\n", " 0.06\n", - " 99260.968750\n", - " 1.892675e+06\n", - " 83.449821\n", " -0.058565\n", - " 527.934692\n", " -0.051021\n", " \n", " \n", @@ -1555,20 +1551,20 @@ " 0.00000\n", " ZRSh-13h2\n", " ...\n", + " 837.946411\n", + " 247.496246\n", + " 644.995850\n", + " 483.721619\n", " 497.578400\n", " 270.743286\n", " 438.467560\n", " 0.17\n", - " 99142.109375\n", - " 1.892318e+06\n", - " 81.680763\n", " -0.058472\n", - " 527.915039\n", " -0.051093\n", " \n", " \n", "\n", - "

39170 rows × 3348 columns

\n", + "

39170 rows × 3344 columns

\n", "" ], "text/plain": [ @@ -1585,59 +1581,59 @@ "39168 7 156791603 C G 654 4748 14458 0.06 0.09092 ZRSh-13h2 \n", "39169 7 156791603 C T 884 8072 24544 0.17 0.00000 ZRSh-13h2 \n", "\n", - " ... NT_embedding_2557 NT_embedding_2558 NT_embedding_2559 label \\\n", - "0 ... 393.658295 246.889572 438.870209 0.05 \n", - "1 ... 393.661713 247.011124 439.019897 0.13 \n", - "2 ... 393.744720 246.844040 438.470886 0.70 \n", - "3 ... 415.684326 251.629257 489.781494 0.08 \n", - "4 ... 415.015259 251.971130 488.997864 0.06 \n", - "... ... ... ... ... ... \n", - "39165 ... 444.974670 288.532288 566.185303 0.04 \n", - "39166 ... 442.876526 288.728088 555.536621 0.10 \n", - "39167 ... 497.064911 270.218353 438.244843 0.17 \n", - "39168 ... 496.339264 270.630676 438.434357 0.06 \n", - "39169 ... 497.578400 270.743286 438.467560 0.17 \n", + " ... NT_embedding_2553 NT_embedding_2554 NT_embedding_2555 \\\n", + "0 ... 713.731995 280.904968 639.018616 \n", + "1 ... 714.082642 280.716614 638.803955 \n", + "2 ... 713.725098 280.945099 638.307739 \n", + "3 ... 750.433105 275.491791 582.535522 \n", + "4 ... 750.523743 275.479004 582.367126 \n", + "... ... ... ... ... \n", + "39165 ... 758.900330 292.959381 725.619385 \n", + "39166 ... 758.965576 290.691437 722.373108 \n", + "39167 ... 836.688110 247.580978 644.393799 \n", + "39168 ... 837.419922 247.332809 645.774658 \n", + "39169 ... 837.946411 247.496246 644.995850 \n", "\n", - " GPN-MSA - full inner product NT - full inner product \\\n", - "0 99657.101562 1.821563e+06 \n", - "1 99611.007812 1.821785e+06 \n", - "2 99599.257812 1.821628e+06 \n", - "3 99660.898438 1.830362e+06 \n", - "4 99620.968750 1.830197e+06 \n", - "... ... ... \n", - "39165 99183.898438 1.883023e+06 \n", - "39166 99236.718750 1.879469e+06 \n", - "39167 99248.562500 1.892339e+06 \n", - "39168 99260.968750 1.892675e+06 \n", - "39169 99142.109375 1.892318e+06 \n", + " NT_embedding_2556 NT_embedding_2557 NT_embedding_2558 \\\n", + "0 611.724182 393.658295 246.889572 \n", + "1 613.168945 393.661713 247.011124 \n", + "2 612.376953 393.744720 246.844040 \n", + "3 625.180237 415.684326 251.629257 \n", + "4 626.136963 415.015259 251.971130 \n", + "... ... ... ... \n", + "39165 483.129639 444.974670 288.532288 \n", + "39166 482.941101 442.876526 288.728088 \n", + "39167 482.822723 497.064911 270.218353 \n", + "39168 483.212708 496.339264 270.630676 \n", + "39169 483.721619 497.578400 270.743286 \n", "\n", - " GPN-MSA - best inner product GPN-MSA - LR(inner products) \\\n", - "0 108.937408 -0.047911 \n", - "1 106.925522 -0.048028 \n", - "2 108.634087 -0.047724 \n", - "3 175.392303 -0.092563 \n", - "4 174.267456 -0.092231 \n", - "... ... ... \n", - "39165 63.325607 -0.062691 \n", - "39166 63.572510 -0.062872 \n", - "39167 82.958252 -0.058924 \n", - "39168 83.449821 -0.058565 \n", - "39169 81.680763 -0.058472 \n", + " NT_embedding_2559 label GPN-MSA - LR(inner products) \\\n", + "0 438.870209 0.05 -0.047911 \n", + "1 439.019897 0.13 -0.048028 \n", + "2 438.470886 0.70 -0.047724 \n", + "3 489.781494 0.08 -0.092563 \n", + "4 488.997864 0.06 -0.092231 \n", + "... ... ... ... \n", + "39165 566.185303 0.04 -0.062691 \n", + "39166 555.536621 0.10 -0.062872 \n", + "39167 438.244843 0.17 -0.058924 \n", + "39168 438.434357 0.06 -0.058565 \n", + "39169 438.467560 0.17 -0.058472 \n", "\n", - " NT - best inner product NT - LR(inner products) \n", - "0 390.412842 -0.046358 \n", - "1 390.080261 -0.046376 \n", - "2 390.127380 -0.046210 \n", - "3 326.524475 -0.056081 \n", - "4 326.610840 -0.056132 \n", - "... ... ... \n", - "39165 371.265442 -0.013546 \n", - "39166 371.033447 -0.015167 \n", - "39167 528.213379 -0.051151 \n", - "39168 527.934692 -0.051021 \n", - "39169 527.915039 -0.051093 \n", + " NT - LR(inner products) \n", + "0 -0.046358 \n", + "1 -0.046376 \n", + "2 -0.046210 \n", + "3 -0.056081 \n", + "4 -0.056132 \n", + "... ... \n", + "39165 -0.013546 \n", + "39166 -0.015167 \n", + "39167 -0.051151 \n", + "39168 -0.051021 \n", + "39169 -0.051093 \n", "\n", - "[39170 rows x 3348 columns]" + "[39170 rows x 3344 columns]" ] }, "execution_count": 10, @@ -1675,10 +1671,10 @@ "\n", "\n", "for m in embedding_models:\n", - " supervised_models.append((\n", - " f\"{m} - best inner product\",\n", - " lambda *args, m=m: train_predict_best_inner_product(*args, features[m]),\n", - " ))\n", + " #supervised_models.append((\n", + " # f\"{m} - best inner product\",\n", + " # lambda *args, m=m: train_predict_best_inner_product(*args, features[m]),\n", + " #))\n", " supervised_models.append((\n", " f\"{m} - LR(inner products)\",\n", " lambda *args, m=m: train_predict_lr(*args, features[m]),\n", @@ -1697,7 +1693,6 @@ "\n", "for Element in tqdm(V.Element.unique()):\n", " V_e = V[V.Element==Element]\n", - " y = V_e.Value.abs()\n", " for m, model in supervised_models:\n", " V.loc[V.Element==Element, m] = train_predict_lr_split(V_e, m, model)\n", " if m not in models: models.append(m)\n", @@ -1726,7 +1721,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 29/29 [00:00<00:00, 46.16it/s]\n" + "100%|██████████| 29/29 [00:00<00:00, 53.14it/s]\n" ] }, { @@ -1781,16 +1776,16 @@ " \n", " 3\n", " BCL11A\n", - " GPN-MSA - full inner product\n", - " -0.009441\n", - " -0.023669\n", + " GPN-MSA - LR(inner products)\n", + " 0.087145\n", + " 0.095749\n", " \n", " \n", " 4\n", " BCL11A\n", - " NT - full inner product\n", - " -0.014583\n", - " -0.037750\n", + " NT - LR(inner products)\n", + " 0.018009\n", + " 0.031908\n", " \n", " \n", " ...\n", @@ -1800,35 +1795,35 @@ " ...\n", " \n", " \n", - " 256\n", + " 140\n", " ZRSh-13h2\n", - " NT - full inner product\n", - " -0.044500\n", - " -0.033142\n", + " CADD\n", + " -0.014242\n", + " -0.055486\n", " \n", " \n", - " 257\n", + " 141\n", " ZRSh-13h2\n", - " GPN-MSA - best inner product\n", - " 0.069312\n", - " 0.071081\n", + " phyloP-100-vertebrates\n", + " 0.027571\n", + " -0.005961\n", " \n", " \n", - " 258\n", + " 142\n", " ZRSh-13h2\n", - " GPN-MSA - LR(inner products)\n", - " 0.152568\n", - " 0.128828\n", + " GPN-MSA\n", + " 0.049293\n", + " 0.025431\n", " \n", " \n", - " 259\n", + " 143\n", " ZRSh-13h2\n", - " NT - best inner product\n", - " -0.019291\n", - " 0.010189\n", + " GPN-MSA - LR(inner products)\n", + " 0.152568\n", + " 0.128828\n", " \n", " \n", - " 260\n", + " 144\n", " ZRSh-13h2\n", " NT - LR(inner products)\n", " 0.097812\n", @@ -1836,7 +1831,7 @@ " \n", " \n", "\n", - "

261 rows × 4 columns

\n", + "

145 rows × 4 columns

\n", "" ], "text/plain": [ @@ -1844,16 +1839,16 @@ "0 BCL11A CADD -0.053092 -0.042830\n", "1 BCL11A phyloP-100-vertebrates -0.021894 -0.004669\n", "2 BCL11A GPN-MSA 0.016952 0.018369\n", - "3 BCL11A GPN-MSA - full inner product -0.009441 -0.023669\n", - "4 BCL11A NT - full inner product -0.014583 -0.037750\n", + "3 BCL11A GPN-MSA - LR(inner products) 0.087145 0.095749\n", + "4 BCL11A NT - LR(inner products) 0.018009 0.031908\n", ".. ... ... ... ...\n", - "256 ZRSh-13h2 NT - full inner product -0.044500 -0.033142\n", - "257 ZRSh-13h2 GPN-MSA - best inner product 0.069312 0.071081\n", - "258 ZRSh-13h2 GPN-MSA - LR(inner products) 0.152568 0.128828\n", - "259 ZRSh-13h2 NT - best inner product -0.019291 0.010189\n", - "260 ZRSh-13h2 NT - LR(inner products) 0.097812 0.087402\n", + "140 ZRSh-13h2 CADD -0.014242 -0.055486\n", + "141 ZRSh-13h2 phyloP-100-vertebrates 0.027571 -0.005961\n", + "142 ZRSh-13h2 GPN-MSA 0.049293 0.025431\n", + "143 ZRSh-13h2 GPN-MSA - LR(inner products) 0.152568 0.128828\n", + "144 ZRSh-13h2 NT - LR(inner products) 0.097812 0.087402\n", "\n", - "[261 rows x 4 columns]" + "[145 rows x 4 columns]" ] }, "execution_count": 11, @@ -1888,7 +1883,7 @@ "outputs": [ { "data": { - "image/png": "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i6Wlpao33ngjYMeOHceOHDmSN3jw4LrXXnut0VXN1dVVu3fv3qOPPvroxf79+9ctXrz4ZH5+/hEnJyc88cQTvdesWVNw+PDhvLvvvvv8M888E6R7X11dnSInJyf/o48+KnzwwQf76PYfOHDAfePGjSeysrL+DgwMVO/cufPYkSNH8lasWHHy6aef7g0ACxYsKE5MTKzJz88/8vLLL5/74IMPunt7e2sOHTqUl5ubm7do0SK//Px85++++67bTTfdVJWfn38kLy/v8LBhw+qkXk97gYLkiQ6LoFajas0aVGZkoqGsDE7+/vCZkgbvlBRS7AiCaDOoWjthV+Qu97PQ3h3DH2lRAUd/f/+rN998cy0AzJw588JHH33UAwDS09MrAGDo0KF1a9eu7QoAjzzyyPnk5OR+8+bNO/fdd991v+eee87ry7pw4YKyurpaedttt9UAwAMPPHBh6tSpjZaLl156Kfitt94K6NatW8O33357SmofBUG4Zh9jzFxbs51OTk644YYbLv3444/e9957b8WWLVu8P/nkkzMbNmzwKigocB06dGgUADQ0NLCEhIQa3ftmzZpVYaw/Bw4ccDl+/Ljb2LFjIwBAq9XCz8+vUYFKT0+/CAATJkyoqampUZw/f14JAElJSZWenp4CAFy9epX94x//CDly5IibQqFAYWHhNRYlANi8eXOX/Px8d913UF1drTxy5Ijr8OHDax966KHQhoYGxZQpUypGjhwpWeGzF0hBITokOhcL/VVMnZtFzbbtCHr/PTAVDW+CIOSHUsMTdkXNWfOxD9VlLQ4M1030DbddXV0FAFCpVIJarWYA0K9fv4bu3bur165d65WTk+Px888/n7Tms15//fUz9957b+Okf/HixT5vvPFGIAB89dVXp66//nqjVoDQ0NAGncUEAAoLC539/f0bAK5g/f33385hYWENDQ0NqKmpUfbo0UPz+OOPB23atMkbAPLz84/ccccdFz/99NMe3bt31wwcOLCua9euWkEQMHr06EtZWVl/G/tcLy8vrbH9giCwfv361e/fvz/fWLupa+rh4dEob8GCBT179OjRkJmZ+bdWq4Wbm1uCqc969913T6elpV0ybNuxY8fRzMxM73vuuafPE088cXb27NktUlJthWO5eGnUwL4lwLc3A+/F8r/7lgBa64MaCdtCLhYEQdgKOeuWEESr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BJtGRUVdKSoqcrn77rt7ZWRkdOnatWvjMX5+furi4mJnw/eYgxQUgiCshlIWEwRB2Afq8nInc+0N585ZNTHUMWDAgPoDBw6467aXLFlyetu2bccqKioarRS6GJTDhw/n6buC6fjnP/9ZumDBgsYHwpYtWzyioqJioqKiYpYuXdoYRO/q6ioMHDiw7vPPP/e/6667KgzlhIaGNjz11FMXfvvttwKVSoXs7Gy3P//8062wsNAlKSkpIigoaMDatWu7ZWRkXOPm9fjjjwfpPtOa89++ffux06dPH4iIiKifO3duIAB4eHhor169anLu7Ozs3KhQKJVKoaGhgQGASqUSFAr+NpVKBbVazQBAEARkZ2fn5efnH8nPzz9y7ty5A127dtXqPsvU5zDGjG47OztrVSr+9QiCUd3G6Pt1qFQqQecuVldX13iQIAhgjJkWCMDPz09z6NChIzfeeGP1Z5991uOOO+4I1bVdvnyZubm5mTwfY5CCQhCE1VDKYoIgCPtA5ednNsjEqUcPo+5Ilpg4cWL1lStX2FtvvdVoobEUEG1IamrqpaqqKmVeXp47AIwdO7ZWNxm/8847q/SPff7558tefvnlM/7+/s1W5zMyMrpcuXKFAcDp06dVlZWVypCQkKuLFy/uNnfu3JLi4uKDxcXFB8+dO3egrKzMWT/jFgB8/PHHxbrPtPYaeHp6Cp999llRZmam79mzZ5V+fn4ajUbD9CfvrWH06NGX3nrrrcbYkN27d7tJed/Bgwc98vPznTUaDTIyMrpdd9111YbHjB07tmb9+vU+1dXVikuXLinWr1/f9cYbb6weO3ZszX//+1+fmpoaVlFRodi0aZOP7j29evW68tdff3kAwNKlSxutUePGjbv0xRdf+OkC9s+ePasEAA8PD01VVZUC4DErGo0G99xzT+Xrr79efPDgwUbltqCgwDUuLq7R/U8KpKAQBGE1cqcsJgiCIFqGT8qkaywX+ninTDrfErkKhQJZWVkFO3fu9AoKChowYMCA6Lvuuiv0lVdeOWONnOeff7707NmzZq08AJCYmHj58ccfv2C4f8OGDV0iIyNjIyMjY8aPHx8xf/78M71791b//PPP3XTB6jomTJhQsWjRIquC5TMyMnx79uw5UPcqKCho1teQkJCG5OTki++8804PALj++uurfv31V6viKUzx1VdfFe3bt88j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", + "image/png": "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8sorXcPDw2PDw8NjFy5c2EXXx3PPPecfGhrae+jQoREnTpxw0W0fOHBgpO48FBcXq4KCgvoAXNl54IEHgnVWpUWLFnV57bXXupw/f95pxIgREYMGDYpQq9VITU0NDQ8Pj42IiIhZsGBBF4BfM+Xl5aozZ87YlJiLFBSCkCnWpCwmCIIgHJuyFSt8q3ft8jHWVr1rl0/ZypW+Ten30KFDbn379q2xZt+SkhJldna2R79+/eqVh5deeqn49ddft8qKMn369Ev/+c9/OuXl5TkplUohMDCwXqt69NFHz916660RN954Y/iCBQu6XLhwoX627/vvv++UkpJyady4cVX//POPa2FhoeTZaTds2OA9YcKEcgC4cuUKKygocImMjLxmbN+jR4+6//zzz6dycnKOrFu3ruPJkyedAKC2tlYxZMiQqmPHjh0dMmRI1UcffeQHAA8++GC3uXPnnjt8+HDOmjVr8h566KFQXV8HDx5037Rp08nMzMx/DL/n0KFDHh988EHBsWPHjpw+fdpl6dKlHXXf07t379qDBw/muru7a1esWOG7d+/enKysrJylS5f67dq1y23nzp3ua9as6XTo0KGj69evP3ngwAEPS8fgnXfe8cvPz3c5cuTI0ePHjx+97777Lr700kvnu3TpUrd9+/bjf/311/H//e9/7sXFxU4nTpw4cvz48aOPPvpofU2ePn361GzdutXTluNOCgpByBS5pywmCIIg7E/5z2v9zLVX/Ly2sxTfM3PmzO6RkZExvXv3jtZty8rK8oyOjo4ZNWpUxBNPPFGSmJhY75o1bty4KgDYuHGjxYFpamrq5e3bt3f47rvvOqWmpl7Sb3viiScuHjp06EhKSsqlHTt2eA0YMCCqtraWAcCaNWs6zZo165JSqcT48ePLdAN1KRgxYkREp06d4nbu3Nnh/vvvvwQAJSUlKi8vL5O+U8OHD7/s6+urcXd3F3r16nUlLy/PBQCcnJyE6dOnVwBAQkJCdX5+vjMA7Nq1q8MTTzzRPSoqKmbChAm9qqqqlGVlZQoAGDduXLmnp6dg7Hv69OlTHRMTc02lUmHq1KmXdu7c6QkASqUSs2fPLgOAbdu2ed56663lHTp00Hp7e2tvu+22st9//93r999/97z11lvLvby8tJ06ddLecsst5ZaOxdatWzs89NBDpU5O3JDUtWvX6wJho6KirhYUFLjcdddd3dLT0zt07Nixfh8/Pz91YWGhs+FnzEEKCkHIFEpZTBAEQVhCXVrqZK697vx5mwaGOvr06VN78OBBd936smXLzmzbtu14WVlZvZVCF4Ny5MiRHH1XMB0vvPBC8aJFi+pfVlu3bvWIioqKiYqKilm+fHl9EL2rq6vQt2/fms8++8z/zjvvLDPsJzQ0tO7JJ5+8+Ntvv+WpVCpkZWW5/fXXX275+fku48aNiwgKCuqzbt26Tunp6de5eT322GNBuu+05fdv3779+JkzZw5GRETUzps3LxAAPDw8tNeuXTM5dnZ2dq5XKJRKpVBXV8cAQKVSCQoF/5hKpYJarWYAIAgCsrKycnJzc4/m5uYePX/+/MGOHTtqdd9l6nsYY0bXnZ2dtSoVPz2CYFS3Mfp5HSqVStC5i9XU1NTvJAgCGGOmOwTg5+enOXz48NGbb7658tNPP+0yffr0UF3blStXmJubm8nfYwxSUAhCplDKYoIgCMISKj8/s0EmTl26GHVHssSECRMqr169yt588816C42lgGhDUlJSLldUVChzcnLcAWDkyJHVusH4HXfcUaG/73PPPVfy8ssvn/X39280O5+ent7h6tWrDADOnDmjKi8vV4aEhFxbunRpp3nz5hUVFhYeKiwsPHT+/PmDJSUlzvoZtwDgo48+KtR9p63HwNPTU/j0008LMjIyfM+dO6f08/PTaDQapj94bw7Dhw+//Oabb9bHhuzevdvNms8dOnTIIzc311mj0SA9Pb3TDTfcUGm4z8iRI6s2bNjgU1lZqbh8+bJiw4YNHW+++ebKkSNHVv33v//1qaqqYmVlZYrNmzf76D7TrVu3q3///bcHACxfvrzeGjV69OjLS5Ys8dMF7J87d04JAB4eHpqKigoFwGNWNBoNZs+eXf7aa68VHjp0qF65zcvLc42Li6t3/7MGUlAIQqZInbKYIAiCaH/4JE+8znKhj3fyxAtN6VehUCAzMzNv586dXkFBQX369OkTfeedd4a+8sorZ23p57nnnis+d+6cWSsPACQmJl557LHHLhpu37hxY4fIyMjYyMjImDFjxkQsWLDgbPfu3dU///xzJ12wuo7x48eXff/99zYFy6enp/t27dq1r27Jy8trJGtISEhdUlLSpbfffrsLANx4440Vv/76q03xFKb44osvCvbt2+cRERERExYW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", "text/plain": [ "
" ] @@ -1904,6 +1899,7 @@ "g = sns.pointplot(\n", " #data=results.replace({\"GPN-MSA\": \"GPN-MSA (LLR)\"}),\n", " data=results[~results.Model.str.contains(\"best\") & ~results.Model.str.contains(\"full\")],\n", + " #data=results[results.Model.str.contains(\"GPN-MSA\")],\n", " hue=\"Model\",\n", " x=\"Element\",\n", " y=\"Pearson\", # \"Spearman\" or \"Pearson\"\n", @@ -1924,10 +1920,10 @@ "data": { "text/plain": [ "array(['LDLR', 'LDLR.2', 'PKLR-48h', 'IRF4', 'ZFAND3', 'PKLR-24h', 'HBG1',\n", - " 'GP1BA', 'IRF6', 'MSMB', 'TERT-GBM', 'TERT-GSc', 'RET', 'TERT-GAa',\n", - " 'TERT-HEK', 'HNF4A', 'HBB', 'TCF7L2', 'MYCrs6983267', 'ZRSh-13',\n", - " 'F9', 'SORT1.2', 'SORT1', 'SORT1-flip', 'UC88', 'ZRSh-13h2',\n", - " 'FOXE1', 'MYCrs11986220', 'BCL11A'], dtype=object)" + " 'IRF6', 'TERT-GBM', 'TERT-GSc', 'GP1BA', 'HNF4A', 'TERT-GAa',\n", + " 'TERT-HEK', 'HBB', 'MSMB', 'RET', 'ZRSh-13', 'MYCrs6983267',\n", + " 'TCF7L2', 'F9', 'ZRSh-13h2', 'SORT1-flip', 'UC88', 'SORT1.2',\n", + " 'FOXE1', 'SORT1', 'BCL11A', 'MYCrs11986220'], dtype=object)" ] }, "execution_count": 13, @@ -1992,10 +1988,732 @@ "V.Element.value_counts()" ] }, + { + "cell_type": "markdown", + "id": "c83ac2ae-0f76-4357-ae31-5935b4fe5993", + "metadata": { + "user_expressions": [] + }, + "source": [ + "## Generalization across elements" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "00f50a93-b30a-4f18-873b-87e86c2f0179", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['BCL11A', 'F9', 'FOXE1', 'GP1BA', 'HBB', 'HBG1', 'HNF4A', 'IRF4',\n", + " 'IRF6', 'LDLR', 'LDLR.2', 'MSMB', 'MYCrs11986220', 'MYCrs6983267',\n", + " 'PKLR-24h', 'PKLR-48h', 'RET', 'SORT1', 'SORT1-flip', 'SORT1.2',\n", + " 'TCF7L2', 'TERT-GAa', 'TERT-GBM', 'TERT-GSc', 'TERT-HEK', 'UC88',\n", + " 'ZFAND3', 'ZRSh-13', 'ZRSh-13h2'], dtype=object)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.unique(V.Element)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c39429cf-e1cf-45a0-bfa5-be9ebb9c5404", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "cell_line\n", + "HEL 92.1.7 4\n", + "HepG2 3\n", + "Name: Element, dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "V[\"cell_line\"] = V.Element.map({\n", + " \"F9\": \"HepG2\",\n", + " \"LDLR\": \"HepG2\",\n", + " \"SORT1\": \"HepG2\",\n", + " \"GP1BA\": \"HEL 92.1.7\",\n", + " \"HBB\": \"HEL 92.1.7\",\n", + " \"HBG1\": \"HEL 92.1.7\",\n", + " \"BCL11A\": \"HEL 92.1.7\",\n", + " # TODO: continue\n", + "})\n", + "V.groupby(\"cell_line\").Element.nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b2851647-1f9c-49f1-a3d2-51d89651724f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "cell_line\n", + "HEL 92.1.7 4\n", + "HepG2 3\n", + "Name: Element, dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n_elements_per_cell_line = V.groupby(\"cell_line\").Element.nunique()\n", + "n_elements_per_cell_line" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "890ceb78-0fa2-4b5a-97e3-58f7ba759cf6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['HEL 92.1.7', 'HepG2'], dtype=object)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_cell_lines = n_elements_per_cell_line[n_elements_per_cell_line >= 3].index.values\n", + "test_cell_lines" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "689910f0-0a17-468e-b7f5-da9633c992a3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 2/2 [00:41<00:00, 20.64s/it]\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
chromposrefaltTagsDNARNAValueP-ValueElement...NT_embedding_2554NT_embedding_2555NT_embedding_2556NT_embedding_2557NT_embedding_2558NT_embedding_2559labelGPN-MSA - LR(inner products)NT - LR(inner products)cell_line
0260494940CA14627856772-0.050.38889BCL11A...280.904968639.018616611.724182393.658295246.889572438.8702090.050.949714-1.704808HEL 92.1.7
1260494940CG609752436-0.130.13721BCL11A...280.716614638.803955613.168945393.661713247.011124439.0198970.130.888144-1.708850HEL 92.1.7
2260494940CT1084854316057-0.700.00000BCL11A...280.945099638.307739612.376953393.744720246.844040438.4708860.700.951108-1.696908HEL 92.1.7
3260494941CA596942523430-0.080.00413BCL11A...275.491791582.535522625.180237415.684326251.629257489.7814940.080.919881-1.725495HEL 92.1.7
4260494941CG7515063697-0.060.47756BCL11A...275.479004582.367126626.136963415.015259251.971130488.9978640.060.892691-1.723264HEL 92.1.7
..................................................................
391657156791602GC358227970440.040.39490ZRSh-13h2...292.959381725.619385483.129639444.974670288.532288566.1853030.04-0.062691-0.013546NaN
391667156791602GT167612030373100.100.00001ZRSh-13h2...290.691437722.373108482.941101442.876526288.728088555.5366210.10-0.062872-0.015167NaN
391677156791603CA25107309-0.170.33374ZRSh-13h2...247.580978644.393799482.822723497.064911270.218353438.2448430.17-0.058924-0.051151NaN
391687156791603CG6544748144580.060.09092ZRSh-13h2...247.332809645.774658483.212708496.339264270.630676438.4343570.06-0.058565-0.051021NaN
391697156791603CT8848072245440.170.00000ZRSh-13h2...247.496246644.995850483.721619497.578400270.743286438.4675600.17-0.058472-0.051093NaN
\n", + "

39170 rows × 3345 columns

\n", + "
" + ], + "text/plain": [ + " chrom pos ref alt Tags DNA RNA Value P-Value Element \\\n", + "0 2 60494940 C A 146 2785 6772 -0.05 0.38889 BCL11A \n", + "1 2 60494940 C G 60 975 2436 -0.13 0.13721 BCL11A \n", + "2 2 60494940 C T 1084 8543 16057 -0.70 0.00000 BCL11A \n", + "3 2 60494941 C A 596 9425 23430 -0.08 0.00413 BCL11A \n", + "4 2 60494941 C G 75 1506 3697 -0.06 0.47756 BCL11A \n", + "... ... ... .. .. ... ... ... ... ... ... \n", + "39165 7 156791602 G C 358 2279 7044 0.04 0.39490 ZRSh-13h2 \n", + "39166 7 156791602 G T 1676 12030 37310 0.10 0.00001 ZRSh-13h2 \n", + "39167 7 156791603 C A 25 107 309 -0.17 0.33374 ZRSh-13h2 \n", + "39168 7 156791603 C G 654 4748 14458 0.06 0.09092 ZRSh-13h2 \n", + "39169 7 156791603 C T 884 8072 24544 0.17 0.00000 ZRSh-13h2 \n", + "\n", + " ... NT_embedding_2554 NT_embedding_2555 NT_embedding_2556 \\\n", + "0 ... 280.904968 639.018616 611.724182 \n", + "1 ... 280.716614 638.803955 613.168945 \n", + "2 ... 280.945099 638.307739 612.376953 \n", + "3 ... 275.491791 582.535522 625.180237 \n", + "4 ... 275.479004 582.367126 626.136963 \n", + "... ... ... ... ... \n", + "39165 ... 292.959381 725.619385 483.129639 \n", + "39166 ... 290.691437 722.373108 482.941101 \n", + "39167 ... 247.580978 644.393799 482.822723 \n", + "39168 ... 247.332809 645.774658 483.212708 \n", + "39169 ... 247.496246 644.995850 483.721619 \n", + "\n", + " NT_embedding_2557 NT_embedding_2558 NT_embedding_2559 label \\\n", + "0 393.658295 246.889572 438.870209 0.05 \n", + "1 393.661713 247.011124 439.019897 0.13 \n", + "2 393.744720 246.844040 438.470886 0.70 \n", + "3 415.684326 251.629257 489.781494 0.08 \n", + "4 415.015259 251.971130 488.997864 0.06 \n", + "... ... ... ... ... \n", + "39165 444.974670 288.532288 566.185303 0.04 \n", + "39166 442.876526 288.728088 555.536621 0.10 \n", + "39167 497.064911 270.218353 438.244843 0.17 \n", + "39168 496.339264 270.630676 438.434357 0.06 \n", + "39169 497.578400 270.743286 438.467560 0.17 \n", + "\n", + " GPN-MSA - LR(inner products) NT - LR(inner products) cell_line \n", + "0 0.949714 -1.704808 HEL 92.1.7 \n", + "1 0.888144 -1.708850 HEL 92.1.7 \n", + "2 0.951108 -1.696908 HEL 92.1.7 \n", + "3 0.919881 -1.725495 HEL 92.1.7 \n", + "4 0.892691 -1.723264 HEL 92.1.7 \n", + "... ... ... ... \n", + "39165 -0.062691 -0.013546 NaN \n", + "39166 -0.062872 -0.015167 NaN \n", + "39167 -0.058924 -0.051151 NaN \n", + "39168 -0.058565 -0.051021 NaN \n", + "39169 -0.058472 -0.051093 NaN \n", + "\n", + "[39170 rows x 3345 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: maybe call this V2 or something, make a copy (before setting the supervised models)\n", + "# this should not be run after the previous one...\n", + "\n", + "def train_predict_lr_split_across_elements(V, model_name, model):\n", + " elements = np.unique(V.Element)\n", + " for element in elements:\n", + " mask_train = V.Element != element\n", + " mask_test = ~mask_train\n", + " V.loc[mask_test, model_name] = model(V[mask_train], V[mask_test])\n", + " return V[model_name].values\n", + " \n", + "\n", + "for cell_line in tqdm(test_cell_lines):\n", + " V_e = V[V.cell_line==cell_line]\n", + " for m, model in supervised_models:\n", + " V.loc[V.cell_line==cell_line, m] = train_predict_lr_split_across_elements(V_e, m, model)\n", + " if m not in models: models.append(m)\n", + "V" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "287d5508-5744-4239-bc96-b42826bb9991", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 2/2 [00:00<00:00, 16.86it/s]\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", + "
cell_lineModelPearsonSpearman
0HEL 92.1.7CADD0.1370320.120994
1HEL 92.1.7phyloP-100-vertebrates0.1051960.020466
2HEL 92.1.7GPN-MSA0.2115500.092708
3HEL 92.1.7GPN-MSA - LR(inner products)0.1502960.161879
4HEL 92.1.7NT - LR(inner products)-0.252502-0.352641
5HepG2CADD0.1173610.109550
6HepG2phyloP-100-vertebrates0.1533600.126205
7HepG2GPN-MSA0.1799220.172447
8HepG2GPN-MSA - LR(inner products)0.2181580.251186
9HepG2NT - LR(inner products)0.1571480.189316
\n", + "
" + ], + "text/plain": [ + " cell_line Model Pearson Spearman\n", + "0 HEL 92.1.7 CADD 0.137032 0.120994\n", + "1 HEL 92.1.7 phyloP-100-vertebrates 0.105196 0.020466\n", + "2 HEL 92.1.7 GPN-MSA 0.211550 0.092708\n", + "3 HEL 92.1.7 GPN-MSA - LR(inner products) 0.150296 0.161879\n", + "4 HEL 92.1.7 NT - LR(inner products) -0.252502 -0.352641\n", + "5 HepG2 CADD 0.117361 0.109550\n", + "6 HepG2 phyloP-100-vertebrates 0.153360 0.126205\n", + "7 HepG2 GPN-MSA 0.179922 0.172447\n", + "8 HepG2 GPN-MSA - LR(inner products) 0.218158 0.251186\n", + "9 HepG2 NT - LR(inner products) 0.157148 0.189316" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rows = []\n", + "for cell_line in tqdm(test_cell_lines):\n", + " V_e = V[V.cell_line==cell_line]\n", + " y = V_e.label\n", + " for m in models:\n", + " x = -V_e[m]\n", + " rows.append([\n", + " cell_line,\n", + " m,\n", + " pearsonr(x, y)[0],\n", + " spearmanr(x, y)[0],\n", + " ])\n", + "results = pd.DataFrame(rows, columns=[\"cell_line\", \"Model\", \"Pearson\", \"Spearman\"])\n", + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "f2767ce5-6828-4cb3-8ac0-52e3ae40f007", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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lbXfcsstB84999yct99++4TnQONEQAEAAKinZv1nW8DKzftaV9a2cvO+1u//sC3gVM67bt26ZrGxsfmVtc2cOdN/9OjR++Pj4/N+++23phkZGSeckdOvX7/89PT0E07j6tOnT35qairTvPA7BBQAAIB66rOfd7arqn3emp1tz/Q158+f7z9+/Pj9np6eGj58+IFZs2a1OVFfa22V56quHY0Ta1AAAADqqT25hd7VtPucynljYmIKPv/88z8Ejx9//LHZtm3bmsTHx4dJUlFRkenatWvhww8/vPePZ5FWr17t27NnzyMnus4vv/zi27dv30pHatB4uXQExRgTb4xJM8b8aox5qJL264wx65xfq4wxsa6oEwAAwB2192tSVE370VM574gRI3KPHj1qnn/++WMjMMuXL/edNGlS1ylTpuzKyMhYn5GRsX7Pnj3rsrKyfDZt2vSHIPTjjz82mzFjRqc777xzT2XXeO+991qvXLmy1U033bT/VGpEw+WyERRjjKekVyQNk7RT0mpjzEJrbXKFbr9JOt9ae8AYM1zSm5L61321AAAA7mf0WV32btyV3PxE7Ql9u+w7lfN6eHho4cKF6XfccUfXf/zjHx2bNGliu3TpUvjTTz/5vf7669sr9h0+fPiBmTNn+g8YMOBwYmJii4iIiMiCggKPgICAohkzZmwv38FLkl5//fUOc+bMCSgoKPAICwsrWLp0aRo7eOF4xlVz/4wxAyQ9aa292Pn8YUmy1v7tBP3bSNpgre1c3bnj4uJsYmLimSwXAACgVhhj1lhr4yoeS0pK2hobG1ttuCguLdWN764OqWyh/LmhbQ++e+PZ6ae61TBQm5KSktrGxsYGV9bmyjUonSXtqPB8p6oeHfkfSf93okZjzK2SbpWkbt26nYn6AACosdKSUqX+kKWU7zOVd+CIWrRpqohBgXIMCJSHh3F1eWigvDw89M6Es9Pf/2FbwLw1O9vuyS30ae/X5GhC3y77xg849fugAK7kyoBS2W/rSodzjDEXqCygDD7Ryay1b6psCpji4uLYEgIAUGdKS0q19K2N2rL2v+uE8w4UKmtLjrZtyNbFN0fJw5M3iqgd3p4eumlQ9+ybBnXPrr434P5c+dtyp6SuFZ53kbTr+E7GmF6S3pJ0ubWW//AAAG4n9Yes34WTiras3au0H7PquCIAqL9cGVBWSwo1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f6N//POmTZtaSfLy8rLFxcVGknr27FnUtm3b4oULF/qtXbu2+eeff77lZK711FNP7bzxxhuPvemfNWtW62eeeaaTJL355ptbzzvvvEpHAYKDg4vKR0wkadu2bT4dO3YsksoC1m+//eYTEhJSVFRUpLy8PM/27duX3H333Z2XLVvWSpJSU1OTr7322v2vvPJK+7Zt25b06tUrv02bNqXWWg0ePPjQokWLfqvsun5+fpW+6bfWmp49exb88ssvqZW1n+hn2rx582Pne/rppzu0b9++aN68eb+VlpaqWbNmfU90reeff357QkLCoePbVqxYkTZv3rxWEyZM6D5p0qTdd911V7262TkjKGhUbHGxMu6brMxHHlXB2rUqzsxUwdq1ynzkUWXce59scf1ZUAjAfXT07Vhle2BzFsmjlrToUPUiE7+OR0/11JmZmT7lO2p99NFH/gMHDsyrqv9NN9209+abb+4+cuTI/V5ev/8MPCAgoKRly5Yl5esh3n777YABAwac8Hzjx48/mJqampyampp8onAiSUFBQUXNmzcv/frrr5uXlpbqww8/DLj88ssPStKll1568J133gmQpHfffbfNgAEDcj08PPTSSy9llJ/b2S9348aNvv/85z/bXnXVVfsl6U9/+tPhxMTEFhs2bGgiSbm5uR7r1q37w9oYSWrRokVJTk6OpyT16tXryP79+73Kf26FhYUmMTHx2AjI7Nmz20jS0qVLW/j5+ZUEBAT8YYFaTk6OZ2BgYJGnp6deffXVgJKSsi6tWrUqycvLO/ZJ6rBhw3Jee+21doWFhUYqG705dOiQx6ZNm3w6d+5cNGXKlH3XX3/9vp9//vmUdw5zFQIKGpWcBQuUu2xZpW25y5YpZ8HCOq4IQEMwOnR0le1X9LyijipBoxM7Zm817fuqbK9Cjx49jrzzzjsBYWFhkQcOHPC6//77q7zWmDFjcvLz8z1vvfXWSj+tf/fdd3978MEHu4SFhUWuW7eu2bPPPrvrZOrp3LlzzGOPPdZ17ty5AR06dOi1Zs2appL06quvbps4cWJwUFBQdHBwcOFVV12VI0n33HPPvgMHDnh169Yt+qWXXur43HPP/WEHMEny8vLS0KFDc5YvX97qmmuuyZGkTp06Fb/xxhtbr7322h5hYWGRffv2daxfv77SqVbjx4/fd/fddwc5HI7I4uJiffzx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jr2P9fT0tEVFRUaSvLy8rIdH2cu8vLxUXFxsJMlaq8TExJTKgkjz5s1LT3QdY0ylz318fEq9vMrew1h74rfUx7++nJeXly2fLpafn3+sk7VWxpgq36O3a9euZMOGDcnz589v+eqrr7b/5JNP/D/99NOtUtnIU7NmzU74/VTGlSMoOyVVHPPuImnXqZ7MWvumtTbOWhvXrl2VHyagEVuUvuh34aSir7Z/pUXpi+q4IgANBRtwwBW82rWrchq8d/v2lU5Hqs6IESNyCwsLzfTp04+9qapuQfTxRo8efSgnJ8czJSXFV5KGDBlyODU1NTk1NTX5uuuuy6nY98EHH8x64okndnbs2PF3n87PnTu3ZWFhoZGk7du3ex08eNAzKCjo6KxZs/ynTJmyKyMjY31GRsb6PXv2rMvKyvKpuOOWJL300ksZ5dc82Z9BixYt7Kuvvrpj3rx5Abt37/Zs165dSUlJian45v10DB48+ND06dOPrQ1ZtWpVjRarrV+/vnlqaqpPSUmJ5s6d63/uuefmHt9nyJAheV988UXr3Nxcj0OHDnl88cUXbS644ILcIUOG5P3rX/9qnZeXZw4cOOCxbNmy1uWv6dq1a+FPP/3UXJI+/PDDY+H0wgsvPPT666+3K1+wv3v3bk9Jat68eUlOTo6HVLZmpaSkRBMmTDj41FNPZaxfv963/PXp6elNY2NjT2qnEFcGlNWSQo0x3Y0xPpKulbTQhfWgEfhs82dVts//dX4dVQIAwOlrPeryvVW1txp1+b5TOa+Hh4cWLVqUvnLlSr/OnTvHxMTERFx//fXBTz755M6TOc+DDz6YuXv37ipHeSQpLi7uyN133519/PElS5a0DA8PjwoPD48cNmxY2NSpU3d269at+PPPP/cvX6xebvjw4Qdmzpx5Uovl586dG9ChQ4de5V/p6em/qzUoKKho5MiR+5977rn2knTeeeflfPnllye1nuJE3nzzzR0///xz87CwsMiQkJCol19+uUafsPfu3TtvypQpXcLCwqK6detWOG7cuIPH9xk8eHD+2LFjs88666yIvn37RowbN27voEGDCgYPHpx/xRVX7I+Ojo667LLLQvr165dX/pqHHnpo99tvv92uT58+jn379h2bTnLfffft7dKly1GHwxEVHh4e+fbbb/tL0g033LBv+PDhof379w/bunWr9+DBg8Md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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 5))\n", + "g = sns.pointplot(\n", + " data=results[~results.Model.str.contains(\"best\") & ~results.Model.str.contains(\"full\")],\n", + " hue=\"Model\",\n", + " x=\"cell_line\",\n", + " y=\"Spearman\", # \"Spearman\" or \"Pearson\"\n", + " join=False,\n", + ");\n", + "plt.xticks(rotation=45, ha=\"right\");\n", + "sns.move_legend(g, \"upper left\", bbox_to_anchor=(1, 1));" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "05a01847-3620-4613-ba4b-1770c70bbef5", + "id": "65a1c894-c5b9-4d89-9061-e474c1965432", "metadata": {}, "outputs": [], "source": [] diff --git a/analysis/human/workflow/rules/embeddings.smk b/analysis/human/workflow/rules/embeddings.smk index 43764cb..a05ebe3 100644 --- a/analysis/human/workflow/rules/embeddings.smk +++ b/analysis/human/workflow/rules/embeddings.smk @@ -136,7 +136,7 @@ rule get_embedding: threads: workflow.cores shell: """ - python -m gpn.msa.inference embedding {input[0]} {input[1]} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') -m gpn.msa.inference embedding {input[0]} {input[1]} \ {wildcards.window_size} {input[2]} {output} --is_file \ --center_window_size {config[center_window_size]} \ --per_device_batch_size {config[per_device_batch_size]} \ diff --git a/analysis/human/workflow/rules/hyenadna.smk b/analysis/human/workflow/rules/hyenadna.smk index fbbc769..20ecefa 100644 --- a/analysis/human/workflow/rules/hyenadna.smk +++ b/analysis/human/workflow/rules/hyenadna.smk @@ -22,7 +22,7 @@ rule run_vep_hyenadna: lambda wildcards: hyenadna_params[wildcards.model], shell: """ - python workflow/scripts/run_vep_hyenadna.py {wildcards.dataset} {input} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') workflow/scripts/run_vep_hyenadna.py {wildcards.dataset} {input} \ {wildcards.model} {output} --dataloader-num-workers {threads} {params} """ @@ -41,6 +41,6 @@ rule run_vep_embeddings_hyenadna: lambda wildcards: hyenadna_params[wildcards.model], shell: """ - python workflow/scripts/run_vep_embeddings_hyenadna.py {wildcards.dataset} {input} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') workflow/scripts/run_vep_embeddings_hyenadna.py {wildcards.dataset} {input} \ {wildcards.model} {output} --dataloader-num-workers {threads} {params} """ diff --git a/analysis/human/workflow/rules/logits.smk b/analysis/human/workflow/rules/logits.smk index bb05ee3..ca28b8a 100644 --- a/analysis/human/workflow/rules/logits.smk +++ b/analysis/human/workflow/rules/logits.smk @@ -96,7 +96,7 @@ rule get_logits: "{anything}/logits/{alignment,[A-Za-z0-9]+}/{species,[A-Za-z0-9]+}/{window_size,\d+}/{model}.parquet", shell: """ - python -m gpn.msa.inference logits {input[0]} {input[1]} {wildcards.window_size} {input[2]} {output} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') -m gpn.msa.inference logits {input[0]} {input[1]} {wildcards.window_size} {input[2]} {output} \ --per_device_batch_size {config[per_device_batch_size]} --is_file \ --dataloader_num_workers {config[dataloader_num_workers]} """ diff --git a/analysis/human/workflow/rules/nucleotide_transformer.smk b/analysis/human/workflow/rules/nucleotide_transformer.smk index d5ab055..f2f7a35 100644 --- a/analysis/human/workflow/rules/nucleotide_transformer.smk +++ b/analysis/human/workflow/rules/nucleotide_transformer.smk @@ -22,7 +22,7 @@ rule run_vep_nucleotide_transformer: priority: 20 shell: """ - python workflow/scripts/run_vep_nucleotide_transformer.py {wildcards.dataset} {input} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') workflow/scripts/run_vep_nucleotide_transformer.py {wildcards.dataset} {input} \ {wildcards.model} {output} --dataloader-num-workers 16 {params} """ @@ -42,6 +42,6 @@ rule run_vep_embeddings_nucleotide_transformer: priority: 20 shell: """ - python workflow/scripts/run_vep_embeddings_nucleotide_transformer.py {wildcards.dataset} {input} \ + torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') workflow/scripts/run_vep_embeddings_nucleotide_transformer.py {wildcards.dataset} {input} \ {wildcards.model} {output} --dataloader-num-workers 16 {params} """ diff --git a/analysis/human/workflow/rules/training.smk b/analysis/human/workflow/rules/training.smk index 90f5906..cbe5894 100644 --- a/analysis/human/workflow/rules/training.smk +++ b/analysis/human/workflow/rules/training.smk @@ -309,8 +309,8 @@ rule train_gpn_msa: priority: 100 shell: """ - WANDB_PROJECT={params.project_name} python -m gpn.msa.train --do_train \ - --do_eval --fp16 --report_to wandb --prediction_loss_only True \ + WANDB_PROJECT={params.project_name} torchrun --nproc_per_node=$(echo $CUDA_VISIBLE_DEVICES | awk -F',' '{{print NF}}') -m gpn.msa.train + --do_train --do_eval --fp16 --report_to wandb --prediction_loss_only True \ --dataset_name results/dataset/{wildcards.dataset} \ --msa_path {input[0]} \ --run_name {params.run_name} --output_dir {output} \ @@ -328,4 +328,5 @@ rule train_gpn_msa: --weight_conserved {wildcards.weight_conserved} \ --flip_nonconserved {wildcards.flip_nonconserved} \ --remove_unused_columns False \ + --torch_compile """ diff --git a/analysis/human/workflow/rules/vep.smk b/analysis/human/workflow/rules/vep.smk index 9a34513..a97751a 100644 --- a/analysis/human/workflow/rules/vep.smk +++ b/analysis/human/workflow/rules/vep.smk @@ -98,7 +98,7 @@ rule run_vep_gpn: workflow.cores shell: """ - python -m gpn.msa.inference vep {wildcards.dataset} {input[0]} \ + torchrun --nproc_per_node 4 -m gpn.msa.inference vep {wildcards.dataset} {input[0]} \ {wildcards.window_size} {input[1]} {output} \ --per_device_batch_size 2048 --dataloader_num_workers {threads} {params} """ @@ -121,7 +121,7 @@ rule run_vep_embedding_gpn: workflow.cores shell: """ - python -m gpn.msa.inference vep_embedding {wildcards.dataset} {input[0]} \ + torchrun --nproc_per_node 4 -m gpn.msa.inference vep_embedding {wildcards.dataset} {input[0]} \ {wildcards.window_size} {input[1]} {output} \ --per_device_batch_size 2048 --dataloader_num_workers {threads} {params} """ diff --git a/examples/msa/training.ipynb b/examples/msa/training.ipynb index 17386db..ffcec39 100644 --- a/examples/msa/training.ipynb +++ b/examples/msa/training.ipynb @@ -52,14 +52,14 @@ "config_overrides = f\"n_aux_features={n_aux_features}\" # here you can add e.g. ,hum_hidden_layers=8\n", "\n", "# System-specific config\n", - "# The script will detect any number of available GPUs (can also run without GPU)\n", "# The recommended total batch size is 2048\n", "# Since I'm running this notebook with 1 GPU, I'll put per_device_batch_size=512\n", "# and gradient_accumulation_steps=4\n", + "n_gpu = 1\n", "per_device_batch_size = 512 # whatever fits in your GPU\n", "gradient_accumulation_steps = 4\n", "dataloader_num_workers = 8 # number of CPUs\n", - "python_path = \"/scratch/users/gbenegas/software/mambaforge/envs/gpn/bin/python\" # might just be \"python\" in your system\n", + "torchrun_path = \"/scratch/users/gbenegas/software/mambaforge/envs/gpn/bin/torchrun\" # might just be \"torchrun\" in your system\n", "report_to = \"none\" # we usually use wandb (might need to create an account)" ] }, @@ -74,9 +74,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "10/11/2023 12:34:17 - WARNING - __main__ - Process rank: 0, device: cuda:0, n_gpu: 1distributed training: True, 16-bits training: True\n", - "10/11/2023 12:34:18 - WARNING - datasets.builder - Found cached dataset parquet (/scratch/users/gbenegas/huggingface-cache/songlab___parquet/songlab--gpn-msa-sapiens-dataset-ea89de0bc8febbbb/0.0.0/2a3b91fbd88a2c90d1dbbb32b460cf621d31bd5b05b934492fdef7d8d6f236ec)\n", - "100%|█████████████████████████████████████████████| 3/3 [00:00<00:00, 24.10it/s]\n", + "12/18/2023 17:11:38 - WARNING - __main__ - Process rank: 0, device: cuda:0, n_gpu: 1distributed training: True, 16-bits training: True\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/datasets/load.py:2088: FutureWarning: 'use_auth_token' was deprecated in favor of 'token' in version 2.14.0 and will be removed in 3.0.0.\n", + "You can remove this warning by passing 'token=' instead.\n", + " warnings.warn(\n", "DatasetDict({\n", " train: Dataset({\n", " features: ['chrom', 'start', 'end', 'strand', 'phyloP', 'phastCons', 'lowercase'],\n", @@ -91,30 +92,32 @@ " num_rows: 55004\n", " })\n", "})\n", - "10/11/2023 12:34:18 - WARNING - __main__ - You are instantiating a new config instance from scratch.\n", + "12/18/2023 17:11:40 - WARNING - __main__ - You are instantiating a new config instance from scratch.\n", "Loading MSA...\n", "Loading MSA... Done\n", - "{'train_runtime': 30.3323, 'train_samples_per_second': 675.188, 'train_steps_per_second': 0.33, 'train_loss': 1.7617364883422852, 'epoch': 0.0}\n", - "100%|███████████████████████████████████████████| 10/10 [00:30<00:00, 3.03s/it]\n", + " 0%| | 0/10 [00:00 will be ignored\n", + "[W reducer.cpp:1346] Warning: find_unused_parameters=True was specified in DDP constructor, but did not find any unused parameters in the forward pass. This flag results in an extra traversal of the autograd graph every iteration, which can adversely affect performance. If your model indeed never has any unused parameters in the forward pass, consider turning this flag off. Note that this warning may be a false positive if your model has flow control causing later iterations to have unused parameters. (function operator())\n", + "{'train_runtime': 64.0375, 'train_samples_per_second': 319.813, 'train_steps_per_second': 0.156, 'train_loss': 1.7629276275634767, 'epoch': 0.0}\n", + "100%|███████████████████████████████████████████| 10/10 [01:04<00:00, 6.40s/it]\n", "***** train metrics *****\n", " epoch = 0.0\n", - " train_loss = 1.7617\n", - " train_runtime = 0:00:30.33\n", - " train_samples_per_second = 675.188\n", - " train_steps_per_second = 0.33\n", - "100%|███████████████████████████████████████████| 82/82 [00:44<00:00, 1.86it/s]\n", + " train_loss = 1.7629\n", + " train_runtime = 0:01:04.03\n", + " train_samples_per_second = 319.813\n", + " train_steps_per_second = 0.156\n", + "100%|███████████████████████████████████████████| 82/82 [00:19<00:00, 4.19it/s]\n", "***** eval metrics *****\n", " epoch = 0.0\n", - " eval_loss = 1.5\n", - " eval_runtime = 0:00:49.48\n", - " eval_samples_per_second = 840.315\n", - " eval_steps_per_second = 1.657\n", - " perplexity = 4.4817\n" + " eval_loss = 1.5002\n", + " eval_runtime = 0:00:21.76\n", + " eval_samples_per_second = 1910.332\n", + " eval_steps_per_second = 3.767\n", + " perplexity = 4.4828\n" ] } ], "source": [ - "!WANDB_PROJECT=GPN_MSA_SAPIENS_EXAMPLE {python_path} -m gpn.msa.train --do_train \\\n", + "!WANDB_PROJECT=GPN_MSA_SAPIENS_EXAMPLE {torchrun_path} --nproc_per_node={n_gpu} -m gpn.msa.train --do_train \\\n", " --do_eval --fp16 --report_to {report_to} --prediction_loss_only True \\\n", " --dataset_name {training_windows_path} \\\n", " --msa_path {msa_path} \\\n", @@ -135,7 +138,8 @@ " --remove_unused_columns False \\\n", " --per_device_train_batch_size {per_device_batch_size} \\\n", " --per_device_eval_batch_size {per_device_batch_size} \\\n", - " --gradient_accumulation_steps {gradient_accumulation_steps}" + " --gradient_accumulation_steps {gradient_accumulation_steps} \\\n", + " --torch_compile" ] } ], diff --git a/examples/msa/vep.ipynb b/examples/msa/vep.ipynb index 6f24c31..0edba7e 100644 --- a/examples/msa/vep.ipynb +++ b/examples/msa/vep.ipynb @@ -3,8 +3,7 @@ { "cell_type": "markdown", "metadata": { - "id": "RVs1eelGRwcp", - "user_expressions": [] + "id": "RVs1eelGRwcp" }, "source": [ "# GPN-MSA: variant effect prediction" @@ -62,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { "id": "1vEIfi01nVf3", "tags": [] @@ -85,19 +84,19 @@ "# For now the output is just a single column \"score\", in the same order as input_path\n", "output_path = \"example.preds.parquet\"\n", "\n", - "# The script will detect any number of available GPUs (can also run without GPU)\n", - "per_device_batch_size = 128 # whatever fits in your GPU\n", + "n_gpu = 1\n", + "per_device_batch_size = 25 # whatever fits in your GPU; also with zarr streaming smaller might be better (?)\n", "# how many CPUs you want to use\n", "# anything > 0 get's frozen when using the remote (streaming) msa_path\n", "# for local download can set equal to number of CPUs\n", "dataloader_num_workers = 0\n", "window_size = 128\n", - "python_path = \"/scratch/users/gbenegas/software/mambaforge/envs/gpn/bin/python\" # might just be \"python\" in your system" + "torchrun_path = \"/scratch/users/gbenegas/software/mambaforge/envs/gpn/bin/torchrun\" # might just be \"torchrun\" in your system" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "tags": [] }, @@ -106,22 +105,29 @@ "name": "stdout", "output_type": "stream", "text": [ - "Namespace(command='vep', input_path='example.vcf', msa_path='zip:///::https://huggingface.co/datasets/songlab/multiz100way/resolve/main/89.zarr.zip', window_size=128, model_path='songlab/gpn-msa-sapiens', output_path='example.preds.parquet', per_device_batch_size=128, dataloader_num_workers=0, split='test', is_file=True, disable_aux_features=False, center_window_size=None)\n", + "Namespace(command='vep', input_path='example.vcf', msa_path='zip:///::https://huggingface.co/datasets/songlab/multiz100way/resolve/main/89.zarr.zip', window_size=128, model_path='songlab/gpn-msa-sapiens', output_path='example.preds.parquet', per_device_batch_size=25, dataloader_num_workers=0, split='test', is_file=True, disable_aux_features=False, center_window_size=None)\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/pyarrow/pandas_compat.py:373: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if _pandas_api.is_sparse(col):\n", "Loading MSA...\n", "Loading MSA... Done\n", - "100%|███████████████████████████████████████████| 16/16 [03:30<00:00, 13.15s/it]\n" + " 80%|██████████████████████████████████▍ | 64/80 [03:05<00:43, 2.72s/it][rank0]:[2023-12-18 18:34:49,410] torch._dynamo.convert_frame: [WARNING] torch._dynamo hit config.cache_size_limit (64)\n", + "[rank0]:[2023-12-18 18:34:49,410] torch._dynamo.convert_frame: [WARNING] function: 'recursively_apply' (/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/accelerate/utils/operations.py:87)\n", + "[rank0]:[2023-12-18 18:34:49,410] torch._dynamo.convert_frame: [WARNING] to diagnose recompilation issues, set env variable TORCHDYNAMO_REPORT_GUARD_FAILURES=1 and also see https://pytorch.org/docs/master/compile/troubleshooting.html.\n", + "100%|███████████████████████████████████████████| 80/80 [03:40<00:00, 2.75s/it]\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/pyarrow/pandas_compat.py:373: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if _pandas_api.is_sparse(col):\n" ] } ], "source": [ - "!{python_path} -m gpn.msa.inference vep {input_path} {msa_path} {window_size} {model_path} {output_path} \\\n", + "!{torchrun_path} --nproc_per_node={n_gpu} -m gpn.msa.inference vep {input_path} {msa_path} {window_size} {model_path} {output_path} \\\n", " --is_file \\\n", " --per_device_batch_size {per_device_batch_size} --dataloader_num_workers {dataloader_num_workers}" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 14, "metadata": { "tags": [] }, @@ -165,7 +171,7 @@ " T\n", " C\n", " Common\n", - " 1.851778\n", + " 1.852539\n", " \n", " \n", " 1\n", @@ -175,7 +181,7 @@ " G\n", " C\n", " Pathogenic\n", - " -7.247392\n", + " -7.246094\n", " \n", " \n", " 2\n", @@ -185,7 +191,7 @@ " C\n", " T\n", " Pathogenic\n", - " -5.155979\n", + " -5.156250\n", " \n", " \n", " 3\n", @@ -195,7 +201,7 @@ " C\n", " T\n", " Common\n", - " 0.583127\n", + " 0.583008\n", " \n", " \n", " 4\n", @@ -205,7 +211,7 @@ " C\n", " T\n", " Common\n", - " -6.271775\n", + " -6.273438\n", " \n", " \n", " ...\n", @@ -225,7 +231,7 @@ " A\n", " G\n", " Pathogenic\n", - " -7.370640\n", + " -7.371094\n", " \n", " \n", " 1996\n", @@ -235,7 +241,7 @@ " C\n", " A\n", " Pathogenic\n", - " -8.240108\n", + " -8.242188\n", " \n", " \n", " 1997\n", @@ -245,7 +251,7 @@ " C\n", " A\n", " Pathogenic\n", - " -7.077174\n", + " -7.078125\n", " \n", " \n", " 1998\n", @@ -255,7 +261,7 @@ " C\n", " A\n", " Pathogenic\n", - " -0.703199\n", + " -0.703125\n", " \n", " \n", " 1999\n", @@ -265,7 +271,7 @@ " A\n", " T\n", " Pathogenic\n", - " -7.086720\n", + " -7.089844\n", " \n", " \n", "\n", @@ -274,22 +280,22 @@ ], "text/plain": [ " chrom pos id ref alt label score\n", - "0 1 1180851 Common_1501 T C Common 1.851778\n", - "1 1 1233177 Pathogenic_1790 G C Pathogenic -7.247392\n", - "2 1 1312290 Pathogenic_2057 C T Pathogenic -5.155979\n", - "3 1 1927692 Common_4064 C T Common 0.583127\n", - "4 1 1930143 Common_4073 C T Common -6.271775\n", + "0 1 1180851 Common_1501 T C Common 1.852539\n", + "1 1 1233177 Pathogenic_1790 G C Pathogenic -7.246094\n", + "2 1 1312290 Pathogenic_2057 C T Pathogenic -5.156250\n", + "3 1 1927692 Common_4064 C T Common 0.583008\n", + "4 1 1930143 Common_4073 C T Common -6.273438\n", "... ... ... ... .. .. ... ...\n", - "1995 X 154966523 Pathogenic_9761197 A G Pathogenic -7.370640\n", - "1996 X 154966664 Pathogenic_9761201 C A Pathogenic -8.240108\n", - "1997 X 154993046 Pathogenic_9761224 C A Pathogenic -7.077174\n", - "1998 Y 2787515 Pathogenic_9761263 C A Pathogenic -0.703199\n", - "1999 Y 7063898 Pathogenic_9761266 A T Pathogenic -7.086720\n", + "1995 X 154966523 Pathogenic_9761197 A G Pathogenic -7.371094\n", + "1996 X 154966664 Pathogenic_9761201 C A Pathogenic -8.242188\n", + "1997 X 154993046 Pathogenic_9761224 C A Pathogenic -7.078125\n", + "1998 Y 2787515 Pathogenic_9761263 C A Pathogenic -0.703125\n", + "1999 Y 7063898 Pathogenic_9761266 A T Pathogenic -7.089844\n", "\n", "[2000 rows x 7 columns]" ] }, - "execution_count": 6, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -305,24 +311,40 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 15, "metadata": { "tags": [] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n", + " if pd.api.types.is_categorical_dtype(vector):\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n", + " if pd.api.types.is_categorical_dtype(vector):\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n", + " if pd.api.types.is_categorical_dtype(vector):\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n", + " if pd.api.types.is_categorical_dtype(vector):\n", + "/scratch/users/gbenegas/software/mambaforge/envs/gpn/lib/python3.11/site-packages/seaborn/_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n" + ] + }, { "data": { "text/plain": [ "" ] }, - "execution_count": 7, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdTElEQVR4nO3de5RU5b3m8e/TCJIENUZaJVxsdIQgoO2yRY+igBdkGJWQiJdFMhDMIRovx5C4MJCMeoyJ44maxIzxYHTUDCIGJerEJIqAxFugW1FAwdHYQguBFo2ReKOb3/zRxbbA6qahq2p3U89nrVpd9e5L/apWw9N773e/ryICMzMzgLK0CzAzs/bDoWBmZgmHgpmZJRwKZmaWcCiYmVlij7QLaIvu3btHRUVF2mWYmXUoNTU1b0VEea5lHToUKioqqK6uTrsMM7MORdIbzS3z6SMzM0s4FMzMLOFQMDOzRIe+pmBmHdPmzZupq6vjww8/TLuU3VrXrl3p1asXnTt3bvU2DgUzK7q6ujr22msvKioqkJR2ObuliGDjxo3U1dXRt2/fVm/n00dmVnQffvgh++23nwOhgCSx33777fTRmEPBzFLhQCi8XfmOHQpmZpZwKJhZyerWrVuLy2traxk0aNBO7XPixInMmTOnLWWlyqGQsoo+vZDUpkdFn15pfwwz200UrPeRpN7A3cCBwBZgRkT8XNIXgNlABVALnB0R72S2+T5wPtAIXBoRfypUfe3FG2veJOb/uE370EnT8lSNWWnatGkTY8aM4Z133mHz5s386Ec/YsyYMQA0NDQwYcIEnn/+efr168fdd9/NZz/7WWpqapgyZQqbNm2ie/fu3HnnnfTo0SPlT9J2hTxSaAC+GxEDgGOBiyQdBlwBPB4RhwKPZ16TWXYuMBAYBdwiqVMB6zMzA5r688+dO5fnnnuOBQsW8N3vfpetUxWvWrWKyZMn8+KLL7L33ntzyy23sHnzZi655BLmzJlDTU0NkyZNYvr06Sl/ivwo2JFCRKwD1mWevyfpZaAnMAYYnlntLmAhMDXTfm9EfAS8LulVYAjwTKFqNDODpj7906ZNY9GiRZSVlfHmm2+yfv16AHr37s3xxx8PwNe+9jV+8YtfMGrUKJYvX86pp54KQGNj425xlABFunlNUgVwJPAX4IBMYBAR6yTtn1mtJ/Bs1mZ1mbbt9zUZmAzQp0+fAlZtZqVi5syZ1NfXU1NTQ+fOnamoqEj692/frVMSEcHAgQN55pnd72/Wgl9oltQNuB+4LCL+0dKqOdriUw0RMyKiKiKqystzDgduZrZT3n33Xfbff386d+7MggULeOONT0aWXr16dfKf/6xZsxg6dCj9+/envr4+ad+8eTMrVqxIpfZ8K2goSOpMUyDMjIgHMs3rJfXILO8BbMi01wG9szbvBawtZH1mZgDjx4+nurqaqqoqZs6cyZe+9KVk2YABA7jrrrs4/PDDefvtt7nwwgvp0qULc+bMYerUqRxxxBFUVlby9NNPp/gJ8qeQvY8E3A68HBE3Zi16CJgAXJf5+WBW+z2SbgS+CBwKLC5UfWZmmzZtAqB79+7Nngp66aWXcrZXVlayaNGiT7XfeeedeasvDYW8pnA88HVgmaSlmbZpNIXBfZLOB1YD4wAiYoWk+4CXaOq5dFFENBawPjMz204hex89Se7rBAAnN7PNtcC1harJzMxa5juadwOdhO+KNrO88HwKu4HGwHdFm1le+EjBzMwSDgUzM0s4FNogHyOcmhn07nNQm/8tZT969zloh+/5t7/9jXPPPZdDDjmEww47jNGjR/PKK68U4dO2b76m0AYe4dQsP+rWrObGR1flbX9TRvZvcXlEMHbsWCZMmMC9994LwNKlS1m/fj39+vXLWx0dkY8UzKzkLFiwgM6dO3PBBRckbZWVlQwdOpTLL7+cQYMGMXjwYGbPng3AwoULGTZsGGeffTb9+vXjiiuuYObMmQwZMoTBgwfz2muvAU0T7Fx44YWMGDGCgw8+mCeeeIJJkyYxYMAAJk6cmLzXrFmzGDx4MIMGDWLq1KlJe7du3Zg+fTpHHHEExx57bDIoXzE5FMys5CxfvpyjjjrqU+0PPPAAS5cu5YUXXmDevHlcfvnlrFu3DoAXXniBn//85yxbtozf/OY3vPLKKyxevJhvfvOb3Hzzzck+3nnnHebPn89NN93EGWecwXe+8x1WrFjBsmXLWLp0KWvXrmXq1KnMnz+fpUuXsmTJEn73u98B8M9//pNjjz2WF154gRNPPJHbbrutKN9HNoeCmVnGk08+yXnnnUenTp044IADGDZsGEuWLAHg6KOPpkePHuy5554ccsghjBw5EoDBgwdTW1ub7OOMM85AEoMHD+aAAw5g8ODBlJWVMXDgQGpra1myZAnDhw+nvLycPfbYg/HjxyfDZXTp0oXTTz8dgKOOOmqb/RaLQ8HMSs7AgQOpqan5VPvWiXVy2XPPPZPnZWVlyeuysjIaGho+tV72OtnrtfQenTt3TjqgdOrUaZv9FotDwcxKzkknncRHH320zemZJUuWsO+++zJ79mwaGxupr69n0aJFDBkyJK/vfcwxx/DEE0/w1ltv0djYyKxZsxg2bFhe36Mt3PvIzFLXq3efHfYY2tn9tUQSc+fO5bLLLuO6666ja9euVFRU8LOf/YxNmzZxxBFHIInrr7+eAw88kJUrV+atth49evCTn/yEESNGEBGMHj06mQ+6PVBLhzLtXVVVVVRXV6f2/pLy0iW13eyjA/8uWMfy8ssvM2DAgLTLKAm5vmtJNRFRlWt9nz4yM7OEQ8HMzBIOBTMzSxQsFCTdIWmDpOVZbbMlLc08arfOyCapQtIHWctuLVRdZmbWvEL2ProT+CVw99aGiDhn63NJNwDvZq3/WkRUFrAeMzPbgUJOx7lIUkWuZWq6O+Ns4KRCvb+Zme28tK4pnACsj4j/l9XWV9Lzkp6QdEJzG0qaLKlaUnV9fX3hKzWzgsvHMPQ7O71sp06dqKysZNCgQYwbN47333+/2XUXLlzI008/nbyeOHEic+bMyctn31nV1dVceumlBdt/WjevnQfMynq9DugTERslHQX8TtLAiPjH9htGxAxgBjTdp1CUas2soPIxDH221gxJ/5nPfIalS5cCMH78eG699VamTJmSc92FCxfSrVs3jjvuuLzVuKuqqqqoqsp5i0FeFP1IQdIewFeA2VvbIuKjiNiYeV4DvAaU9qDmZlY0J5xwAq+++ioPP/wwxxxzDEceeSSnnHIK69evp7a2lltvvZWbbrqJyspK/vznPwOwaNEijjvuOA4++ODkqCEicg69vWXLFr797W8zcOBATj/9dEaPHp1sU1NTw7BhwzjqqKM47bTTklFZhw8fztSpUxkyZAj9+vVL3nfhwoXJoHmbNm3iG9/4BoMHD+bwww/n/vvvb/N3kcaRwinAyoio29ogqRx4OyIaJR0MHAr8NYXazKzENDQ08Ic//IFRo0YxdOhQnn32WSTx61//muuvv54bbriBCy64gG7duvG9730PgNtvv51169bx5JNPsnLlSs4880zOOuusbYbefuuttzj66KM58cQTeeqpp6itrWXZsmVs2LCBAQMGMGnSJDZv3swll1zCgw8+SHl5ObNnz2b69OnccccdSW2LFy/mkUce4eqrr2bevHnb1H7NNdewzz77sGzZMqBp2O62KlgoSJoFDAe6S6oDroyI24Fz2fbUEcCJwL9LagAagQsi4u1C1WZm9sEHH1BZWQk0HSmcf/75rFq1inPOOYd169bx8ccf07dv32a3//KXv0xZWRmHHXZYMhlOc0NvP/nkk4wbN46ysjIOPPBARowYAcCqVatYvnw5p556KgCNjY306NEjeY+vfOUrQPPDaM+bNy+ZOQ5g3333bdN3AoXtfXReM+0Tc7TdD7T9uMfMrJWyrylsdckllzBlyhTOPPNMFi5cyFVXXdXs9tnDYm8dN6y58cNaah84cCDPPPNMi+/R3DDaEZH3ud59R7OZWca7775Lz549AbjrrruS9r322ov33ntvh9ufeOKJOYfeHjp0KPfffz9btmxh/fr1LFy4EID+/ftTX1+fhMLmzZtZsWJFq+sdOXIkv/zlL5PX7fr0kZlZax3Uu2eregztzP52xVVXXcW4cePo2bMnxx57LK+//jrQNJvaWWedxYMPPrjN1JvbGzt2LM8888ynht7+6le/yuOPP86gQYPo168fxxxzDPvssw9dunRhzpw5XHrppbz77rs0NDRw2WWXMXDgwFbV+4Mf/ICLLrqIQYMG0alTJ6688srklNOu8tDZbeChs812TSkOnb1p0ya6devGxo0bGTJkCE899RQHHnhgwd93Z4fO9pGCmVkRnH766fz973/n448/5oc//GFRAmFXOBTMCqR3n4OoW7O6Tfvo1bsPa1a/kaeKLE1bryO0dw4FswKpW7OaGx9d1aZ95HOKyvamED1nbFu7ckrYvY/MrOi6du3Kxo0bfR2rgCKCjRs30rVr153azkcKZlZ0vXr1oq6uDg9qWVhdu3alV68dDw6YzaFgZkXXuXPnFu8WtvT49JGZmSUcCmZmlnAomJlZwqFgZmYJh4KZmSUcCmZmlnAomJlZomChIOkOSRskLc9qu0rSm5KWZh6js5Z9X9KrklZJOq1QdZmZWfMKeaRwJzAqR/tNEVGZeTwCIOkwmqbpHJjZ5hZJnQpYm5mZ5VCwUIiIRUBr51keA9wbER9FxOvAq8CQQtVmZma5pXFN4WJJL2ZOL22dZbonsCZrnbpMm5mZFVGxQ+FXwCFAJbAOuCHTnmv83JzDJ0qaLKlaUrUH0zIzy6+ihkJErI+IxojYAtzGJ6eI6oDeWav2AtY2s48ZEVEVEVXl5eWFLdjMrMQUNRQk9ch6ORbY2jPpIeBcSXtK6gscCiwuZm1mZlbAobMlzQKGA90l1QFXAsMlVdJ0aqgW+BZARKyQdB/wEtAAXBQRjYWqzczMcitYKETEeTmab29h/WuBawtVj5mZ7ZjvaDYzs4RDwQDoJJDUpkdFn52b9s/M2h9Px2kANAbE/B+3aR86aVqeqjGztPhIwczMEg4FMzNLOBTMzCzhUDAzs4RDwczMEg4FMzNLOBTMzCzhUDAzs4RDwczMEg4FMzNLOBTMzCzhUDAzs4RDwczMEg4FMzNLFCwUJN0haYOk5Vlt/yFppaQXJc2V9PlMe4WkDyQtzTxuLVRdZmbWvEIeKdwJjNqu7TFgUEQcDrwCfD9r2WsRUZl5XFDAuszMrBkFC4WIWAS8vV3boxHRkHn5LOCpuszM2pE0rylMAv6Q9bqvpOclPSHphOY2kjRZUrWk6vr6+sJXaWZWQlIJBUnTgQZgZqZpHdAnIo4EpgD3SNo717YRMSMiqiKiqry8vDgFm5mViKKHgqQJwOnA+IgIgIj4KCI2Zp7XAK8B/Ypdm5lZqStqKEgaBUwFzoyI97PayyV1yjw/GDgU+GsxazMzM9ijUDuWNAsYDnSXVAdcSVNvoz2BxyQBPJvpaXQi8O+SGoBG4IKIeDvnjs3MrGAKFgoRcV6O5tubWfd+4P5C1WJmZq3TqtNHko5vTZuZmXVsrb2mcHMr28zMrANr8fSRpH8BjgPKJU3JWrQ30KmQhZmZWfHt6JpCF6BbZr29str/AZxVqKLMzCwdLYZCRDwBPCHpzoh4o0g1maWud5+DqFuzOu0yzIqutb2P9pQ0A6jI3iYiTipEUWZpq1uzmhsfXdWmfUwZ2T9P1ZgVT2tD4bfArcCvabqPwMzMdkOtDYWGiPhVQSsxM7PUtbZL6sOSvi2ph6QvbH0UtDIzMyu61h4pTMj8vDyrLYCD81uOmZmlqVWhEBF9C12IWb6455DZrmtVKEj677naI+Lu/JZj1nbuOWS261p7+ujorOddgZOB5wCHgpnZbqS1p48uyX4taR/gNwWpyMw+oTIyw8zvsl69+7Bmte89tdbZ1aGz36dpIhwzK6TY4lNhVlStvabwME29jaBpILwBwH2FKso6pk6izX/VHtS7J7Wr6/JUkZntrNYeKfw063kD8EZEtPgvV9IdNM3FvCEiBmXavgDMpmm4jFrg7Ih4J7Ps+8D5NN0xfWlE/Kn1H8Pag8aAmP/jNu1DJ03LUzVmtitadfNaZmC8lTSNlLov8HErNrsTGLVd2xXA4xFxKPB45jWSDgPOBQZmtrll65zNZmZWPK2dee1sYDEwDjgb+IukFofOjohFwPbzLI8B7so8vwv4clb7vRHxUUS8DrwKDGlNbWZmlj+tPX00HTg6IjYASCoH5gFzdvL9DoiIdQARsU7S/pn2nsCzWevVZdo+RdJkYDJAnz59dvLtzcysJa0d+6hsayBkbNyJbVsj19XJyNFGRMyIiKqIqCovL89jCWZm1tojhT9K+hMwK/P6HOCRXXi/9ZJ6ZI4SegBbg6YO6J21Xi9g7S7s38zM2qDFv/Yl/RdJx0fE5cB/AocDRwDPADN24f0e4pPB9SYAD2a1nytpT0l9aboHYvEu7N/MzNpgR0cKPwOmAUTEA8ADAJKqMsvOaG5DSbOA4UB3SXXAlcB1wH2SzgdW03ThmohYIek+4CWaurxeFBGezMfMrMh2FAoVEfHi9o0RUS2poqUNI+K8Zhad3Mz61wLX7qAeMzMroB1dLO7awrLP5LMQMzNL345CYYmkf92+MXP6p6YwJZmZWVp2dProMmCupPF8EgJVQBdgbAHrMjOzFLQYChGxHjhO0ghgUKb59xExv+CVmZlZ0bV2PoUFwIIC12JmZinL513JZmbWwTkUzMws4VAwM7OEQ8HMzBIOBTMzSzgUzMws4VAwM7OEQ8HMzBKtnWTHrDhUhpRrIj4zKwaHgrUvsYUbH13Vpl1MGdk/T8WYlR6fPjIzs4RDwczMEkU/fSSpPzA7q+lg4H8Anwf+FajPtE+LiEeKW52ZWWkreihExCqgEkBSJ+BNYC7wDeCmiPhpsWsyM7MmaZ8+Ohl4LSLeSLkOMzMj/VA4F5iV9fpiSS9KukPSvrk2kDRZUrWk6vr6+lyrmJnZLkotFCR1Ac4Efptp+hVwCE2nltYBN+TaLiJmRERVRFSVl5cXo1Qzs5KR5pHCfwWey0z5SUSsj4jGiNgC3AYMSbE2M7OSlGYonEfWqSNJPbKWjQWWF70iM7MSl8odzZI+C5wKfCur+XpJlUAAtdstMzOzIkglFCLifWC/7dq+nkYtZmb2ibR7H5mZWTviUDDb3WVGnt3VR+8+B6X9CayIPEqq2e6ujSPPetTZ0uIjBTMzS5R0KFT06dWmw2ozs91NSZ8+emPNm8T8H+/y9jppWh6rMWun8jAbXq/efViz2kOcdQQlHQpm1gr5mA3vtAEOlg7CoWBmhedpVjsMh4Llj8p8Ss2sg3MoWP7EFm6ccXubdjFl8vl5KsbMdkVJ9z4yM7NtORTMzCzhUDAzs4RDwczMEg4FMzNLuPeRtTtXX3112iWYlay0Zl6rBd4DGoGGiKiS9AVgNlBB08xrZ0fEO2nUZ+m6csLJbdp+ylP35KkSs9KT5umjERFRGRFVmddXAI9HxKHA45nXZmZWRO3pmsIY4K7M87uAL6dXiplZaUorFAJ4VFKNpMmZtgMiYh1A5uf+uTaUNFlStaTq+vr6IpVrZlYa0rrQfHxErJW0P/CYpJWt3TAiZgAzAKqqqqJQBZqZlaJUjhQiYm3m5wZgLjAEWC+pB0Dm54Y0ajMzK2VFDwVJn5O019bnwEhgOfAQMCGz2gTgwWLXZmZW6tI4fXQAMDcz4cYewD0R8UdJS4D7JJ0PrAbGpVCbmVlJK3ooRMRfgSNytG8E2tZB3czM2qQ9dUk1M7OUORTMzCzhUDAzs4RDwczMEg4FM+sYVIakNj169zko7U/R7nnobDPrGGILNz66qk27mDKyf56K2X35SMHMSoePNnbIRwpmVjp8tLFDDgVrojJ00rS0qzCzlDkUrEls4cYZt7dpF1Mmn5+nYswsLb6mYGZmCYeCmZklHApmZpZwKJiZWcKhYGZmCYeCmZkl0piOs7ekBZJelrRC0r9l2q+S9KakpZnH6GLXZmZW6tK4T6EB+G5EPJeZq7lG0mOZZTdFxE9TqMnMzEhnOs51wLrM8/ckvQz0LHYdZmb2aaleU5BUARwJ/CXTdLGkFyXdIWnfZraZLKlaUnV9fX2xSjUzKwmphYKkbsD9wGUR8Q/gV8AhQCVNRxI35NouImZERFVEVJWXlxerXDOzkpBKKEjqTFMgzIyIBwAiYn1ENEbEFuA2YEgatZmZlbI0eh8JuB14OSJuzGrvkbXaWGB5sWszM9uh3XxOhjR6Hx0PfB1YJmlppm0acJ6kSiCAWuBbKdRmZtay3XxOhjR6Hz0JKMeiR4pdi5mZbct3NJuZWcKT7Nhu6eqrr067BLMOyaFgu6UrJ5zcpu2nPHVPniox61h8+sjMzBI+UtgdqAydNC3tKsxsN+BQ2B3EFm6ccXubdjFl8vl5KsbMOjKfPjIzs4SPFMya4R5MVoocCmbNcA8mK0U+fWRmZgmHgpmZJRwKZmaW8DUFswLyxWrraBwKZgXki9XW0TgU0ua7kc1KT2ainrbo1bsPa1a/kaeCPuFQSJvvRjYrPe14oh5faDYzs0S7O1KQNAr4OdAJ+HVEXJdySWap8sVqK6Z2FQqSOgH/CzgVqAOWSHooIl5Kt7Jm+HqAFUE+LlY7WKy12lUoAEOAVyPirwCS7gXGAIUJhTz8p+7rAdYRtCVY3AOqtCgi0q4hIeksYFREfDPz+uvAMRFxcdY6k4HJmZf9gbZdremYugNvpV1EO+TvJTd/L7mV8vdyUESU51rQ3o4UcvXR2ia1ImIGMKM45bRPkqojoirtOtobfy+5+XvJzd9Lbu2t91Ed0DvrdS9gbUq1mJmVnPYWCkuAQyX1ldQFOBd4KOWazMxKRrs6fRQRDZIuBv5EU5fUOyJiRcpltUclffqsBf5ecvP3kpu/lxza1YVmMzNLV3s7fWRmZilyKJiZWcKh0EFIGidphaQtkqq2W/Z9Sa9KWiXptLRqTJukqyS9KWlp5jE67ZrSJGlU5nfiVUlXpF1PeyGpVtKyzO9Iddr1tDft6kKztWg58BXgP7MbJR1GUy+tgcAXgXmS+kVEY/FLbBduioifpl1E2jrckDHFNyIiSvXGtRb5SKGDiIiXIyLX3dtjgHsj4qOIeB14labhQqy0JUPGRMTHwNYhY8xa5FDo+HoCa7Je12XaStXFkl6UdIekfdMuJkX+vWheAI9KqskMm2NZfPqoHZE0Dzgwx6LpEfFgc5vlaNtt+xm39B0BvwKuoenzXwPcAEwqXnXtSkn9Xuyk4yNiraT9gcckrYyIRWkX1V44FNqRiDhlFzYrqaFBWvsdSboN+L8FLqc9K6nfi50REWszPzdImkvTqTaHQoZPH3V8DwHnStpTUl/gUGBxyjWlQlKPrJdjabo4X6o8ZEwOkj4naa+tz4GRlPbvyaf4SKGDkDQWuBkoB34vaWlEnBYRKyTdR9OcEw3ARSXc8+h6SZU0nSapBb6VajUp8pAxzToAmCsJmv7/uyci/phuSe2Lh7kwM7OETx+ZmVnCoWBmZgmHgpmZJRwKZmaWcCiYmVnCoWBmZgmHglmRSfL9QdZuORTMWiFzJ+zvJb0gabmkcyQdLenpTNtiSXtJ6irpf2fG639e0ojM9hMl/VbSwzQNxva5zKB9SzLreQRTaxf8F4tZ64wC1kbEfwOQtA/wPHBORCyRtDfwAfBvABExWNKXaAqAfpl9/AtweES8LenHwPyImCTp88BiSfMi4p9F/lxm2/CRglnrLANOkfQ/JZ0A9AHWRcQSgIj4R0Q0AEOB32TaVgJvAFtD4bGIeDvzfCRwhaSlwEKga2afZqnykYJZK0TEK5KOAkYDPwEeJfdQ1LmGrN4q+yhAwFebmTjJLDU+UjBrBUlfBN6PiP8D/BQ4FviipKMzy/fKXEBeBIzPtPWj6a//XP/x/wm4RJmR2SQdWfhPYbZjPlIwa53BwH9I2gJsBi6k6a/9myV9hqbrCacAtwC3SlpG06i1EyPio8z//dmuAX4GvJgJhlrg9CJ8DrMWeZRUMzNL+PSRmZklHApmZpZwKJiZWcKhYGZmCYeCmZklHApmZpZwKJiZWeL/AxmeEMJBBKGPAAAAAElFTkSuQmCC", + "image/png": "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", "text/plain": [ "
" ] diff --git a/gpn/msa/inference.py b/gpn/msa/inference.py index 04fce01..d18aaf2 100644 --- a/gpn/msa/inference.py +++ b/gpn/msa/inference.py @@ -35,6 +35,8 @@ def run_inference( per_device_eval_batch_size=per_device_batch_size, dataloader_num_workers=dataloader_num_workers, remove_unused_columns=False, + torch_compile=True, + fp16=True, ) trainer = Trainer(model=inference.model, args=training_args) pred = trainer.predict(test_dataset=dataset).predictions diff --git a/gpn/ss/get_embeddings.py b/gpn/ss/get_embeddings.py index 6ebf869..6582d87 100644 --- a/gpn/ss/get_embeddings.py +++ b/gpn/ss/get_embeddings.py @@ -71,6 +71,8 @@ def get_tokenized_seq(vs): per_device_eval_batch_size=per_device_batch_size, dataloader_num_workers=dataloader_num_workers, remove_unused_columns=False, + torch_compile=True, + fp16=True, ) trainer = Trainer(model=model, args=training_args) return trainer.predict(test_dataset=windows).predictions diff --git a/gpn/ss/get_logits.py b/gpn/ss/get_logits.py index 616cb80..f78b02e 100644 --- a/gpn/ss/get_logits.py +++ b/gpn/ss/get_logits.py @@ -107,6 +107,8 @@ def prepare_output(seq, pos): per_device_eval_batch_size=per_device_batch_size, dataloader_num_workers=dataloader_num_workers, remove_unused_columns=False, + torch_compile=True, + fp16=True, ) trainer = Trainer(model=model, args=training_args) return trainer.predict(test_dataset=positions).predictions diff --git a/gpn/ss/run_vep.py b/gpn/ss/run_vep.py index 3f17333..c8321be 100644 --- a/gpn/ss/run_vep.py +++ b/gpn/ss/run_vep.py @@ -120,6 +120,8 @@ def prepare_output(seq, pos, ref, alt): per_device_eval_batch_size=per_device_batch_size, dataloader_num_workers=dataloader_num_workers, remove_unused_columns=False, + torch_compile=True, + fp16=True, ) trainer = Trainer(model=model, args=training_args) return trainer.predict(test_dataset=variants).predictions diff --git a/gpn/ss/run_vep_embeddings.py b/gpn/ss/run_vep_embeddings.py index 4e4304d..c6dfde9 100644 --- a/gpn/ss/run_vep_embeddings.py +++ b/gpn/ss/run_vep_embeddings.py @@ -110,6 +110,8 @@ def prepare_output(seq, pos, ref, alt): per_device_eval_batch_size=per_device_batch_size, dataloader_num_workers=dataloader_num_workers, remove_unused_columns=False, + torch_compile=True, + fp16=True, ) trainer = Trainer(model=model, args=training_args) return trainer.predict(test_dataset=variants).predictions diff --git a/setup.py b/setup.py index 972fe5a..ca4b081 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup( name='gpn', - version='0.4', + version='0.5', description='gpn', url='http://github.com/songlab-cal/gpn', author='Gonzalo Benegas',