wrastling with bindgen on structures
This commit is contained in:
parent
21da50375a
commit
2b1485fbec
|
@ -13,3 +13,4 @@ packages/squiggle-lang/.cache/
|
|||
packages/website/build/
|
||||
packages/squiggle-lang/src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_GeneratedParser.js
|
||||
packages/vscode-ext/media/vendor/
|
||||
packages/mc/pkg/
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"packages/cli": "0.0.3",
|
||||
"packages/components": "0.3.1",
|
||||
"packages/squiggle-lang": "0.3.0",
|
||||
"packages/squiggle-mc-cached-wasm": "0.0.1",
|
||||
"packages/mc": "0.0.1",
|
||||
"packages/vscode-ext": "0.3.1",
|
||||
"packages/website": "0.3.0"
|
||||
}
|
||||
|
|
95
packages/mc/Cargo.lock
generated
95
packages/mc/Cargo.lock
generated
|
@ -269,6 +269,12 @@ dependencies = [
|
|||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.59"
|
||||
|
@ -280,12 +286,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "kernel_density"
|
||||
version = "0.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4650e4bc6bb55f57f16f669ddb3c643c8b2e99a477f2f1fa9162528322d2a1b1"
|
||||
version = "0.0.2"
|
||||
source = "git+https://github.com/daithiocrualaoich/kernel_density#98c5fb6f9989d9bb6db19adc134cdbd32512d41e"
|
||||
dependencies = [
|
||||
"ordered-float",
|
||||
"rand 0.3.23",
|
||||
"special-fun",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -327,15 +332,6 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3"
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
|
||||
dependencies = [
|
||||
"num-traits 0.2.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.15"
|
||||
|
@ -362,16 +358,6 @@ version = "1.13.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e"
|
||||
|
||||
[[package]]
|
||||
name = "ordered-float"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc511538298611a79d5a4ddfbb75315b866d942ed26a00bdc3590795c68b7279"
|
||||
dependencies = [
|
||||
"num-traits 0.1.43",
|
||||
"unreachable",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.9"
|
||||
|
@ -462,6 +448,7 @@ dependencies = [
|
|||
"quickcheck_macros",
|
||||
"rand 0.8.5",
|
||||
"rand_distr",
|
||||
"serde",
|
||||
"statistics",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
|
@ -544,7 +531,7 @@ version = "0.4.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
|
||||
dependencies = [
|
||||
"num-traits 0.2.15",
|
||||
"num-traits",
|
||||
"rand 0.8.5",
|
||||
]
|
||||
|
||||
|
@ -574,12 +561,55 @@ version = "0.6.27"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
|
||||
|
||||
[[package]]
|
||||
name = "scoped-tls"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.143"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.143"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.43",
|
||||
"quote 1.0.21",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.83"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "special-fun"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5cde43d93062bf8040a0d30f83a8b40b2756af55ba048e007ee7c81e02276b81"
|
||||
|
||||
[[package]]
|
||||
name = "statistics"
|
||||
version = "0.4.1"
|
||||
|
@ -659,21 +689,6 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||
|
||||
[[package]]
|
||||
name = "unreachable"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91"
|
||||
dependencies = [
|
||||
"void",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "void"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
|
@ -687,6 +702,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
||||
|
|
|
@ -404,6 +404,13 @@ in
|
|||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.3" = overridableMkRustCrate (profileName: rec {
|
||||
name = "itoa";
|
||||
version = "1.0.3";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.59" = overridableMkRustCrate (profileName: rec {
|
||||
name = "js-sys";
|
||||
version = "0.3.59";
|
||||
|
@ -414,14 +421,18 @@ in
|
|||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".kernel_density."0.0.1" = overridableMkRustCrate (profileName: rec {
|
||||
"git+https://github.com/daithiocrualaoich/kernel_density".kernel_density."0.0.2" = overridableMkRustCrate (profileName: rec {
|
||||
name = "kernel_density";
|
||||
version = "0.0.1";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "4650e4bc6bb55f57f16f669ddb3c643c8b2e99a477f2f1fa9162528322d2a1b1"; };
|
||||
version = "0.0.2";
|
||||
registry = "git+https://github.com/daithiocrualaoich/kernel_density";
|
||||
src = fetchCrateGit {
|
||||
url = https://github.com/daithiocrualaoich/kernel_density;
|
||||
name = "kernel_density";
|
||||
version = "0.0.2";
|
||||
rev = "98c5fb6f9989d9bb6db19adc134cdbd32512d41e";};
|
||||
dependencies = {
|
||||
ordered_float = rustPackages."registry+https://github.com/rust-lang/crates.io-index".ordered-float."0.2.3" { inherit profileName; };
|
||||
rand = rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.3.23" { inherit profileName; };
|
||||
special_fun = rustPackages."registry+https://github.com/rust-lang/crates.io-index".special-fun."0.1.6" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -484,25 +495,13 @@ in
|
|||
src = fetchCratesIo { inherit name version; sha256 = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".num-traits."0.1.43" = overridableMkRustCrate (profileName: rec {
|
||||
name = "num-traits";
|
||||
version = "0.1.43";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"; };
|
||||
dependencies = {
|
||||
num_traits = rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" = overridableMkRustCrate (profileName: rec {
|
||||
name = "num-traits";
|
||||
version = "0.2.15";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"; };
|
||||
features = builtins.concatLists [
|
||||
[ "default" ]
|
||||
[ "libm" ]
|
||||
[ "std" ]
|
||||
];
|
||||
dependencies = {
|
||||
libm = rustPackages."registry+https://github.com/rust-lang/crates.io-index".libm."0.2.5" { inherit profileName; };
|
||||
|
@ -536,17 +535,6 @@ in
|
|||
];
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".ordered-float."0.2.3" = overridableMkRustCrate (profileName: rec {
|
||||
name = "ordered-float";
|
||||
version = "0.2.3";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "cc511538298611a79d5a4ddfbb75315b866d942ed26a00bdc3590795c68b7279"; };
|
||||
dependencies = {
|
||||
num_traits = rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.1.43" { inherit profileName; };
|
||||
unreachable = rustPackages."registry+https://github.com/rust-lang/crates.io-index".unreachable."0.1.1" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" = overridableMkRustCrate (profileName: rec {
|
||||
name = "pin-project-lite";
|
||||
version = "0.2.9";
|
||||
|
@ -672,9 +660,10 @@ in
|
|||
cached = rustPackages."registry+https://github.com/rust-lang/crates.io-index".cached."0.38.0" { inherit profileName; };
|
||||
${ if false then "console_error_panic_hook" else null } = rustPackages."registry+https://github.com/rust-lang/crates.io-index".console_error_panic_hook."0.1.7" { inherit profileName; };
|
||||
getrandom = rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.7" { inherit profileName; };
|
||||
kernel_density = rustPackages."registry+https://github.com/rust-lang/crates.io-index".kernel_density."0.0.1" { inherit profileName; };
|
||||
kernel_density = rustPackages."git+https://github.com/daithiocrualaoich/kernel_density".kernel_density."0.0.2" { inherit profileName; };
|
||||
rand = rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; };
|
||||
rand_distr = rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_distr."0.4.3" { inherit profileName; };
|
||||
serde = rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.143" { inherit profileName; };
|
||||
statistics = rustPackages."registry+https://github.com/rust-lang/crates.io-index".statistics."0.4.1" { inherit profileName; };
|
||||
wasm_bindgen = rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.82" { inherit profileName; };
|
||||
web_sys = rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.59" { inherit profileName; };
|
||||
|
@ -847,6 +836,13 @@ in
|
|||
src = fetchCratesIo { inherit name version; sha256 = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.11" = overridableMkRustCrate (profileName: rec {
|
||||
name = "ryu";
|
||||
version = "1.0.11";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".scoped-tls."1.0.0" = overridableMkRustCrate (profileName: rec {
|
||||
name = "scoped-tls";
|
||||
version = "1.0.0";
|
||||
|
@ -854,6 +850,60 @@ in
|
|||
src = fetchCratesIo { inherit name version; sha256 = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".serde."1.0.143" = overridableMkRustCrate (profileName: rec {
|
||||
name = "serde";
|
||||
version = "1.0.143";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553"; };
|
||||
features = builtins.concatLists [
|
||||
[ "default" ]
|
||||
[ "derive" ]
|
||||
[ "serde_derive" ]
|
||||
[ "std" ]
|
||||
];
|
||||
dependencies = {
|
||||
serde_derive = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.143" { profileName = "__noProfile"; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.143" = overridableMkRustCrate (profileName: rec {
|
||||
name = "serde_derive";
|
||||
version = "1.0.143";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391"; };
|
||||
features = builtins.concatLists [
|
||||
[ "default" ]
|
||||
];
|
||||
dependencies = {
|
||||
proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.43" { inherit profileName; };
|
||||
quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; };
|
||||
syn = rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.99" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.83" = overridableMkRustCrate (profileName: rec {
|
||||
name = "serde_json";
|
||||
version = "1.0.83";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"; };
|
||||
features = builtins.concatLists [
|
||||
[ "default" ]
|
||||
[ "std" ]
|
||||
];
|
||||
dependencies = {
|
||||
itoa = rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.3" { inherit profileName; };
|
||||
ryu = rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.11" { inherit profileName; };
|
||||
serde = rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.143" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".special-fun."0.1.6" = overridableMkRustCrate (profileName: rec {
|
||||
name = "special-fun";
|
||||
version = "0.1.6";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "5cde43d93062bf8040a0d30f83a8b40b2756af55ba048e007ee7c81e02276b81"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".statistics."0.4.1" = overridableMkRustCrate (profileName: rec {
|
||||
name = "statistics";
|
||||
version = "0.4.1";
|
||||
|
@ -971,23 +1021,6 @@ in
|
|||
];
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".unreachable."0.1.1" = overridableMkRustCrate (profileName: rec {
|
||||
name = "unreachable";
|
||||
version = "0.1.1";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91"; };
|
||||
dependencies = {
|
||||
void = rustPackages."registry+https://github.com/rust-lang/crates.io-index".void."1.0.2" { inherit profileName; };
|
||||
};
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".void."1.0.2" = overridableMkRustCrate (profileName: rec {
|
||||
name = "void";
|
||||
version = "1.0.2";
|
||||
registry = "registry+https://github.com/rust-lang/crates.io-index";
|
||||
src = fetchCratesIo { inherit name version; sha256 = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"; };
|
||||
});
|
||||
|
||||
"registry+https://github.com/rust-lang/crates.io-index".wasi."0.11.0+wasi-snapshot-preview1" = overridableMkRustCrate (profileName: rec {
|
||||
name = "wasi";
|
||||
version = "0.11.0+wasi-snapshot-preview1";
|
||||
|
@ -1006,11 +1039,16 @@ in
|
|||
src = fetchCratesIo { inherit name version; sha256 = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d"; };
|
||||
features = builtins.concatLists [
|
||||
[ "default" ]
|
||||
[ "serde" ]
|
||||
[ "serde-serialize" ]
|
||||
[ "serde_json" ]
|
||||
[ "spans" ]
|
||||
[ "std" ]
|
||||
];
|
||||
dependencies = {
|
||||
cfg_if = rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; };
|
||||
serde = rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.143" { inherit profileName; };
|
||||
serde_json = rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.83" { inherit profileName; };
|
||||
wasm_bindgen_macro = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro."0.2.82" { profileName = "__noProfile"; };
|
||||
};
|
||||
});
|
||||
|
|
|
@ -33,7 +33,8 @@ default = ["wee_alloc"]
|
|||
[dependencies]
|
||||
# The `wasm-bindgen` crate provides the bare minimum functionality needed
|
||||
# to interact with JavaScript.
|
||||
wasm-bindgen = "0.2.82"
|
||||
wasm-bindgen = { version = "0.2.82", features = ["serde-serialize"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
|
||||
# The `web-sys` crate allows you to interact with the various browser APIs,
|
||||
# like the DOM.
|
||||
|
@ -49,7 +50,7 @@ rand = "0.8.5"
|
|||
getrandom = { version = "0.2", features = ["js"] }
|
||||
rand_distr = "0.4.3"
|
||||
statistics = "0.4.1"
|
||||
kernel_density = "0.0.1"
|
||||
kernel_density = { git = "https://github.com/daithiocrualaoich/kernel_density" }
|
||||
cached = { version = "0.38.0", features = ["wasm"] }
|
||||
|
||||
# The `console_error_panic_hook` crate provides better debugging of panics by
|
||||
|
|
|
@ -34,7 +34,7 @@ pub fn iqr(x: &Vec<f64>) -> f64 {
|
|||
|
||||
/** Silverman, B. W. (1986) Density Estimation. London: Chapman and Hall.
|
||||
*/
|
||||
pub fn nrd0(x: Vec<f64>) -> f64 {
|
||||
pub fn nrd0(x: &Vec<f64>) -> f64 {
|
||||
let _hi = variance(&x).sqrt();
|
||||
let _lo = min([_hi, iqr(&x) / nrd0_lo_denominator()].to_vec());
|
||||
let _e = x[1].abs();
|
||||
|
@ -52,7 +52,7 @@ pub fn nrd0(x: Vec<f64>) -> f64 {
|
|||
}
|
||||
|
||||
/** Scott, D. W. (1992) Multivariate Density Estimation: Theory, Practice, and Visualization. Wiley. */
|
||||
pub fn nrd(x: Vec<f64>) -> f64 {
|
||||
pub fn nrd(x: &Vec<f64>) -> f64 {
|
||||
let h = iqr(&x) / nrd0_lo_denominator();
|
||||
return nrd_coef() * min([variance(&x).sqrt(), h].to_vec()) * lenf(&x).powf(nrd_fractional_power());
|
||||
}
|
||||
|
|
|
@ -4,4 +4,4 @@ pub mod monte_carlo;
|
|||
|
||||
pub use magic_numbers::bandwidth::Parameters as BandwidthParameters;
|
||||
pub use magic_numbers::environment::Parameters as EnvironmentParameters;
|
||||
pub use monte_carlo::sampleN;
|
||||
pub use monte_carlo::sample_n;
|
||||
|
|
|
@ -1,32 +1,36 @@
|
|||
extern crate kernel_density;
|
||||
|
||||
use wasm_bindgen::prelude::*;
|
||||
use rand::Rng;
|
||||
use rand::thread_rng;
|
||||
// use kernel_density::kde;
|
||||
// use crate::distribution::bandwidth::{nrd0, nrd};
|
||||
use kernel_density::kde;
|
||||
use serde::Serialize;
|
||||
use crate::distribution::bandwidth::{nrd0, nrd};
|
||||
|
||||
// TODO: impl a constructor such that xs.len() == ys.len().
|
||||
#[wasm_bindgen]
|
||||
#[derive(Serialize)]
|
||||
pub struct PdfCurve {
|
||||
xs: Vec<f64>,
|
||||
ys: Vec<f64>,
|
||||
}
|
||||
|
||||
// pub fn samples_to_continuous_pdf(samples: Vec<f64>, bandwidth: f64) -> PdfCurve {
|
||||
// let pdf = kde::normal(&samples, bandwidth);
|
||||
// return PdfCurve {
|
||||
// xs: samples,
|
||||
// ys: samples.map(|x| pdf.density(x)),
|
||||
// };
|
||||
// }
|
||||
pub fn samples_to_continuous_pdf(samples: Vec<f64>, bandwidth: f64) -> JsValue {
|
||||
let samples_to_map = samples.clone();
|
||||
let pdf = kde::normal(&samples, bandwidth);
|
||||
let pdf_curve = PdfCurve {
|
||||
xs: samples,
|
||||
ys: samples_to_map.iter().map(|x| pdf.density(*x)).collect(),
|
||||
};
|
||||
JsValue::from_serde::<PdfCurve>(&pdf_curve).unwrap()
|
||||
}
|
||||
|
||||
// pub fn getCurve(xs: Vec<f64>, n: u64) -> Vec<f64> {
|
||||
// let bandwidth = nrd(xs);
|
||||
// pub fn get_curve(samples: Vec<f64>, n: u64) -> Vec<f64> {
|
||||
// let bandwidth = nrd(&samples);
|
||||
// let curve = samples_to_continuous_pdf(samples, bandwidth);
|
||||
// return curve.ys;
|
||||
// }
|
||||
|
||||
|
||||
pub fn sampleN(xs: Vec<f32>, n: i32) -> Vec<f32> {
|
||||
pub fn sample_n(xs: Vec<f32>, n: i32) -> Vec<f32> {
|
||||
let m = xs.len();
|
||||
let mut output = vec![];
|
||||
for _ in 0..n {
|
||||
|
|
|
@ -17,5 +17,14 @@ pub fn sample_n(samples: Box<[f32]>, num_samples: i32) -> Vec<f32> {
|
|||
console_error_panic_hook::set_once();
|
||||
let samples_vec = Vec::from(samples);
|
||||
|
||||
monte_carlo::sampleN(samples_vec, num_samples)
|
||||
return monte_carlo::sample_n(samples_vec, num_samples);
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn samples_to_continuous_pdf(samples: Box<[f64]>, bandwidth: f64) -> JsValue {
|
||||
#[cfg(debug_assertions)]
|
||||
console_error_panic_hook::set_once();
|
||||
|
||||
let samples_vec = Vec::from(samples);
|
||||
monte_carlo::samples_to_continuous_pdf(samples_vec, bandwidth)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user