Step 7 ‐ Assignment Analysis - alyrcoun/EPP622-2026-SNPCalling GitHub Wiki
How did samples differ from each other in read count versus in read quality? Why does each matter for SNP calling?
Samples A, C, and D had high read coverage. Sample B had low coverage which caused it miss real mutations, creating false negatives. Even in samples A and D that had high coverage, quality issues like reads misaligning in repetitive regions or appearing on only one strand still occured. These errors create false positives because misaligned reads bunching up in the wrong spot can look like true mutations. Checking both read count and quality helps verify if variants are real before moving on the to next step.
What are the relative merits and drawbacks of filtering? Interpret the chart in step 6 in terms of the original quality issues, and how those yielded different outcomes. When is filtering a good idea vs when it is it a bad idea? Think specifically about false positives vs false negatives.
The whole point of filtering is to get rid of incorrect calls but choosing between raw, strict, and gentle filtering is a balancing act between trying to clean up noisy data without accidentally getting rid of useful data. Looking at the chart, the gentle filter worked best for this data because it brought false positives down to near zero across all samples without losing too many of the real variants. Since Sample B had low coverage already, applying the strict filter tossed out valid calls because there weren't enough reads. Strict filtering makes sense when you can't risk having false positives messing up downstream analyses but gentle filtering is better for low coverage data where missing a real mutation is the bigger issue. Filtering is a good idea when you need to clean up obvious errors but can be a bad idea if the rules are so strict that the actual biology gets lost.
Pick two false negatives and two false positives, from any sample. For each, tell me the sample, tell me the chromosome and coordinate location, put in a screenshot of IGV or JBrowse, and explain the specific cause of the FN or FP call. Sample - Chromosome (NCBI): coordinate location
Sample A - False Positive - NC001135.5:82150 - colored by Mapping Quality ('MQ<20')
The reads mapped here show low mapping quality because the sequence is repetitive and the computer wasn't able to determine if the reads belonged here or elsewhere. It's not a mutation, just a misalignment.
Sample B - False Negative - NC_001133.9:145210 -
Here we see very low read depth. There weren't enough reads for the sequencer to pick up the mutated allele and the pipeline missed it, leaving the VCF track blank.
Sample C - False Negative - NC_001135.5:84467 Variant is present in the gentle filter track but missing from the stringent (strict) filter track becasue it read depth failed the strict DP>=10 cutoff. Perfect example of over-filtering false negative.
Sample D - False Positive - NC_001136.10:320110 - colored by read strand A real biological mutation exists on both strands of the DNA double helix, so a true variant will show up on both forward (red) and reverse (blue) reads. Because this mismatched base only shows up on forward reads, it's just a sequencing glitch rather than a real mutation, which created a false positive.
AI Analysis - Pipeline Audit
This is an evaluation of the pipeline generated at the beginning of the learning module. Provide full sentences and thoughtful rationale.
Model used: Gemini 3.1 Pro
Date generated: September 17, 2026
Exact prompt: Write a complete short-read SNP calling pipeline for a haploid fungal genome, starting from paired FASTQ and ending at a filtered VCF. Provide a complete pipeline in Markdown file. Do not run it. Write in a way that a beginning bioinformatician/genomicist will understand the concepts and be able to execute it. Include my name (A. Counce), date, workflow used, AI used, what model used within the AI, and include my prompt in the output.
Minimum one paragraph each.
Three things it got right.
The AI followed the prompt for formatting, provided *Concepts after every step explaining why a command was run, and the steps were in the right order (QC->Trim->Map->Sort->Call SNPs->Filter).
Three things you don't understand and would want to learn more about before using. Or do you understand all of it? If so be ready to answer questions about it.
Why did the AI use
picardfor marking PCR duplicates? I thought we just went straight tobcftools mpileupafter alignment and sorting. Is there a reason to choosepicardover it? I'm curious as to why the AI used inclusion criteria when we learned (and I used in this assignment) exclusion criteria? How do you choose which to use when filtering?
How specifically would you assess the results of this pipeline for accuracy?
To check the AI's accuracy, I'd compare its results to a known truth set to see if there were any missed or incorrect calls. Then I'd pull up the reads in JBrowse to see if the calls make sense or not. This way I can figure out if the strict filter caused it to throw away good data.
What did the labs teach you that turned out to matter for evaluating the AI-generated code?
We learned how to check read quality and trimming with
fastpwhich helped me notice the AI missed poly-G trimming. The AI usedbwainstead ofbwa-mem2. I noticed the AI used backwards filtering command because we learnedbcftoolsfilters in class.
What is the value of learning about a computational genomics task before using AI for it — or is there none?
While AI is a great tool, it does make mistakes. If you don't know anything about computational genomics, you won't know how to pick out those mistakes.