function generate_fig(Features_opt, plot_flag)

% function plotting(Features_opt, data_type)
% This contains functions for plotting output from model
% INPUTS
% Features_opt - A vector of features (firing rates and frequency)
%                obtained from the model.
% plot_flag    - If plot_flag = 1 then it plots figures from 
%                full_long_weight20_pooled.mat. If plot_flag = 2 then it
%                plots figures from zerowsc_long_weight20_pooled.mat. 

% Set plot layout parameters
fontsize = 5;
labelsize = 6;
annotation_horz_pos = -1.6;
annotation_vert_pos = 0.5;
annotate_fontsize = 8;

% extract variables
minSTN  = cell2mat(Features_opt(1));
meanSTN = cell2mat(Features_opt(2));
maxSTN  = cell2mat(Features_opt(3));
minGPe  = cell2mat(Features_opt(4));
meanGPe = cell2mat(Features_opt(5));
maxGPe  = cell2mat(Features_opt(6)); 
freq    = cell2mat(Features_opt(7)); 
x1      = cell2mat(Features_opt(8));  %STN firing rate of intact model
y1      = cell2mat(Features_opt(9));  %GPe firing rate of intact model
x2      = cell2mat(Features_opt(10)); %STN firing rate of model with wgs =0
y2      = cell2mat(Features_opt(11)); %GPe firing rate of modelwith wgs = 0
x3      = cell2mat(Features_opt(12)); %STN firing rate of model with wsg = 0
y3      = cell2mat(Features_opt(13)); %GPe firing rate of model with wsg = 0
x4      = cell2mat(Features_opt(14)); %STN firing rate of model with wcs = 0
y4      = cell2mat(Features_opt(15)); %GPe firing rate of model with wcs = 0
x5      = cell2mat(Features_opt(18)); %str = 0
y5      = cell2mat(Features_opt(19)); %str = 0
x6      = cell2mat(Features_opt(16)); %STN firing rate of model with wsc = 0
y6      = cell2mat(Features_opt(17)); %GPe firing rate of model with wsc = 0


%% 
    % firing rates of single neurons
    experimental = [5, 65, 125, 45, 100, 155, 14];  
    simulation = [minSTN, meanSTN, maxSTN, minGPe, meanGPe, maxGPe, freq];
    
if plot_flag == 1;    
    hFig = figure;
    set(hFig, 'Position', [0 0 700 1000])   
    plot_flag_vec = [1,3,5,7,9,11,13];
elseif plot_flag == 2; 
    plot_flag_vec = [2,4,6,8,10,12,14];
    hold on;
end

subplot(7,2, plot_flag_vec(7))
plot(experimental, 'x',...
    'LineStyle','none',...
    'LineWidth', 2, ...
    'MarkerSize',6,...
    'MarkerEdgeColor','b',...
    'MarkerFaceColor',[0, 0, 1])

set(gca, 'Units', 'Normalized');
Labels = {'minSTN','meanSTN','maxSTN','minGPe','meanGPe','maxGPe','freq'};
xticks = 1:7; 
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'XMinorTick'  , 'off'                        , ...
    'YMinorTick'  , 'off'                        , ...
    'XTick'       , xticks                       , ...
    'XTickLabel'  , Labels                       , ...
    'FontSize'    , fontsize                         );
rotateXLabels(gca(), 90)

hold on;
subplot(7,2,plot_flag_vec(7))
plot(simulation,'o',...
    'LineStyle','none',...
    'MarkerSize',5,...
    'MarkerEdgeColor','b',...
    'MarkerFaceColor',[1, 0, 0])

grid on
if plot_flag == 1;

h_legend = legend('experimental','simulation');
lh=findall(gcf,'tag','legend');
lp=get(lh,'position');
set(lh,'position',[0.40,0.185,lp(3:4)]);

set(h_legend,'FontSize',fontsize);
ylabel({'Firing rate (spk/s) or' ;'oscillation frequency (Hz)'},'fontsize',fontsize)
hold off
end

%% 

subplot(7,2,plot_flag_vec(1))
plot(x1,y1)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end
if plot_flag == 1;
h_legend = legend('STN','GP', 'E', 'I');
set(h_legend,'FontSize',fontsize);
end

% Headers for set of subplots
if plot_flag == 1;
    descr = {'Resonance Model'};
    ax = gca;
    axes(ax) 
    text(0.3,250,descr,'fontsize',10);
elseif plot_flag == 2;
    descr = {'Feedback Model'};
    ax = gca;
    axes(ax) 
    text(0.3,370,descr,'fontsize',10);
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                           );

descr = {'Intact'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

%% 
subplot(7,2,plot_flag_vec(2))
plot(x2,y2)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                               );

descr = {'W_{GS}=0'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,0,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

subplot(7,2,plot_flag_vec(3))
plot(x3,y3)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                               );

descr = {'W_{SG}=0'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,0,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

%%
subplot(7,2,plot_flag_vec(4))
plot(x4,y4)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                               );

descr = {'W_{CS}=0'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,0,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

%% 
subplot(7,2,plot_flag_vec(5))
plot(x5,y5)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                               );

descr = {'Str = 0'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,0,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

%% 
subplot(7,2,plot_flag_vec(6))
plot(x6,y6)
if plot_flag == 1;
ylabel('Firing rate (spk/s)','fontsize',fontsize)
end
xlabel('Time (s)','fontsize',fontsize)
xlabh = gca();

if plot_flag == 1;
    ylimits = ylim; 
set(get(xlabh, 'XLabel'), 'Position', [0.5 -ylimits(2)/6 0])
elseif plot_flag == 2;
    ylimits = ylim; 
set(get(xlabh, 'XLabel'), 'Position', [0.5 -ylimits(2)/6 0])
end

set(gca, 'Units', 'Normalized');
set(gca, ...
    'Box'         , 'on'                        , ...
    'LooseInset'  , get(gca, 'TightInset') * 1.5 , ...
    'TickDir'     , 'in'                         , ...
    'TickLength'  , [.02 .02]                    , ...
    'LineWidth'   , 1                            , ...
    'FontSize'    , labelsize                               );

descr = {'w_{SC} = 0'};
ax = gca;
axes(ax) 
h = text(annotation_horz_pos,annotation_vert_pos,0,descr,'fontsize',annotate_fontsize);
set(h, 'rotation', 90)

%% 
save_handle = subplot(7,2,plot_flag_vec(6));
saveas(save_handle, 'output_figure')

end