Есть ли способ написать скрипт Matlab для просмотра и разделения файлов в новом месте? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть скрипт в matlab, который будет считывать данные из файла .xslx и сопоставлять информацию из файлов пациентов, которые находятся в отдельных папках. Идея состоит в том, чтобы убедиться, что элементы в файлах пациентов совпадают с нашими записями (файл .xlsx).

У меня есть «if loop», который напечатает 3 выхода. 1. Если вся информация совпадает, 2. Если какая-то информация совпадает, 3. Если ни одна из информации не совпадает.

Вы можете найти этот раздел в комментариях как "% соответствия MOSAIQ_EXCEL_FILE"

Есть ли способ создать копию или переместить файлы в отдельные папки, основываясь на результатах цикла if. Таким образом, все файлы пациентов с условиями 1, 2 или 3 находятся в новых папках

clear;clc
Mosaiq_missing=[];Mismatch_dose_plan=[];no_plan=[];false_dose=[];

% Reads Data from this file
% Several patient folders are in this location
dirpat='C:\Users\Desktop\dummy_pts\';
[patnamen,~]=getfil(dirpat);
% This contains the records I wish to match values with
%Mataches IDs from this file
dirloc='C:\Users\Desktop\ProjectK&S\Masterfile.xlsx';
MOSAIQ=readtable(dirloc);
% MOSAIQ.ida=cellstr(num2str(MOSAIQ.ida));
oma=MOSAIQ(ismember(MOSAIQ.ida, patnamen),:);

co=[2 2 2 2 2 2];dc=1;
for pp=1:length(patnamen)
    clearvars -except dirpat patnamen dc pp Mosaiq_missing Mismatch_dose_plan no_plan false_dose wrong_dose_dir repeat oma oma_namen
    mismatch=0; hl=0;
    patientname=patnamen{pp};

    if ismember(patientname,oma.ida)
        display(['loading patient: ',patientname])
        dirloc=[fullfile(dirpat,patientname),'\'];
        pa = genpath(dirloc);
        splitfil=regexp(pa,'\;','split')';

% read dose plan locations 
     DOSEplek=cellfun(@isempty,regexp(splitfil,'DOSE'))==0;
     PLANplek=cellfun(@isempty,regexp(splitfil,'PLAN'))==0; 
     DOSE=splitfil(DOSEplek);
     PLAN=splitfil(PLANplek);


     if sum(PLANplek)>0
        [RTplan_files,~]=getfil(PLAN{1});

        for pl=1:length(RTplan_files)
            info=dicominfo(fullfile(PLAN{1},RTplan_files{pl}));

            beam_name=cell(length(fieldnames(  info.FractionGroupSequence.Item_1.ReferencedBeamSequence)),1);
            BeamMetersets=nan(length(fieldnames(  info.FractionGroupSequence.Item_1.ReferencedBeamSequence)),1);


            for p=1:length(fieldnames(   info.FractionGroupSequence.Item_1.ReferencedBeamSequence))
            BeamMetersets(p)=info.FractionGroupSequence.Item_1.ReferencedBeamSequence.(['Item_',num2str(p)]).BeamMeterset;
            beam_name(p)={info.BeamSequence.(['Item_',num2str(p)]).BeamDescription};
            end
            fraction_number=info.FractionGroupSequence.Item_1.NumberOfFractionsPlanned;


        end

        %match to MOSAIQ_EXCEL_FILE

                loc=ismember(oma.ida,patientname);%cellfun(@isempty,regexpi(oma_namen,patientnaam))==0;
                MOSAIQ_sel=table2cell(oma(loc,:));

                if size(MOSAIQ_sel,1)==size(BeamMetersets,1)
                    if sum(~ismember(BeamMetersets,cell2mat(MOSAIQ_sel(:,10))))==0
                        disp('x, right number of beam, Right Values Everything Matches!!')

                    else
                        disp('x, right number of beam -- wrong values!!!')
                        BeamMetersets;
                        mosaiq_beam_values=cell2mat(MOSAIQ_sel(:,10));

                    end

                else
                    disp('x there is an error!!! DO SOMETHING!!!')

                end





     end
    end
end            

Некоторые элементы были изменены, чтобы защитить информацию, но я получил этот скрипт в его исходной форме для работы. Я просто не знаю, как (или могу ли я) сделать автоматическую часть разделения. Любые идеи или советы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...