Ассоциируйте информацию о трассируемости с кодовыми линиями MATLAB в Simulink

Трассируемость управления в РЕДАКТОРА MATLAB является расширением основанного на Simulink Requirements Management Interface, чтобы разрешить связи между линиями кода MATLAB и внешними программными продуктами. Эта возможность не требует редактирования файлов MATLAB; все данные трассируемости хранятся отдельно. Это похоже на «внешнее» хранилище ссылок при работе с моделями Simulink, как в Управлении Требованиями Без Изменения Файлов Модели Simulink.

В сложение, используя режим «внешнего хранилища» для управления трассируемости информацией, пользователи Simulink и Stateflow могут извлечь выгоду из более мелкой детализации при связывании внешних документов с содержимым Блоков MATLAB function.

Включенная модель примера имеет трассируемость данные, сопоставленные как с блоками Simulink индивидуума так и с линиями кода Блоков MATLAB function.

Откройте модель примера

Этот пример демонстрирует связь между внешними документами и кодовыми линиями MATLAB при моделировании стимулированного всплеска в связанных нейронных камерах.

Оцените следующий код, чтобы открыть slvnvdemo_synaptic_transmission Simulink моделирует в рабочей директории и устанавливает выбор, чтобы разрешить правильную коммуникацию для файлов в этом примере.

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

Существует три блока Model, ссылающихся на ту же модель всплеска нейронной камеры, который можно увидеть в slvnvdemo_neuron.slx. Оцените код, чтобы открыть модель.

open('slvnvdemo_neuron.slx');

Модель нейронных камер следует уравнению «Утечки Интеграторов»:

CmdVdt=Itotal-V-V0Rm

Cm,Rm-capacitance and resistance of cell membrane

Itotal-включает инжектируемый  ток стимуляции и все   токи ионного канала

V0-крест покоя -мембранный потенциал, обычно -70 мВ

В целях симуляции это преобразуется в:

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

Две функции MATLAB между нейронами вычисляют постсинаптические токи. Когда предсинаптическая деполяризация переходит порог релиза нейромедиатора, мы увеличиваем постсинаптический ток на один импульс заданной амплитуды:

II+Iamplitude

Результат полного тока распадается экспоненциально согласно:

dIdt=-I*tτ

Следующий шаг запрещен для определенной временной системы координат после предыдущего импульса, чтобы смоделировать эффект краткосрочной синаптической депрессии. Модель пренебрегает временной задержкой аксонной передачи.

Моделируйте модель и просматривайте результаты

Оцените следующий код, чтобы моделировать slvnvdemo_synaptic_transmission модель.

sim('slvnvdemo_synaptic_transmission');
### 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 28.191s

Вручную проверьте Scope блокируйте результаты или оценивайте следующий код.

open_system('slvnvdemo_synaptic_transmission/Scope');

Шесть графиков:

  1. внешне инжектируемый импульс электрического тока

  2. стимулированное инъекцией внутриклеточное увеличение напряжения первого нейрона

  3. постсинаптический ток, генерируемый во втором нейроне

  4. синаптически стимулированная активность второго нейрона

  5. постсинаптический ток, генерируемый в третьем нейроне

  6. синаптически стимулированная активность третьего нейрона

Наблюдайте регулярный всплеск вышестоящего нейрона (график 2), пока прикладывается импульс стимуляции (график 1). Синаптически индуцированный ток в нисходящем нейроне (график 3) пропускает некоторые потенциалы действия вышестоящего нейрона из-за краткосрочного истощения нейротрансмиттера, смоделированного как временной период отключения в Synaptic current функциональный блок. Оцените код, чтобы перейти к Synaptic current блок.

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

Нисходящий нейрон, как видно, иногда интегрирует более чем один синаптический вход, чтобы получить всплеск (график 4). Третий нейрон интегрирует синаптические входы от второго нейрона (график 5) и всплески в более позднее время (график 6). При значениях параметров по умолчанию третий нейрон может всплыть 1 или более раз, в зависимости от намеренно введенного случайного шума в модели, по Noise current блок в slvnvdemo_neuron модель. Перейдите к Noise current блок.

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

Одинаковые значения параметров присвоены для всех трех нейронов и обоих синапсов. Связывание трассируемости используется для обоснования значений параметров и реализации.

Перемещайтесь между Simulink и автономными файлами MATLAB

The slvnvdemo_synaptic_transmission model запускает внешний скрипт synaptic_params.m для загрузки необходимых значений параметров в рабочую область. При желании откройте скрипт, оценив следующий код: open('synaptic_params.m').

Связывание кода MATLAB позволяет вам проследить от зависимого блока в Simulink не только к файлу скрипта, но и к определенной линии, которая задает значение, используемое в симуляции.

Найдите Stimulation pulse блокировать в модели вручную или оценить следующий код.

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

Щелкните правой кнопкой мыши блок и выберите Requirements > 1. «I_inj = 2e-11;% 20 pA», чтобы перейти по ссылке и просмотреть соответствующую подсвеченную область в файле кода MATLAB или оценить следующее:

open('synaptic_params.m'); % При желании откройте скрипт синаптических параметров

rmidemo_callback('view','slvnvdemo_synaptic_transmission/Stimulation pulse',1); % Перейдите по ссылке Requirements

