diff --git a/ShoulderCase/@ShoulderCase/ShoulderCase.m b/ShoulderCase/@ShoulderCase/ShoulderCase.m index 468b597..5dfa56e 100755 --- a/ShoulderCase/@ShoulderCase/ShoulderCase.m +++ b/ShoulderCase/@ShoulderCase/ShoulderCase.m @@ -1,520 +1,965 @@ classdef ShoulderCase < handle % Properties and methods associated to the SoulderCase object. % Author: Alexandre Terrier, EPFL-LBO % Matthieu Boubat, EPFL-LBO % Creation date: 2018-07-01 % Revision date: 2020-07-23 % TODO: % Need method to load properties (from amira, matlab, excel, SQL) % Need method to save properties (in matlab, excel, SQL) % Remove datapath from constants % properties id = []; % id of the shoulder case, as it appears in the database (Pnnn) diagnosis = []; treatment = []; outcome = []; patient = []; shoulderManual = []; shoulderAuto = []; study = []; comment = []; end % properties (Constant, Hidden = true) % dataPath = '/Volumes/shoulder/dataDev'; % path to data folder from package folder % % This should be done differently. Check where we are, and where we % % should go. % end properties (Hidden = true) dataPath = []; dataCTPath = []; dataAmiraPath = []; dataMatlabPath = []; dataDicomPath = []; id4C = []; % SCaseId with P/N followed by 3 digits --> 4 char end methods (Access = ?ShoulderCaseLoader) function obj = ShoulderCase(SCaseID,dataCTPath) % SCaseID validation rawSCaseID = SCaseIDParser(SCaseID); assert(rawSCaseID.isValidID,'The input argument is not a valid SCaseID.') obj.id = SCaseID; obj.id4C = rawSCaseID.getIDWithNumberOfDigits(3); % path attribution obj.dataCTPath = dataCTPath; % Initialsation obj.patient = Patient(obj); obj.shoulderManual = ShoulderManual(obj); obj.shoulderAuto = ShoulderAuto(obj); obj.propagateDataPath; end end methods function propagateDataPath(obj) % Update current dataPath % Propagate the path to objects in properties obj.dataAmiraPath = fullfile(obj.dataCTPath,'amira'); obj.dataMatlabPath = fullfile(obj.dataCTPath,'matlab'); obj.dataDicomPath = fullfile(obj.dataCTPath,'dicom'); obj.shoulderManual.propagateDataPath; obj.shoulderAuto.propagateDataPath; end function outputArg = output(obj, varargin) % Below is copy/past from previous version % This function is used to output the variable Results, used % by scapula_measurePKG the modified funcion scapula_measure. % inputArg could be as in scapula_calculation % 'density', 'References', 'obliqueSlice', 'display' Result.SCase_id = obj.id; % 1 Result.glenoid_Radius = obj.shoulderManual.scapula.glenoid.radius; % 2 Result.glenoid_radiusRMSE = obj.shoulderManual.scapula.glenoid.fittedSphere.RMSE; % 3 % 3 %Result.glenoidSphericity = ' '; %Result.glenoid_biconcave = ' '; Result.glenoid_depth = obj.shoulderManual.scapula.glenoid.depth; % 4 Result.glenoid_width = obj.shoulderManual.scapula.glenoid.width; % 5 Result.glenoid_height = obj.shoulderManual.scapula.glenoid.height; % 6 Result.glenoid_center_PA = obj.shoulderManual.scapula.glenoid.centerLocal(1); % 7 Result.glenoid_center_IS = obj.shoulderManual.scapula.glenoid.centerLocal(2); % 8 Result.glenoid_center_ML = obj.shoulderManual.scapula.glenoid.centerLocal(3); % 9 Result.glenoid_version_ampl = obj.shoulderManual.scapula.glenoid.versionAmplitude; % 10 Result.glenoid_version_orient = obj.shoulderManual.scapula.glenoid.versionOrientation; % 11 Result.glenoid_Version = obj.shoulderManual.scapula.glenoid.version; % 12 Result.glenoid_Inclination = obj.shoulderManual.scapula.glenoid.inclination; % 13 Result.humerus_joint_radius = ' '; % 14 Result.humeral_head_radius = obj.shoulderManual.humerus.radius; % 15 % Result.humerus_GHsublux_2D = ' '; % Result.humerus_SHsublux_2D = ' '; Result.humerus_GHsubluxation_ampl = obj.shoulderManual.humerus.GHSAmpl; % 16 Result.humerus_GHsubluxation_orient = obj.shoulderManual.humerus.GHSOrient; % 17 Result.humerus_SHsubluxation_ampl = obj.shoulderManual.humerus.SHSAmpl; % 18 Result.humerus_SHsubluxation_orient = obj.shoulderManual.humerus.SHSOrient; % 19 Result.scapula_CSA = obj.shoulderManual.scapula.acromion.criticalShoulderAngle; % radCSA; % 5 Lines below should be updated Result.scapula_CTangle = 0; %CTorientation; %20 Result.scapula_CTangleVersion = 0; % WearPlaneAngle; %21 Result.scapula_CTangleSHS = 0; % SHSPlaneAngle; % 22 Result.scapula_CTangleGHS = 0; % GHSPlaneAngle; % 23 Result.scapula_PlaneRMSE = 0; %PlaneRMSE;%24 Result.scapula_AI = obj.shoulderManual.scapula.acromion.acromionIndex; outputArg = Result; end function outputArg = saveMatlab(obj) % Save SCase to matlab file dir = obj.dataMatlabPath; % Create dir if not exist try if ~exist(dir, 'dir') % create directory if it does not exist mkdir(dir); end catch fprintf('Error creating the matlab directory \n'); % Should be in log end % Save SCase in matlab directoty, in a file named SCaseCNNN.m filename = 'SCase'; filename = [dir '/' filename '.mat']; try SCase = obj; save(filename, 'SCase'); outputArg = 1; catch fprintf('Error creating SCase matlab file \n'); % Should be in log outputArg = -1; end end function outputArg = appendToCSV(obj,filename) % Save SCase to csv file logFid = fopen('log/measureSCase.log', 'a'); dataDir = ConfigFileExtractor.getVariable('dataDir'); xlsDir = [dataDir '/Excel/xlsFromMatlab']; fid = fopen([xlsDir '/' filename],'a'); fprintf(fid,[... obj.id ','... % SCase_id obj.shoulderManual.side ','... % shoulder_side num2str(obj.shoulderManual.scapula.glenoid.radius) ','... % glenoid_radius num2str(obj.shoulderManual.scapula.glenoid.fittedSphere.RMSE) ','... % glenoid_sphereRMSE num2str(obj.shoulderManual.scapula.glenoid.depth) ','... % glenoid_depth num2str(obj.shoulderManual.scapula.glenoid.width) ','... % glenoid_width num2str(obj.shoulderManual.scapula.glenoid.height) ','... % glenoid_height num2str(obj.shoulderManual.scapula.glenoid.centerLocal.x) ','... % glenoid_centerPA num2str(obj.shoulderManual.scapula.glenoid.centerLocal.y) ','... % glenoid_centerIS num2str(obj.shoulderManual.scapula.glenoid.centerLocal.z) ','... % glenoid_centerML num2str(obj.shoulderManual.scapula.glenoid.versionAmplitude) ','... % glenoid_versionAmpl num2str(obj.shoulderManual.scapula.glenoid.versionOrientation) ','... % glenoid_versionOrientation num2str(obj.shoulderManual.scapula.glenoid.version) ','... % glenoid_version num2str(obj.shoulderManual.scapula.glenoid.inclination) ','... % glenoid_inclination num2str(obj.shoulderManual.humerus.jointRadius) ','... % humerus_jointRadius num2str(obj.shoulderManual.humerus.radius) ','... % humerus_headRadius num2str(obj.shoulderManual.humerus.GHSAmpl) ','... % humerus_GHSAmpl num2str(obj.shoulderManual.humerus.GHSOrient) ','... % humerus_GHSOrient num2str(obj.shoulderManual.humerus.SHSAmpl) ','... % humerus_SHSAmpl num2str(obj.shoulderManual.humerus.SHSOrient) ','... % humerus_SHSOrient num2str(obj.shoulderManual.humerus.SHSAngle) ','... % humerus_SHSAgle num2str(obj.shoulderManual.humerus.SHSPA) ','... % humerus_SHSPA num2str(obj.shoulderManual.humerus.SHSIS) ','... % humerus_SHSIS num2str(obj.shoulderManual.scapula.acromion.AI) ','... % acromion_AI num2str(obj.shoulderManual.scapula.acromion.CSA) ','... % acromion_CSA num2str(obj.shoulderManual.scapula.acromion.PSA) ','... % acromion_PSA num2str(obj.shoulderManual.scapula.acromion.AAA) '\n'... % acromion_AAA ]); fclose(fid); fclose(logFid); outputArg = 1; end function outputArg = saveExcel(~) % Save SCase to Excel file outputArg = 1; end function outputArg = saveSQL(~) % Save SCase to MySQL database outputArg = 1; end function outputArg = SCaseDataToTable(obj, varargin) - Result.SCase_id = obj.id; - Result.SCase_diagnosis = obj.diagnosis; - Result.SCase_treatment = obj.treatment; - Result.SCase_outcome = obj.outcome; + Result.SCase_id = obj.id; + if isnan(obj.diagnosis) + Result.SCase_diagnosis = 'nan'; + else + Result.SCase_diagnosis = obj.diagnosis; + end + if isempty(obj.treatment) + Result.SCase_treatment = 'empty'; + elseif isnan(obj.treatment) + Result.SCase_treatment = 'nan'; + else + Result.SCase_treatment = obj.treatment; + end + if isempty(obj.outcome) + Result.SCase_outcome = nan; + else + Result.SCase_outcome = obj.outcome; + end Result.patient_id = obj.patient.id; Result.patient_idMed = obj.patient.idMed; Result.patient_gender = obj.patient.gender; Result.patient_age = obj.patient.age; Result.patient_ethnicity = obj.patient.ethnicity; Result.patient_weight = obj.patient.weight; Result.patient_height = obj.patient.height; - Result.patient_BMI = obj.patient.BMI; + + if isempty(obj.patient.BMI) + Result.patient_BMI = "nan"; + elseif obj.patient.BMI(1) == '#' + Result.patient_BMI = "nan"; + else + Result.patient_BMI = obj.patient.BMI; + end + Result.patient_comment = obj.patient.comment; %shoulderManual - Result.shoulderManual_side = obj.shoulderManual().side; - Result.shoulderManual_scapula_angulusInferior = obj.shoulderManual().scapula.angulusInferior; - Result.shoulderManual_scapula_angulusInferiorLocal = obj.shoulderManual().scapula.angulusInferiorLocal; - Result.shoulderManual_scapula_trigonumSpinae = obj.shoulderManual().scapula.trigonumSpinae; - Result.shoulderManual_scapula_processusCoracoideus = obj.shoulderManual().scapula.processusCoracoideus; - Result.shoulderManual_scapula_acromioClavicular = obj.shoulderManual().scapula.acromioClavicular; - Result.shoulderManual_scapula_angulusAcromialis = obj.shoulderManual().scapula.angulusAcromialis; - Result.shoulderManual_scapula_spinoGlenoidNotch = obj.shoulderManual().scapula.spinoGlenoidNotch; - Result.shoulderManual_scapula_pillars_5_3_cols = obj.shoulderManual.scapula.pillar(:)'; - Result.shoulderManual_scapula_groove_5_3_cols = obj.shoulderManual.scapula.groove(:)'; - Result.shoulderManual_scapula_coordSys_ML = obj.shoulderManual.scapula.coordSys.ML; - Result.shoulderManual_scapula_coordSys_PA = obj.shoulderManual.scapula.coordSys.PA; - Result.shoulderManual_scapula_coordSys_IS = obj.shoulderManual.scapula.coordSys.IS; - Result.shoulderManual_scapula_coordSys_origin = obj.shoulderManual.scapula.coordSys.origin; - Result.shoulderManual_scapula_plane_normal = obj.shoulderManual.scapula.plane.normal; - Result.shoulderManual_scapula_plane_point = obj.shoulderManual.scapula.plane.point; - Result.shoulderManual_scapula_plane_fitPerformance_points_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.points(:)'; - Result.shoulderManual_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.residuals(:)'; - Result.shoulderManual_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.residuals(:)'; - Result.shoulderManual_scapula_plane_fitPerformance_RMSE = obj.shoulderManual.scapula.plane.fitPerformance.RMSE; - Result.shoulderManual_scapula_plane_fitPerformance_R2 = obj.shoulderManual.scapula.plane.fitPerformance.R2; + Result.shoulderManual_side = obj.shoulderManual.side; + if isempty(obj.shoulderManual.scapula.angulusInferior) + Result.shoulderManual_scapula_angulusInferior = [nan, nan, nan]; + Result.shoulderManual_scapula_angulusInferiorLocal = [nan, nan, nan]; + Result.shoulderManual_scapula_trigonumSpinae = [nan, nan, nan]; + Result.shoulderManual_scapula_processusCoracoideus = [nan, nan, nan]; + Result.shoulderManual_scapula_acromioClavicular = [nan, nan, nan]; + Result.shoulderManual_scapula_angulusAcromialis = [nan, nan, nan]; + Result.shoulderManual_scapula_spinoGlenoidNotch = [nan, nan, nan]; + Result.shoulderManual_scapula_pillar = linspace(nan, nan, 21); + Result.shoulderManual_scapula_groove = linspace(nan, nan, 15); + + else + Result.shoulderManual_scapula_angulusInferior = obj.shoulderManual().scapula.angulusInferior; + Result.shoulderManual_scapula_angulusInferiorLocal = obj.shoulderManual().scapula.angulusInferiorLocal; + Result.shoulderManual_scapula_trigonumSpinae = obj.shoulderManual().scapula.trigonumSpinae; + Result.shoulderManual_scapula_processusCoracoideus = obj.shoulderManual().scapula.processusCoracoideus; + Result.shoulderManual_scapula_acromioClavicular = obj.shoulderManual().scapula.acromioClavicular; + Result.shoulderManual_scapula_angulusAcromialis = obj.shoulderManual().scapula.angulusAcromialis; + Result.shoulderManual_scapula_spinoGlenoidNotch = obj.shoulderManual().scapula.spinoGlenoidNotch; + %Result.shoulderManual_scapula_pillars = obj.shoulderManual.scapula.pillar(:)'; + [Result.shoulderManual_scapula_pillar_rows, Result.shoulderManual_scapula_pillar_cols] ... + = size(obj.shoulderManual.scapula.pillar); + Result.shoulderManual_scapula_pillar = zeros(1, 21); + for i=1:Result.shoulderManual_scapula_pillar_rows * Result.shoulderManual_scapula_pillar_cols + pillarElements = obj.shoulderManual.scapula.pillar(:)'; + Result.shoulderManual_scapula_pillar(i) = pillarElements(i); + end + Result.shoulderManual_scapula_groove = obj.shoulderManual.scapula.groove(:)'; + end + if isempty(obj.shoulderManual.scapula.coordSys.ML) + Result.shoulderManual_scapula_coordSys_ML = [nan, nan, nan]; + Result.shoulderManual_scapula_coordSys_PA = [nan, nan, nan]; + Result.shoulderManual_scapula_coordSys_IS = [nan, nan, nan]; + Result.shoulderManual_scapula_coordSys_origin = [nan, nan, nan]; + else + Result.shoulderManual_scapula_coordSys_ML = obj.shoulderManual.scapula.coordSys.ML; + Result.shoulderManual_scapula_coordSys_PA = obj.shoulderManual.scapula.coordSys.PA; + Result.shoulderManual_scapula_coordSys_IS = obj.shoulderManual.scapula.coordSys.IS; + Result.shoulderManual_scapula_coordSys_origin = obj.shoulderManual.scapula.coordSys.origin; + end + if isempty(obj.shoulderManual.scapula.plane.normal) + Result.shoulderManual_scapula_plane_normal = [nan, nan, nan]; + Result.shoulderManual_scapula_plane_point = [nan, nan, nan]; + Result.shoulderManual_scapula_plane_fitPerformance_points_3_3_cols = linspace(nan, nan, 9); + Result.shoulderManual_scapula_plane_fitPerformance_residuals_3_3_cols = linspace(nan, nan, 9); + Result.shoulderManual_scapula_plane_fitPerformance_RMSE = nan; + Result.shoulderManual_scapula_plane_fitPerformance_R2 = nan; + else + Result.shoulderManual_scapula_plane_normal = obj.shoulderManual.scapula.plane.normal; + Result.shoulderManual_scapula_plane_point = obj.shoulderManual.scapula.plane.point; + Result.shoulderManual_scapula_plane_fitPerformance_points_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.points(:)'; + Result.shoulderManual_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.residuals(:)'; + Result.shoulderManual_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderManual.scapula.plane.fitPerformance.residuals(:)'; + Result.shoulderManual_scapula_plane_fitPerformance_RMSE = obj.shoulderManual.scapula.plane.fitPerformance.RMSE; + Result.shoulderManual_scapula_plane_fitPerformance_R2 = obj.shoulderManual.scapula.plane.fitPerformance.R2; + end Result.shoulderManual_scapula_segmentation = obj.shoulderManual.scapula.segmentation; - Result.shoulderManual_scapula_surface = obj.shoulderManual.scapula.surface; - %(3001*3) Result.shoulderManual_scapula_glenoid_surface_points = obj.shoulderManual.scapula.surface.points +% if isempty(obj.shoulderManual.scapula.surface) +% Result.shoulderManual_scapula_surface = nan; +% else +% Result.shoulderManual_scapula_surface = obj.shoulderManual.scapula.surface; +% end + %(3001*3) Result.shoulderManual_scapula_glenoid_surface_points = obj.shoulderManual.scapula.glenoid.surface.points %Result.shoulderManual_scapula_glenoid_surface_meanPoint = obj.shoulderManual.scapula.glenoid.surface.meanPoint; - %(5881*3) Result.shoulderManual_scapula_glenoid_surface_faces = obj.shoulderManual.scapula.surface.faces - Result.shoulderManual_scapula_glenoid_center = obj.shoulderManual.scapula.glenoid.center; - Result.shoulderManual_scapula_glenoid_centerLocal_x = obj.shoulderManual.scapula.glenoid.centerLocal.x; - Result.shoulderManual_scapula_glenoid_centerLocal_y = obj.shoulderManual.scapula.glenoid.centerLocal.y; - Result.shoulderManual_scapula_glenoid_centerLocal_z = obj.shoulderManual.scapula.glenoid.centerLocal.z; - Result.shoulderManual_scapula_glenoid_radius = obj.shoulderManual.scapula.glenoid.radius; - Result.shoulderManual_scapula_glenoid_centerLine = obj.shoulderManual.scapula.glenoid.centerLine; - Result.shoulderManual_scapula_glenoid_depth = obj.shoulderManual.scapula.glenoid.depth; - Result.shoulderManual_scapula_glenoid_width = obj.shoulderManual.scapula.glenoid.width; - Result.shoulderManual_scapula_glenoid_height = obj.shoulderManual.scapula.glenoid.height; - Result.shoulderManual_scapula_glenoid_anteroSuperiorAngle = obj.shoulderManual.scapula.glenoid.anteroSuperiorAngle; - Result.shoulderManual_scapula_glenoid_versionAmplitude = obj.shoulderManual.scapula.glenoid.versionAmplitude; - Result.shoulderManual_scapula_glenoid_versionOrientation = obj.shoulderManual.scapula.glenoid.versionOrientation; - Result.shoulderManual_scapula_glenoid_version = obj.shoulderManual.scapula.glenoid.version; - Result.shoulderManual_scapula_glenoid_inclination = obj.shoulderManual.scapula.glenoid.inclination; - Result.shoulderManual_scapula_glenoid_density = obj.shoulderManual.scapula.glenoid.density; - Result.shoulderManual_scapula_glenoid_comment = obj.shoulderManual.scapula.glenoid.comment; - Result.shoulderManual_scapula_glenoid_fittedSphere_center = ... - obj.shoulderManual.scapula.glenoid.fittedSphere.center; - Result.shoulderManual_scapula_glenoid_fittedSphere_radius = ... - obj.shoulderManual.scapula.glenoid.fittedSphere.center; -% Result.shoulderManual_scapula_glenoid_fittedSphere_residuals = ... -% obj.shoulderManual.scapula.glenoid.shoulderManual.scapula.glenoid.fittedSphere.residuals'; - Result.shoulderManual_scapula_glenoid_fittedSphere_R2 = ... - obj.shoulderManual.scapula.glenoid.fittedSphere.R2; - Result.shoulderManual_scapula_glenoid_fittedSphere_RMSE = ... - obj.shoulderManual.scapula.glenoid.fittedSphere.RMSE; - Result.shoulderManual_scapula_glenoid_walch = obj.shoulderManual.scapula.glenoid.walch; - Result.shoulderManual_scapula_acromion_AI = obj.shoulderManual.scapula.acromion.AI; - Result.shoulderManual_scapula_acromion_CSA = obj.shoulderManual.scapula.acromion.CSA; - Result.shoulderManual_scapula_acromion_PSA = obj.shoulderManual.scapula.acromion.PSA; - Result.shoulderManual_scapula_acromion_PSL = obj.shoulderManual.scapula.acromion.PSL; - Result.shoulderManual_scapula_acromion_AAA = obj.shoulderManual.scapula.acromion.AAA; - Result.shoulderManual_scapula_acromion_AAL = obj.shoulderManual.scapula.acromion.AAL; - Result.shoulderManual_scapula_acromion_AAx = obj.shoulderManual.scapula.acromion.AAx; - Result.shoulderManual_scapula_acromion_AAy = obj.shoulderManual.scapula.acromion.AAy; - Result.shoulderManual_scapula_acromion_AAz = obj.shoulderManual.scapula.acromion.AAz; - Result.shoulderManual_scapula_acromion_ACx = obj.shoulderManual.scapula.acromion.ACx; - Result.shoulderManual_scapula_acromion_ACy = obj.shoulderManual.scapula.acromion.ACy; - Result.shoulderManual_scapula_acromion_ACz = obj.shoulderManual.scapula.acromion.ACz; - Result.shoulderManual_humerus_landmarks = obj.shoulderManual.humerus.landmarks(:)'; - Result.shoulderManual_humerus_center = obj.shoulderManual.humerus.center; - Result.shoulderManual_humerus_radius = obj.shoulderManual.humerus.radius; - Result.shoulderManual_humerus_jointRadius = obj.shoulderManual.humerus.jointRadius; - Result.shoulderManual_humerus_SHSAngle = obj.shoulderManual.humerus.SHSAngle; - Result.shoulderManual_humerus_SHSPA = obj.shoulderManual.humerus.SHSPA; - Result.shoulderManual_humerus_SHSIS = obj.shoulderManual.humerus.SHSIS; - Result.shoulderManual_humerus_SHSAmpl = obj.shoulderManual.humerus.SHSAmpl; - Result.shoulderManual_humerus_SHSOrient = obj.shoulderManual.humerus.SHSOrient; - Result.shoulderManual_humerus_GHSAmpl = obj.shoulderManual.humerus.GHSAmpl; - Result.shoulderManual_humerus_GHSOrient = obj.shoulderManual.humerus.GHSOrient; - Result.shoulderManual_humerus_GHSAmpl = obj.shoulderManual.humerus.GHSAmpl; + %(5881*3) Result.shoulderManual_scapula_glenoid_surface_faces = obj.shoulderManual.scapula.glenoid.surface.faces + if isempty(obj.shoulderManual.scapula.glenoid.center) + Result.shoulderManual_scapula_glenoid_center = [nan, nan, nan]; + Result.shoulderManual_scapula_glenoid_centerLocal_x = nan; + Result.shoulderManual_scapula_glenoid_centerLocal_y = nan; + Result.shoulderManual_scapula_glenoid_centerLocal_z = nan; + Result.shoulderManual_scapula_glenoid_radius = nan; + Result.shoulderManual_scapula_glenoid_centerLine = [nan, nan, nan]; + else + Result.shoulderManual_scapula_glenoid_center = obj.shoulderManual.scapula.glenoid.center; + Result.shoulderManual_scapula_glenoid_centerLocal_x = obj.shoulderManual.scapula.glenoid.centerLocal.x; + Result.shoulderManual_scapula_glenoid_centerLocal_y = obj.shoulderManual.scapula.glenoid.centerLocal.y; + Result.shoulderManual_scapula_glenoid_centerLocal_z = obj.shoulderManual.scapula.glenoid.centerLocal.z; + Result.shoulderManual_scapula_glenoid_radius = obj.shoulderManual.scapula.glenoid.radius; + Result.shoulderManual_scapula_glenoid_centerLine = obj.shoulderManual.scapula.glenoid.centerLine; + end + if isempty(obj.shoulderManual.scapula.glenoid.depth) + Result.shoulderManual_scapula_glenoid_depth = nan; + else + Result.shoulderManual_scapula_glenoid_depth = obj.shoulderManual.scapula.glenoid.depth; + end + if isempty(obj.shoulderManual.scapula.glenoid.width) + Result.shoulderManual_scapula_glenoid_width = nan; + else + Result.shoulderManual_scapula_glenoid_width = obj.shoulderManual.scapula.glenoid.width; + end + if isempty(obj.shoulderManual.scapula.glenoid.height) + Result.shoulderManual_scapula_glenoid_height = nan; + else + Result.shoulderManual_scapula_glenoid_height = obj.shoulderManual.scapula.glenoid.height; + end + if isempty(obj.shoulderManual.scapula.glenoid.anteroSuperiorAngle) + Result.shoulderManual_scapula_glenoid_anteroSuperiorAngle = nan; + else + Result.shoulderManual_scapula_glenoid_anteroSuperiorAngle = obj.shoulderManual.scapula.glenoid.anteroSuperiorAngle; + end + if isempty(obj.shoulderManual.scapula.glenoid.versionAmplitude) + Result.shoulderManual_scapula_glenoid_versionAmplitude = nan; + Result.shoulderManual_scapula_glenoid_versionOrientation = nan; + Result.shoulderManual_scapula_glenoid_version = nan; + Result.shoulderManual_scapula_glenoid_inclination = nan; + else + Result.shoulderManual_scapula_glenoid_versionAmplitude = obj.shoulderManual.scapula.glenoid.versionAmplitude; + Result.shoulderManual_scapula_glenoid_versionOrientation = obj.shoulderManual.scapula.glenoid.versionOrientation; + Result.shoulderManual_scapula_glenoid_version = obj.shoulderManual.scapula.glenoid.version; + Result.shoulderManual_scapula_glenoid_inclination = obj.shoulderManual.scapula.glenoid.inclination; + end + %Result.shoulderManual_scapula_glenoid_density = obj.shoulderManual.scapula.glenoid.density; try - Result.shoulderManual_muscles_IS_segmentationSet = obj.shoulderManual.muscles.list.IS.segmentationSet; - Result.shoulderManual_muscles_IS_sliceName = obj.shoulderManual.muscles.list.IS.sliceName; - Result.shoulderManual_muscles_IS_PCSA = obj.shoulderManual.muscles.list.IS.PCSA; - Result.shoulderManual_muscles_IS_atrophy = obj.shoulderManual.muscles.list.IS.atrophy; - Result.shoulderManual_muscles_IS_fat = obj.shoulderManual.muscles.list.IS.fat; - Result.shoulderManual_muscles_IS_osteochondroma = obj.shoulderManual.muscles.list.IS.osteochondroma; - Result.shoulderManual_muscles_IS_degeneration = obj.shoulderManual.muscles.list.IS.degeneration; - Result.shoulderManual_muscles_SS_segmentationSet = obj.shoulderManual.muscles.list.SS.segmentationSet; - Result.shoulderManual_muscles_SS_sliceName = obj.shoulderManual.muscles.list.SS.sliceName; - Result.shoulderManual_muscles_SS_PCSA = obj.shoulderManual.muscles.list.SS.PCSA; - Result.shoulderManual_muscles_SS_atrophy = obj.shoulderManual.muscles.list.SS.atrophy; - Result.shoulderManual_muscles_SS_fat = obj.shoulderManual.muscles.list.SS.fat; - Result.shoulderManual_muscles_SS_osteochondroma = obj.shoulderManual.muscles.list.SS.osteochondroma; - Result.shoulderManual_muscles_SS_degeneration = obj.shoulderManual.muscles.list.SS.degeneration; - Result.shoulderManual_muscles_SC_segmentationSet = obj.shoulderManual.muscles.list.SC.segmentationSet; - Result.shoulderManual_muscles_SC_sliceName = obj.shoulderManual.muscles.list.SC.sliceName; - Result.shoulderManual_muscles_SC_PCSA = obj.shoulderManual.muscles.list.SC.PCSA; - Result.shoulderManual_muscles_SC_atrophy = obj.shoulderManual.muscles.list.SC.atrophy; - Result.shoulderManual_muscles_SC_fat = obj.shoulderManual.muscles.list.SC.fat; - Result.shoulderManual_muscles_SC_osteochondroma = obj.shoulderManual.muscles.list.SC.osteochondroma; - Result.shoulderManual_muscles_SC_degeneration = obj.shoulderManual.muscles.list.SC.degeneration; - Result.shoulderManual_muscles_TM_segmentationSet = obj.shoulderManual.muscles.list.TM.segmentationSet; - Result.shoulderManual_muscles_TM_sliceName = obj.shoulderManual.muscles.list.TM.sliceName; - Result.shoulderManual_muscles_TM_PCSA = obj.shoulderManual.muscles.list.TM.PCSA; - Result.shoulderManual_muscles_TM_atrophy = obj.shoulderManual.muscles.list.TM.atrophy; - Result.shoulderManual_muscles_TM_fat = obj.shoulderManual.muscles.list.TM.fat; - Result.shoulderManual_muscles_TM_osteochondroma = obj.shoulderManual.muscles.list.TM.osteochondroma; - Result.shoulderManual_muscles_TM_degeneration = obj.shoulderManual.muscles.list.TM.degeneration; - catch ME - Result.shoulderManual_muscles_IS_segmentationSet = 0; - Result.shoulderManual_muscles_IS_sliceName = 0; - Result.shoulderManual_muscles_IS_PCSA = 0; - Result.shoulderManual_muscles_IS_atrophy = 0; - Result.shoulderManual_muscles_IS_fat = 0; - Result.shoulderManual_muscles_IS_osteochondroma = 0; - Result.shoulderManual_muscles_IS_degeneration = 0; - Result.shoulderManual_muscles_SS_segmentationSet = 0; - Result.shoulderManual_muscles_SS_sliceName = 0; - Result.shoulderManual_muscles_SS_PCSA = 0; - Result.shoulderManual_muscles_SS_atrophy = 0; - Result.shoulderManual_muscles_SS_fat = 0; - Result.shoulderManual_muscles_SS_osteochondroma = 0; - Result.shoulderManual_muscles_SS_degeneration = 0; - Result.shoulderManual_muscles_SC_segmentationSet = 0; - Result.shoulderManual_muscles_SC_sliceName = 0; - Result.shoulderManual_muscles_SC_PCSA = 0; - Result.shoulderManual_muscles_SC_atrophy = 0; - Result.shoulderManual_muscles_SC_fat = 0; - Result.shoulderManual_muscles_SC_osteochondroma = 0; - Result.shoulderManual_muscles_SC_degeneration = 0; - Result.shoulderManual_muscles_TM_segmentationSet = 0; - Result.shoulderManual_muscles_TM_sliceName = 0; - Result.shoulderManual_muscles_TM_PCSA = 0; - Result.shoulderManual_muscles_TM_atrophy = 0; - Result.shoulderManual_muscles_TM_fat = 0; - Result.shoulderManual_muscles_TM_osteochondroma = 0; - Result.shoulderManual_muscles_TM_degeneration = 0; + Result.shoulderManual_scapula_glenoid_density_size = size(obj.shoulderManual.scapula.glenoid.density); + for i=1:Result.shoulderManual_scapula_glenoid_density_size + glenoidElements = obj.shoulderManual.scapula.glenoid.density(:); + Result.shoulderManual_scapula_glenoid_density(i) = glenoidElements(i); + end + catch + Result.shoulderManual_scapula_glenoid_density = zeros(1, Result.shoulderManual_scapula_glenoid_density_size); + end + if isempty(obj.shoulderManual.scapula.glenoid.comment) + Result.shoulderManual_scapula_glenoid_comment = nan; + else + Result.shoulderManual_scapula_glenoid_comment = obj.shoulderManual.scapula.glenoid.comment; + end + if isempty(obj.shoulderManual.scapula.glenoid.fittedSphere.center) + Result.shoulderManual_scapula_glenoid_fittedSphere_center = [nan, nan, nan]; + Result.shoulderManual_scapula_glenoid_fittedSphere_radius = nan; + % Result.shoulderManual_scapula_glenoid_fittedSphere_residuals = + Result.shoulderManual_scapula_glenoid_fittedSphere_R2 = nan; + Result.shoulderManual_scapula_glenoid_fittedSphere_RMSE = nan; + else + Result.shoulderManual_scapula_glenoid_fittedSphere_center = ... + obj.shoulderManual.scapula.glenoid.fittedSphere.center; + Result.shoulderManual_scapula_glenoid_fittedSphere_radius = ... + obj.shoulderManual.scapula.glenoid.fittedSphere.radius; + % Result.shoulderManual_scapula_glenoid_fittedSphere_residuals = ... + % obj.shoulderManual.scapula.glenoid.shoulderManual.scapula.glenoid.fittedSphere.residuals'; + Result.shoulderManual_scapula_glenoid_fittedSphere_R2 = ... + obj.shoulderManual.scapula.glenoid.fittedSphere.R2; + Result.shoulderManual_scapula_glenoid_fittedSphere_RMSE = ... + obj.shoulderManual.scapula.glenoid.fittedSphere.RMSE; end + %Result.shoulderManual_scapula_glenoid_walch = obj.shoulderManual.scapula.glenoid.walch; + if isempty(obj.shoulderManual.scapula.glenoid.walch) + Result.shoulderManual_scapula_glenoid_walch = 'empty'; + elseif isnan(obj.shoulderManual.scapula.glenoid.walch) + Result.shoulderManual_scapula_glenoid_walch = 'nan'; + else + Result.shoulderManual_scapula_glenoid_walch = obj.shoulderManual.scapula.glenoid.walch; + end + if isempty(obj.shoulderManual.scapula.acromion.AI) + Result.shoulderManual_scapula_acromion_AI = nan; + Result.shoulderManual_scapula_acromion_CSA = nan; + Result.shoulderManual_scapula_acromion_PSA = nan; + Result.shoulderManual_scapula_acromion_PSL = nan; + Result.shoulderManual_scapula_acromion_AAA = nan; + Result.shoulderManual_scapula_acromion_AAL = nan; + Result.shoulderManual_scapula_acromion_AAx = nan; + Result.shoulderManual_scapula_acromion_AAy = nan; + Result.shoulderManual_scapula_acromion_AAz = nan; + Result.shoulderManual_scapula_acromion_ACx = nan; + Result.shoulderManual_scapula_acromion_ACy = nan; + Result.shoulderManual_scapula_acromion_ACz = nan; + else + Result.shoulderManual_scapula_acromion_AI = obj.shoulderManual.scapula.acromion.AI; + Result.shoulderManual_scapula_acromion_CSA = obj.shoulderManual.scapula.acromion.CSA; + Result.shoulderManual_scapula_acromion_PSA = obj.shoulderManual.scapula.acromion.PSA; + Result.shoulderManual_scapula_acromion_PSL = obj.shoulderManual.scapula.acromion.PSL; + Result.shoulderManual_scapula_acromion_AAA = obj.shoulderManual.scapula.acromion.AAA; + Result.shoulderManual_scapula_acromion_AAL = obj.shoulderManual.scapula.acromion.AAL; + Result.shoulderManual_scapula_acromion_AAx = obj.shoulderManual.scapula.acromion.AAx; + Result.shoulderManual_scapula_acromion_AAy = obj.shoulderManual.scapula.acromion.AAy; + Result.shoulderManual_scapula_acromion_AAz = obj.shoulderManual.scapula.acromion.AAz; + Result.shoulderManual_scapula_acromion_ACx = obj.shoulderManual.scapula.acromion.ACx; + Result.shoulderManual_scapula_acromion_ACy = obj.shoulderManual.scapula.acromion.ACy; + Result.shoulderManual_scapula_acromion_ACz = obj.shoulderManual.scapula.acromion.ACz; + end + [Result.shoulderManual_humerus_landmarks_size_rows, Result.shoulderManual_humerus_landmarks_size_cols] ... + = size(obj.shoulderManual.humerus.landmarks); + Result.shoulderManual_humerus_landmarks = linspace(nan, nan, 54); + for i=1:Result.shoulderManual_humerus_landmarks_size_rows * Result.shoulderManual_humerus_landmarks_size_cols + landmarkElements = obj.shoulderManual.humerus.landmarks(:)'; + Result.shoulderManual_humerus_landmarks(i) = landmarkElements(i); + end + if isempty(obj.shoulderManual.humerus.center) + Result.shoulderManual_humerus_center = [nan, nan, nan]; + Result.shoulderManual_humerus_radius = nan; + else + Result.shoulderManual_humerus_center = obj.shoulderManual.humerus.center; + Result.shoulderManual_humerus_radius = obj.shoulderManual.humerus.radius; + end + + if isempty(obj.shoulderManual.humerus.jointRadius) + Result.shoulderManual_humerus_jointRadius = nan; + else + Result.shoulderManual_humerus_jointRadius = obj.shoulderManual.humerus.jointRadius; + end + if isempty(obj.shoulderManual.humerus.SHSAngle) + Result.shoulderManual_humerus_SHSAngle = nan; + Result.shoulderManual_humerus_SHSPA = nan; + Result.shoulderManual_humerus_SHSIS = nan; + Result.shoulderManual_humerus_SHSAmpl = nan; + Result.shoulderManual_humerus_SHSOrient = nan; + Result.shoulderManual_humerus_GHSAmpl = nan; + Result.shoulderManual_humerus_GHSOrient = nan; + else + Result.shoulderManual_humerus_SHSAngle = obj.shoulderManual.humerus.SHSAngle; + Result.shoulderManual_humerus_SHSPA = obj.shoulderManual.humerus.SHSPA; + Result.shoulderManual_humerus_SHSIS = obj.shoulderManual.humerus.SHSIS; + Result.shoulderManual_humerus_SHSAmpl = obj.shoulderManual.humerus.SHSAmpl; + Result.shoulderManual_humerus_SHSOrient = obj.shoulderManual.humerus.SHSOrient; + Result.shoulderManual_humerus_GHSAmpl = obj.shoulderManual.humerus.GHSAmpl; + Result.shoulderManual_humerus_GHSOrient = obj.shoulderManual.humerus.GHSOrient; + end + if isempty(obj.shoulderManual.muscles.list) + Result.shoulderManual_muscles_IS_segmentationSet = 'empty'; + Result.shoulderManual_muscles_IS_sliceName = 'empty'; + Result.shoulderManual_muscles_IS_PCSA = "empty"; + Result.shoulderManual_muscles_IS_atrophy = "empty"; + Result.shoulderManual_muscles_IS_fat = "empty"; + Result.shoulderManual_muscles_IS_osteochondroma = "empty"; + Result.shoulderManual_muscles_IS_degeneration = "empty"; + Result.shoulderManual_muscles_SS_segmentationSet = {'nan'}; + Result.shoulderManual_muscles_SS_sliceName = {'nan'}; + Result.shoulderManual_muscles_SS_PCSA = "empty"; + Result.shoulderManual_muscles_SS_atrophy = "empty"; + Result.shoulderManual_muscles_SS_fat = "empty"; + Result.shoulderManual_muscles_SS_osteochondroma = "empty"; + Result.shoulderManual_muscles_SS_degeneration = "empty"; + Result.shoulderManual_muscles_SC_segmentationSet = 'empty'; + Result.shoulderManual_muscles_SC_sliceName = 'empty'; + Result.shoulderManual_muscles_SC_PCSA = "empty"; + Result.shoulderManual_muscles_SC_atrophy = "empty"; + Result.shoulderManual_muscles_SC_fat = "empty"; + Result.shoulderManual_muscles_SC_osteochondroma = "empty"; + Result.shoulderManual_muscles_SC_degeneration = "empty"; + Result.shoulderManual_muscles_TM_segmentationSet = 'empty'; + Result.shoulderManual_muscles_TM_sliceName = 'empty'; + Result.shoulderManual_muscles_TM_PCSA = "empty"; + Result.shoulderManual_muscles_TM_atrophy = "empty"; + Result.shoulderManual_muscles_TM_fat = "empty"; + Result.shoulderManual_muscles_TM_osteochondroma = "empty"; + Result.shoulderManual_muscles_TM_degeneration = "empty"; + else + try + Result.shoulderManual_muscles_IS_segmentationSet = obj.shoulderManual.muscles.list.IS.segmentationSet; + Result.shoulderManual_muscles_IS_sliceName = obj.shoulderManual.muscles.list.IS.sliceName; + Result.shoulderManual_muscles_IS_PCSA = obj.shoulderManual.muscles.list.IS.PCSA; + Result.shoulderManual_muscles_IS_atrophy = obj.shoulderManual.muscles.list.IS.atrophy; + Result.shoulderManual_muscles_IS_fat = obj.shoulderManual.muscles.list.IS.fat; + Result.shoulderManual_muscles_IS_osteochondroma = obj.shoulderManual.muscles.list.IS.osteochondroma; + Result.shoulderManual_muscles_IS_degeneration = obj.shoulderManual.muscles.list.IS.degeneration; + Result.shoulderManual_muscles_SS_segmentationSet = obj.shoulderManual.muscles.list.SS.segmentationSet; + Result.shoulderManual_muscles_SS_sliceName = obj.shoulderManual.muscles.list.SS.sliceName; + Result.shoulderManual_muscles_SS_PCSA = obj.shoulderManual.muscles.list.SS.PCSA; + if isempty(obj.shoulderManual.muscles.list.SS.atrophy) + Result.shoulderManual_muscles_SS_atrophy = nan; + else + Result.shoulderManual_muscles_SS_atrophy = obj.shoulderManual.muscles.list.SS.atrophy; + end + if isempty(obj.shoulderManual.muscles.list.SS.fat) + Result.shoulderManual_muscles_SS_fat = nan; + else + Result.shoulderManual_muscles_SS_fat = obj.shoulderManual.muscles.list.SS.fat; + end + if isempty(obj.shoulderManual.muscles.list.SS.osteochondroma) + Result.shoulderManual_muscles_SS_osteochondroma = nan; + else + Result.shoulderManual_muscles_SS_osteochondroma = obj.shoulderManual.muscles.list.SS.osteochondroma; + end + if isempty(obj.shoulderManual.muscles.list.SS.degeneration) + Result.shoulderManual_muscles_SS_degeneration = nan; + else + Result.shoulderManual_muscles_SS_degeneration = obj.shoulderManual.muscles.list.SS.degeneration; + end + Result.shoulderManual_muscles_SC_segmentationSet = obj.shoulderManual.muscles.list.SC.segmentationSet; + Result.shoulderManual_muscles_SC_sliceName = obj.shoulderManual.muscles.list.SC.sliceName; + Result.shoulderManual_muscles_SC_PCSA = obj.shoulderManual.muscles.list.SC.PCSA; + Result.shoulderManual_muscles_SC_atrophy = obj.shoulderManual.muscles.list.SC.atrophy; + Result.shoulderManual_muscles_SC_fat = obj.shoulderManual.muscles.list.SC.fat; + Result.shoulderManual_muscles_SC_osteochondroma = obj.shoulderManual.muscles.list.SC.osteochondroma; + Result.shoulderManual_muscles_SC_degeneration = obj.shoulderManual.muscles.list.SC.degeneration; + Result.shoulderManual_muscles_TM_segmentationSet = obj.shoulderManual.muscles.list.TM.segmentationSet; + Result.shoulderManual_muscles_TM_sliceName = obj.shoulderManual.muscles.list.TM.sliceName; + Result.shoulderManual_muscles_TM_PCSA = obj.shoulderManual.muscles.list.TM.PCSA; + if isempty(obj.shoulderManual.muscles.list.TM.atrophy) + Result.shoulderManual_muscles_TM_atrophy = nan; + else + Result.shoulderManual_muscles_TM_atrophy = obj.shoulderManual.muscles.list.TM.atrophy; + end + if isempty(obj.shoulderManual.muscles.list.TM.fat) + Result.shoulderManual_muscles_TM_fat = nan; + else + Result.shoulderManual_muscles_TM_fat = obj.shoulderManual.muscles.list.TM.fat; + end + if isempty(obj.shoulderManual.muscles.list.TM.osteochondroma) + Result.shoulderManual_muscles_TM_osteochondroma = nan; + else + Result.shoulderManual_muscles_TM_osteochondroma = obj.shoulderManual.muscles.list.TM.osteochondroma; + end + if isempty(obj.shoulderManual.muscles.list.TM.degeneration) + Result.shoulderManual_muscles_TM_degeneration = nan; + else + Result.shoulderManual_muscles_TM_degeneration = obj.shoulderManual.muscles.list.TM.degeneration; + end + catch + Result.shoulderManual_muscles_IS_segmentationSet = 0; + Result.shoulderManual_muscles_IS_sliceName = 0; + Result.shoulderManual_muscles_IS_PCSA = 0; + Result.shoulderManual_muscles_IS_atrophy = 0; + Result.shoulderManual_muscles_IS_fat = 0; + Result.shoulderManual_muscles_IS_osteochondroma = 0; + Result.shoulderManual_muscles_IS_degeneration = 0; + Result.shoulderManual_muscles_SS_segmentationSet = 0; + Result.shoulderManual_muscles_SS_sliceName = 0; + Result.shoulderManual_muscles_SS_PCSA = 0; + Result.shoulderManual_muscles_SS_atrophy = 0; + Result.shoulderManual_muscles_SS_fat = 0; + Result.shoulderManual_muscles_SS_osteochondroma = 0; + Result.shoulderManual_muscles_SS_degeneration = 0; + Result.shoulderManual_muscles_SC_segmentationSet = 0; + Result.shoulderManual_muscles_SC_sliceName = 0; + Result.shoulderManual_muscles_SC_PCSA = 0; + Result.shoulderManual_muscles_SC_atrophy = 0; + Result.shoulderManual_muscles_SC_fat = 0; + Result.shoulderManual_muscles_SC_osteochondroma = 0; + Result.shoulderManual_muscles_SC_degeneration = 0; + Result.shoulderManual_muscles_TM_segmentationSet = 0; + Result.shoulderManual_muscles_TM_sliceName = 0; + Result.shoulderManual_muscles_TM_PCSA = 0; + Result.shoulderManual_muscles_TM_atrophy = 0; + Result.shoulderManual_muscles_TM_fat = 0; + Result.shoulderManual_muscles_TM_osteochondroma = 0; + Result.shoulderManual_muscles_TM_degeneration = 0; + end + end Result.shoulderManual_CTscan = obj.shoulderManual.CTscan; Result.shoulderManual_comment = obj.shoulderManual.comment; % shoulderAuto Result.shoulderAuto_side = obj.shoulderAuto().side; - Result.shoulderAuto_scapula_angulusInferior = obj.shoulderAuto().scapula.angulusInferior; - Result.shoulderAuto_scapula_angulusInferiorLocal = obj.shoulderAuto().scapula.angulusInferiorLocal; - Result.shoulderAuto_scapula_trigonumSpinae = obj.shoulderAuto().scapula.trigonumSpinae; - Result.shoulderAuto_scapula_processusCoracoideus = obj.shoulderAuto().scapula.processusCoracoideus; - Result.shoulderAuto_scapula_acromioClavicular = obj.shoulderAuto().scapula.acromioClavicular; - Result.shoulderAuto_scapula_angulusAcromialis = obj.shoulderAuto().scapula.angulusAcromialis; - Result.shoulderAuto_scapula_spinoGlenoidNotch = obj.shoulderAuto().scapula.spinoGlenoidNotch; - Result.shoulderAuto_scapula_pillars_5_3_cols = obj.shoulderAuto.scapula.pillar(:)'; - Result.shoulderAuto_scapula_groove_5_3_cols = obj.shoulderAuto.scapula.groove(:)'; - Result.shoulderAuto_scapula_coordSys_ML = obj.shoulderAuto.scapula.coordSys.ML; - Result.shoulderAuto_scapula_coordSys_PA = obj.shoulderAuto.scapula.coordSys.PA; - Result.shoulderAuto_scapula_coordSys_IS = obj.shoulderAuto.scapula.coordSys.IS; - Result.shoulderAuto_scapula_coordSys_origin = obj.shoulderAuto.scapula.coordSys.origin; - Result.shoulderAuto_scapula_plane_normal = obj.shoulderAuto.scapula.plane.normal; - Result.shoulderAuto_scapula_plane_point = obj.shoulderAuto.scapula.plane.point; - Result.shoulderAuto_scapula_plane_fitPerformance_points_3_3_cols = obj.shoulderAuto.scapula.plane.fitPerformance.points(:)'; - Result.shoulderAuto_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderAuto.scapula.plane.fitPerformance.residuals(:)'; - Result.shoulderAuto_scapula_plane_fitPerformance_residuals_3_3_cols = obj.shoulderAuto.scapula.plane.fitPerformance.residuals(:)'; - Result.shoulderAuto_scapula_plane_fitPerformance_RMSE = obj.shoulderAuto.scapula.plane.fitPerformance.RMSE; - Result.shoulderAuto_scapula_plane_fitPerformance_R2 = obj.shoulderAuto.scapula.plane.fitPerformance.R2; + if isempty(obj.shoulderAuto().scapula.angulusInferior) + Result.shoulderAuto_scapula_angulusInferior = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_angulusInferior = obj.shoulderAuto().scapula.angulusInferior; + end + if isempty(obj.shoulderAuto().scapula.angulusInferiorLocal) + Result.shoulderAuto_scapula_angulusInferiorLocal = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_angulusInferiorLocal = obj.shoulderAuto().scapula.angulusInferiorLocal; + end + if isempty(obj.shoulderAuto().scapula.trigonumSpinae) + Result.shoulderAuto_scapula_trigonumSpinae = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_trigonumSpinae = obj.shoulderAuto().scapula.trigonumSpinae; + end + if isempty(obj.shoulderAuto().scapula.processusCoracoideus) + Result.shoulderAuto_scapula_processusCoracoideus = [nan, nan, nan]; + Result.shoulderAuto_scapula_acromioClavicular = [nan, nan, nan]; + Result.shoulderAuto_scapula_angulusAcromialis = [nan, nan, nan]; + Result.shoulderAuto_scapula_spinoGlenoidNotch = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_processusCoracoideus = obj.shoulderAuto.scapula.processusCoracoideus; + Result.shoulderAuto_scapula_acromioClavicular = obj.shoulderAuto.scapula.acromioClavicular; + Result.shoulderAuto_scapula_angulusAcromialis = obj.shoulderAuto.scapula.angulusAcromialis; + Result.shoulderAuto_scapula_spinoGlenoidNotch = obj.shoulderAuto.scapula.spinoGlenoidNotch; + end + %Result.shoulderAuto_scapula_processusCoracoideus = obj.shoulderAuto().scapula.processusCoracoideus; + + %Result.shoulderAuto_scapula_pillars_5_3_cols = obj.shoulderAuto.scapula.pillar(:)'; + [Result.shoulderAuto_scapula_pillar_rows, Result.shoulderAuto_scapula_pillar_cols] ... + = size(obj.shoulderAuto.scapula.pillar); + Result.shoulderAuto_scapula_pillar = zeros(1, 21); + for i=1:Result.shoulderAuto_scapula_pillar_rows * Result.shoulderAuto_scapula_pillar_cols + pillarElements = obj.shoulderAuto.scapula.pillar(:)'; + Result.shoulderAuto_scapula_pillar(i) = pillarElements(i); + end + [Result.shoulderAuto_scapula_groove_rows, Result.shoulderAuto_scapula_groove_cols] ... + = size(obj.shoulderAuto.scapula.groove); + Result.shoulderAuto_scapula_groove = zeros(1, 15); + for i=1:Result.shoulderAuto_scapula_groove_rows * Result.shoulderAuto_scapula_groove_cols + grooveElements = obj.shoulderAuto.scapula.groove(:)'; + Result.shoulderAuto_scapula_groove(i) = grooveElements(i); + end + if isempty(obj.shoulderAuto.scapula.coordSys.ML) + Result.shoulderAuto_scapula_coordSys_ML = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_coordSys_ML = obj.shoulderAuto.scapula.coordSys.ML; + end + if isempty(obj.shoulderAuto.scapula.coordSys.PA) + Result.shoulderAuto_scapula_coordSys_PA = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_coordSys_PA = obj.shoulderAuto.scapula.coordSys.PA; + end + if isempty(obj.shoulderAuto.scapula.coordSys.IS) + Result.shoulderAuto_scapula_coordSys_IS = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_coordSys_IS= obj.shoulderAuto.scapula.coordSys.IS; + end + if isempty(obj.shoulderAuto.scapula.coordSys.origin) + Result.shoulderAuto_scapula_coordSys_origin = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_coordSys_origin = obj.shoulderAuto.scapula.coordSys.origin; + end + if isempty(obj.shoulderAuto.scapula.plane.normal) + Result.shoulderAuto_scapula_plane_normal = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_plane_normal = obj.shoulderAuto.scapula.plane.normal; + end + if isempty(obj.shoulderAuto.scapula.plane.point) + Result.shoulderAuto_scapula_plane_point = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_plane_point = obj.shoulderAuto.scapula.plane.point; + end + if isempty(obj.shoulderAuto.scapula.plane.fitPerformance.points) + Result.shoulderAuto_scapula_plane_fitPerformance_points = linspace(nan, nan, 9); + Result.shoulderAuto_scapula_plane_fitPerformance_residuals = linspace(nan, nan, 9); + Result.shoulderAuto_scapula_plane_fitPerformance_RMSE = nan; + Result.shoulderAuto_scapula_plane_fitPerformance_R2 = nan; + else + Result.shoulderAuto_scapula_plane_fitPerformance_points = obj.shoulderAuto.scapula.plane.fitPerformance.points(:)'; + Result.shoulderAuto_scapula_plane_fitPerformance_residuals = obj.shoulderAuto.scapula.plane.fitPerformance.residuals(:)'; + Result.shoulderAuto_scapula_plane_fitPerformance_RMSE = obj.shoulderAuto.scapula.plane.fitPerformance.RMSE; + Result.shoulderAuto_scapula_plane_fitPerformance_R2 = obj.shoulderAuto.scapula.plane.fitPerformance.R2; + end + if isempty(obj.shoulderAuto.scapula.plane.normal) + Result.shoulderAuto_scapula_plane_point = [nan, nan, nan]; + else + Result.shoulderAuto_scapula_plane_point = obj.shoulderAuto.scapula.plane.point; + end Result.shoulderAuto_scapula_segmentation = obj.shoulderAuto.scapula.segmentation; - Result.shoulderAuto_scapula_surface = obj.shoulderAuto.scapula.surface; %(3001*3) Result.shoulderAuto_scapula_glenoid_surface_points = obj.shoulderAuto.scapula.surface.points %Result.shoulderAuto_scapula_glenoid_surface_meanPoint = obj.shoulderAuto.scapula.glenoid.surface.meanPoint; %(5881*3) Result.shoulderAuto_scapula_glenoid_surface_faces = obj.shoulderAuto.scapula.surface.faces - Result.shoulderAuto_scapula_glenoid_center = obj.shoulderAuto.scapula.glenoid.center; - Result.shoulderAuto_scapula_glenoid_centerLocal_x = obj.shoulderAuto.scapula.glenoid.centerLocal.x; - Result.shoulderAuto_scapula_glenoid_centerLocal_y = obj.shoulderAuto.scapula.glenoid.centerLocal.y; - Result.shoulderAuto_scapula_glenoid_centerLocal_z = obj.shoulderAuto.scapula.glenoid.centerLocal.z; - Result.shoulderAuto_scapula_glenoid_radius = obj.shoulderAuto.scapula.glenoid.radius; - Result.shoulderAuto_scapula_glenoid_centerLine = obj.shoulderAuto.scapula.glenoid.centerLine; - Result.shoulderAuto_scapula_glenoid_depth = obj.shoulderAuto.scapula.glenoid.depth; - Result.shoulderAuto_scapula_glenoid_width = obj.shoulderAuto.scapula.glenoid.width; - Result.shoulderAuto_scapula_glenoid_height = obj.shoulderAuto.scapula.glenoid.height; - Result.shoulderAuto_scapula_glenoid_anteroSuperiorAngle = obj.shoulderAuto.scapula.glenoid.anteroSuperiorAngle; - Result.shoulderAuto_scapula_glenoid_versionAmplitude = obj.shoulderAuto.scapula.glenoid.versionAmplitude; - Result.shoulderAuto_scapula_glenoid_versionOrientation = obj.shoulderAuto.scapula.glenoid.versionOrientation; - Result.shoulderAuto_scapula_glenoid_version = obj.shoulderAuto.scapula.glenoid.version; - Result.shoulderAuto_scapula_glenoid_inclination = obj.shoulderAuto.scapula.glenoid.inclination; - Result.shoulderAuto_scapula_glenoid_density = obj.shoulderAuto.scapula.glenoid.density; - Result.shoulderAuto_scapula_glenoid_comment = obj.shoulderAuto.scapula.glenoid.comment; - Result.shoulderAuto_scapula_glenoid_fittedSphere_center = ... - obj.shoulderAuto.scapula.glenoid.fittedSphere.center; - Result.shoulderAuto_scapula_glenoid_fittedSphere_radius = ... - obj.shoulderAuto.scapula.glenoid.fittedSphere.center; -% Result.shoulderAuto_scapula_glenoid_fittedSphere_residuals = ... -% obj.shoulderAuto.scapula.glenoid.fittedSphere.residuals'; - Result.shoulderAuto_scapula_glenoid_fittedSphere_R2 = ... - obj.shoulderAuto.scapula.glenoid.fittedSphere.R2; - Result.shoulderAuto_scapula_glenoid_fittedSphere_RMSE = ... - obj.shoulderAuto.scapula.glenoid.fittedSphere.RMSE; - Result.shoulderAuto_scapula_glenoid_walch = obj.shoulderAuto.scapula.glenoid.walch; - Result.shoulderAuto_scapula_acromion_AI = obj.shoulderAuto.scapula.acromion.AI; - Result.shoulderAuto_scapula_acromion_CSA = obj.shoulderAuto.scapula.acromion.CSA; - Result.shoulderAuto_scapula_acromion_PSA = obj.shoulderAuto.scapula.acromion.PSA; - Result.shoulderAuto_scapula_acromion_PSL = obj.shoulderAuto.scapula.acromion.PSL; - Result.shoulderAuto_scapula_acromion_AAA = obj.shoulderAuto.scapula.acromion.AAA; - Result.shoulderAuto_scapula_acromion_AAL = obj.shoulderAuto.scapula.acromion.AAL; - Result.shoulderAuto_scapula_acromion_AAx = obj.shoulderAuto.scapula.acromion.AAx; - Result.shoulderAuto_scapula_acromion_AAy = obj.shoulderAuto.scapula.acromion.AAy; - Result.shoulderAuto_scapula_acromion_AAz = obj.shoulderAuto.scapula.acromion.AAz; - Result.shoulderAuto_scapula_acromion_ACx = obj.shoulderAuto.scapula.acromion.ACx; - Result.shoulderAuto_scapula_acromion_ACy = obj.shoulderAuto.scapula.acromion.ACy; - Result.shoulderAuto_scapula_acromion_ACz = obj.shoulderAuto.scapula.acromion.ACz; - Result.shoulderAuto_humerus_landmarks = obj.shoulderAuto.humerus.landmarks(:)'; - Result.shoulderAuto_humerus_center = obj.shoulderAuto.scapula.glenoid.center; - Result.shoulderAuto_humerus_radius = obj.shoulderAuto.scapula.glenoid.radius; - Result.shoulderAuto_humerus_jointRadius = obj.shoulderAuto.humerus.jointRadius; - Result.shoulderAuto_humerus_SHSAngle = obj.shoulderAuto.humerus.SHSAngle; - Result.shoulderAuto_humerus_SHSPA = obj.shoulderAuto.humerus.SHSPA; - Result.shoulderAuto_humerus_SHSIS = obj.shoulderAuto.humerus.SHSIS; - Result.shoulderAuto_humerus_SHSAmpl = obj.shoulderAuto.humerus.SHSAmpl; - Result.shoulderAuto_humerus_SHSOrient = obj.shoulderAuto.humerus.SHSOrient; - Result.shoulderAuto_humerus_GHSAmpl = obj.shoulderAuto.humerus.GHSAmpl; - Result.shoulderAuto_humerus_GHSOrient = obj.shoulderAuto.humerus.GHSOrient; - Result.shoulderAuto_humerus_GHSAmpl = obj.shoulderAuto.humerus.GHSAmpl; - + if isempty(obj.shoulderAuto.scapula.glenoid.center) + Result.shoulderAuto_scapula_glenoid_center = [nan, nan, nan]; + Result.shoulderAuto_scapula_glenoid_centerLocal_x = nan; + Result.shoulderAuto_scapula_glenoid_centerLocal_y = nan; + Result.shoulderAuto_scapula_glenoid_centerLocal_z = nan; + Result.shoulderAuto_scapula_glenoid_radius = nan; + Result.shoulderAuto_scapula_glenoid_centerLine = [nan, nan, nan]; + Result.shoulderAuto_scapula_glenoid_depth = nan; + Result.shoulderAuto_scapula_glenoid_width = nan; + Result.shoulderAuto_scapula_glenoid_height = nan; + Result.shoulderAuto_scapula_glenoid_anteroSuperiorAngle = nan; + Result.shoulderAuto_scapula_glenoid_versionAmplitude = nan; + Result.shoulderAuto_scapula_glenoid_versionOrientation = nan; + Result.shoulderAuto_scapula_glenoid_version = nan; + Result.shoulderAuto_scapula_glenoid_inclination = nan; + %Result.shoulderAuto_scapula_glenoid_density = [nan, nan, nan, nan, nan, nan]; + + else + Result.shoulderAuto_scapula_glenoid_center = obj.shoulderAuto.scapula.glenoid.center; + Result.shoulderAuto_scapula_glenoid_centerLocal_x = obj.shoulderAuto.scapula.glenoid.centerLocal.x; + Result.shoulderAuto_scapula_glenoid_centerLocal_y = obj.shoulderAuto.scapula.glenoid.centerLocal.y; + Result.shoulderAuto_scapula_glenoid_centerLocal_z = obj.shoulderAuto.scapula.glenoid.centerLocal.z; + Result.shoulderAuto_scapula_glenoid_radius = obj.shoulderAuto.scapula.glenoid.radius; + Result.shoulderAuto_scapula_glenoid_centerLine = obj.shoulderAuto.scapula.glenoid.centerLine; + Result.shoulderAuto_scapula_glenoid_depth = obj.shoulderAuto.scapula.glenoid.depth; + Result.shoulderAuto_scapula_glenoid_width = obj.shoulderAuto.scapula.glenoid.width; + Result.shoulderAuto_scapula_glenoid_height = obj.shoulderAuto.scapula.glenoid.height; + Result.shoulderAuto_scapula_glenoid_anteroSuperiorAngle = obj.shoulderAuto.scapula.glenoid.anteroSuperiorAngle; + Result.shoulderAuto_scapula_glenoid_versionAmplitude = obj.shoulderAuto.scapula.glenoid.versionAmplitude; + Result.shoulderAuto_scapula_glenoid_versionOrientation = obj.shoulderAuto.scapula.glenoid.versionOrientation; + Result.shoulderAuto_scapula_glenoid_version = obj.shoulderAuto.scapula.glenoid.version; + Result.shoulderAuto_scapula_glenoid_inclination = obj.shoulderAuto.scapula.glenoid.inclination; + + end + Result.shoulderAuto_scapula_glenoid_density_size = size(obj.shoulderAuto.scapula.glenoid.density); + for i=1:Result.shoulderAuto_scapula_glenoid_density_size + glenoidElements = obj.shoulderAuto.scapula.glenoid.density(:); + Result.shoulderAuto_scapula_glenoid_density(i) = glenoidElements(i); + end + if isempty(obj.shoulderAuto.scapula.glenoid.comment) + Result.shoulderAuto_scapula_glenoid_comment = nan; + else + Result.shoulderAuto_scapula_glenoid_comment = obj.shoulderAuto.scapula.glenoid.comment; + end + if isempty(obj.shoulderAuto.scapula.glenoid.fittedSphere.center) + Result.shoulderAuto_scapula_glenoid_fittedSphere_center = [nan, nan, nan]; + Result.shoulderAuto_scapula_glenoid_fittedSphere_radius = nan; + Result.shoulderAuto_scapula_glenoid_fittedSphere_R2 = nan; + Result.shoulderAuto_scapula_glenoid_fittedSphere_RMSE = nan; + else + Result.shoulderAuto_scapula_glenoid_fittedSphere_center = ... + obj.shoulderAuto.scapula.glenoid.fittedSphere.center; + Result.shoulderAuto_scapula_glenoid_fittedSphere_radius = ... + obj.shoulderAuto.scapula.glenoid.fittedSphere.radius; +% Result.shoulderAuto_scapula_glenoid_fittedSphere_residuals = ... +% obj.shoulderAuto.scapula.glenoid.fittedSphere.residuals'; + Result.shoulderAuto_scapula_glenoid_fittedSphere_R2 = ... + obj.shoulderAuto.scapula.glenoid.fittedSphere.R2; + Result.shoulderAuto_scapula_glenoid_fittedSphere_RMSE = ... + obj.shoulderAuto.scapula.glenoid.fittedSphere.RMSE; + end + + %Result.shoulderAuto_scapula_glenoid_walch = obj.shoulderAuto.scapula.glenoid.walch; + if isempty(obj.shoulderAuto.scapula.glenoid.walch) + Result.shoulderAuto_scapula_glenoid_walch = 'empty'; + elseif isnan(obj.shoulderAuto.scapula.glenoid.walch) + Result.shoulderAuto_scapula_glenoid_walch = 'nan'; + else + Result.shoulderAuto_scapula_glenoid_walch = obj.shoulderAuto.scapula.glenoid.walch; + end + if isempty(obj.shoulderAuto.scapula.acromion.AI) + Result.shoulderAuto_scapula_acromion_AI = nan; + Result.shoulderAuto_scapula_acromion_CSA = nan; + Result.shoulderAuto_scapula_acromion_PSA = nan; + Result.shoulderAuto_scapula_acromion_PSL = nan; + Result.shoulderAuto_scapula_acromion_AAA = nan; + Result.shoulderAuto_scapula_acromion_AAL = nan; + Result.shoulderAuto_scapula_acromion_AAx = nan; + Result.shoulderAuto_scapula_acromion_AAy = nan; + Result.shoulderAuto_scapula_acromion_AAz = nan; + Result.shoulderAuto_scapula_acromion_ACx = nan; + Result.shoulderAuto_scapula_acromion_ACy = nan; + Result.shoulderAuto_scapula_acromion_ACz = nan; + else + Result.shoulderAuto_scapula_acromion_AI = obj.shoulderAuto.scapula.acromion.AI; + Result.shoulderAuto_scapula_acromion_CSA = obj.shoulderAuto.scapula.acromion.CSA; + Result.shoulderAuto_scapula_acromion_PSA = obj.shoulderAuto.scapula.acromion.PSA; + Result.shoulderAuto_scapula_acromion_PSL = obj.shoulderAuto.scapula.acromion.PSL; + Result.shoulderAuto_scapula_acromion_AAA = obj.shoulderAuto.scapula.acromion.AAA; + Result.shoulderAuto_scapula_acromion_AAL = obj.shoulderAuto.scapula.acromion.AAL; + Result.shoulderAuto_scapula_acromion_AAx = obj.shoulderAuto.scapula.acromion.AAx; + Result.shoulderAuto_scapula_acromion_AAy = obj.shoulderAuto.scapula.acromion.AAy; + Result.shoulderAuto_scapula_acromion_AAz = obj.shoulderAuto.scapula.acromion.AAz; + Result.shoulderAuto_scapula_acromion_ACx = obj.shoulderAuto.scapula.acromion.ACx; + Result.shoulderAuto_scapula_acromion_ACy = obj.shoulderAuto.scapula.acromion.ACy; + Result.shoulderAuto_scapula_acromion_ACz = obj.shoulderAuto.scapula.acromion.ACz; + end + [Result.shoulderAuto_humerus_landmarks_size_rows, Result.shoulderAuto_humerus_landmarks_size_cols] ... + = size(obj.shoulderAuto.humerus.landmarks); + Result.shoulderAuto_humerus_landmarks = linspace(nan, nan, 54); + for i=1:Result.shoulderAuto_humerus_landmarks_size_rows * Result.shoulderAuto_humerus_landmarks_size_cols + landmarkElements = obj.shoulderAuto.humerus.landmarks(:)'; + Result.shoulderAuto_humerus_landmarks(i) = landmarkElements(i); + end + if isempty(obj.shoulderAuto.scapula.glenoid.center) + Result.shoulderAuto_humerus_center = [nan, nan, nan]; + Result.shoulderAuto_humerus_radius = nan; + else + Result.shoulderAuto_humerus_center = obj.shoulderAuto.scapula.glenoid.center; + Result.shoulderAuto_humerus_radius = obj.shoulderAuto.scapula.glenoid.radius; + end + if isempty(obj.shoulderAuto.scapula.glenoid.comment) + Result.shoulderAuto_humerus_jointRadius = nan; + else + Result.shoulderAuto_humerus_jointRadius = obj.shoulderAuto.scapula.glenoid.comment; + end + if isempty(obj.shoulderAuto.humerus.SHSAngle) + Result.shoulderAuto_humerus_SHSAngle = nan; + Result.shoulderAuto_humerus_SHSPA = nan; + Result.shoulderAuto_humerus_SHSIS = nan; + Result.shoulderAuto_humerus_SHSAmpl = nan; + Result.shoulderAuto_humerus_SHSOrient = nan; + Result.shoulderAuto_humerus_GHSAmpl = nan; + Result.shoulderAuto_humerus_GHSOrient = nan; + Result.shoulderAuto_humerus_GHSAmpl = nan; + else + Result.shoulderAuto_humerus_SHSAngle = obj.shoulderAuto.humerus.SHSAngle; + Result.shoulderAuto_humerus_SHSPA = obj.shoulderAuto.humerus.SHSPA; + Result.shoulderAuto_humerus_SHSIS = obj.shoulderAuto.humerus.SHSIS; + Result.shoulderAuto_humerus_SHSAmpl = obj.shoulderAuto.humerus.SHSAmpl; + Result.shoulderAuto_humerus_SHSOrient = obj.shoulderAuto.humerus.SHSOrient; + Result.shoulderAuto_humerus_GHSAmpl = obj.shoulderAuto.humerus.GHSAmpl; + Result.shoulderAuto_humerus_GHSOrient = obj.shoulderAuto.humerus.GHSOrient; + Result.shoulderAuto_humerus_GHSAmpl = obj.shoulderAuto.humerus.GHSAmpl; + end try Result.shoulderAuto_muscles_IS_segmentationSet = obj.shoulderAuto.muscles.list.IS.segmentationSet; Result.shoulderAuto_muscles_IS_sliceName = obj.shoulderAuto.muscles.list.IS.sliceName; Result.shoulderAuto_muscles_IS_PCSA = obj.shoulderAuto.muscles.list.IS.PCSA; - Result.shoulderAuto_muscles_IS_atrophy = obj.shoulderAuto.muscles.list.IS.atrophy; - Result.shoulderAuto_muscles_IS_fat = obj.shoulderAuto.muscles.list.IS.fat; - Result.shoulderAuto_muscles_IS_osteochondroma = obj.shoulderAuto.muscles.list.IS.osteochondroma; - Result.shoulderAuto_muscles_IS_degeneration = obj.shoulderAuto.muscles.list.IS.degeneration; + if isempty(obj.shoulderAuto.muscles.list.IS.atrophy) + Result.shoulderAuto_muscles_IS_atrophy = nan; + else + Result.shoulderAuto_muscles_IS_atrophy = obj.shoulderAuto.muscles.list.IS.atrophy; + end + if isempty(obj.shoulderAuto.muscles.list.IS.fat) + Result.shoulderAuto_muscles_IS_fat = nan; + else + Result.shoulderAuto_muscles_IS_fat = obj.shoulderAuto.muscles.list.IS.fat; + end + if isempty(obj.shoulderAuto.muscles.list.IS.osteochondroma) + Result.shoulderAuto_muscles_IS_osteochondroma = nan; + else + Result.shoulderAuto_muscles_IS_osteochondroma = obj.shoulderAuto.muscles.list.IS.osteochondroma; + end + if isempty(obj.shoulderAuto.muscles.list.IS.degeneration) + Result.shoulderAuto_muscles_IS_degeneration = nan; + else + Result.shoulderAuto_muscles_IS_degeneration = obj.shoulderAuto.muscles.list.IS.degeneration; + end Result.shoulderAuto_muscles_SS_segmentationSet = obj.shoulderAuto.muscles.list.SS.segmentationSet; Result.shoulderAuto_muscles_SS_sliceName = obj.shoulderAuto.muscles.list.SS.sliceName; Result.shoulderAuto_muscles_SS_PCSA = obj.shoulderAuto.muscles.list.SS.PCSA; - Result.shoulderAuto_muscles_SS_atrophy = obj.shoulderAuto.muscles.list.SS.atrophy; - Result.shoulderAuto_muscles_SS_fat = obj.shoulderAuto.muscles.list.SS.fat; - Result.shoulderAuto_muscles_SS_osteochondroma = obj.shoulderAuto.muscles.list.SS.osteochondroma; - Result.shoulderAuto_muscles_SS_degeneration = obj.shoulderAuto.muscles.list.SS.degeneration; + if isempty(obj.shoulderAuto.muscles.list.SS.atrophy) + Result.shoulderAuto_muscles_SS_atrophy = nan; + else + Result.shoulderAuto_muscles_SS_atrophy = obj.shoulderAuto.muscles.list.SS.atrophy; + end + if isempty(obj.shoulderAuto.muscles.list.SS.fat) + Result.shoulderAuto_muscles_SS_fat = nan; + else + Result.shoulderAuto_muscles_SS_fat = obj.shoulderAuto.muscles.list.SS.fat; + end + if isempty(obj.shoulderAuto.muscles.list.SS.osteochondroma) + Result.shoulderAuto_muscles_SS_osteochondroma = nan; + else + Result.shoulderAuto_muscles_SS_osteochondroma = obj.shoulderAuto.muscles.list.SS.osteochondroma; + end + if isempty(obj.shoulderAuto.muscles.list.SS.degeneration) + Result.shoulderAuto_muscles_SS_degeneration = nan; + else + Result.shoulderAuto_muscles_SS_degeneration = obj.shoulderAuto.muscles.list.SS.degeneration; + end Result.shoulderAuto_muscles_SC_segmentationSet = obj.shoulderAuto.muscles.list.SC.segmentationSet; Result.shoulderAuto_muscles_SC_sliceName = obj.shoulderAuto.muscles.list.SC.sliceName; Result.shoulderAuto_muscles_SC_PCSA = obj.shoulderAuto.muscles.list.SC.PCSA; - Result.shoulderAuto_muscles_SC_atrophy = obj.shoulderAuto.muscles.list.SC.atrophy; - Result.shoulderAuto_muscles_SC_fat = obj.shoulderAuto.muscles.list.SC.fat; - Result.shoulderAuto_muscles_SC_osteochondroma = obj.shoulderAuto.muscles.list.SC.osteochondroma; - Result.shoulderAuto_muscles_SC_degeneration = obj.shoulderAuto.muscles.list.SC.degeneration; + if isempty(obj.shoulderAuto.muscles.list.SC.atrophy) + Result.shoulderAuto_muscles_SC_atrophy = nan; + else + Result.shoulderAuto_muscles_SC_atrophy = obj.shoulderAuto.muscles.list.SC.atrophy; + end + if isempty(obj.shoulderAuto.muscles.list.SC.fat) + Result.shoulderAuto_muscles_SC_fat = nan; + else + Result.shoulderAuto_muscles_SC_fat = obj.shoulderAuto.muscles.list.SC.fat; + end + if isempty(obj.shoulderAuto.muscles.list.SC.osteochondroma) + Result.shoulderAuto_muscles_SC_osteochondroma = nan; + else + Result.shoulderAuto_muscles_SC_osteochondroma = obj.shoulderAuto.muscles.list.SC.osteochondroma; + end + if isempty(obj.shoulderAuto.muscles.list.SC.degeneration) + Result.shoulderAuto_muscles_SC_degeneration = nan; + else + Result.shoulderAuto_muscles_SC_degeneration = obj.shoulderAuto.muscles.list.SC.degeneration; + end Result.shoulderAuto_muscles_TM_segmentationSet = obj.shoulderAuto.muscles.list.TM.segmentationSet; Result.shoulderAuto_muscles_TM_sliceName = obj.shoulderAuto.muscles.list.TM.sliceName; Result.shoulderAuto_muscles_TM_PCSA = obj.shoulderAuto.muscles.list.TM.PCSA; - Result.shoulderAuto_muscles_TM_atrophy = obj.shoulderAuto.muscles.list.TM.atrophy; - Result.shoulderAuto_muscles_TM_fat = obj.shoulderAuto.muscles.list.TM.fat; - Result.shoulderAuto_muscles_TM_osteochondroma = obj.shoulderAuto.muscles.list.TM.osteochondroma; - Result.shoulderAuto_muscles_TM_degeneration = obj.shoulderAuto.muscles.list.TM.degeneration; + if isempty(obj.shoulderAuto.muscles.list.TM.atrophy) + Result.shoulderAuto_muscles_TM_atrophy = nan; + else + Result.shoulderAuto_muscles_TM_atrophy = obj.shoulderAuto.muscles.list.TM.atrophy; + end + if isempty(obj.shoulderAuto.muscles.list.TM.fat) + Result.shoulderAuto_muscles_TM_fat = nan; + else + Result.shoulderAuto_muscles_TM_fat = obj.shoulderAuto.muscles.list.TM.fat; + end + if isempty(obj.shoulderAuto.muscles.list.TM.osteochondroma) + Result.shoulderAuto_muscles_TM_osteochondroma = nan; + else + Result.shoulderAuto_muscles_TM_osteochondroma = obj.shoulderAuto.muscles.list.TM.osteochondroma; + end + if isempty(obj.shoulderAuto.muscles.list.TM.degeneration) + Result.shoulderAuto_muscles_TM_degeneration = nan; + else + Result.shoulderAuto_muscles_TM_degeneration = obj.shoulderAuto.muscles.list.TM.degeneration; + end catch ME - - Result.shoulderAuto_muscles_IS_segmentationSet = 0; - Result.shoulderAuto_muscles_IS_sliceName = 0; - Result.shoulderAuto_muscles_IS_PCSA = 0; - Result.shoulderAuto_muscles_IS_atrophy = 0; - Result.shoulderAuto_muscles_IS_fat = 0; - Result.shoulderAuto_muscles_IS_osteochondroma = 0; - Result.shoulderAuto_muscles_IS_degeneration = 0; - Result.shoulderAuto_muscles_SS_segmentationSet = 0; - Result.shoulderAuto_muscles_SS_sliceName = 0; - Result.shoulderAuto_muscles_SS_PCSA = 0; - Result.shoulderAuto_muscles_SS_atrophy = 0; - Result.shoulderAuto_muscles_SS_fat = 0; - Result.shoulderAuto_muscles_SS_osteochondroma = 0; - Result.shoulderAuto_muscles_SS_degeneration = 0; - Result.shoulderAuto_muscles_SC_segmentationSet = 0; - Result.shoulderAuto_muscles_SC_sliceName = 0; - Result.shoulderAuto_muscles_SC_PCSA = 0; - Result.shoulderAuto_muscles_SC_atrophy = 0; - Result.shoulderAuto_muscles_SC_fat = 0; - Result.shoulderAuto_muscles_SC_osteochondroma = 0; - Result.shoulderAuto_muscles_SC_degeneration = 0; - Result.shoulderAuto_muscles_TM_segmentationSet = 0; - Result.shoulderAuto_muscles_TM_sliceName = 0; - Result.shoulderAuto_muscles_TM_PCSA = 0; - Result.shoulderAuto_muscles_TM_atrophy = 0; - Result.shoulderAuto_muscles_TM_fat = 0; - Result.shoulderAuto_muscles_TM_osteochondroma = 0; - Result.shoulderAuto_muscles_TM_degeneration = 0; - - end - - + Result.shoulderManual_muscles_IS_segmentationSet = 'empty'; + Result.shoulderManual_muscles_IS_sliceName = 'empty'; + Result.shoulderManual_muscles_IS_PCSA = "empty"; + Result.shoulderManual_muscles_IS_atrophy = "empty"; + Result.shoulderManual_muscles_IS_fat = "empty"; + Result.shoulderManual_muscles_IS_osteochondroma = "empty"; + Result.shoulderManual_muscles_IS_degeneration = "empty"; + Result.shoulderManual_muscles_SS_segmentationSet = {'nan'}; + Result.shoulderManual_muscles_SS_sliceName = {'nan'}; + Result.shoulderManual_muscles_SS_PCSA = "empty"; + Result.shoulderManual_muscles_SS_atrophy = "empty"; + Result.shoulderManual_muscles_SS_fat = "empty"; + Result.shoulderManual_muscles_SS_osteochondroma = "empty"; + Result.shoulderManual_muscles_SS_degeneration = "empty"; + Result.shoulderManual_muscles_SC_segmentationSet = 'empty'; + Result.shoulderManual_muscles_SC_sliceName = 'empty'; + Result.shoulderManual_muscles_SC_PCSA = "empty"; + Result.shoulderManual_muscles_SC_atrophy = "empty"; + Result.shoulderManual_muscles_SC_fat = "empty"; + Result.shoulderManual_muscles_SC_osteochondroma = "empty"; + Result.shoulderManual_muscles_SC_degeneration = "empty"; + Result.shoulderManual_muscles_TM_segmentationSet = 'empty'; + Result.shoulderManual_muscles_TM_sliceName = 'empty'; + Result.shoulderManual_muscles_TM_PCSA = "empty"; + Result.shoulderManual_muscles_TM_atrophy = "empty"; + Result.shoulderManual_muscles_TM_fat = "empty"; + Result.shoulderManual_muscles_TM_osteochondroma = "empty"; + Result.shoulderManual_muscles_TM_degeneration = "empty"; + end Result.shoulderAuto_CTscan = obj.shoulderAuto.CTscan; Result.shoulderAuto_comment = obj.shoulderAuto.comment; Result.study = obj.study; - Result.comment = obj.comment; + if isempty(obj.study) + Result.study = nan; + else + Result.study = obj.study; + end + if isempty(obj.comment) + Result.comment = nan; + else + Result.comment = obj.comment; + end outputArg = struct2table(Result, 'AsArray', 1); end end end \ No newline at end of file