Пример #1
0
def plt_roc_curve(preds, labels, save_str='', save=False):
    """Plots the ROC curve of the classifier

    Parameters
    ----------
    preds : array_like
        Classifier predictions
    labels : array_like
        True class labels
    save_str : str
        String to use to save fig and data, if save. Should not have
        file extension, should not be full path - just name of .pickle
        and .png files that will be saved
    save : bool
        If True, will save the fig and data
    """

    # Thresholds to use for plt
    thresholds = np.linspace(0, 1, 1000)

    # Init arrays for storing FPR and TPR
    fprs = np.zeros_like(thresholds)
    tprs = np.zeros_like(thresholds)

    for ii in range(np.size(thresholds)):

        # Get TPR here
        tprs[ii] = get_sens(preds=preds,
                            labels=labels,
                            threshold=thresholds[ii])

        # Get FPR here
        fprs[ii] = 1 - get_spec(
            preds=preds, labels=labels, threshold=thresholds[ii])

    # Make fig
    plt.figure(figsize=(12, 6))
    plt.rc("font", family="Times New Roman")
    plt.tick_params(labelsize=20)
    plt.plot(fprs, tprs, 'k-')
    plt.plot(np.linspace(0, 1, 1000), np.linspace(0, 1, 1000), 'b--')
    plt.xlabel('False Positive Rate', fontsize=24)
    plt.ylabel('True Positive Rate', fontsize=24)
    plt.tight_layout()

    if save:  # If saving

        verify_path(os.path.join(get_proj_path(), 'output/roc-figs/'))
        out_path = os.path.join(get_proj_path(), 'output/roc-figs/')

        plt.savefig(os.path.join(out_path, '%s.png' % save_str), dpi=150)
        plt.close()
        save_pickle(np.array([fprs, tprs]),
                    os.path.join(out_path, '%s.pickle' % save_str))
"""
Tyson Reimer
University of Manitoba
October 15th, 2020
"""

import os
import numpy as np
import matplotlib.pyplot as plt

from umbms import get_proj_path, verify_path
from umbms.loadsave import load_pickle

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'output/roc-figs/')

__OUT_DIR = os.path.join(get_proj_path(), 'output/figs/')
verify_path(__OUT_DIR)

###############################################################################

if __name__ == "__main__":

    # Load ROC data obtained from testing on G1 after training on G1
    cnn_roc = load_pickle(os.path.join(__DATA_DIR, 'cnn_run_8_roc.pickle'))
    dnn_roc = load_pickle(os.path.join(__DATA_DIR, 'dnn_run_15_roc.pickle'))
    logreg_roc = load_pickle(
        os.path.join(__DATA_DIR, 'logreg_run_0_roc.pickle'))

    # Define colours for the figure
Пример #3
0
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib.cm import get_cmap

from sklearn.decomposition import PCA

from umbms import get_proj_path, verify_path, get_script_logger
from umbms.loadsave import load_pickle, save_pickle
from umbms.ai.preproc import to_td

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/')

__OUT_DIR = os.path.join(get_proj_path(), 'output/figs/')
verify_path(__OUT_DIR)

fig_out = os.path.join(get_proj_path(), 'output/figs/')
verify_path(fig_out)

###############################################################################


def get_valid_session_ns(metadata, dataset):
    """Gets the session numbers in the metadata for more than 5 scans

    Parameters
    ----------
Пример #4
0
from umbms import get_proj_path, get_script_logger, verify_path

from umbms.loadsave import load_pickle, save_pickle

from umbms.ai.makesets import get_class_labels
from umbms.ai.models import get_sino_cnn
from umbms.ai.preproc import resize_features_for_keras, to_td
from umbms.ai.augment import full_aug
from umbms.ai.metrics import (get_acc, get_sens, get_spec, report_metrics,
                              get_opt_thresh)

from sklearn.metrics import roc_auc_score

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/')

###############################################################################

__N_EPOCHS = 496

__N_RUNS = 20

###############################################################################

if __name__ == "__main__":

    logger = get_script_logger(__file__)

    # Load the training data and metadata from Gen-2
    g2_d = load_pickle(os.path.join(__DATA_DIR, 'g2/g2_fd.pickle'))
November 16th, 2020
"""

import os
import numpy as np

import matplotlib.pyplot as plt

import scipy.stats as stats

from umbms import get_proj_path, get_script_logger, verify_path
from umbms.loadsave import load_pickle

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'output/by-adi-preds/')

phant_info_dir = os.path.join(get_proj_path(), 'data/phant-info/')

__OUT_DIR = os.path.join(get_proj_path(), 'output/figs/')
verify_path(__OUT_DIR)

###############################################################################

# Define mid grey color
mid_grey = [118, 113, 113]
mid_grey = [ii / 255 for ii in mid_grey]

