Entering edit mode
Three ways of doing this:
1. add a boolean gate to the existing GatingSet
#say you want a combination of cytokine gates: '4+/IFNg', '4+/TNFa', '4+/IL2'
#simply construct a booleanFilter object
boolgate <- booleanFilter(`4+/IFNg & 4+/TNFa & 4+/IL2`)
# or
char2booleanFilter("4+/IFNg & 4+/TNFa & 4+/IL2") # takes a character as input which is more programmatic
#then add to GatingSet, if name is not supplied, then the entire expression string is used to name the new gate
add(gs, boolgate, parent="4+", name = "myBool")
#compute the gate
recompute(gs, "myBool")
#get the count
getTotal(gs, "myBool")
#delete the gate if it is no longer needed
Rm("myBool", gs)
2. or there is one wrapper function does all the above steps in one call
#calculate boolean indices
ind.list <- getIndices(gs,quote(`4+/IFNg & 4+/TNFa & 4+/IL2`))
#count the events
count <- lapply(ind.list, function(ind)length(which(ind)))
3. if you don't like the idea of adding new gates, you can grab the event indices from each gate and do the boolean operations on them
#get indices for each gate
ind1.list <- getIndice((gs, 'cd4/IFNg')
ind2.list <- getIndice((gs, 'cd4/TNFa')
ind3.list <- getIndice((gs, 'cd4/IL2')
#combine these indices
ind.list <- mapply(ind1.list, ind2.list, ind3.list, FUN = function(ind1, ind2,ind3)ind1&ind2&ind3)
#count events
count <- lapply(ind.list, function(ind)length(which(ind)))
On 05/29/2015 02:29 AM, John Aponte wrote:
Dear Mike,
We would need to calculate the number of events for boolean combination of gates. I wonder if you could guide me on how this numbers can be obtained?
Best regards
JJ
--
John J. Aponte
