@cornerstonejs/tools 1.27.4 → 1.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +13 -5
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -1
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js +13 -5
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/utilities/dynamicVolume/getDataInTime.ts +18 -5
|
@@ -19,8 +19,8 @@ function getDataInTime(dynamicVolume, options) {
|
|
|
19
19
|
}
|
|
20
20
|
if (options.maskVolumeId) {
|
|
21
21
|
const segmentationVolume = core_1.cache.getVolume(options.maskVolumeId);
|
|
22
|
-
const dataInTime = _getTimePointDataMask(frames, dynamicVolume, segmentationVolume);
|
|
23
|
-
return dataInTime;
|
|
22
|
+
const [dataInTime, ijkCoords] = _getTimePointDataMask(frames, dynamicVolume, segmentationVolume);
|
|
23
|
+
return [dataInTime, ijkCoords];
|
|
24
24
|
}
|
|
25
25
|
if (options.imageCoordinate) {
|
|
26
26
|
const dataInTime = _getTimePointDataCoordinate(frames, options.imageCoordinate, dynamicVolume);
|
|
@@ -54,9 +54,16 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
54
54
|
const len = segScalarData.length;
|
|
55
55
|
const nonZeroVoxelIndices = [];
|
|
56
56
|
nonZeroVoxelIndices.length = len;
|
|
57
|
+
const ijkCoords = [];
|
|
58
|
+
const dimensions = segmentationVolume.dimensions;
|
|
57
59
|
let actualLen = 0;
|
|
58
60
|
for (let i = 0, len = segScalarData.length; i < len; i++) {
|
|
59
61
|
if (segScalarData[i] !== 0) {
|
|
62
|
+
ijkCoords.push([
|
|
63
|
+
i % dimensions[0],
|
|
64
|
+
Math.floor((i / dimensions[0]) % dimensions[1]),
|
|
65
|
+
Math.floor(i / (dimensions[0] * dimensions[1])),
|
|
66
|
+
]);
|
|
60
67
|
nonZeroVoxelIndices[actualLen++] = i;
|
|
61
68
|
}
|
|
62
69
|
}
|
|
@@ -75,9 +82,9 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
75
82
|
});
|
|
76
83
|
values.push(indexValues);
|
|
77
84
|
}
|
|
78
|
-
return values;
|
|
85
|
+
return [values, ijkCoords];
|
|
79
86
|
}
|
|
80
|
-
const callback = ({ pointLPS: segPointLPS, value: segValue }) => {
|
|
87
|
+
const callback = ({ pointLPS: segPointLPS, value: segValue, pointIJK: segPointIJK, }) => {
|
|
81
88
|
if (segValue === 0) {
|
|
82
89
|
return;
|
|
83
90
|
}
|
|
@@ -98,10 +105,11 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
98
105
|
perFrameSum.forEach((sum) => {
|
|
99
106
|
averageValues.push(sum / count);
|
|
100
107
|
});
|
|
108
|
+
ijkCoords.push(segPointIJK);
|
|
101
109
|
values.push(averageValues);
|
|
102
110
|
};
|
|
103
111
|
(0, pointInShapeCallback_1.default)(maskImageData, () => true, callback);
|
|
104
|
-
return values;
|
|
112
|
+
return [values, ijkCoords];
|
|
105
113
|
}
|
|
106
114
|
exports.default = getDataInTime;
|
|
107
115
|
//# sourceMappingURL=getDataInTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":";;;;;AAAA,8CAA8D;AAC9D,yDAA4D;AAC5D,mFAA2D;AAc3D,SAAS,aAAa,CACpB,aAAwC,EACxC,OAIC;IAED,IAAI,UAAU,CAAC;IAGf,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI;QACrC,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;KAC7C,CAAC;IAKF,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QACrD,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;KACH;IAED,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC5E;IAED,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,MAAM,kBAAkB,GAAG,YAAK,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ function getDataInTime(dynamicVolume, options) {
|
|
|
14
14
|
}
|
|
15
15
|
if (options.maskVolumeId) {
|
|
16
16
|
const segmentationVolume = cache.getVolume(options.maskVolumeId);
|
|
17
|
-
const dataInTime = _getTimePointDataMask(frames, dynamicVolume, segmentationVolume);
|
|
18
|
-
return dataInTime;
|
|
17
|
+
const [dataInTime, ijkCoords] = _getTimePointDataMask(frames, dynamicVolume, segmentationVolume);
|
|
18
|
+
return [dataInTime, ijkCoords];
|
|
19
19
|
}
|
|
20
20
|
if (options.imageCoordinate) {
|
|
21
21
|
const dataInTime = _getTimePointDataCoordinate(frames, options.imageCoordinate, dynamicVolume);
|
|
@@ -49,9 +49,16 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
49
49
|
const len = segScalarData.length;
|
|
50
50
|
const nonZeroVoxelIndices = [];
|
|
51
51
|
nonZeroVoxelIndices.length = len;
|
|
52
|
+
const ijkCoords = [];
|
|
53
|
+
const dimensions = segmentationVolume.dimensions;
|
|
52
54
|
let actualLen = 0;
|
|
53
55
|
for (let i = 0, len = segScalarData.length; i < len; i++) {
|
|
54
56
|
if (segScalarData[i] !== 0) {
|
|
57
|
+
ijkCoords.push([
|
|
58
|
+
i % dimensions[0],
|
|
59
|
+
Math.floor((i / dimensions[0]) % dimensions[1]),
|
|
60
|
+
Math.floor(i / (dimensions[0] * dimensions[1])),
|
|
61
|
+
]);
|
|
55
62
|
nonZeroVoxelIndices[actualLen++] = i;
|
|
56
63
|
}
|
|
57
64
|
}
|
|
@@ -70,9 +77,9 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
70
77
|
});
|
|
71
78
|
values.push(indexValues);
|
|
72
79
|
}
|
|
73
|
-
return values;
|
|
80
|
+
return [values, ijkCoords];
|
|
74
81
|
}
|
|
75
|
-
const callback = ({ pointLPS: segPointLPS, value: segValue }) => {
|
|
82
|
+
const callback = ({ pointLPS: segPointLPS, value: segValue, pointIJK: segPointIJK, }) => {
|
|
76
83
|
if (segValue === 0) {
|
|
77
84
|
return;
|
|
78
85
|
}
|
|
@@ -93,10 +100,11 @@ function _getTimePointDataMask(frames, dynamicVolume, segmentationVolume) {
|
|
|
93
100
|
perFrameSum.forEach((sum) => {
|
|
94
101
|
averageValues.push(sum / count);
|
|
95
102
|
});
|
|
103
|
+
ijkCoords.push(segPointIJK);
|
|
96
104
|
values.push(averageValues);
|
|
97
105
|
};
|
|
98
106
|
pointInShapeCallback(maskImageData, () => true, callback);
|
|
99
|
-
return values;
|
|
107
|
+
return [values, ijkCoords];
|
|
100
108
|
}
|
|
101
109
|
export default getDataInTime;
|
|
102
110
|
//# sourceMappingURL=getDataInTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAS,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAc3D,SAAS,aAAa,CACpB,aAAwC,EACxC,OAIC;IAED,IAAI,UAAU,CAAC;IAGf,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI;QACrC,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;KAC7C,CAAC;IAKF,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QACrD,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;KACH;IAED,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC5E;IAED,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":"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"}
|