Main Content

トレーサビリティ情報の Simulink の MATLAB コード行との関連付け

MATLAB エディターのトレーサビリティ管理サポートは、Simulink® ベースの要件管理インターフェイスの拡張であり、MATLAB® コード行と外部アーティファクトの関連付けを可能にします。この機能では、MATLAB ファイルの編集は必要ありません。すべてのトレーサビリティ データは別々に保存されます。これは、Simulink モデルを扱うときの RMI リンクの "外部" ストレージと似ています。

さらに、トレーサビリティ情報管理の "外部ストレージ" モードを使用することで、Simulink および Stateflow® のユーザーは、外部ドキュメントを MATLAB Function ブロックのコンテンツと関連付けるときに、より細かく調整できる利点があります。

含まれるモデル例には、Simulink ブロックと、MATLAB Function ブロックの各コード行の両方に関連付けられるトレーサビリティ データがあります。

モデル例を開く

この例では、接続された複数の神経細胞における刺激によるスパイクをモデル化するときの、外部ドキュメントと MATLAB コード行の間のリンクについて説明します。

以下のコードを評価して、作業ディレクトリに slvnvdemo_synaptic_transmission Simulink モデルを開き、この例に含まれるファイルが適切に通信できるよう、基本設定を設定します。

open('slvnvdemo_synaptic_transmission.slx');
rmipref('UnsecureHttpRequests',true);

同一の神経細胞スパイク モデルを参照するモデル ブロックが 3 つあります。このモデルは、slvnvdemo_neuron.slx で確認できます。以下のコードを評価して、モデルを開きます。

open('slvnvdemo_neuron.slx');

神経細胞モデルは、"漏洩積分器" 式に従います。

CmdVdt=Itotal-V-V0Rm

Cm,Rm-capacitance and resistance of cell membrane

Itotal-includes injected stimulation current and all ion channel currents

V0-resting cross-membrane potential, typically -70mV

このシミュレーションの目的上、これを以下に変換します。

VV0+0t1Cm(Itotal-V-V0Rm)dt

ニューロン間の 2 つの MATLAB 関数がシナプス後電流を計算します。シナプス前の脱分極が神経伝達物質の放出しきい値を超えると、指定された振幅の 1 パルス分、シナプス後電流をインクリメントします。

II+Iamplitude

結果の全電流は、以下に従って、指数的に減衰します。

dIdt=-I*tτ

シナプスの短期抑圧効果をモデル化するため、前にパルスが印加された後、一定の時間枠の間、次のインクリメントは許可されません。モデルは、軸索輸送の時間遅延を無視します。

モデルのシミュレーションと結果の表示

以下のコードを評価して、slvnvdemo_synaptic_transmission モデルをシミュレートします。

sim('slvnvdemo_synaptic_transmission');
### Searching for referenced models in model 'slvnvdemo_synaptic_transmission'.
### Found 1 model references to update.
### Starting serial model reference simulation build.
### Successfully updated the model reference simulation target for: slvnvdemo_neuron

Build Summary

Simulation targets built:

Model             Action                        Rebuild Reason                               
=============================================================================================
slvnvdemo_neuron  Code generated and compiled.  slvnvdemo_neuron_msf.mexa64 does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 31.23s

結果を確認するには、Scope ブロックを手動でチェックするか、以下のコードを評価します。

open_system('slvnvdemo_synaptic_transmission/Scope');

6 つのプロットは以下のとおりです。

  1. 外部から印加された電流パルス

  2. 1 つ目のニューロンの、印加によって刺激された細胞内電圧スパイク

  3. 2 つ目のニューロンで生成されたシナプス後電流

  4. 2 つ目のニューロンのシナプスによって刺激された活動

  5. 3 つ目のニューロンで生成されたシナプス後電流

  6. 3 つ目のニューロンのシナプスによって刺激された活動

