%%%% SCRIPT NAME: Receptors_Def_perCell %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%Define all receptor species
%Initialize receptor lists


ctR = 1;
%%Cell receptors
for i=1:length(Cells)
    
    %%Temporary index of cells to use in creating receptors
    eval(['Cdx.' Cells{i} ' =  i;']);
    
    %%T-cells (name beginning with CD) have CD3 and CD28 receptors
    if(strncmp(Cell_Names{i},'CD',2))
        %%Names with cells
        R1_Lst(ctR) = {['R_' Cell_Names{i} '_CD3']};
        R1_tsAb_Lst(ctR) = {['R_' Cell_Names{i} '_CD3_tsAb']};
        R2_Lst(ctR) = {['R_' Cell_Names{i} '_CD28']};
        R2_tsAb_Lst(ctR) = {['R_' Cell_Names{i} '_CD28_tsAb']};
        %%Names without cells
        R1_LstNC(ctR) = {'CD3'};
        R1_tsAb_LstNC(ctR) = {'CD3_tsAb'};
        R2_LstNC(ctR) = {'CD28'};
        R2_tsAb_LstNC(ctR) = {'CD28_tsAb'};
    elseif(strcmp(Cell_Names{i},'TRGT')||strcmp(Cell_Names{i},'MM'))  %%TRGT cells have CD28 and CD38 
        %Names with cells
        R1_Lst(ctR) = {['R_'  Cell_Names{i} '_CD38']};
        R1_tsAb_Lst(ctR) = {['R_' Cell_Names{i} '_CD38_tsAb']};
        R2_Lst(ctR) = {['R_' Cell_Names{i} '_CD28']};
        R2_tsAb_Lst(ctR) = {['R_' Cell_Names{i} '_CD28_tsAb']};
        %Names without cells
        R1_LstNC(ctR) = {'CD38'};
        R1_tsAb_LstNC(ctR) = {'CD38_tsAb'};
        R2_LstNC(ctR) = {'CD28'};
        R2_tsAb_LstNC(ctR) = {'CD28_tsAb'};  
    else   %%sCD38 - only CD38 receptor
        %Names with cells
        R1_Lst(ctR) = {['R_'  Cell_Names{i} '_CD38']};
        R1_tsAb_Lst(ctR) = {['R_' Cell_Names{i} '_CD38_tsAb']};
        %Names without cells
        R1_LstNC(ctR) = {'CD38'};
        R1_tsAb_LstNC(ctR) = {'CD38_tsAb'};
        %%Only 1 receptor here, but put in zeros for consistency
        R2_Lst(ctR) = {[]};
        R2_tsAb_Lst(ctR) = {[]};
        R2_LstNC(ctR) = {[]};
        R2_tsAb_LstNC(ctR) = {[]};
    end

        ctR = ctR+1;
end

%%Synapse receptors 
%%1st create list for all cell combinations contributing to synapse for
%%on/off rates
ctBr = 1;
for s2i = 1:length(Syn_2cell)
    %%Keep track of receptors for each cell combination leading to synapse
    %%- use to account for new receptors added with each synpase formation
    %%CELL 1
    %%Define Cell1 from synapse name because some change activation status
    %%in synapse
    Ctmp = regexp(Syn_2cell{s2i},'S_(\w+\d*\w*)_CD(3||28)_','tokens');
    Cell1 = Ctmp{1}{1};
    C1R1_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R1_Lst{eval(['Cdx.' Cell1])} ]};
    C1R1_tsAb_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R1_Lst{eval(['Cdx.' Cell1])} '_tsAb']};
    C1R2_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R2_Lst{eval(['Cdx.' Cell1])} ]};
    C1R2_tsAb_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R2_Lst{eval(['Cdx.' Cell1])} '_tsAb']};
    %%%No cells - to use for kon/off
    C1R1_LstNC(ctBr) = {[ R1_LstNC{eval(['Cdx.' Cell1])} ]};
    C1R1_tsAb_LstNC(ctBr) = {[  R1_LstNC{eval(['Cdx.' Cell1])} '_tsAb']};
    C1R2_LstNC(ctBr) = {[ R2_LstNC{eval(['Cdx.' Cell1])} ]};
    C1R2_tsAb_LstNC(ctBr) = {[  R2_LstNC{eval(['Cdx.' Cell1])} '_tsAb']};
    
    %%Add in synapse bridge
    Br_Lst(ctBr) = {[ Syn_2cell{s2i} '_Br']}; 
    %%CELL 2 receptors With Celll
    %%Include receptors for both cells even if cells are the same - need to
    %% account for full number of receptors added to each synapse
    C2R1_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R1_Lst{eval(['Cdx.' Combo_2cell{s2i,2}])} ]};
    C2R1_tsAb_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R1_Lst{eval(['Cdx.' Combo_2cell{s2i,2}])} '_tsAb']};
    %No cell
    C2R1_LstNC(ctBr) = {[  R1_LstNC{eval(['Cdx.' Combo_2cell{s2i,2}])} ]};
    C2R1_tsAb_LstNC(ctBr) = {[ R1_LstNC{eval(['Cdx.' Combo_2cell{s2i,2}])} '_tsAb']};
    %%Check to make sure second receptor exists, i.e. not sCD38
    if(isempty(R2_Lst{eval(['Cdx.' Combo_2cell{s2i,2}])})== 0)
        %If not empty , define receptor 2 name with/without synapse_cell
        %preceding
        C2R2_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R2_Lst{eval(['Cdx.' Combo_2cell{s2i,2}])} ]};
        C2R2_tsAb_Lst(ctBr) = {[ Syn_2cell{s2i} '_' R2_Lst{eval(['Cdx.' Combo_2cell{s2i,2}])} '_tsAb']};
        C2R2_LstNC(ctBr) = {[ R2_LstNC{eval(['Cdx.' Combo_2cell{s2i,2}])} ]};
        C2R2_tsAb_LstNC(ctBr) = {[ R2_LstNC{eval(['Cdx.' Combo_2cell{s2i,2}])} '_tsAb']};
    else
                %%Only 1 receptor here, but put in zeros for consistency
        C2R2_Lst(ctBr) = {[]};
        C2R2_tsAb_Lst(ctBr) = {[]};
         C2R2_LstNC(ctBr) = {[]};
        C2R2_tsAb_LstNC(ctBr) = {[]};
    end
    
    ctBr = ctBr+1;
