โœ‚๏ธ CRISPR
HOME

๐Ÿง  CRISPR-Cas9 Fundamentals

๐ŸŽฏ What is CRISPR-Cas9?

CRISPR-Cas9 is a revolutionary gene-editing technology that allows precise modification of DNA sequences. Originally discovered as a bacterial immune system, it has been repurposed as a programmable nuclease. The system consists of two components: the Cas9 enzyme (which cuts DNA) and a guide RNA (gRNA) (which directs Cas9 to the target site). Guide RNA design is the critical first step โ€” a good guide ensures high on-target efficiency and minimal off-target effects.

Why Guide Design Matters

Precision: Targets exact location. Efficiency: High cutting rate. Safety: Low off-targets. Specificity: Unique genome match. Function: Knockout, knock-in, editing. Reproducibility: Consistent results.

๐Ÿ“Œ gRNA๐Ÿ“Œ Cas9๐Ÿ“Œ PAM๐Ÿ“Œ Off-target
# CRISPR-Cas9 Guide Design โ€” the big picture # Designing guide RNAs for precise genome editing. print(""" === CRISPR-Cas9 Guide Design === What it is: - gRNA directs Cas9 to target - Cas9 cuts DNA - Programmable nuclease - Gene editing tool Components: - Cas9 enzyme - Guide RNA (gRNA) - PAM sequence - Target DNA Why guide design matters: - On-target efficiency - Off-target effects - Specificity - Reproducibility Applications: - Gene knockout - Gene knock-in - Base editing - Prime editing - Transcriptional regulation - Epigenome editing - Disease modeling - Crop improvement - Gene therapy """) print("=== Historical Context ===") print(""" 1987: CRISPR discovered in E. coli 2005: CRISPR associated with immunity 2012: CRISPR-Cas9 repurposed for editing (Doudna & Charpentier) 2013: First mammalian cell editing 2015: CRISPR used in crops 2020: Nobel Prize in Chemistry 2023: First CRISPR therapy approved (Casgevy) 2025: Base editing, prime editing, AI-designed guides """) print("=== Why It's Hard ===") print(""" 1. OFF-TARGET EFFECTS - Similar sequences elsewhere - Unintended cuts - Safety concerns 2. ON-TARGET EFFICIENCY - Not all guides work - Variable efficiency - Context-dependent 3. PAM CONSTRAINT - NGG for SpCas9 - Limits targeting - Alternative Cas9 variants 4. SECONDARY STRUCTURE - gRNA folding - Reduced efficiency - Hard to predict 5. CHROMATIN - Accessibility - Closed regions - Variable efficiency """)

๐ŸŽฏ Why Guide Design Matters

๐ŸŽฏ The Value of Good Guides

A well-designed guide RNA is the difference between a successful experiment and a failed one. Guide design determines efficiency, specificity, and safety.

Key Factors

Efficiency: Cutting rate. Specificity: Unique target. Safety: Low off-target. Position: Functional domain. GC: 40-60%. Structure: Accessible.

๐ŸŽฏ Efficiency๐ŸŽฏ Specificity๐ŸŽฏ Safety๐ŸŽฏ Position
# Why Guide Design Matters print("=== 1. On-Target Efficiency ===") print(""" Efficiency: - Percentage of cells with edit - Varies from 0% to 100% - Guide-dependent Factors: - GC content (40-60%) - No homopolymers (TTTT) - Position in gene - Chromatin accessibility - Secondary structure Example: Guide A: 80% efficiency Guide B: 10% efficiency โ†’ Choose Guide A """) print("\n=== 2. Specificity ===") print(""" Specificity: - Unique target in genome - No similar sequences - Low off-target Factors: - Seed sequence (3' end) - Mismatch tolerance - PAM proximity - Genome complexity Example: Guide A: 0 off-targets Guide B: 50 off-targets โ†’ Choose Guide A """) print("\n=== 3. Safety ===") print(""" Safety: - Minimize off-target cuts - Avoid oncogenes - Avoid tumor suppressors - Clinical applications Concerns: - Off-target mutations - Chromosomal rearrangements - Gene activation - Gene silencing Example: Clinical trial โ†’ Only high-specificity guides """) print("\n=== 4. Position in Gene ===") print(""" Knockout: - Early exon - Functional domain - Conserved region Knock-in: - Near insertion site - HDR efficiency - Distance from cut Example: Exon 1 (5' end) โ†’ Frameshift โ†’ Knockout """) print("\n=== 5. GC Content ===") print(""" GC content: - 40-60% optimal - Too low: weak binding - Too high: secondary structure Example: Guide A: 50% GC โ†’ good Guide B: 30% GC โ†’ poor Guide C: 80% GC โ†’ poor """) print("\n=== 6. Secondary Structure ===") print(""" Secondary structure: - gRNA folding - Hairpins - Reduced efficiency Avoid: - Strong hairpins - Self-complementarity - Stable structures Example: Guide A: no structure โ†’ good Guide B: hairpin โ†’ poor """) print("\n=== 7. Chromatin Accessibility ===") print(""" Chromatin: - Open regions โ†’ accessible - Closed regions โ†’ inaccessible - Cell-type specific Tools: - ATAC-seq - DNase-seq - ChIP-seq Example: Open chromatin โ†’ high efficiency Closed chromatin โ†’ low efficiency """) print("\n=== 8. Reproducibility ===") print(""" Reproducibility: - Same guide โ†’ same result - Batch effects - Protocol Factors: - Delivery method - Cell type - Time point Example: Guide A in lab 1: 80% Guide A in lab 2: 75% โ†’ Reproducible """)

๐Ÿ“ PAM Sequences

๐ŸŽฏ Protospacer Adjacent Motif

The PAM (Protospacer Adjacent Motif) is a short DNA sequence required for Cas9 binding and cleavage. The PAM is located immediately 3' of the target sequence. Without a PAM, Cas9 cannot cleave DNA.

PAM Essentials

SpCas9: NGG. SaCas9: NNGRRT. Cas12a: TTTV. Position: 3' of target. Required: For cleavage. Variant: Engineered PAMs.

