MPN最確数計算機
陽性と陰性の試験管の並びを菌の密度に換算します。5本ずつ3段階の希釈で5-3-1となった結果を100 mLあたりの最確数に直し、従来のThomas法による推定と信頼区間も並べて示します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 容量あたり (mL)
- 100
- パターン
- 5-3-1
- チューブの合計
- 15
- 陽性の合計
- 9
- 最確数 (MPN/mL)
- 1.0864475085
最確数法は、平板上のコロニーではなく、希釈系列に沿った反復管での有無によって生菌を数える場合に、生存可能な微生物密度を推定します。水質検査室、食品微生物学者、環境分析者は、大腸菌群・腸球菌などの指標菌について、いまもMPNコードと表に依拠しています。本計算機は、系列の各段階を接種量(ミリリットル)、管数、陽性管数として受け取り、元試料1ミリリットルあたりの密度についてポアソン最尤方程式を解きます。結果を100 mLあたりのMPNや任意の報告体積に再スケールし、古典的なThomas近似と比較し、Fisher情報に基づく近似信頼区間を読むことができます。すべて陰性の系列は密度ゼロを返し、すべて陽性の系列は上限なしとして拒否され、陰性を含むより高い希釈を追加するまで受理されません。
最確数法が推定するもの
最確数解析は、生存可能な生物がポアソン過程に従って試料中に無作為に分布し、少なくとも1個の生存単位を受け取った管が陽性になると仮定します。その仮定の下では、元試料vミリリットルを接種した管が陽性となる確率は、1からeのマイナスlambda掛けるv乗を引いた値に等しく、lambdaは1ミリリットルあたりの生物数としての未知密度です。
複数希釈での反復管がlambdaの尤度曲面を与え、最確数はその尤度を最大化する密度です。実務では各接種量でn本中何本が発育したかを記録し、5-3-1のような多段階パターンを作り、密度を表引きまたは計算します。対数尤度のスコア方程式を決定的な二分法で解くため、記載の範囲内で任意の管数や非10進体積も許容されます。
最確数の推定を使う人
教育実験室や試験ジェネレータは、学生に三管十進表だけを暗記させずにポアソンMPN論理を再現する決定的オラクルを必要とします。飲料水・排水・ボトル水の品質系は、いまも大腸菌群や腸球菌の結果を100ミリリットルあたりMPNで表します。非標準の反復数や珍しい接種量を使う食品・環境微生物学者は固定のMcCradyカードを使えず、連続最尤ソルバーの恩恵を受けます。「
検証失敗は残高を消費しません。
活用例
教育と試験の自動採点
全陽性で上限のない系列を明確に拒否する決定的な最尤MPNオラクルに対して、学生の希釈系列課題を採点します。
非標準の反復設計
印刷されたMcCrady表がレイアウトをカバーしないとき、任意の管数と接種量について連続MLE密度を計算します。
よくある質問
pattern文字列の意味は何ですか?
patternは段階順の陽性数をハイフンでつなぎます(例: 5-3-1)。古典的MPNコードに相当する便宜ラベルであり、表引きキーではありません。
系列の試験管がすべて陽性だった場合はどうなりますか?
すべて陽性の系列には上限がないため、結果は受け付けられません。陰性の試験管が残るよう、さらに高い希釈段階を加えて計算し直してください。
陽性の試験管が1本もない場合は?
すべて無菌の系列では密度はゼロになります。これは調べた試料と希釈段階に対する正しい結果で、誤りではありません。
最確数を100 mLあたりで報告できますか?
はい。密度は元の試料1ミリリットルあたりで計算され、100 mLあたりなど、お使いの方法で決められた報告量に換算できます。
Thomas法の式と比べると結果はどうなりますか?
主な値は、入力した試験管の結果に対する最尤法の解から求めます。従来のThomas法による近似値も比較用に並べて表示し、おおよその信頼区間も示します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/bio/most-probable-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"levels":[{"volume_ml":10,"tubes":5,"positive":5},{"volume_ml":1,"tubes":5,"positive":3},{"volume_ml":0.1,"tubes":5,"positive":1}]}'const res = await fetch("https://api.kit.forhosting.com/bio/most-probable-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"levels": [
{
"volume_ml": 10,
"tubes": 5,
"positive": 5
},
{
"volume_ml": 1,
"tubes": 5,
"positive": 3
},
{
"volume_ml": 0.1,
"tubes": 5,
"positive": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/most-probable-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"levels": [
{
"volume_ml": 10,
"tubes": 5,
"positive": 5
},
{
"volume_ml": 1,
"tubes": 5,
"positive": 3
},
{
"volume_ml": 0.1,
"tubes": 5,
"positive": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/most-probable-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"levels":[{"volume_ml":10,"tubes":5,"positive":5},{"volume_ml":1,"tubes":5,"positive":3},{"volume_ml":0.1,"tubes":5,"positive":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"levels":[{"volume_ml":10,"tubes":5,"positive":5},{"volume_ml":1,"tubes":5,"positive":3},{"volume_ml":0.1,"tubes":5,"positive":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/most-probable-number", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"levels": [
{
"volume_ml": 10,
"tubes": 5,
"positive": 5
},
{
"volume_ml": 1,
"tubes": 5,
"positive": 3
},
{
"volume_ml": 0.1,
"tubes": 5,
"positive": 1
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.most_probable_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
最確数法が推定するもの
本エンドポイントは印刷表を参照しません。すべて陰性のときは最大が密度ゼロにあり、APIはmpn_per_mlを0で返します。すべて陽性のときは密度が増えるほど尤度が無限に増え、有限のMPNは存在せず、タスクはinvalid_inputで失敗し、少なくとも1本の陰性を含むより高い希釈を求めます。この境界契約は、系列がすべて陽性のときだけ「より大きい」値を報告する実験室慣行と、数値上界とは別にハード失敗を扱う課金クライアントの双方と整合します。
入力契約・出力・mLあたりおよび100 mLあたりMPNの読み方
例として、10 mLで5本すべて陽性、1 mLで3陽性、0.1 mLで1陽性は古典的な5-3-1パターンであり、MLE密度はおおむね1生物/mL程度で、100 mLあたり約100にスケールします。規格が連続MLEではなく特定の公開コードを要求する場合は、数値密度を自前の規制表や方法参照と組み合わせてください。必須フィールドlevelsを1から20個のオブジェクト配列として含むJSON本体をPOSTしてください。各オブジェクトには、管あたりの元試料接種量(ミリリットル)の正の有限値volume_ml、反復本数の正の整数tubes、発育した管数でtubesを超えない非負整数positiveが必要です。任意のper_volume_mlは既定1で密度に乗算し、100を送ると多くの水質表と同様に100 mLあたりMPNを報告できます。任意のconfidence_levelは既定0.95で、0.5から0.999の閉区間になければなりません。成功時、本体はlevels、陽性数をハイフンでつなぐpattern文字列、total_tubesとtotal_positive、mpn_per_mlおよびper_volume_mlでスケールしたmpn、定義される場合のThomas近似の同様の対、confidence_level、method maximum_likelihood、短いformulaを返します。Fisher情報が正のときはci_low_per_ml、ci_high_per_mlおよびスケール済みのci_lowとci_highも含みます。検証失敗はフィールド名を示し課金されず、levels欠落、非正の体積、tubesを超えるpositive、全陽性系列、範囲外のconfidence_levelを対象とします。
MPN推定APIが価値を発揮する場面
自動化スクリプトは生の陽性数をPOSTし、選んだper_volume_ml付きのmpnを保存でき、表の行を手入力し直す必要がありません。リクエストを小さく保ち、テストで丸め済み密度を固定すれば、希釈系列のためだけに統計ソフトを立てなくても、宿題・LIMSプラグイン・エッジワーカー向けに再現可能なMPN推定が得られます。
連携の活用例
水質の100 mLあたりMPN
大腸菌群または腸球菌管の十進系列陽性数を入力し、per_volume_mlを100に設定して、適合記録向けの古典的MPN/100 mLを報告します。
技術的な質問
陽性管から最確数をどう計算しますか?
各希釈についてvolume_ml、tubes、positiveを持つlevelsを送ってください。APIはmLあたりのポアソン最尤密度と、per_volume_mlによる任意スケールのMPNを返します(MPN/100 mLなら100)。
すべての管が陽性の場合はどうなりますか?
尤度に有限最大がないため、タスクはinvalid_inputで失敗します。少なくとも1本の陰性を含むより高い希釈(より小さいvolume_ml)を追加してください。
Thomas値はmpnとどう違いますか?
mpnは最尤推定です。thomas_mpnは、陰性に含まれる試料mLと全管の試料mLの積の平方根でPを割る歴史的近似です。Thomasが定義されるとき、どちらもper_volume_mlでスケールされます。
最確数計算機の料金はいくらですか?
ブラウザツールは無料です。APIリクエストは成功1回あたり$0.002の前払いKIT残高を使い、無効入力は課金されません。