刺激パルス印加中 (プロット 1) の上流ニューロンの規則的なスパイク (プロット 2) を観察します。Synaptic current Function ブロックで神経伝達物質の短期抑圧が一時的ターンオフ期間としてモデル化されているため、下流ニューロンのシナプスによって誘起された電流 (プロット 3) は、上流ニューロンの活動電位の一部をスキップします。以下のコードを評価して、Synaptic current ブロックに移動します。

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic current');

下流ニューロンは、ときには、複数のシナプスによる入力を統合してスパイクを生成しているように見えます (プロット 4)。3 つ目のニューロンは、2 つ目のニューロンからのシナプス入力 (プロット 5) とその後のスパイク (プロット 6) を統合します。既定のパラメーターの値では、slvnvdemo_neuron モデルの Noise current ブロックによってモデルに意図的に導入されたランダム ノイズに応じて、3 つ目のニューロンは 1 回以上スパイクする可能性があります。Noise current ブロックに移動します。

rmidemo_callback('locate','slvnvdemo_neuron/Noise current');

3 つのニューロンすべてと両方のシナプスに、同じパラメーター値を割り当てます。トレーサビリティ リンクは、パラメーター値と実装を正当化するために使用されます。

Simulink とスタンドアロン MATLAB ファイル間の移動

slvnvdemo_synaptic_transmission model は、外部スクリプト synaptic_params.m を実行し、必要なパラメーター値をワークスペースに読み込みます。必要な場合、以下のコードを評価してスクリプトを開きます。open('synaptic_params.m').

MATLAB コード リンクを使用すると、Simulink 内の依存ブロックから、スクリプト ファイルだけでなく、シミュレーションで使用される値を定義する特定の行へと追跡できるようになります。

モデルの Stimulation pulse ブロックを手動で、または以下のコードを評価して見つけます。

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Stimulation pulse');

ブロックを右クリックし、[要件][1."I_inj = 2e-11; % 20 pA"] を選択してリンクをたどり、MATLAB コード ファイル内の関連する強調表示領域を表示します。あるいは、以下を評価します。

open('synaptic_params.m'); % 必要な場合、シナプス パラメーター スクリプトを開く

rmidemo_callback('view','slvnvdemo_synaptic_transmission/Stimulation pulse',1); % 要件リンクをたどる

synaptic_params.m スクリプトに、不一致のパラメーター値があることがわかります。これは、トレーサビリティ リンクによって簡単に検出できます。synaptic_params.m スクリプトの 12 行目、V_syn_release = -2e-2; % -20 mV を強調表示します。選択部分を右クリックし、コンテキスト メニューで [要件][1. slvnvdemo_synaptic_transmission/Synaptic release threshold (Constant)] をクリックします。すると、Simulink モデルに戻り、synaptic_params.m の 12 行目にリンクされたブロックが強調表示されます。

Simulink で、[アプリ] タブをクリックし、[要件マネージャー] を開きます。[要件] タブで [リンクの強調表示] をクリックし、ここで作成したリンクを強調表示します。あるいは、以下のコードを評価します。

rmi('highlightModel', 'slvnvdemo_synaptic_transmission');

MATLAB コード行に対するトレーサビリティ リンクの作成

以下のコードを評価し、双方向リンクが有効であることを確実にして、1 ステップで双方向のトレーサビリティ リンクを作成できるようにします。

rmipref('BiDirectionalLinking',true);

モデルの左下にある Synaptic time constant ブロックは、synaptic_params.m の関連する行にまだリンクされていません。Simulink モデルで、Synaptic time constant ブロックを選択します。このブロックが見つからない場合、次のコードを評価してからブロックを選択します。

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic time constant');

次に、MATLAB エディターで、synaptic_params.m スクリプトの下部にある変数名 Syn_decay_time を選択します。コード open('synaptic_params') を評価してスクリプトを開きます (まだ開いていない場合)。

選択した行を右クリックして、コンテキスト メニューから [要件][Simulink の選択内容へのリンク] を選択します。MATLAB から Simulink へ、さらに MATLAB へと、新しいリンクによる移動をテストします。

syn_decay_timeLink.png

MATLAB Function ブロック内でのコード行に対するトレーサビリティ リンクの作成

