Skip to content
Snippets Groups Projects
Commit c0fbebe1 authored by Tim O'Donnell's avatar Tim O'Donnell
Browse files

Clearer output during training

parent 5b4dfbd2
No related branches found
No related tags found
No related merge requests found
...@@ -370,7 +370,8 @@ class Class1AffinityPredictor(object): ...@@ -370,7 +370,8 @@ class Class1AffinityPredictor(object):
peptides, peptides,
affinities, affinities,
models_dir_for_save=None, models_dir_for_save=None,
verbose=1): verbose=1,
progress_preamble=""):
""" """
Fit one or more allele specific predictors for a single allele using a Fit one or more allele specific predictors for a single allele using a
single neural network architecture. single neural network architecture.
...@@ -399,6 +400,9 @@ class Class1AffinityPredictor(object): ...@@ -399,6 +400,9 @@ class Class1AffinityPredictor(object):
verbose : int verbose : int
Keras verbosity Keras verbosity
progress_preamble : string
Optional string of information to include in each progress update
Returns Returns
------- -------
list of Class1NeuralNetwork list of Class1NeuralNetwork
...@@ -411,7 +415,8 @@ class Class1AffinityPredictor(object): ...@@ -411,7 +415,8 @@ class Class1AffinityPredictor(object):
peptides=peptides, peptides=peptides,
affinities=affinities, affinities=affinities,
allele_pseudosequences=None, allele_pseudosequences=None,
verbose=verbose) verbose=verbose,
progress_preamble=progress_preamble)
if allele not in self.allele_to_allele_specific_models: if allele not in self.allele_to_allele_specific_models:
self.allele_to_allele_specific_models[allele] = [] self.allele_to_allele_specific_models[allele] = []
...@@ -442,7 +447,8 @@ class Class1AffinityPredictor(object): ...@@ -442,7 +447,8 @@ class Class1AffinityPredictor(object):
peptides, peptides,
affinities, affinities,
models_dir_for_save=None, models_dir_for_save=None,
verbose=1): verbose=1,
progress_preamble=""):
""" """
Fit one or more pan-allele predictors using a single neural network Fit one or more pan-allele predictors using a single neural network
architecture. architecture.
...@@ -472,6 +478,9 @@ class Class1AffinityPredictor(object): ...@@ -472,6 +478,9 @@ class Class1AffinityPredictor(object):
verbose : int verbose : int
Keras verbosity Keras verbosity
progress_preamble : string
Optional string of information to include in each progress update
Returns Returns
------- -------
list of Class1NeuralNetwork list of Class1NeuralNetwork
...@@ -486,7 +495,8 @@ class Class1AffinityPredictor(object): ...@@ -486,7 +495,8 @@ class Class1AffinityPredictor(object):
peptides=peptides, peptides=peptides,
affinities=affinities, affinities=affinities,
allele_pseudosequences=allele_pseudosequences, allele_pseudosequences=allele_pseudosequences,
verbose=verbose) verbose=verbose,
progress_preamble=progress_preamble)
for (i, model) in enumerate(models): for (i, model) in enumerate(models):
model_name = self.model_name("pan-class1", i) model_name = self.model_name("pan-class1", i)
...@@ -511,7 +521,8 @@ class Class1AffinityPredictor(object): ...@@ -511,7 +521,8 @@ class Class1AffinityPredictor(object):
peptides, peptides,
affinities, affinities,
allele_pseudosequences, allele_pseudosequences,
verbose=1): verbose=1,
progress_preamble = ""):
""" """
Private helper method Private helper method
...@@ -523,6 +534,8 @@ class Class1AffinityPredictor(object): ...@@ -523,6 +534,8 @@ class Class1AffinityPredictor(object):
affinities : list of float affinities : list of float
allele_pseudosequences : EncodableSequences or list of string allele_pseudosequences : EncodableSequences or list of string
verbose : int verbose : int
progress_preamble : string
Optional string of information to include in each progress update
Returns Returns
------- -------
...@@ -536,7 +549,8 @@ class Class1AffinityPredictor(object): ...@@ -536,7 +549,8 @@ class Class1AffinityPredictor(object):
encodable_peptides, encodable_peptides,
affinities, affinities,
allele_pseudosequences=allele_pseudosequences, allele_pseudosequences=allele_pseudosequences,
verbose=verbose) verbose=verbose,
progress_preamble=progress_preamble)
yield model yield model
def calibrate_percentile_ranks( def calibrate_percentile_ranks(
......
...@@ -317,7 +317,8 @@ class Class1NeuralNetwork(object): ...@@ -317,7 +317,8 @@ class Class1NeuralNetwork(object):
affinities, affinities,
allele_pseudosequences=None, allele_pseudosequences=None,
sample_weights=None, sample_weights=None,
verbose=1): verbose=1,
progress_preamble=""):
""" """
Fit the neural network. Fit the neural network.
...@@ -338,6 +339,9 @@ class Class1NeuralNetwork(object): ...@@ -338,6 +339,9 @@ class Class1NeuralNetwork(object):
verbose : int verbose : int
Keras verbosity level Keras verbosity level
progress_preamble : string
Optional string of information to include in each progress update
""" """
self.fit_num_points = len(peptides) self.fit_num_points = len(peptides)
...@@ -453,11 +457,14 @@ class Class1NeuralNetwork(object): ...@@ -453,11 +457,14 @@ class Class1NeuralNetwork(object):
self.loss_history[key].extend(value) self.loss_history[key].extend(value)
print( print(
"Epoch %3d / %3d: loss=%g. Min val loss at epoch %s" % ( (
i, progress_preamble + " " +
self.hyperparameters['max_epochs'], "Epoch %3d / %3d: loss=%g. Min val loss (%s) at epoch %s" % (
self.loss_history['loss'][-1], i,
min_val_loss_iteration)) self.hyperparameters['max_epochs'],
self.loss_history['loss'][-1],
str(min_val_loss),
min_val_loss_iteration)).strip())
if self.hyperparameters['validation_split']: if self.hyperparameters['validation_split']:
val_loss = self.loss_history['val_loss'][-1] val_loss = self.loss_history['val_loss'][-1]
......
...@@ -79,7 +79,7 @@ parser.add_argument( ...@@ -79,7 +79,7 @@ parser.add_argument(
"--verbosity", "--verbosity",
type=int, type=int,
help="Keras verbosity. Default: %(default)s", help="Keras verbosity. Default: %(default)s",
default=1) default=0)
parser.add_argument( parser.add_argument(
"--parallelization-num-jobs", "--parallelization-num-jobs",
default=1, default=1,
...@@ -172,6 +172,7 @@ def run(argv=sys.argv[1:]): ...@@ -172,6 +172,7 @@ def run(argv=sys.argv[1:]):
'allele': allele, 'allele': allele,
'sub_df': sub_df, 'sub_df': sub_df,
'hyperparameters': hyperparameters, 'hyperparameters': hyperparameters,
'verbose': args.verbosity,
'predictor': predictor if not worker_pool else None, 'predictor': predictor if not worker_pool else None,
'save_to': args.out_models_dir if not worker_pool else None, 'save_to': args.out_models_dir if not worker_pool else None,
} }
...@@ -220,22 +221,23 @@ def process_work( ...@@ -220,22 +221,23 @@ def process_work(
allele, allele,
sub_df, sub_df,
hyperparameters, hyperparameters,
verbose,
predictor, predictor,
save_to): save_to):
if predictor is None: if predictor is None:
predictor = Class1AffinityPredictor() predictor = Class1AffinityPredictor()
print( progress_preamble = (
"[%2d / %2d hyperparameters] " "[%2d / %2d hyperparameters] "
"[%2d / %2d replicates] " "[%4d / %4d alleles] "
"[%4d / %4d alleles]: %s" % ( "[%2d / %2d replicates]: %s " % (
hyperparameter_set_num + 1, hyperparameter_set_num + 1,
num_hyperparameter_sets, num_hyperparameter_sets,
model_group + 1,
n_models,
allele_num + 1, allele_num + 1,
n_alleles, n_alleles,
model_group + 1,
n_models,
allele)) allele))
train_data = sub_df.dropna().sample(frac=1.0) train_data = sub_df.dropna().sample(frac=1.0)
...@@ -245,7 +247,9 @@ def process_work( ...@@ -245,7 +247,9 @@ def process_work(
allele=allele, allele=allele,
peptides=train_data.peptide.values, peptides=train_data.peptide.values,
affinities=train_data.measurement_value.values, affinities=train_data.measurement_value.values,
models_dir_for_save=save_to) models_dir_for_save=save_to,
progress_preamble=progress_preamble,
verbose=verbose)
return predictor return predictor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment