cytoqc for lyoplate

QC for tcell panel

library(flowCore)
library(flowWorkspace)
library(cytoqc)
path <- "~/remote/fh/fast/gottardo_r/mike_working/lyoplate_out/parsed"
centers <- c('BIIR','CIMR','Miami','NHLBI','Stanford','UCLA','Yale')

Load gs

QC Check gates

group_id nObject gate
2 5 4- 8+, 4- 8+/38- DR-, 4- 8+/38- DR+, 4- 8+/38+ DR-, 4- 8+/38+ DR+, 4- 8+/CCR7- 45RA-, 4- 8+/CCR7- 45RA+, 4- 8+/CCR7+ 45RA-, 4- 8+/CCR7+ 45RA+, 4+ 8-, 4+ 8-/38- DR-, 4+ 8-/38- DR+, 4+ 8-/38+ DR-, 4+ 8-/38+ DR+, 4+ 8-/CCR7- 45RA-, 4+ 8-/CCR7- 45RA+, 4+ 8-/CCR7+ 45RA-, 4+ 8-/CCR7+ 45RA+, CD3, DNT, DPT, LYM, not dead, root, singlets
1 2 4- 8+, 4- 8+/38- DR-, 4- 8+/38- DR+, 4- 8+/38+ DR-, 4- 8+/38+ DR+, 4- 8+/CCR7- 45RA-, 4- 8+/CCR7- 45RA+, 4- 8+/CCR7+ 45RA-, 4- 8+/CCR7+ 45RA+, 4+ 8-, 4+ 8-/38- DR-, 4+ 8-/38- DR+, 4+ 8-/38+ DR-, 4+ 8-/38+ DR+, 4+ 8-/CCR7- 45RA-, 4+ 8-/CCR7- 45RA+, 4+ 8-/CCR7+ 45RA-, 4+ 8-/CCR7+ 45RA+, CD3, DNT, DPT, LYM, not dead, root
group_id nObject gate
2 5 singlets

group_id Not in reference Missing channels
2 singlets
Proposed change
singlets
group_id nObject gate
1 7 4- 8+, 4- 8+/38- DR-, 4- 8+/38- DR+, 4- 8+/38+ DR-, 4- 8+/38+ DR+, 4- 8+/CCR7- 45RA-, 4- 8+/CCR7- 45RA+, 4- 8+/CCR7+ 45RA-, 4- 8+/CCR7+ 45RA+, 4+ 8-, 4+ 8-/38- DR-, 4+ 8-/38- DR+, 4+ 8-/38+ DR-, 4+ 8-/38+ DR+, 4+ 8-/CCR7- 45RA-, 4+ 8-/CCR7- 45RA+, 4+ 8-/CCR7+ 45RA-, 4+ 8-/CCR7+ 45RA+, CD3, DNT, DPT, LYM, not dead, root

QC check for channel

group_id nObject channel
1 1 <Alexa Fluor 488-A>, <AmCyan-A>, <APC-A>, <APC-Cy7-A>, <Pacific Blue-A>, <PE YG-A>, <PE-Cy7 YG-A>, <PerCP-Cy5-5-A>, FSC-A, SSC-A, Time
2 1 <Am Cyan-A>, <APC-A>, <APC-Cy7-A>, <FITC-A>, <Pacific Blue-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, FSC-A, FSC-H, FSC-W, SSC-A, SSC-H, SSC-W, Time
3 1 <AmCyan-A>, <APC-A>, <APC-Cy7-A>, <FITC-A>, <Pacific Blue-A>, <PE Cy7 YG-A>, <PE-A>, <PerCP-Cy5-5-A>, FSC-A, FSC-W, SSC-A, SSC-W, Time
4 1 <APC-A>, <APC-Cy7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, SSC-A, Time
5 1 <APC-A>, <APC-H7-A>, <BD Horizon V450-A>, <BD Horizon V500-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, FSC-A, FSC-H, FSC-W, SSC-A, SSC-H, SSC-W, Time
6 1 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, FSC-H, SSC-A, SSC-H, Time
7 1 <B515-A>, <B710-A>, <G560-A>, <G780-A>, <R660-A>, <R780-A>, <V450-A>, <V545-A>, FSC-A, FSC-H, FSC-W, SSC-A, SSC-H, SSC-W, Time
group_id nObject channel
1 1 <Alexa Fluor 488-A>, <AmCyan-A>, <APC-A>, <APC-Cy7-A>, <Pacific Blue-A>, <PE YG-A>, <PE-Cy7 YG-A>, <PerCP-Cy5-5-A>
2 1 <Am Cyan-A>, <APC-A>, <APC-Cy7-A>, <FITC-A>, <Pacific Blue-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, FSC-H, FSC-W, SSC-H, SSC-W
3 1 <AmCyan-A>, <APC-A>, <APC-Cy7-A>, <FITC-A>, <Pacific Blue-A>, <PE Cy7 YG-A>, <PE-A>, <PerCP-Cy5-5-A>, FSC-W, SSC-W
4 1 <APC-A>, <APC-Cy7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>
5 1 <APC-A>, <APC-H7-A>, <BD Horizon V450-A>, <BD Horizon V500-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, FSC-H, FSC-W, SSC-H, SSC-W
6 1 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-H, SSC-H
7 1 <B515-A>, <B710-A>, <G560-A>, <G780-A>, <R660-A>, <R780-A>, <V450-A>, <V545-A>, FSC-H, FSC-W, SSC-H, SSC-W

