DNAライゲーション計算ツール - 分子クローニングのためのインサート:ベクター比の計算
DNAライゲーション計算ツールは、インサートとベクターの濃度、断片の長さ、目標とするモル比を入力すると、T4 DNAリガーゼを用いたライゲーション反応に必要なインサートとベクターの容量を算出する無料ツールです。プラスミドクローニングなどの分子クローニング実験の計画と効率化に役立ちます。
DNAライゲーション計算ツール
入力パラメータ
ライゲーション結果
計算式
必要なインサートDNA量は以下の式で計算されます:
ng insert = (ng vector × kb insert / kb vector) × molar ratio
= (50 × 1.00 / 3.00) × 3
= 50 ng
容量計算: 50 ng ÷ 25 ng/μL = 2 μL
ドキュメンテーション
はじめに
DNAライゲーションにおけるモル比を正確に決めることは、成功するクローンと挫折する実験の分かれ目となります。ライゲーション反応をデバッグするのに何日も費やし、最終的にインサート:ベクター比が間違っていたことに気づいた経験がある方なら、これらの計算がいかに重要かをよくご存知でしょう。
このDNAライゲーション計算ツールは、分子クローニング実験に必要なベクターとインサートDNAの最適な量を決定します。基本原理はシンプルです:プラスミドベクターとDNAインサートの間で正確なモル比を達成することです。等しい質量が等しい分子数を意味するわけではないという点は、あまり明確ではありません。1 kbのインサートは5 kbのベクターよりもはるかに軽いため、断片サイズに基づいて量を調整する必要があります。
実践的には、通常、インサートからベクターへの3:1から5:1のモル比が、ほとんどの標準的なクローニング応用で信頼性の高い結果をもたらします。ただし、ブラント末端ライゲーションでは、より高い比率が有利であり、大きなインサート(>10 kb)では、より低い比率が必要になる場合があります。これらは恣意的な数字ではありません。世界中の分子生物学者による何十年にもわたる経験的な最適化を反映しており、コールドスプリングハーバーの分子クローニングマニュアルやニューイングランドバイオラボのプロトコルに文書化されています。
発現ベクターの構築、遺伝子ライブラリの作成、または厄介なサブクローニングプロジェクトのトラブルシューティングを行う際、正確な計算は時間と高価な試薬の両方を節約します。よくある間違いは、ゲル精製後のDNA濃度の変動を考慮することを忘れることです。ナノドロップの読み取り値は、想像以上に重要です。
DNA連結の公式と計算
DNA連結の計算は、最初に見えるよりもずっと簡単です。本質的には、分子生物学の問題を解決しています:異なるサイズの際に、ベクターに対する挿入断片の分子数をどのように適切に調整するか?
この公式は、目標のモル比を達成するために、断片のサイズと濃度を考慮します。この計算を理解することで、問題が発生した際のトラブルシューティングに役立ちます—連結がうまくいかない場合、DNAの量が問題かどうかをすぐに確認できます。
挿入断片量の計算
必要な挿入断片DNA量(ナノグラム)は、以下の公式で計算されます:
以下の要素を含みます:
- ベクターのng = 反応で使用するベクターDNA量(通常50-100 ng)
- 挿入断片のkbサイズ = 挿入断片DNAの長さ(キロベース)
- ベクターのkbサイズ = ベクターDNAの長さ(キロベース)
- モル比 = 挿入断片分子とベクター分子の目標比(通常3:1から5:1)
容量計算
必要な挿入断片DNA量が決定されたら、反応に必要な容量を計算します:
例:1 kbの遺伝子を標準プラスミドにクローニングする
実際のシナリオを見てみましょう—典型的な発現ベクターに1 kbの遺伝子をクローニングします:
DNAサンプル:
- ベクター濃度:50 ng/μL(新たに消化したpET28a)
- ベクター長:3000 bp(3 kb)
- 挿入断片濃度:25 ng/μL(PCR増幅した遺伝子、ゲル精製)
- 挿入断片長:1000 bp(1 kb)
- 目標モル比:3:1(挿入断片:ベクター)
- 全反応容量:20 μL
- ベクター量:50 ng(標準的な開始量)
ステップ1:必要な挿入断片量の計算
挿入断片がベクターの3分の1のサイズであることに注意してください。より多くの分子を得るために、より少ない質量が必要です。
ステップ2:必要な容量の計算
実践的な意味: 1 μLのベクター、2 μLの挿入断片、T4 DNA ligase(通常1 μL)を混ぜ、リゲーションバッファーで全量を20 μLにします。これにより、ベクター1分子に対して3分子の挿入断片が得られ、反応を進めるのに十分ですが、システムを圧倒しません。
DNAライゲーション計算機の使用方法
この計算機は、DNAの濃度を測定すれば約30秒で使用できます。以下がワークフローです:
1. ベクター情報を入力
- ng/μL単位の濃度(NanodropまたはQubitの測定値を確認)
- 塩基対の長さ - プラスミドマップまたはシークエンスデータを確認
- 使用する量(ほとんどの用途で50-100 ngが適している)
2. インサート情報を追加
- ng/μL単位の濃度(最高の精度を得るためにゲル精製後に測定)
- 塩基対の断片長
3. 反応パラメータを設定
- モル比:スティッキーエンドで3:1、ブラントエンドで5:1から開始
- 総反応量:10-20 μLが標準(少量の方が試薬を節約でき、多めの量はピペッティングが正確)
4. 計算された容量を確認 計算機は即座に以下を表示します:
- ピペッティングするベクターとインサートの正確な容量
- 追加するライゲーションバッファーまたは水の量
- 反応中のDNA総量
計算機が容量が合わないと警告する場合、DNAが希釈されすぎているか、反応量が少なすぎます。一般的な対処法:DNAサンプルを濃縮するか、反応量を増やす。
プロのヒント: 結果をラボノートに直接コピーしましょう。将来の自分が、このプロトコルのトラブルシューティングや最適化の際に、これらの計算を記録しておいて感謝するはずです。
実世界の応用とユースケース
標準的な分子クローニング
ほとんどの研究者は、このカリキュレーターを日常的なクローニング作業に使用します。遺伝子を発現ベクターに挿入したり、プラスミド間でサブクローニングを行ったり、レポーターアッセイを構築したりします。計算は慣れてくると自然になりますが、等量ではなく等モル数を使用することで、原因不明のライゲーション失敗を防ぐことができます。
タンパク質発現の最適化
タンパク質発現システムをセットアップする際、最初のライゲーションを正確に行うことが重要です。pUC誘導体のような高コピーベクターは、ライゲーション反応を過度に複雑にしないために、やや低いインサート比(2:1または3:1)から恩恵を受けます。このカリキュレーターは、特定のベクターサイズに基づいてこれらの比率を調整するのに役立ちます。
CRISPRベクターの構築
ガイドRNAをCRISPRベクターにクローニングすることは独特の課題を提示します。非常に小さなインサート(20-100 bp)を扱うことが多いためです。このカリキュレーターは、直感が通用しないシナリオを処理します。9 kbベクターへの60 bpのgRNAインサートには、慎重な比率計算が必要であり、正確な数学が失敗した実験から救ってくれます。
合成生物学と多断片アセンブリ
ギブソンアセンブリやゴールデンゲートクローニングは従来のライゲーションとは異なる要件を持ちますが、モル比の理解は依然として重要です。このカリキュレーターは、代替的なアセンブリ方法を使用する場合でも、断片の化学量論について考えるのに役立ちます。多くの合成生物学者は、特定のプロトコルに調整する前の出発点として使用しています。
困難なライゲーションのトラブルシューティング
一部のライゲーションは特に厄介です:
- 大きなインサート(>5 kb):立体障害を避けるために低い比率(1:1または2:1)を使用
- 微小な断片(<100 bp):エンド修復の非効率性を補うために、比率を10:1以上に増やす
- ブラント末端ライゲーション:効率が低いため、5:1比率から始め、PEGを反応に加える
- AT-richまたはGC-richな配列:比率の最適化が必要な場合があり、カリキュレーターを使用して系統的に実験できます
見落とされがちなこと:ゲル精製後、DNAの濃度は出発材料から大きく異なる可能性があります。常に計算前に再測定してください。
代替クローニング方法を検討するタイミング
従来のライゲーションはほとんどの用途に適していますが、特定のシナリオには他の方法が存在します:
ギブソンアセンブリは、1回の反応で複数の断片を組み立てる際の主要な方法になっています。依然として断片比率を考慮する必要がありますが、通常は等モル量が機能し、数学は似ています。特に3つ以上の断片を含む複雑な構築物を作成する際に有用です。元のギブソンアセンブリプロトコルによると、すべての断片の等モル量を維持することで最良の結果が得られます。
ゴールデンゲートアセンブリは、反復的なクローニングプロジェクトや組み合わせライブラリを構築する際に優れています。Type IIS制限酵素は方向性のあるスカーレスな接合部を作成します。従来のライゲーションに対する主な利点は、スカーを残さずに定義された順序で複数の断片を組み立てられることです。計算は簡単で、すべての部品の等モル濃度を目指すだけです。
In-Fusionおよび類似のシームレスクローニングキットは、制限酵素を完全に回避したい場合に適しています。短い(15 bp)相同領域と独自の酵素混合物を使用します。これらの市販システムは計算を簡素化しますが、反応ごとのコストが追加されます。小規模なプロジェクトには適していますが、日常的な作業には高価です。
Gatewayクローニングは、特にハイスループット環境で多くのベクター間で遺伝子を移動する場合に意味があります。初期設定には特殊なベクターが必要ですが、その後の転移は簡単です。多くの研究室が、異なるシステム間での発現スクリーニングにこれを使用しています。
経験的最適化は、特に扱いにくい構築物を扱う際に有効です。1:1、3:1、5:1、10:1の比率で並行してライゲーションを設定し、どれが最適かを確認します。この系統的なアプローチにより、特定のベクター-インサートの組み合わせに特異的な好みがあることがわかることがあります。うまくいくことを文書化してください。この知識は、将来の類似のプロジェクトで時間を節約できます。
DNAライゲーション計算の簡単な歴史
ライゲーション計算の物語は、組換えDNA技術の誕生そのものと結びついています。ポール・バーグ、ハーバート・ボイヤー、スタンレー・コーエンが1970年代初頭に最初の組換えDNA分子を作成したとき、誰も分子比を計算していませんでした。科学者は試行錯誤で何が機能するかを見つけていました。バクテリオファージに感染したE. coli由来のT4 DNAリガーゼは、平滑末端と粘着末端の両方を結合できるワーカーホースの酵素となりました。
1980年代から1990年代にかけて、クローニングが革新的ではなく日常的になるにつれ、パターンが現れ始めました。研究室では、過剰な挿入DNA が成功率を向上させることに気づきました。3:1から5:1の分子比のガイドラインは、プロトコル、コールドスプリングハーバーマニュアル、無数の研究室ミーティングを通じて共有された集合的な経験から生まれました。数学的な公式自体は分子量の違いを考慮するだけの単純なものでしたが、その系統的な適用は分子生物学コミュニティを通じて徐々に広がりました。
2000年代に入り、計算ツールが研究者の暗算や電卓を超えて計算を利用可能にしたことで、本当の変化が訪れました。オンライン計算ツールは精度を民主化し、大きな挿入断片や微小な断片のような直感が通用しない複雑なシナリオで特に役立ちました。興味深いことに、ギブソンアセンブリのような新しい方法が登場しても、分子比を制御するという基本原理は根本的に変わらず、関与する化学に応じて異なる方法で適用されるようになりました。
今日のライゲーション計算は、何十年も前に開発された同じ基本的な数学に基づいており、世界中の研究室での何百万もの成功(そして失敗)のクローニング実験によって洗練されてきました。
コード例
以下は、さまざまなプログラミング言語でのDNAライゲーション計算機の実装例です:
1' DNA ライゲーション計算機用のExcel VBA 関数
2Function CalculateInsertAmount(vectorAmount As Double, vectorLength As Double, insertLength As Double, molarRatio As Double) As Double
3 ' 必要な挿入断片量をngで計算
4 CalculateInsertAmount = vectorAmount * (insertLength / vectorLength) * molarRatio
5End Function
6
7Function CalculateVectorVolume(vectorAmount As Double, vectorConcentration As Double) As Double
8 ' ベクター量をμLで計算
9 CalculateVectorVolume = vectorAmount / vectorConcentration
10End Function
11
12Function CalculateInsertVolume(insertAmount As Double, insertConcentration As Double) As Double
13 ' 挿入断片量をμLで計算
14 CalculateInsertVolume = insertAmount / insertConcentration
15End Function
16
17Function CalculateBufferVolume(totalVolume As Double, vectorVolume As Double, insertVolume As Double) As Double
18 ' バッファー/水の量をμLで計算
19 CalculateBufferVolume = totalVolume - vectorVolume - insertVolume
20End Function
21
22' セル内での使用例:
23' =CalculateInsertAmount(50, 3000, 1000, 3)
241def calculate_ligation_volumes(vector_concentration, vector_length, insert_concentration,
2 insert_length, molar_ratio, total_volume, vector_amount=50):
3 """
4 DNAライゲーション反応の体積を計算する。
5
6 パラメータ:
7 vector_concentration (float): ベクターDNAの濃度(ng/μL)
8 vector_length (float): ベクターDNAの長さ(塩基対)
9 insert_concentration (float): 挿入断片DNAの濃度(ng/μL)
10 insert_length (float): 挿入断片DNAの長さ(塩基対)
11 molar_ratio (float): 挿入断片:ベクターの所望のモル比
12 total_volume (float): 全反応体積(μL)
13 vector_amount (float): 使用するベクターDNAの量(ng)(デフォルト: 50)
14
15 戻り値:
16 dict: 計算された体積と量を含む辞書
17 """
18 # ベクター体積の計算
19 vector_volume = vector_amount / vector_concentration
20
21 # 必要な挿入断片量の計算
22 vector_length_kb = vector_length / 1000
23 insert_length_kb = insert_length / 1000
24 insert_amount = (vector_amount * insert_length_kb / vector_length_kb) * molar_ratio
25
26 # 挿入断片体積の計算
27 insert_volume = insert_amount / insert_concentration
28
29 # バッファー/水の体積の計算
30 buffer_volume = total_volume - vector_volume - insert_volume
31
32 return {
33 "vector_volume": round(vector_volume, 2),
34 "insert_volume": round(insert_volume, 2),
35 "buffer_volume": round(buffer_volume, 2),
36 "insert_amount": round(insert_amount, 2),
37 "vector_amount": vector_amount
38 }
39
40# 使用例
41result = calculate_ligation_volumes(
42 vector_concentration=50,
43 vector_length=3000,
44 insert_concentration=25,
45 insert_length=1000,
46 molar_ratio=3,
47 total_volume=20
48)
49
50print(f"ベクター: {result['vector_volume']} μL ({result['vector_amount']} ng)")
51print(f"挿入断片: {result['insert_volume']} μL ({result['insert_amount']} ng)")
52print(f"バッファー: {result['buffer_volume']} μL")
53print(f"合計: 20 μL")
541function calculateLigationVolumes(vectorConcentration, vectorLength, insertConcentration,
2 insertLength, molarRatio, totalVolume, vectorAmount = 50) {
3 // 長さをkbに変換して計算
4 const vectorLengthKb = vectorLength / 1000;
5 const insertLengthKb = insertLength / 1000;
6
7 // 必要な挿入断片量の計算
8 const insertAmount = (vectorAmount * insertLengthKb / vectorLengthKb) * molarRatio;
9
10 // 体積の計算
11 const vectorVolume = vectorAmount / vectorConcentration;
12 const insertVolume = insertAmount / insertConcentration;
13 const bufferVolume = totalVolume - vectorVolume - insertVolume;
14
15 return {
16 vectorVolume: parseFloat(vectorVolume.toFixed(2)),
17 insertVolume: parseFloat(insertVolume.toFixed(2)),
18 bufferVolume: parseFloat(bufferVolume.toFixed(2)),
19 insertAmount: parseFloat(insertAmount.toFixed(2)),
20 vectorAmount: vectorAmount
21 };
22}
23
24// 使用例
25const result = calculateLigationVolumes(50, 3000, 25, 1000, 3, 20);
26console.log(`ベクター: ${result.vectorVolume} μL (${result.vectorAmount} ng)`);
27console.log(`挿入断片: ${result.insertVolume} μL (${result.insertAmount} ng)`);
28console.log(`バッファー: ${result.bufferVolume} μL`);
29console.log(`合計: 20 μL`);
301public class DNALigationCalculator {
2 public static class LigationResult {
3 public final double vectorVolume;
4 public final double insertVolume;
5 public final double bufferVolume;
6 public final double insertAmount;
7 public final double vectorAmount;
8
9 public LigationResult(double vectorVolume, double insertVolume, double bufferVolume,
10 double insertAmount, double vectorAmount) {
11 this.vectorVolume = vectorVolume;
12 this.insertVolume = insertVolume;
13 this.bufferVolume = bufferVolume;
14 this.insertAmount = insertAmount;
15 this.vectorAmount = vectorAmount;
16 }
17 }
18
19 public static LigationResult calculateLigationVolumes(
20 double vectorConcentration, double vectorLength,
21 double insertConcentration, double insertLength,
22 double molarRatio, double totalVolume, double vectorAmount) {
23
24 // 長さをkbに変換
25 double vectorLengthKb = vectorLength / 1000.0;
26 double insertLengthKb = insertLength / 1000.0;
27
28 // 必要な挿入断片量の計算
29 double insertAmount = (vectorAmount * insertLengthKb / vectorLengthKb) * molarRatio;
30
31 // 体積の計算
32 double vectorVolume = vectorAmount / vectorConcentration;
33 double insertVolume = insertAmount / insertConcentration;
34 double bufferVolume = totalVolume - vectorVolume - insertVolume;
35
36 // 小数点以下2桁に丸める
37 vectorVolume = Math.round(vectorVolume * 100.0) / 100.0;
38 insertVolume = Math.round(insertVolume * 100.0) / 100.0;
39 bufferVolume = Math.round(bufferVolume * 100.0) / 100.0;
40 insertAmount = Math.round(insertAmount * 100.0) / 100.0;
41
42 return new LigationResult(vectorVolume, insertVolume, bufferVolume, insertAmount, vectorAmount);
43 }
44
45 public static void main(String[] args) {
46 LigationResult result = calculateLigationVolumes(50, 3000, 25, 1000, 3, 20, 50);
47
48 System.out.printf("ベクター: %.2f μL (%.2f ng)%n", result.vectorVolume, result.vectorAmount);
49 System.out.printf("挿入断片: %.2f μL (%.2f ng)%n", result.insertVolume, result.insertAmount);
50 System.out.printf("バッファー: %.2f μL%n", result.bufferVolume);
51 System.out.printf("合計: 20 μL%n");
52 }
53}
541#include <iostream>
2#include <cmath>
3#include <iomanip>
4
5struct LigationResult {
6 double vectorVolume;
7 double insertVolume;
8 double bufferVolume;
9 double insertAmount;
10 double vectorAmount;
11};
12
13LigationResult calculateLigationVolumes(
14 double vectorConcentration, double vectorLength,
15 double insertConcentration, double insertLength,
16 double molarRatio, double totalVolume, double vectorAmount = 50.0) {
17
18 // 長さをkbに変換
19 double vectorLengthKb = vectorLength / 1000.0;
20 double insertLengthKb = insertLength / 1000.0;
21
22 // 必要な挿入断片量の計算
23 double insertAmount = (vectorAmount * insertLengthKb / vectorLengthKb) * molarRatio;
24
25 // 体積の計算
26 double vectorVolume = vectorAmount / vectorConcentration;
27 double insertVolume = insertAmount / insertConcentration;
28 double bufferVolume = totalVolume - vectorVolume - insertVolume;
29
30 // 小数点以下2桁に丸める
31 vectorVolume = std::round(vectorVolume * 100.0) / 100.0;
32 insertVolume = std::round(insertVolume * 100.0) / 100.0;
33 bufferVolume = std::round(bufferVolume * 100.0) / 100.0;
34 insertAmount = std::round(insertAmount * 100.0) / 100.0;
35
36 return {vectorVolume, insertVolume, bufferVolume, insertAmount, vectorAmount};
37}
38
39int main() {
40 LigationResult result = calculateLigationVolumes(50, 3000, 25, 1000, 3, 20);
41
42 std::cout << std::fixed << std::setprecision(2);
43 std::cout << "ベクター: " << result.vectorVolume << " μL (" << result.vectorAmount << " ng)" << std::endl;
44 std::cout << "挿入断片: " << result.insertVolume << " μL (" << result.insertAmount << " ng)" << std::endl;
45 std::cout << "バッファー: " << result.bufferVolume << " μL" << std::endl;
46 std::cout << "合計: 20 μL" << std::endl;
47
48 return 0;
49}
50よくある質問
DNAライゲーションの最適なモル比は?
スティッキーエンドライゲーションでは3:1(インサート:ベクター)から始めましょう。これは、ほとんどの標準的なクローニングプロジェクトで信頼性の高い比率です。ブラントエンドライゲーションの効率は低いため、5:1またはそれ以上に上げる必要があります。
実践的な方法は以下の通りです:
- スティッキーエンドライゲーション:1:1 から 3:1(3:1から開始)
- ブラントエンドライゲーション:5:1 から 10:1
- 大きなインサート(>10 kb):1:1 から 2:1(立体障害が要因となるため)
- 小さなインサート(<500 bp):5:1 から 10:1(潜在的な末端損傷を補うため)
- マルチフラグメントアセンブリ:ベクターに対して各インサート3:1
不確かな場合は、異なる比率で並行して反応を行ってください。セットアップに1時間余分にかかりますが、数日のトラブルシューティングを節約できます。
正しい容量を使用しているのに、なぜライゲーションが失敗するのか?
モル比は謎の一部に過ぎません。以下のような問題が発生します:
DNAの品質の問題は、驚くほど一般的です。ゲル精製されたDNAがバッファー中に数週間置かれていた場合、末端が損傷している可能性があります。新鮮なDNAの方が効果的です。ライゲーションが一貫して失敗する場合は、ベクターとインサートを再切断し、再精製してください。
脱リン酸化の問題が効率を低下させる可能性があります。自己ライゲーションを防ぐためにアルカリホスファターゼでベクターを処理した場合(ほとんどのアプリケーションで推奨)、インサートに無傷の5'リン酸基があることを確認してください。PCR産物は適切なリン酸基を欠いていることがあるため、T4 PNKを使用してそれらを追加することを検討してください。
死んだリガーゼは、想像以上に一般的です。-20°Cの冷凍庫のドアに置かれ、温度変動にさらされているチューブは、おそらくあまり活性がありません。新しいリガーゼを注文するか、酵素活性を確認するためのポジティブコントロールを実行してください。
温度と時間は非常に重要です。スティッキーエンドは通常、室温で1時間で問題なくライゲーションしますが、ブラントエンドはより長い培養を必要とします。16°Cで一晩培養することをお勧めします。室温の利便性はルーチンワークに適していますが、難しいライゲーションは低温での、より制御された反応速度から恩恵を受けます。
精製ステップからのEDTAや高塩濃度の汚染がリガーゼを阻害します。常に適切なDNA精製キットまたはエタノール沈殿を使用し、ゲル抽出から単に希釈するのは避けてください。
(以下、同様に翻訳を続けます)
参考文献
-
Sambrook J, Russell DW. (2001). 分子クローニング: 実験マニュアル(第3版). コールドスプリングハーバー研究所出版.
-
Green MR, Sambrook J. (2012). 分子クローニング: 実験マニュアル(第4版). コールドスプリングハーバー研究所出版.
-
Engler C, Kandzia R, Marillonnet S. (2008). 高スループット能力を持つ1ステップ精密クローニング法. PLoS ONE, 3(11), e3647. https://doi.org/10.1371/journal.pone.0003647
-
Gibson DG, Young L, Chuang RY, Venter JC, Hutchison CA, Smith HO. (2009). 数百キロベースまでのDNA分子の酵素的組み立て. Nature Methods, 6(5), 343-345. https://doi.org/10.1038/nmeth.1318
-
Aslanidis C, de Jong PJ. (1990). PCR産物のリガーゼ非依存的クローニング(LIC-PCR). Nucleic Acids Research, 18(20), 6069-6074. https://doi.org/10.1093/nar/18.20.6069
-
Zimmerman SB, Pheiffer BH. (1983). 高分子密集環境による、ラット肝臓またはEscherichia coliのDNAリガーゼによる平滑末端連結. Proceedings of the National Academy of Sciences, 80(19), 5852-5856. https://doi.org/10.1073/pnas.80.19.5852
-
Addgene - 分子生物学リファレンス. https://www.addgene.org/mol-bio-reference/
-
ニューイングランドバイオラボ(NEB)- DNAリゲーションプロトコル. https://www.neb.com/protocols/0001/01/01/dna-ligation-protocol-with-t4-dna-ligase-m0202
-
サーモフィッシャーサイエンティフィック - 分子クローニング技術リファレンス. https://www.thermofisher.com/us/en/home/life-science/cloning/cloning-learning-center.html
-
Promega - クローニング技術マニュアル. https://www.promega.com/resources/product-guides-and-selectors/protocols-and-applications-guide/cloning/