committed by
							
								 Matthias Volk
								Matthias Volk
							
						
					
				
				
				  
				  No known key found for this signature in database
				  
				  	
						GPG Key ID: 83A57678F739FCD3
				  	
				  
				
			
		
		
		
	
				 4 changed files with 181 additions and 45 deletions
			
			
		- 
					43doc/Dockerfile
- 
					3doc/source/conf.py
- 
					136doc/source/doc/building_models.ipynb
- 
					44doc/source/doc/building_models.rst
| @ -0,0 +1,43 @@ | |||
| FROM movesrwth/stormpy:1.6.0 | |||
| MAINTAINER Matthias Volk <matthias.volk@cs.rwth-aachen.de> | |||
| 
 | |||
| 
 | |||
| ########## | |||
| # Create user | |||
| ########## | |||
| 
 | |||
| ARG NB_USER=jovyan | |||
| ARG NB_UID=1000 | |||
| ENV USER ${NB_USER} | |||
| ENV NB_UID ${NB_UID} | |||
| ENV HOME /home/${NB_USER} | |||
| 
 | |||
| RUN adduser --disabled-password \ | |||
|     --gecos "Default user" \ | |||
|     --uid ${NB_UID} \ | |||
|     ${NB_USER} | |||
| 
 | |||
| # Change the owner of the virtual environment | |||
| WORKDIR /opt | |||
| USER root | |||
| RUN chown -R ${NB_UID} venv | |||
| USER ${NB_USER} | |||
| 
 | |||
| WORKDIR ${HOME} | |||
| # Add missing path | |||
| ENV PATH="$HOME/.local/bin:$PATH" | |||
| 
 | |||
| 
 | |||
| ########## | |||
| # Install dependencies | |||
| ########## | |||
| 
 | |||
| RUN pip install --no-cache-dir notebook==5.7.9 | |||
| 
 | |||
| ########## | |||
| # Copy files for notebooks | |||
| ########## | |||
| 
 | |||
| RUN mkdir notebooks | |||
| COPY source/*.ipynb notebooks/ | |||
| COPY source/doc/*.ipynb notebooks/ | |||
| @ -0,0 +1,136 @@ | |||
| { | |||
|  "cells": [ | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "# Building Models" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "## Background\n", | |||
|     "\n", | |||
|     "Storm supports a wide range of formalisms. Stormpy can be used to build models from some of these formalisms.\n", | |||
|     "Moreover, during construction, various options can be set. This document yields information about the most important options." | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "## Building different formalisms\n", | |||
|     "\n", | |||
|     "We use some standard examples:" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "code", | |||
|    "execution_count": null, | |||
|    "metadata": { | |||
|     "hide-output": false | |||
|    }, | |||
|    "outputs": [], | |||
|    "source": [ | |||
|     ">>> import stormpy.examples\n", | |||
|     ">>> import stormpy.examples.files" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "Storm supports the explicit DRN format.\n", | |||
|     "From this, models can be built directly:" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "code", | |||
|    "execution_count": null, | |||
|    "metadata": { | |||
|     "hide-output": false | |||
|    }, | |||
|    "outputs": [], | |||
|    "source": [ | |||
|     ">>> path = stormpy.examples.files.drn_ctmc_dft\n", | |||
|     ">>> model = stormpy.build_model_from_drn(path)\n", | |||
|     ">>> print(model.model_type)" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "And the same for parametric models:" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "code", | |||
|    "execution_count": null, | |||
|    "metadata": { | |||
|     "hide-output": false | |||
|    }, | |||
|    "outputs": [], | |||
|    "source": [ | |||
|     ">>> path = stormpy.examples.files.drn_pdtmc_die\n", | |||
|     ">>> model = stormpy.build_parametric_model_from_drn(path)\n", | |||
|     ">>> print(model.model_type)" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "Another option are JANI descriptions. These are another high-level description format.\n", | |||
|     "Building models from JANI is done in two steps. First the Jani-description is parsed, and then the model is built from this description:" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "code", | |||
|    "execution_count": null, | |||
|    "metadata": { | |||
|     "hide-output": false | |||
|    }, | |||
|    "outputs": [], | |||
|    "source": [ | |||
|     ">>> path = stormpy.examples.files.jani_dtmc_die\n", | |||
|     ">>> jani_program, properties = stormpy.parse_jani_model(path)\n", | |||
|     ">>> model = stormpy.build_model(jani_program)\n", | |||
|     ">>> print(model.model_type)" | |||
|    ] | |||
|   }, | |||
|   { | |||
|    "cell_type": "markdown", | |||
|    "metadata": {}, | |||
|    "source": [ | |||
|     "Notice that parsing JANI files also returns properties. In JANI, properties can be embedded in the model file." | |||
|    ] | |||
|   } | |||
|  ], | |||
|  "metadata": { | |||
|   "date": 1596309564.4717214, | |||
|   "filename": "building_models.rst", | |||
|   "kernelspec": { | |||
|    "display_name": "Python 3", | |||
|    "language": "python", | |||
|    "name": "python3" | |||
|   }, | |||
|   "language_info": { | |||
|    "codemirror_mode": { | |||
|     "name": "ipython", | |||
|     "version": 3 | |||
|    }, | |||
|    "file_extension": ".py", | |||
|    "mimetype": "text/x-python", | |||
|    "name": "python", | |||
|    "nbconvert_exporter": "python", | |||
|    "pygments_lexer": "ipython3", | |||
|    "version": "3.8.2" | |||
|   }, | |||
|   "title": "Building Models" | |||
|  }, | |||
|  "nbformat": 4, | |||
|  "nbformat_minor": 4 | |||
| } | |||
| @ -1,44 +0,0 @@ | |||
| *************** | |||
| Building Models | |||
| *************** | |||
| 
 | |||
| Background | |||
| ===================== | |||
| 
 | |||
| Storm supports a wide range of formalisms. Stormpy can be used to build models from some of these formalisms. | |||
| Moreover, during construction, various options can be set. This document yields information about the most important options. | |||
| 
 | |||
| 
 | |||
| Building different formalisms | |||
| =============================== | |||
| 
 | |||
| We use some standard examples:: | |||
| 
 | |||
|     >>> import stormpy.examples | |||
|     >>> import stormpy.examples.files | |||
| 
 | |||
| Storm supports the explicit DRN format. | |||
| From this, models can be built directly:: | |||
| 
 | |||
|     >>> path = stormpy.examples.files.drn_ctmc_dft | |||
|     >>> model = stormpy.build_model_from_drn(path) | |||
|     >>> print(model.model_type) | |||
|     ModelType.CTMC | |||
| 
 | |||
| And the same for parametric models:: | |||
| 
 | |||
|     >>> path = stormpy.examples.files.drn_pdtmc_die | |||
|     >>> model = stormpy.build_parametric_model_from_drn(path) | |||
|     >>> print(model.model_type) | |||
|     ModelType.DTMC | |||
| 
 | |||
| Another option are JANI descriptions. These are another high-level description format. | |||
| Building models from JANI is done in two steps. First the Jani-description is parsed, and then the model is built from this description:: | |||
| 
 | |||
|     >>> path = stormpy.examples.files.jani_dtmc_die | |||
|     >>> jani_program, properties = stormpy.parse_jani_model(path) | |||
|     >>> model = stormpy.build_model(jani_program) | |||
|     >>> print(model.model_type) | |||
|     ModelType.DTMC | |||
| 
 | |||
| Notice that parsing JANI files also returns properties. In JANI, properties can be embedded in the model file. | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue