rster2002 / ed-journals

Work in progress journal parsing and utilities for Elite Dangerous written in Rust.
https://crates.io/crates/ed-journals
MIT License
2 stars 2 forks source link

Improve exobiology spawn predictions #58

Closed Somfic closed 3 weeks ago

Somfic commented 1 month ago

This PR closes #57.

Results:

Species Test cases False negatives False positives
Aleoida Arcus 35 βœ… 🚨 57.14%
Aleoida Coronamus 56 βœ… 🚨 73.21%
Aleoida Spica 17 🚨 100% βœ…
Aleoida Gravis 12 βœ… 🚨 83.33%
Bacterium Aurasus 345 βœ… 🚨 12.17%
Bacterium Scopulum 6 βœ… 🚨 83.33%
Bacterium Acies 107 βœ… 🚨 12.15%
Bacterium Vesicula 208 βœ… 🚨 7.69%
Bacterium Alcyoneum 170 βœ… 🚨 16.47%
Bacterium Tela 78 🚨 6.41% 🚨 57.69%
Bacterium Omentum 8 βœ… 🚨 75%
Bacterium Cerbrus 229 βœ… 🚨 25.33%
Bacterium Verrata 2 βœ… 🚨 50%
Roseum Brain Tree 6 βœ… 🚨 100%
Gypseeum Brain Tree 6 βœ… 🚨 100%
Ostrinum Brain Tree 6 βœ… 🚨 100%
Viride Brain Tree 6 βœ… 🚨 100%
Lividum Brain Tree 6 βœ… 🚨 100%
Aureum Brain Tree 6 βœ… 🚨 100%
Puniceum Brain Tree 6 βœ… 🚨 100%
Lindigoticum Brain Tree 6 βœ… 🚨 100%
Cactoida Cortexum 68 βœ… 🚨 100%
Cactoida Lapis 148 βœ… 🚨 99.32%
Cactoida Vermis 4 βœ… 🚨 75%
Cactoida Pullulanta 68 βœ… 🚨 92.65%
Cactoida Peperatis 148 βœ… 🚨 66.89%
Clypeus Lacrimam 16 βœ… 🚨 68.75%
Clypeus Margaritus 16 βœ… 🚨 62.5%
Clypeus Speculumi 3 🚨 66.67% 🚨 33.33%
Concha Renibus 72 βœ… 🚨 70.83%
Concha Aureolas 148 βœ… 🚨 92.57%
Concha Labiata 257 βœ… 🚨 80.16%
Concha Biconcavis 15 βœ… 🚨 100%
Crystaline Shards 6 🚨 100% βœ…
Fonticulua Campestris 175 βœ… 🚨 34.29%
Fonticulua Lapida 15 βœ… 🚨 26.67%
Fonticulua Digitos 88 βœ… 🚨 61.36%
Frutexa Flabellum 148 βœ… 🚨 97.97%
Frutexa Acus 269 βœ… 🚨 96.65%
Frutexa Metallicum 126 βœ… 🚨 61.9%
Frutexa Flammasis 148 βœ… 🚨 70.27%
Frutexa Fera 269 βœ… 🚨 100%
Frutexa Sponsae 4 βœ… 🚨 100%
Frutexa Collum 9 βœ… 🚨 100%
Fumerola Carbosis 2 🚨 100% βœ…
Fumerola Nitris 2 🚨 100% βœ…
Fumerola Aquatis 1 🚨 100% βœ…
Fungoida Setisis 239 βœ… 🚨 50.21%
Fungoida Stabitis 72 βœ… 🚨 98.61%
Fungoida Bullarum 182 βœ… 🚨 91.76%
Fungoida Gelata 72 βœ… 🚨 44.44%
Osseus Fractus 68 βœ… 🚨 61.76%
Osseus Discus 4 βœ… 🚨 50%
Osseus Spiralis 148 βœ… 🚨 52.7%
Osseus Pumice 281 βœ… 🚨 92.17%
Osseus Cornibus 68 βœ… 🚨 97.06%
Osseus Pellebantus 68 βœ… 🚨 95.59%
Recepta Umbrux 9 βœ… 🚨 44.44%
Recepta Deltahedronix 9 βœ… 🚨 88.89%
Recepta Conditivus 8 βœ… 🚨 62.5%
Albidum Sinuous Tubers 6 βœ… 🚨 100%
Caeruleum Sinuous Tubers 6 βœ… 🚨 100%
Lindigoticum Sinuous Tubers 6 βœ… 🚨 100%
Stratum Excutitus 232 βœ… 🚨 100%
Stratum Paleas 380 βœ… 🚨 82.11%
Stratum Laminamus 106 βœ… 🚨 100%
Stratum Araneamus 205 βœ… 🚨 97.07%
Stratum Limaxus 232 βœ… 🚨 84.48%
Stratum Cucumisis 243 βœ… 🚨 99.59%
Stratum Tectonicas 363 βœ… 🚨 52.62%
Stratum Frigus 243 βœ… 🚨 98.77%
Tubus Conifer 138 βœ… 🚨 94.93%
Tubus Sororibus 20 βœ… 🚨 60%
Tubus Cavas 140 βœ… 🚨 50%
Tubus Rosarium 29 βœ… 🚨 68.97%
Tubus Compagibus 140 βœ… 🚨 97.86%
Tussock Pennata 17 βœ… 🚨 94.12%
Tussock Ventusa 27 βœ… 🚨 51.85%
Tussock Ignis 71 βœ… 🚨 92.96%
Tussock Cultro 148 βœ… 🚨 97.97%
Tussock Catena 148 βœ… 🚨 23.65%
Tussock Pennatis 269 βœ… 🚨 100%
Tussock Serrati 51 βœ… 🚨 90.2%
Tussock Albata 35 βœ… 🚨 88.57%
Tussock Propagito 269 βœ… 🚨 25.28%
Tussock Divisa 148 βœ… 🚨 93.92%
Tussock Caputus 56 βœ… 🚨 89.29%
Tussock Triticum 12 βœ… 🚨 91.67%
Tussock Stigmasis 9 βœ… 🚨 88.89%
Tussock Capillum 266 βœ… 🚨 95.86%
Somfic commented 1 month ago

