本文记录了分子生物学实验室的基本操作流程,包括质粒构建、细菌转化、细胞转染及 PCR 鉴定等步骤。
一、质粒构建与细菌操作
1. 设计
设计相应效用的质粒,并确立切割、连接方案。(原则:尽量用已有质粒)
2. 摇菌
- 配比:15ml LB + 30μL AMP(比例 500:1)。
- 接种:枪头蘸取对应甘油菌(30% 的甘油 + 对应菌)。
3. 提取质粒
- 公用高速离心机离心成菌沉 10min X 12000g。
- LB 培养基倒专属瓶子,加入泡腾片后倒入水道。
- 根据试剂盒说明书加入P1或E1等试剂,具体看说明书,不同菌有不同处理方式
4. 切割(若有)
- 确立切割酶的最佳效用时间和活性 Buffer。
- 体系配比(4x体系):
- DNA:XXX ng
- Buffer:5 × 4 μL
- 切割酶:4 μL
- ddH2O:补至 50 μL
- PCR 仪培育切割(先根据NEB的数据库设计酶切时长和温度,酶切结束后放入4℃冰箱保存)。
5. 跑胶与回收
- 0.6% / 0.8% / 1% 琼脂糖凝胶,1.5 μL 染料。💡 跑胶示例
- 切割回收。
(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. 转化细胞
- 转化体系(配制后室温 10min 或 16℃ 过夜):
- 载体:50 ng
- 片段:50 ng(双酶切片段)
- 10x T4 buffer:1 μL
- T4 连接酶:1 μL
- ddH2O:补至 10 μL
- 同时,感受态细胞取出,10min 冰上待用。
- 预热水浴锅、取出 SOC 培养基。
- 取 50 μL 感受态细胞 + 5 μL 转化体系,10min 冰上待用。(剩余 5 μL 转化体系转至 16℃ 保温,最多 24h,之后转入 -20℃ 保存或丢弃。)
- 热激:42℃ 水浴 45s,随后 2min 冰上待用。
- 超净台操作:加 200 μL SOC。
- 复苏:取出培养皿,后一起放于摇床(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 |
复苏细胞
- 从液氮罐中取出细胞冻存管(Cryovial),放入预先准备好的水浴锅的水的罐子中,迅速转移到细胞房内。
- 将细胞转移到含有10 ml预热的++DMEM 培养基的15 ml 离心管中,离心1000RPM 5min
- 取6 μL DMEM 培养基(+++)到T25培养瓶中,等待离心结束
- 丢弃上清液,保留沉淀,用 2 ml DMEM 培养基(+++)重悬细胞沉淀,将重悬液转移到上述T25培养瓶中
- 写好细胞名称,代数(P1),日期,实验员
细胞传代
+++10%培养基预热
取3x5ml移液管:
- 抽出旧培养基
- 伸到底部加入5ml的DPBS,十字摇晃,抽走DPBS
- 新培养瓶加入4.5ml培养基,移液管留着
- 加入300μL的TP蛋白酶,细胞大面积脱落后加5ml培养基终止反应,得细胞悬液
- 移液枪转移0.5ml细胞悬液到新培养瓶
细胞冻存
准备+++10%培养基,FBS胎牛血清,DMSO
按照以下比例配冻存液
| 溶液 |
比例 |
| +++10%培养基 |
70% |
| FBS胎牛血清 |
20% |
| DMSO(最后加入) |
10% |
混合+++10%培养基和FBS胎牛血清,在第9步加入DMSO
一般情况下,在细胞传代时,将旧的细胞悬液直接冻存
- 抽出旧培养基
- 伸到底部加入5ml的DPBS,十字摇晃,抽走DPBS
- 新培养瓶加入4.5ml培养基,移液管留着
- 加入TP蛋白酶,细胞大面积脱落后加5ml培养基终止反应,得细胞悬液
- 移液枪转移0.5ml细胞悬液到新培养瓶
从一步开始,与细胞传代不同
6. 将旧培养瓶中剩余的细胞悬液全部转移到15ml离心管中
7. 离心1000rpm 5min,去掉上清液
8. 用 +++10%培养基和FBS胎牛血清 混合液重悬细胞沉淀
9. 按比例(10%)加入DMSO,混匀,按1ml/管分装到冻存管中
10. 放在-80℃冰箱中过夜,第二天转移到液氮中保存
1. 铺板
耗材:3x5ml移液管,1x25ml移液管
预热++10%培养基
- 用一支5ml移液管抽取旧培养基,丢弃到废液缸
- 伸到底部加入5ml的DPBS缓冲液,十字摇晃,抽走DPBS
- 加入300ml的TP蛋白酶,细胞脱落后转移到50ml离心管💡 提示
- 根据需要铺板的点样数计算培养基的用量,用25ml移液管往50ml离心管中加入培养基,吹打混匀💡 计算示例
- 500 μL/孔,每加完一列重新吹打一下。
- 稍微摇荡均匀,保鲜膜封膜后,再次拍打均匀。
- 细胞长至80% ,进入转染。
2. 转染
缩写说明:
- FBS: 胎牛血清
- NEAA: 非必需氨基酸
- Ab: 抗体
- 调浓度设计,浓度要求误差小于 0.5,且跑胶确认 1 μL。💡 计算示例
- A、B 液设计。💡 A液计算示例
- A + B 混合10分钟室温。
- 加入细胞转染。
- 16h 换液:脚踏吸取,润洗上下通道后十分缓慢加入。
- 选择抗性:blast、puro、zeocin
- 抗性浓度:10 μg/mL(blast)
3. 收细胞
- 脚踏吸液,一般吸去上层。
- 加入 500 μL DPBS,直接吹打直至细胞全部脱落。💡 观察技巧
- 转移至 1.5ml 离心管,离心5000rpm 5min。
- 脚踏吸液,至吸光(不要吸走细胞团)。
- 加入 500 μL DPBS,震荡 15s 重悬。
- 离心5000rpm 5min ,吸取至吸光(不要吸走细胞团)。
三、PCR 鉴定与测序
1. lysis(裂解液) 处理
- 用 25~30 μL 裂解液 重悬细胞团。
- 转移至八联管,PCR 程序见 PCR 仪器。
2. 一轮 PCR
扩增体系: PCR(引物根据位点选择,注意加入水空白组,注意不要吸取到细胞)。
鉴定PCR(实际情况根据protocol调整):
| 溶液 |
μL |
| buffer |
12.5 |
| fw上游引物 |
0.5 |
| rv下游引物 |
0.5 |
| dNTP |
0.5 |
| Taq酶 |
0.5 |
| template模板 |
2 |
| 水 |
8.5 |
扩增程序:常见 56℃/58℃ 退火,延伸 15~20s。
用 5 μL 跑胶,剩余 20 μL 按纯化表格混合。💡 如果发现条带比较暗,可以使用套扩
磁珠纯化:使用前室温恢复 30min,吹打混匀,预热 ddH2O,10 μL 一个 sample。
📝 DNA 磁珠纯化完整步骤
测浓度,取部分调至 15 ng/μL,取 10 μL。
3. 二轮 PCR
- 扩增体系:普通 PCR,扩增引物不同(引物通用 p2A-fw,rv 根据 index),注意加入水作为空白组。
- 扩增程序:与一轮一致。
- 用 5 μL 跑胶鉴定,按纯化表格再次混合合并二轮产物。
- 送测,订单表格 + 纯化表格,泡沫箱 + 冰袋封装。
数据分析
使用CRISPResso2,以docker部署为例,配合 powershell 7 使用
powershell 7可以并行运算,一定程度上提高了在Windows系统下的计算效率,加快分析速度

以下示例代码使用site_info插入.csv和site_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
|
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new() [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new() $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$CurrentDir = $PWD.Path
$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 } )
$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 } }
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 }
$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
$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"
$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
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
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
$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", "--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" )
if ($useDiscard) { $dockerArgs += "--discard_indel_reads" }
& docker $dockerArgs 2>>$logFile } } Remove-Item $bcFilePath -ErrorAction SilentlyContinue }
Write-Host "[$sample] 全部完成" -ForegroundColor Yellow
} -ThrottleLimit $ThreadCount
Write-Host "所有任务处理完毕" -ForegroundColor Cyan
|
然而,一般来说使用的是Linux服务器进行运算,所以此处仅作为参考