๐Ÿ“ NGG๐Ÿ“ NNGRRT๐Ÿ“ TTTV๐Ÿ“ Variants
# PAM Sequences print("=== PAM for Different Cas9 ===") print(""" SpCas9 (Streptococcus pyogenes): - PAM: 5'-NGG-3' - Most common - 3' of target - N = any base SaCas9 (Staphylococcus aureus): - PAM: 5'-NNGRRT-3' - Smaller Cas9 - AAV delivery Cas12a (Cpf1): - PAM: 5'-TTTV-3' - 5' of target - Staggered cut Cas13: - RNA targeting - No PAM - Different mechanism Engineered: - SpCas9-NG: NG PAM - SpRY: NRN/NYN - Near-PAMless """) print("\n=== PAM Position ===") print(""" SpCas9: 5'-[target 20nt]-NGG-3' ^ PAM Example: Target: GACGTACGTACGTACGTAC PAM: TGG Full: GACGTACGTACGTACGTACTGG Cas12a: 5'-TTTV-[target 20nt]-3' ^ PAM """) print("\n=== PAM Finding ===") print(""" Algorithm: 1. Scan sequence 2. Find NGG (or variant) 3. Extract 20nt upstream 4. Candidate guide Example: Sequence: ...ACGTACGTACGTACGTACGTGG... Find: TGG at position 21 Guide: ACGTACGTACGTACGTAC (20nt) """) print("\n=== PAM Variants ===") print(""" SpCas9 variants: - Wild-type: NGG - SpCas9-VQR: NGA - SpCas9-EQR: NGAG - SpCas9-NG: NG - SpRY: NRN/NYN - Near-PAMless Use cases: - Wild-type: standard - NG: targeting AT-rich - SpRY: flexible """) print("\n=== PAM Direction ===") print(""" SpCas9: - Target: 5' to 3' - PAM: 3' of target - Guide: complementary to target Example: Target: 5'-GACGTACGTACGTACGTAC-3' PAM: 3'-TGG-5' (on opposite strand) Guide: 5'-GACGUACGUACGUACGUAC-3' (RNA) """) print("\n=== Alternative PAMs ===") print(""" 1. SpCas9-NG - PAM: NG - Targets more sites - Reduced specificity 2. SpRY - PAM: NRN/NYN - Near-PAMless - Flexible targeting 3. SaCas9 - PAM: NNGRRT - Smaller - AAV delivery 4. Cas12a - PAM: TTTV - 5' of target - Staggered cut 5. Cas12b - PAM: TTN - Alternative 6. CasX - PAM: TTC - Small """) print("\n=== PAM Design Rules ===") print(""" 1. Find PAM (NGG for SpCas9) 2. Extract 20nt upstream 3. Check GC content (40-60%) 4. Avoid homopolymers (TTTT) 5. Check off-targets 6. Score on-target 7. Check secondary structure 8. Order oligos """)

โš™๏ธ Guide Design Principles

๐ŸŽฏ Designing a Guide RNA

Good guide design follows a set of principles: appropriate GC content, no homopolymers, correct position, and minimal off-targets. Follow these rules to maximize success.

Design Principles

GC: 40-60%. Length: 20nt. Homopolymer: Avoid TTTT. Position: Early exon. Strand: Either. Off-target: Minimize.

โš™๏ธ GC 40-60%โš™๏ธ 20ntโš™๏ธ No TTTTโš™๏ธ Early exon
# Guide Design Principles print("=== 1. GC Content ===") print(""" Optimal: 40-60% - < 40%: weak binding - > 60%: secondary structure Example: Guide A: GC = 50% โ†’ good Guide B: GC = 30% โ†’ poor Guide C: GC = 80% โ†’ poor """) print("\n=== 2. Length ===") print(""" Standard: 20 nucleotides - SpCas9: 20nt - SaCas9: 21-23nt - Cas12a: 23nt Truncated guides: - 17-18nt - Reduced off-target - Lower efficiency Example: Full: 20nt Truncated: 18nt """) print("\n=== 3. Homopolymers ===") print(""" Avoid: - TTTT (Pol III terminator) - AAAA - GGGG (G-quadruplex) - CCCC Example: Guide A: no TTTT โ†’ good Guide B: TTTT โ†’ poor """) print("\n=== 4. Position ===") print(""" Knockout: - Early exon (5' end) - Functional domain - Conserved region Knock-in: - Near insertion site - HDR efficiency - Distance from cut Example: Exon 1 (5' end) โ†’ Frameshift โ†’ Knockout """) print("\n=== 5. Strand ===") print(""" Either strand: - Both work - No preference Example: Forward strand: guide A Reverse strand: guide B โ†’ Both valid """) print("\n=== 6. Off-Target ===") print(""" Minimize: - Unique seed sequence - Mismatch in seed - PAM-proximal mismatches Seed region: - 3' end of guide - 8-12nt - Critical for specificity Example: Guide A: unique seed โ†’ good Guide B: seed matches elsewhere โ†’ poor """) print("\n=== 7. Secondary Structure ===") print(""" Avoid: - Hairpins - Self-complementarity - Stable structures Check: - Mfold - RNAfold - CRISPRscan Example: Guide A: no structure โ†’ good Guide B: hairpin โ†’ poor """) print("\n=== 8. Chromatin ===") print(""" Accessibility: - Open regions โ†’ accessible - Closed regions โ†’ inaccessible - Cell-type specific Tools: - ATAC-seq - DNase-seq - ChIP-seq Example: Open chromatin โ†’ high efficiency Closed chromatin โ†’ low efficiency """) print("\n=== Design Workflow ===") print(""" 1. Define target region 2. Find PAMs (NGG) 3. Extract 20nt guides 4. Filter GC content (40-60%) 5. Remove homopolymers (TTTT) 6. Check off-targets 7. Score on-target 8. Check secondary structure 9. Select top 3-5 guides 10. Order oligos """) print("\n=== Example Design ===") print(""" Target gene: BRCA1 Region: Exon 1 Sequence: ATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTCATTAATGCTATGCAGAAAATCTTAGAGTGTCCCATCTGTCTGGAGTTGATCAAGGAACCTGTCTCCACAAAGTGTGACCACATATTTTGCAAATTTTGCATGCTGAAACTTCTCAACCAGAAGAAAGGGCCTTCACAGTGTCCTTTATGTAAGAATGATATAACCAAAAGGAGCCTACAAGAAAGTACGAGATTTAGTCAACTTGTTGAAGAGCTATTGAAAATCATTTGTGCTTTTCAGCTTGACACAGGTTTGGAGTATGCAAACAGCTATAATTTTGCAAAAAAGGAAAATAACTCTCCTGAACATCTAAAAGATGAAGTTTCTATCATCCAAAGTATGGGCTACAGAAACCGTGCCAAAAGACTTCTACAGAGTGAACCCGAAAATCCTTCCTTGCAGGAAACCAGTCTCAGTGTCCAACTCTCTAACCTTGGAACTGTGAGAACTCTGAGGACAAAGCAGCGGATACAACCTCAAAAGACGTCTGTCTACATTGAATTGGGATCTGATTCTTCTGAAGATACCGTTAATAAGGCAACTTATTGCAGTGTGGGAGATCAAGAATTGTTACAAATCA""") print("=== Example Guides ===") print(""" Guide 1: ATGGATTTATCTGCTCTTCG (GC=45%) Guide 2: TGGATTTATCTGCTCTTCGC (GC=50%) Guide 3: GGATTTATCTGCTCTTCGCG (GC=55%) Guide 4: GATTTATCTGCTCTTCGCGT (GC=50%) Guide 5: ATTTATCTGCTCTTCGCGTT (GC=45%) Select top 3-5 based on: - GC content - Off-target score - On-target score """)

