List of commits:
Subject Hash Author Date (UTC)
Add property max_physical_logneg to entanglement_evaluation 865055eadb8c4b035321b2359b69dad4f48e33ec Jason Hoelscher-Obermaier 2017-05-08 09:37:40
Add option 'only_physical' to plotLogneg and plot_logneg_versus_gama a5510a09ab9ecb8239aef3853867884aefb28e3b Jason Hoelscher-Obermaier 2017-05-07 09:47:52
Add option 'two_sidebands' to trace_out 3f70b4498e116bf89ea2230e4a6b081d8d240bc3 Jason Hoelscher-Obermaier 2017-05-07 08:14:45
Fix bug in meta_ev 25d2497bf41eaf1198d88269dd3460812b38e18f Jason Hoelscher-Obermaier 2017-05-05 17:45:20
Allow plotting of abs. values with log. color scale in plot_CM 2147950f70bb2631656c1c20448eeda106acf6e2 Jason Hoelscher-Obermaier 2017-05-05 16:15:26
Improve plotLogneg 445bec4d79ec7c09efa92a878e9fc9d5b3a6801e Jason Hoelscher-Obermaier 2017-05-05 15:26:31
Add method plot_CM to entanglement_evaluation 54f9ca5aa51e96aedf3dddaa1609438c088a87b8 Jason Hoelscher-Obermaier 2017-05-05 14:29:23
Add option 'color_range' to plot_matrix 7ae27bc20af3faf8947ac07eec66b52851c45f54 Jason Hoelscher-Obermaier 2017-05-05 13:57:06
Improve convenience function plot_matrix 8ebc93c933416a384bc4c6b0ab44a8f6f516b695 Jason Hoelscher-Obermaier 2017-05-05 10:07:33
Fix bug which prevents exporting of pulse_trace if these become very large c2a75103be1264f1fa462d1d2b5c685d8cda32e0 Jason Hoelscher-Obermaier 2017-05-04 15:10:20
Add purity and occupation as properties to entanglement_evaluation f512ccdf6c11f0967feeb1fe11dbd8227307647e Jason Hoelscher-Obermaier 2017-05-04 08:55:34
Allow tracing of individual light modes in trace_out.m bc85fff490d92add04a08b32507d8b99aabc1814 Jason Hoelscher-Obermaier 2017-05-02 16:42:04
Also always save a png in save_fig_pdf.m 1d0ca7530e1efbd861637b7b913d78d3e70b1d15 Jason Hoelscher-Obermaier 2017-05-02 11:26:29
Extend plot_cuts to work with 1-dimensional (vector) meta_evs 3d7fd42b341f66e0d7e6733a4817c53c61f04863 Jason Hoelscher-Obermaier 2017-05-02 10:32:20
Add convenience fcts for plotting: logticks and set_tick_format fff9d4f483232a9377c5fdb4686f1ba1f5b48921 Jason Hoelscher-Obermaier 2017-05-02 10:28:50
Add support for automatic legends to plot_logneg_versus_gamma.m f10bdf863978f2c19acf73ca726de0855d16f9f0 Jason Hoelscher-Obermaier 2017-05-02 09:53:51
Add option to plot to subplots to plot_cuts and plot_logneg_versus_gamma 7037df1212f6ba94e74311c7fcdc1ffde453063d Jason Hoelscher-Obermaier 2017-05-02 09:21:31
Add option 'data_label' to plotLogneg.m 4f37d32ba0720a04e967125d8f02ade1239b27f9 Jason Hoelscher-Obermaier 2017-05-02 09:20:11
Add convenience function save_fig_pdf d482934c055e8805409c96f592ac18dd448ad8f9 Jason Hoelscher-Obermaier 2017-04-28 16:43:02
Add better helper fct plot_matrix for convenient display of correlation matrices etc 6f74f026d6477fd24083046842647ab750c185d7 Jason Hoelscher-Obermaier 2017-04-27 13:35:59
Commit 865055eadb8c4b035321b2359b69dad4f48e33ec - Add property max_physical_logneg to entanglement_evaluation
- this is (for each tracepair) the maximum over all logneg values
which correspond to physical CMs
- add 'max_physical_logneg' also as a property to meta_ev
- - and add support for quickly plotting it via plot_cuts.m
Author: Jason Hoelscher-Obermaier
Author date (UTC): 2017-05-08 09:37
Committer name: Jason Hoelscher-Obermaier
Committer date (UTC): 2017-05-08 09:41
Parent(s): a5510a09ab9ecb8239aef3853867884aefb28e3b
Signing key:
Tree: c0def8abcf7ed18450fd00fbbd835ed111bd5432
File Lines added Lines deleted
data_analysis/@entanglement_evaluation/entanglement_evaluation.m 12 0
data_analysis/@meta_ev/meta_ev.m 10 0
data_analysis/@meta_ev/plot_cuts.m 30 19
File data_analysis/@entanglement_evaluation/entanglement_evaluation.m changed (mode: 100644) (index 306efba..a506731)
... ... classdef entanglement_evaluation < class_conveniences & entanglement_evaluation_
84 84 % entanglement and pulse width optimized over all evaluated pulse widhts (using interpolation) % entanglement and pulse width optimized over all evaluated pulse widhts (using interpolation)
85 85 opt_logneg_corrected@double vector opt_logneg_corrected@double vector
86 86 opt_pulse_gammas@double vector opt_pulse_gammas@double vector
87
88 max_physical_logneg@double vector % maximum of entanglement values restricted to physical CMs
87 89 end end
88 90 properties(Dependent, Hidden) properties(Dependent, Hidden)
89 91 shotnoise_theory@double matrix shotnoise_theory@double matrix
 