Channels are very different across centers so move on to check marker

group_id nObject marker
6 2 CD197, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, Live Green
1 1 CCR7 PE, CD3 V450, CD38 APC, CD4 PerCP-Cy55, CD45RA PE-Cy7, CD8 APC-H7, HLA-DR V500, Live Dead FITC
2 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA DR, Live/Dead
3 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE
4 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLADR, LIVE_GREEN
5 1 CD197, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE DEAD
group_id nObject marker
6 2 CD197, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, Live Green
1 1 CCR7 PE, CD3 V450, CD38 APC, CD4 PerCP-Cy55, CD45RA PE-Cy7, CD8 APC-H7, HLA-DR V500, Live Dead FITC
2 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA DR, Live/Dead
3 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE
4 1 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLADR, LIVE_GREEN
5 1 CD197, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE DEAD

Markers are more standardized and go ahead to further clean it

group_id Not in reference Missing channels
1 CCR7 PE,CD3 V450,CD38 APC,CD4 PerCP-Cy55,CD45RA PE-Cy7,CD8 APC-H7,HLA-DR V500,Live Dead FITC CCR7,CD3,CD38,CD4,CD45RA,CD8,HLA-DR,LIVE
2 HLA DR,Live/Dead HLA-DR,LIVE
4 HLADR,LIVE_GREEN HLA-DR,LIVE
5 CD197,LIVE DEAD CCR7,LIVE
6 CD197,Live Green CCR7,LIVE
Proposed change
CCR7 PE –> CCR7
CD38 APC –> CD38
CD3 V450 –> CD3
HLA-DR V500 –> HLA-DR
CD45RA PE-Cy7 –> CD45RA
HLA DR –> HLA-DR
Live/Dead –> LIVE
HLADR –> HLA-DR
LIVE_GREEN –> LIVE
CD197 –> CCR7
LIVE DEAD –> LIVE
Live Green –> LIVE

update checks

group_id nObject marker
2 6 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE
1 1 CCR7, CD3, CD38, CD4 PerCP-Cy55, CD45RA, CD8 APC-H7, HLA-DR, Live Dead FITC

Relax string matching to clean up the rest

group_id Not in reference Missing channels
1 CD4 PerCP-Cy55,CD8 APC-H7,Live Dead FITC CD4,CD8,LIVE
Proposed change
CD8 APC-H7 –> CD8
Live Dead FITC –> LIVE
CD4 PerCP-Cy55 –> CD4
group_id nObject marker
1 7 CCR7, CD3, CD38, CD4, CD45RA, CD8, HLA-DR, LIVE

Use the marker as reference to standardize the channels across centers

## # A tibble: 8 x 2
##   channel         marker  
##   <I<chr>>        <I<chr>>
## 1 <APC-A>         CD38    
## 2 <APC-H7-A>      CD8     
## 3 <FITC-A>        LIVE    
## 4 <PerCP-Cy5-5-A> CD4     
## 5 <V450-A>        CD3     
## 6 <V500-A>        HLA-DR  
## 7 <PE-A>          CCR7    
## 8 <PE-Cy7-A>      CD45RA
channel marker group_id nObject
<APC-A> CD38 1 7
<APC-H7-A> CD8
<FITC-A> LIVE
<PE-A> CCR7
<PE-Cy7-A> CD45RA
<PerCP-Cy5-5-A> CD4
<V450-A> CD3
<V500-A> HLA-DR

Refresh QC report

group_id nObject channel
1 3 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, FSC-H, FSC-W, SSC-A, SSC-H, SSC-W, Time
4 2 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, SSC-A, Time
2 1 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, FSC-H, SSC-A, SSC-H, Time
3 1 <APC-A>, <APC-H7-A>, <FITC-A>, <PE-A>, <PE-Cy7-A>, <PerCP-Cy5-5-A>, <V450-A>, <V500-A>, FSC-A, FSC-W, SSC-A, SSC-W, Time
group_id nObject channel
1 3 FSC-H, FSC-W, SSC-H, SSC-W
2 1 FSC-H, SSC-H
3 1 FSC-W, SSC-W

Remove H/W channels

group_id Not in reference Missing channels
1 FSC-H,FSC-W,SSC-H,SSC-W
2 FSC-H,SSC-H
3 FSC-W,SSC-W
Proposed change
FSC-H
FSC-W
SSC-H
SSC-W

Coerce it directly into single GatingSet (zero-copying)