๐ŸŽฏ On-Target Scoring

๐ŸŽฏ Predicting Efficiency

On-target scoring predicts how efficiently a guide will cut its intended target. Multiple algorithms exist, each trained on different datasets.

On-Target Scoring

Algorithms: CRISPRscan, Doench, Wang. Features: GC, position, structure. Score: 0-1. Threshold: >0.5 good. Context: Cell-type. Validation: Experimental.

๐ŸŽฏ CRISPRscan๐ŸŽฏ Doench๐ŸŽฏ Wang๐ŸŽฏ Score
# On-Target Scoring print("=== CRISPRscan ===") print(""" CRISPRscan: - Developed by Moreno-Mateos lab - For zebrafish, human, mouse - Based on in vivo data - Score 0-1 Features: - GC content - Position-specific - Secondary structure - Seed sequence Use: - Score guides - Select top guides - Web: crisprscan.org """) print("\n=== Doench (Rule Set 2) ===") print(""" Doench et al. (2016): - Broad Institute - Machine learning - Human/mouse cells - Score 0-1 Features: - GC content - Position-specific - Nucleotide composition - Secondary structure Use: - Benchling - Broad GPP - Web tool """) print("\n=== Wang (SSC) ===") print(""" Wang et al. (2014): - Sequence features - SVM - Human cells - Score 0-1 Features: - GC content - Position-specific - Dinucleotide composition Use: - CRISPRscan - Web tool """) print("\n=== Scoring Features ===") print(""" 1. GC content - Optimal: 40-60% 2. Position-specific - Nucleotides at each position - Learned weights 3. Secondary structure - Free energy - Hairpins - Accessibility 4. Seed sequence - 3' end - Critical for specificity 5. Chromatin - Accessibility - Open/closed 6. Distance from PAM - Proximal vs distal """) print("\n=== Score Interpretation ===") print(""" Score range: 0-1 Interpretation: > 0.7: Excellent 0.5-0.7: Good 0.3-0.5: Moderate < 0.3: Poor Example: Guide A: 0.85 โ†’ excellent Guide B: 0.60 โ†’ good Guide C: 0.25 โ†’ poor """) print("\n=== Tools ===") print(""" 1. CRISPRscan - crisprscan.org - Zebrafish, human, mouse 2. Benchling - benchling.com - Doench score - Off-target 3. CHOPCHOP - chopchop.cbu.uib.no - Multiple scores 4. Broad GPP - portals.broadinstitute.org/gpp - Doench score 5. CRISPOR - crispor.tefor.net - Multiple scores - Off-target """) print("\n=== Python Scoring ===") print(""" # Simple GC content score def gc_score(guide): gc = (guide.count('G') + guide.count('C')) / len(guide) return 1 - abs(gc - 0.5) * 2 # 1 at 50% GC # Example guides = [ "ATGGATTTATCTGCTCTTCG", "TGGATTTATCTGCTCTTCGC", "GGATTTATCTGCTCTTCGCG", ] for g in guides: print(f"{g}: GC={gc_score(g):.2f}") """) print("\n=== Experimental Validation ===") print(""" Validate: - T7 endonuclease assay - Surveyor assay - Deep sequencing - Amplicon sequencing Efficiency: - Percentage of edited cells - Indel frequency - Knockout rate Example: Guide A: 80% indels Guide B: 20% indels โ†’ Choose Guide A """)

๐Ÿšซ Off-Target Prediction

๐ŸŽฏ Finding Unintended Cuts

Off-target prediction identifies potential unintended cleavage sites in the genome. Minimizing off-targets is critical for safety and reproducibility.

Off-Target Prediction

Mismatches: Up to 3-5. Seed: 3' end critical. Bulges: DNA/RNA. Tools: Cas-OFFinder. Score: CFD, MIT. Validate: GUIDE-seq.

