From e1db274fbd0a42daf2983421304184f20175d66f Mon Sep 17 00:00:00 2001 From: Av Shrikumar Date: Tue, 21 Apr 2020 21:40:07 -0700 Subject: [PATCH] fixed test, added -p argument --- .../H1ESC_Nanog_gkmsvm/TF MoDISco Nanog.ipynb | 310 +++++++++--------- .../meme_out/metacluster0/meme.xml | 22 +- modisco/clusterinit/memeinit.py | 16 +- test/test_tfmodisco_workflow.py | 40 ++- 4 files changed, 214 insertions(+), 174 deletions(-) diff --git a/examples/H1ESC_Nanog_gkmsvm/TF MoDISco Nanog.ipynb b/examples/H1ESC_Nanog_gkmsvm/TF MoDISco Nanog.ipynb index 382e1eb..c4135cb 100644 --- a/examples/H1ESC_Nanog_gkmsvm/TF MoDISco Nanog.ipynb +++ b/examples/H1ESC_Nanog_gkmsvm/TF MoDISco Nanog.ipynb @@ -104,7 +104,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "--2020-04-21 15:43:20-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/positives_test.fa.gz\n", + "--2020-04-21 19:39:16-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/positives_test.fa.gz\n", "Resolving raw.githubusercontent.com... 151.101.40.133\n", "Connecting to raw.githubusercontent.com|151.101.40.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", @@ -113,31 +113,31 @@ "\n", "100%[======================================>] 75,038 --.-K/s in 0.04s \n", "\n", - "2020-04-21 15:43:20 (1.68 MB/s) - 'positives_test.fa.gz' saved [75038/75038]\n", + "2020-04-21 19:39:17 (2.00 MB/s) - 'positives_test.fa.gz' saved [75038/75038]\n", "\n", - "--2020-04-21 15:43:21-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/gkmexplain_positives_hypimpscores.txt.gz\n", + "--2020-04-21 19:39:17-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/gkmexplain_positives_hypimpscores.txt.gz\n", "Resolving raw.githubusercontent.com... 151.101.40.133\n", "Connecting to raw.githubusercontent.com|151.101.40.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 3191036 (3.0M) [application/octet-stream]\n", "Saving to: 'gkmexplain_positives_hypimpscores.txt.gz'\n", "\n", - "100%[======================================>] 3,191,036 7.91MB/s in 0.4s \n", + "100%[======================================>] 3,191,036 5.77MB/s in 0.5s \n", "\n", - "2020-04-21 15:43:21 (7.91 MB/s) - 'gkmexplain_positives_hypimpscores.txt.gz' saved [3191036/3191036]\n", + "2020-04-21 19:39:18 (5.77 MB/s) - 'gkmexplain_positives_hypimpscores.txt.gz' saved [3191036/3191036]\n", "\n", - "--2020-04-21 15:43:22-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/gkmexplain_dnshuff_hypimpscores.txt.gz\n", + "--2020-04-21 19:39:18-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/gkmexplain_dnshuff_hypimpscores.txt.gz\n", "Resolving raw.githubusercontent.com... 151.101.40.133\n", "Connecting to raw.githubusercontent.com|151.101.40.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1660153 (1.6M) [application/octet-stream]\n", "Saving to: 'gkmexplain_dnshuff_hypimpscores.txt.gz'\n", "\n", - "100%[======================================>] 1,660,153 5.22MB/s in 0.3s \n", + "100%[======================================>] 1,660,153 4.14MB/s in 0.4s \n", "\n", - "2020-04-21 15:43:22 (5.22 MB/s) - 'gkmexplain_dnshuff_hypimpscores.txt.gz' saved [1660153/1660153]\n", + "2020-04-21 19:39:19 (4.14 MB/s) - 'gkmexplain_dnshuff_hypimpscores.txt.gz' saved [1660153/1660153]\n", "\n", - "--2020-04-21 15:43:23-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/dnshuff_seqs.fa.gz\n", + "--2020-04-21 19:39:19-- https://raw.githubusercontent.com/AvantiShri/model_storage/88a1527/modisco/gkmexplain_scores/dnshuff_seqs.fa.gz\n", "Resolving raw.githubusercontent.com... 151.101.40.133\n", "Connecting to raw.githubusercontent.com|151.101.40.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", @@ -146,7 +146,7 @@ "\n", "100%[======================================>] 31,875 --.-K/s in 0.02s \n", "\n", - "2020-04-21 15:43:23 (1.38 MB/s) - 'dnshuff_seqs.fa.gz' saved [31875/31875]\n", + "2020-04-21 19:39:19 (1.36 MB/s) - 'dnshuff_seqs.fa.gz' saved [31875/31875]\n", "\n" ] } @@ -334,7 +334,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "MEMORY 0.326619136\n", + "MEMORY 0.325246976\n", "On task task0\n", "Computing windowed sums on original\n", "Generating null dist\n", @@ -359,7 +359,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -376,12 +376,12 @@ "Got 1106 coords\n", "After resolving overlaps, got 1106 seqlets\n", "Across all tasks, the weakest transformed threshold used was: 0.8938699074074075\n", - "MEMORY 0.333705216\n", + "MEMORY 0.330985472\n", "1106 identified in total\n", "1 activity patterns with support >= 100 out of 3 possible patterns\n", "Metacluster sizes: [1086]\n", "Idx to activities: {0: '1'}\n", - "MEMORY 0.333713408\n", + "MEMORY 0.330989568\n", "On metacluster 0\n", "Metacluster size 1086\n", "Relevant tasks: ('task0',)\n", @@ -390,46 +390,46 @@ "\n", "TfModiscoSeqletsToPatternsFactory: seed=1234\n", "Running MEME\n", - "Command: meme meme_out/metacluster0/inp_seqlets.fa -dna -mod anr -nmotifs 10 -minw 6 -maxw 50 -oc meme_out/metacluster0\n", - "Duration of MEME: 894.4427168369293 seconds\n", + "Command: meme meme_out/metacluster0/inp_seqlets.fa -dna -mod anr -nmotifs 10 -p 4 -minw 6 -maxw 50 -oc meme_out/metacluster0\n", + "Duration of MEME: 870.0726208686829 seconds\n", "Skipping motif GGVVTGCACATTCCWGGCMTTCYTT as e-value 0.078 does not meet threshold of 0.05\n", "Skipping motif CYCCCCYCCSCCCCC as e-value 0.18 does not meet threshold of 0.05\n", "Of 1086 seqlets, cluster assignments are: Counter({0: 300, 1: 195, 3: 189, 2: 180, 6: 68, 5: 59, 7: 46, 4: 27, -1: 22})\n", "Aggregating for cluster 0 with 300 seqlets\n", - "MEMORY 0.363532288\n", + "MEMORY 0.33595392\n", "Trimmed 30 out of 300\n", "Skipped 33 seqlets\n", "Aggregating for cluster 1 with 195 seqlets\n", - "MEMORY 0.363659264\n", + "MEMORY 0.336191488\n", "Trimmed 12 out of 195\n", "Skipped 33 seqlets\n", "Aggregating for cluster 2 with 189 seqlets\n", - "MEMORY 0.363675648\n", + "MEMORY 0.336216064\n", "Trimmed 9 out of 189\n", "Skipped 33 seqlets\n", "Aggregating for cluster 3 with 180 seqlets\n", - "MEMORY 0.363675648\n", + "MEMORY 0.33630208\n", "Trimmed 10 out of 180\n", "Skipped 29 seqlets\n", "Aggregating for cluster 4 with 68 seqlets\n", - "MEMORY 0.36456448\n", + "MEMORY 0.3364864\n", "Trimmed 8 out of 68\n", "Skipped 9 seqlets\n", "Aggregating for cluster 5 with 59 seqlets\n", - "MEMORY 0.36456448\n", + "MEMORY 0.3364864\n", "Trimmed 0 out of 59\n", "Skipped 14 seqlets\n", "Aggregating for cluster 6 with 46 seqlets\n", - "MEMORY 0.364568576\n", + "MEMORY 0.336498688\n", "Trimmed 1 out of 46\n", "Skipped 12 seqlets\n", "Aggregating for cluster 7 with 27 seqlets\n", - "MEMORY 0.364568576\n", + "MEMORY 0.33650688\n", "Trimmed 0 out of 27\n", "Skipped 8 seqlets\n", "(Round 1) num seqlets: 1086\n", "(Round 1) Computing coarse affmat\n", - "MEMORY 0.364568576\n", + "MEMORY 0.336515072\n", "Beginning embedding computation\n", "Computing embeddings\n", "WARNING:tensorflow:From /Users/avantishrikumar/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n", @@ -453,45 +453,45 @@ "name": "stdout", "output_type": "stream", "text": [ - "Finished embedding computation in 9.29 s\n", + "Finished embedding computation in 6.6 s\n", "Starting affinity matrix computations\n", - "Normalization computed in 0.16 s\n", - "Cosine similarity mat computed in 0.26 s\n", - "Normalization computed in 0.15 s\n", - "Cosine similarity mat computed in 0.27 s\n", - "Finished affinity matrix computations in 0.56 s\n", + "Normalization computed in 0.1 s\n", + "Cosine similarity mat computed in 0.17 s\n", + "Normalization computed in 0.09 s\n", + "Cosine similarity mat computed in 0.15 s\n", + "Finished affinity matrix computations in 0.34 s\n", "(Round 1) Compute nearest neighbors from coarse affmat\n", - "MEMORY 0.647806976\n", - "Computed nearest neighbors in 1.15 s\n", - "MEMORY 0.659628032\n", + "MEMORY 0.645136384\n", + "Computed nearest neighbors in 0.74 s\n", + "MEMORY 0.657788928\n", "(Round 1) Computing affinity matrix on nearest neighbors\n", - "MEMORY 0.659628032\n", + "MEMORY 0.657788928\n", "Launching nearest neighbors affmat calculation job\n", - "MEMORY 0.675987456\n", + "MEMORY 0.677404672\n", "Parallel runs completed\n", - "MEMORY 0.556249088\n", - "Job completed in: 47.78 s\n", - "MEMORY 0.556253184\n", + "MEMORY 0.560508928\n", + "Job completed in: 22.12 s\n", + "MEMORY 0.560513024\n", "Launching nearest neighbors affmat calculation job\n", - "MEMORY 0.554795008\n", + "MEMORY 0.559034368\n", "Parallel runs completed\n", - "MEMORY 0.55877632\n", - "Job completed in: 70.91 s\n", - "MEMORY 0.568213504\n", - "(Round 1) Computed affinity matrix on nearest neighbors in 119.2 s\n", - "MEMORY 0.570011648\n", + "MEMORY 0.559808512\n", + "Job completed in: 22.68 s\n", + "MEMORY 0.569245696\n", + "(Round 1) Computed affinity matrix on nearest neighbors in 45.08 s\n", + "MEMORY 0.57249792\n", "Filtered down to 992 of 1086\n", "(Round 1) Retained 992 rows out of 1086 after filtering\n", - "MEMORY 0.57018368\n", + "MEMORY 0.572690432\n", "(Round 1) Computing density adapted affmat\n", - "MEMORY 0.5687296\n", + "MEMORY 0.571179008\n", "[t-SNE] Computing 31 nearest neighbors...\n", - "[t-SNE] Indexed 992 samples in 0.002s...\n", - "[t-SNE] Computed neighbors for 992 samples in 0.029s...\n", + "[t-SNE] Indexed 992 samples in 0.001s...\n", + "[t-SNE] Computed neighbors for 992 samples in 0.015s...\n", "[t-SNE] Computed conditional probabilities for sample 992 / 992\n", "[t-SNE] Mean sigma: 0.236142\n", "(Round 1) Computing clustering\n", - "MEMORY 0.557842432\n", + "MEMORY 0.557248512\n", "Beginning preprocessing + Leiden\n" ] }, @@ -515,7 +515,7 @@ "output_type": "stream", "text": [ "\r", - " 2%|▏ | 1/50 [00:00<00:30, 1.63it/s]" + " 2%|▏ | 1/50 [00:00<00:14, 3.34it/s]" ] }, { @@ -530,7 +530,7 @@ "output_type": "stream", "text": [ "\r", - " 4%|▍ | 2/50 [00:00<00:25, 1.88it/s]" + " 4%|▍ | 2/50 [00:00<00:12, 3.84it/s]" ] }, { @@ -544,7 +544,7 @@ "name": "stderr", "output_type": "stream", "text": [ - " 24%|██▍ | 12/50 [00:04<00:12, 3.07it/s]" + " 24%|██▍ | 12/50 [00:02<00:07, 4.89it/s]" ] }, { @@ -558,7 +558,7 @@ "name": "stderr", "output_type": "stream", "text": [ - " 64%|██████▍ | 32/50 [00:11<00:05, 3.00it/s]" + " 64%|██████▍ | 32/50 [00:07<00:04, 4.23it/s]" ] }, { @@ -572,7 +572,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 50/50 [00:16<00:00, 3.01it/s]" + "100%|██████████| 50/50 [00:10<00:00, 4.55it/s]" ] }, { @@ -582,11 +582,11 @@ "Got 11 clusters after round 1\n", "Counts:\n", "{2: 157, 5: 64, 3: 100, 0: 269, 4: 75, 6: 36, 7: 29, 1: 216, 9: 19, 8: 25, 10: 2}\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "(Round 1) Aggregating seqlets in each cluster\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "Aggregating for cluster 0 with 269 seqlets\n", - "MEMORY 0.54081536\n" + "MEMORY 0.542314496\n" ] }, { @@ -603,117 +603,117 @@ "Trimmed 19 out of 269\n", "Skipped 31 seqlets\n", "Aggregating for cluster 1 with 216 seqlets\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "Trimmed 6 out of 216\n", "Skipped 30 seqlets\n", "Aggregating for cluster 2 with 157 seqlets\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "Trimmed 18 out of 157\n", "Skipped 25 seqlets\n", "Aggregating for cluster 3 with 100 seqlets\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "Trimmed 7 out of 100\n", "Skipped 18 seqlets\n", "Aggregating for cluster 4 with 75 seqlets\n", - "MEMORY 0.54081536\n", + "MEMORY 0.542314496\n", "Trimmed 2 out of 75\n", "Skipped 15 seqlets\n", "Aggregating for cluster 5 with 64 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542314496\n", "Trimmed 3 out of 64\n", "Skipped 12 seqlets\n", "Aggregating for cluster 6 with 36 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542314496\n", "Trimmed 0 out of 36\n", "Skipped 3 seqlets\n", "Aggregating for cluster 7 with 29 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542314496\n", "Trimmed 0 out of 29\n", "Skipped 8 seqlets\n", "Aggregating for cluster 8 with 25 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542314496\n", "Trimmed 0 out of 25\n", "Skipped 6 seqlets\n", "Aggregating for cluster 9 with 19 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542314496\n", "Trimmed 0 out of 19\n", "Skipped 8 seqlets\n", "Aggregating for cluster 10 with 2 seqlets\n", - "MEMORY 0.540819456\n", + "MEMORY 0.542318592\n", "Trimmed 0 out of 2\n", "Of 781 seqlets, cluster assignments are: Counter({0: 230, 3: 145, 2: 125, 1: 122, 5: 54, 6: 48, 7: 25, 4: 22, -1: 10})\n", "Aggregating for cluster 0 with 230 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.5402624\n", "Trimmed 47 out of 230\n", "Aggregating for cluster 1 with 145 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.5402624\n", "Trimmed 43 out of 145\n", "Aggregating for cluster 2 with 125 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.5402624\n", "Trimmed 10 out of 125\n", "Skipped 7 seqlets\n", "Aggregating for cluster 3 with 122 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.53243904\n", "Trimmed 50 out of 122\n", "Aggregating for cluster 4 with 54 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.53243904\n", "Trimmed 3 out of 54\n", "Skipped 31 seqlets\n", "Aggregating for cluster 5 with 48 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.53243904\n", "Trimmed 11 out of 48\n", "Aggregating for cluster 6 with 25 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.53243904\n", "Trimmed 2 out of 25\n", "Skipped 3 seqlets\n", "Aggregating for cluster 7 with 22 seqlets\n", - "MEMORY 0.548302848\n", + "MEMORY 0.53243904\n", "Trimmed 0 out of 22\n", "Skipped 1 seqlets\n", "Removed 1 duplicate seqlets\n", "(Round 2) num seqlets: 781\n", "(Round 2) Computing coarse affmat\n", - "MEMORY 0.548319232\n", + "MEMORY 0.53243904\n", "Beginning embedding computation\n", "Computing embeddings\n", - "Finished embedding computation in 17.02 s\n", + "Finished embedding computation in 5.68 s\n", "Starting affinity matrix computations\n", - "Normalization computed in 0.21 s\n", - "Cosine similarity mat computed in 0.34 s\n", - "Normalization computed in 0.15 s\n", - "Cosine similarity mat computed in 0.27 s\n", - "Finished affinity matrix computations in 0.64 s\n", + "Normalization computed in 0.07 s\n", + "Cosine similarity mat computed in 0.11 s\n", + "Normalization computed in 0.05 s\n", + "Cosine similarity mat computed in 0.1 s\n", + "Finished affinity matrix computations in 0.22 s\n", "(Round 2) Compute nearest neighbors from coarse affmat\n", - "MEMORY 0.652054528\n", - "Computed nearest neighbors in 1.22 s\n", - "MEMORY 0.670785536\n", + "MEMORY 0.652652544\n", + "Computed nearest neighbors in 0.42 s\n", + "MEMORY 0.671752192\n", "(Round 2) Computing affinity matrix on nearest neighbors\n", - "MEMORY 0.670785536\n", + "MEMORY 0.671752192\n", "Launching nearest neighbors affmat calculation job\n", - "MEMORY 0.67115008\n", + "MEMORY 0.67272704\n", "Parallel runs completed\n", - "MEMORY 0.609890304\n", - "Job completed in: 120.91 s\n", - "MEMORY 0.609890304\n", + "MEMORY 0.609554432\n", + "Job completed in: 23.16 s\n", + "MEMORY 0.609554432\n", "Launching nearest neighbors affmat calculation job\n", - "MEMORY 0.60823552\n", + "MEMORY 0.607911936\n", "Parallel runs completed\n", - "MEMORY 0.608702464\n", - "Job completed in: 103.32 s\n", - "MEMORY 0.613584896\n", - "(Round 2) Computed affinity matrix on nearest neighbors in 224.99 s\n", - "MEMORY 0.609685504\n", + "MEMORY 0.611999744\n", + "Job completed in: 23.5 s\n", + "MEMORY 0.616882176\n", + "(Round 2) Computed affinity matrix on nearest neighbors in 46.86 s\n", + "MEMORY 0.612814848\n", "Not applying filtering for rounds above first round\n", - "MEMORY 0.609685504\n", + "MEMORY 0.612814848\n", "(Round 2) Computing density adapted affmat\n", - "MEMORY 0.609619968\n", + "MEMORY 0.611106816\n", "[t-SNE] Computing 31 nearest neighbors...\n", - "[t-SNE] Indexed 781 samples in 0.002s...\n", - "[t-SNE] Computed neighbors for 781 samples in 0.024s...\n", + "[t-SNE] Indexed 781 samples in 0.001s...\n", + "[t-SNE] Computed neighbors for 781 samples in 0.011s...\n", "[t-SNE] Computed conditional probabilities for sample 781 / 781\n", "[t-SNE] Mean sigma: 0.240338\n", "(Round 2) Computing clustering\n", - "MEMORY 0.587661312\n", + "MEMORY 0.589123584\n", "Beginning preprocessing + Leiden\n" ] }, @@ -737,7 +737,7 @@ "output_type": "stream", "text": [ "\r", - " 2%|▏ | 1/50 [00:00<00:14, 3.39it/s]" + " 2%|▏ | 1/50 [00:00<00:07, 6.46it/s]" ] }, { @@ -751,7 +751,7 @@ "name": "stderr", "output_type": "stream", "text": [ - " 10%|█ | 5/50 [00:01<00:16, 2.80it/s]" + " 10%|█ | 5/50 [00:00<00:08, 5.22it/s]" ] }, { @@ -765,7 +765,7 @@ "name": "stderr", "output_type": "stream", "text": [ - " 74%|███████▍ | 37/50 [00:09<00:02, 4.51it/s]" + " 74%|███████▍ | 37/50 [00:06<00:02, 6.03it/s]" ] }, { @@ -779,7 +779,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 50/50 [00:12<00:00, 4.08it/s]" + "100%|██████████| 50/50 [00:08<00:00, 6.16it/s]" ] }, { @@ -789,11 +789,11 @@ "Got 10 clusters after round 2\n", "Counts:\n", "{0: 234, 7: 6, 1: 161, 2: 126, 5: 32, 6: 7, 8: 4, 3: 115, 4: 94, 9: 2}\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "(Round 2) Aggregating seqlets in each cluster\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Aggregating for cluster 0 with 234 seqlets\n", - "MEMORY 0.57546752\n" + "MEMORY 0.577253376\n" ] }, { @@ -809,148 +809,148 @@ "text": [ "Trimmed 34 out of 234\n", "Aggregating for cluster 1 with 161 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 44 out of 161\n", "Aggregating for cluster 2 with 126 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 9 out of 126\n", "Skipped 4 seqlets\n", "Aggregating for cluster 3 with 115 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 7 out of 115\n", "Skipped 2 seqlets\n", "Aggregating for cluster 4 with 94 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 7 out of 94\n", "Skipped 1 seqlets\n", "Aggregating for cluster 5 with 32 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 4 out of 32\n", "Skipped 1 seqlets\n", "Removed 1 duplicate seqlets\n", "Aggregating for cluster 6 with 7 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 0 out of 7\n", "Skipped 2 seqlets\n", "Removed 1 duplicate seqlets\n", "Aggregating for cluster 7 with 6 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 0 out of 6\n", "Removed 1 duplicate seqlets\n", "Aggregating for cluster 8 with 4 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 0 out of 4\n", "Aggregating for cluster 9 with 2 seqlets\n", - "MEMORY 0.57546752\n", + "MEMORY 0.577253376\n", "Trimmed 0 out of 2\n", "Removed 1 duplicate seqlets\n", "Got 10 clusters\n", "Splitting into subclusters...\n", - "MEMORY 0.575389696\n", + "MEMORY 0.577175552\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.10160207748413086 seconds\n", + "Wrote graph to binary file in 0.08240175247192383 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00565816\n", "After 2 runs, maximum modularity is Q = 0.00565817\n", - "Louvain completed 22 runs in 0.4358360767364502 seconds\n", + "Louvain completed 22 runs in 0.3353841304779053 seconds\n", "Similarity is 0.972820366764391; is_dissimilar is False\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.038897037506103516 seconds\n", + "Wrote graph to binary file in 0.0292360782623291 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00422372\n", - "Louvain completed 21 runs in 0.35436105728149414 seconds\n", + "Louvain completed 21 runs in 0.2663888931274414 seconds\n", "Similarity is 0.8834330849517968; is_dissimilar is False\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.041815996170043945 seconds\n", + "Wrote graph to binary file in 0.029601097106933594 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00836005\n", "After 4 runs, maximum modularity is Q = 0.00836006\n", - "Louvain completed 24 runs in 0.4329490661621094 seconds\n", + "Louvain completed 24 runs in 0.314863920211792 seconds\n", "Similarity is 0.7643612087677745; is_dissimilar is True\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.015091896057128906 seconds\n", + "Wrote graph to binary file in 0.00976705551147461 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00431933\n", "After 2 runs, maximum modularity is Q = 0.0044613\n", "After 7 runs, maximum modularity is Q = 0.00447263\n", "After 8 runs, maximum modularity is Q = 0.00452403\n", - "Louvain completed 28 runs in 0.5206708908081055 seconds\n", + "Louvain completed 28 runs in 0.3466029167175293 seconds\n", "Similarity is 0.894882391816381; is_dissimilar is False\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.010507822036743164 seconds\n", + "Wrote graph to binary file in 0.0054399967193603516 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.0030696\n", "After 2 runs, maximum modularity is Q = 0.00324948\n", "After 9 runs, maximum modularity is Q = 0.00330328\n", - "Louvain completed 29 runs in 0.4860560894012451 seconds\n", + "Louvain completed 29 runs in 0.33983683586120605 seconds\n", "Similarity is 0.8752253880894676; is_dissimilar is False\n", "Got 2 subclusters\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.03576207160949707 seconds\n", + "Wrote graph to binary file in 0.023074865341186523 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.0101585\n", - "Louvain completed 21 runs in 0.3696730136871338 seconds\n", + "Louvain completed 21 runs in 0.26274991035461426 seconds\n", "Similarity is 0.7191816069186491; is_dissimilar is True\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.011792182922363281 seconds\n", + "Wrote graph to binary file in 0.007627010345458984 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00721074\n", - "Louvain completed 21 runs in 0.3485729694366455 seconds\n", + "Louvain completed 21 runs in 0.25078606605529785 seconds\n", "Similarity is 0.8520255586598438; is_dissimilar is False\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.00869297981262207 seconds\n", + "Wrote graph to binary file in 0.0055539608001708984 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00553636\n", - "Louvain completed 21 runs in 0.3427729606628418 seconds\n", + "Louvain completed 21 runs in 0.24283790588378906 seconds\n", "Similarity is 0.904962766210829; is_dissimilar is False\n", "Got 2 subclusters\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.02914881706237793 seconds\n", + "Wrote graph to binary file in 0.016414403915405273 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00833805\n", "After 11 runs, maximum modularity is Q = 0.00833806\n", - "Louvain completed 31 runs in 0.5255908966064453 seconds\n", + "Louvain completed 31 runs in 0.3700087070465088 seconds\n", "Similarity is 0.7463959098413182; is_dissimilar is True\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.009830951690673828 seconds\n", + "Wrote graph to binary file in 0.007609128952026367 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00371224\n", "After 2 runs, maximum modularity is Q = 0.00383047\n", "After 3 runs, maximum modularity is Q = 0.00388545\n", - "Louvain completed 23 runs in 0.4152519702911377 seconds\n", + "Louvain completed 23 runs in 0.27381110191345215 seconds\n", "Similarity is 0.8228987257144766; is_dissimilar is False\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.006982088088989258 seconds\n", + "Wrote graph to binary file in 0.0036211013793945312 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00237796\n", "After 3 runs, maximum modularity is Q = 0.0035255\n", - "Louvain completed 23 runs in 0.40777134895324707 seconds\n", + "Louvain completed 23 runs in 0.2668178081512451 seconds\n", "Similarity is 0.8538892065785012; is_dissimilar is False\n", "Got 2 subclusters\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.0049479007720947266 seconds\n", + "Wrote graph to binary file in 0.002162933349609375 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.00815404\n", "After 3 runs, maximum modularity is Q = 0.00815405\n", "After 4 runs, maximum modularity is Q = 0.00875787\n", "After 7 runs, maximum modularity is Q = 0.00985804\n", - "Louvain completed 27 runs in 0.5047168731689453 seconds\n", + "Louvain completed 27 runs in 0.3223450183868408 seconds\n", "Similarity is 0.5243551496635035; is_dissimilar is True\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.001583099365234375 seconds\n", + "Wrote graph to binary file in 0.0013039112091064453 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.0103162\n", - "Louvain completed 21 runs in 0.3920309543609619 seconds\n", + "Louvain completed 21 runs in 0.23273801803588867 seconds\n", "Similarity is 0.4018541798876971; is_dissimilar is True\n", "Inspecting for spurious merging\n", - "Wrote graph to binary file in 0.0016639232635498047 seconds\n", + "Wrote graph to binary file in 0.001055002212524414 seconds\n", "Running Louvain modularity optimization\n", "After 1 runs, maximum modularity is Q = 0.0117484\n", - "Louvain completed 21 runs in 0.3872518539428711 seconds\n", + "Louvain completed 21 runs in 0.23373103141784668 seconds\n", "Similarity is 0.4154002371518449; is_dissimilar is True\n", "Got 3 subclusters\n", "Merging on 15 clusters\n", - "MEMORY 0.558628864\n", + "MEMORY 0.560500736\n", "On merging iteration 1\n", "Computing pattern to seqlet distances\n", "Computing pattern to pattern distances\n", @@ -963,11 +963,11 @@ "Computing pattern to seqlet distances\n", "Computing pattern to pattern distances\n", "Got 13 patterns after merging\n", - "MEMORY 0.561831936\n", + "MEMORY 0.560730112\n", "Performing seqlet reassignment\n", - "MEMORY 0.561831936\n", - "Cross contin jaccard time taken: 6.1 s\n", + "MEMORY 0.560730112\n", "Cross contin jaccard time taken: 0.04 s\n", + "Cross contin jaccard time taken: 0.03 s\n", "Discarded 22 seqlets\n", "Skipped 9 seqlets\n", "Removed 4 duplicate seqlets\n", @@ -976,9 +976,9 @@ "Skipped 2 seqlets\n", "Removed 3 duplicate seqlets\n", "Got 6 patterns after reassignment\n", - "MEMORY 0.564211712\n", - "Total time taken is 455.85s\n", - "MEMORY 0.564211712\n" + "MEMORY 0.56365056\n", + "Total time taken is 158.83s\n", + "MEMORY 0.56365056\n" ] } ], @@ -1030,7 +1030,7 @@ " # very large)\n", " max_num_seqlets_to_use=10000,\n", " nmotifs=10,\n", - " n_jobs=1),\n", + " n_jobs=4),\n", " use_louvain=False,\n", " #Adjust trim_to_window_size and initial_flank_to_add\n", " # according to how big you expect\n", diff --git a/examples/H1ESC_Nanog_gkmsvm/meme_out/metacluster0/meme.xml b/examples/H1ESC_Nanog_gkmsvm/meme_out/metacluster0/meme.xml index 3d9a4bf..506e26a 100644 --- a/examples/H1ESC_Nanog_gkmsvm/meme_out/metacluster0/meme.xml +++ b/examples/H1ESC_Nanog_gkmsvm/meme_out/metacluster0/meme.xml @@ -202,7 +202,7 @@ -meme meme_out/metacluster0/inp_seqlets.fa -dna -mod anr -nmotifs 10 -minw 6 -maxw 50 -oc meme_out/metacluster0 +meme meme_out/metacluster0/inp_seqlets.fa -dna -mod anr -nmotifs 10 -p 4 -minw 6 -maxw 50 -oc meme_out/metacluster0 Avantis-MacBook-Pro.local anr 10 @@ -246,7 +246,7 @@ - + @@ -381,7 +381,7 @@ - + @@ -624,7 +624,7 @@ - + @@ -855,7 +855,7 @@ - + @@ -1026,7 +1026,7 @@ - + @@ -1173,7 +1173,7 @@ - + @@ -1320,7 +1320,7 @@ - + @@ -1515,7 +1515,7 @@ - + @@ -1650,7 +1650,7 @@ CCTG[GT]GG[AT]G[ACG] - + @@ -1965,7 +1965,7 @@ GG[AGC][ACG]T[GCT][CAG][AC]CATTCC[TA][GT][GC]C[AC][TA][TG]C[TC][TA][TC] - + diff --git a/modisco/clusterinit/memeinit.py b/modisco/clusterinit/memeinit.py index 54c3e53..0cca04c 100644 --- a/modisco/clusterinit/memeinit.py +++ b/modisco/clusterinit/memeinit.py @@ -9,7 +9,7 @@ import time -def run_meme(meme_command, input_file, outdir, nmotifs): +def run_meme(meme_command, n_jobs, input_file, outdir, nmotifs): start = time.time() #p = Popen([meme_command,input_file,"-dna","-mod","anr", @@ -25,7 +25,9 @@ def run_meme(meme_command, input_file, outdir, nmotifs): # sys.stdout.write(output) print("Running MEME") command = (meme_command+" "+input_file+" -dna -mod anr -nmotifs " - +str(nmotifs)+" -minw 6 -maxw 50 -oc "+outdir) + +str(nmotifs) + +("" if n_jobs==1 else " -p "+str(n_jobs)) + +" -minw 6 -maxw 50 -oc "+outdir) print("Command:",command) os.system(command) print("Duration of MEME:",time.time()-start,"seconds") @@ -43,14 +45,15 @@ class MemeInitClustererFactory(InitClustererFactory): def __init__(self, meme_command, base_outdir, max_num_seqlets_to_use, nmotifs, e_value_threshold=0.05, - **pwm_clusterer_kwargs): + n_jobs=1, verbose=True): self.meme_command = meme_command self.base_outdir = base_outdir self.max_num_seqlets_to_use = max_num_seqlets_to_use self.nmotifs = nmotifs self.call_count = 0 #to avoid overwriting for each metacluster self.e_value_threshold = e_value_threshold - self.pwm_clusterer_kwargs = pwm_clusterer_kwargs + self.n_jobs = n_jobs + self.verbose = verbose def __call__(self, seqlets): @@ -86,13 +89,14 @@ def __call__(self, seqlets): run_meme(meme_command=self.meme_command, input_file=seqlet_fa_to_write, - outdir=outdir, nmotifs=self.nmotifs) + outdir=outdir, nmotifs=self.nmotifs, + n_jobs=self.n_jobs) motifs = parse_meme(meme_xml=outdir+"/meme.xml", e_value_threshold=self.e_value_threshold) return PwmClusterer( pwms=motifs, onehot_track_name=self.onehot_track_name, - **self.pwm_clusterer_kwargs) + n_jobs=self.n_jobs, verbose=self.verbose) class Pwm(object): diff --git a/test/test_tfmodisco_workflow.py b/test/test_tfmodisco_workflow.py index c86125c..8ca69c5 100644 --- a/test/test_tfmodisco_workflow.py +++ b/test/test_tfmodisco_workflow.py @@ -151,8 +151,8 @@ def test_memeinit_workflow(self): initclusterer_factory= modisco.clusterinit.memeinit.MemeInitClustererFactory( meme_command="meme", base_outdir="meme_out", - num_seqlets_to_use=10000, nmotifs=3, - min_logodds=2, n_jobs=1), + max_num_seqlets_to_use=10000, nmotifs=3, + n_jobs=1), trim_to_window_size=15, initial_flank_to_add=5, kmer_len=5, num_gaps=1, @@ -166,3 +166,39 @@ def test_memeinit_workflow(self): null_per_pos_scores = null_per_pos_scores, plot_save_dir="plot_save_directory")) + #@skip + def test_parallel_memeinit_workflow(self): + + onehot_data = self.onehot_data + task_to_scores = self.task_to_scores + task_to_hyp_scores = self.task_to_hyp_scores + + import modisco + null_per_pos_scores = (modisco.coordproducers + .LaplaceNullDist(num_to_samp=5000)) + tfmodisco_results = (modisco.tfmodisco_workflow + .workflow.TfModiscoWorkflow( + #Slight modifications from the default settings + sliding_window_size=15, + flank_size=5, + target_seqlet_fdr=0.15, + seqlets_to_patterns_factory= + modisco.tfmodisco_workflow + .seqlets_to_patterns.TfModiscoSeqletsToPatternsFactory( + initclusterer_factory= + modisco.clusterinit.memeinit.MemeInitClustererFactory( + meme_command="meme", base_outdir="meme_out", + max_num_seqlets_to_use=10000, nmotifs=3, + n_jobs=4), + trim_to_window_size=15, + initial_flank_to_add=5, + kmer_len=5, num_gaps=1, + num_mismatches=0, + final_min_cluster_size=60) + )( + task_names=["task0", "task1", "task2"], + contrib_scores=task_to_scores, + hypothetical_contribs=task_to_hyp_scores, + one_hot=onehot_data, + null_per_pos_scores = null_per_pos_scores, + plot_save_dir="plot_save_directory"))