PhysioDesigner
A modeling tool for multilevel physiological systems

Filter by: View All
Enter the category for this item: General
On PhysioDesigner, main players to construct a model are "modules".
You will start with to create one module.

There are two types of modules, one is called "functional-unit" and the other is "container".
A functional-unit module is the real element that can include quantitative attributes. A container module is a kind of container to bundle several modules for better visibility of the model or better reuse of a part of the model.

Once you create a functional-unit module, you may want to define several physical quantities in the module.
Using those physical quantities, you can define ordinary differential equations and parameters for describing the dynamics of the targeting physiological functinos.

It is possible (and rather recommended to) create multiple modules and link them by edges.
There are two types of edges. One is called structural edges, and the other is functional edges.
In other words, it is possible to define two kinds of relationships among modules.

Modules form a tree structure, corresponding to a hierarchical structure found in physiological systems, such as molecular level, cell level, tissue level, organ level and so on.
The structure is represented by structure edges.
On the other hand, modules need to functionally (numerically) interact to each other. The interactions are defined by functional edges.


Return to Top
Enter the category for this item: Module
There are several ways to create modules.

The simplest way is to click module-icon those buttons on the tool bar.
From the left, the button creates a module as a root module, a child module of the selected module, and a sibling module of the selected module.

Or you can do the same action from the context menu appearing by the right click on a module.
module-context-menu

It is also possible to create a new module from the context menu of an out-port. It is "Create Receiver Module".
port-menu

This command creates a module which has already an in-port with the same name as the out-port, linked already to the out-port by a functional edge.
receiver
Besides in the Receiver module, there is a variable-parameter type physical-quantity which is associated to the in-port.
Hence using this function, several modeling steps can be skipped.


Return to Top
Enter the category for this item: Port
Open the Port dialog by clicking a module on which you want to create ports by right mouse button, and select

PhysioDesignerScreenSnapz054

Then the following dialog pops up.

PhysioDesignerScreenSnapz056

Enter the name of the port in the new row at the first column.
Select IN or OUT in the direction column.
These two are minimum information to be provided.

If there are already several ports, the new port should be entered at the bottom row.

PhysioDesignerScreenSnapz057


The Port dialog can be opened from the context menu appearing by the right button click on the port.

PhysioDesignerScreenSnapz059
A dialog to edit the properties of the port pops up with the port being highlighted.

PhysioDesignerScreenSnapz058


Return to Top
Enter the category for this item: Edge
Drag a mouse cursor with pressing the left button from an out-port of a module to an in-port of the other module.
PhysioDesignerScreenSnapz051

If there are not those out/in-port beforehand, still a functional edge can be spanned. When a mouse cursor is on a module, a gray out-port appears at the right bottom of the module. An edge can start from this temporary out-port.
The destination can be either an existing in-port or a temporarily gray in-port on the other module appearing when the end of the functional edge comes on.

PhysioDesignerScreenSnapz052

The temporary ports provide an easy way to span an edge (you can omit a process to create out/in ports).


Return to Top
Enter the category for this item: Physical Quantity
The dialog to create and edit physical quantities can be open by "Edit Physical-Quantity..." in the right click context menu.

PhysioDesignerScreenSnapz060

The following window will open.

Pasted Graphic

1. In the Basic setting tab, you must select the type of the physical quantity at first.

pq-type

If this physical quantity is used in differential equations (ODEs or PDEs) as dynamic parameter, the type should be "State".
If this represents a constant value, the type should be "Static-parameter".
If this represents a parameter which varies in time, then the type should be "Dynamic-parameter".
These three types are the most frequently used type for mathematical modeling.
Other types will be explained somewhere else.

2. Then give its name.

3. Unit is optional. As default "dimensionless" is selected. You can select one of units in the combo box. If there is not the unit you want to use, clicking the Edit button opens a dialog to edit units. Note that the units do not play any numerical role in simulations.

4. Max delay is only for the state type physical quantity. When the state type physical quantity is used in a delay differential equation, the max delay (time) that appears in the equations must be given here.

5. Matrices and vectors can be written, but so far unfortunately simulator Flint does not support simulation including matrices and vectors. For now, "Scalar" should be selected in the Dimension group.

That's all for the Basic setting tab. Now, for one example, let us create a state type physical quantity with name "var_x". When you finish to select the type and fill in the name, other tabs become available.

Pasted Graphic 7

Next, implementation for the physical quantity must be defined in the Implementation tab. Let's move to the Implementation tab.
You will see that
Pasted Graphic 9
is defined already by default.

Pasted Graphic 8

For the state type physical quantity, three types of definition are available. And you need to select one of them.
Here let's select "ode" to describe ordinary differential equation.
The equation should be written in the text box

