occam-ra / occam

OCCAM Reconstructability Analysis Tools
Other
20 stars 14 forks source link

Develop Python layer and publish package (capstone project) #43

Open gdcutting opened 5 years ago

gdcutting commented 5 years ago

The consensus seems to be that the capstone team will be focusing on building out the python layer (taking advantage of the existing python bindings to permit more RA functionality to be accessed from python instead of c++, and perhaps adding some bindings if necessary). This will enable us to provide a functional python package that will hopefully increase the accessibility of OCCAM (we want people to be able to install with pip and maybe conda). This is a big issue that might get split up once we get more active on this.

gdcutting commented 5 years ago

I'm putting together, as part of the upgrade recommendations, a couple of small examples of things that we can do in python instead of c++ using the existing bindings (which are fairly well-developed but not thoroughly implemented). We want people to be able to, say, get a list of all the models from a Report object in python (whereas most of this currently takes place in c++). One example I did today was to just print a variable list from the VBMManager object on the python side (existing OCCAM implementation gives variable reporting directly from the C++ objects). This is a small example but good proof of concept that there's a lot of existing bindings that aren't currently well-utilized. Will write these up alongside structural overview.

venkatachalapathy commented 5 years ago

I was reading OCCAM Structural Upgrade - Design Notes documentation and had a few questions.

So, is the plan for the capstone team to retain the structure of OCCAM application diagram?

The structure was good when OCCAM was a black box. But when we are repackaging it into a Python or R package, a design that is more naturally reflective of the way an example is worked out is better.

Is the argument here to retain the structure of C++ part fixed while providing Python wrappers that mimic the step by step process involved in carrying out a worked out example?

For example, IPF doesn't get an explicit shout-out either in the above documentation or the C++ code but we all know that is fundamental to the way textbook examples (for example, in Krippendorf) are calculated.

Could some of you clarify this for me?