I'm finding that when working with the codebase in this repository the default cargo formatter modifies a lot of code, which makes staging small changes difficult. Are you following a specific style guide I can opt in to? I'd like to be on one line with how we format the code

Somfic commented 1 month ago

Baseline of this PR:

Species Test cases False negatives False positives
Aleoida Arcus 35 βœ… 🚨 57.14%
Aleoida Coronamus 56 βœ… 🚨 73.21%
Aleoida Spica 148 βœ… 🚨 88.51%
Aleoida Laminiae 148 βœ… 🚨 100%
Aleoida Gravis 12 βœ… 🚨 83.33%
Bacterium Aurasus 345 βœ… 🚨 12.17%
Bacterium Scopulum 6 βœ… 🚨 83.33%
Bacterium Acies 107 βœ… 🚨 12.15%
Bacterium Vesicula 208 βœ… 🚨 7.69%
Bacterium Alcyoneum 170 βœ… 🚨 16.47%
Bacterium Tela 33 🚨 100% βœ…
Bacterium Omentum 8 βœ… 🚨 75%
Bacterium Cerbrus 229 βœ… 🚨 25.33%
Bacterium Verrata 2 βœ… 🚨 50%
Roseum Brain Tree 6 βœ… 🚨 100%
Gypseeum Brain Tree 6 βœ… 🚨 100%
Ostrinum Brain Tree 6 βœ… 🚨 100%
Viride Brain Tree 6 βœ… 🚨 100%
Lividum Brain Tree 6 βœ… 🚨 100%
Aureum Brain Tree 6 βœ… 🚨 100%
Puniceum Brain Tree 6 βœ… 🚨 100%
Lindigoticum Brain Tree 6 βœ… 🚨 100%
Cactoida Cortexum 68 βœ… 🚨 100%
Cactoida Lapis 148 βœ… 🚨 99.32%
Cactoida Vermis 4 βœ… 🚨 75%
Cactoida Pullulanta 68 βœ… 🚨 92.65%
Cactoida Peperatis 148 βœ… 🚨 66.89%
Clypeus Lacrimam 16 βœ… 🚨 68.75%
Clypeus Margaritus 16 βœ… 🚨 62.5%
Clypeus Speculumi 3 🚨 66.67% 🚨 33.33%
Concha Renibus 72 βœ… 🚨 70.83%
Concha Aureolas 148 βœ… 🚨 92.57%
Concha Labiata 257 βœ… 🚨 80.16%
Concha Biconcavis 15 βœ… 🚨 100%
Crystaline Shards 6 🚨 100% βœ…
Fonticulua Campestris 175 βœ… 🚨 34.29%
Fonticulua Lapida 15 βœ… 🚨 26.67%
Fonticulua Digitos 88 βœ… 🚨 61.36%
Frutexa Flabellum 148 βœ… 🚨 97.97%
Frutexa Acus 269 βœ… 🚨 96.65%
Frutexa Metallicum 126 βœ… 🚨 61.9%
Frutexa Flammasis 148 βœ… 🚨 70.27%
Frutexa Fera 269 βœ… 🚨 100%
Frutexa Sponsae 4 βœ… 🚨 100%
Frutexa Collum 9 βœ… 🚨 100%
Fumerola Carbosis 2 🚨 100% βœ…
Fumerola Nitris 2 🚨 100% βœ…
Fumerola Aquatis 1 🚨 100% βœ…
Fungoida Setisis 239 βœ… 🚨 50.21%
Fungoida Stabitis 72 βœ… 🚨 98.61%
Fungoida Bullarum 182 βœ… 🚨 91.76%
Fungoida Gelata 72 βœ… 🚨 44.44%
Osseus Fractus 68 βœ… 🚨 61.76%
Osseus Discus 4 βœ… 🚨 50%
Osseus Spiralis 148 βœ… 🚨 52.7%
Osseus Pumice 281 βœ… 🚨 92.17%
Osseus Cornibus 68 βœ… 🚨 97.06%
Osseus Pellebantus 68 βœ… 🚨 95.59%
Recepta Umbrux 9 βœ… 🚨 44.44%
Recepta Deltahedronix 9 βœ… 🚨 88.89%
Recepta Conditivus 8 βœ… 🚨 62.5%
Albidum Sinuous Tubers 6 βœ… 🚨 100%
Caeruleum Sinuous Tubers 6 βœ… 🚨 100%
Lindigoticum Sinuous Tubers 6 βœ… 🚨 100%
Stratum Excutitus 232 βœ… 🚨 100%
Stratum Paleas 380 βœ… 🚨 82.11%
Stratum Laminamus 106 βœ… 🚨 100%
Stratum Araneamus 205 βœ… 🚨 97.07%
Stratum Limaxus 232 βœ… 🚨 84.48%
Stratum Cucumisis 243 βœ… 🚨 99.59%
Stratum Tectonicas 363 βœ… 🚨 52.62%
Stratum Frigus 243 βœ… 🚨 98.77%
Tubus Conifer 138 βœ… 🚨 94.93%
Tubus Sororibus 20 βœ… 🚨 60%
Tubus Cavas 140 βœ… 🚨 50%
Tubus Rosarium 29 βœ… 🚨 68.97%
Tubus Compagibus 140 βœ… 🚨 97.86%
Tussock Pennata 17 βœ… 🚨 94.12%
Tussock Ventusa 27 βœ… 🚨 51.85%
Tussock Ignis 71 βœ… 🚨 92.96%
Tussock Cultro 148 βœ… 🚨 97.97%
Tussock Catena 148 βœ… 🚨 23.65%
Tussock Pennatis 269 βœ… 🚨 100%
Tussock Serrati 51 βœ… 🚨 90.2%
Tussock Albata 35 βœ… 🚨 88.57%
Tussock Propagito 269 βœ… 🚨 25.28%
Tussock Divisa 148 βœ… 🚨 93.92%
Tussock Caputus 56 βœ… 🚨 89.29%
Tussock Triticum 12 βœ… 🚨 91.67%
Tussock Stigmasis 9 βœ… 🚨 88.89%
Tussock Capillum 266 βœ… 🚨 95.86%

