Deliver geospatial models direct to decision makers with SyncroSim › Forums › ST-Sim & State-and-Transition Simulation Models › Python Libraries?
Tagged: python
- This topic has 5 replies, 2 voices, and was last updated 8 years, 3 months ago by Taylor Mutch.
-
AuthorPosts
-
August 18, 2016 at 9:11 pm #4003Taylor MutchParticipant
Hi All,
Lots of great progress working with ST-Sim linux tools. Has there been any work towards exposing that functionality as either Python or C#? While working with the command line is great for on-the-fly reports and model runs, it would be nice to have some ability to programmatically do the same.
If not, I could possibly work out wrapping the functionality in Python or some language. Just wanted to see if there has been any work in this area before forging forward.
Cheers,
Taylor
August 19, 2016 at 3:45 pm #4005colin-danielKeymasterHi Taylor – good question about working with Python. We have in fact begun developing a pair of packages for interacting with ST-Sim – our plan is to develop a package for each of Python and R. Our initial focus will be on post-processing output, but we will eventually be adding a full suite of functionality for setting up and running models also. We are hoping to have a first version of at least one of these packages by the end of the calendar year – which language will come first is still a matter of debate!
For now my suggestion would be for you to wrap your command-line calls in whatever language you prefer – Python or R would be my suggestion, as then you might be able to take advantage of the packages once they come online. The more people we have working in these 2 languages, the better! We have others doing the same – both in Python and R – and it is these initial scripts that are forming the basis for our packages. If you are interested in sharing your scripts at some point – or even what functionality you are interested in – then it could possibly help us shape the direction and scope of the initial package – we are always interested in learning what features and functionality are important to others.
Regards, Colin.
August 19, 2016 at 4:31 pm #4006Taylor MutchParticipantHi Colin,
That is excellent news! By nature of my question I am personally leaning Python (though R is also known to me), and I have begun to do the command-line calls using Python 3.5 and the subprocess module.
One thing that we are really finding useful is the ability to set the initial conditions based on user input from our web interface. For example, we are allowing the user to adjust the percent cover of a given state class for a vegetation type, and we are planning to let the user have a scaler/slider that adjusts existing probabilistic transitions (e.x. fire, grazing) and run the model based on these new values to gather differences between different model runs. Currently this involves writing out to a .csv and then importing that as a sheet (e.x. importing into
--import --sheet=STSim_InitialConditionsNonSpatialDistribution --file=path/to/myfile.csv --sid=123
). While this isn’t an awful way to go at it by no means, it would be nice to have some sort of interface to say 1) grab each row, 2) list those values, and 3) update each value in that row at runtime. This could be treated as a python object that gets updated by the program and then applied back to the library, does some sanity checking to make sure that the vegetation and stateclass values are valid from the project definitions, and then executes the transaction change.Extracting out the transitional and deterministic pathways as a connected graph data structure would also be useful, since the visualization we are developing is attempting to illustrate the change from one state class to another within the vegetation type, since we can use the quantity transitioned specified in the
transition-stateclass-summary
report to symbolize the change from one to another along a given transition pathway (e.x. showing fire when a portion of the landscape transitions due to fire).These are just two things that come to mind directly.
Thoughts on either of these?
Cheers,
TaylorAugust 20, 2016 at 7:55 pm #4007Taylor MutchParticipantOn such a note, I have thrown together what I have into a simple, one file module, available at https://github.com/TaylorMutch/stsimpy.
August 21, 2016 at 12:03 pm #4008colin-danielKeymasterVery cool – nice start on the module!
Our plan with the packages is to simplify the interaction with ST-Sim model inputs so as to avoid intermediate CSV files – pretty much as you suggest for the initial conditions. Same would be true for outputs. As for the connected graph, that’s not something we’ve ever come across before – perhaps at some point you could show us an example of how you use this? Colin
August 21, 2016 at 2:43 pm #4009Taylor MutchParticipantIt would be awesome if we could avoid intermediate CSV files. I have planned for the time being to work around the file creation by having a temp file to export out to, read that file into a csv.DictReader object, do the changes in memory, write on top of the file with csv.DictWriter, import back in to the same sheet and then cleanup/remove the file. The trick will be doing that for a given set of users, and I haven’t been tried having SyncroSim run with multiple instances/jobs on Linux yet, but that is something I plan on trying to test out.
I also updated the module with some changes (mainly internalizing the static functions I had into the classes by simplifying the code).
-
AuthorPosts
- You must be logged in to reply to this topic.