Заметьте, что в synaptic_params.m скрипт, существует несоответствующее значение параметров. Это легко обнаруживается по ссылке трассируемости. Выделите линию 12 в synaptic_params.m скрипт, который читает V_syn_release = -2e-2; % -20 mV. Щелкните правой кнопкой мыши по выделенной области и в контекстном меню выберите Requirements > 1. slvnvdemo_synaptic_transmission/Synaptic релиза порога (Constant). Это перемещает вас назад к модели Simulink и подсвечивает блок, который связан с линией 12 в synaptic_params.m.

В Simulink щелкните вкладку Приложения и откройте Диспетчер требований. Щелкните Подсветить ссылки на вкладке Требования (Requirements), чтобы выделить только что созданные связи или оценить следующий код.

rmi('highlightModel', 'slvnvdemo_synaptic_transmission');

Создайте ссылку трассируемости для линий кода MATLAB

Оцените следующий код, чтобы убедиться, что двунаправленное связывание включено, чтобы вы могли создать двухсторонние ссылки трассируемости за один шаг.

rmipref('BiDirectionalLinking',true);

The Synaptic time constant блок в нижнем левом углу модели еще не связан с ее связанной линией в synaptic_params.m. В модели Simulink выберите Synaptic time constant блок. Если вы не можете найти этот блок, оцените следующий код и выберите его.

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

Затем в редакторе MATLAB выберите имя переменной, Syn_decay_time в нижней части synaptic_params.m скрипт. Оцените следующий код, чтобы открыть скрипт, если вы еще не сделали: open('synaptic_params').

Щелкните правой кнопкой мыши по выбранной линии и в контекстном меню выберите Requirements > Link to Selection в Simulink. Протестируйте новые ссылки путем перехода от MATLAB до Simulink и обратно к MATLAB.

Создайте ссылку трассируемости для строк кода внутри блоков MATLAB function

The slvnvdemo_synaptic_transmission модель имеет Блок MATLAB function, которую вы будете использовать для трассировки, чтобы значение параметров источники в Synaptic strength постоянный блок. В модели Simulink нажмите на Synaptic strength constant block, чтобы выбрать его для связывания, или вычислить следующий код, чтобы найти блок и затем выбрать его.

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 найдите вхождение I_amplitude на линию 33 кода Блока MATLAB function. Выделите линию курсором, чтобы выбрать ее, и щелкните правой кнопкой мыши. Выберите Requirements в контекстном меню, затем выберите Link to Selection в Simulink.

Создайте ссылку трассируемости между линиями в коде MATLAB и Microsoft Word

До этого момента мы рассматривали только связь между MATLAB и Simulink. Откройте Ion current calculation Блок MATLAB function, который принадлежит Sodium current calculation subsystem ссылку на slvnvdemo_neuron моделировать, или оценить следующий код: rmidemo_callback('emlshow','slvnvdemo_neuron/Sodium channel current/Ion current calculation').

Щелкните правой кнопкой мыши в редакторе MATLAB и выберите в контекстном меню «Требования» > «Включить подсветку требований», чтобы увидеть, какие строки кода имеют ссылки на требования.

Щелкните правой кнопкой мыши по строке кода, которая была подсвечена, чтобы указать, что у нее есть ссылка требований. В контекстном меню Requirements перейдите к нумерованной ссылке в верхней части меню. Связанный документ Word откроется к связанному тексту. Вы также можете открыть документ Word и визуально идентифицировать ссылки, ища объект, подобный значку MATLAB. Перейти к связанному коду можно нажав Ctrl + на этом связанном объекте.

Оцените следующий код, чтобы открыть документ Word: open('NeuralSpikeModeling.docx').

Чтобы создать аналогичную ссылку на Ion current calculation Функция в Potassium channel current subsystemоткройте документ Word и используйте функцию Find (Ctrl + F), чтобы найти фразу «внешний ток ионов калия». Выберите эту фразу курсором в документе Word. Затем откройте Ion current calculation Блок MATLAB function сверху, или оценить следующий код: rmidemo_callback('emlshow','slvnvdemo_neuron/Potassium channel current/Ion current calculation').

В редакторе MATLAB выберите реализацию для подфункции outwardCurrent ( линий 34-37). Щелкните правой кнопкой мыши выбранные линии и в контекстном меню выберите Requirements > Link to Selection in Word. Минимизируйте документ Word, а затем перейдите от вновь выделенных линий в нижней части кода MATLAB к соответствующему описанию в Word. Когда правильное расположение подсвечивается, используйте значок MATLAB, чтобы вернуться к коду.

Создание отчетов о ссылках на трассируемость

Каналы отслеживания, сопоставленные с кодовыми строками MATLAB Function блоков MATLAB, включены в Отчет о отслеживании требований, сгенерированный для родительской модели Simulink. На вкладке Требования щелкните Поделиться > Сгенерировать Отчет о трассируемости модели в slvnvdemo_neuron Модель Simulink. Оцените следующий код, чтобы открыть модель.

open('slvnvdemo_neuron.slx');

Обратите внимание, что информация о блоках ссылок MATLAB Function присутствует в отчете, включая цитаты из связанных линий кода MATLAB.

Очистка

Следующие команды очищают рабочую область путем очистки всех объектов Simulink Requirements и закрытия всех моделей Simulink.

slreq.clear;
bdclose('all');