๐Ÿšซ Mismatches๐Ÿšซ Seed๐Ÿšซ CFD๐Ÿšซ Cas-OFFinder
# Off-Target Prediction print("=== Off-Target Basics ===") print(""" Off-target: - Unintended cleavage - Similar sequences - Mismatches allowed Mismatch tolerance: - Up to 3-5 mismatches - Seed region (3' end) critical - PAM-proximal mismatches Example: Target: GACGTACGTACGTACGTAC Off-target: GACGTACGTACGTACGTAA (1 mismatch) โ†’ Potential off-target """) print("\n=== Seed Sequence ===") print(""" Seed: - 3' end of guide - 8-12nt - Critical for specificity Mismatches: - Seed mismatch โ†’ no cleavage - Non-seed mismatch โ†’ may cleave Example: Guide: GACGTACGTACGTACGTAC Seed: TACGTAC (last 7nt) โ†’ Critical """) print("\n=== CFD Score ===") print(""" CFD (Cutting Frequency Determination): - Doench et al. - Score 0-1 - Higher = more off-target Features: - Mismatch position - Mismatch type - Seed region Use: - Benchling - CRISPOR - Broad GPP """) print("\n=== MIT Score ===") print(""" MIT Score: - Zhang lab - Score 0-100 - Higher = more off-target Features: - Mismatch position - Mismatch count - Seed region Use: - CRISPRscan - Web tool """) print("\n=== Cas-OFFinder ===") print(""" Cas-OFFinder: - Fast - Allows mismatches - Allows bulges - Genome-wide Input: - Guide sequence - PAM - Genome - Mismatch threshold Output: - Off-target sites - Mismatch count - Position Command: cas-offinder guide.txt genome.fa out.txt """) print("\n=== Off-Target Tools ===") print(""" 1. Cas-OFFinder - Fast - Genome-wide - Mismatches/bulges 2. CRISPOR - Web - Multiple scores - Off-target 3. Benchling - Web - CFD score - Off-target 4. CHOPCHOP - Web - Off-target - Multiple genomes 5. FlashFry - Fast - Genome-wide - Command line 6. GUIDE-seq - Experimental - Unbiased - Genome-wide """) print("\n=== Minimizing Off-Targets ===") print(""" 1. Unique seed sequence 2. Mismatch in seed 3. PAM-proximal mismatches 4. Truncated guides (17-18nt) 5. High-fidelity Cas9 6. Nickase (paired) 7. Ribonucleoprotein delivery Example: Guide A: 0 off-targets โ†’ good Guide B: 50 off-targets โ†’ poor """) print("\n=== High-Fidelity Cas9 ===") print(""" Variants: - SpCas9-HF1 - eSpCas9 - HypaCas9 - HiFi Cas9 Features: - Reduced off-target - Maintained on-target - Better specificity Use: - Clinical - Sensitive applications """) print("\n=== Validation ===") print(""" Experimental: - GUIDE-seq - DISCOVER-seq - CIRCLE-seq - SITE-seq Computational: - Cas-OFFinder - CRISPOR - Benchling """)

๐Ÿงฌ Secondary Structure

๐ŸŽฏ gRNA Folding

The secondary structure of the guide RNA can affect its ability to bind Cas9 and target DNA. Strong secondary structures reduce efficiency.

Secondary Structure

Hairpins: Avoid. Self-complementarity: Avoid. Free energy: Less negative. Accessibility: Seed region. Tools: RNAfold, Mfold. CRISPRscan: Score.

๐Ÿงฌ Hairpins๐Ÿงฌ Self-complement๐Ÿงฌ Free energy๐Ÿงฌ RNAfold
# Secondary Structure print("=== Why Structure Matters ===") print(""" Secondary structure: - gRNA folding - Hairpins - Self-complementarity - Reduced efficiency Impact: - Cas9 binding - Target binding - Cleavage Example: Guide A: no structure โ†’ good Guide B: hairpin โ†’ poor """) print("\n=== Hairpins ===") print(""" Hairpin: - Stem-loop - Self-complementary - Stable - Blocks binding Example: 5'-GCGCGC...GCGCGC-3' ||||| ||||| stem loop Avoid: - Strong stems - Long stems - GC-rich stems """) print("\n=== Self-Complementarity ===") print(""" Self-complementarity: - Guide binds itself - Dimers - Reduced efficiency Example: Guide: GACGTACGTACGTACGTAC Complement: CTGCATGCATGCATGCATG โ†’ Potential dimer Avoid: - Long complementary regions - 3' complementarity """) print("\n=== Free Energy ===") print(""" Free energy (ฮ”G): - More negative = more stable - Less negative = less structure Optimal: - ฮ”G > -10 kcal/mol - Less stable Example: Guide A: ฮ”G = -5 โ†’ good Guide B: ฮ”G = -20 โ†’ poor """) print("\n=== Accessibility ===") print(""" Accessibility: - Seed region (3' end) - Must be accessible - Not base-paired Check: - RNAfold - Mfold - CRISPRscan Example: Seed accessible โ†’ good Seed paired โ†’ poor """) print("\n=== Tools ===") print(""" 1. RNAfold - ViennaRNA - Free energy - Structure 2. Mfold - Web - Structure - Free energy 3. CRISPRscan - Score - Structure - Accessibility 4. RNAstructure - Free energy - Structure """) print("\n=== Python Structure ===") print(""" # Simple hairpin check def has_hairpin(guide): # Check for self-complementarity complement = {'A':'T', 'T':'A', 'G':'C', 'C':'G'} rev = guide[::-1] comp = ''.join(complement.get(b, 'N') for b in rev) # Check for matches matches = sum(1 for a, b in zip(guide, comp) if a == b) return matches > 5 # threshold # Example guides = [ "ATGGATTTATCTGCTCTTCG", "GCGCGCGCGCGCGCGCGCGC", ] for g in guides: print(f"{g}: hairpin={has_hairpin(g)}") """) print("\n=== Design Rules ===") print(""" 1. Avoid hairpins 2. Avoid self-complementarity 3. Check free energy 4. Check seed accessibility 5. Use CRISPRscan score 6. Validate experimentally """)

๐Ÿ› ๏ธ Tools (CRISPRscan, Benchling, CHOPCHOP)

๐ŸŽฏ Guide Design Tools

Many tools exist for CRISPR guide design. Each has strengths and is suited to different use cases.

Tools

CRISPRscan: In vivo. Benchling: All-in-one. CHOPCHOP: Free. CRISPOR: Comprehensive. Broad GPP: Doench. Cas-OFFinder: Off-target.