... ... classdef entanglement_evaluation < class_conveniences & entanglement_evaluation_
220 222 end end
221 223 opt_pulse_gammas = obj.opt_pulse_gammas_private; opt_pulse_gammas = obj.opt_pulse_gammas_private;
222 224 end end
225
226 function max_physical_logneg = get.max_physical_logneg(obj)
227 max_physical_logneg = zeros(1,obj.tracepairs_no);
228 for k=1:obj.tracepairs_no
229 logneg = [obj.logneg_corrected{k}{:}];
230 physical = [obj.pulse_CM_is_physical{k}{:}];
231 logneg(~physical)=nan;
232 max_physical_logneg(k) = max(logneg);
233 end
234 end
223 235 end end
224 236 end end
File data_analysis/@meta_ev/meta_ev.m changed (mode: 100644) (index 6b773e1..2abfede)
... ... classdef meta_ev < class_conveniences
20 20 evaluations_no@double % number of evaluations evaluations_no@double % number of evaluations
21 21 opt_logneg_corrected@cell % cell array (index corresponding to tracepair) of optimal entanglement opt_logneg_corrected@cell % cell array (index corresponding to tracepair) of optimal entanglement
22 22 opt_pulse_gammas@cell % cell array (index corresponding to tracepair) of optimal pulse gammas opt_pulse_gammas@cell % cell array (index corresponding to tracepair) of optimal pulse gammas
23 max_physical_logneg@cell % cell array (index corresponding to tracepair) of maximum of logneg over physical CMs
23 24 tracepairs_no@double % number of tracepairs used for each evaluation (enforced to be the same) tracepairs_no@double % number of tracepairs used for each evaluation (enforced to be the same)
24 25 common@struct % struct which contains all those evaluation_properties which are shared by all evaluations common@struct % struct which contains all those evaluation_properties which are shared by all evaluations
25 26 common_path % longest path which is a parentdir to all ev_files common_path % longest path which is a parentdir to all ev_files
 
... ... classdef meta_ev < class_conveniences
37 38 ln_fig = [] % figure handle for internally generated plot logneg vs gamma ln_fig = [] % figure handle for internally generated plot logneg vs gamma
38 39 ln_cont_fig = [] % figure handle for internally generated contour plot of opt. logneg ln_cont_fig = [] % figure handle for internally generated contour plot of opt. logneg
39 40 ln_cut_fig = [] % figure handle for internally generated cut plot of opt. logneg ln_cut_fig = [] % figure handle for internally generated cut plot of opt. logneg
41 ln_phys_cut_fig = [] % figure handle for internally generated cut plot of max.physical logneg
40 42 pw_cont_fig = [] % figure handle for internally generated contour plot of opt. pulse width pw_cont_fig = [] % figure handle for internally generated contour plot of opt. pulse width
41 43 pw_cut_fig = [] % figure handle for internally generated cut plot of opt. pulse width pw_cut_fig = [] % figure handle for internally generated cut plot of opt. pulse width
42 44 fig_label = '' % additional label to distinguish plots when saving fig_label = '' % additional label to distinguish plots when saving
 
