• Stars
    star
    309
  • Rank 130,170 (Top 3 %)
  • Language
    HTML
  • License
    Creative Commons ...
  • Created about 7 years ago
  • Updated 18 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Collection of modular Cytoscape tutorials for online presentation using reveal.js

Main Page

Visit tutorials.cytoscape.org for a curated set of user tutorials.

How to Make and Present Cytoscape Tutorials

This repo contains a collection of training modules for Cytoscape that can be used to compose workshop presentations. The repo also includes a clone of the reveal.js code that enables the presentation mode for these modules and workshops.

Presentations, Protocols and Modules

Check out the current list of training materials.

Building upon the powerful framework of reveal.js, we have developed a few custom features and styles tailored for use in Cytoscape training materials. In addition to the contents below, you can learn more about using reveal.js in general from the reveal-readme.

Table of Contents

Presenting

Browse the available training materials already prepared:

  • presentations -- Specific programs compiled for target audiences; designed for projector presentation to a group; typically composed of custom slides together with general modules (see below).
  • modules -- Concise material focused on specific tasks; intended to be reused in multiple presentations (see above).
  • protocols -- General tutorials targeting common workflows or protocols; designed for display on individual monitors and interactivity via CyBrowser; typically linked to individually or in a presentation.

Navigating

Use arrow keys, "space" or the on-screen arrows (lower right) to navigate the slides. Take note of modules that are organized vertically within a presentation.

Overview

Online

You can access training materials at any time via a web browser. All content is tested in the latest versions of Firefox and Chrome. Simply navigate to the corresponding url, e.g.,

https://cytoscape.org/cytoscape-tutorials/protocols/basic-data-visualization/index.html

Offline

You can also generate a PDF version of any presentation or protocol and save it as a local file to share or present offline. Note that animated slides do not display as separate slides in PDF form, but rather as single slides in their final form. However, protocols should be composed in such a way to display properly in PDF. Simply append ?print-pdf to the end of the url for any protocol, e.g.,

https://cytoscape.org/cytoscape-tutorials/protocols/basic-data-visualization/?print-pdf

Then choose File>Print... and set the orientation to landscape and Save to PDF. Verify that the page breaks are correct throughout the presentation. For longer presentations, you may need to generate the PDF using an alternative approach, see Decktape. Example usage:

npm install -g decktape
decktape automatic https://cytoscape.org/cytoscape-tutorials/presentations/advanced-automation.html#/ advanced-automation.pdf

Sharing

Please feel free to use, share, copy or adapt any of the training materials you find here. They are all implicitly published under the CC0 waiver for maximum reuse potential.

Building

In order to adapt or compose your own tutorial, and you do not already have edit permissions for this repo, you can simply fork the repo. If your content is of general use, please submit a pull request and we'll be happy to accept it.

If you have a suggestion to make regarding the content and don't have the time or inclination to do the coding, please submit your request in the issue tracker.

If you are going to edit a tutorial and are not already familiar with Reveal.js, you will want to start with the reveal.js docs to learn how to setup your development environment and the basics of building content. Once you are familiar with reveal, you will want to review the common elements and custom styles available in our repo for Cytoscape tutorials (see Style below). Also refer to our templates with example slides and style usage.