๐Ÿ› ๏ธ CRISPRscan๐Ÿ› ๏ธ Benchling๐Ÿ› ๏ธ CHOPCHOP๐Ÿ› ๏ธ CRISPOR
# Tools print("=== CRISPRscan ===") print(""" CRISPRscan: - Web: crisprscan.org - In vivo data - Zebrafish, human, mouse - Score 0-1 - Free Features: - On-target score - Off-target - Secondary structure - Visualization Input: - Target sequence - PAM - Genome Output: - Guides - Scores - Off-targets """) print("\n=== Benchling ===") print(""" Benchling: - Web: benchling.com - All-in-one - Free for academics - Doench score - Off-target Features: - Guide design - On-target score - Off-target - Plasmid design - Notebook Input: - Target gene - Genome Output: - Guides - Scores - Off-targets """) print("\n=== CHOPCHOP ===") print(""" CHOPCHOP: - Web: chopchop.cbu.uib.no - Free - Multiple genomes - Multiple scores Features: - On-target score - Off-target - Multiple PAMs - Visualization Input: - Target gene - Genome - PAM Output: - Guides - Scores - Off-targets """) print("\n=== CRISPOR ===") print(""" CRISPOR: - Web: crispor.tefor.net - Comprehensive - Multiple scores - Off-target Features: - On-target score - Off-target - Multiple tools - Visualization Input: - Target sequence - Genome Output: - Guides - Scores - Off-targets """) print("\n=== Broad GPP ===") print(""" Broad GPP: - Web: portals.broadinstitute.org/gpp - Doench score - Off-target - CRISPRko, CRISPRi, CRISPRa Features: - On-target score - Off-target - Libraries - Protocols Input: - Target gene - Genome Output: - Guides - Scores """) print("\n=== Cas-OFFinder ===") print(""" Cas-OFFinder: - Command line - Fast - Genome-wide - Mismatches/bulges Input: - Guide sequence - PAM - Genome - Mismatch threshold Output: - Off-target sites - Mismatch count - Position Command: cas-offinder guide.txt genome.fa out.txt """) print("\n=== Other Tools ===") print(""" 1. FlashFry - Fast - Genome-wide 2. GuideScan - Specificity - Genome-wide 3. CRISPRdirect - Simple - Web 4. E-CRISP - Web - Multiple genomes 5. GT-Scan - Web - Off-target """) print("\n=== Tool Comparison ===") print(f"{'Tool':<20} {'Type':<15} {'Score':<15} {'Off-target':<15} {'Free':<10}") print("-" * 75) print(f"{'CRISPRscan':<20} {'Web':<15} {'Yes':<15} {'Yes':<15} {'Yes':<10}") print(f"{'Benchling':<20} {'Web':<15} {'Yes':<15} {'Yes':<15} {'Academic':<10}") print(f"{'CHOPCHOP':<20} {'Web':<15} {'Yes':<15} {'Yes':<15} {'Yes':<10}") print(f"{'CRISPOR':<20} {'Web':<15} {'Yes':<15} {'Yes':<15} {'Yes':<10}") print(f"{'Broad GPP':<20} {'Web':<15} {'Yes':<15} {'Yes':<15} {'Yes':<10}") print(f"{'Cas-OFFinder':<20} {'CLI':<15} {'No':<15} {'Yes':<15} {'Yes':<10}") print("\n=== When to Use Which ===") print(""" USE CRISPRscan: โœ“ Zebrafish โœ“ In vivo โœ“ Quick USE Benchling: โœ“ All-in-one โœ“ Plasmid design โœ“ Notebook USE CHOPCHOP: โœ“ Free โœ“ Multiple genomes โœ“ Quick USE CRISPOR: โœ“ Comprehensive โœ“ Multiple scores โœ“ Off-target USE Broad GPP: โœ“ Doench score โœ“ Libraries โœ“ CRISPRko/i/a USE Cas-OFFinder: โœ“ Off-target โœ“ Genome-wide โœ“ Command line """)

๐Ÿ Python Integration

๐ŸŽฏ CRISPR Design from Python

You can design guides, score them, and predict off-targets from Python. Here's how.

Python

Design: Find PAMs. Score: GC, structure. Off-target: Cas-OFFinder. Parse: Output. Visualize: Plot. Automate: Pipeline.

๐Ÿ Design๐Ÿ Score๐Ÿ Off-target๐Ÿ Automate
# Python Integration print("=== Find PAMs ===") print(""" def find_pams(sequence, pam="NGG"): \"\"\"Find PAM sites in a sequence.\"\"\" import re # Convert N to regex pattern = pam.replace('N', '[ATGC]') pattern = pattern.replace('R', '[AG]') pattern = pattern.replace('Y', '[CT]') pattern = pattern.replace('V', '[ACG]') guides = [] for match in re.finditer(f'(?=({pattern}))', sequence): pam_start = match.start() pam_seq = match.group(1) # Extract 20nt upstream if pam_start >= 20: guide = sequence[pam_start-20:pam_start] guides.append({ 'guide': guide, 'pam': pam_seq, 'position': pam_start }) return guides # Example seq = "ATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTCATTAATGCTATGCAGAAAATCTTAGAGTGTCCCATCTGTCTGGAGTTGATCAAGGAACCTGTCTCCACAAAGTGTGACCACATATTTTGCAAATTTTGCATGCTGAAACTTCTCAACCAGAAGAAAGGGCCTTCACAGTGTCCTTTATGTAAGAATGATATAACCAAAAGGAGCCTACAAGAAAGTACGAGATTTAGTCAACTTGTTGAAGAGCTATTGAAAATCATTTGTGCTTTTCAGCTTGACACAGGTTTGGAGTATGCAAACAGCTATAATTTTGCAAAAAAGGAAAATAACTCTCCTGAACATCTAAAAGATGAAGTTTCTATCATCCAAAGTATGGGCTACAGAAACCGTGCCAAAAGACTTCTACAGAGTGAACCCGAAAATCCTTCCTTGCAGGAAACCAGTCTCAGTGTCCAACTCTCTAACCTTGGAACTGTGAGAACTCTGAGGACAAAGCAGCGGATACAACCTCAAAAGACGTCTGTCTACATTGAATTGGGATCTGATTCTTCTGAAGATACCGTTAATAAGGCAACTTATTGCAGTGTGGGAGATCAAGAATTGTTACAAATCA" guides = find_pams(seq) for g in guides[:5]: print(g) """) print("\n=== GC Score ===") print(""" def gc_content(guide): \"\"\"Compute GC content.\"\"\" return (guide.count('G') + guide.count('C')) / len(guide) def gc_score(guide): \"\"\"Score GC content (1 = optimal).\"\"\" gc = gc_content(guide) return 1 - abs(gc - 0.5) * 2 # Example guides = [ "ATGGATTTATCTGCTCTTCG", "TGGATTTATCTGCTCTTCGC", "GGATTTATCTGCTCTTCGCG", ] for g in guides: print(f"{g}: GC={gc_content(g):.2f}, score={gc_score(g):.2f}") """) print("\n=== Filter Guides ===") print(""" def filter_guides(guides, min_gc=0.4, max_gc=0.6, avoid="TTTT"): \"\"\"Filter guides by GC content and homopolymers.\"\"\" filtered = [] for g in guides: gc = gc_content(g['guide']) if min_gc <= gc <= max_gc and avoid not in g['guide']: g['gc'] = gc filtered.append(g) return filtered # Example guides = find_pams(seq) filtered = filter_guides(guides) print(f"Total: {len(guides)}, Filtered: {len(filtered)}") """) print("\n=== Off-Target with Cas-OFFinder ===") print(""" import subprocess def run_cas_offinder(guide, genome, pam="NGG", mismatches=3): \"\"\"Run Cas-OFFinder for a guide.\"\"\" # Write input with open("guide.txt", "w") as f: f.write(f"{guide} {pam}\\n") # Run cmd = ['cas-offinder', 'guide.txt', genome, 'out.txt'] subprocess.run(cmd, check=True) # Parse output off_targets = [] with open("out.txt") as f: for line in f: parts = line.strip().split() if len(parts) >= 4: off_targets.append(parts) return off_targets # Use # off_targets = run_cas_offinder("ATGGATTTATCTGCTCTTCG", "genome.fa") """) print("\n=== Complete Pipeline ===") print(""" def design_guides(sequence, pam="NGG", top_n=5): \"\"\"Complete guide design pipeline.\"\"\" # Find PAMs guides = find_pams(sequence, pam) # Filter filtered = filter_guides(guides) # Score for g in filtered: g['score'] = gc_score(g['guide']) # Sort filtered.sort(key=lambda x: x['score'], reverse=True) # Top N return filtered[:top_n] # Use guides = design_guides(seq) for g in guides: print(f"{g['guide']} (GC={g['gc']:.2f}, score={g['score']:.2f})") """) print("\n=== Visualization ===") print(""" import matplotlib.pyplot as plt def plot_guides(guides): \"\"\"Plot guide scores.\"\"\" names = [g['guide'][:10] + '...' for g in guides] scores = [g['score'] for g in guides] plt.figure(figsize=(10, 5)) plt.bar(names, scores, color='purple') plt.xlabel("Guide") plt.ylabel("Score") plt.title("Guide Scores") plt.xticks(rotation=45) plt.tight_layout() plt.savefig("guides.png") plt.show() # Use # plot_guides(guides) """) print("\n=== Order Oligos ===") print(""" def order_oligos(guides): \"\"\"Generate oligo sequences for cloning.\"\"\" for i, g in enumerate(guides): guide = g['guide'] # Add overhangs (example for lentiCRISPR) top = f"CACCG{guide}" bottom = f"AAAC{reverse_complement(guide)}C" print(f"Guide {i+1}:") print(f" Top: {top}") print(f" Bottom: {bottom}") def reverse_complement(seq): \"\"\"Reverse complement.\"\"\" comp = {'A':'T', 'T':'A', 'G':'C', 'C':'G'} return ''.join(comp.get(b, 'N') for b in reversed(seq)) # Use # order_oligos(guides) """)