slvnvdemo_synaptic_transmission モデルには、Synaptic strength Constant ブロックに対するパラメーター値のソースを追跡するために使用する MATLAB Function ブロックがあります。Simulink モデルで、Synaptic strength Constant ブロックをクリックするか、または以下のコードを評価してブロックを見つけます。リンク用にブロックを選択するには、ブロックを右クリックして、[要件][Simulink とのリンクを選択] をクリックします。

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic strength');

MATLAB Function ブロックそのものをリンクする代わりに、このブロックの MATLAB コードを開き、特定の行をリンクします。slvnvdemo_synaptic_transmission モデルで Synaptic current ブロックに移動してブロックをダブルクリックするか、以下のコードを評価します。

rmidemo_callback('emlshow','slvnvdemo_synaptic_transmission/Synaptic current');

MATLAB Function ブロック エディターで、MATLAB Function ブロック コードの 33 行目の、"I_amplitude" が出現する箇所を見つけます。カーソルを使用して行を強調表示して選択してから、右クリックします。コンテキスト メニューから [要件] を選択し、[Simulink の選択内容へのリンク] を選択します。

MATLAB コード行と Microsoft Word 間のトレーサビリティ リンクの作成

ここまでは、MATLAB と Simulink 間のリンクのみについて見てきました。参照される slvnvdemo_neuron モデルの Sodium current calculation subsystem に属する Ion current calculation MATLAB Function ブロックを開きます。あるいは、コード rmidemo_callback('emlshow','slvnvdemo_neuron/Sodium channel current/Ion current calculation') を評価します。

MATLAB Function ブロック エディター内で右クリックし、コンテキスト メニューから [要件][要件の強調表示を有効にする] を選択し、要件リンクをもつコード行を確認します。

enableCodeReqsHightlighting.png

強調表示されたコード行の 1 つを右クリックし、それが要件リンクをもつことを示します。[要件] コンテキスト メニューから、メニューの上部にある番号付きリンクに移動します。関連付けられた Word ドキュメントの関連付けられたテキストが開きます。Word ドキュメントを開き、MATLAB アイコンと似たオブジェクトを探すことで、リンクを視覚的に見つけることもできます。このようなリンクされたオブジェクトを Ctrl キーを押しながらクリックすると、リンクされたコードに移動できます。

wordLink.png

コード open('NeuralSpikeModeling.docx'). を評価して、Word ドキュメントを開きます。

Potassium channel current subsystem の関数 Ion current calculation に同様なリンクを作成するには、Word ドキュメントを開き、検索機能 (Ctrl+F) を使用して "outward current of potassium ions" という語句を見つけます。Word ドキュメント上で、この語句をカーソルで選択します。次に、上から Ion current calculation MATLAB Function ブロックを開くか、コード rmidemo_callback('emlshow','slvnvdemo_neuron/Potassium channel current/Ion current calculation') を評価します。

MATLAB Function ブロック エディターで、サブ関数 "outwardCurrent" の実装 (34 ~ 37 行目) を選択します。選択した行を右クリックし、コンテキスト メニューで [要件][Word の選択内容へのリンク] を選択します。Word ドキュメントを最小化してから、MATLAB コードの下部の新しく強調表示された行から、Word 内の関連する記述に移動します。正しい位置が強調表示されたら、MATLAB アイコンを使用してコードに戻ります。

outwardCurrent.png

トレーサビリティ リンクのレポート

MATLAB Function ブロックの MATLAB コード行に関連付けられるトレーサビリティ リンクは、親の Simulink モデルに対して生成される 要件トレーサビリティ レポートに含まれます。slvnvdemo_neuron Simulink モデルの [要件] タブで、[共有][モデルのトレーサビリティ レポートの生成] を選択します。以下のコードを評価し、モデルを開きます。

open('slvnvdemo_neuron.slx');

generateReport.png

リンクされた MATLAB コード行の引用を含む、MATLAB Function ブロックのリンク情報がレポートに含まれていることを確認します。