Add Datastorage
This commit is contained in:
251
Classes/Warehouse_class/functions/fwm_plots/CompleteRoutine.m
Normal file
251
Classes/Warehouse_class/functions/fwm_plots/CompleteRoutine.m
Normal file
@@ -0,0 +1,251 @@
|
||||
% Script, that shows the data management routine :-)
|
||||
|
||||
loadExistingWareHouse = 0;
|
||||
|
||||
if loadExistingWareHouse
|
||||
|
||||
[file, path] = uigetfile();
|
||||
wh = load([path filesep file]);
|
||||
wh = wh.wh;
|
||||
wh.showInfo;
|
||||
|
||||
else
|
||||
|
||||
% 1) Define all your parameters, best practice directly constructs a
|
||||
% structure
|
||||
|
||||
params = struct;
|
||||
|
||||
params.l = [2,10];
|
||||
|
||||
params.dispersion = [0];
|
||||
|
||||
params.sgm = [0];
|
||||
|
||||
% params.pol = ["YXYXYXYX","YXXYYXXY","YYYYYYYY"];
|
||||
params.pol = ["alternated","paired","copolarized"];
|
||||
|
||||
params.p_in = [3];
|
||||
|
||||
params.p_out = [-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2];
|
||||
|
||||
params.pmd = [0.1];
|
||||
|
||||
params.gamma = [0.0023];
|
||||
|
||||
params.realization = [1:20];
|
||||
|
||||
params.numchannels = [16];
|
||||
|
||||
params.center_wavelength = floor([getSweepWavelengths(35, 50e9, 1310)] .* 1000) ./ 1000 ;
|
||||
params.center_wavelength = [1285 1287 1290 1292 1295];
|
||||
params.center_wavelength = 1310;
|
||||
|
||||
params.channelspacing = [400e9];
|
||||
|
||||
params.random_zdw = [0];
|
||||
|
||||
%wh = warehouse :-)
|
||||
wh = DataStorage(params);
|
||||
|
||||
wh.showInfo;
|
||||
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh.addStorage("totalBer");
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
%2) Simulate a bunch of data - TO BE IMPLEMENTED HERE - for now use scripts
|
||||
%from Sebastian
|
||||
|
||||
%3) Once the simulation folder is around, specifiy path and analyze dirs
|
||||
|
||||
path = uigetdir('C:\Users\Silas\Documents\MATLAB\Raw_Cluster_Simulations');
|
||||
|
||||
allMat = getAllFilesInFolder(path,'.mat');
|
||||
allErr = getAllFilesInFolder(path,'.err');
|
||||
|
||||
%allMat = dir([path filesep '*.mat']);
|
||||
|
||||
%allErr = dir([path filesep '*.err']);
|
||||
|
||||
if numel(allMat) == 0
|
||||
warning('You defined an empty folder. Could not locate any .mat file.')
|
||||
else
|
||||
fprintf('%-20s', 'Err Files:'); fprintf('%-12s', num2str(numel(allErr))); fprintf('\n');
|
||||
fprintf('%-20s', 'Mat Files:'); fprintf('%-12s', num2str(numel(allMat))); fprintf('\n');
|
||||
fprintf('%-20s', 'Missing Mat Files:'); fprintf('%-12s', num2str(numel(allErr)-numel(allMat))); fprintf('\n');
|
||||
end
|
||||
|
||||
%4) Now load that data
|
||||
|
||||
f = waitbar(0,'Please wait...');
|
||||
cnt = 0;
|
||||
|
||||
for num = 1:numel(allMat)
|
||||
|
||||
fileName = allMat(num).name;
|
||||
fileFolder = allMat(num).path;
|
||||
fileExt = allMat(num).ext;
|
||||
%
|
||||
matFile = load([fileFolder filesep fileName fileExt]);
|
||||
matFile = matFile.loop_data;
|
||||
|
||||
% ____________________________________
|
||||
% FIND THE DATAPOINT CURRENTLY LOADED
|
||||
zdw = 1310;
|
||||
|
||||
channelplan = "symmetric";
|
||||
|
||||
channelspacing = str2double(strrep(regexp(fileName,'(_chsp)+([\d]*)','match'),'_chsp','')).*1e9;
|
||||
|
||||
numchannels = str2double(strrep(regexp(fileName,'(ch)+(_)+([\d]*)','match'),'ch_',''));
|
||||
|
||||
center_wavelength = str2double(insertAfter(strrep(regexp(fileName,'(lambda)+([\d]*)','match'),'lambda',''),4,'.'));
|
||||
|
||||
center_wavelength = floor(center_wavelength * 1000) / 1000;
|
||||
|
||||
if center_wavelength == 2192
|
||||
continue
|
||||
end
|
||||
|
||||
center_wavelength = 1310;
|
||||
|
||||
random_zdw = str2double(strrep(regexp(fileName,'(rzwd)+([\d])','match'),'rzwd',''));
|
||||
|
||||
l = str2double(strrep(regexp(fileName,'([L])+(_)+([\d]*)','match'),'L_',''));
|
||||
|
||||
d = str2double(strrep(regexp(fileName,'([D])+(_)+([\d]*)','match'),'D_',''));
|
||||
|
||||
if d == 0
|
||||
sgm = false;
|
||||
else
|
||||
sgm = true;
|
||||
end
|
||||
|
||||
|
||||
if numel(regexp(fileName,'(YYYY)','match')) > 1
|
||||
pol = "copolarized";
|
||||
elseif numel(regexp(fileName,'(YXXY)','match')) > 1
|
||||
pol = "paired";
|
||||
elseif numel(regexp(fileName,'(YXYX)','match')) > 1
|
||||
pol = "alternated";
|
||||
else
|
||||
pol = "copolarized";
|
||||
end
|
||||
|
||||
p_in = str2double(strrep(regexp(fileName,'(pow_)+([-,\d]{1})','match'),'pow_',''));
|
||||
|
||||
pmd = 0.1;
|
||||
|
||||
gamma = 0.0023;
|
||||
|
||||
realiz = str2double(strrep(regexp(fileName,'(r)+([-,\d]{1,3})','match'),'r',''));
|
||||
|
||||
|
||||
|
||||
% ____________________________________
|
||||
% Get the information you want from current file
|
||||
rop=[];
|
||||
ber = [];
|
||||
for pow = 2:12
|
||||
|
||||
module_number = '';
|
||||
for p = 1:11 %11 because there are 11 ROP branches in model
|
||||
|
||||
% get ROP
|
||||
if p == 1
|
||||
p_out = matFile.dp_optatten_para.atten;
|
||||
else
|
||||
p_out = matFile.("dp_optatten__"+(p)+"_para").atten;
|
||||
end
|
||||
|
||||
p_out = round(p_out-10*log10(numel(matFile.config.parameters.common.wavelengthPlan)));
|
||||
|
||||
for c = 1:numel(matFile.config.parameters.common.wavelengthPlan)
|
||||
|
||||
ber(c) = matFile.("prms_compare_wdm__"+(p+1)+"_out"){1,c}.ber;
|
||||
|
||||
end
|
||||
|
||||
totalBer = matFile.("prms_compare_wdm__"+(p+1)+"_out"){1,end}.totalBer;
|
||||
|
||||
if totalBer > 0.2 && channelspacing == 400e9 && pol == "alternated"
|
||||
disp("stopping here");
|
||||
pause;
|
||||
end
|
||||
|
||||
|
||||
% ____________________________________
|
||||
% Add value to warehouse at the correct position
|
||||
|
||||
|
||||
|
||||
wh.addValueToStorage(ber,'ber',l,d,sgm,pol,p_in,p_out,pmd,gamma,realiz,numchannels, center_wavelength,channelspacing,random_zdw);
|
||||
wh.getStoValue('ber',l,d,sgm,pol,p_in,p_out,pmd,gamma,realiz,numchannels, center_wavelength,channelspacing,random_zdw);
|
||||
wh.addValueToStorage(totalBer,'totalBer',l,d,sgm,pol,p_in,p_out,pmd,gamma,realiz,numchannels,center_wavelength,channelspacing,random_zdw);
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
waitbar(num/numel(allMat),f,'Loading your data');
|
||||
end
|
||||
|
||||
close(f)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
% 4) Hey! the warehouse is here and (hopefully) filled with data :-)
|
||||
|
||||
% Create a save dialog
|
||||
defaultDir = 'C:\Users\Silas\Documents\MATLAB\Raw_Cluster_Simulations\';
|
||||
defaultExt = '*.mat';
|
||||
[filename, pathname] = uiputfile(fullfile(defaultDir, defaultExt),'', 'wh.mat');
|
||||
|
||||
% Check if the user pressed Cancel
|
||||
if isequal(filename, 0) || isequal(pathname, 0)
|
||||
disp('Save operation canceled.');
|
||||
else
|
||||
% Save the variable to the selected file
|
||||
save(fullfile(pathname, filename), 'wh');
|
||||
disp(['Variable "wh" saved to: ', fullfile(pathname, filename)]);
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function matFileStructArray = getAllFilesInFolder(folderPath,extension)
|
||||
% Get a list of all files in the current folder
|
||||
currentFolderFiles = dir(fullfile(folderPath, '*'));
|
||||
|
||||
% Exclude '.' and '..' directories
|
||||
currentFolderFiles = currentFolderFiles(~ismember({currentFolderFiles.name}, {'.', '..'}));
|
||||
|
||||
% Initialize the structure array for .mat files
|
||||
matFileStructArray = struct('path', {}, 'name', {}, 'ext', {});
|
||||
|
||||
% Loop over each file in the current folder
|
||||
for i = 1:length(currentFolderFiles)
|
||||
currentFile = currentFolderFiles(i);
|
||||
|
||||
% Check if the current item is a file and has a .mat extension
|
||||
if ~currentFile.isdir && endsWith(currentFile.name, extension, 'IgnoreCase', true)
|
||||
% If it's a .mat file, add it to the structure array
|
||||
[matFileStructArray(end + 1).path,matFileStructArray(end+1).name, matFileStructArray(end+1).ext] = fileparts(fullfile(folderPath, currentFile.name));
|
||||
elseif currentFile.isdir
|
||||
% If it's a directory, recursively call the function
|
||||
subfolderPath = fullfile(folderPath, currentFile.name);
|
||||
subfolderMatFiles = getAllFilesInFolder(subfolderPath,extension);
|
||||
|
||||
% Add .mat files from the subfolder to the structure array
|
||||
matFileStructArray = [matFileStructArray, subfolderMatFiles];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user