def run(datasets, splice_sites, sub_models, save, vis, iter, metrics, summary, config, num_folds, bal, imbal, imbal_t, imbal_f, batch_size, epochs):
    "\n    Parameters\n    ----------\n    dataset: a string {nn269, ce, hs3d} indicating which dataset to use\n    splice_site_type: a string {acceptor, donor} indicating which splice\n        site to train on\n    model_architecture: a string {cnn, dnn, rnn} indicating which model\n        architecture to use for training\n    save_model: boolean, whether to save the current model\n    bal: boolean, whether to balance the dataset\n    summary: boolean, whether to print out the model architecture summary\n    config: boolean, whether to print out the model's configuration\n    visualize: boolean, whether to save a performance graph of the model\n    metrics: boolean, whether to print out the evaluation metrics for the model\n    num_folds: int (default 10), the number of folds for k-fold cross validation\n    epochs: int (default 15), the number of epochs for the chosen model\n    batch_size: int (default 32), the model batch size\n    model_iter: integer, the iteration of the current model architecture (e.g.\n        if this is the third cnn architecture you are testing, use 3)\n    "
    network_rows = {'acceptor': {'nn269': 90, 'ce': 141, 'hs3d': 140, 'hs2': 602, 'ce2': 602, 'dm': 602, 'ar': 602, 'or': 602}, 'donor': {'nn269': 15, 'ce': 141, 'hs3d': 140, 'hs2': 602, 'ce2': 602, 'dm': 602, 'ar': 602, 'or': 602}}
    to_run = dict([(sub_model, {'nn269': '', 'ce': '', 'hs3d': '', 'hs2': '', 'ce2': '', 'dm': '', 'ar': '', 'or': ''}) for sub_model in sub_models])
    results = copy.deepcopy(to_run)
    for sub_model in sub_models:
        for dataset in datasets:
            to_run[sub_model][dataset] = encode_data.encode(dataset, sub_model, bal)
    evals = dict([(sub_model, {'f1': '', 'precision': '', 'sensitivity': '', 'specificity': '', 'recall': '', 'mcc': '', 'err_rate': ''}) for sub_model in sub_models])
    for sub_model in sub_models:
        for dataset in datasets:
            if (to_run[sub_model][dataset] == ''):
                pass
            else:
                results[sub_model][dataset] = utils.cross_validation(num_folds, sub_model, splice_sites, dataset, to_run[sub_model][dataset], network_rows, evals, summary, config, batch_size, epochs, save)
    print(results)
    return results
Parameters
----------
dataset: a string {nn269, ce, hs3d} indicating which dataset to use
splice_site_type: a string {acceptor, donor} indicating which splice
    site to train on
model_architecture: a string {cnn, dnn, rnn} indicating which model
    architecture to use for training
save_model: boolean, whether to save the current model
bal: boolean, whether to balance the dataset
summary: boolean, whether to print out the model architecture summary
config: boolean, whether to print out the model's configuration
visualize: boolean, whether to save a performance graph of the model
metrics: boolean, whether to print out the evaluation metrics for the model
num_folds: int (default 10), the number of folds for k-fold cross validation
epochs: int (default 15), the number of epochs for the chosen model
batch_size: int (default 32), the model batch size
model_iter: integer, the iteration of the current model architecture (e.g.
    if this is the third cnn architecture you are testing, use 3)
def run(datasets, splice_sites, sub_models, save, vis, iter, metrics, summary, config, num_folds, bal, imbal, imbal_t, imbal_f, batch_size, epochs):
    "\n    Parameters\n    ----------\n    dataset: a string {nn269, ce, hs3d} indicating which dataset to use\n    splice_site_type: a string {acceptor, donor} indicating which splice\n        site to train on\n    model_architecture: a string {cnn, dnn, rnn} indicating which model\n        architecture to use for training\n    save_model: boolean, whether to save the current model\n    bal: boolean, whether to balance the dataset\n    summary: boolean, whether to print out the model architecture summary\n    config: boolean, whether to print out the model's configuration\n    visualize: boolean, whether to save a performance graph of the model\n    metrics: boolean, whether to print out the evaluation metrics for the model\n    num_folds: int (default 10), the number of folds for k-fold cross validation\n    epochs: int (default 15), the number of epochs for the chosen model\n    batch_size: int (default 32), the model batch size\n    model_iter: integer, the iteration of the current model architecture (e.g.\n        if this is the third cnn architecture you are testing, use 3)\n    "
    network_rows = {'acceptor': {'nn269': 90, 'ce': 141, 'hs3d': 140, 'hs2': 602, 'ce2': 602, 'dm': 602, 'ar': 602, 'or': 602}, 'donor': {'nn269': 15, 'ce': 141, 'hs3d': 140, 'hs2': 602, 'ce2': 602, 'dm': 602, 'ar': 602, 'or': 602}}
    to_run = dict([(sub_model, {'nn269': , 'ce': , 'hs3d': , 'hs2': , 'ce2': , 'dm': , 'ar': , 'or': }) for sub_model in sub_models])
    results = copy.deepcopy(to_run)
    for sub_model in sub_models:
        for dataset in datasets:
            to_run[sub_model][dataset] = encode_data.encode(dataset, sub_model, bal)
    evals = dict([(sub_model, {'f1': , 'precision': , 'sensitivity': , 'specificity': , 'recall': , 'mcc': , 'err_rate': }) for sub_model in sub_models])
    for sub_model in sub_models:
        for dataset in datasets:
            if (to_run[sub_model][dataset] == ):
                pass
            else:
                results[sub_model][dataset] = utils.cross_validation(num_folds, sub_model, splice_sites, dataset, to_run[sub_model][dataset], network_rows, evals, summary, config, batch_size, epochs, save)
    print(results)
    return results