Pasted Graphic 14

or click "Math editor" button to open a math editor in a independent window.
Once you enter the equation as like C-language form, press the enter key. Then, the equation rendering is done.
Pasted Graphic 13

If the physical quantity is of state type, the initial value must be given. Let's go to the Initial value tab.
var_x = 0 is already defined by default. You can change the value as you want.

Pasted Graphic 12

The Domain and Problem conditions tab will not be used for the state type physical quantity.

In the case of a variable-parameter or static-parameter type physical quantity, the Initial value and Domain tabs are inactivated because the information is not needed to define static-parameter (and variable-parameter as well).
In the Implementation tab, you will find p1=0 given by default.

Pasted Graphic 15

To simply define a value to this physical quantity, you just fill in the equation in the text box at the bottom of the window, and press return key.

Pasted Graphic 16

That's all.


Return to Top
Enter the category for this item: Edge
Yes, it is possible.

Right click on an edge, and select "To orthogonal".

PhysioDesignerScreenSnapz061

Then the edge will be displayed as

Pasted Graphic


Return to Top
Enter the category for this item: Port
There are two types of ports. One is out-port and the other is in-port.
The ports must be associated with physical-quantity.

The out-port is used to output a value defined in the associated physical-quantity to outside of the module.
The in-port is used to receive a value outputted from an out-port of the other module. The value arriving to the in-port is stored in the associated physical-quantity.

The association between a port and physical-quantity can be defined by three ways.

1. At the Port dialog.

Open the Port dialog from a context menu popping up by right clicking on the port or on the module.
Pasted Graphic module-menu-edit-port.tiff

Clicking a cel in the Physical Quantity column shows a list of available physical-quantities. And select one from the list.

Pasted Graphic

That's all.

If there is no available physical-quantities, users can create a physical-quantity on this dialog.
Click "New Physical-Quantity" button.
Then it pops up a dialog.
If the direction of the port is "OUT", then Physical Quantity dialog will appear, on which users need to define the details of the physical-quantity.
If the direction is "IN", then a small dialog pops up to set its name. Since, in this case, the definition of this physical quantity is simple, i.e. "associated to this in-port", it is automatically given. Only thing users need to do here is to provide the name of the physical-quantity.

Pasted Graphic 1


2. At the Physical Quantity dialog

At the Basic setting tab in the Physical Quantity dialog, there is a "Link to a port" panel at right side of the dialog.
To associate a physical quantity to an port, at first select the direction of the port at "Link to a port" panel.
Then it shows a list of available ports. Select one of them. That's all.

Pasted Graphic 2

If there is no available port, or you want to use a new port, it's possible to create a new port in the panel.
Fill in the name in a text box labeled "Name" at the bottom of the "Link to a port" panel, and click "Add" button.

Pasted Graphic

Then select the newly created port in the list to associate the physical quantity to it.

Pasted Graphic 1

Assigned ports are shown in the table at top of the dialog.

Return to Top
Enter the category for this item: Module
Yes, you can.

At the Module dialog opened by "Edit Module...",

Pasted Graphic

select one color from the list of the colors.

PhysioDesignerScreenSnapz062

Return to Top
Enter the category for this item: Edge
Yes, they can.

converge-multiedges

Please be noticed that the physical quantity assigned to the in-port which receiving multiple edges must define the extra-implementation to deal with the multiple values sent from multiple edges.

pq-with-multiedges

Go to the Extra-implementation tab.

extraimple-with-multiedges

Put a check on the check box labeled "Receives Values from Multiple Edges". This is important. If this is unchecked, it causes an error.

Then select how you want to deal with those values.
If you want to sum up those values and set the result to the physical quantity, select "Sum".
Similarly, if you want to calculate a mean value of the all values, select "Mean", and the maximum or minimum value among all values, select "Max" and "Min", respectively.

Be careful especially when the multiple edges converges to an in-port on a capsule module as follows.

multiedge_to_capsule

In this example case, two edges converge to an in-port on a capsule module, which is redirected to an in-port of two child modules.
Then at both of two modules (moduel3 and module4 here) and NOT at the capsule module, physical quantity assigned to the in-port must define the extra-implementation to specify how to deal with those multiple values.

Return to Top
Enter the category for this item: General
Go to "Edit > Find" or "Ctrl + F" or "Command + F".
You will see a Find dialog
Pasted Graphic

You can find modules that contains a keyword you provided in physical-quantity name, module name, port name or in description.

Once you get the search results, double click one of the items, or select one and click "Go" button,

Pasted Graphic 2

Then the specified module will be found in the main canvas with selected state.

Pasted Graphic 3


Return to Top
Enter the category for this item: Port
In the following case, it might be better if the in-port named "Iext_v" located at the bottom on the left edge of the module (below of "Stim").
moveport1

