HTTPS SSH
CytoGEDEVO source code
Contact: malek {ät} tugraz {döt} at

If you use this with an academic background, please cite:

    Malek M, Ibragimov R, Albrecht M, Baumbach J (2015) CytoGEDEVO - Global alignment of biological networks with Cytoscape. Bioinformatics. 2015 (in press).

    http://bioinformatics.oxfordjournals.org/content/early/2016/01/14/bioinformatics.btv732


License: GPLv3
(because Orca uses GPLv3 and the viral nature of the GPL poisons everything else.
If you want to use some of the code in your own thing, ask first, pretty sure I'll be fine with it.)


Build instructions C++ part:

    Requirements:
        - CMake
          (alternatively, a Visual Studio 2008 project file is included for convenience)
        - A working C++ compiler (MSVC, Clang, gcc, whatever)
        - (Optional, for command line tools) Either C++11 threads support, otherwise SDL 2 or SDL 1.2
        - (Optional, for Java libs) JDK with JNI headers.

    cd cpp
    mkdir build
    cd build
    cmake ..  (or ccmake .. or cmake-gui .. or whatever; you might have to configure a few things)
    make

    Note that you have to explicitly enable the JNI libs if you want to build the full Cytoscape app.
    By default, only the commandline programs are built!

    If your compiler supports C++11 it should build out of the box, otherwise you need SDL1.2 or SDL2 for multithreading (see http://libsdl.org/).
    Disabling multithreading is not recommended for general use since it will be rather slow then.
    The java libs use the JVM for multithreading and do not depend on the above.

    Put the resulting dynamic libs into java/add_to_jar/native/ after reading the info.txt file there.
    Repeat with dynamic libraries built for every platform you want the final JAR file to support.
    Note that you will need different builds for 32 and 64 bit support, where 64 bits is generally recommended.

Build instructions Java part:

    Requirements:
        - JDK.
          (Version 6 was used for compatibility. Cytoscape uses Java 8 exclusively now, so you might as well go with this.
          If you already have JDK 7 or 8 installed, just use that.)
        - NO other Java libs, NO maven, NO eclipse.
        - IntelliJ IDEA (or some IDE than can import its project files if you prefer that.)

    1) One does not simply use maven. It stinks. Do not use.
    2) Open java/GedevoApp with IntelliJ IDEA (see https://www.jetbrains.com/)
    3) Building should produce the final JAR file at:
       java/GedevoApp/out/artifacts/GedevoApp_jar/CytoGedevo.jar, with dynamic libs built in the previous step.
    4) If something fails on the way, fix it or contact me.


java/GedevoStubApp is not required and was used during development.
Feel free to adapt it to use it for anything you like.
You can assume WTFPL or MIT or public domain or any other license you choose, if you have to. I don't care.

Background:

Cytoscape does not really support code hot-reloading, and debugging code running inside of Cytoscape is a nightmare,
especially when trying to debug native code running in a dynamic library invoked by the JVM. Ugh.
All development was done on a rather old notebook running windows XP that took one or two solid minutes
to start Cytoscape, and another minute to load a network. Segfault, rinse, repeat.
This little stub is a shim between Cytoscape and the actual app that can cleanly unload the old code,
reload compiled .class files on disk on the fly, without the need to restart Cytoscape,
even for reloading dynamic libraries (apart from the occasional crash, it usually works!).