List of commits:
Subject Hash Author Date (UTC)
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
Add option 'shorteng' for legend-formatting in plot_cuts.m 7086bd95820d452f6caa8307b7176d99493dc0dc Jason Hoelscher-Obermaier 2017-04-26 09:54:51
Adapt .editorconfig to work with tsv-files e14c3c5c4898b939ca0a31abbaf35776fd6fc9d0 Jason Hoelscher-Obermaier 2017-04-26 09:28:44
Add functions to estimate autocorrelation times 8ca22e2b543094e742a49d9df6179d0eec49885a Jason Hoelscher-Obermaier 2017-04-23 07:49:59
Add convenience method for_each_evaluation_transform cfcc7a3041f9e7311cf643e686f4a5cae87319ae Jason Hoelscher-Obermaier 2017-04-21 09:57:26
Add convenience method for_each_evaluation_do to meta_ev.m a2b1592e908843ab6b0575f9b8438480c0941ec9 Jason Hoelscher-Obermaier 2017-04-21 09:36:09
Add option 'linestyle' to plotLogneg.m and plot_logneg_versus_gamma.m ed991ec181defd2ab4d68dab96da9aa115608a0e Jason Hoelscher-Obermaier 2017-04-19 09:25:14
Commit 54f9ca5aa51e96aedf3dddaa1609438c088a87b8 - Add method plot_CM to entanglement_evaluation
- allows quick graphical inspection of CM structure
- to that end also add properties quad_order and quad_labels
-- they help to keep track of the mode order when plotting CMs
- for playing around with plot_CM see addition to entanglement_evaluation_test
Author: Jason Hoelscher-Obermaier
Author date (UTC): 2017-05-05 14:29
Committer name: Jason Hoelscher-Obermaier
Committer date (UTC): 2017-05-05 14:37
Parent(s): 7ae27bc20af3faf8947ac07eec66b52851c45f54
Signing key:
Tree: f0626d43bd7cc8a4d5f5bb4a9adf997f32171d40
File Lines added Lines deleted
data_analysis/@entanglement_evaluation/entanglement_evaluation.m 27 0
data_analysis/@entanglement_evaluation/plot_CM.m 32 0
data_analysis/unittests/entanglement_evaluation_test.m 55 0
File data_analysis/@entanglement_evaluation/entanglement_evaluation.m changed (mode: 100644) (index e8733f3..306efba)
... ... classdef entanglement_evaluation < class_conveniences & entanglement_evaluation_
63 63 pulse_gammas_no@double scalar pulse_gammas_no@double scalar
64 64 pulse_duration_seconds@double scalar pulse_duration_seconds@double scalar
65 65 pulse_timevector@double vector pulse_timevector@double vector
66 % quad_order: for each mechanical frequency, index of quadratures p,q,x,y
67 % hence: pulse_trace(quad_order(:)) yields the pulse trace "sorted by mechanical freq.s"
68 % (i.e. s.th. q,p,x,y for each mode appear next to each other)
69 quad_order@double matrix
70 quad_labels@cell matrix
71
66 72
67 73 samples_per_pulse % @double scalar samples_per_pulse % @double scalar
68 74
 
