麻痺性貝毒検査のための毒力計算プログラムについて

麻痺性貝毒検査のための毒力計算プログラムについて
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