To move the position of the port, click it and hold for 3 seconds.
Then the port seems to float a bit with shadow.
moveport2

Then you can drop it wherever you want on the same side of the module.
You cannot move it other side.
moveport3

Return to Top
Enter the category for this item: Module
Let's assume that now you are going to create a neural network consisting of a same type of neurons.
Here for the simplest case, let's take a two-coupled Hodgkin-Huxley model as an example.

twohh

On PhysioDesigner, it is possible to copy and paste one Hodgkin-Huxley (HH) model to create the other.
After creating such a network model, if you want to change parameter values in the all HH models, you need to go through all of them one by one, which can be a very time consuming task if the number of targets is large.

Instead of copy and paste, there is another way to create multiple same-property modules, which is template and instances.
Once you define a single HH model as a template, you can create its instances as many as you want.
When you want to change parameter values of HH models, what you need to do is just to change the parameter values on the template model.
Then the property is immediately share with the instances.
Yo do not need to go thorough all instances to change the parameter values.

templateinstance

Since all properties including module structure of instances are the same with the one of the template, instances cannot expand by double-click.
Instead, it is possible to change the value of static type physical-quantities and initial value of state type physical-quantities on each instance, so that users can define a kind of individual characteristics to each instance.


Return to Top
Enter the category for this item: Module
Let's create the following network model using a template and instances.
In the model, there are two instances of Hodgkin-Huxley model template which are connected by an electrical coupling.

templateinstance

At first we need to define a template module.

Only a capsule module can be a template.
Select "Template" menu from a context menu showed by right click on a capsule module.

howtotempins2

Then the capsule module is labeled by "Template" and turned into a template module.

howtotempins3

To create instances, again right click on the template, and select "Make Instance Modules" menu.

howtotempins4

It pops up a small dialog to input the number of instance to create.

howtotempins5

Click OK button, then

howtotempins6

instances appear on the canvas.
At this moment, instances are collapsed for simpler representation.
To edit details with instances. you need to expand them.

howtotempins7

After expanding instances, still they are overlapping in the same place on the canvas.

Pasted Graphic 8

Using "Item > Distribute Modules", you can effectively distribute instances.
For example, at first select a "Select Tool" in the tool bar,

Pasted Graphic 1

select all instance.

PhysioDesignerScreenSnapz005

Then from the menu bar. select "Item > Align Modules > Lattice". Then you will see

Pasted Graphic

To edit properties of an instance, right click on a instance, and select "Edit Instance Module".

howtotempins12.tiff

Then a dialog to edit the values of static type physical quantities and initial values of state type physical quantities pops up.

Pasted Graphic 1

Those values are only things that users can modify on a instance.

Besides, each instance can be linked by edges to/from other modules individually.

Pasted Graphic

However, if an edge comes to the template, then the edge will be considered to link all of its instances.

Pasted Graphic 2


Return to Top
Enter the category for this item: Edge
Each instance can be linked by edges to/from other modules individually.

Pasted Graphic

However, if an edge comes to the template, then the edge is considered to link with all of its instances.

Pasted Graphic 2


Return to Top
Enter the category for this item: General
PHPL represents Physiological Hierarchy Parameter List markup language which is an XML based language to describe a set of parameter values of static-parameter type physical quantities and initial values of state type physical quantities to store them apart from PHML model itself.
Then a PHPL file can be used to set multiple parameter values in a PHML model at once. This will help to switch over a model representing a certain physiological function into a model of another kind of function. PHPL can be used also for changing a set of parameter values at once in mid-course of a simulation.

Sometimes a single model can represent different physiological phenomena by working with different parameter values. In such a case, if it is possible to switch those parameter values from one model to another model at once, it would be convenient. There is also another kind of demand. During a simulation, sometimes we want to change parameter values when a certain event happens. Hence to extract a list of parameter values from a PHML model, store them, and re-set them to the model could be a meaningful protocol for modeling and simulation.

We can also store multiple PHPL files in the PH Database at
Physiome.jp in association with a model, so that users can select one of parameter lists when they download the model.

Return to Top
Enter the category for this item: General
To export a parameter list of the currently editing model, go to the menu bar and select
 File > Export Parameters...
Then users can export a PHPL file, which includes values of all static-parameter type physical quantities and initial-values of all state type physical quantities.

To load a PHPL file, similarly from the menu bar, select
 File > Import Parameters...

Then the values in the currently opened model will be replaced by the values in the PHPL file.

Return to Top
Enter the category for this item: Port
Yes. Possible.

Right click on an out-port, and select "Observe a time course" in the context menu.

observe-outport

