Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
uek-1 committed Jul 10, 2023
1 parent 7cb6821 commit b5f0f9c
Show file tree
Hide file tree
Showing 18 changed files with 2,269 additions and 82 deletions.
44 changes: 22 additions & 22 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = [
"rust-mlp",
"model-gui"
"puffpastry",
"gui"
]
Binary file modified github-pages/app.wasm
Binary file not shown.
14 changes: 6 additions & 8 deletions github-pages/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@


<!-- change this to your project name -->
<title>rust-mlp-viz</title>
<title>LearnXOR</title>

<!-- config for our rust wasm binary. go to https://trunkrs.dev/assets/#rust for more customization -->
<script type="module">import init from '/xor-train-game/preload.js';init('/xor-train-game/app.wasm');</script>
<script type="module">import init from '/gui-f2bbef4af0d3ecbe.js';init('/gui-f2bbef4af0d3ecbe_bg.wasm');</script>
<!-- this is the base url relative to which other urls will be constructed. trunk will insert this from the public-url option -->
<base href="/xor-train-game">
<base href="/">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="white">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#404040">

Expand Down Expand Up @@ -100,10 +100,8 @@
}
</style>

<link rel="preload" href="/app.wasm" type="application/wasm" as="fetch" crossorigin="">
<link rel="modulepreload" href="/preload.js">

</head>
<link rel="preload" href="/gui-f2bbef4af0d3ecbe_bg.wasm" as="fetch" type="application/wasm" crossorigin="">
<link rel="modulepreload" href="/gui-f2bbef4af0d3ecbe.js"></head>

<body>
<!-- The WASM code will resize the canvas dynamically -->
Expand All @@ -112,4 +110,4 @@



