our project can solve the problem of finding LCA in the tree-liked GO plot (which absolutely isn't a tree struct) using the jumping method (or multiplication method)
we use the slim GO file goslim_generic.obo as a demonstration, you can download any GO file to analyze in the GO database :http://geneontology.org/
we should first preprocess the data using the instruction:
cat <file.obo> | grep -Po "(?<!_)id: GO:[0-9]{7}|is_a: GO:[0-9]{7}" | awk -f std.awk >slim_extract
you can change the processed file name, and you can change the file name in the source file main.c, make sure the macro definition N is suitable for the data size
before using makefile to compile and link the source files ,you should first creat some directories to better create the dynamic shared lib:
mkdir bin
mkdir shared
mkdir lib
add the environment variable of the include path using export C_INCLUDE_PATH=./include:${C_INCLUDE_PATH}
then you can call make
to build the lib file libgolca.so (make sure now you are in the src directory)
using make move
to move the .o file to shared/ , lib file to lib/ and binary file to bin/
before executing , make sure the dynamic lib path is added by using export LD_LIBRARY_PATH=./lib${LD_LIBRARY_PATH}
additionally,you can use python image.py slim_extract
to visualize the GO plot
see more details in manual.