Browse Source

New Logo and Compatibility Update (#230)

* Added logo and fixed project compat

* Created full logo

* Added line

* Updated documentation index

* Removed old logo

* Version bump
pull/231/head
Micah Halter 1 year ago
committed by GitHub
parent
commit
85934df925
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      Project.toml
  2. 17
      README.md
  3. BIN
      doc/src/assets/favicon-16.png
  4. BIN
      doc/src/assets/favicon-24.png
  5. BIN
      doc/src/assets/favicon-32.png
  6. BIN
      doc/src/assets/favicon-48.png
  7. BIN
      doc/src/assets/favicon-64.png
  8. BIN
      doc/src/assets/favicon.ico
  9. BIN
      doc/src/assets/full-logo-dark.png
  10. BIN
      doc/src/assets/full-logo.png
  11. BIN
      doc/src/assets/full-logo.xcf
  12. 320
      doc/src/assets/logo-dark.svg
  13. 15
      doc/src/assets/logo.dot
  14. 56
      doc/src/assets/logo.svg
  15. 19
      doc/src/img/semanticmodels_jl.dot
  16. 5
      doc/src/index.md

27
Project.toml

@ -1,7 +1,7 @@
name = "SemanticModels"
uuid = "f5ac2a72-33c7-5caf-b863-f02fefdcf428"
authors = ["James Fairbanks <james.fairbanks@gtri.gatech.edu>", "Micah Halter <micah.halter@gtri.gatech.edu>"]
version = "0.3.0"
version = "0.3.1"
[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
@ -39,8 +39,29 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[compat]
ModelingToolkit = ">=0.6"
Catlab = ">=0.3"
CSV = "<1.0"
Cassette = "<1.0"
Catlab = ">=0.3,<1.0"
Colors = "<1.0"
DataFrames = "<1.0"
DataFramesMeta = "<1.0"
DelimitedFiles = "<2.0"
Distributions = "<1.0"
Documenter = "<1.0"
GLM = "<2.0"
GraphDataFrameBridge = "<1.0"
JSON = "<1.0"
Latexify = "<1.0"
LightGraphs = "<2.0"
LinearAlgebra = "<2.0"
Logging = "<2.0"
MacroTools = "<1.0"
MetaGraphs = "<1.0"
ModelingToolkit = ">=0.6,<1.0"
Petri = "<1.0"
Plots = "<1.0"
Random = "<2.0"
Unitful = "<1.0"
[targets]
test = ["DifferentialEquations", "LsqFit", "Polynomials", "Printf", "Statistics", "Test"]

17
README.md

@ -1,4 +1,7 @@
# SemanticModels.jl
![SemanticModels.jl](doc/src/assets/full-logo.png)
---
A julia package for representing and manipulating models at the semantic level.
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://aske.gtri.gatech.edu/docs/latest/)
@ -11,7 +14,7 @@ always built by changing the old software until you build up enough cruft to dec
SemanticModels changes this by representing models at a semantic level and allowing programs to be expressed as
transformations on these models.
![SemanticModels Diagram](https://aske.gtri.gatech.edu/docs/latest/img/semanticmodels_jl.dot.svg)
<!-- ![SemanticModels Diagram](https://aske.gtri.gatech.edu/docs/latest/img/semanticmodels_jl.dot.svg) -->
The domains of software security and programming language theory (PLT) have spent a lot of time developing software and
theory for the analysis of computer programs, but these tools have not been adopted by the scientific community. This is
@ -28,7 +31,7 @@ these DSLs will help achieve that vision.
SemanticModels takes an alternative approach, which is to learn the DSL from actual usage of the libraries.
Every software library defines an implicit embedded DSL for its users. We aim to leverage that fact, along with large
collections of open source software to learn the modeling frameworks from the corpus of code.
collections of open source software to learn the modeling frameworks from the corpus of code.
## Getting Started
@ -47,13 +50,13 @@ precompile times, due to heavy use of generated functions.
Then you can load it at the julia REPL with `using SemanticModels`
You should start exploring the notebooks in the examples folder. These notebooks are represented in jupytext format,
and are stored as julia programs you can run at the repl or in the notebook interface after installing the jupytext plugin for jupyter.
You should start exploring the notebooks in the examples folder. These notebooks are represented in jupytext format,
and are stored as julia programs you can run at the repl or in the notebook interface after installing the jupytext plugin for jupyter.
1. Model augmentation: an example script `examples/decorations/graphs.jl` shows how to augment an agent based simulation to add new
modeling components using an API for changing models at the semantic level.
2. Model Representations: SemanticModels supports extracting diagram representations of scripts and creating scripts from wiring diagram representations. See the `examples/petri/malaria.ipynb` notebook for a demonstration, as well as expanding on model augmentation by combining and composing models to build a more complex simulation.
2. Model Representations: SemanticModels supports extracting diagram representations of scripts and creating scripts from wiring diagram representations. See the `examples/petri/malaria.ipynb` notebook for a demonstration, as well as expanding on model augmentation by combining and composing models to build a more complex simulation.
There are scripts in the folder `SemanticModels/bin` which provide command line access to some functionality of the
@ -100,7 +103,7 @@ process of taking a known model developed by another researcher (potentially a p
transforming the model to create a novel model. This process can help fit an existing theory to new data, explore
alternative hypotheses about the mechanisms of a natural phenomena, or conduct counterfactual thought experiments.
SemanticModels.ModelTool is the current home for this capability.
SemanticModels.ModelTool is the current home for this capability.
You can call `m = ModelTool.model(ExpAgentProblem, expr)` to lift an agent based model up to the semantic level, then apply
transformations on that `m` and then call `eval(m.expr)` to generate code for that new model. This allows you to compare
different variations on a theme to conduct your research.

BIN
doc/src/assets/favicon-16.png

After

Width: 16  |  Height: 16  |  Size: 1.1 KiB

BIN
doc/src/assets/favicon-24.png

After

Width: 24  |  Height: 24  |  Size: 1.5 KiB

BIN
doc/src/assets/favicon-32.png

After

Width: 32  |  Height: 32  |  Size: 1.8 KiB

BIN
doc/src/assets/favicon-48.png

After

Width: 48  |  Height: 48  |  Size: 2.5 KiB

BIN
doc/src/assets/favicon-64.png

After

Width: 64  |  Height: 64  |  Size: 3.4 KiB

BIN
doc/src/assets/favicon.ico

BIN
doc/src/assets/full-logo-dark.png

After

Width: 1519  |  Height: 255  |  Size: 62 KiB

BIN
doc/src/assets/full-logo.png

After

Width: 1519  |  Height: 255  |  Size: 38 KiB

BIN
doc/src/assets/full-logo.xcf

320
doc/src/assets/logo-dark.svg

@ -0,0 +1,320 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generated by graphviz version 2.43.20190912.0211 (20190912.0211)
-->
<!-- Title: G Pages: 1 -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="102pt"
height="102pt"
viewBox="0.00 0.00 102.00 102.00"
version="1.1"
id="svg53"
sodipodi:docname="logo-dark.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata59">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs57">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter657">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix653" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix655" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter663">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix659" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix661" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter669">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix665" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix667" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter675">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix671" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix673" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter681">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix677" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix679" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter687">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix683" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix685" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter693">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix689" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix691" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter699">
<feColorMatrix
type="hueRotate"
values="0"
result="color1"
id="feColorMatrix695" />
<feColorMatrix
type="saturate"
values="0.7"
result="color2"
id="feColorMatrix697" />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1862"
inkscape:window-height="1000"
id="namedview55"
showgrid="false"
inkscape:zoom="1.7352941"
inkscape:cx="-40.050847"
inkscape:cy="68"
inkscape:window-x="24"
inkscape:window-y="46"
inkscape:window-maximized="0"
inkscape:current-layer="node1" />
<g
id="graph0"
class="graph"
transform="scale(1 1) rotate(0) translate(4 98)">
<title
id="title2">G</title>
<!-- code1 -->
<g
id="node1"
class="node">
<title
id="title4">code1</title>
<ellipse
fill="#4876ff"
stroke="#3a5fcd"
cx="18"
cy="-76"
rx="18"
ry="18"
id="ellipse6"
style="filter:url(#filter699)" />
</g>
<!-- code2 -->
<g
id="node2"
class="node"
style="filter:url(#filter663)">
<title
id="title9">code2</title>
<ellipse
fill="indianred"
stroke="#cd3333"
cx="18"
cy="-18"
rx="18"
ry="18"
id="ellipse11" />
</g>
<!-- code1&#45;&gt;code2 -->
<g
id="edge2"
class="edge"
style="filter:url(#filter657)">
<title
id="title14">code1-&gt;code2</title>
<path
fill="none"
stroke="black"
d="M18,-57.89C18,-54.2 18,-50.21 18,-46.24"
id="path16" />
<polygon
fill="black"
stroke="black"
points="21.5,-46 18,-36 14.5,-46 21.5,-46"
id="polygon18" />
</g>
<!-- m1 -->
<g
id="node3"
class="node"
style="filter:url(#filter687)">
<title
id="title21">m1</title>
<ellipse
fill="mediumseagreen"
stroke="forestgreen"
cx="76"
cy="-76"
rx="18"
ry="18"
id="ellipse23" />
</g>
<!-- code1&#45;&gt;m1 -->
<g
id="edge1"
class="edge"
style="filter:url(#filter693)">
<title
id="title26">code1-&gt;m1</title>
<path
fill="none"
stroke="black"
d="M36.12,-76C39.99,-76 43.85,-76 47.71,-76"
id="path28" />
<polygon
fill="black"
stroke="black"
points="47.93,-79.5 57.93,-76 47.93,-72.5 47.93,-79.5"
id="polygon30" />
</g>
<!-- m2 -->
<g
id="node4"
class="node"
style="filter:url(#filter681)">
<title
id="title33">m2</title>
<ellipse
fill="#cd69c9"
stroke="#b452cd"
cx="76"
cy="-18"
rx="18"
ry="18"
id="ellipse35" />
</g>
<!-- code2&#45;&gt;m2 -->
<g
id="edge3"
class="edge"
style="filter:url(#filter669)">
<title
id="title38">code2-&gt;m2</title>
<path
fill="none"
stroke="black"
d="M36.12,-18C39.99,-18 43.85,-18 47.71,-18"
id="path40" />
<polygon
fill="black"
stroke="black"
points="47.93,-21.5 57.93,-18 47.93,-14.5 47.93,-21.5"
id="polygon42" />
</g>
<!-- m1&#45;&gt;m2 -->
<g
id="edge4"
class="edge"
style="filter:url(#filter675)">
<title
id="title45">m1-&gt;m2</title>
<path
fill="none"
stroke="black"
d="M76,-57.89C76,-54.2 76,-50.21 76,-46.24"
id="path47" />
<polygon
fill="black"
stroke="black"
points="79.5,-46 76,-36 72.5,-46 79.5,-46"
id="polygon49" />
</g>
</g>
</svg>

15
doc/src/assets/logo.dot

@ -0,0 +1,15 @@
digraph G {
graph [bgcolor="transparent", nodesep=".3", ranksep=".3"];
node[shape=circle, style=filled]
//rankdir=LR
code1 [label="", color="royalblue3", fillcolor="royalblue1"]
code2 [label="", color="brown3", fillcolor="indianred"]
m1 [label="", color="forestgreen", fillcolor="mediumseagreen"]
m2 [label="", color="mediumorchid3", fillcolor="orchid3"]
{rank=same code1, m1}
{rank=same code2, m2}
code1 -> m1
code1 -> code2
code2 -> m2
m1 -> m2
}

56
doc/src/assets/logo.svg

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.20190912.0211 (20190912.0211)
-->
<!-- Title: G Pages: 1 -->
<svg width="102pt" height="102pt"
viewBox="0.00 0.00 102.00 102.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 98)">
<title>G</title>
<!-- code1 -->
<g id="node1" class="node">
<title>code1</title>
<ellipse fill="#4876ff" stroke="#3a5fcd" cx="18" cy="-76" rx="18" ry="18"/>
</g>
<!-- code2 -->
<g id="node2" class="node">
<title>code2</title>
<ellipse fill="indianred" stroke="#cd3333" cx="18" cy="-18" rx="18" ry="18"/>
</g>
<!-- code1&#45;&gt;code2 -->
<g id="edge2" class="edge">
<title>code1&#45;&gt;code2</title>
<path fill="none" stroke="black" d="M18,-57.89C18,-54.2 18,-50.21 18,-46.24"/>
<polygon fill="black" stroke="black" points="21.5,-46 18,-36 14.5,-46 21.5,-46"/>
</g>
<!-- m1 -->
<g id="node3" class="node">
<title>m1</title>
<ellipse fill="mediumseagreen" stroke="forestgreen" cx="76" cy="-76" rx="18" ry="18"/>
</g>
<!-- code1&#45;&gt;m1 -->
<g id="edge1" class="edge">
<title>code1&#45;&gt;m1</title>
<path fill="none" stroke="black" d="M36.12,-76C39.99,-76 43.85,-76 47.71,-76"/>
<polygon fill="black" stroke="black" points="47.93,-79.5 57.93,-76 47.93,-72.5 47.93,-79.5"/>
</g>
<!-- m2 -->
<g id="node4" class="node">
<title>m2</title>
<ellipse fill="#cd69c9" stroke="#b452cd" cx="76" cy="-18" rx="18" ry="18"/>
</g>
<!-- code2&#45;&gt;m2 -->
<g id="edge3" class="edge">
<title>code2&#45;&gt;m2</title>
<path fill="none" stroke="black" d="M36.12,-18C39.99,-18 43.85,-18 47.71,-18"/>
<polygon fill="black" stroke="black" points="47.93,-21.5 57.93,-18 47.93,-14.5 47.93,-21.5"/>
</g>
<!-- m1&#45;&gt;m2 -->
<g id="edge4" class="edge">
<title>m1&#45;&gt;m2</title>
<path fill="none" stroke="black" d="M76,-57.89C76,-54.2 76,-50.21 76,-46.24"/>
<polygon fill="black" stroke="black" points="79.5,-46 76,-36 72.5,-46 79.5,-46"/>
</g>
</g>
</svg>

19
doc/src/img/semanticmodels_jl.dot

@ -1,19 +0,0 @@
# http://www.graphviz.org/content/cluster
digraph G {
node[shape=circle, style=filled]
//rankdir=LR
subgraph cluster_1{
label="SemanticModeling"
code1 [label="c₁ ", color="royalblue3", fillcolor="royalblue1"]
code2 [label="c₂ ", color="brown3", fillcolor="indianred"]
m1 -> m2 [label=" T"]
code1 -> m1 [label="Model(Expr)"]
m2->code2 [label="Expr(Model)"]
code1 -> code2 [label=" T′"]
{rank=same code1, m1}
{rank=same code2, m2}
m1 [label="m₁", color="forestgreen", fillcolor="mediumseagreen"]
m2 [label="m₂", color="mediumorchid3", fillcolor="orchid3"]
}
}

5
doc/src/index.md

@ -1,12 +1,9 @@
# SemanticModels.jl Documentation
![SemanticModels.jl](assets/full-logo.png)
```@meta
CurrentModule = SemanticModels
```
![SemanticModels Diagram](img/semanticmodels_jl.dot.svg)
SemanticModels is a system for representing scientific knowledge inherent to scientific model structure.
Our philosophy is that over the next few decades, the adoption of computation as a first class pillar of scientific
thought will be complete, and scientists will do a majority of their thinking about and communicating of ideas in the

Loading…
Cancel
Save