The methods indicate demultiplexing was done with freemuxlet, though I'm curious of the precise methods here. I'm starting with the raw data, and in order to proceed with freemuxlet, dsc-pileup requires a reference VCF with sites/allele frequencies. Is there any info about what VCF was originally used (or steps used to generate the VCF used)?

Created by Cory Weller cory-dti
This is a good point in terms of different ways to assign samples from different runs as belonging to the same donor. We ran a straightforward approach using the CrosscheckFingerprints command from Picard tools, operating directly on the cluster (donor)-specific vcfs from freemuxlet (with the "demultiplexed_allsites_gt.clust1.vcf.gz" ending). The pseudocode to compare the freemuxlet-derived donor vcfs from run VR001 to run VR002 is: java -Xmx60G -jar picard CrosscheckFingerPrints -I VR001_demultiplexed_allsites_gt.clust1.vcf.gz -SI VR002 -H hg38.haplomap -O VR001_vs_VR002_vcfmatch_output.txt -CALCULATE_TUMOR_AWARE_RESULTS false -CROSSCHECK_BY SAMPLE -CROSSCHECK_MODE CHECK_ALL_OTHERS This results in an output file (VR001_vs_VR002_vcfmatch_output.txt) which maps individual freemuxlet-defined groups to each other. It's not 100% clean, but by looking across samples, we can infer which groups of nuclei came from the same donors. There are still cases where we were not able to get good vcf matches across samples, and so those samples do not have good assignments back to the donors. My sense is that more sensitive approaches like Somalier might be even more influenced by the ambient RNA signal, especially in the bam files. The vcfs, in theory, should mitigate some of that background signal if it is the same across nuclei in the same run. That being said, there are now better ways to deconvolve the data, I think: 1) Your idea for running cellbender, then providing corrected vcfs, would clean things up quite a it. I think it is worth trying the two pass approach. 2) I believe the genotype information for these donors is also now available on the AD Knowledge Portal (it was not at the time of our initial analysis), so using demuxlet in parallel with freemuxlet might also provide useful information. Happy to discuss more - anything we can do to improve the deconvolution and donor assignment would be good.
@wpoehlm is this something you can help answer?
Hopefully this isn't too onerous, but I have some follow-up questions when trying to reproduce the results--specifically having high confidence of donor-matching across pools. Following pooled library deconvolution using freemuxlet, I'm left with three bam per library. In order to assign donor identity across libraries, I've been looking at sample-sample relatedness using Somalier. Interestingly, it appears the most similarly related samples tend to be the three samples within a given library. I assume this is due to the presence of ambient RNA or doublets, even though freemuxlet is defining these barcodes as singlets. While cellbender can address the ambient RNA within the tabulated counts, cellbender doesn't produce something like a corrected bam or vcf, so that clearly can't be helpful prior to donor deconvolution. Similarly, rounds of clustering to remove doublet signatures would take place on the background-removed-counts after cellbender. I was thinking these tools could be helpful for donor-donor matching if it was in two passes, i.e. run cellbender and clustering to produce a final list of good barcodes, go back and filter the original (pooled) bam for these good barcodes, then redo freemuxlet before trying to match donors again. Overall, if you have explicit documentation of processing from fastqs through final counts objects, that would be fantastic. If not, the details surrounding donor matching across the freemuxlet output bam files would be greatly appreciated! The genotype-free deconvolution is an ingenious method for reducing batch effects, I just hope to make sure I'm getting the details right.
That's great to know that the pipeline worked. We set a threshold on the UMI counts (from the expression data, >=500 in our initial study) and only looked within that subset of nuclei in terms of assignment to donors afterwards. You are correct - the majority of droplets only contain ambient RNA (no nuclei, low total RNA), so they would show up as ambiguous, since there is no actual nucleus in those droplets. Filtering on NUM.READS is also an option, although we opted for the UMI count threshold, since it was the same one we used for our clustering analysis.
Thanks Vilas, your instructions were great. With them I've been able to generate the final estimates from freemuxlet for these pooled libraries. As a follow-up, looking at the distribution of droplet type assignment, I'm consistently seeing 10-15% of droplets being unambiguously assigned to a single donor--the vast majority are ambiguous low-count barcodes. Setting a minimum NUM.READS filters most of the ambiguous ones out. Might I ask how was this filtering was originally handled, if that info still exists?
Good question. The vcf is generated separately from each run's output bam file, using the reference genome (GRCh38). Here is the sequence of commands to generate the freemuxlet output. One of the steps is mainly to reduce file size and allow freemuxlet to run without memory issues, and is annotated as such: Step 1: Generate vcf from the bam file of the run itself (Note that GRCh38\_genome.fa is the same genome file that was used in cellranger to generated the counts and bam files) bcftools mpileup -d 8000 -f GRCh38\_genome.fa SAMPLE\_gex\_possorted\_bam.bam \| bcftools call --ploidy GRCh38 -v -m -Oz -o SAMPLE\_bam.vcf.gz bcftools +fill-tags SAMPLE\_bam.vcf.gz -Oz -o SAMPLE\_bam\_AF.vcf.gz -- -t AF Step 1b: Subset original bam file to only regions where variants were identified, to reduce memory footprint (optional) bedtools intersect -a SAMPLE\_gex\_possorted\_bam.bam -b SAMPLE\_bam.vcf.gz -u >vcf\_filtered.bam Step 2: Generate popscle dsc-pileup file (Replace vcf\_filtered.bam with full SAMPLE\_gex\_possorted\_bam.bam if step 1b was skipped) popscle dsc-pileup \--sam vcf\_filtered.bam \--vcf SAMPLE\_bam_AF.vcf.gz \--out allsites\_pileup Step 3: Generate freemuxlet output files for 3 distinct groups of nuclei, given that samples were multiplexed as batches of 3: popscle freemuxlet \--plp allsites\_pileup \--nsample 3 \--out demultiplexed\_allsites\_gt
Hello! Thank you for your question. I am reaching out to the authors of the study and inquiring for more information. I'll soon be in touch. Best, Emma, Sr Biomedical Data Manager at Sage

Reference VCF (for dsc-pileup / freemuxlet) for AMP-AD diverse cohorts multiome sn sequencing (syn52339332) page is loading…