... ... classdef entanglement_evaluation < class_conveniences & entanglement_evaluation_
115 121 error('Could not determine pulse_gamma_no'); error('Could not determine pulse_gamma_no');
116 122 end end
117 123 end end
124 function quad_order = get.quad_order(obj)
125 mfn = obj.mech_frequencies_no;
126 qs = 2*[1:mfn]-1;
127 ps = 2*[1:mfn];
128 xs = qs + 2*mfn;
129 ys = ps + 2*mfn;
130 quad_order = [qs;ps;xs;ys];
131 end
132 function quad_labels = get.quad_labels(obj)
133 quad_prefixes = 'qpxy';
134 quad_labels = cell(4, obj.mech_frequencies_no);
135 for m=1:obj.mech_frequencies_no
136 for q=1:4
137 m_str = [', ',num2eng(roundsd(obj.mech_frequencies(m),3)), 'Hz'];
138 quad_labels{q,m} = [quad_prefixes(q),m_str];
139 % LaTeX-version:
140 % m_str = ['_{',num2eng(obj.mech_frequencies(m)), 'Hz}'];
141 % quad_labels{q,m} = ['$$',quad_prefixes(q),m_str,'$$'];
142 end
143 end
144 end
118 145 function pulse_duration_seconds = get.pulse_duration_seconds(obj) function pulse_duration_seconds = get.pulse_duration_seconds(obj)
119 146 pulse_duration_seconds = obj.samples_per_pulse/obj.samplingrate; pulse_duration_seconds = obj.samples_per_pulse/obj.samplingrate;
120 147 end end
File data_analysis/@entanglement_evaluation/plot_CM.m added (mode: 100644) (index 0000000..bfffd60)
1 function plot_CM(ev, tracepair_ind, pulse_gamma_ind, varargin)
2 mode_order = 1:ev.mech_frequencies_no;
3 cm = ev.pulse_CM_calibrated{tracepair_ind}{pulse_gamma_ind};
4 save_fig = false;
5 title_str = '';
6
7 remaining_args = {}; % feed all unused varargin-arguments to plot_matrix
8 rem_args_count = 1;
9 for k=1:2:length(varargin)
10 switch lower(varargin{k})
11 case {'mode_order'}
12 mode_order = varargin{k+1};
13 case {'save_fig'}
14 save_fig = varargin{k+1};
15 case {'title'}
16 title_str = varargin{k+1};
17 otherwise
18 remaining_args{rem_args_count} = varargin{k};
19 remaining_args{rem_args_count+1} = varargin{k+1};
20 rem_args_count = rem_args_count + 2;
21 end
22 end
23 quad_order = ev.quad_order(:,mode_order);
24 quad_labels = ev.quad_labels(:,mode_order);
25 cm = cm(quad_order, quad_order);
26
27 plot_matrix(cm, 'labels', quad_labels, 'show_xlabels', false, 'show_numbers', false,...
28 'colorbar', true, 'color_range', 'symmetric', remaining_args{:});
29 if save_fig
30 save_fig_pdf(gcf, ev.evaluation_folder, ['cm_', num2str(tracepair_ind),'_', num2str(pulse_gamma_ind)]);
31 end
32 if ~isempty(title_str), title(title_str); end
File data_analysis/unittests/entanglement_evaluation_test.m changed (mode: 100644) (index a9601ce..7d69cc0)
... ... function purity_test(shared)
853 853
854 854 % - GOAL: plot purity of the different light modes as function of drive power for resonant and detuned case % - GOAL: plot purity of the different light modes as function of drive power for resonant and detuned case
855 855
856 function quadorder_CM_test(shared)
857 ev = load('.ev.mat'); ev = ev.ev;
858 % ev.import_traces;
859 test_CM = ev.pulse_CM_calibrated{2}{1};
860
861 % old order
862 % ev.mech_frequencies: [920000 1.0446e+06 -920000 -1.0446e+06]
863 lightmodes_order_old = [1,2,3,4];
864 quad_order_old = ev.quad_order(:,lightmodes_order_old);
865 quad_labels_old = ev.quad_labels;
866 assertEqual(quad_labels_old, ev.quad_labels(:,lightmodes_order_old))
867 assertEqual(quad_order_old(:), ev.quad_order(:));
868
869
870 % fig = figure; subplot(131); hold all
871 % plot_matrix(test_CM(quad_order_old, quad_order_old),...
872 % 'labels', quad_labels_old, 'xlabel_rotation', 0, 'show_xlabels', false,...
873 % 'colorbar', true, 'show_numbers', false, 'format_fct', @(num)num2eng(roundsd(num,3)))
874
875 % new order
876 % ev.mech_frequencies: [920000 -920000 1.0446e+06 -1.0446e+06]
877 % close all
878 lightmodes_order_new = [1,3,2,4];
879 quad_order_new = ev.quad_order(:,lightmodes_order_new);
880 quad_labels_new = ev.quad_labels(:,lightmodes_order_new);
881 % subplot(132); hold all
882 % plot_matrix(test_CM(quad_order_new, quad_order_new),...
883 % 'labels', quad_labels_new, 'xlabel_rotation', 0, 'show_xlabels', false,...
884 % 'colorbar', false, 'show_numbers', false, 'format_fct', @(num)num2eng(roundsd(num,3)))
885
886 % % the following subplots should yield the same
887 % figure;
888 % subplot(211); ev.plot_CM(2,1, 'mode_order', lightmodes_order_new)
889 % subplot(212); plot_matrix(test_CM(quad_order_new,quad_order_new), 'shownumbers', false,...
890 % 'labels', quad_labels_new, 'show_xlabels', false, 'colorbar', true)
891 % new order
892 % ev.mech_frequencies: [920000 -920000 1.0446e+06 -1.0446e+06]
893 % but now with readout modes next to each other and entangling modes next to each other
894 newer_order = [1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16];
895 % quad_order = ev.quad_order;
896 % qs = quad_order(1,:);
897 % ps = quad_order(2,:);
898 % xs = quad_order(3,:);
899 % ys = quad_order(4,:);
900 % modes_pm1 = [1,3];
901 % modes_pm2 = [2,4];
902 quad_order_newer = quad_order_new(newer_order);
903 quad_labels_newer = quad_labels_new(newer_order);
904 % subplot(133); hold all
905 % plot_matrix(test_CM(quad_order_newer, quad_order_newer),...
906 % 'labels', quad_labels_newer, 'xlabel_rotation', 0, 'show_xlabels', false,...
907 % 'colorbar', false, 'show_numbers', false, 'format_fct', @(num)num2eng(roundsd(num,3)))
908
909 % ev.pulse_CM_calibrated{2}{2}(quad_order_old(:))
910
856 911 %%% OTHER AUX FUNCTIONS %%% %%% OTHER AUX FUNCTIONS %%%
857 912 function data = get_rand_nums_from_sample_cov(sample_no, sample_CM) function data = get_rand_nums_from_sample_cov(sample_no, sample_CM)
858 913 dim = size(sample_CM,1); dim = size(sample_CM,1);
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