โœ‚๏ธ Editing Types (KO, KI, Base, Prime)

๐ŸŽฏ Types of CRISPR Editing

CRISPR can be used for various editing outcomes: knockout, knock-in, base editing, prime editing, and more. Each has specific guide design considerations.

Editing Types

KO: Frameshift. KI: HDR. Base: Cโ†’T, Aโ†’G. Prime: Precise. CRISPRi: Repress. CRISPRa: Activate.

โœ‚๏ธ Knockoutโœ‚๏ธ Knock-inโœ‚๏ธ Baseโœ‚๏ธ Prime
# Editing Types print("=== 1. Knockout (KO) ===") print(""" Goal: Disrupt gene function Mechanism: - NHEJ repair - Frameshift - Premature stop Guide design: - Early exon (5' end) - Functional domain - Conserved region Example: Exon 1 โ†’ Frameshift โ†’ Knockout Tools: - CRISPRscan - Benchling - CHOPCHOP """) print("\n=== 2. Knock-in (KI) ===") print(""" Goal: Insert sequence Mechanism: - HDR repair - Donor template - Precise insertion Guide design: - Near insertion site - HDR efficiency - Distance from cut Example: Cut site โ†’ Donor template โ†’ Insertion Tools: - Benchling - CRISPOR - HDR design """) print("\n=== 3. Base Editing ===") print(""" Goal: Single base change Mechanism: - dCas9 or nickase - Deaminase - Cโ†’T or Aโ†’G Types: - CBE (Cโ†’T) - ABE (Aโ†’G) Guide design: - Target window - PAM - No indels Example: Cโ†’T โ†’ Point mutation Tools: - Beam - Benchling - Base editing design """) print("\n=== 4. Prime Editing ===") print(""" Goal: Precise editing Mechanism: - Cas9 nickase - Reverse transcriptase - pegRNA Guide design: - pegRNA - PBS - RTT Example: pegRNA โ†’ Precise edit Tools: - PrimeDesign - Benchling - pegRNA design """) print("\n=== 5. CRISPRi ===") print(""" Goal: Repress transcription Mechanism: - dCas9 - KRAB - Repression Guide design: - Promoter - TSS - Non-template strand Example: dCas9-KRAB โ†’ Repression Tools: - CRISPOR - Benchling """) print("\n=== 6. CRISPRa ===") print(""" Goal: Activate transcription Mechanism: - dCas9 - Activator (VP64, p300) - Activation Guide design: - Promoter - TSS - Template strand Example: dCas9-VP64 โ†’ Activation Tools: - CRISPOR - Benchling """) print("\n=== 7. Multiplexing ===") print(""" Goal: Multiple edits Mechanism: - Multiple guides - Multiplex Guide design: - Multiple targets - Compatible guides - Delivery Example: 3 guides โ†’ 3 edits Tools: - Benchling - CRISPOR """) print("\n=== 8. Comparison ===") print(f"{'Type':<15} {'Mechanism':<20} {'Guide':<20} {'Outcome':<15}") print("-" * 70) print(f"{'KO':<15} {'NHEJ':<20} {'Early exon':<20} {'Frameshift':<15}") print(f"{'KI':<15} {'HDR':<20} {'Near site':<20} {'Insertion':<15}") print(f"{'Base':<15} {'Deaminase':<20} {'Window':<20} {'Point mutation':<15}") print(f"{'Prime':<15} {'RT':<20} {'pegRNA':<20} {'Precise':<15}") print(f"{'CRISPRi':<15} {'dCas9-KRAB':<20} {'Promoter':<20} {'Repression':<15}") print(f"{'CRISPRa':<15} {'dCas9-VP64':<20} {'Promoter':<20} {'Activation':<15}")

โœ… Validation

๐ŸŽฏ Validating Your Edit