In order to preview your local changes, you can simply open the HTML files in your browser, e.g., using the open command line function. Alternatively, for a live preview that updates in real-time, you can run npm start from the top directory. For npm functionality, you will need to install node.js (https://nodejs.org) and run npm install the first time (see full setup).

Organization

The first thing to notice about our repo is the organization. From the top level, you will find presentations and protocols. These leverage different CSS styles and different sets of modules.

|--presentations/
|  |--advanced-automation.html
|  |--(other presentations)
|  |--modules/
|     |--intro-cytoscape/
|     |--(other presentation modules)
|--protocols/
|  |--loading-networks/
|  |--(other protocols)

Each level can contain image assets that are relevant at that level. For example, images that are needed referenced by the html a directory should be kept in that directory. Images that are actively being used across many tutorials are kept in the top level's assets/images.

Each level will have named html files or index.html files, which are the files that one presents and shares. Modules directories will also have module.html files which contain the slide content that is referenced and pulled into the presentable html files. For example, the index.html file for the intro-cytoscape module includes reveal headers, scripts and this line of code to pull in the slide content:

<section data-external="modules/intro-cytoscape/module.html"></section>

Strategies

  1. Composing a presentation from existing modules
    Say you are putting together a presentation for class or workshop, but the existing presentations here aren't exactly right. You want a bit of customization, but you don't want to start over from scratch. Well, with this strategy you can reuse any of the modules here and pull them together in any order you like, while also adding custom slides before, after or between modules (though not within a given module).

    See the presentation template and code to see how simple it is to reference existing modules, like so <section data-external="modules/template-a/module.html"></section>.

    You can insert as many modules as you'd like and in any order. Furthermore, you can add slides using the section tag before or after modules in order to customize, e.g., with a title slide. This strategy works for protocols in the same way.

  2. Composing a presentation module Say you want to present a topic in detail, but it is not covered by any of the existing modules here. Well, you can make your own modules that can then be used (and reused) in multiple compositions (see Strategy 1). If possible, try to make the module focused on a single topic. Make more than one module, if necessary. And try to make the slides generic enough so that the module can be reused by other presenters, e.g., avoid content that is particular to only one audience, venue or setting.

    See a presentation module template and code to see how to build a module and how sample slides are formatted. Note how the moduled.html file is simply a set of <section> tags; while the index.html is generic wrapper you can copy/paste to make your sections work as a reveal.js presentation. The Style section below will cover most of the aspects of reveal you'll need to know to build a set of slides.

  3. Composing a protocol In contrast to presentations, protocols are easier to prepare. Since protocols work best as brief, self-guided lessons, they are organized as a single level of subdirectories; one for each protocol. Simply copy one of the existing protocol template directories and rename it. Then you can replace the template sections with your slide content.

Style

We have developed custom themes for Cytoscape tutorials. These stylesheets provide settings and features tailored for our content, making it easier to put together (and reuse) training materials in this repo. Review how to use these customizations below.

Version

To help develop training material that is accurate and current, we developed a custom footer and variable to specify the version of Cytoscape that the content pertains to. You can update the version tag in the title slide of your presentation/protocol files within the footer div:

<version>3.5.1</version>

Version

Headings

We have customized heading tags for the Cytoscape tutorial styles:

Headers

example slide

Slide Links

There are many ways to link to slides within your presentation. Here are a few of the most useful ones...

<a href="#/2/3">Link to slide by position (e.g., second slide over, third slide down)</a>
<a href="#/my-fav-slide">Link slide by name (e.g., section id="my-fav-slide")</a>
<a href="#" class="navigate-next">Link to next slide</a>

example slide

Ribbons

These are ideal for making interactive Agenda or Outline slides. They have a similar style as h1 headers, but are designed to work together with slide links (or external links) and have the nifty behavior of automatically stacking and coloring themselves when you list more than one.

<a href="#/"><ribbon>Title Slide</ribbon></a>
<a href="#/3"><ribbon>Template Module A</ribbon></a>
<a href="#/headers"><ribbon>List of Headers</ribbon></a>
<a href="#" class="navigate-next"><ribbon>How Links Work</ribbon></a>
<a class="inactive"><ribbon>Inactive Ribbon Style</ribbon></a>

Pro tip: if you indicate class="inactive" then you can gray-out a ribbon and disable its link. This is useful for mid-presentation review of the agenda, i.e., to remind the audience know what's been covered already and where you are at in the presentation.

example slide

Highlight

Use the <highlight> tag to highlight text with the Cytoscape-orange color.

example slide

Code

Reveal uses highlightjs to format code snippets. Use tags around code:

<pre><code data-trim>
if (files != null) {
   for (int i=0; i < files.length; i++) {
       String filename = files[i];
   }
}
</pre><c/ode data-trim>

example slide

Lists

Typical usage of <ul> for unordered lists and <ol> for ordered lists is supported with <li> tagging each list item.

Images

Images are automatically scaled, centered and given a drop shadow border. Common customizations can be made with style settings, such as width...

<img style="width:60%;" src="modules/intro-network-biology/network-example.jpg">

You can also float the image to the left (or right) side by appending "float:left" to the style.

Pro tip: If you have local copies of the images you want to include, upload them into the same directory as the html file, but include the path in src relative to the presentation (or protocol) directory, like in the example above. The index.html wrapper includes a base href="../.." so that the paths will work for both modules and presentations. If these images are likely to be used by multiple modules or presentations, you can also upload them to the top level assets/images dir, in which case the relative path in src should be "../assets/images".

Citations

Use the <small> tag to format citations at the bottom of slides.

example slide

Animation

The fragment class can be added to any html elements (e.g., paragraphs, images, list items) to set them up for animation, i.e., step-wise display. If you want to animate more than one element at the same time, simply wrap them in a div and add class="fragment" to it. You can also specify the type of animation per fragment...

<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment fade-up">fade-up (also down, left and right!)</p>
<p class="fragment current-visible">visible only once</p>
<p class="fragment highlight-current-blue">blue only once</p>
<p class="fragment highlight-red">highlight-red</p>
<p class="fragment highlight-green">highlight-green</p>
<p class="fragment highlight-blue">highlight-blue</p>

If you want an element to fade-out after fading-in, you can combine fragments like so...

<span class="fragment fade-in">
		<span class="fragment fade-out">I'll fade in, then out</span>
</span>

And for more precise control over the order and combination of animated fragments, you can explicitly specify an index number...

<p class="fragment" data-fragment-index="3">Appears last</p>
<p class="fragment" data-fragment-index="1">Appears first</p>
<p class="fragment" data-fragment-index="2">Appears second</p>

example slide

Columns

The Cytoscape stylesheet includes a custom column class which can be applied to two consecutive divs to automatically get a two-column layout for your slide content.

<div class="column">
	...contents for left column...
</div>
<div class="column">
	...contents for right column...
</div>

example slide

Tables

The default table style includes a distinct header and background shading on alternating rows. Using table, th, tr and td as you normally would, results in a styled table like this...

example slide

Integration with CyBrowser and CyCommands

CyBrowser allows for viewing any html page in Cytoscape. Together with CyCommands, this makes it possible to automate tutorial content with buttons and/or links. For example, if the tutorial describes how to load a network, a button to automatically load the network can be included.

Since these tutorials can be viewed in any web browser, and not just CyBrowser, but with a combination of javascript and css we can hide automation in all browsers other than CyBrowser. This is accomplished by enclosing the button code in a div, which in turn is controlled by javascript to hide it if the html is opened outside of CyBrowser.

To include a button, add a div of class "cybrowser". The example below adds a button that imports a specific network (galFiltered.sif), using the "network load url" CyCommand:

<pre><code data-trim>
<div class="cybrowser">
        <input type="button" class="btn btn-primary" onclick="cybrowser.executeCyCommand('network load url url=https://cytoscape.org/cytoscape-tutorials/protocols/data/galFiltered.sif');" value="Load network"/>
    </div>
</code></pre>

To hide the "cybrowser" div, and thus the button, outside of CyBrowser, the following javascript should be added to the parent index file. For example, if the automation code was added to a module.hml file, the javascript should be added to the body of the index.html file that includes that module. Similarly, there is also a "not-cybrowser" div class that can be used to customize content for regular browser viewing.

<pre><code data-trim>
<script>
	Reveal.addEventListener( 'ready', function() {
	if(!window.navigator.userAgent.includes('CyBrowser')){
		var divs = document.getElementsByClassName("cybrowser")
		for (var i=0;i<divs.length;i++){
			divs[i].style.display = "none";
		}
	} else {
		var divs = document.getElementsByClassName("not-cybrowser")
		for (var i=0;i<divs.length;i++){
			divs[i].style.display = "none";
		}
	}
});
</script>  
</code></pre>

Editing Cytoscape Theme

We have two customized stylesheets for presentations and protocols (.css). You can edit these CSS files directly, but understand that all presentations and protocols will be affected. If you want to make a custom stylesheets, please start a new CSS file.

|--css/theme/
|  |--cytoscape-presentation-1.css
|  |--cytoscape-protocol-1.css

If you are not sure where to make an edit, simply file a issue for the project and we'll advise or make the edit for you.

More Repositories

1

cytoscape.js

Graph theory (network) library for visualisation and analysis
JavaScript
9,325
star
2

cytoscape

Cytoscape: an open source platform for network analysis and visualization
Shell
518
star
3

ipycytoscape

A Cytoscape Jupyter widget
Python
256
star
4

cytoscape.js-dagre

The Dagre layout for DAGs and trees for Cytoscape.js
JavaScript
225
star
5

py2cytoscape

Python utilities for Cytoscape and Cytoscape.js
Python
178
star
6

cytoscape.js-edgehandles

Edge creation UI extension for Cytoscape.js
HTML
160
star
7

cytoscape.js-cxtmenu

Context menu for Cytoscape.js
JavaScript
155
star
8

cytoscape.js-cola

The Cola.js physics simulation layout for Cytoscape.js
JavaScript
133
star
9

cytoscape.js-cose-bilkent

The CoSE layout for Cytoscape.js by Bilkent with enhanced compound node placement.
HTML
116
star
10

cytoscape.js-popper

A wrapper for Popper.js that lets you position divs relative to Cytoscape elements
JavaScript
93
star
11

cyjShiny

An R/shiny widget for cytoscape.js
JavaScript
90
star
12

cytoscape-automation

Collection of scripts that include programmatic io and control of Cytoscape
HTML
81
star
13

cytoscape.js-klay

The Klay layout algorithm for Cytoscape.js
JavaScript
76
star
14

wineandcheesemap

JavaScript
70
star
15

cytoscape.js-panzoom

Panzoom extension for Cytoscape.js
CSS
64
star
16

cytoscape.js-navigator

Bird's eye view pan and zoom control for Cytoscape.js.
JavaScript
63
star
17

py4cytoscape

Python library for calling Cytoscape Automation via CyREST
Python
56
star
18

cytosnap

A Node.js package that renders images of Cytoscape.js graphs on the server using Puppeteer
JavaScript
54
star
19

RCy3

New version of RCy3, redesigned and collaboratively maintained by Cytoscape developer community
R
47
star
20

cytoscape.js-qtip

A Cytoscape.js extension that wraps the QTip jQuery library
JavaScript
40
star
21

cytoscape.js-tutorial-demo

Out of date. Refer to https://blog.js.cytoscape.org/tutorials/
JavaScript
39
star
22

cytoscape-jupyter-widget

Cytoscape.js based network visualizer for Jupyter Notebook
JavaScript
37
star
23

cytoscape.js-elk

The ELK layout algorithm adapter for Cytoscape.js
JavaScript
33
star
24

cytoscape-impl

Cytoscape 3 implementation bundles.
Java
33
star
25

cytoscape.js-automove

An extension for Cytoscape.js that automatically updates node positions based on specified rules
JavaScript
32
star
26

cytoscape.js-euler

Euler is a fast, high-quality force-directed (physics simulation) layout for Cytoscape.js
JavaScript
30
star
27

cyREST

Core App: REST API module for Cytoscape
JavaScript
30
star
28

cytoscape.js-compound-drag-and-drop

Compound node drag-and-drop UI for adding and removing children
JavaScript
28
star
29

cy-jupyterlab

Jupyter lab widget for rendering graphs (networks)
Jupyter Notebook
24
star
30

cytoscape.js-spread

The speedy Spread physics simulation layout for Cytoscape.js
JavaScript
24
star
31

cytoscape.github.com

Cytoscape org web site.
HTML
22
star
32

cytoscape-api

Cytoscape 3 API bundles.
Java
21
star
33

cytoscape-app-samples

Cytoscape 3 sample code for App developers.
Java
18
star
34

cytoscape.js-blog

The Cytoscape.js blog, using Github pages and Jekyll
JavaScript
18
star
35

cytoscape-gui-distribution

Cytoscape 3 desktop version.
Java
16
star
36

appstore

Cytoscape App Store web application code
Python
16
star
37

cytoscape.js-tutorials

Cytoscape.js tutorials project for GSOC 2016
JavaScript
14
star
38

cytoscape-manual

Markdown version of Cytoscape manual
12
star
39

cytoscape-explore

Network visualization webapp.
JavaScript
12
star
40

cyjs-sample

JavaScript
12
star
41

js-graph-lib-comparison

A comparison of JS graph libs
JavaScript
11
star
42

jupyter-cytoscape

Cytoscape.js API support in JS, Python, and R Jupyter kernels
JavaScript
10
star
43

cytoscape.js-hierarchical

A Cytoscape.js extension for the hierarchical clustering algorithm
HTML
10
star
44

slush-cytoscape-extension

A Cytoscape.js extension generator
JavaScript
10
star
45

cytoscape.js-k-means

A Cytoscape.js extension for the k-means, k-medoids, & fuzzy c-means family of algorithms
JavaScript
7
star
46

enrichment-table-app

Creates a new table for performing, storing and viewing functional enrichment analysis
Java
6
star
47

enrichment-map-webapp

JavaScript
6
star
48

cytoscapeweb

Flash-based graph visualization tool which can be integrated in HTML via its Javascript API (http://cytoscapeweb.cytoscape.org).
ActionScript
6
star
49

cytoscape.js-leaflet

A Cytoscape.js extension to overlay a graph (network) on top of a Leaflet map
JavaScript
6
star
50

wiki-plugin-cytodemo

CoffeeScript
5
star
51

jupyter-bridge

Bridge enables Jupyter code on remote server to execute HTTP calls on local PC
Python
4
star
52

web-export-templates

Parent project for all Cytoscape.js export options.
JavaScript
3
star
53

biopax

Core App: BioPAX support
Java
3
star
54

cytoscape.js-arbor

The Arbor physics simulation layout for Cytoscape.js
JavaScript
3
star
55

js4cytoscape

JavaScript library for calling Cytoscape Automation via CyREST
JavaScript
3
star
56

cx2js

A CX to Cytoscape JS library
JavaScript
3
star
57

zugzwang

Zugzwang (German: forced to make a move) is a new OpenGL-accelerated renderer for Cytoscape that prioritizes rapid visual feedback above all else – thus the name.
Java
3
star
58

cytoscape.js-springy

The Springy physics simulation layout for Cytoscape.js
JavaScript
3
star
59

mozfest2015-session

A starting point for building graphs with Cytoscape.js during the MozFest 2015 open science session
JavaScript
3
star
60

fgsea-service

R
3
star
61

r2cytoscape

R functions for Cytoscape automation
R
3
star
62

diffusion

A Cytoscape app to interface with the heat diffusion service
Java
3
star
63

cytoscape.js-reveal-slides

Reveal.js for presentation "Displaying interactive networks on the web"
JavaScript
3
star
64

cytoscape.js-markov-cluster

A Cytoscape.js extension for the Markov cluster algorithm
JavaScript
3
star
65

copycat-layout

Map the locations of nodes (and the network view) from one network to another. Easily compare networks side by side by positioning the views similarly.
Jupyter Notebook
3
star
66

idmapper

Identifier mapping
Java
2
star
67

cytosnap-demo

A demo Cytosnap server
2
star
68

cytoscape-app

DEPRECATED!! (Was used for for Core Apps)
2
star
69

cxio

CX serialization and de-serialization
Java
2
star
70

mcode-service

2
star
71

cyChart

interactive histogram and scatter charts to select nodes or create filters
Java
2
star
72

cytoscape.js-demos

User-submitted demos of Cytoscape.js
JavaScript
2
star
73

cx-viz-converter

JavaScript
2
star
74

cytoscape-platform-tests-js

Reveal.js testing webapp for running platform tests on Cytoscape via CyREST calls
JavaScript
2
star
75

cytoscape-web

TypeScript
2
star
76

legend-creator

Cytoscape3 app to create legends as annotations
Java
2
star
77

cytoscape-admin-scripts

Build and maintenance scripts for Cytoscape core developers.
Jupyter Notebook
2
star
78

file-transfer-app

Java
2
star
79

generator-cytoscape-extension

A Cytoscape.js extension generator
JavaScript
1
star
80

sbml

Core App: SBML Reader
Java
1
star
81

cyBrowser

Java
1
star
82

cytoscape.js-matter

JavaScript
1
star
83

foograph

Automatically exported from code.google.com/p/foograph
JavaScript
1
star
84

cytoscape-home-mock

TypeScript
1
star
85

idmap

Client for Id Mapping Service
Java
1
star
86

LargestSubnetwork

Select Largest Subnetwork App
Java
1
star
87

enrichmentmap-service

EnrichmentMap microservice
Java
1
star
88

cytoscape-app-template

Cytoscape 3 project files for App developers.
1
star
89

cytoscape2

Cytoscape 2.x series code.
Java
1
star
90

app-collections

repo for src and poms defining collections of apps
Java
1
star
91

cyjs-export-simple

Template code for simple export from Cytoscape 3.2.
ApacheConf
1
star
92

js-perf

Rendering and layout performance test page for Cytoscape.js
HTML
1
star
93

cx

CX serialization and de-serialization in Cytoscape
Java
1
star
94

cytoscape.js-rpc

Use JSON-RPC to drive a remote instance of Cytoscape.js
JavaScript
1
star
95

script-app-demo

Demonstration of a script-app
Java
1
star
96

cytoscape-ismb-2020

Jupyter Notebook
1
star
97

javascript-notebooks

A Jekyll site for publishing JS notebooks for Cytoscape automation via js4cytoscape
JavaScript
1
star
98

cytoscape.js-affinity-propagation

A Cytoscape.js extension for the affinity propagation algorithm
JavaScript
1
star