####################################################################
i = "ID19_16_048_ACC2583_Tube_013.fcs"
i= "ID18_02_104_ACC2673_Tube_013.fcs"
file_full = paste0("D://TCyto/",i)
FCS = read.FCS(file_full)
colnames(FCS)[which(colnames(FCS)=="SSC-A")] <- "SSCA"
colnames(FCS)[which(colnames(FCS)=="FSC-A")] <- "FSCA"
colnames(FCS)[which(colnames(FCS)=="Pacific Orange-A")] <- "CD8"
colnames(FCS)[which(colnames(FCS)=="Pacific Blue-A")] <- "CD4"
colnames(FCS)[which(colnames(FCS)=="PE-Texas Red-A")] <- "CD45RA"
colnames(FCS)[which(colnames(FCS)== "APC-Cy7-A")] <- "CD27"
colnames(FCS)[which(colnames(FCS)=="PE-Cy7-A")] <- "CCR7"
colnames(FCS)[which(colnames(FCS)=="PE-Cy5-A")] <- "CD3"
colnames(FCS)[which(colnames(FCS)=="PE-A")] <- "GranzA"
colnames(FCS)[which(colnames(FCS)=="FITC-A")] <- "Perf"
colnames(FCS)[which(colnames(FCS)=="APC-A")] <- "CD28"
colnames(FCS)[which(colnames(FCS)=="Alexa Fluor 700-A")] <- "GranB"
library(ggcyto)
biexp  <- biexponentialTransform("myTransform",w=10)
myTrans <-  transformList(c('CD8','CD4',"SSCA","FSCA","CD3","Perf",
                            "CD28","CD27","GranzA","CD45RA","CCR7","GranB"), biexp)
FCS1 = transform(FCS, myTrans)
# write FCS file in Flow 
outFile <- file.path("D://FCS2.fcs")
## now write out into a file
write.FCS(FCS1, outFile)
[1] "D://FCS2.fcs"
library(ncdfFlow)
file_full1 = "D://FCS2.fcs"
fs1<-read.flowSet(file_full1)
p4 <- ggcyto(fs1, aes(x =CD4, y = CD8)) + geom_hex(bins = 128)
rect.g <- rectangleGate(list("CD4" =  c(17,20), "CD8" = c(12,20)))
rect.gates <- sapply(sampleNames(fs1), function(sn)rect.g)
p4 + geom_gate(rect.gates) + geom_stats() + annotate(geom = "text", x = 18, y = 14, label  = "CD4+", color = "red")

T2 <- (FCS1@exprs)
M = T2[,c("SSCA","FSCA","CD3","CD4","CD8")]
M1 = T2[,c("SSCA","FSCA","CD4","CD8")]
cellevents <- M1
b_tree = CytomeTree(M1, force_first_markers = c("FSCA","SSCA","CD4","CD8"), minleaf = 20)

  |                                                                                        
  |                                                                                  |   0%mc_uni_df 2 mc_uni_loglik  -181377.3 
mc_mix_df 4 mc_mix_loglik  -114064.8 
n 224129 
mc_uni_df 2 mc_uni_loglik  -181377.3 
mc_mix_df 4 mc_mix_loglik  -114064.8 
n 224129 

  |                                                                                        
  |====================                                                              |  25%mc_uni_df 2 mc_uni_loglik  -1365.216 
mc_mix_df 4 mc_mix_loglik  33.64744 
n 57038 
mc_uni_df 2 mc_uni_loglik  -1365.216 
mc_mix_df 4 mc_mix_loglik  33.64744 
n 57038 
mc_uni_df 2 mc_uni_loglik  12030.84 
mc_mix_df 4 mc_mix_loglik  17767.38 
n 167091 
mc_uni_df 2 mc_uni_loglik  12030.84 
mc_mix_df 4 mc_mix_loglik  17767.38 
n 167091 

  |                                                                                        
  |=========================================                                         |  50%mc_uni_df 2 mc_uni_loglik  -4238.662 
