如何按数字顺序对数据路径进行排序?

桑多

我有 10000119~10000130 个患者 3D ct 图像我已经将 3D CT 图像沿 z 轴为每个患者数据切成 250 个切片。

我想为每个患者的每个切片按数字顺序对这个数据路径进行排序。我想要做的是以下内容:

/mnt/intern/code/dataset/test/original2Densenble/10000119slice0.mat
/mnt/intern/code/dataset/test/original2Densenble/10000119slice1.mat
/mnt/intern/code/dataset/test/original2Densenble/10000119slice2.mat
/mnt/intern/code/dataset/test/original2Densenble/10000119slice3.mat
...
/mnt/intern/code/dataset/test/original2Densenble/10000119slice250.mat
/mnt/intern/code/dataset/test/original2Densenble/10000120slice0.mat
/mnt/intern/code/dataset/test/original2Densenble/10000120slice1.mat
/mnt/intern/code/dataset/test/original2Densenble/10000120slice2.mat
...
/mnt/intern/code/dataset/test/original2Densenble/10000120slice250.mat
/mnt/intern/code/dataset/test/original2Densenble/10000121slice0.mat
/mnt/intern/code/dataset/test/original2Densenble/10000121slice1.mat
...
/mnt/intern/code/dataset/test/original2Densenble/10000121slice250.mat
...
/mnt/intern/code/dataset/test/original2Densenble/10000130slice0.mat
...
/mnt/intern/code/dataset/test/original2Densenble/10000130slice250.mat

我这样做的原因是因为我想将 2D Unet softmax 输出与 3D Unet softmax 输出相结合。所以我认为我需要对每个患者的每个切片的 2D 切片进行排序,以表示超过 2D Unet softmax 输出和 3D Unet softmax 输出。为此,我认为我首先需要按数字顺序加载 2D 数据。我想到了拆分功能,但我认为它最终会因为患者的数量(10000119~10000130)和患者的切片数量(每个患者的切片0.mat~slice250.mat)而混淆。

桑多

我找到了自己的答案..!我希望这对其他深度学习工程师也有帮助!希望你有美好的一天;希望你今天过得很开心!我明确编码以获得手头的直觉。

