๐ง 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
| Tool | Type | Score | Off-Target | Best For |
|---|---|---|---|---|
| CRISPRscan | Web | Yes | Yes | Zebrafish, in vivo |
| Benchling | Web | Yes | Yes | All-in-one |
| CHOPCHOP | Web | Yes | Yes | Free, multiple genomes |
| CRISPOR | Web | Yes | Yes | Comprehensive |
| Broad GPP | Web | Yes | Yes | Doench, libraries |
| Cas-OFFinder | CLI | No | Yes | Off-target |
| FlashFry | CLI | No | Yes | Fast, genome-wide |
| GuideScan | CLI | No | Yes | Specificity |
# 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.
# 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.
""")