在 make fxn 中将 datajoint 键设置为不同的变量
Setting datajoint key to a different variable in make fxn
想知道为什么以及何时需要将密钥设置为数据联合中自动填充 table 中 make/maketuples 函数中的不同变量,如文档 here 中所述。
本例中table部分SegmentationROI定义如下:
%{
# Region of interest resulting from segmentation
-> test.Segmentation
roi : smallint # roi number
---
roi_pixels : longblob # indices of pixels
roi_weights : longblob # weights of pixels
%}
classdef SegmentationROI < dj.Part
properties(SetAccess=protected)
master = test.Segmentation
end
methods
function make(self, key)
image = fetch1(test.Image & key, 'image');
[roi_pixels, roi_weighs] = mylib.segment(image);
for roi=1:length(roi_pixels)
entity = key;
entity.roi_pixels = roi_pixels{roi};
entity.roi_weights = roi_weights{roi};
self.insert(entity)
end
end
end
end
将键重命名为单独的变量、entity (entity = key),然后将其插入的目的是什么?
在这种情况下,我们将字段作为结构添加到 entity
。我认为最好的做法是按原样保留参数。如果我们在这里添加第二个 for 循环,我们可能会 运行 在出于其他目的调用 key
时出现问题。
警告:我更熟悉 DataJoint python,并没有在 MATLAB 中广泛使用它。
想知道为什么以及何时需要将密钥设置为数据联合中自动填充 table 中 make/maketuples 函数中的不同变量,如文档 here 中所述。
本例中table部分SegmentationROI定义如下:
%{
# Region of interest resulting from segmentation
-> test.Segmentation
roi : smallint # roi number
---
roi_pixels : longblob # indices of pixels
roi_weights : longblob # weights of pixels
%}
classdef SegmentationROI < dj.Part
properties(SetAccess=protected)
master = test.Segmentation
end
methods
function make(self, key)
image = fetch1(test.Image & key, 'image');
[roi_pixels, roi_weighs] = mylib.segment(image);
for roi=1:length(roi_pixels)
entity = key;
entity.roi_pixels = roi_pixels{roi};
entity.roi_weights = roi_weights{roi};
self.insert(entity)
end
end
end
end
将键重命名为单独的变量、entity (entity = key),然后将其插入的目的是什么?
在这种情况下,我们将字段作为结构添加到 entity
。我认为最好的做法是按原样保留参数。如果我们在这里添加第二个 for 循环,我们可能会 运行 在出于其他目的调用 key
时出现问题。
警告:我更熟悉 DataJoint python,并没有在 MATLAB 中广泛使用它。