</body></html>
</body></html>
100 changes: 50 additions & 50 deletions github-pages/preload.js
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,49 @@ function getImports() {
wasm.__wbindgen_free(arg0, arg1);
}
};
imports.wbg.__wbg_crypto_c48a774b022d20ac = function(arg0) {
const ret = getObject(arg0).crypto;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_object = function(arg0) {
const val = getObject(arg0);
const ret = typeof(val) === 'object' && val !== null;
return ret;
};
imports.wbg.__wbg_process_298734cf255a885d = function(arg0) {
const ret = getObject(arg0).process;
return addHeapObject(ret);
};
imports.wbg.__wbg_versions_e2e78e134e3e5d01 = function(arg0) {
const ret = getObject(arg0).versions;
return addHeapObject(ret);
};
imports.wbg.__wbg_node_1cd7a5d853dbea79 = function(arg0) {
const ret = getObject(arg0).node;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_string = function(arg0) {
const ret = typeof(getObject(arg0)) === 'string';
return ret;
};
imports.wbg.__wbg_msCrypto_bcb970640f50a1e8 = function(arg0) {
const ret = getObject(arg0).msCrypto;
return addHeapObject(ret);
};
imports.wbg.__wbg_require_8f08ceecec0f4fee = function() { return handleError(function () {
const ret = module.require;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbindgen_is_function = function(arg0) {
const ret = typeof(getObject(arg0)) === 'function';
return ret;
};
imports.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab = function() { return handleError(function (arg0, arg1) {
getObject(arg0).getRandomValues(getObject(arg1));
}, arguments) };
imports.wbg.__wbg_randomFillSync_dc1e9a60c158336d = function() { return handleError(function (arg0, arg1) {
getObject(arg0).randomFillSync(takeObject(arg1));
}, arguments) };
imports.wbg.__wbg_instanceof_WebGl2RenderingContext_61bb2cb23346dbb7 = function(arg0) {
let result;
try {
Expand Down Expand Up @@ -1166,49 +1209,6 @@ function getImports() {
const ret = getObject(arg0)[arg1 >>> 0];
return isLikeNone(ret) ? 0 : addHeapObject(ret);
};
imports.wbg.__wbg_crypto_c48a774b022d20ac = function(arg0) {
const ret = getObject(arg0).crypto;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_object = function(arg0) {
const val = getObject(arg0);
const ret = typeof(val) === 'object' && val !== null;
return ret;
};
imports.wbg.__wbg_process_298734cf255a885d = function(arg0) {
const ret = getObject(arg0).process;
return addHeapObject(ret);
};
imports.wbg.__wbg_versions_e2e78e134e3e5d01 = function(arg0) {
const ret = getObject(arg0).versions;
return addHeapObject(ret);
};
imports.wbg.__wbg_node_1cd7a5d853dbea79 = function(arg0) {
const ret = getObject(arg0).node;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_string = function(arg0) {
const ret = typeof(getObject(arg0)) === 'string';
return ret;
};
imports.wbg.__wbg_msCrypto_bcb970640f50a1e8 = function(arg0) {
const ret = getObject(arg0).msCrypto;
return addHeapObject(ret);
};
imports.wbg.__wbg_require_8f08ceecec0f4fee = function() { return handleError(function () {
const ret = module.require;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbindgen_is_function = function(arg0) {
const ret = typeof(getObject(arg0)) === 'function';
return ret;
};
imports.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab = function() { return handleError(function (arg0, arg1) {
getObject(arg0).getRandomValues(getObject(arg1));
}, arguments) };
imports.wbg.__wbg_randomFillSync_dc1e9a60c158336d = function() { return handleError(function (arg0, arg1) {
getObject(arg0).randomFillSync(takeObject(arg1));
}, arguments) };
imports.wbg.__wbg_get_27fe3dac1c4d0224 = function(arg0, arg1) {
const ret = getObject(arg0)[arg1 >>> 0];
return addHeapObject(ret);
Expand Down Expand Up @@ -1330,16 +1330,16 @@ function getImports() {
const ret = wasm.memory;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper515 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 107, __wbg_adapter_30);
imports.wbg.__wbindgen_closure_wrapper506 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 100, __wbg_adapter_30);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper516 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 107, __wbg_adapter_33);
imports.wbg.__wbindgen_closure_wrapper507 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 100, __wbg_adapter_33);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper759 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 205, __wbg_adapter_36);
imports.wbg.__wbindgen_closure_wrapper750 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 198, __wbg_adapter_36);
return addHeapObject(ret);
};

Expand Down Expand Up @@ -1377,7 +1377,7 @@ function initSync(module) {

async function init(input) {
if (typeof input === 'undefined') {
input = new URL('model-gui-708a5ad6a05d56ae_bg.wasm', import.meta.url);
input = new URL('gui-f2bbef4af0d3ecbe_bg.wasm', import.meta.url);
}
const imports = getImports();

Expand Down
25 changes: 25 additions & 0 deletions gui/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "gui"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
getrandom = { version = "0.2", features = ["js"] }
puffpastry = {path = "../puffpastry"}
egui = "0.21.0"
eframe = { version = "0.21.0", default-features = false, features = [
"default_fonts", # Embed the default egui fonts.
"glow", # Use the glow rendering backend. Alternative: "wgpu".
]}
instant = { version = "0.1", features = ["wasm-bindgen"] }

console_error_panic_hook = "0.1.6"
tracing-wasm = "0.2"
wasm-bindgen-futures = "0.4"

# web
[target.'cfg(target_arch = "wasm32")'.dependencies]


88 changes: 88 additions & 0 deletions gui/\
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
use rust_mlp::{Model, Loss, Activation, Layer};
use instant::{Duration, Instant};
use egui::{vec2, Color32, Frame, Rect};

#[cfg(not(target_arch = "wasm32"))]
fn main() {
println!("Hello, world!");
let model : Model<f64> = Model::from_layers(
vec![
Layer::from_size(2, 2, Activation::Sigmoid)
],
Loss::MeanSquaredError
);

print!("MODEL : {:?}", model);
}



#[cfg(target_arch = "wasm32")]
fn main(){
console_error_panic_hook::set_once();
let web_options = eframe::WebOptions::default();
wasm_bindgen_futures::spawn_local(async {
eframe::start_web(
"the_canvas_id",
web_options,
Box::new(|cc| Box::new(App::new(cc)))
)
.await
.expect("Couldn't start eframe!");
});
}


pub struct App {
time: Instant,
model: Model,
}

impl App {
pub fn new(cc : &eframe::CreationContext<'_>) -> Self {
let visuals = egui::Visuals::dark();
cc.egui_ctx.set_visuals(visuals);

App {
time: Instant::now()
}
}

pub fn initialize_model(&mut self) -> String {
let model : Model<f64> = Model::from_layers(
vec![
Layer::from_size(2, 2, Activation::Sigmoid),
Layer::from_size(2, 1, Activation::None)
],
Loss::MeanSquaredError
);

format!("{:?}", model)
}
}

impl eframe::App for App {
fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
egui::CentralPanel::default()
.frame(
Frame::default()
)
.show(
ctx, |ui| {
ui.label("HI");
if ui.button("CREATE MODEL!").clicked() {
let model_string = self.initialize_model();
ui.label(model_string);
}
}
);

ctx.request_repaint_after(Duration::from_millis(50))
}
}






Loading

0 comments on commit b5f0f9c

Please sign in to comment.