mc_mix_df 4 mc_mix_loglik  -3701.914 
n 1566 
mc_uni_df 2 mc_uni_loglik  -4238.662 
mc_mix_df 4 mc_mix_loglik  -3701.914 
n 1566 
mc_uni_df 2 mc_uni_loglik  -130580.7 
mc_mix_df 4 mc_mix_loglik  -115339.8 
n 55472 
mc_uni_df 2 mc_uni_loglik  -130580.7 
mc_mix_df 4 mc_mix_loglik  -115339.8 
n 55472 
mc_uni_df 2 mc_uni_loglik  -21312.24 
mc_mix_df 4 mc_mix_loglik  -21312.85 
n 20717 
Unable to force split on CD4 for some node at level3
mc_uni_df 2 mc_uni_loglik  -105660.2 
mc_mix_df 4 mc_mix_loglik  -105666.3 
n 146374 
mc_uni_df 2 mc_uni_loglik  -105660.2 
mc_mix_df 4 mc_mix_loglik  -105666.3 
n 146374 

  |                                                                                        
  |==============================================================                    |  75%mc_uni_df 2 mc_uni_loglik  -748.2666 
mc_mix_df 4 mc_mix_loglik  -519.4429 
n 319 
mc_uni_df 2 mc_uni_loglik  -748.2666 
mc_mix_df 4 mc_mix_loglik  -519.4429 
n 319 
mc_uni_df 2 mc_uni_loglik  -2472.853 
mc_mix_df 4 mc_mix_loglik  -1918.037 
n 1247 
mc_uni_df 2 mc_uni_loglik  -2472.853 
mc_mix_df 4 mc_mix_loglik  -1918.037 
n 1247 
mc_uni_df 2 mc_uni_loglik  -6441.649 
mc_mix_df 4 mc_mix_loglik  -6441.541 
n 3203 
mc_uni_df 2 mc_uni_loglik  -6441.649 
mc_mix_df 4 mc_mix_loglik  -6441.541 
n 3203 
mc_uni_df 2 mc_uni_loglik  -88231.23 
mc_mix_df 4 mc_mix_loglik  -82805 
n 52269 
mc_uni_df 2 mc_uni_loglik  -88231.23 
mc_mix_df 4 mc_mix_loglik  -82805 
n 52269 
mc_uni_df 2 mc_uni_loglik  -52.05245 
mc_mix_df 4 mc_mix_loglik  -52.05768 
n 115 
mc_uni_df 2 mc_uni_loglik  -52.05245 
mc_mix_df 4 mc_mix_loglik  -52.05768 
n 115 
mc_uni_df 2 mc_uni_loglik  -95787.72 
mc_mix_df 4 mc_mix_loglik  -95793.47 
n 146259 
mc_uni_df 2 mc_uni_loglik  -95787.72 
mc_mix_df 4 mc_mix_loglik  -95793.47 
n 146259 

  |                                                                                        
  |==================================================================================| 100%
## ------------------------------------------------------------------------
# getting the only the cell events with the 3 markers measured:
#load("C:/Users/tranh/Documents/GitHub/Best.Rdata")
Tree_Partition <- b_tree$labels
Annot = Annotation(b_tree,K2markers = c("SSCA","FSCA","CD4","CD8"))

#Annot = Annbtree_annot
phenotypes <- list()
AA <- rbind(c("SSCA", 0), 
                 c("FSCA", 0))
                 
phenotypes[[1]] <- AA
BB <- rbind(c("SSCA", 1), 
                  c("FSCA", 1))
                  
phenotypes[[2]] <- BB
AB <- rbind(c("SSCA", 0), 
                 c("FSCA", 1))
                 
phenotypes[[3]] <- AB
BA <- rbind(c("SSCA", 1), 
                        c("FSCA", 0))
                        
            
phenotypes[[4]] <- BA 
methodd <- Populations <- X <- Y <- c()
#PhenoInfos <- RetrievePops(Annot, phenotypes)
PhenoInfos <- RetrievePops_p(b_tree, phenotypes)
MergedPops <- PhenoInfos$phenotypesinfo
AA <- MergedPops[[1]][length(MergedPops[[1]])]
BB <- MergedPops[[2]][length(MergedPops[[2]])]
AB <- MergedPops[[3]][length(MergedPops[[3]])]
BA <- MergedPops[[4]][length(MergedPops[[4]])]
MergedPartition <- PhenoInfos$Mergedleaves
ind_ <- MergedPartition%in%c(AA,BB,AB,BA) 
label2 <- MergedPartition[ind_]
LABEL2 <- rep(NA, length(label2))
LABEL2[label2 ==  AA] <- "SSCA-/FSCA-"
LABEL2[label2 ==  BB] <- "SSCA+/FSCA+"
LABEL2[label2 ==  AB] <- "SSCA-/FSCA+"
LABEL2[label2 ==  BA] <- "SSCA+/FSCA-"
mydf = data.frame(M1[,c("SSCA","FSCA")],LABEL2)
q <- ggplot(mydf, aes(x = SSCA, y =  FSCA,
                      color = LABEL2)) +
  geom_point(alpha = 0.2,cex = 1)+
  #Dscale_colour_manual(values = c("green" , "cyan","blue","red") )+
   theme_bw()+ geom_hex(bins=120) + scale_fill_viridis()+
  
  
  theme(legend.position="bottom")+
  ylab("SSCA")+
  xlab("FSCA")+
  guides(colour = guide_legend(override.aes = list(alpha=1, size = 2)))
