Releases: jpfairbanks/SemanticModels.jl
Release v0.4.0
Release v0.3.0
Release v0.3.0
Release v0.3.0 is a major enhancement to the new model augmentation tools introduced the the last release. This includes a more robust design, easier model implementation, and more built in features to augment and compose models.
- New submodules
- ModelTools
SemanticModels.ModelTools.CategoryTheory
the main module that contains the category theory based building blocks for model augmentationSemanticModels.ModelTools.CategoryTheory.AbstractMorph
abstract type for representing morphismsSemanticModels.ModelTools.CategoryTheory.FinSetMorph
morphism in the category of finite setsSemanticModels.ModelTools.CategoryTheory.GraphMorph
morphism in the category of graphsSemanticModels.ModelTools.CategoryTheory.⊔
get the union of two categorically defined models or morphismsSemanticModels.ModelTools.CategoryTheory.Decorated
a type representing a decoration applied to the objects of a morphismSemanticModels.ModelTools.CategoryTheory.AbstractSpan
an abstract type for representing spansSemanticModels.ModelTools.CategoryTheory.Span
general span of two morphismsSemanticModels.ModelTools.CategoryTheory.AbstractCospan
an abstract type for representing cospansSemanticModels.ModelTools.CategoryTheory.Cospan
general cospan of two morphismsSemanticModels.ModelTools.CategoryTheory.pushout
solve the pushout defined by a span
SemanticModels.ModelTools.PetriModels
Extends ModelTools and the new CategoryTheory API to support models defined in Petri.jlSemanticModels.ModelTools.OpenModels
module for defining an open model where there are defined inputs and outputs, domain and codomainSemanticModels.ModelTools.OpenPetris
module for implementing the open petri model, and converting a PetriModel to an OpenPetriSemanticModels.ModelTools.OpenPetris.otimes
combine two open petri models in parallelSemanticModels.ModelTools.OpenPetris.compose
combine two open petri models in series
- ModelTools
- New examples
decorations/graphs.jl
example of using the new Category Theory based Morphism API to combine graphs and Petri modelspetri/malaria.ipynb
example of utilizing the new OpenModel API to combine a Lotka Volterra model and an Epidemiology model to simulate Malaria spreading between a populationpetri/rewrite_demo.jl
example of using rewrite rules to augment a Petri modelpetri/rewrite.jl
more detailed example of using rewrite rules to augment a Petri model and then solving the new models using both agent based models and differential equationspetri/wiring_petri.jl
example of creating a model using wiring diagrams, converting that to a Petri model, and solving
- New docs pages
- Removed Dubstep
- Updates to ModelTools
- Updates to Theory
- Replaced Flu Model walkthrough with Malaria example
Release v0.2.0
Release v0.2.0
Release v0.2.0 include an inital version of our new model augmentation tools and program analysis features.
-
New submodules
- ModelTools
SemanticModels.ModelTools.model
the main constructor for building model instances- Tools for accessing parts of expressions
SemanticModels.ModelTools.head
gets the head of an Expr or nothing for LineNumberNodesSemanticModels.ModelTools.bodyblock
gets the body of the funcSemanticModels.ModelTools.argslist
get the array of args representing the arguments of a defined functionSemanticModels.ModelTools.funcname
get the function name from an expression object return :nothing for non function expressionsSemanticModels.ModelTools.callsites
collects func callsSemanticModels.ModelTools.structured
extract the expressions that use structuring
- Tools for modifying expressions
SemanticModels.ModelTools.pusharg!
push a new argument onto the definition of a function.SemanticModels.ModelTools.setarg!
replace the argument in a function call
- Predicates useful for manipulating expressions
SemanticModels.ModelTools.or
orSemanticModels.ModelTools.and
andSemanticModels.ModelTools.issome
predicate for being neither missing or nothingSemanticModels.ModelTools.isblock
predicate for an expression being a block nodeSemanticModels.ModelTools.isfunc
predicate for an expression being a functionSemanticModels.ModelTools.isexpr
checks if exprSemanticModels.ModelTools.iscall
checks if func callSemanticModels.ModelTools.isusing
checks for using statementSemanticModels.ModelTools.isimport
checks for import
- Prebuilt model types
SemanticModels.ModelTools.AbstractModel
the abstract type for generic modelsSemanticModels.ModelTools.SimpleModels.SimpleModel
represents generic models with just blocks and functionsSemanticModels.ModelTools.ExpStateModels.ExpStateModel
represents a simple Agent Based Modeling (ABM) frameworkSemanticModels.ModelTools.ExpStateModels.ExpStateTransition
represents ABM transitionsSemanticModels.ModelTools.ExpODEModels.ExpODEModel
represents ODEProblems as code expressions
- Type Graphs
SemanticModels.ModelTools.typegraph
annotate a code expression so that when you eval it, you get the typegraphSemanticModels.ModelTools.@typegraph
extract a typegraph from a block of code
- ModelTools
-
Examples
agentbased.jl
we define a modeling microframework for Agent Based Modeling (ABM)agentbased2.jl
a more refined version of agentbased.jl that uses singleton typesagentgraft.jl
an example of model augmentation for ABMagenttype.jl
example of how to reverse engineer a model structure with the typegraph functiondefintions.jl
diffeq.jl
macromodel.jl
example of using modeltools as a macroregression.jl
basic regression scriptmonomial_regression.jl
transformations on linear regression build nonlinear regressionmultivariate_regression.jl
product group to manipulate a multivariate regression modelodegraft.jl
updated version of our old graft.jl scriptpseudo_polynomial_regression.jl
transforms linear regression into a 1 degree of freedom polynomial regressionpolynomial_regression.jl
manipulate a univariate linear regression model into polynomial regressionworkflow.jl
model synthesis with a pipeline of agentgraft.jl and polynomial_regression.jl
-
New docs pages
- ModelTools
- Updates to Theory
- Updated examples
-
Removed Functionality
- SemanticModels.Graph, replaced by
SemanticModels.ModelTools.typegraph
- Parsers.edges, replaces by
typegraph
andMetaGraphs.edges(g)
- SemanticModels.Graph, replaced by
v0.2.0-rc1
A release candidate for v0.2.0
v0.1.2 Initial METADATA release
Initial Release on Metadata
v0.1.1
Fixed some documentation bugs and deployment for github pages and GT hosting.
v0.1.0
News
Release v0.1
Release v0.1 includes an initial version of every step in the SemanticModels pipeline.
Users can now extract information, build knowledge graphs, and generate new models.
The following is a summary of the most important new features and updates:
-
New submodules
- Dubstep
SemanticModels.Dubstep.TraceCtx
builds dynamic analysis traces of a model for information extraction.SemanticModels.Dubstep.LPCtx
allows you to modify the norms used in a model.SemanticModels.Dubstep.GraftCtx
allows grafting components of one model onto another.
- Parsers
Parsers.parsefile
reads in a julia source file as an expression.Parsers.defs
extracts all of the code definitions from a module definition expression.Parsers.edges
extracts edges for the knowledge graph from code.
- Graphs
- A knowledge graph schema Knowledge Graphs.
Graphs.insert_edges_from_jl
builds a knowledge graph from extracted edges.
- Dubstep
-
Examples
test/transform/ode.jl
shows how to perturb an ODE with overdub.test/transform/varextract.jl
shows how to use a compiler pass to extract dynamic analysis information.
-
Scripts
bin/extract.jl
extracts knowledge elements from parsed markdown and source code files.bin/graft.jl
performs metamodeling by grafting a component of one model onto another.
-
New docs pages
Release v0.0.1
Initial release with documentation and some examples designed to illustrate the inteded scope of the software.
Initial Report to DARPA
This release is our first submission to our sponsor DARPA. There is an initial prototype of the modeling system and the documentation of our initial approach.