diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..1969c4e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +name: build +# This should ensure that the workflow won't run on `dev-*` branches, but will +# otherwise execute on any other branch and any pull request (including dev +# branches). +on: + push: + branches-ignore: + - 'dev-*' + pull_request: + branches: + - '*' + +env: + # A fixed version used for testing, so that the builds don't + # spontaneously break after a few years. + # Make sure to update this from time to time. + RUST_VERSION: "1.77.0" +jobs: + # Check formatting + fmt: + name: Rustfmt + runs-on: ubuntu-latest + env: + RUSTFLAGS: "-D warnings" + steps: + - name: Checkout. + uses: actions/checkout@v3 + - name: Install Rust toolchain. + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} + - name: Rust format check. + run: cargo fmt --all -- --check + + # Run basic code validity check + check: + needs: fmt + name: Check + runs-on: ubuntu-latest + env: + RUSTFLAGS: "-D warnings" + steps: + - name: Checkout. + uses: actions/checkout@v3 + - name: Install Rust toolchain. + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} + - name: Rust code validity check. + run: cargo check + + # Run all tests + test: + needs: check + name: Test Suite + runs-on: ubuntu-latest + env: + RUSTFLAGS: "-D warnings" + steps: + - uses: actions/checkout@v3 + - name: Checkout. + uses: actions/checkout@v3 + - name: Install Rust toolchain. + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} + - name: Run tests. + run: cargo test --all-features + + # Check code style + clippy: + needs: check + name: Clippy + runs-on: ubuntu-latest + env: + RUSTFLAGS: "-D warnings" + steps: + - name: Checkout. + uses: actions/checkout@v3 + - name: Install Rust toolchain. + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} + - name: Run clippy. + run: cargo clippy diff --git a/.gitignore b/.gitignore index 6985cf1..95fa740 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ Cargo.lock # MSVC Windows builds of rustc generate these, which store debugging information *.pdb + +.idea/ \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3051642 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "biodivine-lib-bma-data" +version = "0.0.1" +authors = ["Ondřej Huvar ", "Samuel Pastva "] +edition = "2021" +description = "Library for working with models in BMA format." +homepage = "https://github.com/sybila/biodivine-lib-bma-data" +repository = "https://github.com/sybila/biodivine-lib-bma-data" +readme = "README.md" +keywords = ["boolean-network", "BMA", "systems-biology"] +categories = ["science", "simulation"] +license = "MIT" + +[lib] +name = "biodivine_lib_bma_data" +path = "src/lib.rs" + +[dependencies] +biodivine-lib-param-bn = ">=0.5.11, <1.0.0" +clap = { version = "4.1.4", features = ["derive"] } +rand = "0.8.5" diff --git a/models/json/RestingNeuron.json b/models/json/RestingNeuron.json new file mode 100644 index 0000000..6ece20d --- /dev/null +++ b/models/json/RestingNeuron.json @@ -0,0 +1 @@ +{"Model":{"Name":"Resting Neuron","Variables":[{"Id":6,"RangeFrom":0,"RangeTo":1,"Formula":"0"},{"Id":24,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":25,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":26,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":27,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":1,"RangeFrom":0,"RangeTo":1,"Formula":"max(var(3),var(1))-var(5)"},{"Id":3,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":4,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":5,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":28,"RangeFrom":0,"RangeTo":1,"Formula":"max(var(29),var(28))-var(31)"},{"Id":29,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":30,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":31,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":32,"RangeFrom":0,"RangeTo":1,"Formula":"max(var(33),var(32))-var(35)"},{"Id":33,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":34,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":35,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":36,"RangeFrom":0,"RangeTo":1,"Formula":"max(var(37),var(36))-var(39)"},{"Id":37,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":38,"RangeFrom":0,"RangeTo":1,"Formula":""},{"Id":39,"RangeFrom":0,"RangeTo":1,"Formula":""}],"Relationships":[{"Id":4,"FromVariable":4,"ToVariable":5,"Type":"Activator"},{"Id":21,"FromVariable":30,"ToVariable":31,"Type":"Activator"},{"Id":21,"FromVariable":34,"ToVariable":35,"Type":"Activator"},{"Id":21,"FromVariable":38,"ToVariable":39,"Type":"Activator"},{"Id":2,"FromVariable":3,"ToVariable":1,"Type":"Activator"},{"Id":3,"FromVariable":1,"ToVariable":4,"Type":"Activator"},{"Id":5,"FromVariable":5,"ToVariable":1,"Type":"Inhibitor"},{"Id":10,"FromVariable":1,"ToVariable":24,"Type":"Activator"},{"Id":18,"FromVariable":1,"ToVariable":1,"Type":"Activator"},{"Id":1,"FromVariable":6,"ToVariable":3,"Type":"Activator"},{"Id":19,"FromVariable":29,"ToVariable":28,"Type":"Activator"},{"Id":20,"FromVariable":28,"ToVariable":30,"Type":"Activator"},{"Id":22,"FromVariable":31,"ToVariable":28,"Type":"Inhibitor"},{"Id":23,"FromVariable":28,"ToVariable":28,"Type":"Activator"},{"Id":25,"FromVariable":28,"ToVariable":25,"Type":"Activator"},{"Id":24,"FromVariable":24,"ToVariable":29,"Type":"Activator"},{"Id":19,"FromVariable":33,"ToVariable":32,"Type":"Activator"},{"Id":20,"FromVariable":32,"ToVariable":34,"Type":"Activator"},{"Id":22,"FromVariable":35,"ToVariable":32,"Type":"Inhibitor"},{"Id":23,"FromVariable":32,"ToVariable":32,"Type":"Activator"},{"Id":27,"FromVariable":32,"ToVariable":26,"Type":"Activator"},{"Id":26,"FromVariable":25,"ToVariable":33,"Type":"Activator"},{"Id":19,"FromVariable":37,"ToVariable":36,"Type":"Activator"},{"Id":20,"FromVariable":36,"ToVariable":38,"Type":"Activator"},{"Id":22,"FromVariable":39,"ToVariable":36,"Type":"Inhibitor"},{"Id":23,"FromVariable":36,"ToVariable":36,"Type":"Activator"},{"Id":29,"FromVariable":36,"ToVariable":27,"Type":"Activator"},{"Id":28,"FromVariable":26,"ToVariable":37,"Type":"Activator"}]},"Layout":{"Variables":[{"Id":6,"Name":"Potential","Type":"Constant","ContainerId":0,"PositionX":454.16666666666663,"PositionY":222.14285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":24,"Name":"P2","Type":"Constant","ContainerId":0,"PositionX":704.1666666666666,"PositionY":222.14285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":25,"Name":"P3","Type":"Constant","ContainerId":0,"PositionX":954.1666666666666,"PositionY":222.14285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":26,"Name":"P4","Type":"Constant","ContainerId":0,"PositionX":1204.1666666666667,"PositionY":222.14285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":27,"Name":"Output","Type":"Constant","ContainerId":0,"PositionX":1454.1666666666667,"PositionY":222.14285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":1,"Name":"Pore","Type":"MembraneReceptor","ContainerId":1,"PositionX":378.7883124043404,"PositionY":293.0092058578739,"CellX":null,"CellY":null,"Angle":0},{"Id":3,"Name":"VS","Type":"MembraneReceptor","ContainerId":1,"PositionX":451.29012214872057,"PositionY":328.0311128390987,"CellX":null,"CellY":null,"Angle":45},{"Id":4,"Name":"CTD_connect","Type":"Default","ContainerId":1,"PositionX":399.06666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":5,"Name":"CTD","Type":"Default","ContainerId":1,"PositionX":351.56666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":28,"Name":"Pore","Type":"MembraneReceptor","ContainerId":2,"PositionX":628.7883124043486,"PositionY":293.00920585707354,"CellX":null,"CellY":null,"Angle":0},{"Id":29,"Name":"VS","Type":"MembraneReceptor","ContainerId":2,"PositionX":701.29012214872,"PositionY":328.03111283909914,"CellX":null,"CellY":null,"Angle":45},{"Id":30,"Name":"CTD_connect","Type":"Default","ContainerId":2,"PositionX":649.0666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":31,"Name":"CTD","Type":"Default","ContainerId":2,"PositionX":601.5666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":32,"Name":"Pore","Type":"MembraneReceptor","ContainerId":3,"PositionX":878.7883124042828,"PositionY":293.00920586354914,"CellX":null,"CellY":null,"Angle":0},{"Id":33,"Name":"VS","Type":"MembraneReceptor","ContainerId":3,"PositionX":951.2901221487209,"PositionY":328.03111283909834,"CellX":null,"CellY":null,"Angle":45},{"Id":34,"Name":"CTD_connect","Type":"Default","ContainerId":3,"PositionX":899.0666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":35,"Name":"CTD","Type":"Default","ContainerId":3,"PositionX":851.5666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":36,"Name":"Pore","Type":"MembraneReceptor","ContainerId":4,"PositionX":1128.788312404283,"PositionY":293.0092058635637,"CellX":null,"CellY":null,"Angle":0},{"Id":37,"Name":"VS","Type":"MembraneReceptor","ContainerId":4,"PositionX":1201.29012214872,"PositionY":328.03111283909925,"CellX":null,"CellY":null,"Angle":45},{"Id":38,"Name":"CTD_connect","Type":"Default","ContainerId":4,"PositionX":1149.0666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0},{"Id":39,"Name":"CTD","Type":"Default","ContainerId":4,"PositionX":1101.5666666666666,"PositionY":381.2285714285714,"CellX":null,"CellY":null,"Angle":0}],"Containers":[{"Id":1,"Name":"","Size":1,"PositionX":1,"PositionY":1},{"Id":2,"Name":"","Size":1,"PositionX":2,"PositionY":1},{"Id":3,"Name":"","Size":1,"PositionX":3,"PositionY":1},{"Id":4,"Name":"","Size":1,"PositionX":4,"PositionY":1}]}} \ No newline at end of file diff --git a/models/json/SimpleBifurcation.json b/models/json/SimpleBifurcation.json new file mode 100644 index 0000000..be6dadf --- /dev/null +++ b/models/json/SimpleBifurcation.json @@ -0,0 +1,44 @@ +{ + "Model": { + "Name": "model 1", + "Variables": [ + { + "Id": 3, + "RangeFrom": 0, + "RangeTo": 1, + "Formula": "" + } + ], + "Relationships": [ + { + "Id": 12, + "FromVariable": 3, + "ToVariable": 3, + "Type": "Activator" + } + ] + }, + "Layout": { + "Variables": [ + { + "Id": 3, + "Name": "A", + "Type": "Default", + "ContainerId": 1, + "PositionX": 632.5, + "PositionY": -493.33333333333337, + "CellX": 0, + "CellY": 0, + "Angle": 0 + } + ], + "Containers": [ + { + "Id": 1, + "Size": 1, + "PositionX": 2, + "PositionY": -2 + } + ] + } +} \ No newline at end of file diff --git a/models/xml/Skin1D.xml b/models/xml/Skin1D.xml new file mode 100644 index 0000000..352e7ec --- /dev/null +++ b/models/xml/Skin1D.xml @@ -0,0 +1,1508 @@ + + + Description + 2012-05-30T10:14:04.4761834+01:00 + 2012-05-30T12:15:31.1964861+01:00 + + 6 + 5 + 100 + 646 + 402 + + + + 2 + 2 + 1 + + + 3 + 2 + 1 + + + 4 + 2 + 1 + + + 1 + 2 + 1 + + + 5 + 2 + 1 + + + + + 0 + Constant + 0 + 4 + + 159 + 179 + 3 + 1 + 0 + + + 0 + Constant + 0 + 4 + + 159 + 179 + 4 + 1 + 0 + + + 0 + Constant + 0 + 4 + + 159 + 179 + 4 + 3 + 0 + + + 0 + Constant + 0 + 4 + + 159 + 179 + 3 + 3 + 0 + + + 0 + Constant + 0 + 4 + + 159 + 179 + 2 + 3 + 0 + + + 0 + Constant + 0 + 4 + + 159 + 179 + 2 + 1 + 0 + + + 0 + Constant + 0 + 4 + (4+var(Wnt))/2 + 159 + 179 + 1 + 1 + 0 + + + 0 + Constant + 0 + 4 + (2+var(Jagged))/2 + 159 + 179 + 1 + 3 + 0 + + + 0 + Constant + 0 + 4 + var(Wnt)/2 + 159 + 179 + 5 + 1 + 0 + + + 0 + Constant + 0 + 4 + (2+var(Jagged))/2 + 159 + 179 + 5 + 3 + 0 + + + 1 + Default + 0 + 4 + + 104 + 32 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + + 104 + 107 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + + 104 + 182 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + + 104 + 257 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + min(var(Notch), var(Ligand-in)) + 234 + 259 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + + 234 + 184 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + + 234 + 109 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + 4 + 159 + 109 + 2 + 2 + 0 + + + 1 + Default + 0 + 4 + 4 + 159 + 184 + 2 + 2 + 0 + + + 1 + MembraneReceptor + 0 + 4 + + 156 + -20 + 2 + 2 + 0 + + + 1 + MembraneReceptor + 0 + 4 + + 156 + 344 + 2 + 2 + 180 + + + 1 + MembraneReceptor + 0 + 4 + + 258 + 298 + 2 + 2 + 135 + + + 1 + Default + 0 + 4 + + 159 + 259 + 2 + 2 + 0 + + + 2 + Default + 0 + 4 + + 104 + 32 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 104 + 107 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 104 + 182 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 104 + 257 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + min(var(Notch), var(Ligand-in)) + 234 + 259 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 234 + 184 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 234 + 109 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + + 159 + 259 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + 4 + 159 + 109 + 3 + 2 + 0 + + + 2 + Default + 0 + 4 + 4 + 159 + 184 + 3 + 2 + 0 + + + 2 + MembraneReceptor + 0 + 4 + + 156 + -20 + 3 + 2 + 0 + + + 2 + MembraneReceptor + 0 + 4 + + 156 + 344 + 3 + 2 + 180 + + + 2 + MembraneReceptor + 0 + 4 + + 258 + 298 + 3 + 2 + 135 + + + 3 + Default + 0 + 4 + + 104 + 32 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 104 + 107 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 104 + 182 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 104 + 257 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + min(var(Notch), var(Ligand-in)) + 234 + 259 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 234 + 184 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 234 + 109 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + + 159 + 259 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + 4 + 159 + 109 + 4 + 2 + 0 + + + 3 + Default + 0 + 4 + 4 + 159 + 184 + 4 + 2 + 0 + + + 3 + MembraneReceptor + 0 + 4 + + 156 + -20 + 4 + 2 + 0 + + + 3 + MembraneReceptor + 0 + 4 + + 258 + 298 + 4 + 2 + 135 + + + 3 + MembraneReceptor + 0 + 4 + + 156 + 344 + 4 + 2 + 180 + + + 16 + Default + 0 + 4 + + 104 + 32 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + + 104 + 107 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + + 104 + 182 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + + 104 + 257 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + min(var(Notch), var(Ligand-in)) + 234 + 259 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + + 234 + 184 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + + 234 + 109 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + 4 + 159 + 109 + 1 + 2 + 0 + + + 16 + Default + 0 + 4 + 4 + 159 + 184 + 1 + 2 + 0 + + + 16 + MembraneReceptor + 0 + 4 + + 156 + -20 + 1 + 2 + 0 + + + 16 + MembraneReceptor + 0 + 4 + + 156 + 344 + 1 + 2 + 180 + + + 16 + MembraneReceptor + 0 + 4 + + 258 + 298 + 1 + 2 + 135 + + + 16 + Default + 0 + 4 + + 159 + 259 + 1 + 2 + 0 + + + 17 + Default + 0 + 4 + + 104 + 32 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 104 + 107 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 104 + 182 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 104 + 257 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + min(var(Notch), var(Ligand-in)) + 234 + 259 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 234 + 184 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 234 + 109 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + + 159 + 259 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + 4 + 159 + 109 + 5 + 2 + 0 + + + 17 + Default + 0 + 4 + 4 + 159 + 184 + 5 + 2 + 0 + + + 17 + MembraneReceptor + 0 + 4 + + 156 + -20 + 5 + 2 + 0 + + + 17 + MembraneReceptor + 0 + 4 + + 258 + 298 + 5 + 2 + 135 + + + 17 + MembraneReceptor + 0 + 4 + + 156 + 344 + 5 + 2 + 180 + + + + + 1 + 7 + 41 + Activator + + + 2 + 20 + 42 + Activator + + + 3 + 33 + 41 + Activator + + + 17 + 96 + 42 + Activator + + + 0 + 74 + 81 + Activator + + + 0 + 45 + 5 + Activator + + + 0 + 44 + 18 + Activator + + + 0 + 43 + 31 + Activator + + + 0 + 76 + 94 + Activator + + + 1 + 1 + 2 + Inhibitor + + + 1 + 2 + 3 + Inhibitor + + + 1 + 3 + 4 + Activator + + + 1 + 5 + 6 + Activator + + + 1 + 6 + 7 + Inhibitor + + + 1 + 8 + 2 + Activator + + + 1 + 9 + 3 + Activator + + + 1 + 5 + 13 + Activator + + + 2 + 14 + 15 + Inhibitor + + + 2 + 15 + 16 + Inhibitor + + + 2 + 16 + 17 + Activator + + + 2 + 18 + 19 + Activator + + + 2 + 19 + 20 + Inhibitor + + + 2 + 18 + 21 + Activator + + + 2 + 22 + 15 + Activator + + + 2 + 23 + 16 + Activator + + + 3 + 27 + 28 + Inhibitor + + + 3 + 28 + 29 + Inhibitor + + + 3 + 29 + 30 + Activator + + + 3 + 31 + 32 + Activator + + + 3 + 32 + 33 + Inhibitor + + + 3 + 31 + 34 + Activator + + + 3 + 35 + 28 + Activator + + + 3 + 36 + 29 + Activator + + + 16 + 77 + 78 + Inhibitor + + + 16 + 78 + 79 + Inhibitor + + + 16 + 79 + 80 + Activator + + + 16 + 81 + 82 + Activator + + + 16 + 82 + 83 + Inhibitor + + + 16 + 84 + 78 + Activator + + + 16 + 85 + 79 + Activator + + + 16 + 81 + 89 + Activator + + + 17 + 90 + 91 + Inhibitor + + + 17 + 91 + 92 + Inhibitor + + + 17 + 92 + 93 + Activator + + + 17 + 94 + 95 + Activator + + + 17 + 95 + 96 + Inhibitor + + + 17 + 94 + 97 + Activator + + + 17 + 98 + 91 + Activator + + + 17 + 99 + 92 + Activator + + + 3 + 33 + 75 + Activator + + + 16 + 83 + 72 + Activator + + + 1 + 7 + 73 + Activator + + + 2 + 20 + 72 + Activator + + + 0 + 72 + 10 + Activator + + + 1 + 10 + 1 + Activator + + + 1 + 11 + 44 + Activator + + + 1 + 11 + 74 + Activator + + + 1 + 13 + 11 + Activator + + + 1 + 4 + 11 + Activator + + + 0 + 45 + 12 + Activator + + + 1 + 12 + 5 + Activator + + + 0 + 41 + 24 + Activator + + + 2 + 24 + 14 + Activator + + + 2 + 25 + 45 + Activator + + + 2 + 25 + 43 + Activator + + + 2 + 21 + 25 + Activator + + + 2 + 17 + 25 + Activator + + + 0 + 44 + 26 + Activator + + + 2 + 26 + 18 + Activator + + + 2 + 26 + 18 + Activator + + + 0 + 42 + 37 + Activator + + + 3 + 37 + 27 + Activator + + + 0 + 43 + 38 + Activator + + + 3 + 38 + 31 + Activator + + + 3 + 38 + 31 + Activator + + + 3 + 39 + 44 + Activator + + + 3 + 39 + 76 + Activator + + + 3 + 34 + 39 + Activator + + + 3 + 30 + 39 + Activator + + + 0 + 73 + 86 + Activator + + + 16 + 86 + 77 + Activator + + + 16 + 87 + 45 + Activator + + + 16 + 89 + 87 + Activator + + + 16 + 80 + 87 + Activator + + + 0 + 74 + 88 + Activator + + + 16 + 88 + 81 + Activator + + + 0 + 75 + 100 + Activator + + + 17 + 100 + 90 + Activator + + + 0 + 76 + 101 + Activator + + + 17 + 101 + 94 + Activator + + + 17 + 101 + 94 + Activator + + + 17 + 102 + 43 + Activator + + + 17 + 97 + 102 + Activator + + + 17 + 93 + 102 + Activator + + + \ No newline at end of file diff --git a/models/xml/VerySmallTestCase.xml b/models/xml/VerySmallTestCase.xml new file mode 100644 index 0000000..5428cb2 --- /dev/null +++ b/models/xml/VerySmallTestCase.xml @@ -0,0 +1,54 @@ + + + This is a new model. + 2012-06-20T11:25:47.4232397+01:00 + 2012-06-20T11:26:56.0530835+01:00 + + 6 + 5 + 36 + 0 + 0 + + + + 1 + 0 + 1 + + + + + 1 + Default + 4 + 4 + + 88 + 116 + 1 + 0 + 0 + + + 1 + Default + 0 + 4 + + 238 + 224 + 1 + 0 + 0 + + + + + 1 + 1 + 2 + Activator + + + \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..28e2132 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +//! Rust library for working with models in BMA format. + +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct BmaModel {} + +// TODO :)