Giter VIP home page Giter VIP logo

amirmasoudabdol / frodo Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 822 KB

A set of handy scripts and tools that helps you create, manage, and run your SAM project. Frodo supports `SLURM` workload manager and can parallelize your simulation over multiple nodes.

Home Page: https://sam.amirmasoudabdol.name/frodo/frodo.html

License: Apache License 2.0

Shell 5.26% Makefile 2.87% Python 72.15% R 19.73%
monte-carlo-simulation simulation-framework slurm-workload-manager

frodo's Introduction

frodo's People

Contributors

amirmasoudabdol avatar

Watchers

 avatar  avatar

frodo's Issues

Fix jsonnet decimal point issue

jsonnet add unnecessary decimal point to doubles and I don't know how to work around it. One way is to cast them as string and let SAMpp cast them back to its preferable type. But this is rather tedious.

Issue with db column names

I see that if I indicate a hacking strategies, I get an error like this when I want to write things to the database.

sqlite3.OperationalError: table sim has no column named p_hacking_methods_0_0_id

This is because flatten_json assign index to an array.

Unify the config, and output file names

I think I should include all the parameters in the file name then I don’t have to change it all the time, also probably I can just include them in the parameters pool as well.

Rethink Stopos Integration

The problem here is that my list is space delimitated and that's not a good thing, I think it'd be nice if I can just save the entire input script to the jsonnet instead of decomposing it and feeding it after. This will make it much easier to remove or add one parameter afterward.

Advantages

  • I don't need to introduce restriction in the grid file, like what I have in the nobs, and no space rule.
  • I wouldn't need the prep_json_file.sh anymore
  • It's much easier to add or remove parameters

Archive command of ProjectMakefile

I think the ProjectMakefile should have an archive as well and what it should do is to save the data into $(project)_analysis folder.

Modulate the JSONnet files

I think it'd be nicer if I can modulate each files to pieces like ResearcherParameters.jsonnet, JournalParamters.json, etc... This makes the process of creating a new config file much easier.

I think some of the parameters like hacking methods can also be modulated. For instance, if I have them into a module and I can read them one by one by their own parameters, then constructing a JSON is much easier.

*_meta.csv identifiers

I can add the simulation parameters to the Submission record and therefore add them to simulation files but then since meta files are aggregate of one study, then I cannot easily do this. I can see what are the parameters than I’m reading are and use those but I still need a better way of handling this.

For now, I can do it like this and see what’d I need later but I’m not happy with the file names and they way of handling parameters.

Make SAM via the OO Makefile

I think it’s a good idea to have an option to make a release ready SAM using the present Makefile in the SAMoo folder. This way, I can always make sure that I have the latest and best version, if I want to.

See here

Save the output to a SQLite database

I think it’d be nice if I save all the output from a simulation to a SQLite database at the end of the run, both meta and sim data. I stumbled upon this tool called csvkit which I think can do that. TERMSQL was another tools designed for this purpose.

Point the script to $PROJECT/build

I'm making all addresses fix and also would like to archive everything at the end of a run, including the executable. So, I think, I should call SAM from $PROJECT/build/ and the archive the build directory as well.

Test for the correlated samples

I think there was an error when I was testing the general parameters, and the case with correlation somehow broke the SAMpp.

Load balance the parameters pool

I think I need to change the order of loops in such a way that each group has relatively similar running time. Probably maxpubs should be the top level category.

_meta, _sim & _config integration

This is an old problem. I'm still thinking how to include all the parameters in such a way that at the end I can query a CSV or SQLite file and have everything.

Add a “db” folder

I can use csvkit to import everything into the SQlite apparently. I can also save everything into a dB folder. Cleanup the CSVs and move on to the next simulation.

Parameters generation is still not robust

This is quite challenging. I would like to keep a high level representation of the data, and also guarantee the flexibility. The performance isn't an issue here, I just need to be flexible. JSONnet is still nice because it takes care of loops and recursion and what not. But, it's quite high maintenance at this point where I'm changing the API so much. My Python solution is nicer to look at but it's not very elegant either. I'm not sure how to find the balance here.

The other thing is, I like to have this options. It's not just a topping, it helps a lot with the parallelization when I move to Lisa for instance.

Copy and paste output files one-by-one

I think the fact that I'm copy-pasting everything rather aggressively, e.g. entire folder, it's very likely that I actually overwrite some of the files during the operation.

Create the table first then add everything

One way to get around the issue of none equal numbers of columns is to first read all the headers from the CSV files, create the biggest table possible and then delegate the work to the to_sql. In this way, I'd not face an issue.

This is still not the best way but it'll provide a way to add data to a table.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.