q 

# 
# q <- ggplot(mydf, aes(x = SSCA, y =  FSCA
#                       )) +
#   geom_point(alpha = 0.2,cex = 1)+
#   #Dscale_colour_manual(values = c("green" , "cyan","blue","red") )+
#   theme_bw()+ geom_hex(bins=120) + scale_fill_viridis()+
#   
#   
#   theme(legend.position="bottom")+
#   ylab("SSCA")+
#   xlab("FSCA")+
#   guides(colour = guide_legend(override.aes = list(alpha=1, size = 2)))
# q 
# 
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQoNCg0KaSA9ICJJRDE5XzE2XzA0OF9BQ0MyNTgzX1R1YmVfMDEzLmZjcyINCg0KaT0gIklEMThfMDJfMTA0X0FDQzI2NzNfVHViZV8wMTMuZmNzIg0KZmlsZV9mdWxsID0gcGFzdGUwKCJEOi8vVEN5dG8vIixpKQ0KDQpGQ1MgPSByZWFkLkZDUyhmaWxlX2Z1bGwpDQoNCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IlNTQy1BIildIDwtICJTU0NBIg0KY29sbmFtZXMoRkNTKVt3aGljaChjb2xuYW1lcyhGQ1MpPT0iRlNDLUEiKV0gPC0gIkZTQ0EiDQoNCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IlBhY2lmaWMgT3JhbmdlLUEiKV0gPC0gIkNEOCINCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IlBhY2lmaWMgQmx1ZS1BIildIDwtICJDRDQiDQpjb2xuYW1lcyhGQ1MpW3doaWNoKGNvbG5hbWVzKEZDUyk9PSJQRS1UZXhhcyBSZWQtQSIpXSA8LSAiQ0Q0NVJBIg0KY29sbmFtZXMoRkNTKVt3aGljaChjb2xuYW1lcyhGQ1MpPT0gIkFQQy1DeTctQSIpXSA8LSAiQ0QyNyINCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IlBFLUN5Ny1BIildIDwtICJDQ1I3Ig0KY29sbmFtZXMoRkNTKVt3aGljaChjb2xuYW1lcyhGQ1MpPT0iUEUtQ3k1LUEiKV0gPC0gIkNEMyINCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IlBFLUEiKV0gPC0gIkdyYW56QSINCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IkZJVEMtQSIpXSA8LSAiUGVyZiINCmNvbG5hbWVzKEZDUylbd2hpY2goY29sbmFtZXMoRkNTKT09IkFQQy1BIildIDwtICJDRDI4Ig0KY29sbmFtZXMoRkNTKVt3aGljaChjb2xuYW1lcyhGQ1MpPT0iQWxleGEgRmx1b3IgNzAwLUEiKV0gPC0gIkdyYW5CIg0KDQpsaWJyYXJ5KGdnY3l0bykNCg0KDQoNCg0KYmlleHAgIDwtIGJpZXhwb25lbnRpYWxUcmFuc2Zvcm0oIm15VHJhbnNmb3JtIix3PTEwKQ0KDQoNCg0KbXlUcmFucyA8LSAgdHJhbnNmb3JtTGlzdChjKCdDRDgnLCdDRDQnLCJTU0NBIiwiRlNDQSIsIkNEMyIsIlBlcmYiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRDI4IiwiQ0QyNyIsIkdyYW56QSIsIkNENDVSQSIsIkNDUjciLCJHcmFuQiIpLCBiaWV4cCkNCg0KDQpGQ1MxID0gdHJhbnNmb3JtKEZDUywgbXlUcmFucykNCg0KDQoNCiMgd3JpdGUgRkNTIGZpbGUgaW4gRmxvdyANCg0KDQpvdXRGaWxlIDwtIGZpbGUucGF0aCgiRDovL0ZDUzIuZmNzIikNCg0KIyMgbm93IHdyaXRlIG91dCBpbnRvIGEgZmlsZQ0Kd3JpdGUuRkNTKEZDUzEsIG91dEZpbGUpDQoNCg0KDQoNCg0KbGlicmFyeShuY2RmRmxvdykNCg0KZmlsZV9mdWxsMSA9ICJEOi8vRkNTMi5mY3MiDQoNCmZzMTwtcmVhZC5mbG93U2V0KGZpbGVfZnVsbDEpDQoNCnA0IDwtIGdnY3l0byhmczEsIGFlcyh4ID1DRDQsIHkgPSBDRDgpKSArIGdlb21faGV4KGJpbnMgPSAxMjgpDQoNCnJlY3QuZyA8LSByZWN0YW5nbGVHYXRlKGxpc3QoIkNENCIgPSAgYygxNywyMCksICJDRDgiID0gYygxMiwyMCkpKQ0KcmVjdC5nYXRlcyA8LSBzYXBwbHkoc2FtcGxlTmFtZXMoZnMxKSwgZnVuY3Rpb24oc24pcmVjdC5nKQ0KDQpwNCArIGdlb21fZ2F0ZShyZWN0LmdhdGVzKSArIGdlb21fc3RhdHMoKSArIGFubm90YXRlKGdlb20gPSAidGV4dCIsIHggPSAxOCwgeSA9IDE0LCBsYWJlbCAgPSAiQ0Q0KyIsIGNvbG9yID0gInJlZCIpDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KVDIgPC0gKEZDUzFAZXhwcnMpDQoNCg0KDQoNCg0KDQoNCg0KTSA9IFQyWyxjKCJTU0NBIiwiRlNDQSIsIkNEMyIsIkNENCIsIkNEOCIpXQ0KDQpNMSA9IFQyWyxjKCJTU0NBIiwiRlNDQSIsIkNENCIsIkNEOCIpXQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KY2VsbGV2ZW50cyA8LSBNMQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KYl90cmVlID0gQ3l0b21lVHJlZShNMSwgZm9yY2VfZmlyc3RfbWFya2VycyA9IGMoIkZTQ0EiLCJTU0NBIiwiQ0Q0IiwiQ0Q4IiksIG1pbmxlYWYgPSAyMCkNCg0KDQojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgZ2V0dGluZyB0aGUgb25seSB0aGUgY2VsbCBldmVudHMgd2l0aCB0aGUgMyBtYXJrZXJzIG1lYXN1cmVkOg0KDQoNCg0KDQojbG9hZCgiQzovVXNlcnMvdHJhbmgvRG9jdW1lbnRzL0dpdEh1Yi9CZXN0LlJkYXRhIikNCg0KVHJlZV9QYXJ0aXRpb24gPC0gYl90cmVlJGxhYmVscw0KDQpBbm5vdCA9IEFubm90YXRpb24oYl90cmVlLEsybWFya2VycyA9IGMoIlNTQ0EiLCJGU0NBIiwiQ0Q0IiwiQ0Q4IikpDQoNCiNBbm5vdCA9IEFubmJ0cmVlX2Fubm90DQoNCnBoZW5vdHlwZXMgPC0gbGlzdCgpDQoNCg0KQUEgPC0gcmJpbmQoYygiU1NDQSIsIDApLCANCiAgICAgICAgICAgICAgICAgYygiRlNDQSIsIDApKQ0KICAgICAgICAgICAgICAgICANCnBoZW5vdHlwZXNbWzFdXSA8LSBBQQ0KDQoNCg0KQkIgPC0gcmJpbmQoYygiU1NDQSIsIDEpLCANCiAgICAgICAgICAgICAgICAgIGMoIkZTQ0EiLCAxKSkNCiAgICAgICAgICAgICAgICAgIA0KcGhlbm90eXBlc1tbMl1dIDwtIEJCDQoNCg0KDQpBQiA8LSByYmluZChjKCJTU0NBIiwgMCksIA0KICAgICAgICAgICAgICAgICBjKCJGU0NBIiwgMSkpDQogICAgICAgICAgICAgICAgIA0KcGhlbm90eXBlc1tbM11dIDwtIEFCDQoNCg0KDQoNCkJBIDwtIHJiaW5kKGMoIlNTQ0EiLCAxKSwgDQogICAgICAgICAgICAgICAgICAgICAgICBjKCJGU0NBIiwgMCkpDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KcGhlbm90eXBlc1tbNF1dIDwtIEJBIA0KDQoNCm1ldGhvZGQgPC0gUG9wdWxhdGlvbnMgPC0gWCA8LSBZIDwtIGMoKQ0KDQojUGhlbm9JbmZvcyA8LSBSZXRyaWV2ZVBvcHMoQW5ub3QsIHBoZW5vdHlwZXMpDQpQaGVub0luZm9zIDwtIFJldHJpZXZlUG9wc19wKGJfdHJlZSwgcGhlbm90eXBlcykNCk1lcmdlZFBvcHMgPC0gUGhlbm9JbmZvcyRwaGVub3R5cGVzaW5mbw0KDQoNCg0KDQoNCkFBIDwtIE1lcmdlZFBvcHNbWzFdXVtsZW5ndGgoTWVyZ2VkUG9wc1tbMV1dKV0NCkJCIDwtIE1lcmdlZFBvcHNbWzJdXVtsZW5ndGgoTWVyZ2VkUG9wc1tbMl1dKV0NCkFCIDwtIE1lcmdlZFBvcHNbWzNdXVtsZW5ndGgoTWVyZ2VkUG9wc1tbM11dKV0NCkJBIDwtIE1lcmdlZFBvcHNbWzRdXVtsZW5ndGgoTWVyZ2VkUG9wc1tbNF1dKV0NCk1lcmdlZFBhcnRpdGlvbiA8LSBQaGVub0luZm9zJE1lcmdlZGxlYXZlcw0KDQoNCmluZF8gPC0gTWVyZ2VkUGFydGl0aW9uJWluJWMoQUEsQkIsQUIsQkEpIA0KDQoNCg0KDQpsYWJlbDIgPC0gTWVyZ2VkUGFydGl0aW9uW2luZF9dDQpMQUJFTDIgPC0gcmVwKE5BLCBsZW5ndGgobGFiZWwyKSkNCkxBQkVMMltsYWJlbDIgPT0gIEFBXSA8LSAiU1NDQS0vRlNDQS0iDQpMQUJFTDJbbGFiZWwyID09ICBCQl0gPC0gIlNTQ0ErL0ZTQ0ErIg0KTEFCRUwyW2xhYmVsMiA9PSAgQUJdIDwtICJTU0NBLS9GU0NBKyINCkxBQkVMMltsYWJlbDIgPT0gIEJBXSA8LSAiU1NDQSsvRlNDQS0iDQoNCm15ZGYgPSBkYXRhLmZyYW1lKE0xWyxjKCJTU0NBIiwiRlNDQSIpXSxMQUJFTDIpDQoNCg0KDQoNCnEgPC0gZ2dwbG90KG15ZGYsIGFlcyh4ID0gU1NDQSwgeSA9ICBGU0NBLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gTEFCRUwyKSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC4yLGNleCA9IDEpKw0KICAjRHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiZ3JlZW4iICwgImN5YW4iLCJibHVlIiwicmVkIikgKSsNCiAgIHRoZW1lX2J3KCkrIGdlb21faGV4KGJpbnM9MTIwKSArIHNjYWxlX2ZpbGxfdmlyaWRpcygpKw0KICANCiAgDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIikrDQogIHlsYWIoIlNTQ0EiKSsNCiAgeGxhYigiRlNDQSIpKw0KICBndWlkZXMoY29sb3VyID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGE9MSwgc2l6ZSA9IDIpKSkNCnEgDQoNCg0KIyANCiMgcSA8LSBnZ3Bsb3QobXlkZiwgYWVzKHggPSBTU0NBLCB5ID0gIEZTQ0ENCiMgICAgICAgICAgICAgICAgICAgICAgICkpICsNCiMgICBnZW9tX3BvaW50KGFscGhhID0gMC4yLGNleCA9IDEpKw0KIyAgICNEc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJncmVlbiIgLCAiY3lhbiIsImJsdWUiLCJyZWQiKSApKw0KIyAgIHRoZW1lX2J3KCkrIGdlb21faGV4KGJpbnM9MTIwKSArIHNjYWxlX2ZpbGxfdmlyaWRpcygpKw0KIyAgIA0KIyAgIA0KIyAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIikrDQojICAgeWxhYigiU1NDQSIpKw0KIyAgIHhsYWIoIkZTQ0EiKSsNCiMgICBndWlkZXMoY29sb3VyID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGE9MSwgc2l6ZSA9IDIpKSkNCiMgcSANCiMgDQoNCg0KDQoNCmBgYA0KDQo=