crcox / lens

The Light Efficient Network Simulator (LENS) was originally written by Douglas Rhode, copyright 1998-2004.
3 stars 2 forks source link

Remove Tcl/Tk dependencies #7

Open christopherjgreen opened 8 years ago

christopherjgreen commented 8 years ago

We need to remove the Tcl/Tk dependencies. In the words of Chris, "It's purely for the sake of making the software right/better/shareable/easier to install/easier to maintain. Which are all good reasons I think...".

  1. Analyze canvRect.c and understand what it is actually accomplishing
  2. Summarize that file in words as best as possible.
  3. Get acquainted the the Tk API and try to build something using the Tk API that reproduces some or all of the original functionality.
christopherjgreen commented 8 years ago

Chris,

I am starting to refactor this code, but I was wondering if you had any documentation on building this code? I remember you had to build it on SL6, but I also remember we had to fiddle with the makefile. Is this still true?

Also, once i have this built, I will need an example to verify the code is working. I couldn't imagine you have an exhaustive test, but maybe something small to run.

CJG

crcox commented 8 years ago

Thanks so much for working on this! As usual, I've had to refocus my attention so I haven't touched it in a while.

I dislike my Makefile(s) and I would love to refactor them. But, they appear to work. And not just on SL6 anymore. If you have problems building, let me know, but otherwise I tentatively expect you to be able to just run:

Compile Tcl

cd "TclTk/tcl${TCLVERSION}/unix" ./configure --enable-shared $TCLPREFIXSTATEMENT make make install

Compile Tk

cd "../../tk${TCLVERSION}/unix" ./configure --enable-shared --with-tcl=../../tcl${TCLVERSION}/unix/ $TCLPREFIXSTATEMENT make make install

Compile Lens

cd ${TOP} make Assuming that you don't have Tcl/Tk libraries already. I have been building against Tcl/Tk 8.6.4. See my compile.sh script---it is my awkward attempt to ease the build process.

As for tests: there is a directory called Examples, and in that directory are a bunch of dummy networks that, if everything is working, you should be able to load and work with. The .in files are the ones that actually contain instructions for constructing and running the network. The .ex files are auxiliary files that contain the "examples" that the network is trained and tested on. So, if you ran:

lens ${LENSHOME}/Examples/digits.in

If all is well, it should load a Tk gui and the "digits" network along with the examples in digits.ex (you should not have to manually load digits.ex, it should be done as part of the digits.in script). There are a couple buttons that you can push to open up different plots, and then a big button at the bottom for training. There are also buttons for saving the state of the network to a file, and other buttons for loading the state back in.

I can work on writing up a more legitimate test package, but for now I have just been loading and playing with examples...

Hope this is enough for now. Thanks so much for working on it.

Best, Chris

On Mon, Jan 18, 2016 at 12:38 PM, christopherjgreen < notifications@github.com> wrote:

Chris,

I am starting to refactor this code, but I was wondering if you had any documentation on building this code? I remember you had to build it on SL6, but I also remember we had to fiddle with the makefile. Is this still true?

Also, once i have this built, I will need an example to verify the code is working. I couldn't imagine you have an exhaustive test, but maybe something small to run.

CJG

— Reply to this email directly or view it on GitHub https://github.com/crcox/lens/issues/7#issuecomment-172601719.