class SliceData2D(Dataset):

    def __init__(self, root_data, root_label, transform):

        self.transform = transform
        self.examples = []
        self.examples2 = []

        data_files = list(pathlib.Path(root_data).iterdir())
        label_files = list(pathlib.Path(root_label).iterdir())
        data_files = list(map(str, data_files))
        label_files = list(map(str, label_files))
        # print(len(data_files))
        # print(len(label_files))
        data_files = sorted(data_files)
        label_files = sorted(label_files)
        del label_files[0] # /mnt/intern/code/dataset/test/label2Densemble/.mat 이상한 파일 1개 제거
        # print(len(label_files))

        data1 = sorted(data_files[0 : 250], key=lambda x: int(           (x.split('slice')[1]).split('.')[0]    ) )
        data2 = sorted(data_files[250 : 500], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data3 = sorted(data_files[500 : 750], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data4 = sorted(data_files[750 : 1000], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data5 = sorted(data_files[1000 : 1250], key=lambda x: int(     (x.split('slice')[1]).split('.')[0]    ) )
        data6 = sorted(data_files[1250 : 1500], key=lambda x: int(      (x.split('slice')[1]).split('.')[0]    ) )
        data7 = sorted(data_files[1500 : 1750], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data8 = sorted(data_files[1750 : 2000], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data9 = sorted(data_files[2000 : 2250], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        data10 = sorted(data_files[2250 : 2500], key=lambda x: int(       (x.split('slice')[1]).split('.')[0]    ) )
        data11 = sorted(data_files[2500 : 2750], key=lambda x: int(       (x.split('slice')[1]).split('.')[0]    ) )
        
        # print(data1, '\n', data2, '\n', data3, '\n', data4, '\n', data5, '\n', data6, '\n', data7, '\n', data8, '\n', data9, '\n', data10, '\n', data11, '\n')
        
        data1 = list(map(pathlib.Path, data1))
        data2 = list(map(pathlib.Path, data2))
        data3 = list(map(pathlib.Path, data3))
        data4 = list(map(pathlib.Path, data4))
        data5 = list(map(pathlib.Path, data5))
        data6 = list(map(pathlib.Path, data6))
        data7 = list(map(pathlib.Path, data7))
        data8 = list(map(pathlib.Path, data8))
        data9 = list(map(pathlib.Path, data9))
        data10 = list(map(pathlib.Path, data10))
        data11 = list(map(pathlib.Path, data11))

        label1 = sorted(label_files[0 : 250], key=lambda x: int(           (x.split('slice')[1]).split('.')[0]    ) )
        label2 = sorted(label_files[250 : 500], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label3 = sorted(label_files[500 : 750], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label4 = sorted(label_files[750 : 1000], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label5 = sorted(label_files[1000 : 1250], key=lambda x: int(     (x.split('slice')[1]).split('.')[0]    ) )
        label6 = sorted(label_files[1250 : 1500], key=lambda x: int(      (x.split('slice')[1]).split('.')[0]    ) )
        label7 = sorted(label_files[1500 : 1750], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label8 = sorted(label_files[1750 : 2000], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label9 = sorted(label_files[2000 : 2250], key=lambda x: int(        (x.split('slice')[1]).split('.')[0]    ) )
        label10 = sorted(label_files[2250 : 2500], key=lambda x: int(       (x.split('slice')[1]).split('.')[0]    ) )
        label11 = sorted(label_files[2500 : 2750], key=lambda x: int(       (x.split('slice')[1]).split('.')[0]    ) )

        # print(label1, '\n', label2, '\n', label3, '\n', label4, '\n', label5, '\n', label6, '\n', label7, '\n', label8, '\n', label9, '\n', label10, '\n', label11, '\n')
        
        label1 = list(map(pathlib.Path, label1))
        label2 = list(map(pathlib.Path, label2))
        label3 = list(map(pathlib.Path, label3))
        label4 = list(map(pathlib.Path, label4))
        label5 = list(map(pathlib.Path, label5))
        label6 = list(map(pathlib.Path, label6))
        label7 = list(map(pathlib.Path, label7))
        label8 = list(map(pathlib.Path, label8))
        label9 = list(map(pathlib.Path, label9))
        label10 = list(map(pathlib.Path, label10))
        label11 = list(map(pathlib.Path, label11))


        self.examples = data1 + data2 + data3 + data4 + data5 + data6 + data7 + data8 + data9 + data10 + data11
        self.examples2 = label1 + label2 + label3 + label4 + label5 + label6 + label7 + label8 + label9 + label10 + label11
        print(self.examples)
        
    def __len__(self):
        
        return len(self.examples)

    def __getitem__(self, i):
        
        fname = self.examples[i]
        fname2 = self.examples2[i]
        
        data_name = str(pathlib.Path(fname))
        label_name = str(pathlib.Path(fname2))
        
        d_load = scipy.io.loadmat(data_name); l_load = scipy.io.loadmat(label_name)
        data = d_load['data']; label = l_load['label']
            
        return self.transform(data, label, fname.name)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过删除名称开头的数字按字母顺序对数据进行排序

如何在C ++中从对数字进行排序到按字母顺序进行排序

按数字对数据框进行排序

C ++:如何按数字顺序对数字字符串向量进行排序?

如何按范围对数字列表进行排序并按时间顺序对结果进行分组

按r中的精确数字顺序对数据集进行排序

MySQL-按字母顺序对数字进行排序

用数字按字母顺序对数组进行排序

在SSRS中按顺序对数字列进行排序

如何按用户定义的顺序对数据帧进行排序(例如,非字母顺序)

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

如何按字母顺序按索引值对数据框的列进行排序

当某些值有点时,如何按字母数字顺序对数组进行排序?

按varchar字母顺序对数据进行排序

按给定列表中的ID顺序对数据进行排序

按特定值顺序对数据表进行排序

在R中按特定顺序对数据进行排序

Rails如何按特定顺序对数据库中的记录进行排序?

c# - 如何按大小写顺序对数据表进行排序#

如何在R中按预定的因子级别顺序对数据帧进行排序?

如何按预定义的顺序对数组进行排序

如何按顺序数组对数组进行排序?

按数字列对数据框进行排序

按数字对数字进行排序

如何按人类可读的大小对数字进行排序?

如何在数据透视表中按字母数字顺序对列数据进行排序?

按特定顺序对数组进行排序

按定义的顺序对数组进行排序