예제 #1
0
파일: asm_util.py 프로젝트: sssruhan1/spine
def get_raw_one_slice(subject_num, slice_num, folder_name='./train_data/', label=False):
            
        from src.util import read_data
        
        ret = np.empty(( _width, _height), dtype =np.int16)
        if subject_num < 10:
            subject_name = 'Subject0' + str(subject_num)
        else:
            subject_name = 'Subject' + str(subject_num)
            
        if label is True:
            fn = folder_name + subject_name + '/' + subject_name + '_Label.nii'
        else:
            fn = folder_name + subject_name + '/' + subject_name + '.nii'
         
        arr = read_data(fn).get_data()
        ret = arr[slice_num]
         
        return ret
예제 #2
0
파일: asm_util.py 프로젝트: sssruhan1/spine
def get_raw_slices(total_slice_num = _slice_num, slice_nums=[], subject_nums=[], folder_name='./train_data/', label=False):
            
        from src.util import read_data
        
        if subject_nums == []:
            subject_nums = range(1, _subject_number + 1)
        
        ret = np.empty((total_slice_num, _width, _height), dtype =np.int16)
        idx = 0
        for i in subject_nums:
            if i < 10:
                subject_name = 'Subject0' + str(i)
            else:
                subject_name = 'Subject' + str(i)
            if label is True:
                fn = folder_name + subject_name + '/' + subject_name + '_Label.nii'
            else:
                fn = folder_name + subject_name + '/' + subject_name + '.nii'
            
            arr = read_data(fn).get_data()
            if slice_nums == []:
                begin = arr.shape[0]/2 - 2
                end = arr.shape[0]/2 + 2
                slice_nums = np.arange(begin, end + 1)
                
            # this this for some slices with different width and height
            offset = slice_nums.shape[0]
            if arr.shape[-1] != _height:
                diff_y =  _height - arr.shape[1] 
                diff_x =  _width  - arr.shape[2] 
                ret[idx: idx + offset, :, :] =np.lib.pad( arr[slice_nums], ((0, 0), (diff_y, 0), (diff_x,0)), 'minimum')
            else:
                ret[idx:idx+offset, :, :] = arr[slice_nums]
            idx = idx + offset
        
        return ret
예제 #3
0
        print(logs)
        self.losses.append(logs.get('loss'))


if __name__ == '__main__':
    train_file_filter = "train_*.txt"
    test_file_filter = "test_*.txt"
    seq_length = 150
    embedding_dim = 50  # 単語ベクトルの次元数
    lstm_units = 50  # LSTMの隠れ状態ベクトルの次元数
    epoch_size = 5
    batch_size = 20

    # read source data
    label_dict = util.create_label('./train_master.tsv')
    sentences_train, labels, train_files = util.read_data(
        "./train/", train_file_filter, label_dict)
    sentences_test, labels_test, test_files = util.read_data(
        "./test/", test_file_filter, None)

    train, test, seq_length, vocab_size = util.create_train_data(
        sentences_train, sentences_test, seq_length)

    X_train, X_test, y_train, y_test = train_test_split(
        train, labels, test_size=0.15, random_state=random.randint(0, 100))

    # create model
    model = model.create_bidirectional(vocab_size=vocab_size,
                                       embedding_dim=embedding_dim,
                                       seq_length=seq_length,
                                       lstm_units=lstm_units)
    #model = model.create_3layer(seq_length=seq_length)
예제 #4
0
import sys
dir = os.getcwd()
sys.path.append(dir)
result_dir = dir + '/result/test_1/'
test_data_dir = dir + '/train_data/'

import numpy as np
from src.asm_util import get_bulk_points
slice_num = 5
v = np.empty((7, slice_num, 16), dtype=np.int)
v[0], v[1], v[2], v[3], v[4], v[5], v[6] = get_bulk_points()

from src.util import read_data
subject = 'Subject01' 
label_fn =  test_data_dir + subject + '/' + subject + '_Label.nii'
label_data = read_data(label_fn).get_data()
total_slice_num = label_data.shape[0]

from src.asm_util import get_profile_feature_one_vertebra
from src.asm_util import get_raw_slices
vertebra_number = 6
I = get_raw_slices()

#L = get_raw_slices(vertebra_number, label=True)
#from src.util import show_volume
#show_volume(I,75)
_K = 1
_sigmas = np.array([2, 3])
mid = total_slice_num/2
label = label_data[mid-2 : mid+3]
samplepoints, intensities, labels, features= get_profile_feature_one_vertebra(v[vertebra_number], I, _k, label, sigmas = _sigmas)
예제 #5
0
파일: test_1.py 프로젝트: sssruhan1/spine
range_start = 15
range_end = range_start + 1
fnum = range(range_start, range_end)

from src.util import read_data
label_data={}
data = {}
subject = ''
for i in fnum:
    if i < 10:
        subject = 'Subject0' + str(i)
    else:
        subject = 'Subject' + str(i)
    
    label_fn =  test_data_dir + subject + '/' + subject + '_Label.nii'
    label_data[i] = read_data(label_fn)
    fn = test_data_dir + subject + '/' + subject + '.nii'
    data[i]=read_data(fn)

#sumsum = 0
#num = 0
#for i in fnum:
#    idx = np.where(label_data[i].get_data() == 1)
#    num += np.array(idx[0]).size
#    sumsum += np.sum(data[i].get_data()[idx])
#
#average = sumsum/num

#================= get the location of the center ==================
# goto slice 20
#slice_num = 20