From 13200399631d96e7b3292b72c8f735a24b71fd62 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 10:05:06 +0200 Subject: [PATCH 01/22] ... --- app/predictor_cut.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 9beef5e..cb3b780 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -35,11 +35,10 @@ def predict_cut(training=True): print("saving data to cache") data.to_hdf(cache_path, "table") - print(data) + #print(data) #feature_list = data.keys().tolist() #feature_list.remove("Y") - feature_list = ["max_lb", "max_mb", "mean_mb", "mean_rt", "mean_mt", "mean_whole", "ratio_mean_lt", - "ratio_mean_mb", "ratio_mean_mt", "ratio_mean_rt", "ratio_mean_whole"] + feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() ys = data["Y"].values.tolist() nn = KNeighborsRegressor( From 5a5ed5d95979a657b510c953d9345cbc4b6e407b Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 15:42:24 +0200 Subject: [PATCH 02/22] ... --- app/feature.py | 49 ++++++++++------------ app/load_data_3d.py | 20 +++++++-- app/load_features.py | 59 ++++++++++++++++++++++++++ app/normalize.py | 20 +++++---- app/predictor_cut.py | 99 ++++++++++++++++++-------------------------- 5 files changed, 149 insertions(+), 98 deletions(-) create mode 100644 app/load_features.py diff --git a/app/feature.py b/app/feature.py index 5ee2066..9f37e84 100644 --- a/app/feature.py +++ b/app/feature.py @@ -4,7 +4,7 @@ from .normalize import normalize -def feature_ratio_mean(inputs): +def feature_ratio_mean(inputs, norm=None): inputs = get_flat_values(inputs) fs = [] @@ -17,38 +17,28 @@ def feature_ratio_mean(inputs): fs.append(ratio) - fs = normalize(fs) - return fs + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs -def feature_mean(inputs): +def feature_mean(inputs, norm=None): inputs = get_flat_values(inputs) fs = [] for i in inputs: fs.append(np.mean(i)) - fs = normalize(fs) - return fs + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs - -def feature_ratio(inputs): - inputs = get_flat_values(inputs) - - fs = [] - for i in inputs: - - low = i[i < 1100] - high = i[i >= 1100] - - ratio = np.sum(high)/np.sum(low) - - fs.append(ratio) - - fs = normalize(fs) - return fs - - -def feature_max(inputs): +def feature_max(inputs, norm=None): inputs = get_flat_values(inputs) fs = [] @@ -58,9 +48,12 @@ def feature_max(inputs): x_max = bin_edges[idx_max] fs.append(x_max) - - fs = normalize(fs) - return fs + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs def get_flat_values(inputs): diff --git a/app/load_data_3d.py b/app/load_data_3d.py index e7223b6..9d7ed4e 100644 --- a/app/load_data_3d.py +++ b/app/load_data_3d.py @@ -8,24 +8,36 @@ from .settings import DATA_DIRECTORY def load_samples_inputs(training=True): + if training == True: + folder = "set_train" + else: + folder = "set_test" + DIR = os.path.join( DATA_DIRECTORY, - "set_train" + folder ) files = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))]) inputs = [] for i in range(1, files+1): - inputs.append(load_sample_input(i)) + inputs.append(load_sample_input(i, training)) return inputs def load_sample_input(id=1, training=True): + if training == True: + folder = "set_train" + files = "train" + else: + folder = "set_test" + files = "test" + file_path = os.path.join( DATA_DIRECTORY, - "set_train", - "train_{}.nii".format(id) + folder, + "{}_{}.nii".format(files,id) ) return ni.load(file_path).get_data()[:,:,:,0] diff --git a/app/load_features.py b/app/load_features.py new file mode 100644 index 0000000..47d7796 --- /dev/null +++ b/app/load_features.py @@ -0,0 +1,59 @@ +def load_features(norms=None): + if norms == None: + training = True + else: + training = False + + areas = ["lt","mt","rt","lb","mb","rb"] + inputs = [ + { + "area": "whole", + "val": load_samples_inputs(training) + } + ] + for a in areas: + inputs.append( + { + "area": a, + "val": cut_brain(inputs[0]["val"], a) + } + ) + features = [ + { + "name": "mean", + "f": feature_mean + }, + { + "name": "ratio_mean", + "f": feature_ratio_mean + }, + { + "name": "max", + "f": feature_max + }, + ] + if norms == None: + norms = [] + data = load_targets() + print("plotting features") + for f in features: + for i in inputs: + feature_inputs , norms["{}_{}".format(f["name"], i["area"])] = f["f"](i["val"]) + data["{}_{}".format(f["name"], i["area"])] = feature_inputs + # plt.figure() + # plt.scatter( + # feature_inputs, + # data["Y"].tolist(), + # ) + # plt.savefig("plots/line_{}_{}.pdf".format( + # f["name"], i["area"] + # )) + # plt.close() + return data, norms + else: + data = [] + for f in features: + for i in inputs: + feature_inputs = f["f"](i["val"], norms["{}_{}".format(f["name"], i["area"])]) + data["{}_{}".format(f["name"], i["area"])] = feature_inputs + return data diff --git a/app/normalize.py b/app/normalize.py index b5ac38a..04f35b1 100644 --- a/app/normalize.py +++ b/app/normalize.py @@ -1,11 +1,17 @@ import numpy as np -def normalize(inputs): +def normalize(inputs, minmax=None): data = np.array(inputs) - maximum = data.max() - minimum = data.min() - - out = (data-minimum)/(maximum-minimum) - - return out + if minmax == None: + minimum = data.min() + maximum = data.max() + return (data-minimum)/(maximum-minimum), [minimum,maximum] + else: + minimum = minmax[0] + maximum = minmax[1] + if minimum > maximum: + tmp = maximum + maximum = minimum + minimum = tmp + return (data-minimum)/(maximum-minimum) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index cb3b780..19caf08 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -16,31 +16,51 @@ from .feature import feature_mean, feature_max, feature_ratio_mean from .load_data_3d import load_targets, load_samples_inputs from .squared_error import squared_error - +from .load_features import load_features def predict_cut(training=True): - cache_path = os.path.join( + cache_data_path = os.path.join( + CURRENT_DIRECTORY, + "..", + "cache", + "data.hdf" + ) + cache_norms_path = os.path.join( + CURRENT_DIRECTORY, + "..", + "cache", + "norms.hdf" + ) + cache_test_path = os.path.join( CURRENT_DIRECTORY, "..", "cache", - "trial1.hdf" + "test.hdf" ) - if os.path.exists(cache_path): + if os.path.exists(cache_data_path): print("Loading features from cache") - data = pd.read_hdf(cache_path, "table") + data = pd.read_hdf(cache_data_path, "table") + norms = pd.read_hdf(cache_norms_path, "table") else: print("Loading features") - data = load_features() + data, norms= load_features() + print("saving data to cache") + data.to_hdf(cache_data_path, "table") + norms.to_hdf(cache_norms_path, "table") - print("saving data to cache") - data.to_hdf(cache_path, "table") + if os.path.exists(cache_test_path): + print("Loading test features from cache") + test_data = pd.read_hdf(cache_test_path, "table") + else: + print("Loading test features") + test_data = load_features(norms) + print("saving test to cache") + test_data.to_hdf(cache_data_path, "table") - #print(data) - #feature_list = data.keys().tolist() - #feature_list.remove("Y") feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() ys = data["Y"].values.tolist() + test_input = test_data[feature_list].values.tolist() nn = KNeighborsRegressor( n_neighbors=3, weights="uniform", @@ -51,53 +71,14 @@ def predict_cut(training=True): predicted = cross_val_predict(nn, xs, ys, cv=5) print("Squared Error:",squared_error(ys,predicted)) + nn.fit(xs, ys) -def load_features(): - areas = ["lt","mt","rt","lb","mb","rb"] - inputs = [ - { - "area": "whole", - "val": load_samples_inputs() - } - ] - for a in areas: - inputs.append( - { - "area": a, - "val": cut_brain(inputs[0]["val"], a) - } - ) - data = load_targets() - - features = [ - { - "name": "mean", - "f": feature_mean - }, - { - "name": "ratio_mean", - "f": feature_ratio_mean - }, - { - "name": "max", - "f": feature_max - }, - ] - - print("plotting features") - for f in features: - for i in inputs: - feature_inputs = f["f"](i["val"]) - data["{}_{}".format(f["name"], i["area"])] = feature_inputs - - plt.figure() - plt.scatter( - feature_inputs, - data["Y"].tolist(), - ) - plt.savefig("plots/line_{}_{}.pdf".format( - f["name"], i["area"] - )) - plt.close() + result = nn.predict(test_input) + print(result) + result_path = os.path.join( + CURRENT_DIRECTORY, + "..", + "result.csv" + ) + result.to_csv(result_path) - return data From 1d4360a7fc84d0c0246c1a5bb9ce12c6e18bb2ca Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 16:04:03 +0200 Subject: [PATCH 03/22] ... --- app/load_features.py | 4 ++++ app/predictor_cut.py | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/load_features.py b/app/load_features.py index 47d7796..119f7df 100644 --- a/app/load_features.py +++ b/app/load_features.py @@ -1,3 +1,7 @@ +from .load_data_3d import load_targets, load_samples_inputs +from .cut_brain import cut_brain +from .feature import feature_mean, feature_max, feature_ratio_mean + def load_features(norms=None): if norms == None: training = True diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 19caf08..28cb325 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -12,9 +12,6 @@ from sklearn.metrics import accuracy_score from .settings import CURRENT_DIRECTORY -from .cut_brain import cut_brain -from .feature import feature_mean, feature_max, feature_ratio_mean -from .load_data_3d import load_targets, load_samples_inputs from .squared_error import squared_error from .load_features import load_features From 4e136f49cf1b01cca59f05d56475851d2004d6d2 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 16:30:55 +0200 Subject: [PATCH 04/22] ... --- app/load_features.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/load_features.py b/app/load_features.py index 119f7df..9064ea3 100644 --- a/app/load_features.py +++ b/app/load_features.py @@ -37,7 +37,7 @@ def load_features(norms=None): }, ] if norms == None: - norms = [] + norms = {} data = load_targets() print("plotting features") for f in features: @@ -55,7 +55,7 @@ def load_features(norms=None): # plt.close() return data, norms else: - data = [] + data = {} for f in features: for i in inputs: feature_inputs = f["f"](i["val"], norms["{}_{}".format(f["name"], i["area"])]) From fd20bd03ec86a29eeba6afd693cd777e2b31754b Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 17:27:26 +0200 Subject: [PATCH 05/22] ... --- app/predictor_cut.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 28cb325..ca46a5a 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -34,16 +34,16 @@ def predict_cut(training=True): "cache", "test.hdf" ) - if os.path.exists(cache_data_path): + if os.path.exists(cache_data_path) and os.path.exists(cache_norms_path): print("Loading features from cache") data = pd.read_hdf(cache_data_path, "table") - norms = pd.read_hdf(cache_norms_path, "table") + norms = pd.read_hdf(cache_norms_path, "table").DataFrame.to_dict() else: print("Loading features") data, norms= load_features() print("saving data to cache") data.to_hdf(cache_data_path, "table") - norms.to_hdf(cache_norms_path, "table") + pd.DataFrame.from_dict(norms).to_hdf(cache_norms_path, "table") if os.path.exists(cache_test_path): print("Loading test features from cache") From 3ced94f1574254ccf73308fd68006b155b0ecf3e Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 17:44:52 +0200 Subject: [PATCH 06/22] ... --- app/predictor_cut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index ca46a5a..d435c64 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -37,7 +37,7 @@ def predict_cut(training=True): if os.path.exists(cache_data_path) and os.path.exists(cache_norms_path): print("Loading features from cache") data = pd.read_hdf(cache_data_path, "table") - norms = pd.read_hdf(cache_norms_path, "table").DataFrame.to_dict() + norms = pd.read_hdf(cache_norms_path, "table").to_dict() else: print("Loading features") data, norms= load_features() From f8ba5cabd4c83a2750bb6c4a79d6aea360f2d2ef Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 17:49:19 +0200 Subject: [PATCH 07/22] ... --- app/predictor_cut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index d435c64..9e916eb 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -40,7 +40,7 @@ def predict_cut(training=True): norms = pd.read_hdf(cache_norms_path, "table").to_dict() else: print("Loading features") - data, norms= load_features() + data, norms = load_features() print("saving data to cache") data.to_hdf(cache_data_path, "table") pd.DataFrame.from_dict(norms).to_hdf(cache_norms_path, "table") From 1487dc236d0a523fd9deaf06edbb8b714d24ebf5 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 18:15:31 +0200 Subject: [PATCH 08/22] ... --- app/predictor_cut.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 9e916eb..1a9825d 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -47,12 +47,12 @@ def predict_cut(training=True): if os.path.exists(cache_test_path): print("Loading test features from cache") - test_data = pd.read_hdf(cache_test_path, "table") + test_data = pd.read_hdf(cache_test_path, "table").to_dict() else: print("Loading test features") test_data = load_features(norms) print("saving test to cache") - test_data.to_hdf(cache_data_path, "table") + pd.DataFrame.from_dict(test_data).to_hdf(cache_data_path, "table") feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() From e1d162ef1ed7c4f12acfe4d0080f897eb06da99f Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 19:03:15 +0200 Subject: [PATCH 09/22] ... --- app/predictor_cut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 1a9825d..de3402a 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -57,7 +57,7 @@ def predict_cut(training=True): feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() ys = data["Y"].values.tolist() - test_input = test_data[feature_list].values.tolist() + test_input = test_data[feature_list].values().tolist() nn = KNeighborsRegressor( n_neighbors=3, weights="uniform", From 54a9e0f62b733d4a9c8f4f7aa51d6eb447b1a21a Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Thu, 20 Oct 2016 23:19:25 +0200 Subject: [PATCH 10/22] ... --- app/predictor_cut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index de3402a..9bd2bdb 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -52,7 +52,7 @@ def predict_cut(training=True): print("Loading test features") test_data = load_features(norms) print("saving test to cache") - pd.DataFrame.from_dict(test_data).to_hdf(cache_data_path, "table") + pd.DataFrame.from_dict(test_data).to_hdf(cache_test_path, "table") feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() From 8bb2ce3a0e5c35b804b3ca2d9c25e46ef90de366 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 00:52:26 +0200 Subject: [PATCH 11/22] ... --- app/predictor_cut.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 9bd2bdb..05a61cc 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -57,7 +57,14 @@ def predict_cut(training=True): feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() ys = data["Y"].values.tolist() - test_input = test_data[feature_list].values().tolist() + + test_inputs = [] + for i in range(0,len(test_data['mean_rt'])): + test_input = [] + for f in feature_list: + test_input.append(list(test_data[f].values())[i]) + test_inputs.append(test_input) + nn = KNeighborsRegressor( n_neighbors=3, weights="uniform", @@ -70,12 +77,12 @@ def predict_cut(training=True): nn.fit(xs, ys) - result = nn.predict(test_input) + result = nn.predict(test_inputs) print(result) result_path = os.path.join( CURRENT_DIRECTORY, "..", "result.csv" ) - result.to_csv(result_path) + pd.Series(result).to_csv(result_path) From 1d64b6600bab67e4033820c00cd2eed873483283 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 14:20:24 +0200 Subject: [PATCH 12/22] ... --- app/get_number_of_files.py | 13 +++++++++ app/load_data_3d.py | 37 +++++++++++++++++++------ app/load_features.py | 4 +-- app/mean_brain.py | 56 ++++++++++++++++++++++++++++++++++++++ main.py | 10 ++++++- 5 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 app/get_number_of_files.py create mode 100644 app/mean_brain.py diff --git a/app/get_number_of_files.py b/app/get_number_of_files.py new file mode 100644 index 0000000..4633b35 --- /dev/null +++ b/app/get_number_of_files.py @@ -0,0 +1,13 @@ +import os + +def get_number_of_files(training=True): + if training == True: + folder = "set_train" + else: + folder = "set_test" + DIR_IN = os.path.join( + DATA_DIRECTORY, + folder + ) + nof = len([name for name in os.listdir(DIR_IN) if os.path.isfile(os.path.join(DIR_IN, name))]) + return nof diff --git a/app/load_data_3d.py b/app/load_data_3d.py index 9d7ed4e..1fd6d91 100644 --- a/app/load_data_3d.py +++ b/app/load_data_3d.py @@ -1,31 +1,50 @@ """Loading training and testing data.""" import os +import scipy.io import nibabel as ni import pandas as pd from .settings import DATA_DIRECTORY +from .mean_brain import create_deviation_set +from .get_number_of_files import get_number_of_files -def load_samples_inputs(training=True): +def load_deviations(training=True): if training == True: - folder = "set_train" + files = "train" else: - folder = "set_test" - + files = "test" DIR = os.path.join( DATA_DIRECTORY, - folder + "set_{}_deviation".format(files), + ) + if not os.path.exists(DIR): + create_deviation_set(training) + data = [] + for i in range(1,get_number_of_files(training)+1): + data.append(load_deviation(i,training)) + return data + +def load_deviation(ID,training=True): + if training == True: + files = "train" + else: + files = "test" + FILE = os.path.join( + DATA_DIRECTORY, + "set_{}_deviation".format(files), + "{}_{}.mat".format(files,ID) ) - files = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))]) + return scipy.io.loadmat(FILE) +def load_samples_inputs(training=True): + nof = get_number_of_files(training) inputs = [] - for i in range(1, files+1): + for i in range(1, nof+1): inputs.append(load_sample_input(i, training)) - return inputs - def load_sample_input(id=1, training=True): if training == True: folder = "set_train" diff --git a/app/load_features.py b/app/load_features.py index 9064ea3..bab398e 100644 --- a/app/load_features.py +++ b/app/load_features.py @@ -1,4 +1,4 @@ -from .load_data_3d import load_targets, load_samples_inputs +from .load_data_3d import load_targets, load_samples_inputs, load_deviations from .cut_brain import cut_brain from .feature import feature_mean, feature_max, feature_ratio_mean @@ -12,7 +12,7 @@ def load_features(norms=None): inputs = [ { "area": "whole", - "val": load_samples_inputs(training) + "val": load_deviations(training) } ] for a in areas: diff --git a/app/mean_brain.py b/app/mean_brain.py new file mode 100644 index 0000000..ecf8139 --- /dev/null +++ b/app/mean_brain.py @@ -0,0 +1,56 @@ +import os +import numpy as np +import pandas as pd +import scipy.io + +from .get_number_of_files import get_number_of_files +from .load_data_3d import load_sample_input +from .settings import DATA_DIRECTORY + +def create_deviation_set(training=True): + if training == True: + folder = "set_train" + files = "train" + else: + folder = "set_test" + files = "test" + DIR_IN = os.path.join( + DATA_DIRECTORY, + folder + ) + DIR_OUT = os.path.join( + DATA_DIRECTORY, + "{}_deviation".format(folder) + ) + if not os.path.exists(DIR_OUT): + os.makedirs(DIR_OUT) + + mean = mean_brain(training) + nof = get_number_of_files(training) + for i in range(1,nof+1): + data = load_sample_input(i,training) + diff = brain_deviation(data, mean, training) + FILE_OUT = os.path.join( + DIR_OUT, + "{}_{}.mat".format(files,i) + ) + scipy.io.savemat(FILE_OUT, mdict={'out': diff}, oned_as='row') + + +def brain_deviation(data, mean=None, training=True): + if mean == None: + mean = mean_brain(training) + return (data-mean), mean + else: + return data-mean + +def mean_brain(training=True): + nof = get_number_of_files(training) + mean = np.zeros(load_sample_input(1,training).shape) + for i in range(1,nof+1): + data = load_sample_input(i,training) + mean += np.divide(i,nof) + return mean + + + diff --git a/main.py b/main.py index c2d715c..5d2c0cd 100644 --- a/main.py +++ b/main.py @@ -9,7 +9,7 @@ from app.predictor_cut import predict_cut from app.predictor_cut_iterate import predict_cut_iterate from app.heatmap_side import heatmap_side - +from app.mean_brain import create_deviation_set from app.settings import CACHE_DIRECTORY, PLOT_DIRECTORY, ITERATE_DIRECTORY if __name__ == "__main__": @@ -41,4 +41,12 @@ print("Additional Argument needed for this!") else: predict_cut_iterate(num=int(args[2])) + elif args[1] == "mean_brain": + if args[2] == "train": + training = True + elif args[2] == "test": + training = False + else: + print("Wrong Argument. Use: 'train' or 'test'") + create_deviation_set(training) From 12b7e0b19d70529f96e7d57d88ee4a1c6b16082f Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 14:37:47 +0200 Subject: [PATCH 13/22] ... --- app/load_data_3d.py | 30 ------------------------------ app/load_deviations.py | 35 +++++++++++++++++++++++++++++++++++ app/load_features.py | 3 ++- 3 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 app/load_deviations.py diff --git a/app/load_data_3d.py b/app/load_data_3d.py index 1fd6d91..c394efc 100644 --- a/app/load_data_3d.py +++ b/app/load_data_3d.py @@ -1,5 +1,4 @@ """Loading training and testing data.""" - import os import scipy.io @@ -7,37 +6,8 @@ import pandas as pd from .settings import DATA_DIRECTORY -from .mean_brain import create_deviation_set from .get_number_of_files import get_number_of_files -def load_deviations(training=True): - if training == True: - files = "train" - else: - files = "test" - DIR = os.path.join( - DATA_DIRECTORY, - "set_{}_deviation".format(files), - ) - if not os.path.exists(DIR): - create_deviation_set(training) - data = [] - for i in range(1,get_number_of_files(training)+1): - data.append(load_deviation(i,training)) - return data - -def load_deviation(ID,training=True): - if training == True: - files = "train" - else: - files = "test" - FILE = os.path.join( - DATA_DIRECTORY, - "set_{}_deviation".format(files), - "{}_{}.mat".format(files,ID) - ) - return scipy.io.loadmat(FILE) - def load_samples_inputs(training=True): nof = get_number_of_files(training) inputs = [] diff --git a/app/load_deviations.py b/app/load_deviations.py new file mode 100644 index 0000000..24a76b7 --- /dev/null +++ b/app/load_deviations.py @@ -0,0 +1,35 @@ +import os +import scipy.io + +from .settings import DATA_DIRECTORY +from .mean_brain import create_deviation_set +from .get_number_of_files import get_number_of_files + +def load_deviations(training=True): + if training == True: + files = "train" + else: + files = "test" + DIR = os.path.join( + DATA_DIRECTORY, + "set_{}_deviation".format(files), + ) + if not os.path.exists(DIR): + create_deviation_set(training) + data = [] + for i in range(1,get_number_of_files(training)+1): + data.append(load_deviation(i,training)) + return data + +def load_deviation(ID,training=True): + if training == True: + files = "train" + else: + files = "test" + FILE = os.path.join( + DATA_DIRECTORY, + "set_{}_deviation".format(files), + "{}_{}.mat".format(files,ID) + ) + return scipy.io.loadmat(FILE) + diff --git a/app/load_features.py b/app/load_features.py index bab398e..4c83c9a 100644 --- a/app/load_features.py +++ b/app/load_features.py @@ -1,4 +1,5 @@ -from .load_data_3d import load_targets, load_samples_inputs, load_deviations +from .load_data_3d import load_targets, load_samples_inputs +from .load_deviations import load_deviations from .cut_brain import cut_brain from .feature import feature_mean, feature_max, feature_ratio_mean From 14e9b3dbe2184f38b0ded8359e2a75cf75b0f39b Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 14:39:49 +0200 Subject: [PATCH 14/22] ... --- app/get_number_of_files.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/get_number_of_files.py b/app/get_number_of_files.py index 4633b35..84a7c2b 100644 --- a/app/get_number_of_files.py +++ b/app/get_number_of_files.py @@ -1,4 +1,5 @@ import os +from .settings import DATA_DIRECTORY def get_number_of_files(training=True): if training == True: From a2def3b38ed26304aefcb186ef7384b00664b414 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 15:13:53 +0200 Subject: [PATCH 15/22] ... --- app/cut_brain.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/cut_brain.py b/app/cut_brain.py index 4fe6cc1..7b67416 100644 --- a/app/cut_brain.py +++ b/app/cut_brain.py @@ -4,14 +4,14 @@ def cut_brain(sample, pos): data = [] for d in sample: if pos == "lt": - z_s,z_e = 60,len(d[0,0,:]) + z_s,z_e = 60,d.shape[2] y_s,y_e = 0,60 elif pos == "mt": - z_s,z_e = 60,len(d[0,0,:]) + z_s,z_e = 60,d.shape[2] y_s,y_e = 60,110 elif pos == "rt": - z_s,z_e = 50,len(d[0,0,:]) - y_s,y_e = 110,len(d[0,:,0]) + z_s,z_e = 50,d.shape[2] + y_s,y_e = 110,d.shape[1] elif pos == "lb": z_s,z_e = 0,60 y_s,y_e = 0,60 @@ -20,7 +20,7 @@ def cut_brain(sample, pos): y_s,y_e = 60,110 elif pos == "rb": z_s,z_e = 0,50 - y_s,y_e = 110,len(d[0,:,0]) + y_s,y_e = 110,d.shape[1] area = np.array([[z_s,z_e],[y_s,y_e]]) From 136ffc550286d465878dc9540d72959b2699107f Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 16:41:55 +0200 Subject: [PATCH 16/22] ... --- app/cut_brain_test.py | 40 +++++++++++++++++++++++ app/feature_test.py | 69 +++++++++++++++++++++++++++++++++++++++ app/load_deviations.py | 3 +- app/load_features_test.py | 51 +++++++++++++++++++++++++++++ app/predictor_cut.py | 2 +- 5 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 app/cut_brain_test.py create mode 100644 app/feature_test.py create mode 100644 app/load_features_test.py diff --git a/app/cut_brain_test.py b/app/cut_brain_test.py new file mode 100644 index 0000000..d81a754 --- /dev/null +++ b/app/cut_brain_test.py @@ -0,0 +1,40 @@ +import numpy as np + +def cut_brain(d, pos): + if pos == "lt": + z_s,z_e = 60,d.shape[2] + y_s,y_e = 0,60 + elif pos == "mt": + z_s,z_e = 60,d.shape[2] + y_s,y_e = 60,110 + elif pos == "rt": + z_s,z_e = 50,d.shape[2] + y_s,y_e = 110,d.shape[1] + elif pos == "lb": + z_s,z_e = 0,60 + y_s,y_e = 0,60 + elif pos == "mb": + z_s,z_e = 0,60 + y_s,y_e = 60,110 + elif pos == "rb": + z_s,z_e = 0,50 + y_s,y_e = 110,d.shape[1] + + area = np.array([[z_s,z_e],[y_s,y_e]]) + + z = range(area[0][0],area[0][1]) + y = range(area[1][0],area[1][1]) + x_len = d.shape[0] + y_len = len(y) + z_len = len(z) + + d_new = np.zeros((x_len,y_len,z_len)) + for k in range(0,x_len): + z_index = 0 + for i in z: + y_index = 0 + for j in y: + d_new[k,y_index,z_index] = d[k,j,i] + y_index += 1 + z_index += 1 + return d_new diff --git a/app/feature_test.py b/app/feature_test.py new file mode 100644 index 0000000..a84f3c8 --- /dev/null +++ b/app/feature_test.py @@ -0,0 +1,69 @@ +"""Description of this file.""" + +import numpy as np + +from .normalize import normalize +from .get_number_of_files import get_number_of_files +from .load_deviations import load_deviation +from .cut_brain_test import cut_brain + +def feature_ratio_mean(area="whole", training=True, norm=None): + fs = [] + for i in range(1,get_number_of_files(training)+1): + data = load_deviation(i,training) + if not area == "whole": + data = cut_brain(data,area) + data = get_flat_values(data) + mean = np.mean(data) + low = data[data < mean] + high = data[data >= mean] + + ratio = np.sum(high)/np.sum(low) + + fs.append(ratio) + + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs + +def feature_mean(area, training=True, norm=None): + fs = [] + for i in range(1,get_number_of_files(training)+1): + data = load_deviation(i,training) + if not area == "whole": + data = cut_brain(data,area) + data = get_flat_values(data) + fs.append(np.mean(data)) + + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs + +def feature_max(area, training=True, norm=None): + fs = [] + for i in range(1,get_number_of_files(training)+1): + data = load_deviation(i,training) + if not area == "whole": + data = cut_brain(data,area) + data = get_flat_values(data) + hist, bin_edges = np.histogram(data, 50) + idx_max = hist.argmax() + x_max = bin_edges[idx_max] + fs.append(x_max) + + if norm == None: + fs, minmax = normalize(fs) + return fs, minmax + else: + fs = normalize(fs, norm) + return fs + +def get_flat_values(inputs): + vs = inputs.flatten() + return vs #[vs > 100] diff --git a/app/load_deviations.py b/app/load_deviations.py index 24a76b7..4e661af 100644 --- a/app/load_deviations.py +++ b/app/load_deviations.py @@ -1,5 +1,6 @@ import os import scipy.io +import numpy as np from .settings import DATA_DIRECTORY from .mean_brain import create_deviation_set @@ -31,5 +32,5 @@ def load_deviation(ID,training=True): "set_{}_deviation".format(files), "{}_{}.mat".format(files,ID) ) - return scipy.io.loadmat(FILE) + return scipy.io.loadmat(FILE)['out'] diff --git a/app/load_features_test.py b/app/load_features_test.py new file mode 100644 index 0000000..8fa9ddb --- /dev/null +++ b/app/load_features_test.py @@ -0,0 +1,51 @@ +from .load_data_3d import load_targets, load_samples_inputs +from .load_deviations import load_deviations +from .cut_brain_test import cut_brain +from .feature_test import feature_mean, feature_max, feature_ratio_mean + +def load_features(norms=None): + if norms == None: + training = True + else: + training = False + + areas = ["whole","lt","mt","rt","lb","mb","rb"] + features = [ + { + "name": "mean", + "f": feature_mean + }, + { + "name": "ratio_mean", + "f": feature_ratio_mean + }, + { + "name": "max", + "f": feature_max + }, + ] + if norms == None: + norms = {} + data = load_targets() + print("plotting features") + for f in features: + for a in areas: + feature_inputs , norms["{}_{}".format(f["name"], a)] = f["f"](a) + data["{}_{}".format(f["name"], a)] = feature_inputs + # plt.figure() + # plt.scatter( + # feature_inputs, + # data["Y"].tolist(), + # ) + # plt.savefig("plots/line_{}_{}.pdf".format( + # f["name"], i["area"] + # )) + # plt.close() + return data, norms + else: + data = {} + for f in features: + for a in areas: + feature_inputs = f["f"](a, norms["{}_{}".format(f["name"], a)]) + data["{}_{}".format(f["name"], a)] = feature_inputs + return data diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 05a61cc..77b9d09 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -13,7 +13,7 @@ from .settings import CURRENT_DIRECTORY from .squared_error import squared_error -from .load_features import load_features +from .load_features_test import load_features def predict_cut(training=True): cache_data_path = os.path.join( From d647bbee2fbe7e471d3f1b89158cc5eea3eb3e09 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 17:09:20 +0200 Subject: [PATCH 17/22] ... --- app/feature_test.py | 1 + app/predictor_cut.py | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/feature_test.py b/app/feature_test.py index a84f3c8..1845f4c 100644 --- a/app/feature_test.py +++ b/app/feature_test.py @@ -57,6 +57,7 @@ def feature_max(area, training=True, norm=None): x_max = bin_edges[idx_max] fs.append(x_max) + print(fs) if norm == None: fs, minmax = normalize(fs) return fs, minmax diff --git a/app/predictor_cut.py b/app/predictor_cut.py index 77b9d09..bd07f37 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -57,13 +57,11 @@ def predict_cut(training=True): feature_list = ['mean_rt', 'mean_mb', 'ratio_mean_lt', 'ratio_mean_rt', 'ratio_mean_rb', 'max_rt', 'max_rb'] xs = data[feature_list].values.tolist() ys = data["Y"].values.tolist() - + #print(data) + #print(test_data) test_inputs = [] - for i in range(0,len(test_data['mean_rt'])): - test_input = [] - for f in feature_list: - test_input.append(list(test_data[f].values())[i]) - test_inputs.append(test_input) + for f in feature_list: + test_inputs.append(test_data[f][0].tolist()) nn = KNeighborsRegressor( n_neighbors=3, From bc8949dca69170b085fb1919d081fadec84ff430 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Fri, 21 Oct 2016 19:20:37 +0200 Subject: [PATCH 18/22] ... --- app/mean_brain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/mean_brain.py b/app/mean_brain.py index ecf8139..94401ea 100644 --- a/app/mean_brain.py +++ b/app/mean_brain.py @@ -49,7 +49,7 @@ def mean_brain(training=True): mean = np.zeros(load_sample_input(1,training).shape) for i in range(1,nof+1): data = load_sample_input(i,training) - mean += np.divide(i,nof) + mean += np.divide(data,nof) return mean From 43e099ca619835e51a7852346fd90d761856d760 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Sun, 23 Oct 2016 12:37:50 +0200 Subject: [PATCH 19/22] ... --- app/feature_test.py | 3 +-- app/normalize.py | 4 ---- app/predictor_cut.py | 10 ++++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/feature_test.py b/app/feature_test.py index 1845f4c..b89a106 100644 --- a/app/feature_test.py +++ b/app/feature_test.py @@ -52,12 +52,11 @@ def feature_max(area, training=True, norm=None): if not area == "whole": data = cut_brain(data,area) data = get_flat_values(data) - hist, bin_edges = np.histogram(data, 50) + hist, bin_edges = np.histogram(data, bins='auto') idx_max = hist.argmax() x_max = bin_edges[idx_max] fs.append(x_max) - print(fs) if norm == None: fs, minmax = normalize(fs) return fs, minmax diff --git a/app/normalize.py b/app/normalize.py index 04f35b1..5861f37 100644 --- a/app/normalize.py +++ b/app/normalize.py @@ -9,9 +9,5 @@ def normalize(inputs, minmax=None): else: minimum = minmax[0] maximum = minmax[1] - if minimum > maximum: - tmp = maximum - maximum = minimum - minimum = tmp return (data-minimum)/(maximum-minimum) diff --git a/app/predictor_cut.py b/app/predictor_cut.py index bd07f37..475cd0a 100644 --- a/app/predictor_cut.py +++ b/app/predictor_cut.py @@ -14,6 +14,7 @@ from .settings import CURRENT_DIRECTORY from .squared_error import squared_error from .load_features_test import load_features +from .get_number_of_files import get_number_of_files def predict_cut(training=True): cache_data_path = os.path.join( @@ -60,9 +61,14 @@ def predict_cut(training=True): #print(data) #print(test_data) test_inputs = [] - for f in feature_list: - test_inputs.append(test_data[f][0].tolist()) + for i in range(0,get_number_of_files(training=False)): + tmp = [] + for f in feature_list: + tmp.append(test_data[f][0][i]) + test_inputs.append(tmp) + print(len(xs)) + print(len(test_inputs)) nn = KNeighborsRegressor( n_neighbors=3, weights="uniform", From 6cc3b74682601dfc820ddf7134674f590654d575 Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Sun, 23 Oct 2016 18:42:44 +0200 Subject: [PATCH 20/22] ... --- app/age_hist.py | 13 ++++++++ app/load_deviations.py | 8 ++++- app/load_features_test.py | 15 ++++----- app/mean_brain.py | 67 +++++++++++++++++++++------------------ main.py | 12 +++---- 5 files changed, 66 insertions(+), 49 deletions(-) create mode 100644 app/age_hist.py diff --git a/app/age_hist.py b/app/age_hist.py new file mode 100644 index 0000000..c7aecd9 --- /dev/null +++ b/app/age_hist.py @@ -0,0 +1,13 @@ +import numpy as np +import matplotlib.pyplot as plt + +from .load_data_3d import load_targets +from .settings import DATA_DIRECTORY + +def age_hist(): + data = load_targets() + data = data['Y'].tolist() + plt.figure() + plt.hist(data, bins=100) + plt.savefig("plots/age_hist.pdf") + plt.close() diff --git a/app/load_deviations.py b/app/load_deviations.py index 4e661af..fc82797 100644 --- a/app/load_deviations.py +++ b/app/load_deviations.py @@ -16,7 +16,7 @@ def load_deviations(training=True): "set_{}_deviation".format(files), ) if not os.path.exists(DIR): - create_deviation_set(training) + create_deviation_set() data = [] for i in range(1,get_number_of_files(training)+1): data.append(load_deviation(i,training)) @@ -27,6 +27,12 @@ def load_deviation(ID,training=True): files = "train" else: files = "test" + DIR = os.path.join( + DATA_DIRECTORY, + "set_{}_deviation".format(files), + ) + if not os.path.exists(DIR): + create_deviation_set() FILE = os.path.join( DATA_DIRECTORY, "set_{}_deviation".format(files), diff --git a/app/load_features_test.py b/app/load_features_test.py index 8fa9ddb..41385c3 100644 --- a/app/load_features_test.py +++ b/app/load_features_test.py @@ -1,3 +1,5 @@ +import matplotlib.pyplot as plt + from .load_data_3d import load_targets, load_samples_inputs from .load_deviations import load_deviations from .cut_brain_test import cut_brain @@ -32,15 +34,10 @@ def load_features(norms=None): for a in areas: feature_inputs , norms["{}_{}".format(f["name"], a)] = f["f"](a) data["{}_{}".format(f["name"], a)] = feature_inputs - # plt.figure() - # plt.scatter( - # feature_inputs, - # data["Y"].tolist(), - # ) - # plt.savefig("plots/line_{}_{}.pdf".format( - # f["name"], i["area"] - # )) - # plt.close() + plt.figure() + plt.scatter(feature_inputs, data["Y"].tolist()) + plt.savefig("plots/line_{}_{}.pdf".format(f["name"], a)) + plt.close() return data, norms else: data = {} diff --git a/app/mean_brain.py b/app/mean_brain.py index 94401ea..821d7c1 100644 --- a/app/mean_brain.py +++ b/app/mean_brain.py @@ -4,53 +4,58 @@ import scipy.io from .get_number_of_files import get_number_of_files -from .load_data_3d import load_sample_input +from .load_data_3d import load_sample_input, load_targets from .settings import DATA_DIRECTORY -def create_deviation_set(training=True): - if training == True: - folder = "set_train" - files = "train" - else: - folder = "set_test" - files = "test" - DIR_IN = os.path.join( +def create_deviation_set(): + mean = mean_brain() + + files = "train" + DIR_OUT = os.path.join( DATA_DIRECTORY, - folder + "set_{}_deviation".format(files) ) + if not os.path.exists(DIR_OUT): + os.makedirs(DIR_OUT) + nof = get_number_of_files(True) + for i in range(1,nof+1): + data = load_sample_input(i,True) + diff = brain_deviation(data, mean) + FILE_OUT = os.path.join( + DIR_OUT, + "{}_{}.mat".format(files,i) + ) + scipy.io.savemat(FILE_OUT, mdict={'out': diff}, oned_as='row') + + files = "test" DIR_OUT = os.path.join( DATA_DIRECTORY, - "{}_deviation".format(folder) + "set_{}_deviation".format(files) ) if not os.path.exists(DIR_OUT): os.makedirs(DIR_OUT) - - mean = mean_brain(training) - nof = get_number_of_files(training) + nof = get_number_of_files(False) for i in range(1,nof+1): - data = load_sample_input(i,training) - diff = brain_deviation(data, mean, training) + data = load_sample_input(i,False) + diff = brain_deviation(data, mean) FILE_OUT = os.path.join( DIR_OUT, "{}_{}.mat".format(files,i) ) scipy.io.savemat(FILE_OUT, mdict={'out': diff}, oned_as='row') - -def brain_deviation(data, mean=None, training=True): - if mean == None: - mean = mean_brain(training) - return (data-mean), mean - else: - return data-mean - -def mean_brain(training=True): - nof = get_number_of_files(training) - mean = np.zeros(load_sample_input(1,training).shape) - for i in range(1,nof+1): - data = load_sample_input(i,training) - mean += np.divide(data,nof) - return mean +def brain_deviation(data, mean): + return data-mean + +def mean_brain(): + targets = load_targets() + targets = targets['Y'].tolist() + nof = get_number_of_files(True) + mean = np.zeros(load_sample_input(1,True).shape) + for i in range(0,nof): + data = load_sample_input(i+1,True) + mean += np.divide(data, targets.count(targets[i])) + return np.divide(mean, len(set(targets))) diff --git a/main.py b/main.py index 5d2c0cd..b0d9777 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ from app.heatmap_side import heatmap_side from app.mean_brain import create_deviation_set from app.settings import CACHE_DIRECTORY, PLOT_DIRECTORY, ITERATE_DIRECTORY +from app.age_hist import age_hist if __name__ == "__main__": if not os.path.exists(CACHE_DIRECTORY): @@ -42,11 +43,6 @@ else: predict_cut_iterate(num=int(args[2])) elif args[1] == "mean_brain": - if args[2] == "train": - training = True - elif args[2] == "test": - training = False - else: - print("Wrong Argument. Use: 'train' or 'test'") - create_deviation_set(training) - + create_deviation_set() + elif args[1] == "age_hist": + age_hist() From 6869e2df56400251069f562c397b6315e127d31a Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Sun, 23 Oct 2016 21:08:29 +0200 Subject: [PATCH 21/22] ... --- app/heatmap.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/heatmap.py b/app/heatmap.py index bfaf459..edacd18 100644 --- a/app/heatmap.py +++ b/app/heatmap.py @@ -6,6 +6,7 @@ import numpy as np from .load_data import load_sample_input +from .load_deviations import load_deviation __author__ = "lfievet" @@ -20,8 +21,10 @@ def heatmap(): - sample = 10 - data = load_sample_input(sample) + sample = 20 + #data = load_sample_input(sample) + + data = load_deviation(sample) # flat_data = data.get_data().flatten() # flat_data = flat_data[flat_data > 100] @@ -38,7 +41,7 @@ def heatmap(): # return for i in range(60, 150): - heat_map = data.get_data()[:, :, i, 0] + heat_map = data[:][:][i] #.get_data()[:, :, i, 0] # print(heat_map) # print(heat_map.shape) # heatmap.reshape((176, 208)) From 107edeec2cc6118cfa81a0ea4cd4a097b80bbede Mon Sep 17 00:00:00 2001 From: Kevin Kleber Date: Mon, 24 Oct 2016 13:11:55 +0200 Subject: [PATCH 22/22] vvv --- app/feature_test.py | 12 +++++++++--- app/normalize.py | 4 +--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/feature_test.py b/app/feature_test.py index b89a106..d759037 100644 --- a/app/feature_test.py +++ b/app/feature_test.py @@ -6,11 +6,12 @@ from .get_number_of_files import get_number_of_files from .load_deviations import load_deviation from .cut_brain_test import cut_brain +from .load_data_3d import load_sample_input def feature_ratio_mean(area="whole", training=True, norm=None): fs = [] for i in range(1,get_number_of_files(training)+1): - data = load_deviation(i,training) + data = load_data(i,training) if not area == "whole": data = cut_brain(data,area) data = get_flat_values(data) @@ -32,7 +33,7 @@ def feature_ratio_mean(area="whole", training=True, norm=None): def feature_mean(area, training=True, norm=None): fs = [] for i in range(1,get_number_of_files(training)+1): - data = load_deviation(i,training) + data = load_data(i,training) if not area == "whole": data = cut_brain(data,area) data = get_flat_values(data) @@ -48,7 +49,7 @@ def feature_mean(area, training=True, norm=None): def feature_max(area, training=True, norm=None): fs = [] for i in range(1,get_number_of_files(training)+1): - data = load_deviation(i,training) + data = load_data(i,training) if not area == "whole": data = cut_brain(data,area) data = get_flat_values(data) @@ -67,3 +68,8 @@ def feature_max(area, training=True, norm=None): def get_flat_values(inputs): vs = inputs.flatten() return vs #[vs > 100] + +def load_data(ID, training=True): + #return load_deviation(ID, training) + return load_sample_input(ID, training) + diff --git a/app/normalize.py b/app/normalize.py index 5861f37..e1b6b50 100644 --- a/app/normalize.py +++ b/app/normalize.py @@ -7,7 +7,5 @@ def normalize(inputs, minmax=None): maximum = data.max() return (data-minimum)/(maximum-minimum), [minimum,maximum] else: - minimum = minmax[0] - maximum = minmax[1] - return (data-minimum)/(maximum-minimum) + return (data-minmax[0])/(minmax[1]-minmax[0])