Not really sure yet what number we’re starving towards for the false positives, as even when all spawn conditions match; a species is not guaranteed to spawn in-game (right?).

rster2002 commented 1 month ago

I'm finding that when working with the codebase in this repository the default cargo formatter modifies a lot of code, which makes staging small changes difficult. Are you following a specific style guide I can opt in to? I'd like to be on one line with how we format the code

I usually just run cargo fmt and let it format it for me. I usually run it when finalizing things for a new release, so you don't really have to worry about it too much as long as PRs don't take multiple releases to merge.

rster2002 commented 1 month ago

Looking through the https://github.com/Silarn/EDMC-BioScan rulesets, it also specifies region as a spawn condition. Looking at heatmaps here https://edastro.com/mapcharts/codex.html#codex it might also be something that could be tested. For example looking at this one:

It seems that Sinuous tubers spawn in specific regions or near nebula (at least that is what I guess are those spots in the other regions)

Somfic commented 1 month ago

That kinda sucks, as the region is only able to be extracted from a CodexEntry event, which only triggers after scanning a exobiological signal.

rster2002 commented 1 month ago

@klightspeed has come to the rescue! https://github.com/klightspeed/EliteDangerousRegionMap even has Rust files!

rster2002 commented 1 month ago

Can probably add this to the project in the Region enum, something like Region::from_pos(pos: [f32; 3]) -> Region

rster2002 commented 3 weeks ago

@Somfic can I take this over or do you still want to work on this?

Somfic commented 3 weeks ago

Hi, sorry lately I have been busy with finishing up uni and other projects, so feel free to take over this PR. The biggest change was the introduction of a few macros to make defining spawn conditions a bit smoother. Was working on updating the spawn conditions for each species, the commit messages should indicate which ones I finished.

rster2002 commented 3 weeks ago

No problem. IRL things go first after all. Thanks for the work you've already put in!

rster2002 commented 3 weeks ago

Continued in #70