# Define light  grey color
light_grey = [217, 217, 217]
light_grey = [ii / 255 for ii in light_grey]
Пример #6
0
Tyson Reimer
University of Manitoba
February 22nd, 2020
"""

import os
import numpy as np

from umbms import get_proj_path, get_script_logger, verify_path

from umbms.loadsave import load_pickle, save_pickle
from umbms.ai.makesets import shuffle_arrs, get_class_labels

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/g1/')

__OUT_DIR = os.path.join(get_proj_path(), 'data/umbmid/g1-train-test/')
verify_path(__OUT_DIR)

###############################################################################


def report_md_breakdown(metadata):
    """Prints a breakdown of metadata info to logger

    Parameters
    ----------
    metadata : array_like
        List of dicts of the metadata
    """
Пример #7
0
from umbms import get_proj_path, get_script_logger, verify_path

from umbms.loadsave import load_pickle, save_pickle

from umbms.ai.augment import full_aug
from umbms.ai.gencompare import correct_g1_ini_ant_ang
from umbms.ai.models import get_sino_dnn
from umbms.ai.makesets import get_class_labels
from umbms.ai.preproc import resize_features_for_keras, to_td
from umbms.ai.metrics import (get_acc, get_sens, get_spec, get_opt_thresh,
                              report_metrics)

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/')

###############################################################################

# Number of epochs to train over
__N_EPOCHS = 2550

###############################################################################


def plt_roc_curve(preds, labels, save_str='', save=False):
    """Plots the ROC curve of the classifier

    Parameters
    ----------
    preds : array_like
Пример #8
0
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.backend import clear_session

from umbms import get_proj_path, get_script_logger, verify_path

from umbms.loadsave import load_pickle
from umbms.ai.makesets import get_class_labels
from umbms.ai.models import get_sino_dnn
from umbms.ai.preproc import resize_features_for_keras, to_td
from umbms.ai.augment import full_aug
from umbms.ai.gencompare import correct_g1_ini_ant_ang

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/')

__FIG_OUT_DIR = os.path.join(get_proj_path(), 'output/2006-g2-v-g1/')
verify_path(__FIG_OUT_DIR)

###############################################################################

# Number of epochs to train over
__N_EPOCHS = 6000

# Set the bounds on the time-domain window that will be applied to all
# data before training or testing
__T_WIN_LOW = 5
__T_WIN_HIGH = 40

# Number of runs to use to identify best-performing number of epochs
Пример #9
0
from umbms import get_proj_path, get_script_logger, verify_path

from umbms.loadsave import load_pickle, save_pickle

from umbms.ai.augment import full_aug
from umbms.ai.gencompare import correct_g1_ini_ant_ang
from umbms.ai.models import get_sino_cnn
from umbms.ai.makesets import get_class_labels
from umbms.ai.preproc import resize_features_for_keras, to_td
from umbms.ai.metrics import (get_acc, get_sens, get_spec, get_opt_thresh,
                              report_metrics)

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/')

###############################################################################

# Number of epochs to train over
__N_EPOCHS = 496

###############################################################################


def plt_roc_curve(preds, labels, save_str='', save=False):
    """Plots the ROC curve of the classifier

    Parameters
    ----------
    preds : array_like
Tyson Reimer
University of Manitoba
May 04, 2020
"""

import os
import numpy as np
import matplotlib.pyplot as plt

from umbms import get_proj_path, verify_path

###############################################################################

__SAVE_FIG = True

__OUT_DIR = os.path.join(get_proj_path(), 'output/figs/')
verify_path(__OUT_DIR)

###############################################################################

# Define blue to match ppt color
dark_grey = [38, 38, 38]
dark_grey = [ii / 255 for ii in dark_grey]

mid_grey = [118, 113, 113]
mid_grey = [ii / 255 for ii in mid_grey]

# Define grey color that goes well with the blue color
light_grey = [217, 217, 217]
light_grey = [ii / 255 for ii in light_grey]
Tyson Reimer
University of Manitoba
May 01, 2020
"""

import os
import numpy as np

from umbms import get_proj_path, verify_path
from umbms.loadsave import load_pickle
from umbms.plot.sinogramplot import plot_sino
from umbms.ai.preproc import to_td

###############################################################################

__DATA_DIR = os.path.join(get_proj_path(), 'data/umbmid/g2/')

__FIG_OUT_DIR = os.path.join(get_proj_path(), 'output/figs/')
verify_path(__FIG_OUT_DIR)

###############################################################################

if __name__ == "__main__":

    # Load phantom dataset (UM-BMID Gen1)
    phant_data = load_pickle(os.path.join(__DATA_DIR, 'g2_fd.pickle'))

    # Convert dataset to the time-domain
    sinograms = to_td(phant_data)

    # Take sample sinogram