After designing and using a guide, you must validate that the edit worked and check for off-target effects.

Validation

On-target: T7, Surveyor, NGS. Off-target: GUIDE-seq, DISCOVER. Expression: qPCR, Western. Function: Phenotype. Karyotype: Rearrangements.

โœ… On-targetโœ… Off-targetโœ… Expressionโœ… Function
# Validation print("=== On-Target Validation ===") print(""" Methods: 1. T7 Endonuclease I - Cleaves mismatches - Gel electrophoresis - Simple, cheap 2. Surveyor Assay - Similar to T7 - Commercial kit 3. Amplicon Sequencing - PCR + NGS - Quantify indels - Standard 4. Whole-Genome Sequencing - Comprehensive - Expensive 5. Sanger Sequencing - Clonal - Mixed population """) print("\n=== Off-Target Validation ===") print(""" Methods: 1. GUIDE-seq - Unbiased - Genome-wide - dsODN tag 2. DISCOVER-seq - MRE11 binding - Genome-wide 3. CIRCLE-seq - In vitro - Genome-wide 4. SITE-seq - In vitro - Genome-wide 5. Targeted sequencing - Predicted off-targets - Amplicon sequencing """) print("\n=== Expression Validation ===") print(""" Methods: 1. qRT-PCR - mRNA levels - Knockdown 2. Western Blot - Protein levels - Knockout 3. Flow Cytometry - Surface markers - Reporter 4. Immunofluorescence - Localization - Expression """) print("\n=== Functional Validation ===") print(""" Methods: 1. Phenotype - Growth - Survival - Morphology 2. Pathway analysis - Signaling - Metabolism 3. Rescue - Re-express - Restore function 4. Animal models - In vivo - Disease """) print("\n=== Karyotype Validation ===") print(""" Methods: 1. Karyotyping - Chromosomes - Rearrangements 2. FISH - Fluorescence - Specific loci 3. Optical mapping - Long-range - Structural variants """) print("\n=== Validation Workflow ===") print(""" 1. Design guide 2. Transfect cells 3. Harvest DNA 4. T7 assay (quick) 5. Amplicon sequencing (quantify) 6. Off-target (GUIDE-seq) 7. Expression (qPCR) 8. Function (phenotype) 9. Report """) print("\n=== Best Practices ===") print(""" 1. Multiple guides - 3-5 guides - Compare efficiency 2. Multiple methods - T7 + sequencing - Off-target + on-target 3. Controls - Non-targeting guide - Untransfected 4. Reproducibility - Biological replicates - Technical replicates 5. Report - Guide sequences - Scores - Validation """)

โš–๏ธ Tool Comparison

๐ŸŽฏ Which Tool?

Choosing the right guide design tool depends on organism, application, and resources.

Comparison

CRISPRscan: In vivo. Benchling: All-in-one. CHOPCHOP: Free. CRISPOR: Comprehensive. Broad GPP: Doench. Cas-OFFinder: Off-target.

โš–๏ธ CRISPRscanโš–๏ธ Benchlingโš–๏ธ CHOPCHOPโš–๏ธ CRISPOR
Tool Type Score Off-Target Best For
CRISPRscanWebYesYesZebrafish, in vivo
BenchlingWebYesYesAll-in-one
CHOPCHOPWebYesYesFree, multiple genomes
CRISPORWebYesYesComprehensive
Broad GPPWebYesYesDoench, libraries
Cas-OFFinderCLINoYesOff-target
FlashFryCLINoYesFast, genome-wide
GuideScanCLINoYesSpecificity
# Decision Guide print("=== Choose Tool by Organism ===") print(""" Human: โ†’ Benchling โ†’ CRISPOR โ†’ Broad GPP Mouse: โ†’ Benchling โ†’ CRISPOR โ†’ CRISPRscan Zebrafish: โ†’ CRISPRscan โ†’ CHOPCHOP Plant: โ†’ CHOPCHOP โ†’ CRISPR-P Drosophila: โ†’ CHOPCHOP โ†’ FlyCRISPR C. elegans: โ†’ CHOPCHOP โ†’ CRISPRscan """) print("\n=== Choose Tool by Application ===") print(""" Knockout: โ†’ Benchling โ†’ CRISPRscan โ†’ CHOPCHOP Knock-in: โ†’ Benchling โ†’ CRISPOR โ†’ HDR design Base editing: โ†’ Beam โ†’ Benchling Prime editing: โ†’ PrimeDesign โ†’ Benchling Off-target: โ†’ Cas-OFFinder โ†’ CRISPOR โ†’ GUIDE-seq """) print("\n=== Speed Comparison ===") print(f"{'Tool':<20} {'1 guide':<15} {'100 guides':<15} {'1000 guides':<15}") print("-" * 65) print(f"{'CRISPRscan':<20} {'< 1s':<15} {'< 10s':<15} {'< 1 min':<15}") print(f"{'Benchling':<20} {'< 1s':<15} {'< 10s':<15} {'< 1 min':<15}") print(f"{'CHOPCHOP':<20} {'< 1s':<15} {'< 10s':<15} {'< 1 min':<15}") print(f"{'CRISPOR':<20} {'< 1s':<15} {'< 30s':<15} {'< 5 min':<15}") print(f"{'Cas-OFFinder':<20} {'< 1s':<15} {'< 1 min':<15} {'< 10 min':<15}") print("\n=== When to Use Which ===") print(""" USE CRISPRscan: โœ“ Zebrafish โœ“ In vivo โœ“ Quick USE Benchling: โœ“ All-in-one โœ“ Plasmid design โœ“ Notebook USE CHOPCHOP: โœ“ Free โœ“ Multiple genomes โœ“ Quick USE CRISPOR: โœ“ Comprehensive โœ“ Multiple scores โœ“ Off-target USE Broad GPP: โœ“ Doench score โœ“ Libraries โœ“ CRISPRko/i/a USE Cas-OFFinder: โœ“ Off-target โœ“ Genome-wide โœ“ Command line """)

โ“ FAQ

๐ŸŽฏ Frequently Asked Questions

Answers to common questions about CRISPR-Cas9 guide design.

What is a CRISPR-Cas9 guide RNA?

A CRISPR-Cas9 guide RNA (gRNA) is a short synthetic RNA (~20 nucleotides) that directs the Cas9 nuclease to a specific DNA sequence complementary to the guide. The gRNA forms a complex with Cas9, which then binds and cleaves the target DNA adjacent to a PAM sequence.

