%% example RF model, with explanation
clear all; close all

% Inter-cluster
Nc = 20;            % number of clusters
Pc = 0.1;           % probability of cluster-unit connection for long-range input 
r = 1;              % power-law exponent for inter-cluster connection probability; or probability of connection in spatially-uniform model (0 < r < 1)

% Intra-cluster
nn = 50;            % number of units per cluster
P = 0.7;            % proportion of projection units per cluster
C = 0.1;            % probability of connection for each local interneuron
Sp = 1;             % all projection neurons receive sensory input
Si = 0;           % proportion of interneurons receiving sensory input
Ip = 0;           % proportion of inhibitory projection neurons
Ii = 1;             % proportion of inhibitory interneurons

% simulation parameters
max_steps = 1;      % to just get structure;
max_steps = 1e4;   % to run dynamic simulation; maximum number of time-steps
con = 1e-4;         % convergence criteria
theta = 0;          % unit threshold
seed = 1;           % random number generator seed
flag = 'fi'; W = 0.1;  % probably point attractor model; constant weight for all connections: note that this sets it for +ve connections as flag 'i' is also selected
flag = 'fi'; W = 0.5;  % probably oscillatory model; constant weight for all connections: note that this sets it for +ve connections as flag 'i' is also selected


% input
S = zeros(Nc,1);    % per-cluster input
S(1) = 0.5;
S(8) = 0.5;

% pattern = zeros(Nc * nn,1);
% pattern(50) = 1;

% rand('state',2);
% per = 0.01;
%pattern = zeros(Nc*nn,1);
% pattern(rand(Nc*nn,1) <= per) = 1;
% S = pattern;

%% build model, and run as network if required
% NOTES: to just assess RF model's structure, set NC, C, Pc, P, and r to
% required values and MAX = 1 so that simulation is not run. 
[clust_out,clust_act,Proj_units,steps_elapsed,Clust_con,S_clust,proj_out,samp] = discrete_cluster1(Nc,nn,C,Pc,Sp,Si,P,Ip,Ii,r,con,max_steps,theta,S,seed,flag,[],[],W);

%% show output
if steps_elapsed > 1
    [total_clust_out clust_order] = sort(sum(proj_out));
    fliplr(clust_order) % so that highest output is first on list

    all_out = reshape(clust_out,nn,Nc);

    %%% plot of all activity
    figure
    pcolor(samp)
    shading('flat')

    %%% time-series from a random sample of 5% of neurons
    T = Nc*nn;
    idxs = ceil(rand(round(T*0.05),1) * T);
    idxs = sort(idxs); tseries = samp(idxs,1:end)';
    figure
    plot(tseries); xlabel('Time'); ylabel('Activity'); 
    axis([0 steps_elapsed -0.05 1.05])
end