... ... classdef meta_ev < class_conveniences
194 196 meta.my_save_fig(meta.ln_cont_fig, 'lnopt'); meta.ln_cont_fig = []; meta.my_save_fig(meta.ln_cont_fig, 'lnopt'); meta.ln_cont_fig = [];
195 197 meta.my_save_fig(meta.pw_cont_fig, 'pwopt'); meta.pw_cont_fig = []; meta.my_save_fig(meta.pw_cont_fig, 'pwopt'); meta.pw_cont_fig = [];
196 198 meta.my_save_fig(meta.ln_cut_fig, 'lnopt_cut'); meta.ln_cut_fig = []; meta.my_save_fig(meta.ln_cut_fig, 'lnopt_cut'); meta.ln_cut_fig = [];
199 meta.my_save_fig(meta.ln_phys_cut_fig, 'lnmax_phys_cut'); meta.ln_phys_cut_fig = [];
197 200 meta.my_save_fig(meta.pw_cut_fig, 'pwopt_cut'); meta.pw_cut_fig = []; meta.my_save_fig(meta.pw_cut_fig, 'pwopt_cut'); meta.pw_cut_fig = [];
198 201 end end
199 202
 
... ... classdef meta_ev < class_conveniences
234 237 'opt_pulse_gammas', 'index', k)); 'opt_pulse_gammas', 'index', k));
235 238 end end
236 239 end end
240 function max_physical_logneg = get.max_physical_logneg(meta)
241 max_physical_logneg = cell([1, meta.tracepairs_no]);
242 for k=1:meta.tracepairs_no
243 max_physical_logneg{k} = cell2mat(meta.for_each_evaluation_get(...
244 'max_physical_logneg', 'index', k));
245 end
246 end
237 247 function opt_logneg_corrected_interp = get.opt_logneg_corrected_interp(meta) function opt_logneg_corrected_interp = get.opt_logneg_corrected_interp(meta)
238 248 if isempty(meta.opt_logneg_corrected_interp_private) if isempty(meta.opt_logneg_corrected_interp_private)
239 249 opt_logneg_corrected_interp = cell([1, meta.tracepairs_no]); opt_logneg_corrected_interp = cell([1, meta.tracepairs_no]);
File data_analysis/@meta_ev/plot_cuts.m changed (mode: 100644) (index bf8e0d0..93bcc3b)
1 function plot_cuts(meta, plot_type, tracepairs_ind, varargin)
1 function fig = plot_cuts(meta, plot_type, tracepairs_ind, varargin)
2 2 switch meta.gridtype switch meta.gridtype
3 3 case 'vector' case 'vector'
4 4 par_ind = 2; par_ind = 2;
 
... ... function plot_cuts(meta, plot_type, tracepairs_ind, varargin)
9 9 otherwise otherwise
10 10 error('"plot_cuts" is only implemented for gridtypes "matrix" or "vector".') error('"plot_cuts" is only implemented for gridtypes "matrix" or "vector".')
11 11 end end
12 plot_cuts_matrix(meta, plot_type, tracepairs_ind, args{:});
12 fig = plot_cuts_matrix(meta, plot_type, tracepairs_ind, args{:});
13 13
14 14
15 function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, varargin)
15 function fig = plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, varargin)
16 16 % assertEqual(meta.gridtype,'matrix',... % assertEqual(meta.gridtype,'matrix',...
17 17 % 'only implemented for gridtype "matrix"') % 'only implemented for gridtype "matrix"')
18 18 if isequal(par_vals, 'all') if isequal(par_vals, 'all')
 
... ... function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, va
27 27 fig_handle = 'ln_cut_fig'; fig_handle = 'ln_cut_fig';
28 28 y_data = meta_filtered.opt_logneg_corrected{tracepairs_ind}; y_data = meta_filtered.opt_logneg_corrected{tracepairs_ind};
29 29 cmap = flipud(cbrewer('div','RdBu',512)); cmap = flipud(cbrewer('div','RdBu',512));
30 case {'phys_logneg', 'max_physical_logneg', 'max_phys_ln'}
31 display_name = 'Max. log. negativity over physical CMs';
32 fig_handle = 'ln_phys_cut_fig';
33 y_data = meta_filtered.max_physical_logneg{tracepairs_ind};
34 cmap = flipud(cbrewer('div','RdBu',512));
30 35 case {'pulsewidth', 'opt_pulse_gamma', 'opt_pulsewidth'} case {'pulsewidth', 'opt_pulse_gamma', 'opt_pulsewidth'}
31 36 display_name = 'Optimal pulse width [kHz]'; display_name = 'Optimal pulse width [kHz]';
32 37 fig_handle = 'pw_cut_fig'; fig_handle = 'pw_cut_fig';
 
