%Written by Anna Grosberg and Nancy Drew % %Created on: April 8, 2013 %updated: % %Synthetic data for COOP %This code will create the plots to compare the synthetic data with %alanlytical predictions for the most correlated and the uncorelated COOP close all clear all %Mean angle for constructs A (Figure synthetic data paper COOP) A_m = 0.75*pi(); %A_m = 0; %Mean angle for constructs B (Figure synthetic data paper COOP) B_m = 0.25*pi(); %B_m=0; %Specify the standard deviation for the Gaussian distributions of P and Q. %Remember that in this formulation we always assume that P has better (or %the same) organization as Q. P_sigma = [0,0,0,0,0,0.1,0.5,0.5]; %P_sigma=0; P_mean = [A_m,B_m,B_m,B_m,A_m,A_m,A_m,B_m]; P_color = ['b','r','r','r','b','b','b','r']; Q_sigma = [0,0.1,0.5,100,0.5,0.5,0.5,100]; %Q_sigma=0; Q_mean = [B_m,A_m,A_m,A_m,B_m,B_m,B_m,A_m]; Q_color = ['r','b','b','b','r','r','r','b']; P_Ylim = [1,1,1,1,1,0.08,0.08,0.08]; Q_Ylim = [1,0.08,0.08,0.08,0.08,0.08,0.08,0.08]; F_Ylim = [1,0.08,0.08,0.08,0.08,0.08,1,0.08]; %Number of points (i.e. pseudo vectors to make) N_points = 10^8; %Number of cases N_cases = length(P_sigma); %initilize figure number Fig_Num = 0; %cycle through each case for case_num=1:N_cases if Q_sigma(case_num) < P_sigma(case_num) disp(['Error p is less organized than q in run ', case_num]); else if P_sigma(case_num) == 100 %check if P is random %generate random distribution alpha = (pi()).*rand(N_points,1) + (P_mean(case_num) - 0.5*pi()); else %generate a distribution with a standard deviation P_sigma(i) alpha = normrnd(P_mean(case_num),P_sigma(case_num),[N_points,1]); end %Specify distribution for the Uncorrelated case if Q_sigma(case_num) == 100 %check if Q is random %generate random distribution beta_u = (pi()).*rand(N_points,1) + (Q_mean(case_num) - 0.5*pi()); else %generate a distribution with a standard deviation Q_sigma(i) beta_u = normrnd(Q_mean(case_num),Q_sigma(case_num),[N_points,1]); end %Specify distribution for the Correlated case if Q_sigma(case_num) == 100 %check if Q is random %generate random distribution theta = pi().*(rand(N_points,1)-0.5); %randomely distributed theta, shifted to have mean at 0 else F_sigma = sqrt((Q_sigma(case_num))^2 - (P_sigma(case_num))^2); %stdandard deviation of theta %generate a distribution with a standard deviation F_sigma theta = normrnd(0,F_sigma,[N_points,1]); %theta distributed randomely end %beta is the sum of theta and alpha and we move the average beta_c = alpha + theta+(Q_mean(case_num) - P_mean(case_num)); %===============================Code OOP for component 1================= u(1,:) = cos(alpha(:)); u(2,:) = sin(alpha(:)); for i=1:2 for j=1:2 OOT_All(i,j,:)=u(i,:).*u(j,:); OOT_Mean(i,j) = mean(OOT_All(i,j,:)); end end OOT = 2.*OOT_Mean-eye(2); [directions,orient_parameters]=eig(OOT); [Orientation_order_parameter,I] = max(max(orient_parameters)); Orientation_order_parameter_1(case_num)=Orientation_order_parameter OOP1hist=mod(atan2(u(2,:),u(1,:)),pi().*ones(size(u(1,:)))); Fig_Num = Fig_Num +1; figure(Fig_Num) num_bins = 180; angle_vec_dist = 0:(pi/(num_bins-1)):pi; [n,xout] = hist(OOP1hist,angle_vec_dist); bar(xout,n./sum(n),'hist'); h = findobj(gca,'Type','patch'); set(h,'FaceColor',P_color(case_num),'EdgeColor',P_color(case_num)) title(['Orientation for First Component P_\sigma = ', num2str(P_sigma(case_num)),' rad, P_\rho = ', num2str(P_mean(case_num)),' rad, OOP = ',num2str(Orientation_order_parameter_1(case_num)) ],'FontName','Arial','FontSize',8,'FontWeight','bold'); xlabel('Orientation Angle (rad)','FontName','Arial','FontSize',8,'FontWeight','bold'); ylabel('Normalized Occurence','FontName','Arial','FontSize',8,'FontWeight','bold'); xlim([0 pi]); %y_max = max(n./sum(n)); ylim([0 P_Ylim(case_num)]); set(gca,'XTick',0:pi/4:pi) set(gca,'XTickLabel',{'0','pi/4','pi/2','3pi/4','pi'},'FontSize',8) saveas(figure(Fig_Num),['UOrientationFirstComponent_case_num',num2str(case_num),'rad.fig']); saveas(figure(Fig_Num),['UOrientationFirstComponent_case_num',num2str(case_num),'rad.pdf']); %===============================Code OOP for component 2 Uncor================= v_u(1,:) = cos(beta_u(:)); v_u(2,:) = sin(beta_u(:)); for i=1:2 for j=1:2 OOT_All(i,j,:)=v_u(i,:).*v_u(j,:); OOT_Mean(i,j) = mean(OOT_All(i,j,:)); end end OOT = 2.*OOT_Mean-eye(2); [directions,orient_parameters]=eig(OOT); [Orientation_order_parameter,I] = max(max(orient_parameters)); Orientation_order_parameter_2_u(case_num)=Orientation_order_parameter OOP1hist=mod(atan2(v_u(2,:),v_u(1,:)),pi().*ones(size(u(1,:)))); Fig_Num = Fig_Num +1; figure(Fig_Num) num_bins = 180; angle_vec_dist = 0:(pi/(num_bins-1)):pi; [n,xout] = hist(OOP1hist,angle_vec_dist); bar(xout,n./sum(n),'hist'); h = findobj(gca,'Type','patch'); set(h,'FaceColor',Q_color(case_num),'EdgeColor',Q_color(case_num)) title(['Orientation for Second Component (Uncorrelated) Q_\sigma = ', num2str(Q_sigma(case_num)),' rad, Q_\rho = ', num2str(Q_mean(case_num)),' rad, OOP = ',num2str(Orientation_order_parameter_2_u(case_num))],'FontName','Arial','FontSize',8,'FontWeight','bold'); xlabel('Orientation Angle (rad)','FontName','Arial','FontSize',8,'FontWeight','bold'); ylabel('Normalized Occurence','FontName','Arial','FontSize',8,'FontWeight','bold'); xlim([0 pi]); %y_max = max(n./sum(n)); ylim([0 Q_Ylim(case_num)]); set(gca,'XTick',0:pi/4:pi) set(gca,'XTickLabel',{'0','pi/4','pi/2','3pi/4','pi'},'FontSize',8) saveas(figure(Fig_Num),['UOrientationSecondComponent_case_num',num2str(case_num),'rad.fig']); saveas(figure(Fig_Num),['UOrientationSecondComponent_case_num',num2str(case_num),'rad.pdf']); %===============================Code OOP for component 2 Cor================= v_c(1,:) = cos(beta_c(:)); v_c(2,:) = sin(beta_c(:)); for i=1:2 for j=1:2 OOT_All(i,j,:)=v_c(i,:).*v_c(j,:); OOT_Mean(i,j) = mean(OOT_All(i,j,:)); end end OOT = 2.*OOT_Mean-eye(2); [directions,orient_parameters]=eig(OOT); [Orientation_order_parameter,I] = max(max(orient_parameters)); Orientation_order_parameter_2_c(case_num)=Orientation_order_parameter OOP1hist=mod(atan2(v_c(2,:),v_c(1,:)),pi().*ones(size(u(1,:)))); Fig_Num = Fig_Num +1; figure(Fig_Num) num_bins = 180; angle_vec_dist = 0:(pi/(num_bins-1)):pi; [n,xout] = hist(OOP1hist,angle_vec_dist); bar(xout,n./sum(n),'hist'); h = findobj(gca,'Type','patch'); set(h,'FaceColor',Q_color(case_num),'EdgeColor',Q_color(case_num)) title(['Orientation for Second Component (Correlated) Q_\sigma = ', num2str(Q_sigma(case_num)),' rad, Q_\rho = ', num2str(Q_mean(case_num)),' rad, OOP = ',num2str(Orientation_order_parameter_2_c(case_num))],'FontName','Arial','FontSize',8,'FontWeight','bold'); xlabel('Orientation Angle (rad)','FontName','Arial','FontSize',8,'FontWeight','bold'); ylabel('Normalized Occurence','FontName','Arial','FontSize',8,'FontWeight','bold'); xlim([0 pi]); %y_max = max(n./sum(n)); ylim([0 Q_Ylim(case_num)]); set(gca,'XTick',0:pi/4:pi) set(gca,'XTickLabel',{'0','pi/4','pi/2','3pi/4','pi'},'FontSize',8) saveas(figure(Fig_Num),['OrientationSecondComponent_case_num',num2str(case_num),'rad.fig']); saveas(figure(Fig_Num),['OrientationSecondComponent_case_num',num2str(case_num),'rad.pdf']); %========================Code COOP (Uncor)====================== nonzero_co_orientation=[alpha beta_u]; f(1,:) = u(1,:).*v_u(1,:)+u(2,:).*v_u(2,:); f(2,:) = u(1,:).*v_u(2,:)-u(2,:).*v_u(1,:); for i=1:2 for j=1:2 OOT_All(i,j,:)=f(i,:).*f(j,:); OOT_Mean(i,j) = mean(OOT_All(i,j,:)); end end OOT = 2.*OOT_Mean-eye(2); [directions,orient_parameters]=eig(OOT); [Orientation_order_parameter,I] = max(max(orient_parameters)); COOP_Uncor(case_num)=Orientation_order_parameter fs(1,:)=sign(f(2,:)).*f(1,:); fs(2,:)=sign(f(2,:)).*f(2,:); COOPhist=mod(atan2(fs(2,:),fs(1,:)),pi().*ones(size(u(1,:)))); [n,xout] = hist(COOPhist,angle_vec_dist); Fig_Num = Fig_Num +1; figure(Fig_Num) bar(xout,n./sum(n),'hist'); h = findobj(gca,'Type','patch'); set(h,'FaceColor','g','EdgeColor','m') title(['Co-Orientation (Uncorrelated) P_sigma=',num2str(P_sigma(case_num)),', Q_sigma=',num2str(Q_sigma(case_num)),'COOP=',num2str(COOP_Uncor(case_num))],'FontName','Arial','FontSize',8,'FontWeight','bold'); xlabel('Co-Orientation Angle (rad)','FontName','Arial','FontSize',8,'FontWeight','bold'); ylabel('Normalized Occurence','FontName','Arial','FontSize',8,'FontWeight','bold'); xlim([0 pi]); %y_max = max(n./sum(n)); ylim([0 F_Ylim(case_num)]); set(gca,'XTick',0:pi/4:pi) set(gca,'XTickLabel',{'0','pi/4','pi/2','3pi/4','pi'},'FontSize',8) saveas(figure(Fig_Num), ['UCOOP_case_num',num2str(case_num),'.fig']); saveas(figure(Fig_Num), ['UCOOP_case_num',num2str(case_num),'.pdf']); %========================Code COOP (Cor)====================== nonzero_co_orientation=[alpha beta_c]; f(1,:) = u(1,:).*v_c(1,:)+u(2,:).*v_c(2,:); f(2,:) = u(1,:).*v_c(2,:)-u(2,:).*v_c(1,:); for i=1:2 for j=1:2 OOT_All(i,j,:)=f(i,:).*f(j,:); OOT_Mean(i,j) = mean(OOT_All(i,j,:)); end end OOT = 2.*OOT_Mean-eye(2); [directions,orient_parameters]=eig(OOT); [Orientation_order_parameter,I] = max(max(orient_parameters)); COOP_Cor(case_num)=Orientation_order_parameter fs(1,:)=sign(f(2,:)).*f(1,:); fs(2,:)=sign(f(2,:)).*f(2,:); COOPhist=mod(atan2(fs(2,:),fs(1,:)),pi().*ones(size(u(1,:)))); [n,xout] = hist(COOPhist,angle_vec_dist); Fig_Num = Fig_Num +1; figure(Fig_Num) bar(xout,n./sum(n),'hist'); h = findobj(gca,'Type','patch'); set(h,'FaceColor','g','EdgeColor','m') title(['Co-Orientation (Correlated) P_sigma=',num2str(P_sigma(case_num)),', Q_sigma=',num2str(Q_sigma(case_num)),'COOP=',num2str(COOP_Cor(case_num))],'FontName','Arial','FontSize',8,'FontWeight','bold'); xlabel('Co-Orientation Angle (rad)','FontName','Arial','FontSize',8,'FontWeight','bold'); ylabel('Normalized Occurence','FontName','Arial','FontSize',8,'FontWeight','bold'); xlim([0 pi]); %y_max = max(n./sum(n)); ylim([0 F_Ylim(case_num)]); set(gca,'XTick',0:pi/4:pi) set(gca,'XTickLabel',{'0','pi/4','pi/2','3pi/4','pi'},'FontSize',8) saveas(figure(Fig_Num), ['COOP_case_num',num2str(case_num),'.fig']); saveas(figure(Fig_Num), ['COOP_case_num',num2str(case_num),'.pdf']); end end Theoretical_Uncor_COOP = Orientation_order_parameter_2_u.*Orientation_order_parameter_1; Theoretical_Corr_COOP = Orientation_order_parameter_2_c./Orientation_order_parameter_1; save('Output_Cor_Uncor_COOP.mat','Theoretical_Uncor_COOP','COOP_Uncor','Theoretical_Corr_COOP','COOP_Cor','Orientation_order_parameter_1','Orientation_order_parameter_2_u','Orientation_order_parameter_2_c');