https://github.com/ivis-at-bilkent/cytoscape.js-hyse

Hybrid Spring Embedder

https://github.com/ivis-at-bilkent/cytoscape.js-hyse

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
Last synced: 5 months ago · JSON representation

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
Created over 3 years ago · Last pushed about 1 year ago
Metadata Files
Readme License

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.

imageezgif com-crop

Demo

Here is a demo of HySE layout algorithm:

To locally build the demo, follow these steps:

  1. Download the source codes or clone the repository with git clone https://github.com/iVis-at-Bilkent/cytoscape.js-hyse.git
  2. Go to the root folder cd cytoscape.js-hyse
  3. Run npm install to install the dependencies
  4. 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

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

package-lock.json npm
  • 258 dependencies
package.json npm
  • @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
.github/workflows/static.yml actions
  • actions/checkout v4 composite
  • actions/configure-pages v4 composite
  • actions/deploy-pages v4 composite
  • actions/upload-pages-artifact v3 composite