本文记录了分子生物学实验室的基本操作流程,包括质粒构建、细菌转化、细胞转染及 PCR 鉴定等步骤。

一、质粒构建与细菌操作

1. 设计

设计相应效用的质粒,并确立切割、连接方案。(原则:尽量用已有质粒

2. 摇菌

  1. 配比:15ml LB + 30μL AMP(比例 500:1)。
  2. 接种:枪头蘸取对应甘油菌(30% 的甘油 + 对应菌)。

3. 提取质粒

  1. 公用高速离心机离心成菌沉 10min X 12000g
  2. LB 培养基倒专属瓶子,加入泡腾片后倒入水道。
  3. 根据试剂盒说明书加入P1或E1等试剂,具体看说明书,不同菌有不同处理方式

4. 切割(若有)

  1. 确立切割酶的最佳效用时间和活性 Buffer。
  2. 体系配比(4x体系)
    • DNA:XXX ng
    • Buffer:5 × 4 μL
    • 切割酶:4 μL
    • ddH2O:补至 50 μL
  3. PCR 仪培育切割(先根据NEB的数据库设计酶切时长和温度,酶切结束后放入4℃冰箱保存)。

5. 跑胶与回收

  1. 0.6% / 0.8% / 1% 琼脂糖凝胶,1.5 μL 染料。💡 跑胶示例
  2. 切割回收。
    (1)取1.5ml或2ml离心管称重,记录空管重量
    注:从这一步开始,按试剂盒的说明书进行,以下为其中一种方案
    (2)将电泳分离后的凝胶放在紫外灯下,快速切下含有目的DNA片段的凝胶,并尽可能去除多余的凝胶
    (3)称取凝胶块的重量,并转移至上述1.5ml或2ml离心管中,按100mg凝胶块相当于100μL体积计算,加入1 ~ 1.5倍体积Buffer GDP,50 ~ 60℃水浴10 ~ 15min,让凝胶块完全溶解。水浴期间,颠倒混匀3次加速溶解
    (4)短暂离心收集管壁上的液滴,将HiPure DNA Mini Column I 套在收集管中,把≤700μL转移至柱子(即HiPure DNA Mini Column I)中。12000xg离心60s
    (5)(可选:溶胶液超过700μL,即有剩余溶液)倒弃滤液,把柱子套回收集管中,把剩余溶胶液转移至柱子中。12000xg离心60s
    (6)倒弃滤液,把柱子套回收集管中。加入600μLBuffer DW2(已用无水乙醇稀释)至柱子中。12000xg离心60s
    (7)倒弃滤液,把柱子套回收集管中。加入300μLBuffer DW2(已用无水乙醇稀释)至柱子中。12000xg离心2min
    (8)把柱子套在1.5ml离心管中,加入15 ~ 30μL Elution Buffer至柱子膜中央。放置2min。12000xg离心1min💡 如果要获得最高产量需要重复洗脱
    (9)丢弃柱子,将DNA保存在-20℃冰箱

6. 转化细胞

  1. 转化体系(配制后室温 10min 或 16℃ 过夜):
    • 载体:50 ng
    • 片段:50 ng(双酶切片段)
    • 10x T4 buffer:1 μL
    • T4 连接酶:1 μL
    • ddH2O:补至 10 μL
  2. 同时,感受态细胞取出,10min 冰上待用
  3. 预热水浴锅、取出 SOC 培养基。
  4. 取 50 μL 感受态细胞 + 5 μL 转化体系,10min 冰上待用。(剩余 5 μL 转化体系转至 16℃ 保温,最多 24h,之后转入 -20℃ 保存或丢弃。)
  5. 热激:42℃ 水浴 45s,随后 2min 冰上待用
  6. 超净台操作:加 200 μL SOC。
  7. 复苏:取出培养皿,后一起放于摇床(DH5α 细胞 37℃ 1h,stbl3 细胞 30℃ 1.5h)。

7. 涂板

分 150 μL、50 μL 规格,涂板结束后倒置放入摇床 37℃,20h

8. 划菌

准备 3 个 14ml 摇菌管(每管加 3ml LB,剩余保存常温),同样配比。

9. 摇床培养

37℃,16h如果在挑菌时打入了挑菌用的枪头

10. 保菌

  • 1.5ml 保存管:甘油 500 μL + 菌液 500 μL, -80℃ 保存
  • 2ml 管:全倒,标记 TDGH 1-3。

11. 质粒提取

2ml 菌液,13000g 离心 10min(2次),进行小提小量, -20℃ 保存
此处请根据说明书protocol进行操作
🧪 1~5ml 质粒小提小量步骤

🧪 10~15ml 质粒小提中量步骤

12. 鉴定

(此处进行酶切或 PCR 鉴定)


二、细胞实验操作

细胞培养相关培养基配方

配方 用途 每500mL DMEM (添加量)
无FBS(- - -) 瞬转
3% FBS, 1% NEAA, 1% Ab(+++ 3%) 半换液 15mL FBS, 5mL NEAA, 5mL Ab
10% FBS, 1% NEAA, 1% Ab(+++ 10%) 传代 50mL FBS, 5mL NEAA, 5mL Ab
10% FBS, 1% NEAA, 0% Ab(++ 10%) 收细胞,铺板 50mL FBS, 5mL NEAA, 0mL Ab

复苏细胞

  1. 从液氮罐中取出细胞冻存管(Cryovial),放入预先准备好的水浴锅的水的罐子中,迅速转移到细胞房内。
  2. 将细胞转移到含有10 ml预热的++DMEM 培养基的15 ml 离心管中,离心1000RPM 5min
  3. 取6 μL DMEM 培养基(+++)到T25培养瓶中,等待离心结束
  4. 丢弃上清液,保留沉淀,用 2 ml DMEM 培养基(+++)重悬细胞沉淀,将重悬液转移到上述T25培养瓶中
  5. 写好细胞名称,代数(P1),日期,实验员

细胞传代

+++10%培养基预热
取3x5ml移液管:

  1. 抽出旧培养基
  2. 伸到底部加入5ml的DPBS,十字摇晃,抽走DPBS
  3. 新培养瓶加入4.5ml培养基,移液管留着
  4. 加入300μL的TP蛋白酶,细胞大面积脱落后加5ml培养基终止反应,得细胞悬液
  5. 移液枪转移0.5ml细胞悬液到新培养瓶

细胞冻存

准备+++10%培养基,FBS胎牛血清DMSO

按照以下比例配冻存液

溶液 比例
+++10%培养基 70%
FBS胎牛血清 20%
DMSO(最后加入) 10%

混合+++10%培养基和FBS胎牛血清,在第9步加入DMSO
一般情况下,在细胞传代时,将旧的细胞悬液直接冻存

  1. 抽出旧培养基
  2. 伸到底部加入5ml的DPBS,十字摇晃,抽走DPBS
  3. 新培养瓶加入4.5ml培养基,移液管留着
  4. 加入TP蛋白酶,细胞大面积脱落后加5ml培养基终止反应,得细胞悬液
  5. 移液枪转移0.5ml细胞悬液到新培养瓶

从一步开始,与细胞传代不同
6. 将旧培养瓶中剩余的细胞悬液全部转移到15ml离心管中
7. 离心1000rpm 5min,去掉上清液
8. 用 +++10%培养基和FBS胎牛血清 混合液重悬细胞沉淀
9. 按比例(10%)加入DMSO,混匀,按1ml/管分装到冻存管中
10. 放在-80℃冰箱中过夜,第二天转移到液氮中保存

1. 铺板

耗材:3x5ml移液管,1x25ml移液管
预热++10%培养基

  1. 用一支5ml移液管抽取旧培养基,丢弃到废液缸
  2. 伸到底部加入5ml的DPBS缓冲液,十字摇晃,抽走DPBS
  3. 加入300ml的TP蛋白酶,细胞脱落后转移到50ml离心管💡 提示
  4. 根据需要铺板的点样数计算培养基的用量,用25ml移液管往50ml离心管中加入培养基,吹打混匀💡 计算示例
  5. 500 μL/孔,每加完一列重新吹打一下。
  6. 稍微摇荡均匀,保鲜膜封膜后,再次拍打均匀。
  7. 细胞长至80% ,进入转染。

2. 转染

缩写说明:

  • FBS: 胎牛血清
  • NEAA: 非必需氨基酸
  • Ab: 抗体
  1. 调浓度设计,浓度要求误差小于 0.5,且跑胶确认 1 μL。💡 计算示例
  2. A、B 液设计。💡 A液计算示例
  3. A + B 混合10分钟室温
  4. 加入细胞转染。
  5. 16h 换液:脚踏吸取,润洗上下通道后十分缓慢加入。
    • 选择抗性:blast、puro、zeocin
    • 抗性浓度:10 μg/mL(blast)

3. 收细胞

  1. 脚踏吸液,一般吸去上层。
  2. 加入 500 μL DPBS,直接吹打直至细胞全部脱落。💡 观察技巧
  3. 转移至 1.5ml 离心管,离心5000rpm 5min
  4. 脚踏吸液,至吸光(不要吸走细胞团)。
  5. 加入 500 μL DPBS,震荡 15s 重悬。
  6. 离心5000rpm 5min ,吸取至吸光(不要吸走细胞团)。

三、PCR 鉴定与测序

1. lysis(裂解液) 处理

  1. 用 25~30 μL 裂解液 重悬细胞团。
  2. 转移至八联管,PCR 程序见 PCR 仪器。

2. 一轮 PCR

  1. 扩增体系: PCR(引物根据位点选择,注意加入水空白组,注意不要吸取到细胞)。
    鉴定PCR(实际情况根据protocol调整):

    溶液 μL
    buffer 12.5
    fw上游引物 0.5
    rv下游引物 0.5
    dNTP 0.5
    Taq酶 0.5
    template模板 2
    8.5
  2. 扩增程序:常见 56℃/58℃ 退火,延伸 15~20s。

  3. 用 5 μL 跑胶,剩余 20 μL 按纯化表格混合。💡 如果发现条带比较暗,可以使用套扩

  4. 磁珠纯化:使用前室温恢复 30min,吹打混匀,预热 ddH2O,10 μL 一个 sample。
    📝 DNA 磁珠纯化完整步骤

  5. 测浓度,取部分调至 15 ng/μL,取 10 μL。

3. 二轮 PCR

  1. 扩增体系:普通 PCR,扩增引物不同(引物通用 p2A-fw,rv 根据 index),注意加入水作为空白组。
  2. 扩增程序:与一轮一致。
  3. 用 5 μL 跑胶鉴定,按纯化表格再次混合合并二轮产物。
  4. 送测,订单表格 + 纯化表格,泡沫箱 + 冰袋封装。

数据分析

使用CRISPResso2,以docker部署为例,配合 powershell 7 使用

powershell 7可以并行运算,一定程度上提高了在Windows系统下的计算效率,加快分析速度

以下示例代码使用site_info插入.csvsite_info删除.csv,都带上了--discard_indel_reads参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198

# 强制 PowerShell UTF-8
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'


# ================= 配置区域 =================
$CurrentDir = $PWD.Path

# fastq-multx 镜像
$MultxImage = "quay.io/biocontainers/fastq-multx:1.4.2--h9948957_5"
$CrispressoImage = "pinellolab/crispresso2:latest"

# ================= 两套运行配置 =================
$RunConfigs = @(
@{
Name = "位点插入3bp带discard"
Csv = "site_info插入.csv"
UseDiscard = $true
},
@{
Name = "位点删除3bp带discard"
Csv = "site_info删除.csv"
UseDiscard = $true
}
)

# ================= 读取 CSV =================
$AllRunInfo = @{}

foreach ($cfg in $RunConfigs) {
$csvPath = Join-Path $CurrentDir $cfg.Csv
if (-not (Test-Path $csvPath)) {
Write-Error "找不到 CSV: $($cfg.Csv)"
exit
}

# 读取配置
$sites = Import-Csv -Path $csvPath -Header "Site","Guide","Amp","Len","Type","HDR"

$AllRunInfo[$cfg.Name] = @{
Sites = $sites
UseDiscard = $cfg.UseDiscard
}
}

# ================= 扫描样本文件夹 =================
# 采用文件夹扫描模式(与之前成功的逻辑保持一致),确保能找到成对的R1/R2
Write-Host "扫描样本文件夹..." -ForegroundColor Cyan
$Tasks = @()

# 要排除的固定目录
$ExcludeFolders = @("空白", "替换")

Get-ChildItem -Directory | ForEach-Object {
$folderName = $_.Name

# 排除输出目录 + 空白 / 替换
if (
($folderName -notin $RunConfigs.Name) -and
($folderName -notin $ExcludeFolders)
) {
$r1 = Get-ChildItem $_.FullName -Recurse -Filter "*_R1*" |
Where-Object { $_.Name -match "fastq\.gz|fq\.gz" } |
Select-Object -First 1

if ($r1) {
$Tasks += [PSCustomObject]@{
FolderName = $folderName
R1File = $r1
}
}
}
}

Write-Host "共找到 $($Tasks.Count) 个样本。" -ForegroundColor Green

# ================= 并行执行 =================
$ThreadCount = 2
Write-Host "开始运行 fastq-multx + CRISPResso (HDR 模式)..." -ForegroundColor Cyan

$Tasks | ForEach-Object -Parallel {

$task = $_
$base_dir = $using:CurrentDir
$multx = $using:MultxImage
$crispresso = $using:CrispressoImage
$runinfo = $using:AllRunInfo

# 路径处理
$r1Full = $task.R1File.FullName
$r2Full = $r1Full -replace "_R1","_R2"
if (-not (Test-Path $r2Full)) { return }

# 转为 Docker 相对路径
$r1Rel = $r1Full.Substring($base_dir.Length+1) -replace '\\','/'
$r2Rel = $r2Full.Substring($base_dir.Length+1) -replace '\\','/'
$sample = $task.FolderName

foreach ($modeName in $runinfo.Keys) {

$cfg = $runinfo[$modeName]
$sites = $cfg.Sites
$useDiscard = $cfg.UseDiscard

# 1. 准备目录结构
# RawData: 放在 模式/RawData/样本名
$rawOutRel = "$modeName/RawData/$sample"
$rawOutFull = Join-Path $base_dir $rawOutRel
if (-not (Test-Path $rawOutFull)) { New-Item -ItemType Directory -Path $rawOutFull -Force | Out-Null }

# 结果目录: 预先创建位点文件夹
foreach ($s in $sites) {
$siteResDir = Join-Path $base_dir "$modeName/$($s.Site)"
if (-not (Test-Path $siteResDir)) { New-Item -ItemType Directory -Path $siteResDir -Force | Out-Null }
}

# 日志文件
$logFile = Join-Path $rawOutFull "process_log.txt"

# 2. 生成 Barcode 文件 (针对当前位点列表)
$bcFileName = "barcodes_${sample}_${modeName}.txt"
$bcFilePath = Join-Path $base_dir $bcFileName
$bcContent = @()
foreach ($row in $sites) {
if ($row.Site -and $row.Amp.Length -ge 10) {
$bcContent += "$($row.Site)`t$($row.Amp.Substring(0,10))"
}
}
$bcContent | Out-File -Encoding ascii $bcFilePath

Write-Host ">>> [$sample][$modeName] 正在拆分数据..." -ForegroundColor Magenta

# 3. 运行 fastq-multx
docker run --rm -v "${base_dir}:/Data" -w /Data $multx `
fastq-multx -B "/Data/$bcFileName" -m 1 -b `
"/Data/$r1Rel" "/Data/$r2Rel" `
-o "/Data/$rawOutRel/%.R1.fastq" `
-o "/Data/$rawOutRel/%.R2.fastq" 2>>$logFile

# 4. 运行 CRISPResso
foreach ($site in $sites) {
if (-not $site.Site) { continue }

# 检查拆分文件是否存在
$siteR1 = Join-Path $rawOutFull "$($site.Site).R1.fastq"

if (Test-Path $siteR1) {
Write-Host " -> CRISPResso: $($site.Site) (Discard: $useDiscard)" -ForegroundColor Gray

# --- 构建参数数组 (修复空参数BUG) ---
$dockerArgs = @(
"run", "--rm",
"-v", "${base_dir}:/Data", "-w", "/Data",
$crispresso,
"CRISPResso",
# 使用拆分后的数据 (修复原代码逻辑错误)
"--fastq_r1", "$rawOutRel/$($site.Site).R1.fastq",
"--fastq_r2", "$rawOutRel/$($site.Site).R2.fastq",

# 输出目录指向位点层级,自动生成 Sample 文件夹
"--output_folder", "/Data/$modeName/$($site.Site)",

"-n", $sample,
"-an", $site.Site,
"--amplicon_seq", "$($site.Amp)",
"--guide_seq", "$($site.Guide)",
"--expected_hdr_amplicon_seq", "$($site.HDR)",

# 保留你要求的特定参数
"--quantification_window_size", "20",
"--quantification_window_center", "-3",
"-q", "30",
"--plot_window_size", "40",
"--exclude_bp_from_left", "0",
"--exclude_bp_from_right", "0"
)

# 条件添加 discard
if ($useDiscard) {
$dockerArgs += "--discard_indel_reads"
}

# 执行并记录日志
& docker $dockerArgs 2>>$logFile
}
}

# 清理临时 barcode
Remove-Item $bcFilePath -ErrorAction SilentlyContinue
}

Write-Host "[$sample] 全部完成" -ForegroundColor Yellow

} -ThrottleLimit $ThreadCount

Write-Host "所有任务处理完毕" -ForegroundColor Cyan

然而,一般来说使用的是Linux服务器进行运算,所以此处仅作为参考