Then you will see the following small window popping up.
This starts a simulation at background. Hence this takes a time for a while depending on the size of the model and the length of the simulation.
Simulation settings can be defined at the menu "Item > Edit Model Information...".

observe-outport2

After a while, you will see a graph.

observe-outport2

You can leave the window without closing. Still it is possible to operate main window of PhysioDesigner.

After modifying the model, you may update the graph. Then click "Update" button at the right upper corner.
It starts again a simulation. And after finishing the simulation, the graph will be updated.

In another graph window for another out-port, you may just click "Reload" button then without running simulation, the graph is drawn with the latest simulation result.


Return to Top
Enter the category for this item: Port
If a port is blue, the port is associated to a physical quantity.
And if a port is red, the port is NOT associated to a physical quantity.
Hence the red ports must be edited or fixed to complete the model.

So users can know if the ports are already associated to physical quantities by the color.

port-red-blue.tiff


Return to Top
Enter the category for this item: General
Yes, it is possible.
From the menu bar, select "Window > XML Viewer".

openXMLViewer

Then a XML viewer opens.

XML VIewer

In the XML Viewer, you can search items in the XML document.

1. You can use module ID as a search key.
Copy a module in the PhysioCanvas, and paste it in a text box labeled "Module ID". Then a module ID in parenthesized by square brackets, such as ['63f394df-a2fb-4f64-be94-418c91d77f93']. And click
Pasted Graphic 1 button, then the module with the module ID is searched.

2. Any string can be a search key. Module name, port name, words in descriptions, and so on can be found.

3. XPath can be used to find objects.
In the Xpath "//" can be used to abbreviate a part of the path, for example, "/is:insilico-model/is:module-set/is:module/is:property" can be written as "//is:module/is:property".

Note that an xml name space prefix "is" must be used for PHML elements.
Note that this XML Viewer is just a viewer and cannot edit the document.


Return to Top
Enter the category for this item: Physical Quantity
Delay() operator can be used for taking a past value of a physical quantity.
For example, you can use it in an equation of a definition of the physical quantity as

 diff(V, time) = -V + Delay(V, 20)

where Delay(V, 20) means a value of V of 20 time unit (such as milli second) before the present time.

To enable to refer the past value of a physical quantity (here it is 'V'), "
max delay" attribute must be given to the physical quantity at the Basic setting tab in Physical quantity dialog.

Pasted Graphic


Return to Top
Enter the category for this item: Physical Quantity
DeltaTime() operator can be used for taking a one time step previous value of a physical quantity.
For example, you can use it in an equation of a definition of the physical quantity as

 delta_current = current - DeltaTime( current )

where "current" is a physical quantity that a user defined.
Or another example, using condition

 IF V - DeltaTime( V ) > 0 THEN flag = 1
 ELSE flag = 0

In a case of using DeltaTime(), Max delay is not needed to be defined.


Return to Top
Enter the category for this item: Physical Quantity
Delay() operator can be used for taking a past value of a physical quantity.
For example, you can use it in an equation of a definition of the physical quantity as

 diff(V, time) = -V + Delay(V, 20)

where Delay(V, 20) means a value of V of 20 time unit (such as milli second) before the present time.

To enable to refer the past value of a physical quantity (here it is 'V'), "
max delay" attribute must be given to the physical quantity at the Basic setting tab in Physical quantity dialog.

Pasted Graphic


Return to Top
Enter the category for this item: Physical Quantity
DeltaTime() can be used for this purpose, which is a operator to take a one time step previous value of a physical quantity.
So for example, if you apply DelatTime() to a physical quantity as follows,

 delta_current = current - DeltaTime( current )

you can get a increase or decrease of the physical quantity in a single simulation time step.

To get a simulation time step, you need to calculate (current time) - (one step previous time).
But DeltaTime() cannot be directly applied to "time", hence you need to once set the value of time to a physical quantity.

So at first, create a physical quantity such as "pq_time",

 pq_time = time

then apply DeltaTime() to pq_time and calculate the difference, i.e.

 delta_time = pq_time - DeltaTime( pq_time )

Now this is the time step of the simulation.

Return to Top
Enter the category for this item: Physical Quantity
Yes. Possible.

Select "Window > Physical-Quantity List" in a menu bar, then a window showing a list of all physical quantities pops up.

The definitions of physical quantities in the window are editable.
And clicking on the module names in the list navigates you to the module in the main canvas.
Enter the category for this item: General
The PHZ format is a zipped archive including a PHML model file and other data files integrated in the model such as morphological and time series data files, and SBML model files. Besides that a file describing the layout information on the PhysioCanvas, thumbnails and other meta data are included.

The PHZ format is a default format of PhysioDesigner after version 1.1. It is still possible for PhysioDesigner to load and export PHML.