... ... function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, va
48 53 linewidth = 1.5; linewidth = 1.5;
49 54 subplotnum = 111; subplotnum = 111;
50 55 show_zero = false; show_zero = false;
56 show_legend = true;
51 57 for k=1:2:length(varargin) for k=1:2:length(varargin)
52 58 switch lower(varargin{k}) switch lower(varargin{k})
53 59 case {'x_scale','xscale'} case {'x_scale','xscale'}
 
... ... function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, va
74 80 colororder = varargin{k+1}; colororder = varargin{k+1};
75 81 case {'legend_postfix','legendpostfix'} case {'legend_postfix','legendpostfix'}
76 82 legend_postfix = varargin{k+1}; legend_postfix = varargin{k+1};
83 case {'show_legend','legend'}
84 show_legend = varargin{k+1};
77 85 case {'legend_numberformat','legendnumberformat'} case {'legend_numberformat','legendnumberformat'}
78 86 switch varargin{k+1} switch varargin{k+1}
79 87 case 'engineering' case 'engineering'
 
... ... function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, va
96 104 end end
97 105 end end
98 106 if isempty(fig) if isempty(fig)
99 meta.(fig_handle) = figure; hold all;
107 fig = figure; hold all;
100 108 else else
101 109 figure(fig); subplot(subplotnum); hold all; figure(fig); subplot(subplotnum); hold all;
102 meta.(fig_handle) = fig;
103 110 end end
111 meta.(fig_handle) = fig;
112
104 113 if ~isempty(colororder) if ~isempty(colororder)
105 114 set(gca, 'ColorOrder', colororder); set(gca, 'ColorOrder', colororder);
106 115 end end
 
... ... function plot_cuts_matrix(meta, plot_type, tracepairs_ind, par_ind, par_vals, va
130 139 labels(meta_filtered.param_names{x_ind},display_name); labels(meta_filtered.param_names{x_ind},display_name);
131 140 set(gca, 'xscale', x_scale, 'yscale', y_scale) set(gca, 'xscale', x_scale, 'yscale', y_scale)
132 141 meta_ev.xylims(x_lims, y_lims); meta_ev.xylims(x_lims, y_lims);
133 leg = legend('Location', legend_location);
134 legtitle = get(leg,'title');
135 switch meta.gridtype
136 case 'matrix'
137 title_str = sentence_case(meta_filtered.param_names{par_ind});
138 otherwise
139 title_str = '';
140 end
141 if ~(legend_title_maxlength==inf)
142 title_str = linewrap(title_str, legend_title_maxlength);
142 if show_legend
143 leg = legend('Location', legend_location);
144 legtitle = get(leg,'title');
145 switch meta.gridtype
146 case 'matrix'
147 title_str = sentence_case(meta_filtered.param_names{par_ind});
148 otherwise
149 title_str = '';
150 end
151 if ~(legend_title_maxlength==inf)
152 title_str = linewrap(title_str, legend_title_maxlength);
153 end
154 set(legtitle,'string', title_str,...
155 'interpreter', 'latex','FontSize',11);
156 set(leg, 'Color', 'w', 'FontWeight', 'normal',...
157 'LineWidth', 1, 'Interpreter', 'latex','FontSize',11);
143 158 end end
144 set(legtitle,'string', title_str,...
145 'interpreter', 'latex','FontSize',11);
146 set(leg, 'Color', 'w', 'FontWeight', 'normal',...
147 'LineWidth', 1, 'Interpreter', 'latex','FontSize',11);
148 159
149 160 meta.my_postprocess_plot(meta.(fig_handle)); meta.my_postprocess_plot(meta.(fig_handle));
150 161 if show_zero if show_zero
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/gutc61/Membrane

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/gutc61/Membrane

Clone this repository using git:
git clone git://git.rocketgit.com/user/gutc61/Membrane

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main