麻痺性貝毒検査のための毒力計算プログラムについて On the Computer Program for the Calculation of the Toxicityin PSP Test 伊東 拓也 上野 健一 田沢悌二郎 Takuya Ito, Ken-ichiUeno and Teijiro Tazawa 二枚貝類における麻痺性貝毒の検査は、厚生省通達(別 を求め、 Sommer表を用いてマウスに腹腔内投与した溶 添) 「麻痺性貝毒検査法」1)に従って行われている。当所で 液の毒力(以下、投与液毒力)に換算(致死時間からマウ は、この検査法中のマウス体重、致死時間等より毒力を求 ス単位MUに変換)する。もし体重が19-21gの範囲外の める部分について、計算ミスを防ぎ、迅速な処理ができ、 マウスを用いた場合は、すべての致死時間について毒力換 かつプリンタ出力による再確認が容易なことから、独自に 算を行い、この値に体重補正表から得られた係数を乗する 開発したコンピュータプログラムを用いて行っていた。こ ことで毒力を補正し、毒力順に並べた中央値を投与液毒力 のプログラムは、 NECPC-9801シリーズ独自のI/Oポー (供試マウスが偶数の場合は中央2個体の平均)とする。 トやVRAMを直接制御していたため、同シリーズ用の 試料の毒力は、投与液毒力に試料抽出倍率と投与希釈倍率 MS-DOS上でしか動作しない。しかしながら、現在では を乗することで求める。なお、当所における検査では、通 イベント駆動型32bitマルチタスクOSであるWindows 常5個体のマウスを用いており、体重が19-21gの範囲外 95/98/NTが主流となり、また、当所においてもネットワー のマウスも用いる場合の方法(中央値を用いる方法)で試 クが構築され、これらOSを有効に活用できる環境が整備 料の毒力を算出している。 された。一方、食品衛生法等の改正に伴い、食品検査施設 本プログラムは、前段の流れに沿って作成された。入出 等へのGLPの導入が義務づけられ2)、データの作成に用い 力を行うメイン画面を図1に示した。本プログラムの処理 たコンピュータ・ソフトウエアは、 「文書化され、使用に の流れは、以下の通りである。 適切なものであることが確認可能であること」とされた3)。 1.人力ルーチン:計算に必要な項目を入力し、入力エ さらに、 GLPにおけるコンピュータ査察4)によれば、プロ ラーの検出・訂正・再入力を行う。入力・再入力の順 グラムの仕様をまとめた資料(ソースコードを含む)の作 は問わず、どこから入力または訂正しても良い。入力 成等が求められている。これらの新しい環境の下でGLP 項目は、試料番号・備考(省略可) ・試料抽出倍率(デ 基準を満たすことを目的として、 Windows95/98/NT上 フォルトは2倍) ・投与希釈倍率(デフォルトは1 で動作する「麻痺性貝毒計算プログラム(以下、本プログ ラムと略)」を新たに開発したので、その処理内容を記し、 毒力計算ルーチンのソースコードを記載することとした。 なお、使用したプログラム言語はC/C ++であり、 Borland C ++BuilderProffessionalを用いてコンパイル・リンク した。 「麻痺性貝毒検査法」による毒力の計算には、試料重量 の抽出液容量に対する比率(試料と同量の0.1N塩酸を用 いた場合は2となる。以下、試料抽出倍率)、抽出液のマ ウス投与液に対する希釈倍率(以下、投与希釈倍率)、検 査に用いたマウスの個体数、各マウスの体重および致死時 間が必要である。まず、マウス致死時間から中央致死時間 図1 プログラムメイン画面 倍) ・マウス体重およびマウス致死時間である。体重 リスト1外部変数等の宣言部(ヘッダー) および致死時間については、入力値のエラーチェック を行う。 2.計算ルーチン:上記の中のある項目が入力されると、 そのたびに現在のデータの入力状況がチェックされ、 状況に応じて次の計算が行われる。 (1)投与液毒力:マウスの体重または致死時間が入力 されるごとに実行され、まず、該当するマウスの体 重・致死時間の入力状況がチェックされる。体重・ 致死時間ともに入力済みとなった場合はその投与液 毒力を計算し、結果を画面に表示後、次の(2)に移る。 体重・致死時間のどちらか一方が未入力の場合は入 力ルーチンへ戻る。 (2)試料毒力:試料番号・備考・試料抽出倍率あるい スの致死時間を格納するint型配列である。このマウスの は投与希釈倍率が入力されたとき、または投与液毒 致死時間は、分2桁と秒2桁をピリオドで区切って入力す 力が計算されたときに実行される。入力ルーチンに ることとした。これを本プログラム内部では、秒に変換し、 挙げたすべての項目が入力されている場合は、試料 整数としてtimeに格納する。マウス体重は、 10倍した整 の毒力を計算し、制御を出力ルーチンに移す。これ 数(20.5gであれば205)として処理し、int型配列 らの条件が満たされていない場合は、入力ルーチン weightに格納する。これらを整数として処理するのは、 へ戻る。 浮動小数点演算における桁落ちあるいは丸め誤差によって6)、 3.出力ルーチン:計算結果は画面上に表示・プリン ターに印刷およびファイルに保存の3法で出力される。 4.サービスルーチン: Sommer表5)の表示・体重補正 体重補正表などから目的の数値が引けない(例えば、マウ ス体重を19.8と入力したとき、浮動小数点内部表現で 19.799999となっている場合があり、このため1.0となるべ 表5)の表示・版権等の表示・使い方の表示および結果 き補正係数が、一つ手前の1.015となる)ことを防ぐため の一括印刷(48件まで)の機能を付加した。 である pspmlはマウスの毒力を格納する配列、 pspは 次に、計算部分、すなわち各投与液毒力の計算ならびに 試料の麻痺性貝毒毒力の計算について解説する。これら2 つの計算は、それぞれ独立の関数として記述した。入出力 試料の毒力を格納する変数である。 13行以降のメンバーは、 結果出力用文字列を保持するための変数である。 投与液毒力の計算は、関数get_toxicity ( )で行われる。 データの格納のため構造体を定義し、グローバル変数とし ソースコードはリスト2に示した。本関数は、マウス番号 てヘッダーファイルに記述した。このヘッダーファイルを mouseを引数とするbool型関数である。 Sommer表にお リスト1に示した。 1行目は使用するマウス数を定義する ける致死時間は秒に換算して配列dtmに、その致死時間 プリプロセッサー制御指令で、本プログラムでは5とした。 に対応する毒力は配列adpspに格納されている。本検査 4行目のdataflagは、データ等の入力状況を示すフラグで, 法では、マウス致死時間から投与液毒力を求める際、 第0ビットから順に、試料抽出倍率、投与希釈倍率、第1 Sommer表中の最も近い致死時間を用いることになって ∼第5マウス体重、第1∼第5マウス致死時間、計算終了, いる。そのため、 dtmは同表致死時間を範囲に置き換え 印刷終了を示し、ビットが立っていれば該当作業が終了し た値を用いた。例えば、致死時間6分0秒の範囲は、表の ていることを示す。 5行目以降は、入力されたデータや計 致死時間並びが…, 5'50", 6'00", 6'15", …となっている 算結果を保存する構造体の定義および構造体配列dataと ので、 5'55"以上6'07"未満となる。体重補正表の体重は ポインタpdatの宣言である data[0]が実際の入出力・ Sommer表と同様範囲に置換後10倍した値をweightに、 計算用に使用され、 data [1]からdata [49]は計算結果の 対応する補正係数はadjustに格納されている。30∼32行は、 保存等に使用される。この構造体のメンバーsampleno, 演算対象のマウスについて、体重と致死時間が共に入力さ remarksは、それぞれ試料番号および備考を格納する配 れているかを検査し、入力されていなければfalseを返す 列である。 dil1, dil2は試料抽出倍率および投与希釈倍率 命令である。33∼40行は、致死時間から投与液毒力を検索 を格納する変数で、それぞれ2.0, 1.0に初期化される(従 する部分で、マウスが生存した場合(致死時間にゼロを入 って、 dataflagも0x0003に初期化される)。 timeはマウ 力)などは0を得、変数Wに格納する。41∼48行はマウ リスト2 マウス毒力を求める関数get_toxicity( ) リスト3 試料毒力を求める関数psp_calculation ( ) 与希釈倍率の積としてpspに得られる。 19行目は、代表 値の計算に用いたマウスが何番目であったかを求めている (偶数の場合は該当マウスなしとなる場合がある)。この演 算は検査法と直接関連はないが、外れ値等を検出・検討す るための材料となる(体重補正との関係で、代表値を得た マウスの致死時間が5∼7分の範囲外となる場合などが確 認できる)。 今後は、出力ルーチンを改良し、データベース等に取り 込める形式などに対応することを検討したい。なお、本プ ログラム作成に使用したコンパイラー、ツール類の商標、 版権の記載は省略した。動作環境等も含め、これらに関し ては、本プログラムのヘルプファイルに記述した。 文 献 1)厚生省(環境衛生局乳肉衛生課長)通達(環乳第30号 ス体重から補正係数を得、変数xに格納する部分である。 49∼50行で投与液毒力(wとxの積)が計算され、当該 マウスのpspmlに格納される。51∼53行は結果出力のた めの処理である。 試料の麻痺性貝毒毒力は、関数psp_calculation ( )で 計算される。そのソースコードをリスト3に示した。この 関数は引数を持たないbool型の関数である。 5行目で希 釈倍率、投与液毒力など計算に必要な項目が揃っているか チェックする。6∼15行は投与液毒力を作業用の配列 別添,昭和55年7月1日),麻痺性貝毒計算法 2)厚生省生活衛生局食品保健課:食品検査施設の業務管 理ハンドブック,中央法規出版,東京(1997) p.3 3)厚生省(環境衛生局食品乳肉課長)通達(環食第8号, 平成9年1月16日),食品衛生検査施設における検査 等の業務管理について 4)渡邉 徹他:医薬品毒性試験法ガイドライン GLP 基準,地人書館,東京(1991) p.127 5) Horwitz, W.(ed.) : Official Methods of Analysis of the sortedにコピーし、それを昇順に並び替える部分である。 Association of Official Analytical Chemists 13th edi- 16∼17行は、並び替えられた投与液毒力から中央値を得る tion., Association of Official Analytical Chemists, 部分で、供試マウス数が偶数の場合と奇数の場合の両方に 対応させた。ちなみに、前出のget_toxicity ( )も含め、 これら関数はマウス数が5でなくとも値が得られる仕様と した。 18行目で試料の毒力が、代表値、試料抽出倍率、投 Washington (1980) p.299 6)州之内治男:数値計算,サイエンス社,東京(1978) p.2
© Copyright 2024 Paperzz