end

%%Receptors on unique synapses - used for transfer of receptors in
%%activation/killing and drug binding to unbridged synapse receptors
ctBrU = 1;
for s2Ui = 1:length(Syn2Cell_UnqTOT)
    %%Keep track of receptors on each cell
    %%CELL 1
    SynRa_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} ]};
    SynRa_tsAb_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} '_tsAb']};
    SynRb_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} ]};
    SynRb_tsAb_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} '_tsAb']};
    %%Add in synapse bridge
    SynBr_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_Br']};
    
    %%Without synapse name
    SynRa_LstNC(ctBrU) = {[R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} ]};
    SynRa_tsAb_LstNC(ctBrU) = {[R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} '_tsAb']};
    SynRb_LstNC(ctBrU) = {[R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} ]};
    SynRb_tsAb_LstNC(ctBrU) = {[ R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,1}])} '_tsAb']};
    
    %%CELL 2 receptors With Celll -- ONLY ADD IF CELL2 is distinct from
    %%CELL1!!! Skip otherwise bc receptors have been added w Cell1
    if (strcmp(Cells_Syn2_UnqTOT{s2Ui,1},Cells_Syn2_UnqTOT{s2Ui,2})==0)
        SynRc_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} ]};
        SynRc_tsAb_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} '_tsAb']};
         %%Without synapse name
        SynRc_LstNC(ctBrU) = {[ R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} ]};
        SynRc_tsAb_LstNC(ctBrU) = {[R1_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} '_tsAb']};
        
        %%Check to make sure second receptor exists, i.e. not sCD38
        if(isempty(R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])})== 0)
            SynRd_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} ]};
            SynRd_tsAb_Lst(ctBrU) = {[ Syn2Cell_UnqTOT{s2Ui} '_' R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} '_tsAb']};
            %Without synapse name
            SynRd_LstNC(ctBrU) = {[ R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} ]};
            SynRd_tsAb_LstNC(ctBrU) = {[ R2_Lst{eval(['Cdx.' Cells_Syn2_UnqTOT{s2Ui,2}])} '_tsAb']};
        else
            %%Only 1 receptor here, but put in zeros for consistency
            SynRd_Lst(ctBrU) = {[]};
            SynRd_tsAb_Lst(ctBrU) = {[]};
            SynRd_LstNC(ctBrU) = {[]};
            SynRd_tsAb_LstNC(ctBrU) = {[]};
        end
    else   %If two cells are the same, only list one set of receptors
        SynRc_Lst(ctBrU)  = {[]};
        SynRc_tsAb_Lst(ctBrU)  = {[]};
        SynRd_Lst(ctBrU) = {[]};
        SynRd_tsAb_Lst(ctBrU) = {[]};
        SynRc_LstNC(ctBrU)  = {[]};
        SynRc_tsAb_LstNC(ctBrU)  = {[]};
        SynRd_LstNC(ctBrU) = {[]};
        SynRd_tsAb_LstNC(ctBrU) = {[]};
    end
    ctBrU = ctBrU+1;

end

%Generate list of names to use with cells included to create index
%%Only include non-zero names
R2nz = setdiff([1:length(R2_Lst)],find(cellfun('isempty',R2_Lst(:))));
SynR2cnz = setdiff([1:length( SynRc_Lst)],find(cellfun('isempty', SynRc_Lst(:))));
SynR2dnz = setdiff([1:length( SynRd_Lst)],find(cellfun('isempty', SynRd_Lst(:))));
%Brnz = setdiff([1:length(SynBr_Lst)],find(cellfun('isempty',SynBr_Lst(:))));
Receptor_Names = [R1_Lst R1_tsAb_Lst R2_Lst(R2nz) R2_tsAb_Lst(R2nz) SynRa_Lst SynRa_tsAb_Lst...
    SynRb_Lst SynRb_tsAb_Lst SynRc_Lst(SynR2cnz) SynRc_tsAb_Lst(SynR2cnz) SynRd_Lst(SynR2dnz) SynRd_tsAb_Lst(SynR2dnz) SynBr_Lst];

Receptor_Species = length(Receptor_Names);
