Skip to content

davidcheungo123/outTree_ec_minimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

dd6c8c0 · Feb 29, 2024

History

52 Commits
Jul 20, 2022
Jul 7, 2022
Jul 19, 2022
Jul 20, 2022
Feb 29, 2024
Feb 29, 2024
Jul 8, 2022
Jul 19, 2022
Jul 12, 2022
Jul 19, 2022
Jul 12, 2022
Jul 12, 2022
Jul 20, 2022
Jun 30, 2022
Jun 30, 2022
Jul 19, 2022
Aug 22, 2022
Aug 22, 2022
Aug 22, 2022
Jul 19, 2022
Jul 19, 2022
Jul 19, 2022
Jul 12, 2022
Oct 21, 2021
Jul 12, 2022
Jul 7, 2022
Oct 25, 2021
Aug 22, 2022

Repository files navigation

outTree_ec_minimization

This algo is for edge crossings minimization especially for out-trees (one root only), it combines d3.js and customized algo which uses brute force to search the optimal positions when it also preserves length information as much as possible.

running_algo

LHS: original; RHS: modified

1. Install packages required:

a. npm install

b. pip install networkx, pygraphviz, matplotlib

c. pip install Cython

2. Data structure of input file (json):

{"nodes" : [<nodeObject> , <nodeObject>, ...], "links" : [<linkObject> , <linkObject>, ...]}

a. Node Object:

{id : <str, int, ...> , num : <the size of the node>, x : <float>, y : <float>}

b. Link Object:

{id : <nodeObjectID_1>_<nodeObjectID_2>, source : <nodeObject_1>, target : <nodeObject_2>, len : <float>}

3. Data structure of output file (json): as same as (1) mentioned

4. optimization_improved.py:

It calls algo_improved.c extension to run the algo, if you want to modify some codes to cater for your needs, go to algo_improved.pyx. To save the changes, input following command in the terminal:

python setup_improved.py build_ext --inplace

5. visualization.py:

you can customize if you want to have node labels, edge labels, radius information and scalar factor of raidus by modifying the variables WITH_NODE_LABELS, WITH_EDGE_LABELS, WITH_NODE_NUM_DISPLAY and NODE_NUM_SCALAR repectively. Furthermore, you should change the file path if the file path finished in step2 or step3 changes.

6. Tracking System:

In main_{2,3}steps.js, we can add nodes that we would like to track to the array tracking, the tracking algo will be running during execution time including storing coordindate information into a file which is by default placed at ./tracking/trackingResults.json. Afterwards, we can execute tracking.py to see more information about nodes defined in the tracking array.

7. Nextflow:

All scripts with nf.{js,py} at the end are for automation flow, which are added argument functionality.

a. | Generate coordinates by d3 simulation | preprocessing_nf.js |

b. | Optimize coordinates by algorithm | optimization_improved_nf.py |

c. | Fine Tuning by d3 simulation | fineTuning_nf.js |

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published