From d9526d40c51990bf155a84a51e7126c1110b44f8 Mon Sep 17 00:00:00 2001 From: Nick De Veaux Date: Thu, 10 May 2018 13:10:34 -0400 Subject: [PATCH 1/5] calculate mi and clr on each worker --- inferelator_ng/bbsr_tfa_workflow.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/inferelator_ng/bbsr_tfa_workflow.py b/inferelator_ng/bbsr_tfa_workflow.py index d2fbbde..4e74166 100644 --- a/inferelator_ng/bbsr_tfa_workflow.py +++ b/inferelator_ng/bbsr_tfa_workflow.py @@ -44,11 +44,7 @@ def run(self): X = self.activity.ix[:, bootstrap] Y = self.response.ix[:, bootstrap] print('Calculating MI, Background MI, and CLR Matrix') - if 0 == rank: - (self.clr_matrix, self.mi_matrix) = self.mi_clr_driver.run(X, Y) - kvs.put('mi %d'%idx, (self.clr_matrix, self.mi_matrix)) - else: - (self.clr_matrix, self.mi_matrix) = kvs.view('mi %d'%idx) + (self.clr_matrix, self.mi_matrix) = self.mi_clr_driver.run(X, Y) print('Calculating betas using BBSR') ownCheck = utils.ownCheck(kvs, rank, chunk=25) current_betas,current_rescaled_betas = self.regression_driver.run(X, Y, self.clr_matrix, self.priors_data,kvs,rank, ownCheck) From 39babaa02146644376858811f70ab2142ff40f2c Mon Sep 17 00:00:00 2001 From: Nick De Veaux Date: Thu, 10 May 2018 14:27:47 -0400 Subject: [PATCH 2/5] don't calculate your own kvs --- inferelator_ng/bbsr_tfa_workflow.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/inferelator_ng/bbsr_tfa_workflow.py b/inferelator_ng/bbsr_tfa_workflow.py index 4e74166..501c6c5 100644 --- a/inferelator_ng/bbsr_tfa_workflow.py +++ b/inferelator_ng/bbsr_tfa_workflow.py @@ -14,6 +14,7 @@ from kvsstcp.kvsclient import KVSClient import pandas as pd from . import utils +import time # Connect to the key value store service (its location is found via an # environment variable that is set when this is started vid kvsstcp.py @@ -41,16 +42,22 @@ def run(self): for idx, bootstrap in enumerate(self.get_bootstraps()): print('Bootstrap {} of {}'.format((idx + 1), self.num_bootstraps)) + X = self.activity.ix[:, bootstrap] Y = self.response.ix[:, bootstrap] print('Calculating MI, Background MI, and CLR Matrix') (self.clr_matrix, self.mi_matrix) = self.mi_clr_driver.run(X, Y) print('Calculating betas using BBSR') + if 0 == rank: + kvs.put('bootstrap %d'%idx, 'This is how we stop workers from moving ahead on a new bootstrap') + else: + kvs.view('bootstrap %d'%idx) ownCheck = utils.ownCheck(kvs, rank, chunk=25) current_betas,current_rescaled_betas = self.regression_driver.run(X, Y, self.clr_matrix, self.priors_data,kvs,rank, ownCheck) if rank: continue betas.append(current_betas) rescaled_betas.append(current_rescaled_betas) + kvs.put('bootstrap_{}'.format(idx + 1), 'go') self.emit_results(betas, rescaled_betas, self.gold_standard, self.priors_data) From 42f9096d918c7e5bc5f7e3a8bc4d990936a5551c Mon Sep 17 00:00:00 2001 From: Nick De Veaux Date: Thu, 10 May 2018 14:29:34 -0400 Subject: [PATCH 3/5] flush output --- inferelator_ng/bbsr_tfa_workflow.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inferelator_ng/bbsr_tfa_workflow.py b/inferelator_ng/bbsr_tfa_workflow.py index 501c6c5..200c023 100644 --- a/inferelator_ng/bbsr_tfa_workflow.py +++ b/inferelator_ng/bbsr_tfa_workflow.py @@ -47,11 +47,13 @@ def run(self): Y = self.response.ix[:, bootstrap] print('Calculating MI, Background MI, and CLR Matrix') (self.clr_matrix, self.mi_matrix) = self.mi_clr_driver.run(X, Y) - print('Calculating betas using BBSR') + # Force stdout to flush so that the output is readable from all workers + sys.stdout.flush() if 0 == rank: kvs.put('bootstrap %d'%idx, 'This is how we stop workers from moving ahead on a new bootstrap') else: kvs.view('bootstrap %d'%idx) + print('Calculating betas using BBSR') ownCheck = utils.ownCheck(kvs, rank, chunk=25) current_betas,current_rescaled_betas = self.regression_driver.run(X, Y, self.clr_matrix, self.priors_data,kvs,rank, ownCheck) if rank: continue From dd8795f56695b5260134b13b91ed4a5b52f27c04 Mon Sep 17 00:00:00 2001 From: Nick De Veaux Date: Thu, 10 May 2018 14:31:29 -0400 Subject: [PATCH 4/5] removed unused import and key --- inferelator_ng/bbsr_tfa_workflow.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/inferelator_ng/bbsr_tfa_workflow.py b/inferelator_ng/bbsr_tfa_workflow.py index 200c023..7337c1d 100644 --- a/inferelator_ng/bbsr_tfa_workflow.py +++ b/inferelator_ng/bbsr_tfa_workflow.py @@ -14,7 +14,6 @@ from kvsstcp.kvsclient import KVSClient import pandas as pd from . import utils -import time # Connect to the key value store service (its location is found via an # environment variable that is set when this is started vid kvsstcp.py @@ -59,7 +58,6 @@ def run(self): if rank: continue betas.append(current_betas) rescaled_betas.append(current_rescaled_betas) - kvs.put('bootstrap_{}'.format(idx + 1), 'go') self.emit_results(betas, rescaled_betas, self.gold_standard, self.priors_data) From b4ea2755f4e970ee5207f167fec946684a8de3b5 Mon Sep 17 00:00:00 2001 From: Nick De Veaux Date: Thu, 10 May 2018 14:35:34 -0400 Subject: [PATCH 5/5] missing import added --- inferelator_ng/bbsr_tfa_workflow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/inferelator_ng/bbsr_tfa_workflow.py b/inferelator_ng/bbsr_tfa_workflow.py index 7337c1d..769cc59 100644 --- a/inferelator_ng/bbsr_tfa_workflow.py +++ b/inferelator_ng/bbsr_tfa_workflow.py @@ -4,6 +4,7 @@ import numpy as np import os +import sys from workflow import WorkflowBase import design_response_translation #added python design_response from tfa import TFA