Skip to content

Commit 5826a6a

Browse files
committed
Fix grading to match assignment, add deployment guide, cleanup
- Fix grade_answers.py to match answer_assignment.py fields - Remove q3b_blast_tree_agree, q3c_socal_species questions - Rename q3d_confidence to q3b_confidence - Update total points: 40 → 36 - Add docs/instructor_deployment.md (Classroom + Codespaces setup) - Remove lab_quiz.py references from README (quiz removed) - Delete duplicate answer_key_template.json - Update README date to November 29, 2025
1 parent 0d0a922 commit 5826a6a

4 files changed

Lines changed: 269 additions & 78 deletions

File tree

.github/grading/answer_key_template.json

Lines changed: 0 additions & 37 deletions
This file was deleted.

.github/grading/grade_answers.py

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, answers_path: str, answer_key_path: str):
1919
self.answers_path = Path(answers_path)
2020
self.answer_key_path = Path(answer_key_path)
2121
self.earned_points = 0
22-
self.total_points = 40 # Part 2 (20) + Part 3 (20)
22+
self.total_points = 36 # Species table (20) + Q1 (5) + Q2 (7) + Q3 (4)
2323
self.feedback = []
2424

2525
def load_json(self, path: Path) -> Dict:
@@ -175,9 +175,9 @@ def grade_question2(self, student: Dict, key: Dict) -> int:
175175
return points
176176

177177
def grade_question3(self, student: Dict, key: Dict) -> int:
178-
"""Grade Question 3 - Species Identification (8 points)."""
178+
"""Grade Question 3 - Species Identification (4 points)."""
179179
points = 0
180-
max_points = 8
180+
max_points = 4
181181

182182
# Q3a: Species list (2 points)
183183
student_ans = student.get('q3a_species_list', '').lower()
@@ -192,35 +192,15 @@ def grade_question3(self, student: Dict, key: Dict) -> int:
192192
f"❌ Q3(a): Missing species. Expected: {', '.join(key['q3a_species_list'])}"
193193
)
194194

195-
# Q3b: BLAST-tree agreement (2 points)
196-
student_ans = student.get('q3b_blast_tree_agree', '').lower()
197-
expected_ans = key['q3b_blast_tree_agree']
198-
199-
if student_ans == expected_ans:
200-
points += 2
201-
self.feedback.append("✓ Q3(b): Correct BLAST-tree comparison")
202-
else:
203-
self.feedback.append("❌ Q3(b): Incorrect BLAST-tree comparison")
204-
205-
# Q3c: SoCal occurrence (2 points)
206-
student_ans = student.get('q3c_socal_species', '').lower()
207-
expected_ans = key['q3c_socal_species']
208-
209-
if student_ans == expected_ans:
210-
points += 2
211-
self.feedback.append("✓ Q3(c): Correct geographic assessment")
212-
else:
213-
self.feedback.append("❌ Q3(c): Incorrect geographic assessment")
214-
215-
# Q3d: Confidence (2 points)
216-
student_ans = student.get('q3d_confidence', '')
217-
acceptable = key['q3d_confidence_acceptable']
195+
# Q3b: Confidence (2 points)
196+
student_ans = student.get('q3b_confidence', '')
197+
acceptable = key['q3b_confidence_acceptable']
218198

219199
if any(acc in student_ans for acc in acceptable):
220200
points += 2
221-
self.feedback.append("✓ Q3(d): Appropriate confidence level")
201+
self.feedback.append("✓ Q3(b): Appropriate confidence level")
222202
else:
223-
self.feedback.append("⚠️ Q3(d): Confidence level should be 'Very confident' or 'Confident'")
203+
self.feedback.append("⚠️ Q3(b): Confidence level should be 'Very confident' or 'Confident'")
224204

225205
self.feedback.append(f"✓ Question 3: {points}/{max_points} points\n")
226206
return points

README.md

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,10 @@ See **[start_here.md](start_here.md)** for the complete beginner's guide.
5252
# STEP 2: Analyze the class mosquito sequences (5 min)
5353
./run-analysis-cs.sh
5454

55-
# STEP 3: Take the lab quiz (OPTIONAL but recommended)
56-
python3 lab_quiz.py
57-
58-
# STEP 4: Answer questions interactively (10 min)
55+
# STEP 3: Answer questions interactively (10 min)
5956
python3 answer_assignment.py
6057

61-
# STEP 5: Submit to GitHub (auto-graded!)
58+
# STEP 4: Submit to GitHub (auto-graded!)
6259
git add answers.json results/
6360
git commit -m "Complete assignment"
6461
git push origin main
@@ -75,13 +72,10 @@ git push origin main
7572
# STEP 2: Analyze the class mosquito sequences (5 min)
7673
./run-analysis.sh
7774

78-
# STEP 3: Take the lab quiz (OPTIONAL but recommended)
79-
python3 lab_quiz.py
80-
81-
# STEP 4: Answer questions interactively (10 min)
75+
# STEP 3: Answer questions interactively (10 min)
8276
python3 answer_assignment.py
8377

84-
# STEP 5: Submit to GitHub (auto-graded!)
78+
# STEP 4: Submit to GitHub (auto-graded!)
8579
git add answers.json results/
8680
git commit -m "Complete assignment"
8781
git push origin main
@@ -261,7 +255,6 @@ dna-barcoding-analysis/
261255
├── tutorial-cs.sh # Learn with test data (Codespaces)
262256
├── run-analysis.sh # Analyze YOUR data (Docker)
263257
├── run-analysis-cs.sh # Analyze YOUR data (Codespaces)
264-
├── lab_quiz.py # Interactive quiz (learning tool)
265258
266259
├── data/
267260
│ ├── student_sequences/ # PUT YOUR .ab1 FILES HERE
@@ -460,7 +453,6 @@ docker run hello-world
460453
| **Tree Layouts** | 4 visualizations (rectangular, circular, unrooted, radial) |
461454
| **HTML Reports** | 6 interactive dashboards + student reports |
462455
| **Container Size** | ~2.5GB (includes all tools) |
463-
| **Quiz Questions** | 13 multiple-choice (learning tool) |
464456

465457
---
466458

@@ -617,7 +609,7 @@ You are free to:
617609

618610
---
619611

620-
**Last Updated**: November 27, 2025
612+
**Last Updated**: November 29, 2025
621613
**Status**: Production Ready — Student Tested
622614
**Container**: `cosmelab/dna-barcoding-analysis:latest` (multi-arch: amd64 + arm64)
623615
**GitHub Classroom**: Template Ready

0 commit comments

Comments
 (0)