https://github.com/ivis-at-bilkent/cytoscape.js-hyse
Hybrid Spring Embedder
Science Score: 21.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
✓Institutional organization owner
Organization ivis-at-bilkent has institutional domain (www.cs.bilkent.edu.tr) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.0%) to scientific vocabulary
Repository
Hybrid Spring Embedder
Basic Info
- Host: GitHub
- Owner: iVis-at-Bilkent
- License: mit
- Language: TypeScript
- Default Branch: main
- Size: 4.69 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 4
- Releases: 0
Metadata Files
README.md
cytoscape-hyse
Description
HySE (Hybrid Spring Embedder), is a layout algorithm designed for laying out a "mixed" graph with a "central" main directed part and "satellite" connected undirected parts (e.g., a hybrid UML diagram where the class inheritance hierarchy forms the directed part and other types of associations form the remaining undirected parts of the diagram). The algorithm uses a holistic spring embedder approach, where, as crossing minimization and final positioning of the hierarchy are polished, the undirected part is also beautified simultaneously.
Demo
Here is a demo of HySE layout algorithm:
To locally build the demo, follow these steps:
- Download the source codes or clone the repository with
git clone https://github.com/iVis-at-Bilkent/cytoscape.js-hyse.git - Go to the root folder
cd cytoscape.js-hyse - Run
npm installto install the dependencies - Run
npm run demo. By default it will open http://localhost:8080/demo/demo.html
API
When calling the layout, e.g. cy.layout({ name: 'hyse', ... }), the following options are supported:
```js var defaultOptions = {
// improves the quality of the graph using a fast cooling rate, taking less time isFastCooling: true, // Use random node positions for undirected nodes in undirected components when assigning initial positions randomizeInitialPositions: true, // Whether or not to animate the layout animate: true, // Duration of animation in ms, if enabled animationDuration: 1000, // Easing of animation, if enabled animationEasing: undefined, // Fit the viewport to the repositioned nodes fit: true, // Padding around layout padding: 30, // Whether to include labels in node dimensions. nodeDimensionsIncludeLabels: false, // Whether or not simple nodes (non-compound nodes) are of uniform dimensions uniformNodeDimensions: true,
// Node repulsion (non overlapping) multiplier nodeRepulsion: node => 55000, // Ideal edge (non nested) length idealEdgeLength: edge => 50, // Divisor to compute edge forces edgeElasticity: edge => 0.45, // Nesting factor (multiplier) to compute ideal edge length for nested edges nestingFactor: 0.1, // Maximum number of iterations to perform - this is a suggested value and might be adjusted by the algorithm as required numIter: 2500, // Apply repulsion forces on the graph to avoid node overlaps performPostProcessing: true, // If true, will not run the force directed part and will only display the initial positions assigned displayInitialPositions: false, // Distance between the ranks or layers of the directed part, takes into account the tallest node as well rankGap: 50, // Initially assigned distance between the nodes in ranks or layers of the directed part orderGap: 80, // Force threshold above which node pairs would be swapped in the directed part swapForceLimit: 15000, // Number of iterations after which the swapping function is called swapPeriod: 50, // Hold period for the nodes after being swapped // Nodes will not be swapped again if swapped recently in this number of iterations minPairSwapPeriod: 10,
/* layout animation parameters */
// Time (ms) between each iteration of the layout tickDelay: 100, // Number of iterations in each frame generated on screen ticksPerFrame: 5,
/* layout event callbacks */ ready: () => {}, // on layoutready stop: () => {} // on layoutstop }; ```
Dependencies
- Cytoscape.js ^3.2.0
- cose-base ^2.0.0
- dagre.js ^0.7.3
Usage instructions
After getting a build (use npm run build or npm run build-dev), you can import the generated files under "dist" folder. It will generate CommonJS, Universal Module Definition and ES bundles.
Team
Owner
- Name: i-Vis at Bilkent
- Login: iVis-at-Bilkent
- Kind: organization
- Website: http://www.cs.bilkent.edu.tr/~ivis/
- Twitter: iVisAtBilkent
- Repositories: 50
- Profile: https://github.com/iVis-at-Bilkent
i-Vis Research Lab at Bilkent University
GitHub Events
Total
- Watch event: 1
- Push event: 1
Last Year
- Watch event: 1
- Push event: 1
Dependencies
- 258 dependencies
- @rollup/plugin-commonjs ^20.0.0 development
- @rollup/plugin-node-resolve ^13.1.3 development
- @rollup/plugin-typescript ^8.3.1 development
- cypress ^9.5.1 development
- rollup ^2.70.0 development
- rollup-plugin-livereload ^2.0.5 development
- rollup-plugin-serve ^1.1.0 development
- rollup-plugin-terser ^7.0.2 development
- ts-node ^10.7.0 development
- tslib ^2.3.1 development
- typescript ^4.6.2 development
- cose-base github:iVis-at-Bilkent/cose-base#unstable
- graphlib ^2.1.8
- lodash 4.17.21
- actions/checkout v4 composite
- actions/configure-pages v4 composite
- actions/deploy-pages v4 composite
- actions/upload-pages-artifact v3 composite