What is a PAM sequence?

A PAM (Protospacer Adjacent Motif) is a short DNA sequence (typically 5'-NGG-3' for SpCas9) that is required for Cas9 binding and cleavage. The PAM is located immediately 3' of the target sequence. Without a PAM, Cas9 cannot cleave the DNA.

How do I design a CRISPR guide RNA?

To design a gRNA: (1) Identify your target region, (2) Find PAM sequences (NGG for SpCas9), (3) Select a 20-nt sequence upstream of the PAM, (4) Check GC content (40-60%), (5) Avoid off-targets, (6) Check on-target score, (7) Avoid secondary structure, (8) Order oligos.

What makes a good CRISPR guide?

A good CRISPR guide has: (1) High on-target score, (2) Low off-target score, (3) GC content 40-60%, (4) No secondary structure, (5) No homopolymers (TTTT), (6) Target in early exons for knockout, (7) Good chromatin accessibility. Use tools like CRISPRscan, Benchling, or CHOPCHOP for scoring.

What is off-target effect in CRISPR?

Off-target effects occur when the guide RNA directs Cas9 to cleave unintended genomic sites that are similar (but not identical) to the target sequence. These can cause mutations elsewhere in the genome. Minimize off-targets by choosing guides with high specificity scores and verifying with tools like Cas-OFFinder.

How many guides should I design?

Design 3-5 guides per target. Not all guides work efficiently, so having multiple options increases your chances of success. Test them and choose the best one for your experiment.

What is the optimal GC content for a guide?

40-60% GC content is optimal. Too low (<40%) results in weak binding, while too high (>60%) can cause secondary structure and reduced efficiency.

Can I use CRISPR for base editing?

Yes. Base editors use a modified Cas9 (dCas9 or nickase) fused to a deaminase. They can convert Cโ†’T (CBE) or Aโ†’G (ABE) without creating double-strand breaks. Guide design is similar but with a target window.

What is prime editing?

Prime editing uses a Cas9 nickase fused to reverse transcriptase and a prime editing guide RNA (pegRNA). It allows precise insertions, deletions, and substitutions without double-strand breaks. Guide design is more complex (pegRNA with PBS and RTT).

How do I validate my CRISPR edit?

Validate with: T7 endonuclease assay (quick), amplicon sequencing (quantify), GUIDE-seq (off-target), qPCR/Western (expression), and phenotype (function). Always use multiple methods.

# Quick Reference print("=== Quick Answers ===") print(""" Q: What is gRNA? A: RNA that guides Cas9 to target. Q: What is PAM? A: NGG for SpCas9; required for cleavage. Q: How to design? A: Find PAM, extract 20nt, check GC, off-target. Q: Good guide? A: High on-target, low off-target, GC 40-60%. Q: Off-target? A: Unintended cleavage; minimize with tools. Q: How many guides? A: 3-5 per target. Q: Optimal GC? A: 40-60%. Q: Base editing? A: Cโ†’T or Aโ†’G; dCas9 + deaminase. Q: Prime editing? A: Precise; pegRNA + RT. Q: Validate? A: T7, sequencing, GUIDE-seq, qPCR. Q: Free tools? A: Yes โ€” CRISPRscan, CHOPCHOP, CRISPOR. """)

๐Ÿš€ Future

๐ŸŽฏ Where CRISPR Guide Design Is Going

The future is AI-designed guides, base and prime editing, in vivo delivery, and clinical applications.

Future Directions

AI: Learned design. Base: Precise. Prime: Versatile. In vivo: Delivery. Clinical: Therapies. Multiplex: Many edits.

๐Ÿš€ AI๐Ÿš€ Base๐Ÿš€ Prime๐Ÿš€ Clinical
# Future of CRISPR print("=== 1. AI-Designed Guides ===") print(""" Trend: Deep learning Ideas: - Learned scoring - Neural networks - Transformer models - Protein language models Examples: - CRISPR-GPT - DeepCRISPR - AI-designed guides Future: - Better efficiency - Better specificity - Cell-type specific - Context-aware """) print("\n=== 2. Base Editing ===") print(""" Trend: Precise base changes Current: - CBE (Cโ†’T) - ABE (Aโ†’G) Future: - Cโ†’G - Aโ†’T - Transversion Examples: - BE4max - ABE8e - New editors Future: - All transitions - All transversions - Precise editing """) print("\n=== 3. Prime Editing ===") print(""" Trend: Precise editing Current: - Insertions - Deletions - Substitutions Future: - Large insertions - Complex edits - Multiplex Examples: - PE2, PE3 - PrimeDesign - pegRNA optimization Future: - Higher efficiency - Larger edits - Clinical """) print("\n=== 4. In Vivo Delivery ===") print(""" Trend: Delivery Current: - Ex vivo - AAV - LNP Future: - Tissue-specific - Organ-targeted - Non-viral Examples: - Lipid nanoparticles - AAV vectors - Virus-like particles Future: - In vivo editing - Tissue-specific - Clinical """) print("\n=== 5. Clinical Applications ===") print(""" Trend: Therapies Current: - Casgevy (sickle cell) - Clinical trials Future: - Cancer - Genetic diseases - Infectious diseases Examples: - Sickle cell - Beta-thalassemia - Leber congenital amaurosis - Huntington's Future: - More approvals - In vivo - Cost reduction """) print("\n=== 6. Multiplex Editing ===") print(""" Trend: Many edits Current: - 1-3 guides Future: - 10+ - Arrays - Combinatorial Examples: - Metabolic engineering - Synthetic biology - Cell therapy Future: - Complex edits - Pathways - Genomes """) # TIMELINE print("\n=== Timeline ===") print(""" Past: 2012: CRISPR-Cas9 2013: Mammalian editing 2020: Nobel Prize 2023: First therapy approved Present: 2025: Base/prime editing 2026: AI-designed guides Future: 2030: In vivo therapies 2035: Multiplex 2040: Genome synthesis? """) print("\n=== Final Thoughts ===") print(""" CRISPR guide design is: - Critical for success - On-target efficiency - Off-target safety - PAM-dependent - Evolving rapidly The future is: - AI-designed - Base editing - Prime editing - In vivo - Clinical "Design well, edit precisely." Keep exploring. Keep building. """)