I have five atac files. I ran snaptools for each one of them:
snaptools snap-pre --input-file=fragments.bed.gz --output-snap=fragments.snap --genome-name=hg38 --genome-size=../../hg38.chrom.sizes
then snaptools snap-add-bmat for each one of them:
snaptools snap-add-bmat --snap-file=fragments.snap --bin-size-list 1000 5000 10000 --verbose=True
number of barcodes: 461144
number of bins: 0
number of genes: 0
number of peaks: 0
number of motifs: 0
$two
number of barcodes: 468172
number of bins: 0
number of genes: 0
number of peaks: 0
number of motifs: 0
$three
number of barcodes: 443411
number of bins: 0
number of genes: 0
number of peaks: 0
number of motifs: 0
$four
number of barcodes: 476659
number of bins: 0
number of genes: 0
number of peaks: 0
number of motifs: 0
$five
number of barcodes: 471234
number of bins: 0
number of genes: 0
number of peaks: 0
number of motifs: 0```
Then:
for both datasets, we identify usable barcodes using [3.5-5] for log10(UMI) and [0.4-0.8] for promoter ratio as cutoff.
I have five atac files. I ran snaptools for each one of them:
snaptools snap-pre --input-file=fragments.bed.gz --output-snap=fragments.snap --genome-name=hg38 --genome-size=../../hg38.chrom.sizes
then snaptools snap-add-bmat for each one of them:
snaptools snap-add-bmat --snap-file=fragments.snap --bin-size-list 1000 5000 10000 --verbose=True
then:
Then:
x.sp.ls
for both datasets, we identify usable barcodes using [3.5-5] for log10(UMI) and [0.4-0.8] for promoter ratio as cutoff.
cutoff.logUMI.low = c(3.5, 3.5, 3.5, 3.5, 3.5); cutoff.logUMI.high = c(5, 5, 5, 5, 5); cutoff.FRIP.low = c(0.4, 0.4, 0.4, 0.4, 0.4); cutoff.FRIP.high = c(0.8, 0.8, 0.8, 0.8, 0.8);
barcode.ls = lapply(seq(snap.files), function(i){ barcodes = barcode.ls[[i]]; idx = which( barcodes$logUMI >= cutoff.logUMI.low[i] & barcodes$logUMI <= cutoff.logUMI.high[i] & barcodes$promoter_ratio >= cutoff.FRIP.low[i] & barcodes$promoter_ratio <= cutoff.FRIP.high[i] ); barcodes[idx,] });
x.sp.ls = lapply(seq(snap.files), function(i){ barcodes = barcode.ls[[i]]; x.sp = x.sp.ls[[i]]; barcode.shared = intersect(x.sp@barcode, barcodes$barcode); x.sp = x.sp[match(barcode.shared, x.sp@barcode),]; barcodes = barcodes[match(barcode.shared, barcodes$barcode),]; x.sp@metaData = barcodes; x.sp }) names(x.sp.ls) = sample.names; x.sp.ls
$one number of barcodes: 1794 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
$two number of barcodes: 1077 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
$three number of barcodes: 1886 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
$four number of barcodes: 1077 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
$five number of barcodes: 2518 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
x.sp = Reduce(snapRbind, x.sp.ls); x.sp@metaData["sample"] = x.sp@sample; x.sp
number of barcodes: 8352 number of bins: 0 number of genes: 0 number of peaks: 0 number of motifs: 0
onw two three four five 1794 2518 1886 1077 1077
x.sp = addBmatToSnap(x.sp, bin.size=5000)```