diff --git a/docs/asciidoctor-reveal.js-master/.editorconfig b/docs/asciidoctor-reveal.js-master/.editorconfig deleted file mode 100644 index 586775d..0000000 --- a/docs/asciidoctor-reveal.js-master/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# top-most editorconfig file -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -indent_size = 2 -indent_style = space diff --git a/docs/asciidoctor-reveal.js-master/.gitignore b/docs/asciidoctor-reveal.js-master/.gitignore deleted file mode 100644 index f650542..0000000 --- a/docs/asciidoctor-reveal.js-master/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# root dir html files -/*.html - -# test stuff -/examples/*.html -!/examples/docinfo*.html -!/examples/*docinfo-revealjs.html -/examples/reveal.js/ -/examples/node_modules - -# node stuff -node_modules/ -npm-debug.log -build/ -/dist/ -/asciidoctor-reveal.js-*.tgz - -# ruby stuff -/.bundle/ -/Gemfile.lock - -# the compiled slim template, committed only on releases to avoid noise -/lib/asciidoctor-revealjs/converter.rb - -# ignored tests -# - coderay is unsupported on JRuby -test/doctest/source-coderay.html -# - pygments is unsupported on JRuby -test/doctest/source-pygments.html -# - contains invalid content -test/doctest/with-docinfo-shared.html diff --git a/docs/asciidoctor-reveal.js-master/.travis-upstream-only.yml b/docs/asciidoctor-reveal.js-master/.travis-upstream-only.yml deleted file mode 100644 index 36ed540..0000000 --- a/docs/asciidoctor-reveal.js-master/.travis-upstream-only.yml +++ /dev/null @@ -1,3 +0,0 @@ -matrix: - exclude: - - gemfile: Gemfile diff --git a/docs/asciidoctor-reveal.js-master/.travis.yml b/docs/asciidoctor-reveal.js-master/.travis.yml deleted file mode 100644 index 23abcf3..0000000 --- a/docs/asciidoctor-reveal.js-master/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -git: - # use depth 2 just in case two refs get pushed at once (like a tag) - depth: 2 -language: ruby -node_js: lts/* -rvm: -- 2.6 -- 2.5 -- 2.4 -- 2.3 -- jruby-9.2.9.0 -gemfile: -- Gemfile -- Gemfile.upstream -env: - global: - # use system libraries to speed up installation of nokogiri - - NOKOGIRI_USE_SYSTEM_LIBRARIES=true -script: -- bundle exec rake build -- bundle exec rake test -- bundle exec rake examples:convert -- npm install -- bundle exec rake build:js -- npm run examples -- npm test -notifications: - email: false diff --git a/docs/asciidoctor-reveal.js-master/CHANGELOG.adoc b/docs/asciidoctor-reveal.js-master/CHANGELOG.adoc deleted file mode 100644 index ff90e4e..0000000 --- a/docs/asciidoctor-reveal.js-master/CHANGELOG.adoc +++ /dev/null @@ -1,575 +0,0 @@ -= {project-name} Changelog -:project-name: asciidoctor-reveal.js -:uri-repo: https://github.com/asciidoctor/asciidoctor-reveal.js -:uri-issue: {uri-repo}/issues/ - -This document provides a high-level view of the changes introduced in {project-name} by release. -For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub. - -== () - -Upgrade considerations:: - * When a `background-video` attribute points to a file, that file is now looked up relative to the `imagesdir` document attribute. - This new behavior aligns with what images and video macros already did. - Existing slide decks using both `imagesdir` and `background-video` will need to move some files around. - See {uri-issue}356[#356] for details. - -Enhancements:: - * Added text alignment options to our _columns layout_ feature: `has-text-left`, `has-text-right` and `has-text-justified`. - See PR {uri-issue}354[#354] for details. - * Added a `mathjaxdir` attribute to control where MathJax is loaded from ({uri-issue}350[#350]) - * MathJax updated to version 2.7.6 ({uri-issue}355[#355], {uri-issue}361[#361]) - * Added new examples: MathJax, MathJax-CDN ({uri-issue}350[#350], {uri-issue}359[#359]) - * Documentation improvements ({uri-issue}349[#349], {uri-issue}351[#351], {uri-issue}371[#371], {uri-issue}374[#374]) - -Compliance:: - * `autoslide` attribute is now supported at the slide level ({uri-issue}367[#367], {uri-issue}368[#368]) - * Implemented the `muted` option for the video macro for YouTube and Vimeo ({uri-issue}358[#358]) - * `background-video` paths are now resolved using `media_uri` ({uri-issue}356[#356]) - -Bug Fixes:: - * `autoplay` option fixed for YouTube and Vimeo videos ({uri-issue}357[#357]) - * Removed image resizing behavior when columns are wrapped in _columns layout_ feature ({uri-issue}353[#353], {uri-issue}360[#360]) - -Infrastructure:: - * Added an integration with https://www.netlify.com/[Netlify] to host specific slide deck examples ({uri-issue}336[#336], {uri-issue}346[#346]) - - -== 4.0.1 (2020-02-18) - -Repackage for NPM. - - -== 4.0.0 (2020-02-18) - -A major release with a ton of improvements! -All of reveal.js 3.8.0-3.9.2 new features are supported. -Added a new set of column layout options for quick slides design. -Highlight.js support improved. -Easier templates customizations. -New Java / JVM toolchain via [AsciidoctorJ-reveal.js](https://github.com/asciidoctor/asciidoctorj-reveal.js). -Support was added for Asciidoctor `docinfo` and `sectnums` attributes, `kbd` macro and callout styles were fixed. - -See the *upgrade considerations* section for the list of potentially breaking changes. - -Upgrade considerations:: - * Due to an upstream change in reveal.js 3.8.0, this back-end no longer supports earlier reveal.js versions. - We added a compatibility matrix with reveal.js at the end of the README. - See {uri-issue}301[#301] for details. - * Using the attribute `background-opacity` to alter the opacity of the title slide no longer works. - When the opacity feature was introduced we forgot to align with the other title slide attributes. - The feature was introduced in 3.0.0 and the bug stayed in 3.1.0. - Starting with 4.0.0 use `title-slide-background-opacity` instead. - See issue {uri-issue}323[#323] for details. - * The new _Columns layout_ feature required a new `
` that wraps all slide content (everything except the slide title). - This might impact custom CSS with strict child relationships. - See issue {uri-issue}326[#326] and PR {uri-issue}332[#332] for details. - * We bundle Highlight.js instead of relying on reveal.js. - We reduced the core set of supported languages and added the `highlightjs-languages` attribute to add specific languages on demand. - Depending on what type of code you were highlighting, you might need to add your language using that attribute. - See {uri-issue}320[#320] for details. - * Our support of AsciiDoc `docinfo` attribute changed. - We were previously injecting `docinfo-header.html` somewhere in the HTML ``. - Now, `docinfo-revealjs.html` goes last into the HTML ``, `docinfo-header-revealjs.html` goes right before the first slide `
` and `docinfo-footer-revealjs.html` goes right after the last slide `
`. - The new documentation is available https://github.com/asciidoctor/asciidoctor-reveal.js#supplemental-content-with-docinfo[here] and the related tickets are {uri-issue}198[#198] and {uri-issue}324[#324]. - * Default highlight.js theme is monokai. This follows a reveal.js change. - -Enhancements:: - * New _Columns layout_ feature which provides easy to use roles to create multiple columns in slides. - See the https://github.com/asciidoctor/asciidoctor-reveal.js#columns-layout[feature's documentation] for usage details. - See issue {uri-issue}326[#326] and PRs {uri-issue}332[#332], {uri-issue}340[#340] for details. - * Built-in slim templates can now be overridden with `--template-dir` or `-T` when using the Ruby command-line interface ({uri-issue}177[#177], {uri-issue}318[#318], {uri-issue}349[#349]) - * Highlight.js is now bundled by us instead of reveal.js. - You can add other languages not supported in the core set by using the `highlightjs-languages` attribute. - It can also be loaded locally or from a CDN of your choice. - See issues {uri-issue}21[#21], {uri-issue}319[#319] and {uri-issue}320[#320] for details. - * We now support the Java / JVM ecosystem. - This packaging happens in a separate project: https://github.com/asciidoctor/asciidoctorj-reveal.js[AsciidoctorJ reveal.js]. - See issue {uri-issue}271[#217] and PR {uri-issue}337[#337] for details. - * Many new examples demonstrating various features - * Documentation improvements ({uri-issue}322[#322]) - * Refactoring ({uri-issue}327[#327], {uri-issue}330[#330], {uri-issue}333[#333]) - -Compliance:: - * New reveal.js 3.8.0 and 3.9.0 features supported ({uri-issue}301[#301]) - ** Line numbers on source code blocks using Asciidoctor's `linenums` attribute - ** Specific lines and step-by-step code highlights using Asciidoctor's `highlight` attribute - ** reveal.js `data-preview` on links and images with link can be activated by using the `preview` and `link_preview` Asciidoctor attributes respectively - ** New configuration options: `hash`, `navigationMode`, `shuffle`, `preloadIframes`, `totalTime`, `minimumTimePerSlide`, `hideInactiveCursor`, `hideCursorTime`, `previewLinks` (`data-preview-link`) and `mobileViewDistance` ({uri-issue}301[#301]) - * Added support for the `sectnums` AsciiDoc attribute ({uri-issue}185[#185], {uri-issue}317[#317]) - * Aligned our `docinfo` support to Asciidoctor Bespoke ({uri-issue}198[#198], {uri-issue}324[#324]) - * Support the `highlightjs-languages` attribute from Asciidocotor ({uri-issue}319[#319], {uri-issue}320[#320]) - * `background-opacity` title slide attribute renamed to `title-slide-background-opacity` ({uri-issue}323[#323], {uri-issue}325[#325]) - * Added support for the `kdb` macro to represent keyboard shortcuts ({uri-issue}276[#276], {uri-issue}329[#329]) - * Cosmetic improvements to callout lists ({uri-issue}335[#335]) - -Bug Fixes:: - * Line height CSS fix with code listing with line numbers ({uri-issue}331[#331], {uri-issue}334[#334]) - * Interactive debugging works again ({uri-issue}322[#322]) - * Fixed _Uncaught ReferenceError: require is not defined_ by dropping outdated documentation ({uri-issue}344[#344]) - -=== Release meta - -* Released on: 2020-02-18 -* Released by: Olivier Bilodeau -* Release drink: https://defi.leclub28.com/en/p/47E2C422178348F[Lime Flavored Sparkling Water] - -{uri-repo}/releases/tag/v4.0.0[git tag] | -{uri-repo}/compare/v3.1.0...v4.0.0[full diff] | -{uri-repo}/milestone/8[milestone] - -=== Credits - -Thanks to the following people who contributed to this release: - -Guillaume Grossetie, thomas and Olivier Bilodeau - - -== 3.1.0 (2020-01-18) - -Fixed a regression with Font-Awesome brand icons, added a JavaScript CLI and standalone executables for Windows, Linux and macOS. - -Enhancements:: - * We now provide native standalone executables for Windows, Linux and macOS using a Node to binary packager ({uri-issue}259[#259], {uri-issue}308[#308]) - * JavaScript stack now provides a CLI usable with `npx asciidoctor-revealjs` ({uri-issue}308[#308]) - * Updated to Font-Awesome 5.12.0 ({uri-issue}305[#305]) - * Ruby command line interface now shows {project-name} version in addition to Asciidoctor version ({uri-issue}313[#313]) - * Updated dependencies: rake - * Better tests ({uri-issue}310[#310], {uri-issue}311[#311]) - -Bug Fixes:: - * Added compatibility shim to Font Awesome 5 to fix brand icons rendering and more ({uri-issue}304[#304], {uri-issue}305[#305]) - -=== Release meta - -* Released on: 2020-01-18 -* Released by: Olivier Bilodeau -* Release beer: Lupulus, Microbrasserie Charlevoix - -{uri-repo}/releases/tag/v3.1.0[git tag] | -{uri-repo}/compare/v3.0.0...v3.1.0[full diff] | -{uri-repo}/milestone/9[milestone] - -=== Credits - -Thanks to the following people who contributed to this release: - -Guillaume Grossetie and Olivier Bilodeau - - -== 3.0.0 (2020-01-07) - -An API breaking release for Asciidoctor.js users that brings a bright future of long term stability. -New Reveal.js features supported: background opacity, background positions, and PDF export. -AsciiDoc table options now supported. -A big FontAwesome update. -Many other little improvements and polish. - -Special heads-up: we are already planning for another major release since Reveal.js 3.8 support will be considered a breaking change. -They changed how it is loaded and requires a template change incompatible with Reveal.js 3.1-3.7. - -Upgrade considerations:: - * Node.js packaging changes! - With the arrival of Asciidoctor.js 2.0.0 you can now use a command line interface (CLI) just like with Asciidoctor Ruby: - - $(npm bin)/asciidoctor -r @asciidoctor/reveal.js -b revealjs presentation.adoc -+ -If you want to keep generating your reveal.js presentations using the Node.js API, you need to change the following code. -Instead of: - - var asciidoctorRevealjs = require('asciidoctor-reveal.js'); - asciidoctorRevealjs.register() -+ -Use: - - var asciidoctor = require('@asciidoctor/core')() - var asciidoctorRevealjs = require('@asciidoctor/reveal.js') - asciidoctorRevealjs.register() -+ - * Node.js package name changed from `asciidoctor-reveal.js` to `@asciidoctor/reveal.js` ({uri-issue}252[#252], {uri-issue}291[#291]) - * Custom CSS might require adjustments. - Source and listing block encapsulation changed due to our migration to Asciidoctor 2.0.0 Syntax Highlighter API. - See {uri-issue}287[#287]. - * Upgraded to Font-Awesome 5.8.2 from 4.3.0 which contains some backward incompatible changes ({uri-issue}268[#268]) - * {project-name} now requires Asciidoctor 2.0.0+ or Asciidoctor.js 2.0.0+ ({uri-issue}290[#290]) - * Dropped support for end-of-life Ruby version 2.1 and 2.2 ({uri-issue}247[#247]) - -Compliance:: - * Added support for table frame, grid, header and alignment options ({uri-issue}29[#29], {uri-issue}42[#42], {uri-issue}56[#56], {uri-issue}288[#288]) - * Source code callout style aligned with Asciidoctor's ({uri-issue}293[#293], {uri-issue}300[#300]) - * Added support for Reveal.js data-background-opacity ({uri-issue}269[#269]) - * Added support for Reveal.js data-background-position ({uri-issue}273[#273], {uri-issue}274[#274]) - * Updated the process to include the generated converter in releases ({uri-issue}265[#265], {uri-issue}302[#302]) - -Enhancements:: - * Support for Asciidoctor.js 2.0.0+ which brings a command line interface ({uri-issue}254[#254]) - * Process updates, narrower install version range and compatibility matrix regarding Asciidoctor.js ({uri-issue}187[#187], {uri-issue}303[#303]) - * Migrated to Asciidoctor 2.0.0 new https://github.com/asciidoctor/asciidoctor/releases/tag/v2.0.0[Syntax Highlighter API] ({uri-issue}261[#261], {uri-issue}287[#287]) - * Added support for Reveal.js PDF export options ({uri-issue}277[#277]) - * Upgraded to Font-Awesome 5.8.2 ({uri-issue}268[#268]) - * We now accept `reveal.js` as converter/backend name in addition to `revealjs` ({uri-issue}253[#253], {uri-issue}297[#297]) - * Babel integration example API updated to use {project-name} current API ({uri-issue}285[#285], {uri-issue}298[#298]) - * Node.js package clean-ups ({uri-issue}279[#279], {uri-issue}281[#281], {uri-issue}282[#282]) - * Upgrade Opal to use a compatible version with Asciidoctor.js 2.0.3 ({uri-issue}289[#289]) - * Documentation improvements ({uri-issue}292[#292], {uri-issue}302[#302]) - * Improvements to tests ({uri-issue}294[#294]) - -Bug Fixes:: - * Babel integration example updated for security ({uri-issue}285[#285]) - -Infrastructure:: - * Updated Travis' JRuby to fix issues with bundler ({uri-issue}295[#295]) - -=== Release meta - -* Released on: 2020-01-07 -* Released by: Olivier Bilodeau -* Release beer: Porter Baltique Édition Spéciale 2019, Les Trois Mousquetaires - -{uri-repo}/releases/tag/v3.0.0[git tag] | -{uri-repo}/compare/v2.0.1...v3.0.0[full diff] | -{uri-repo}/milestone/7[milestone] - -=== Credits - -Thanks to the following people who contributed to this release: - -Benjamin Schmid, Daniel Mulholland, Eiji Onchi, Gérald Quintana, Guillaume Grossetie and Olivier Bilodeau - - -== 2.0.1 (2019-12-04) - -Important Bug Fix:: - * Fixed an issue that caused all `reveal.js` options in CamelCase to use the default value instead of one specified as an AsciiDoc attribute ({uri-issue}263[#263], {uri-issue}267[#267]) - -Compliance:: - * Dropped support for verse table cells ({uri-issue}246[#246]). - Asciidoctor 2.0 dropped it, we followed. - -Enhancements:: - * Documentation improvements ({uri-issue}264[#264], {uri-issue}278[#278], {uri-issue}280[#280]) - -Bug Fixes:: - * Yarn.lock updates for security ({uri-issue}283[#283]) - -=== Release meta - -* Released on: 2019-12-04 -* Released by: Olivier Bilodeau -* Release whisky: Lot No. 40 Single Copper Pot Still Rye Whisky - -{uri-repo}/releases/tag/v2.0.1[git tag] | -{uri-repo}/compare/v2.0.0...v2.0.1[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Benjamin Schmid, Guillaume Grossetie, Olivier Bilodeau - - -== 2.0.0 (2019-02-28) - -Upgrade considerations:: - * Node.js API change! - If you generate your reveal.js presentations using the node/javascript toolchain, you need to change how the {project-name} back-end is registered to Asciidoctor.js. - Instead of `require('asciidoctor-reveal.js')` you need to do: - - var asciidoctorRevealjs = require('asciidoctor-reveal.js'); - asciidoctorRevealjs.register() -+ -This change enables new use cases like embedding a presentation in a React web app. - - * Anchor links generated by {project-name} will change from now on when revealjs_history is set to true (default is false). - This is the consequence of upstream fixing a long standing issue (see https://github.com/hakimel/reveal.js/pull/1230[#1230] and https://github.com/hakimel/reveal.js/pull/2037[#2037]) and us removing a workaround (see {uri-issue}232[#232]). - Explicit anchors are not affected. - * Custom CSS might require adjustments. - Source and listing block are less deeply nested into `div` blocks now. - See {uri-issue}195[#195] and {uri-issue}223[#223]. - * The reveal.js `marked` and `markdown` plugins are disabled by default now. - It is unlikely that they could have been used anyway. - See {uri-issue}204[#204]. - * Dropped the ability to override the Reveal.JS theme and transitions dynamically with the URL query. - Was not compatible with Reveal.JS 3.x series released 4 years ago. - -Enhancements:: - * Easier speaker notes: a `.notes` role that apply to many AsciiDoc blocks (open, sidebar and admonition) ({uri-issue}202[#202]) - * Added a role `right` that would apply a `float: right` to any block where it would be assigned ({uri-issue}197[#197], {uri-issue}213[#213], {uri-issue}215[#215]) - * Allow the background color of slides to be set using CSS ({uri-issue}16[#16], {uri-issue}220[#220], {uri-issue}226[#226], {uri-issue}229[#229]) - * Reveal.js's fragmentInURL option now supported ({uri-issue}206[#206], {uri-issue}214[#214]) - * Documentation improvements ({uri-issue}141[#141], {uri-issue}182[#182], {uri-issue}190[#190], {uri-issue}203[#203], {uri-issue}215[#215], {uri-issue}216[#216], {uri-issue}222[#222]) - * Support for Asciidoctor.js 1.5.6 and build simplification ({uri-issue}189[#189], {uri-issue}217[#217]) - * Support to specify and use reveal.js plugins without modifying {project-name}'s source code ({uri-issue}196[#196], {uri-issue}118[#118], {uri-issue}201[#201], {uri-issue}204[#204]) - * Node / Javascript back-end is now loaded on-demand with the `register()` method. - This allows embedding {project-name} into React or any other modern Javascript environment. - ({uri-issue}205[#205], {uri-issue}218[#218], {uri-issue}219[#219]) - * `revealjsdir` attribute is set to a more sensible default when running under Node.js ({uri-issue}191[#191], {uri-issue}228[#228]) - * Node / Javascript back-end updated to use Asciidoctor.js 1.5.9. - This extension is built with Opal 0.11.99.dev (6703d8d) in order to be compatible. - ({uri-issue}227[#227], {uri-issue}240[#240]) - -Compliance:: - * AsciiDoc source callout icons now work ({uri-issue}54[#54], {uri-issue}168[#168], {uri-issue}224[#224]) - * New reveal.js 3.7.0 features supported: `controlsTutorial`, `controlsLayout`, `controlsBackArrows`, new `slideNumber` formats, `showSlideNumber`, `autoSlideMethod`, `parallaxBackgroundHorizontal`, `parallaxBackgroundVertical` and `display` configuration parameters are now supported ({uri-issue}212[#212], {uri-issue}239[#239], {uri-issue}208[#208], {uri-issue}242[#242]) - * Asciidoctor 2.0 ready ({uri-issue}245[#245]) - -Bug Fixes:: - * Reveal.js' `stretch` class now works with listing blocks ({uri-issue}195[#195], {uri-issue}223[#223]) - * Auto-generated slide IDs with unallowed characters (for revealjs history) now work properly. - Upstream reveal.js fixed a bug in 3.7.0 (https://github.com/hakimel/reveal.js/pull/2037[#2037]) and we removed our broken workaround. - ({uri-issue}192[#192], {uri-issue}232[#232]) - -Infrastructure:: - * Travis testing prepared for upcoming Asciidoctor 2.0 ({uri-issue}216[#216]) - * Travis testing for Ruby 2.6 ({uri-issue}243[#243]) - -=== Release meta - -* Released on: 2019-02-28 -* Released by: Olivier Bilodeau -* Release beer: President's Choice Blonde Brew De-alcoholized Beer (Sober February Successfully Completed!) - -{uri-repo}/releases/tag/v2.0.0[git tag] | -{uri-repo}/compare/v1.1.3...v2.0.0[full diff] | -{uri-repo}/milestone/6[milestone] - -=== Credits - -Thanks to the following people who contributed to this release: - -a4z, Dan Allen, Guillaume Grossetie, Harald, Jakub Jirutka, Olivier Bilodeau, stevewillson, Vivien Didelot - - -== 1.1.3 (2018-01-31) - -A repackage of 1.1.2 with a fix for Ruby 2.5 environments - -Bug fixes:: - * Worked around a problem in ruby-beautify with the compiled Slim template under Ruby 2.5 - -=== Release meta - -* Released on: 2018-01-31 -* Released by: Olivier Bilodeau -* Release coffee: Santropol Dark Espresso - -{uri-repo}/releases/tag/v1.1.3[git tag] | -{uri-repo}/compare/v1.1.2...v1.1.3[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Jakub Jirutka, Olivier Bilodeau - - -== 1.1.2 (2018-01-30) - -NOTE: No packaged version of this release were produced. - -A bugfix release due to a problem rendering tables using the Javascript / -Node.js toolchain. - -Enhancements:: - * Documentation improvements ({uri-issue}181[#181]) - -Bug fixes:: - * Fixed crash with presentations with a table used from Javascript/Node.js setup ({uri-issue}178[#178]) - -=== Release meta - -* Released on: 2018-01-30 -* Released by: Olivier Bilodeau -* Release beer: A sad Belgian Moon in a Smoke Meat joint - -{uri-repo}/releases/tag/v1.1.2[git tag] | -{uri-repo}/compare/v1.1.1...v1.1.2[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Guillaume Grossetie, Tobias Placht, Olivier Bilodeau - - -== 1.1.1 (2018-01-03) - -An emergency bugfix release due to a problem in the Ruby Gem package - -Enhancements:: - * Documentation improvements ({uri-issue}163[#163], {uri-issue}165[#165], {uri-issue}169[#169], {uri-issue}173[#173], {uri-issue}175[#175]) - -Compliance:: - * Code listing callouts now work properly ({uri-issue}22[#22], {uri-issue}166[#166], {uri-issue}167[#167]) - * More source code listing examples and tests ({uri-issue}163[#163], {uri-issue}170[#170]) - -Bug fixes:: - * The version 1.1.0 Ruby Gem was broken due to a packaging error ({uri-issue}172[#172]) - -=== Release meta - -* Released on: 2018-01-03 -* Released by: Olivier Bilodeau -* Release beer: Croque-Mort Double IPA, À la fût - -{uri-repo}/releases/tag/v1.1.1[git tag] | -{uri-repo}/compare/v1.1.0...v1.1.1[full diff] | -{uri-repo}/milestone/5[milestone] - -=== Credits - -Thanks to the following people who contributed to this release: - -Dietrich Schulten, Olivier Bilodeau - - -== 1.1.0 (2017-12-25) - @obilodeau - -Enhancements:: - * Support for Reveal.JS 3.5.0+ ({uri-issue}146[#146], {uri-issue}151[#151]) - * Support for Asciidoctor 1.5.6 ({uri-issue}132[#132], {uri-issue}136[#136], {uri-issue}142[#142]) - * Support for Asciidoctor.js 1.5.6-preview.4 ({uri-issue}130[#130], {uri-issue}143[#143], {uri-issue}156[#156]) - * Compiling slim templates to Ruby allows us to drop Jade templates for Asciidoctor.js users - ({uri-issue}63[#63], {uri-issue}131[#131]) - * Documentation polish ({uri-issue}153[#153], {uri-issue}158[#158] and more) - -Compliance:: - * Users of Asciidoctor (Ruby) and Asciidoctor.js (Javascript) now run the same set of templates meaning that we achieved feature parity between the two implementations - ({uri-issue}63[#63], {uri-issue}131[#131]) - -Bug fixes:: - * Reveal.js https://github.com/hakimel/reveal.js/#configuration[history feature] now works. - We are working around Reveal.js' section id character limits. - ({uri-issue}127[#127], {uri-issue}150[#150], https://github.com/hakimel/reveal.js/issues/1346[hakimel/reveal.js#1346]) - -Infrastructure:: - * https://github.com/asciidoctor/asciidoctor-doctest[Asciidoctor-doctest] integration. - This layer of automated testing should help prevent regressions and improve our development process. - ({uri-issue}92[#92], {uri-issue}116[#116]) - * Travis-CI integration to automatically run doctests and examples AsciiDoc conversions - * Travis-CI tests are triggered by changes done in Asciidoctor. - We will detect upstream changes affecting us sooner. - * Smoke tests for our Javascript / Node / Asciidoctor.js toolchain (integrated in Travis-CI also) - * `npm run examples` will convert all examples using the Javascript / Node / Asciidoctor.js toolchain ({uri-issue}149[#149]) - * `rake examples:serve` will run a Web server from `examples/` so you can preview rendered examples ({uri-issue}154[#154]) - -=== Release meta - -{uri-repo}/releases/tag/v1.1.0[git tag] | -{uri-repo}/compare/v1.0.4...v1.1.0[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -@jirutka, Dan Allen, Guillaume Grossetie, Jacob Aae Mikkelsen, Olivier Bilodeau, Rahul Somasunderam - - -== 1.0.4 (2017-09-27) - @obilodeau - -Bug fixes:: - * Dependency problems leading to crashes when used from Asciidoctor.js ({uri-issue}145[#145]) - -=== Release meta - -{uri-repo}/releases/tag/v1.0.4[git tag] | -{uri-repo}/compare/v1.0.3...v1.0.4[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Olivier Bilodeau, Guillaume Grossetie - - -== 1.0.3 (2017-08-28) - @obilodeau - -Enhancements:: - * Documentation improvements - -Compliance:: - * Added `data-state: title` to the title slide ({uri-issue}123[#123]) - -Bug fixes:: - * Pinned Asciidoctor version requirement to 1.5.4 to avoid dealing with {uri-issue}132[#132] in the 1.0.x series - * Fixed consistency issues with boolean values handling in revealjs settings ({uri-issue}125[#125]) - -=== Release meta - -{uri-repo}/releases/tag/v1.0.3[git tag] | -{uri-repo}/compare/v1.0.2...v1.0.3[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Dan Allen, nipa, Olivier Bilodeau, Pi3r - - -== 1.0.2 (2016-12-22) - @obilodeau - -Enhancements:: - * Ruby back-end is now compiled in Javascript with Opal (#115) - * Documentation improvements - -=== Release meta - -{uri-repo}/issues?q=milestone%3A1.0.2[issues resolved] | -{uri-repo}/releases/tag/v1.0.2[git tag] | -{uri-repo}/compare/v1.0.1...v1.0.2[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Dan Allen, Guillaume Grossetie, Olivier Bilodeau - - -== 1.0.1 (2016-10-12) - @obilodeau - -Enhancements:: - * Documentation: aligned release process for both npm and ruby gems packages - * npm package in sync with ruby gem - -=== Release meta - -Released by @obilodeau - -{uri-repo}/issues?q=milestone%3A1.0.1[issues resolved] | -{uri-repo}/releases/tag/v1.0.1[git tag] | -{uri-repo}/compare/v1.0.0...v1.0.1[full diff] - -=== Credits - -Thanks to the following people who contributed to this release: - -Olivier Bilodeau - - -== 1.0.0 (2016-10-06) - @obilodeau - -Since this is the first ever "release" of asciidoctor-reveal.js (we used to do continuous improvements w/o releases in the past), this list focuses on the major enhancements introduced over the last few weeks. - -Enhancements:: - * Initial release - * Ruby package (#93) - * Node package (#95) - * `:customcss:` attribute for easy per-presentation CSS (#85) - * Video support improvements (#81) - * Reveal.js `data-state` support (#61) - * Subtitle partioning (#70) - * Background image rework (#52) - * `:imagesdir:` properly enforced (#17, #67) - -=== Release meta - -Released by @obilodeau - -{uri-repo}/issues?q=milestone%3A1.0.0[issues resolved] | -{uri-repo}/releases/tag/v1.0.0[git tag] - -=== Credits - -Thanks to the following people who contributed to this release: - -Alexander Heusingfeld, Andrea Bedini, Antoine Sabot-Durand, Brian Street, Charles Moulliard, Dan Allen, Danny Hyun, Emmanuel Bernard, gtoast, Guillaume Grossetie, Jacob Aae Mikkelsen, Jakub Jirutka, Jozef Skrabo, Julien Grenier, Julien Kirch, kubamarchwicki, lifei, Nico Rikken, nipa, Olivier Bilodeau, Patrick van Dissel, phrix32, Rahman Usta, Robert Panzer, Rob Winch, Thomas and Wendell Smith diff --git a/docs/asciidoctor-reveal.js-master/Gemfile b/docs/asciidoctor-reveal.js-master/Gemfile deleted file mode 100644 index ea28e8c..0000000 --- a/docs/asciidoctor-reveal.js-master/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' - -# Specify your gem's dependencies in asciidoctor-revealjs.gemspec -gemspec -# Asciidoctor.js 2.0.0 requires an unreleased Opal 0.11.99.dev (d136ea8) -gem 'opal', :git => 'https://github.com/opal/opal.git', :ref => 'd136ea8' diff --git a/docs/asciidoctor-reveal.js-master/Gemfile.upstream b/docs/asciidoctor-reveal.js-master/Gemfile.upstream deleted file mode 100644 index a41434f..0000000 --- a/docs/asciidoctor-reveal.js-master/Gemfile.upstream +++ /dev/null @@ -1,7 +0,0 @@ -# Gemfile used to run travis against asciidoctor's master -# Useful to catch downstream or upstream issues before they are problematic -source 'https://rubygems.org' -gemspec -gem 'asciidoctor', :git => 'https://github.com/asciidoctor/asciidoctor', :branch => 'master' -# Asciidoctor.js 2.0.0 requires an unreleased Opal 0.11.99.dev (d136ea8) -gem 'opal', :git => 'https://github.com/opal/opal.git', :ref => 'd136ea8' diff --git a/docs/asciidoctor-reveal.js-master/HACKING.adoc b/docs/asciidoctor-reveal.js-master/HACKING.adoc deleted file mode 100644 index 85ac24e..0000000 --- a/docs/asciidoctor-reveal.js-master/HACKING.adoc +++ /dev/null @@ -1,432 +0,0 @@ -= HACKING asciidoctor-reveal.js -:toc: preamble -:toclevels: 2 - -Short instructions that aim to help potential contributors. - -== Getting Started - -* Setup the Asciidoctor-revealjs plugin in <> -* Modify the http://slim-lang.com/[slim templates] in `templates/` -* Templates need to be compiled before being used, do so with: - - bundle exec rake build - -* Then using the following command will render slides with your template changes baked in: - - bundle exec asciidoctor-revealjs - -The next section will provide further help on how to use `print` statements or a debugger to assist development. - - -== Inspect the template system - -To understand what you have access to in templates you can inject some ruby. -With the slim templating system, this is done by prepending the lines with a dash (`-`) and inserting a ruby statement. -Two complementary approaches can be used to explore the context offered by asciidoctor through the template system: - -* logging on the command line via print-like statements -* jump into the context through an interactive debugger - -[NOTE] --- -Debugging is only supported via the Ruby ecosystem. -You need to recompile the templates when you make changes to them. -This can be done by running: - - bundle exec rake build --- - -=== Print debugging information - -For example to see which attributes are available, you can print them by adding these lines in the `.slim` file of interest: - ----- -- puts @document.attributes.inspect -- puts @attributes.inspect -- puts @document.methods ----- - -Other generally useful ruby specific introspection: - ----- -- puts instance_variables -- puts local_variables ----- - -One might find `pp` to produce better output (and in some cases not): - ----- -- require 'pp' -- pp @document.attributes ----- - -=== Interactively debug a template - -Pry is a powerful debugger for ruby that features tab-completion. -It is very useful to discover a complex object hierarchy like what asciidoctor offers. - -==== Initial Setup - - bundle --path=.bundle/gems --binstubs=.bundle/.bin - -==== Usage - -In order to be dropped into the debugger at a specific point in a template simply add the following two lines in the relevant `.slim` template file: - ----- -- require 'pry' -- binding.pry ----- - -Recompile the templates with: - - bundle exec rake build - -Then run `asciidoctor-revealjs` from the command-line to generate your document and you'll be dropped in the debugger: - ----- -$ bundle exec asciidoctor-revealjs examples/video.adoc -asciidoctor: WARNING: level-sections.adoc: line 29: section title out of sequence: expected level 2, got level 3 - -From: /home/olivier/src/asciidoc/asciidoctor-reveal.js/templates/slim/section.html.slim @ line 3 : - - 1: - hide_title = (title = self.title) == '!' - 2: - require 'pry' - => 3: - binding.pry - 4: / parent section of vertical slides set - 5: - if @level == 1 && !(subsections = sections).empty? - 6: section - 7: section id=(hide_title ? nil : @id) data-transition=(attr 'data-transition') data-transition-speed=(attr 'data-transition-speed') data-background=(attr 'data-background') data-background-size=(attr 'data-background-size') data-background-repeat=(attr 'data-background-repeat') data-background-transition=(attr 'data-background-transition') - 8: - unless hide_title - -[1] pry(#)> ----- - -Then using commands like the following allows you to explore interactively asciidoctor's API and object model with syntax highlighting: - - [1] pry(#)> @document - -You can also query asciidoctor's documentation: - - [4] pry(#)> ? find_by - -If you install the `pry-byebug` gem you get additional debugging capabilities. -See the gem's documentation for details. - -Since 1.1.0, templates are compiled. -It is easier to inject the debug triggering statements and use the templates directly instead of debugging compiled templates. -You can call the slim templates directly with: - - bundle exec asciidoctor-revealjs --trace -T templates/ examples/customcss.adoc - -=== References - -* https://github.com/asciidoctor/asciidoctor.org/issues/80#issuecomment-145698579 -* http://pryrepl.org/ -* http://discuss.asciidoctor.org/Interactively-debugging-a-template-with-a-REPL-td4498.html - -== Manual Tests - -In order to help troubleshoot issues and test syntax improvements, some minimalist asciidoc test files are provided. -You can render the tests files and then load them in a browser and check if `asciidoctor-revealjs` behaves as expected. - -=== Initial Setup - -Make sure to have a working version of `asciidoctor-reveals` this is usually -done with `bundler`: - - bundle config --local github.https true - bundle --path=.bundle/gems --binstubs=.bundle/.bin - bundle exec rake build - -Go to `test/doctest` folder and install `reveal.js`: - - cd test/doctest/ - git clone https://github.com/hakimel/reveal.js.git - -=== Render tests into .html - -From the project's root directory: - - bundle exec rake doctest::generate FORCE=yes - -=== Open rendered files - -NOTE: Right now, https://github.com/asciidoctor/asciidoctor-doctest/issues/12[doctest issue #12] means that the generated examples will not be pretty. - -You can open the generated `.html` in `test/doctest/` in a Web browser. - - -== Asciidoctor API's gotchas - -=== Attribute inheritence - -The attr and attr? methods inherit by default. That means if they don't find the attribute defined on the node, they look on the document. - -You only want to enable inheritance if you intend to allow an attribute of the same name to be controlled globally. -That might be good for configuring transitions. For instance: - ----- -= My Slides -:transition-speed: fast - -== First Slide ----- - -However, there may be attributes that you don't want to inherit. -If that's the case, you generally use the form: - - attr('name', nil, false) - -The second parameter value is the default attribute value, which is nil by default. - -Relevant documentation: http://www.rubydoc.info/github/asciidoctor/asciidoctor/Asciidoctor%2FAbstractNode%3Aattr - - -== Merge / Review policy - -Any non-trivial change should be integrated in master via a pull-request. -This gives the community a chance to participate and helps write better code because it encourages people to review their own patches. - -Pull requests should come from personal forks in order not the clutter the upstream repository. - -=== Wait time - -Once a pull request is submitted, let it sit for 24-48 hours for small changes. -If you get positive feedback you can merge before the sitting time frame. -If you don't get feedback, just merge after the sitting time frame. - -Larger changes should sit longer at around a week. -Positive feedback or no feedback should be handled like for small changes. - -Breaking changes should sit until a prominent contributor comments on the changes. -Ping `@mojavelinux` and `@obilodeau` if necessary. - -Remember that this is a slower moving project since people are not designing slides everyday. -Well, for most people. - -=== Work-in-progress pull-requests - -Letting know to the maintainers that you are working on a feature or a fix is useful. -Early communication often times save time consuming mistakes or avoids duplicated effort. -We encourage contributors to communicate with us early. - -Branches on forks of this project are not very visible to maintainers as much as pull requests (PR). -For this reason we used to recommend sending a PR even if it's not ready and prepend "WIP" in front of its name to let everyone see that you are working on a specific topic. -Now, instead of prepending "WIP", we recommend using GitHub "draft pull request" feature instead. - - -=== 'needs review' label - -You can apply that label to a pull request that is complete and ready for review. - -Makes triaging easier. - -== Node package - -=== Test a local asciidoctor-reveal.js version - -In order to test the Node package, you first need to build the converter into Javascript and create a tarball of the project. - - $ bundle exec rake build:js - $ npm pack - -That last command will produce a file named `asciidoctor-reveal.js-.tgz` in the working directory. - -Then, create a test project adjacent to the clone of the [.path]_asciidoctor-reveal.js_ repository: - - $ mkdir test-project - $ cd test-project - -Now, install the dependencies from the tarball: - - $ npm i --save ../asciidoctor-reveal.js/asciidoctor-reveal.js-.tgz - -NOTE: The relative portion of the last command is where you are installing the local `asciidoctor-reveal.js` version from. - -Then proceed as documented in the `README.adoc`. - -[[node-binary-compatibility]] -=== Binary package compatibility with Asciidoctor.js - -Asciidoctor.js is source-to-source compiled into JavaScript from Ruby using Opal. -The JavaScript generated requires a specific version of the Opal-runtime for it to work with Node.js. -This project is source-to-source compiled into JavaScript from Ruby using Opal too. -In order for Asciidoctor.js to be able to call code from this converter, the versions of Opal (both runtime and compiler) must be compatible. -Right now we track the exact git revision of Opal used by Asciidoctor.js and make sure that we match. -Here is how: - -Versions known to work together can be found by looking at the Asciidoctor.js release notes, just replace with the `asciidoctor.js` release you are interested in: https://github.com/asciidoctor/asciidoctor.js/releases/tag/. -Then that Opal version and git revision (if required) must be specified in `asciidoctor-revealjs.gemspec`. - -Starting with 3.0.0 we aim to retain binary compatibility between Asciidoctor.js and Asciidoctor-reveal.js. -This should allow other Asciidoctor extensions to be called along with this converter. -Asciidoctor.js is no longer a direct dependency but should be seen as a tool that powers this converter. -We need to allow users to have flexibility in the version they choose to run. -Asciidoctor.js maintainer told us that he is going to consider binary package incompatibility a major break and so we adjusted our README to tell users to install with a specific version range. - -We will track and maintain the README on the major version supported and recommended: - -* In the link:README.adoc#node-install[version range to install by default] for a given release (and on master) -* In the link:README.adoc#asciidoctorjs-compatibility-matrix[compatibility matrix] - -See https://github.com/asciidoctor/asciidoctor-reveal.js/issues/187#issuecomment-570771473[this issue] for background details on that topic. - -Asciidoctor.js versioning policy is https://asciidoctor-docs.netlify.com/asciidoctor.js/project/version-and-lifecycle-policies/[available here]. - -=== Debugging - -To debug the JavaScript application, just add `--node-arg=--inspect-brk` to the npx command to run the application. -For example: - - npx --node-arg=--inspect-brk asciidoctor-revealjs -v presentation.adoc - -Then open the Chrome Dev Tools and click on the Node logo in the top left corner. - - -== RubyGem package - -[[ruby-localversion]] -=== Test a local asciidoctor-revealjs version - -Compile the converter: - - $ bundle exec rake build - -In a clean directory besides the `asciidoctor-reveal.js` repository, create the following `Gemspec` file: - - source 'https://rubygems.org' - gem 'asciidoctor-revealjs', :path => '../asciidoctor-reveal.js' - -Then run: - - $ bundle --path=.bundle/gems --binstubs=.bundle/.bin - - -== Release process - - -. Make sure that the highlight plugin code embed in _lib/asciidoctor-revealjs/highlightjs.rb_ is up-to-date with the version of reveal.js -. Do we need to do anything regarding our Opal dependency and Asciidoctor.js? - See <>. -. Update dependencies and test the package in both languages -+ - bundle update - bundle exec rake build - bundle exec rake test - bundle exec rake examples:convert - npm install - npm update - bundle exec rake build:js - npm test - npm run examples - -. Commit the updated dependencies -. Update the version in `lib/asciidoctor-revealjs/version.rb` and `package.json` -. Update the changelog -** Generate author list with: -+ - git log .. --format="%aN" --reverse | perl -e 'my %dedupe; while () { print unless $dedupe{$_}++}' | sort - -. Prepare release commit -** Add the "Slim compiled to Ruby" converter to the git tree (otherwise ignored to avoid noise to the repo) -+ - bundle exec rake build - git add -f lib/asciidoctor-revealjs/converter.rb - -** commit msg: Prepare %version% release -** release commit (--allow-empty) msg: Release %version% -. Tag the release commit -** Annotated Tag msg: Version %version% -. Push your changes (including the tag) -. Make a release on github (from changelog and copy from previous releases) -** Useful vim regex for AsciiDoc to Markdown: -+ - :%s/{uri-issue}\(\d\+\)\[#\d\+]/#\1/gc - :%s/{project-name}/asciidoctor-reveal.js/gc - :%s/\(.*\)::/### \1/gc - :%s/{uri-repo}/https:\/\/github.com\/asciidoctor\/asciidoctor-reveal.js/gc - -** Save as draft - -. Pushing the gem on rubygems.org: -+ - $ bundle exec rake build - $ gem build asciidoctor-revealjs.gemspec - $ gem push asciidoctor-revealjs-X.Y.Z.gem - -. Check that the new version is available on https://rubygems.org/gems/asciidoctor-revealjs[rubygems.org] -. Generate the javascript version of the Ruby converter -+ - $ bundle exec rake build:js - -. Publish the node package on npm: -+ - $ npm login # only required if not already authenticated - $ npm publish - -. Check that the new version is available on https://www.npmjs.com/package/@asciidoctor/reveal.js[npmjs.com] -. Make binaries release -** Run `npm run package`. Binaries built will be in `dist/`. Upload them to the GitHub release page. -. Publish previously saved GitHub release draft -. Update version in `lib/asciidoctor-revealjs/version.rb` and `package.json` (+1 bugfix and append '-dev') -** Remove the "Slim compiled to Ruby" converter to the git tree (to avoid noise to the repo and `git status` noise) -+ - git rm --cached lib/asciidoctor-revealjs/converter.rb - -** commit msg: Begin development on next release -. Submit a PR upstream to sync the documentation on asciidoctor.org -** Modify this page: https://github.com/asciidoctor/asciidoctor.org/edit/master/docs/asciidoctor-revealjs.adoc -. Submit a PR downstream to update Asciidoctor reveal.js version inside docker-asciidoctor -** Modify the `Dockerfile`, `Makefile` and `README.adoc` of: https://github.com/asciidoctor/docker-asciidoctor -. Submit a PR downstream to update AsciidoctorJ reveal.js version -** Modify `gradle.properties`, `asciidoctorj-revealjs/gradle.properties` and `asciidoctorj-revealjs/build.gradle` in: https://github.com/asciidoctor/asciidoctorj-reveal.js - -== Ruby and asciidoctor-doctest tests - -=== Running tests - -We recommend tests to be run with a fresh install of all dependencies in a local folder that won't affect your ruby install (a `.bundle/` in this directory): - - bundle --path=.bundle/gems --binstubs=.bundle/.bin - -Then you can execute the tests with: - - bundle exec rake doctest - -However, if you have all dependencies properly installed this command should run the tests successfully: - - rake doctest - -=== Generating HTML test target - -Tests were bootstrapped by https://github.com/asciidoctor/asciidoctor-doctest/#generate-examples[generating them from asciidoctor-doctest's test corpus] and current asciidoctor-revealjs' slim template engine. -This is done using the following command: - - bundle exec rake doctest:generate FORCE=y - -=== Custom tests - -Files in the `examples/` directory are used as tests. -Resulting slides are kept in `test/doctest/`. - - -== Netlify Integration - -On every commit or PR, the https://www.netlify.com[Netlify] service will convert some examples into slides and host the resulting pages on its platform where it will be visible by anyone. -It hosts the converted HTML files, reveal.js framework and static content like images and CSS. -This integration will allow us to easily preview PRs and demo features to users (source and converted result). -See the `publish` rake task in `Rakefile` and the `netlify.toml` configuration file. - -=== Sensitive Data Accidentally Pushed Out - -Only content that is copied into the `public/` directory will be published on the Netlify site. -If, by accident, something sensitive is copied over there, delete it, rewrite the git history to remove the sensitive information and force push the branch. -Reach out to our netlify integration contact to make sure that deployed branches were rebuilt and no longer contain the sensitive information. - -=== Integration Contact - -Main Contact: https://github.com/Mogztter[@Mogztter] - -Also, in order to stay with a free plan, only the following people have control over our netlify integration: https://github.com/Mogztter[@Mogztter], https://github.com/mojavelinux[@mojavelinux] and https://github.com/graphitefriction[@graphitefriction]. diff --git a/docs/asciidoctor-reveal.js-master/LICENSE.adoc b/docs/asciidoctor-reveal.js-master/LICENSE.adoc deleted file mode 100644 index 3bce22d..0000000 --- a/docs/asciidoctor-reveal.js-master/LICENSE.adoc +++ /dev/null @@ -1,22 +0,0 @@ -.The MIT License -.... -Copyright (C) 2012-2020 Olivier Bilodeau, Charles Moulliard, Dan Allen and the Asciidoctor Project - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -.... diff --git a/docs/asciidoctor-reveal.js-master/Makefile b/docs/asciidoctor-reveal.js-master/Makefile deleted file mode 100644 index 71d7f7f..0000000 --- a/docs/asciidoctor-reveal.js-master/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Makefile for asciidoc based presentation - -TESTS=$(wildcard test/*.adoc) -MOST_RECENT=$(shell ls -t test/*.html | head -1) - -default: $(patsubst %.adoc,%.html,$(TESTS)) - -%.html: %.adoc - asciidoctor -T templates/slim -b revealjs $< - -open: - "$(shell which xdg-open || which open || which x-www-browser)" $(MOST_RECENT) - -clean: - rm -f test/*.html - -serve: - "$(shell which xdg-open || which open || which x-www-browser)" \ - http://localhost:8000/$(MOST_RECENT) - python2 -m SimpleHTTPServer 8000 diff --git a/docs/asciidoctor-reveal.js-master/README.adoc b/docs/asciidoctor-reveal.js-master/README.adoc deleted file mode 100644 index c5be884..0000000 --- a/docs/asciidoctor-reveal.js-master/README.adoc +++ /dev/null @@ -1,1388 +0,0 @@ -= Reveal.js converter for Asciidoctor -Olivier Bilodeau ; Guillaume Grossetie ; Dan Allen ; Rahman Usta ; Charles Moulliard -ifdef::env-github,env-browser[] -:toc: preamble -:toclevels: 2 -endif::[] -ifdef::env-github[] -:branch: master -:status: -:outfilesuffix: .adoc -:!toc-title: -:caution-caption: :fire: -:important-caption: :exclamation: -:note-caption: :paperclip: -:tip-caption: :bulb: -:warning-caption: :warning: -endif::[] -:uri-project-repo: https://github.com/asciidoctor/asciidoctor-reveal.js -:uri-asciidoctor: https://github.com/asciidoctor/asciidoctor -:uri-asciidoctorjs: https://github.com/asciidoctor/asciidoctor.js -:uri-revealjs-home: https://revealjs.com -:uri-revealjs-gh: https://github.com/hakimel/reveal.js/blob/v3.9 -:uri-revealjs-doc: {uri-revealjs-gh}/README.md -:uri-nodejs-download: https://nodejs.org/en/download/ -:showcasedir: showcase - -ifdef::env-github[] -image:https://travis-ci.org/asciidoctor/asciidoctor-reveal.js.svg?branch=master[Build Status,link=https://travis-ci.org/asciidoctor/asciidoctor-reveal.js] -image:http://img.shields.io/gem/v/asciidoctor-revealjs.svg[gem, link=https://rubygems.org/gems/asciidoctor-revealjs] -image:http://img.shields.io/npm/v/@asciidoctor/reveal.js.svg[npm, link=https://www.npmjs.org/package/@asciidoctor/reveal.js] -endif::[] - -// IMPORTANT: Changes made to this description should be sync'ed with the readme field in package.json. -{uri-project-repo}[Asciidoctor reveal.js] is a converter for {uri-asciidoctor}[Asciidoctor] and {uri-asciidoctorjs}[Asciidoctor.js] that transforms an AsciiDoc document into an HTML5 presentation designed to be executed by the {uri-revealjs-home}[reveal.js] presentation framework. - -TIP: Want to see some example presentations, see <> - -There are four main technology stacks that can convert AsciiDoc into HTML5 / reveal.js: - -* Asciidoctor / Ruby / Bundler (See <>) -* Asciidoctor.js / JavaScript (Node.js) / npm (See <>) -* Standalone Executable (See <>) -* AsciidoctorJ / JVM / Maven (See https://github.com/asciidoctor/asciidoctorj-reveal.js[this project]) - -ifeval::['{branch}' == 'master'] -NOTE: You're viewing the documentation for an upcoming release. -If you're looking for the documentation for the current release or an older one, please click on the appropriate link below: + -{uri-project-repo}/tree/v4.0.0#readme[4.0.1] (latest from 4.x series) -⁃ -{uri-project-repo}/tree/v3.1.0#readme[3.1.0] (latest from 3.x series) -⁃ -{uri-project-repo}/tree/reveal.js-2.x#readme[Unversioned pre-release] (compatible with reveal.js 2.x) -endif::[] - - -== Ruby Setup - -NOTE: To ensure repeatability, we recommend that you manage your presentation projects using http://bundler.io/[bundler]. - -=== Prerequisites - -. Install http://bundler.io/[bundler] (if not already installed) using your system's package manager or with: - - $ gem install bundler - -. If you're using RVM, make sure you switch away from any gemset: - - $ rvm use default -+ -or -+ - $ rvm use system - - -=== Install - -NOTE: These instructions should be repeated for every presentation project. - -. Create project directory - - $ mkdir my-awesome-presentation - $ cd my-awesome-presentation - -. Create a file named `Gemfile` with the following content: -+ -[source,ruby] ----- -source 'https://rubygems.org' - -gem 'asciidoctor-revealjs' # latest released version ----- -+ -NOTE: For some reason, when you use the system Ruby on Fedora, you also have to add the json gem to the Gemfile. -+ -. Install the gems into the project - - $ bundle config --local github.https true - $ bundle --path=.bundle/gems --binstubs=.bundle/.bin - -. Optional: Copy or clone reveal.js presentation framework. - Allows you to modify themes or view slides offline. - - $ git clone -b 3.9.2 --depth 1 https://github.com/hakimel/reveal.js.git - - -=== Rendering the AsciiDoc into slides - -. Create content in a file (*.adoc, *.ad, etc.). - See examples in <> section to get started. - -. Generate HTML presentation from the AsciiDoc source - - $ bundle exec asciidoctor-revealjs \ - -a revealjsdir=https://cdn.jsdelivr.net/npm/reveal.js@3.9.2 CONTENT_FILE.adoc - -. If you did the optional step of having a local reveal.js clone you can - convert AsciiDoc source with - - $ bundle exec asciidoctor-revealjs CONTENT_FILE.adoc - -TIP: If you are using https://pages.github.com/[GitHub Pages], plan ahead by keeping your source files on `master` branch and all output files on the `gh-pages` branch. - -=== Features Unique to the Ruby CLI - -Starting with 4.0.0 you can specify a set of custom templates to use instead of the ones provided by this project. -This can help you achieve even more concise AsciiDoc syntax and integration with reveal.js at the cost of more maintenance. - -To use it, add the following dependencies to your `Gemfile`: - - gem 'tilt', '~>2.0' - gem 'slim', '~>4.0' - -Then install the dependencies with: - - $ bundle install - -The feature is activated with the `--template-dir` or `-T` option: - - $ bundle exec asciidoctor-revealjs -T templates/ CONTENT_FILE.adoc - -Any individual template file not provided in the directory specified on the command-line will fall back to the template provided by your version of Asciidoctor reveal.js. -Refer to our https://github.com/asciidoctor/asciidoctor-reveal.js/tree/master/templates[templates] for inspiration. - -This feature hasn't been ported to the JavaScript CLI (and API) or the standalone executables. - - -== Node / JavaScript Setup - -=== Prerequisites - -First you must install and configure {uri-nodejs-download}[Node] on your machine. - -[[node-install]] -=== Install - -We recommend to install the dependencies in a project directory, such as the directory where your AsciiDoc presentations are stored. -If you don't have a `package.json` file in your project directory, you can create one to eliminate warnings during the installation using: - - $ npm init -y - -You can now install the dependencies: - - $ npm i --save asciidoctor@^2.0 @asciidoctor/reveal.js - -=== Convert AsciiDoc into slides - -Once the dependencies are installed, verify that the `asciidoctor-revealjs` command is available. -On Linux and macOS, open a terminal and type: - - $ npx asciidoctor-revealjs --version - -On Windows, open PowerShell and type: - - $ .\node_modules\.bin\asciidoctor-revealjs.cmd --version - -The command should report the Asciidoctor CLI version in the terminal: - -[source,console] ----- -Asciidoctor.js 2.0.3 (Asciidoctor 2.0.9) [https://asciidoctor.org] -Runtime Environment (node v10.15.1 on linux) -CLI version 2.0.1 ----- - -If you don't have an existing presentation, you can create a sample presentation named [.path]_presentation.adoc_: - -.presentation.adoc -[source,asciidoc] ----- -= Title Slide - -== Slide One - -* Foo -* Bar -* World - ----- - -To convert the sample presentation into slides, open a terminal and type: - - $ npx asciidoctor-revealjs presentation.adoc - -On windows, open PowerShell and type: - - $ .\node_modules\.bin\asciidoctor-revealjs.cmd presentation.adoc - -The above command will generate a file named [.path]_presentation.html_. -You can open this file in a browser. - -==== Using the JavaScript API - -Alternatively, you can use the JavaScript API to register the converter and convert a document: - -.convert-slides.js -[source,javascript] ----- -// Load Asciidoctor.js and the reveal.js converter -var asciidoctor = require('@asciidoctor/core')() -var asciidoctorRevealjs = require('@asciidoctor/reveal.js') -asciidoctorRevealjs.register() - -// Convert the document 'presentation.adoc' using the reveal.js converter -var options = { safe: 'safe', backend: 'revealjs' } -asciidoctor.convertFile('presentation.adoc', options) // <1> ----- -<1> Creates a file named `presentation.html` (in the directory where command is run) - -To execute the script, open a terminal and type: - - $ node convert-slides.js - -You can open the `presentation.html` file in your browser and enjoy! - - -== Standalone Executable - -Pre-built binary packages can be downloaded from our {uri-project-repo}/releases[GitHub release page]. -We provide them for Windows 64-bit, Linux 64-bit and macOS 64-bit. -Open an issue if your platform isn't supported. -The executables are built using the <> toolchain. - -=== Install - -* {uri-project-repo}/releases[Download the executable] for your platform and make it executable with `chmod` or using the files properties' user interface. -* Copy or clone the reveal.js presentation framework in the directory where you will build your slidedeck. - Here we do a shallow clone of the repo: - - $ git clone -b 3.9.2 --depth 1 https://github.com/hakimel/reveal.js.git - -=== Convert AsciiDoc into slides - -Open a terminal where the executable is and type: - - $ ./asciidoctor-revealjs --version - -The command should report the Asciidoctor reveal.js and Asciidoctor CLI version in the terminal: - -[source,console] ----- -Asciidoctor reveal.js 3.0.1 using Asciidoctor.js 2.0.3 (Asciidoctor 2.0.9) [https://asciidoctor.org] -Runtime Environment (node v12.13.1 on linux) -CLI version 3.1.0 ----- - -If you don't have an existing presentation, you can create a sample presentation named [.path]_presentation.adoc_: - -.presentation.adoc -[source,asciidoc] ----- -= Title Slide -:revealjsdir: reveal.js - -== Slide One - -* Foo -* Bar -* World - ----- - -To convert the sample presentation into slides, open a terminal and type: - - $ ./asciidoctor-revealjs presentation.adoc - -The above command will generate a file named [.path]_presentation.html_. -You can open this file in a browser. - - -== Syntax Examples - -Let's see some examples of `revealjs` backend features. -Additional examples can be found in the AsciiDoc files (.adoc) in `examples/`. - -=== Basic presentation with speaker notes - -[source, asciidoc] ----- -= Title Slide - -== Slide One - -* Foo -* Bar -* World - -== Slide Two - -A Great Story - -[.notes] --- -* tell anecdote -* make a point --- ----- - -In previous snippet we are creating a slide titled Slide One with bullets and another one titled Slide Two with centered text (reveal.js`' default behavior) with {uri-revealjs-doc}#speaker-notes[speaker notes]. -Other syntax exists to create speaker notes, see `examples/speaker-notes.adoc`. - -Starting with Reveal.js 3.5 speaker notes supports configurable layouts: -image:https://cloud.githubusercontent.com/assets/629429/21808439/b941eb52-d743-11e6-9936-44ef80c60580.gif[] - -Speaker notes are opened by pressing `s`. -With Reveal.js 3.5 they require a webserver to work. -This limitation is not present in 3.6. -You can get a Web server running quickly with: - - ruby -run -e httpd . -p 5000 -b 127.0.0.1 - -Then use your browser to navigate to the URL \http://localhost:5000. - -=== Slides without titles - -There are a few ways to have no titles on slides. - -* Setting your title to `!` -* Adding the `notitle` option to your slide -* Adding the `conceal` option to your slide - -ifeval::[{safe-mode-level} >= 20] -See <>. -endif::[] -ifeval::[{safe-mode-level} < 20] -Here is an example of the three techniques in action: - -.concealed-slide-titles.adoc -[source,asciidoc] -.... -include::examples/concealed-slide-titles.adoc[lines=5..-1] -.... -endif::[] - -NOTE: `conceal` and `notitle` have the advantage that the slide still has an id so it can be linked to. - -IMPORTANT: Like the first page of an AsciiDoc document, the first slide is handled differently. - To hide the whole slide use the `:notitle:` http://asciidoctor.org/docs/user-manual/#header-summary[document attribute]. - To achieve the effect of hiding only the first slide's title, combine the `:notitle:` attribute on the first slide and use `[%notitle]` on the second slide which will, in effect, be your first slide now. - - -=== Background Colors - -Background colors for slides can be specified by two means: a classic one and one using AsciiDoc roles. -See <> for more examples. - -==== Using AsciiDoc Roles - -Using roles respects the AsciiDoc philosophy of separation of content and presentation. -Colors are to be defined by CSS and the <> need to be used to specify the CSS file to load. -To avoid clashing with existing reveal.js themes or CSS, a specific CSS class called `background` is expected to be present. -Here is an example: - - -[source, asciidoc] ----- -= Title -:customcss: my-css.css - -[.red.background] -== Slide One - -Is very red ----- - -.my-css.css -[source, css] ----- -section.red.background { - background-color: red; -} ----- - -NOTE: The `canvas` keyword can be used instead of `background` for the same effect. - -==== Classic - -[source, asciidoc] ----- -[background-color="yellow"] -== Slide Three - -Is very yellow ----- - -Slide Three applies the attribute {uri-revealjs-doc}#slide-backgrounds[data-background-color] to the `reveal.js`
tag. -Anything accepted by CSS color formats works. - - -=== Background images - -[source, asciidoc] ----- -[%notitle] -== Grand Announcement - -image::cover.jpg[background, size=cover] ----- - -This will put `cover.jpg` as the slide's background image. -It sets reveal.js`' `data-background-image` attribute. -The `size` attribute is also supported. -See the {uri-revealjs-doc}#image-backgrounds[relevant reveal.js documentation] for details. - -NOTE: Background images file names are now relative to the `:imagesdir:` attribute if set. - -NOTE: The `canvas` keyword can be used instead of `background` for the same effect. - -[source, asciidoc] ----- -[%notitle] -== The Great Goat - -image::https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg[canvas,size=contain] ----- - -As you can see, you can use a URL to specify your image resource too. - - -[#background_videos] -=== Background videos - -A background video for a slide can be specified using the `background-video` element attribute. - -[source, asciidoc] ----- -[background-video="https://my.video/file.mp4",background-video-loop=true,background-video-muted=true] -== Nice background! ----- - -For convenience `background-video-loop` and `background-video-muted` attributes are mapped to `loop` and `muted` options which can be specified with `options="loop,muted"`. - -For example: - -[source, asciidoc] ----- -[background-video="https://my.video/file.mp4",options="loop,muted"] -== Nice background! ----- - -See {uri-revealjs-doc}#video-backgrounds[the relevant reveal.js documentation] for details. -Note that the `data-` prefix is not required in asciidoc files. - - -=== Background iframes - -The background can be replaced with anything a browser can render in an iframe using the `background-iframe` reveal.js feature. - -[source, asciidoc] ----- -[%notitle,background-iframe="https://www.youtube.com/embed/LaApqL4QjH8?rel=0&start=3&enablejsapi=1&autoplay=1&loop=1&controls=0&modestbranding=1"] -== a youtube video ----- - -See {uri-revealjs-doc}#iframe-backgrounds[the relevant reveal.js documentation] for details. - - -=== Slide Transitions - -[source, asciidoc] ----- -[transition=zoom, %notitle] -== Zoom zoom - -This slide will override the presentation transition and zoom! - -[transition-speed=fast, %notitle] -== Speed - -Choose from three transition speeds: default, fast or slow! ----- - -See {uri-revealjs-doc}#slide-transitions[the relevant reveal.js documentation] for details. - - -=== Fragments - -[source, asciidoc] ----- -== Slide Four - -[%step] -* this -* is -* revealed -* gradually ----- - -Slide Four has bullets that are revealed one after the other. -This is what `reveal.js` calls {uri-revealjs-home}/fragments[fragments]. -Applying the step option or role on a list (`[%step]` or `[.step]`) will do the trick. -Here is {uri-revealjs-doc}#fragments[the relevant reveal.js -documentation] on the topic. -Note that only `fade-in` is supported for lists at the moment. - - -=== Stretch class attribute - -Reveal.js supports a special class that will give all available screen space to an HTML node. -This class element is named `stretch`. - -Sometimes it's desirable to have an element, like an image or video, stretch to consume as much space as possible within a given slide. - -To apply that class to block simply use asciidoctor's class assignment: - - [.stretch] - -See {uri-revealjs-doc}#stretching-elements[reveal.js documentation on stretching elements]. - - -=== Videos - -In addition to <>, videos can be inserted directly into slides. -The syntax is the standard http://asciidoctor.org/docs/user-manual/#video[asciidoc video block macro] syntax. - -[source, asciidoc] ----- -== Trains, we love trains! - -video::kZH9JtPBq7k[youtube, start=34, options=autoplay] ----- - -By default videos are given as much space as possible. -To override that behavior use the `width` and `height` named attributes. - - -=== Syntax highlighting - -reveal.js is well integrated with https://highlightjs.org/[Highlight.js] for syntax highlighting. -Asciidoctor reveal.js supports that. -You can activate Highlight.js syntax highlighting (disabled by default) by setting the `source-highlighter` document attribute as follows: - -[source, asciidoc] ----- -= Presentation Title -// [...] other document attributes -:source-highlighter: highlightjs ----- - -[NOTE] -==== -By default, we are using a prebuilt version of Highlight.js with 34 commonly used languages hosted on https://cdnjs.com/[cdnjs]. -You can load additionnal languages using the `:highlightjs-languages:` attribute: - -``` -// load yaml and scilab languages -:highlightjs-languages: yaml, scilab -``` - -You can also load Highlight.js from a custom base directory (or remote URL) using the `:highlightjsdir:` attribute: - -``` -// load from a local path -:highlightjsdir: highlight -// load from jsdelivr CDN -//:highlightjsdir: https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.0/build -==== - -Once enabled, you can write code blocks as usual: - -[source, asciidoc] -.... -== Slide Five - -Uses highlighted code - -[source, python] ----- -print "Hello World" ----- -.... - -By default `[source]` blocks and blocks delimited by `----` will be highlighted. -An explicit `[listing]` block will not be highlighted. -`highlight.js` does language auto-detection but using the `language="..."` attribute will hint the highlighter. -For example this will highlight this source code as Perl: - -[source, asciidoc] -.... -== Slide Five - -[source,perl] ----- -print "$0: hello world\n" ----- -.... - -[NOTE] -Alternatively, you can use http://rouge.jneen.net/[Rouge], http://coderay.rubychan.de[Coderay] or http://pygments.org[Pygments] as syntax highlighters, -if you are using the Asciidoctor/Ruby/Bundler toolchain (not Asciidoctor.js/JavaScript/npm). -Check the `examples/` directory for examples and notes about what needs to be done for them to work. -They are considered unsupported by the asciidoctor-reveal.js project. - - -=== Vertical slides - -[source, asciidoc] -.... -== Slide Six - -Top slide - -=== Slide Six.One - -This is a vertical subslide -.... - -Slide Six uses the vertical slide feature of `reveal.js`. -Slide Six.One will be rendered vertically below Slide Six. -Here is {uri-revealjs-doc}#markup[the relevant reveal.js -documentation] on that topic. - -=== Columns layout - -Inspired by https://bulma.io/[Bulma], Asciidoctor reveal.js supports columns layout out-of-the-box: - -[source, asciidoc] -.... -[.columns] -== 2 columns - -[.column] --- -* **Edgar Allen Poe** -* Sheri S. Tepper -* Bill Bryson --- - -[.column] --- -Edgar Allan Poe (/poʊ/; born Edgar Poe; January 19, 1809 – October 7, 1849) was an American writer, editor, and literary critic. --- -.... - -If you do not specify a size, each column will have an equal width, no matter the number of columns. - -[source, asciidoc] -.... -[.columns] -== 3 columns - -[.column] -* Java -* **Kotlin** - -[.column] -* Node -* **Deno** - -[.column] -* Ruby -* **Crystal** -.... - -If you want to change the size of a single column, you can use one of the following classes: - -* `is-three-quarters` -* `is-two-thirds` -* `is-half` -* `is-one-third` -* `is-one-quarter` -* `is-full` - -The other columns will fill up the remaining space automatically. + -You can use the following multiples of 20% as well: - -* `is-four-fifths` -* `is-three-fifths` -* `is-two-fifths` -* `is-one-fifth` - -[source, asciidoc] -.... -[.columns] -== Columns with size - -[.column.is-one-third] --- -* **Kotlin** -* Java -* Scala --- - -[.column] --- -Programming language for Android, mobile cross-platform -and web development, server-side, native, -and data science. Open source forever Github. --- -.... - -The vertical alignment of columns defaults to top aligned. -Content can be centered by adding the `is-vcentered` class to the slide. - -[source, asciidoc] -.... -[.columns.is-vcentered] -== Columns Vertically Centered - -[.column] --- -* Few -* Bullets -* Here --- - -[.column] -image::large-image.png[] -.... - -Text alignment of columns is also supported. -Text content on individual columns can be aligned with `has-text-left`, `has-text-right` and `has-text-justified` CSS classes. - -[source, asciidoc] -.... -[.columns] -== Column Text Alignment - -[.column.has-text-left] --- -Something Short - -Something So Long That We Need It Aligned --- - -[.column.has-text-justified] -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - -[.column.has-text-right] --- -Something Short - -Something So Long That We Need It Aligned --- -.... - - -=== Asciidoctor reveal.js specific roles - -Roles are usually applied with the following syntax where the `important-text` CSS class would be applied to the slide title in the generated HTML: - -[source, asciidoc] -.... -[.important-text] -== Slide Title - -* Some -* Information -.... - -Or - -[source, asciidoc] -.... -[role="important-text"] -== Slide Title - -* Some -* Information -.... - -See https://asciidoctor.org/docs/user-manual/#role[Asciidoctor's documentation] for more details. - -.Image specific note -In addition to the https://asciidoctor.org/docs/user-manual/\#positioning-attributes[existing attributes] to position images, roles can be used as well. However, the shorthand syntax (.) doesn't work in the image macro arguments but must be used above with the angle bracket syntax. -See <> for examples. - -Here is a list of supported roles: - -right:: Will apply a `float: right` style to the affected block - - -=== Asciidoctor reveal.js specific attributes - -==== iFrame Preview Overlay - -The reveal.js feature activated by a global `previewLinks: true` configuration or by adding the `data-preview-link` HTML attribute to `` tags can be activated by using special AsciiDoc attributes. - -On links use the `preview=true` attribute, on images use the `link_preview=true` attribute and globally you can set `:revealjs_previewlinks:` attribute. - -See <> and <> for examples. - - -=== Title slide customization - -The title slide is customized via Asciidoc attributes. -These are the global variable assigned at the top of a document under the lead -title that look like this: `:name: value`. - -This converter supports changing the color, image, video, iframe and -transitions of the title slide. - -Read {uri-revealjs-doc}#slide-backgrounds[the relevant reveal.js documentation] to understand what attributes need to be set. -Keep in mind that for title slides you must replace `data-` with `title-slide-`. - -ifeval::[{safe-mode-level} >= 20] -See <>. -endif::[] -ifeval::[{safe-mode-level} < 20] -Here is an example: - -.title-slide-image.adoc -[source,asciidoc] -.... -include::examples/title-slide-image.adoc[lines=5..-1] -.... -endif::[] - -The title slide is also added a `title` CSS class to help with template customization. - -=== Content meant for multiple converters - -Some content can be created with both slides and book in mind. - -To mark slides split points you can use preprocessor conditionals combined -with a backend declaration. -Breaking points are set using slides with no title `=== !` wrapped in a -conditional: `ifdef::backend-revealjs[=== !]`. -In the end, the whole document has to be compiled with the backend option: -`-b revealjs` - -For example: - -[source, asciidoc] ----- -== Main section - -=== Sub Section - -Small + -Multiline + -intro - -. very -. long -. list -. of -. items - -\ifdef::backend-revealjs[=== !] - -Some overview diagram - -\ifdef::backend-revealjs[=== !] - -Detailed view diagram ----- - - -[[customcss]] -=== CSS override - -If you use the `:customcss:` document attribute, a CSS file of the name given in the attribute is added to the list of CSS resources loaded by the rendered HTML. -Doing so, you can then easily override specific elements of your theme per presentation. - -For example, to do proper position-independent text placement of a title slide with a specific background you can use: - -[source, css] ----- -.reveal section.title h1 { - margin-top: 2.3em; -} - -.reveal section.title small { - margin-top: 15.3em; - font-weight: bold; - color: white; -} ----- - -If the `:customcss:` attribute value is empty then `asciidoctor-revealjs.css` is the CSS resource that the presentation is linked to. - - -=== Slide state - -Reveal.js supports a {uri-revealjs-doc}#slide-states[data-state] tag that can be added on slides which gets rendered into `
` tags. -In AsciiDoc the `data-state` can be applied to a slide by adding a state attribute to a section like this: - -[source, asciidoc] ----- -[state=topic] -== Epic Topic ----- - -That state can be queried from JavaScript or used in CSS to apply further customization to your slide deck. -For example, by combining this feature with the <> one, you can alter fonts for specific pages with this CSS: - -[source, css] ----- -@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; - -section[data-state="topic"] h2 { - font-family: 'Baloo Bhai', cursive; - font-size: 4em; -} ----- - -=== Admonitions - -Asciidoctor font-based http://asciidoctor.org/docs/user-manual/#admonition[admonitions] are supported. -Make sure to add the following attribute to your document: - -[source, asciidoc] ----- -:icons: font ----- - -Here is an example slide: - -[source, asciidoc] ----- -== But first - -WARNING: This presentation is dangerous! ----- - -Here are details about Asciidoctor's http://asciidoctor.org/docs/user-manual/#admonition-icons[Admonition icons] support. - -=== Supplemental Content with Docinfo -// Originally from https://github.com/asciidoctor/asciidoctor-bespoke#supplemental-content - -It's possible to inject supplemental content into the output document using http://asciidoctor.org/docs/user-manual/#docinfo-file[docinfo files]. -This core feature of AsciiDoc has been adapted to work with the reveal.js converter. - -Currently, there are three insertion locations for docinfo content in a reveal.js document: - -head:: content is inserted after the last child of the `` element -header:: content is inserted before the first child of the `
` element (before the slides) -footer:: content is inserted after the last child of the `
` element (after the slides) - -The content you want to insert goes into a sibling file of the slide deck document with the following filename patterns: - -head:: `docinfo-revealjs.html` -header:: `docinfo-header-revealjs.html` -footer:: `docinfo-footer-revealjs.html` - -For example, let's say you want to embed a tweet into your slide deck. -You might inject the shared embedding JavaScript using a footer docinfo file: - -.src/docinfo-footer-revealjs.html -[source,html] ----- - ----- - -You then need to set the following document attribute in the AsciiDoc header: - ----- -:docinfo: shared ----- - -When this attribute is defined, the converter will automatically read the docinfo file(s) and insert the contents into the specified location in the output document. - - -== Reveal.js Options - -Some attributes can be set at the top of the document that are specific to the `reveal.js` converter. -They use the same name as in the `reveal.js` project except that they are prepended by `revealjs_` and case doesn't matter. -They are applied in the link:templates/document.html.slim[document template]. - -NOTE: Default settings are based on `reveal.js` default settings. - -[cols="1m,1,2"] -|=== -|Attribute |Value(s) |Description - -|:revealjs_theme: -|beige, *black*, league, night, serif, simple, sky, solarized, white -|Chooses one of reveal.js`' {uri-revealjs-doc}#theming[built-in themes]. - -|:revealjs_customtheme: -| -|Overrides CSS with given file or URL. -Default is disabled. - -|:highlightjs-theme: -| -|Overrides https://highlightjs.org[highlight.js] CSS style with given file or URL. -Default is built-in [path]_lib/css/zenburn.css_. - -|:revealjsdir: -| -|Overrides reveal.js directory. -Example: ../reveal.js or -https://cdn.jsdelivr.net/npm/reveal.js@3.9.2. -Default is `reveal.js/` unless in a Node.js environment where it is `node_modules/reveal.js/`. - -|:revealjs_controls: -|*true*, false -|Display presentation control arrows - -|:revealjs_controlsTutorial: -|*true*, false -|Help the user learn the controls by providing hints, for example by bouncing the down arrow when they first encounter a vertical slide - -|:revealjs_controlsLayout: -|edges, *bottom-right* -|Determines where controls appear, "edges" or "bottom-right" - -|:revealjs_controlsBackArrows: -|*faded*, hidden, visible -|Visibility rule for backwards navigation arrows; "faded", "hidden" or "visible" - -|:revealjs_progress: -|*true*, false -|Display a presentation progress bar. - -|:revealjs_slideNumber: -|true, *false*, h.v, h/v, c, c/t -a|Display the page number of the current slide. -*true* will display the slide number with default formatting. -Additional formatting is available: - -h.v:: horizontal . vertical slide number (default) -h/v:: horizontal / vertical slide number -c:: flattened slide number -c/t:: flattened slide number / total slides - -|:revealjs_showSlideNumber: -|*all*, speaker, print -a|Control which views the slide number displays on using the "showSlideNumber" value: - -all:: show on all views (default) -speaker:: only show slide numbers on speaker notes view -print:: only show slide numbers when printing to PDF - -|:revealjs_hash: -|true, *false* -|Add the current slide number to the URL hash so that reloading the page/copying the URL will return you to the same slide - -|:revealjs_history: -|true, *false* -|Push each slide change to the browser history. Implies `hash: true` - -|:revealjs_keyboard: -|*true*, false -|Enable keyboard shortcuts for navigation. - -|:revealjs_overview: -|*true*, false -|Enable the slide overview mode. - -|:revealjs_touch: -|*true*, false -|Enables touch navigation on devices with touch input. - -|:revealjs_center: -|*true*, false -|Vertical centering of slides. - -|:revealjs_loop: -|true, *false* -|Loop the presentation. - -|:revealjs_rtl: -|true, *false* -|Change the presentation direction to be RTL. - -|:revealjs_navigationMode: -|*default*, linear, grid -|See {uri-revealjs-doc}#navigation-mode for details - -|:revealjs_shuffle: -|true, *false* -|Randomizes the order of slides each time the presentation loads - -|:revealjs_fragments: -|*true*, false -|Turns fragments on and off globally. - -|:revealjs_fragmentInURL: -|true, *false* -|Flags whether to include the current fragment in the URL, so that reloading brings you to the same fragment position - -|:revealjs_embedded: -|true, *false* -|Flags if the presentation is running in an embedded mode (i.e., contained within a limited portion of the screen). - -|:revealjs_help: -|*true*, false -|Flags if we should show a help overlay when the questionmark key is pressed - -|:revealjs_showNotes: -|*true*, false -|Flags if speaker notes should be visible to all viewers - -|:revealjs_autoPlayMedia: -|*null*, true, false -a|Global override for autolaying embedded media (video/audio/iframe) - -null:: Media will only autoplay if data-autoplay is present -true:: All media will autoplay, regardless of individual setting -false:: No media will autoplay, regardless of individual setting - -|:revealjs_preloadIframes: -|*null*, true, false -a|Global override for preloading lazy-loaded iframes - -null:: Iframes with `data-src` AND `data-preload` will be loaded when within the `viewDistance`, iframes with only `data-src` will be loaded when visible -true:: All iframes with `data-src` will be loaded when within the `viewDistance` -false:: All iframes with `data-src` will be loaded only when visible - -|:revealjs_autoSlide: -| -|Delay in milliseconds between automatically proceeding to the next slide. -Disabled when set to *0* (the default). -This value can be overwritten by using a `data-autoslide` attribute on your slides. - -|:revealjs_autoSlideStoppable: -|*true*, false -|Stop auto-sliding after user input. - -|:revealjs_autoSlideMethod: -|*Reveal.navigateNext* -|Use this method for navigation when auto-sliding - -|:revealjs_defaultTiming: -| -|Specify the average time in seconds that you think you will spend presenting each slide. -This is used to show a pacing timer in the speaker view. -Defaults to *120* - -|:revealjs_totalTime: -| -|Specify the total time in seconds that is available to present. -If this is set to a nonzero value, the pacing timer will work out the time available for each slide, instead of using the defaultTiming value. -Defaults to *0* - -|:revealjs_minimumTimePerSlide: -| -|Specify the minimum amount of time you want to allot to each slide, if using the totalTime calculation method. -If the automated time allocation causes slide pacing to fall below this threshold, then you will see an alert in the speaker notes window. -Defaults to *0*. - -|:revealjs_mouseWheel: -|true, *false* -|Enable slide navigation via mouse wheel. - -|:revealjs_hideInactiveCursor: -|*true*, false -|Hide cursor if inactive - -|:revealjs_hideCursorTime: -| -|Time before the cursor is hidden (in ms). -Defaults to *5000*. - -|:revealjs_hideAddressBar: -|*true*, false -|Hides the address bar on mobile devices. - -|:revealjs_previewLinks: -|true, *false* -|Opens links in an iframe preview overlay. -Add the `preview=true` attribute on links or `link_preview=true` attribute on images to customize each link individually. - -|:revealjs_transition: -|none, fade, *slide*, convex, concave, zoom -|Transition style. - -|:revealjs_transitionSpeed: -|*default*, fast, slow -|Transition speed. - -|:revealjs_backgroundTransition: -|none, *fade*, slide, convex, concave, zoom -|Transition style for full page slide backgrounds. - -|:revealjs_viewDistance: -| -|Number of slides away from the current that are visible. -Default: *3*. - -|:revealjs_mobileViewDistance: -| -|Number of slides away from the current that are visible on mobile devices. -It is advisable to set this to a lower number than viewDistance in order to save resources. -Default *3*. - -|:revealjs_parallaxBackgroundImage: -| -|Parallax background image. -Defaults to none - -|:revealjs_parallaxBackgroundSize: -| -|Parallax background size (accepts any CSS syntax). -Defaults to none - -|:revealjs_parallaxBackgroundHorizontal: -| -a|Number of pixels to move the parallax background per slide - -- Calculated automatically unless specified -- Set to 0 to disable movement along an axis - -|:revealjs_parallaxBackgroundVertical: -| -a|Number of pixels to move the parallax background per slide - -- Calculated automatically unless specified -- Set to 0 to disable movement along an axis - -|:revealjs_display: -| -|The display mode that will be used to show slides. -Defaults to *block* - -|:revealjs_width: -| -| Independent from the values, the aspect ratio will be preserved - when scaled to fit different resolutions. Defaults to *960* - -|:revealjs_height: -| -| See `:revealjs_width:`. Defaults to *700* - -|:revealjs_margin: -| -| Factor of the display size that should remain empty around the content. Defaults to *0.1* - -|:revealjs_pdfseparatefragments: -|*true*, false -|In PDF export, put each fragment on a separate page. -Defaults to *true* - -|:revealjs_pdfmaxpagesperslide: -| -|In PDF export, when a slide does not fit on a single page, maximum number of pages. -Defaults to *1* - -|=== - -If you want to build a custom theme or customize an existing one you should -look at the -{uri-revealjs-gh}/css/theme/README.md[reveal.js -theme documentation] and use the `revealjs_customtheme` AsciiDoc attribute to -activate it. - - -=== PDF Export - -Follow {uri-revealjs-doc}#pdf-export[reveal.js' documentation] for PDF export. -We would add that we have successfully used PDF export without the requirement of a Web server. - - -=== Default plugins - -By default, generated presentations will have the following reveal.js plugins enabled: - -* plugin/zoom-js/zoom.js -* plugin/notes/notes.js - -All these plugins are part of the reveal.js distribution. - -To enable or disable a built-in plugin, it is possible to set the `revealjs_plugin_[plugin name]` attribute to `enable` or `disable`. - -For example, to disable all the default plugins set the following document attributes: - ----- -:revealjs_plugin_zoom: disabled -:revealjs_plugin_notes: disabled ----- - - -=== Additional plugins - -Additional reveal.js plugins can be installed and activated using AsciiDoc attributes and external javascript files. - -. Extract the plugin files in a directory -. Create a JavaScript file that will contain the JavaScript statements to load the plugin (only one required even if you are using several plugins) -. Add a `:revealjs_plugins:` attribute to point to that JavaScript file -. (Optional) Add a `:revealjs_plugins_configuration:` attribute to point to a JavaScript file that configures the plugins you use - -Looking at the example provided in the repository will provide guidance: link:examples/revealjs-plugins.adoc[AsciiDoc source], link:examples/revealjs-plugins.js[Plugin Loader], link:examples/revealjs-plugins-conf.js[Plugin Configuration]. - -Read {uri-revealjs-doc}#dependencies[the relevant reveal.js documentation] to understand more about reveal.js plugins. -A {uri-revealjs-gh}/wiki/Plugins,-Tools-and-Hardware[list of existing reveal.js plugins] is also maintained upstream. - - -== Minimum Requirements - -Our requirements are expressed in our packages and by our dependencies. -Basically, all you need is the package manager of the flavor of Asciidoctor reveal.js you are interested to run: - -* With Ruby / Bundler: A https://www.ruby-lang.org/en/downloads/[recent Ruby] and https://bundler.io/[Bundler] -* With JavaScript (Node.js) / npm: a https://nodejs.org/en/download/[recent Node.js] environment - -If you need more details about our dependencies check out Asciidoctor dependencies: - -* With Ruby / Bundler: https://github.com/asciidoctor/asciidoctor/tree/v2.0.10#requirements[Asciidoctor] 2.0.10 -* With JavaScript (Node.js) / NPM: https://github.com/asciidoctor/asciidoctor.js/blob/v2.0.3/packages/core/package.json[Asciidoctor.js] 2.0.3 - - -[[revealjs-compatibility-matrix]] -== reveal.js Compatibility Matrix - -We try as much as possible to be compatible with a broad range of reveal.js versions. -However, changes made by that project sometimes forces us to drop compatibility with older reveal.js releases. -This table tracks this compatibility. - -|=== -|Asciidoctor reveal.js version |reveal.js version - -|4.x -|3.9 - 3.8 - -|3.x, 2.x, 1.x -|3.7 - 3.0 - -|Unversioned releases -|2.x -|=== - - -[[asciidoctorjs-compatibility-matrix]] -== Asciidoctor.js Compatibility Matrix - -NOTE: This section is intended only for more advanced users who combine extensions or maintain slide decks over many releases and need to update their dependencies. - -Due to our Ruby to JavaScript conversion process, published npm packages have strict requirements with which version of Asciidoctor.js they are compatible with. -This table tracks this compatibility. - -|=== -|Asciidoctor-reveal.js version |Asciidoctor.js version - -|3.x -|2.x - -|2.x -|1.5.9 - -|1.1.x -|1.5.6-preview.4 -|=== - -Be aware that it is always possible to recompile the converter into JavaScript from source so compatibility can be created by anyone if needed. -More details on that topic can be found link:HACKING.adoc#node-binary-compatibility[in the development guide]. - - -== Showcase Presentations - -=== Power Catchup -- Everything Practical and Important in Java 9 to 13 - -A smooth presentation, featuring video backgrounds, slide transitions, code and callout examples and the use of notes. - -https://bentolor.github.io/java9to13/[Presentation] and https://github.com/bentolor/java9to13[source] - -==== Screenshots - -image:{showcasedir}/java9to13_4.png[width=200,link=./{showcasedir}/java9to13_4.png] image:{showcasedir}/java9to13_1.jpg[width=200,link={showcasedir}/java9to13_1.jpg] - -image:{showcasedir}/java9to13_2.jpg[width=200,link={showcasedir}/java9to13_2.jpg] -image:{showcasedir}/java9to13_3.png[width=200,link={showcasedir}/java9to13_3.png] - - -== Contributing - -Interested in contributing? -We are interested! -Developer-focused documentation is link:HACKING.adoc[over here]. - - -== Copyright and Licensing - -Copyright (C) 2012-2020 {authors} and the Asciidoctor Project. -Free use of this software is granted under the terms of the MIT License. - -ifdef::env-github,env-browser[See the <> file for details.] diff --git a/docs/asciidoctor-reveal.js-master/README.md b/docs/asciidoctor-reveal.js-master/README.md deleted file mode 100644 index 29cfff6..0000000 --- a/docs/asciidoctor-reveal.js-master/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# reveal.js converter for Asciidoctor.js - -A reveal.js converter for [Asciidoctor.js](https://github.com/asciidoctor/asciidoctor.js) that transforms an AsciiDoc document into an HTML5 presentation designed to be executed by the [reveal.js](http://lab.hakim.se/reveal-js/) presentation framework. - -For setup instructions and the AsciiDoc syntax to use to write a presentation see the module's documentation at [https://github.com/asciidoctor/asciidoctor-reveal.js](https://github.com/asciidoctor/asciidoctor-reveal.js). diff --git a/docs/asciidoctor-reveal.js-master/Rakefile b/docs/asciidoctor-reveal.js-master/Rakefile deleted file mode 100644 index 79ca429..0000000 --- a/docs/asciidoctor-reveal.js-master/Rakefile +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env rake - -require 'asciidoctor' -require 'asciidoctor/doctest' -require 'colorize' -require 'tilt' -require 'rake/testtask' - -CONVERTER_FILE = 'lib/asciidoctor-revealjs/converter.rb' -JS_FILE = 'build/asciidoctor-reveal.js' -DIST_FILE = 'dist/main.js' -TEMPLATES_DIR = 'templates' -PUBLIC_DIR = 'public' - -file CONVERTER_FILE => FileList["#{TEMPLATES_DIR}/*"] do - build_converter :fast -end - -namespace :build do - desc 'Compile Slim templates and generate converter.rb' - task :converter => 'clean' do - # NOTE: use :pretty if you want to debug the generated code - build_converter :fast - end - - desc 'Compile Slim templates and generate converter.rb for Opal' - task 'converter:opal' => 'clean' do - build_converter :opal - end - - desc "Transcompile to JavaScript and generate #{JS_FILE}" - task :js => 'converter:opal' do - require 'opal' - - builder = Opal::Builder.new(compiler_options: { - dynamic_require_severity: :error, - }) - builder.append_paths 'lib' - builder.build 'asciidoctor-revealjs' - - mkdir_p [File.dirname(JS_FILE), File.dirname(DIST_FILE)] - File.open(JS_FILE, 'w') do |file| - template = File.read('src/asciidoctor-revealjs.tmpl.js') - template['//OPAL-GENERATED-CODE//'] = builder.to_s - file << template - end - File.binwrite "#{JS_FILE}.map", builder.source_map - - cp JS_FILE, DIST_FILE, :verbose => true - end -end - -task :build => 'build:converter' - -task :clean do - rm_rf CONVERTER_FILE - rm_rf PUBLIC_DIR -end - -def build_converter(mode = :pretty) - #require 'asciidoctor-templates-compiler' - require_relative 'lib/asciidoctor-templates-compiler' - require 'slim-htag' - - generator = if mode == :opal - Temple::Generators::ArrayBuffer.new(freeze_static: false) - else - Temple::Generators::StringBuffer - end - - File.open(CONVERTER_FILE, 'w') do |file| - puts "Generating #{file.path} (mode: #{mode})." - - Asciidoctor::TemplatesCompiler::RevealjsSlim.compile_converter( - templates_dir: TEMPLATES_DIR, - class_name: 'Asciidoctor::Revealjs::Converter', - register_for: ['revealjs', 'reveal.js'], - backend_info: { - basebackend: 'html', - outfilesuffix: '.html', - filetype: 'html', - supports_templates: true - }, - delegate_backend: 'html5', - engine_opts: { - generator: generator, - }, - pretty: (mode == :pretty), - output: file - ) - end -end - -DocTest::RakeTasks.new do |t| - t.output_examples :html, path: 'test/doctest' - t.input_examples :asciidoc, path: [ *DocTest.examples_path, 'examples' ] - t.converter = DocTest::HTML::Converter - t.converter_opts = { backend_name: 'revealjs' } -end - -Rake::TestTask.new(:test) do |t| - t.test_files = FileList['test/asciidoctor-revealjs/*_test.rb'] - t.warning = false -end - -task 'prepare-converter' do - # Run as an external process to ensure that it will not affect tests - # environment with extra loaded modules (especially slim). - `bundle exec rake #{CONVERTER_FILE}` - - require_relative 'lib/asciidoctor-revealjs' -end - -namespace :examples do - desc 'Converts all the test slides into fully working examples that you can look in a browser' - # converted slides will be put in examples/ directory - task :convert do - require 'slim-htag' - require_relative 'lib/asciidoctor-revealjs' - Dir.glob('examples/*.adoc') do |_file| - print "Converting file #{_file}... " - out = Asciidoctor.convert_file _file, - :safe => 'safe', - :backend => 'revealjs', - :base_dir => 'examples', - :template_dir => 'templates' - if out.instance_of? Asciidoctor::Document - puts "✔️".green - else - puts "✖️".red - end - end - end - - task :serve do - puts "View rendered examples at: http://127.0.0.1:5000/" - puts "Exit with Ctrl-C" - Dir.chdir('examples') do - `ruby -run -e httpd . -p 5000 -b 127.0.0.1` - end - end - - task :publish do - Dir.mkdir PUBLIC_DIR - Dir.mkdir "#{PUBLIC_DIR}/reveal.js" - FileUtils.cp 'src/index.html', "#{PUBLIC_DIR}/index.html" - FileUtils.cp_r 'node_modules/reveal.js/', "#{PUBLIC_DIR}" - FileUtils.cp_r 'examples/images/', "#{PUBLIC_DIR}" - FileUtils.cp 'examples/release-4.0.html', "#{PUBLIC_DIR}/release-4.0.html" - FileUtils.cp 'examples/release-4.0.css', "#{PUBLIC_DIR}/release-4.0.css" - end -end - -task 'test' => 'doctest' -task 'doctest:test' => 'prepare-converter' -task 'doctest:generate' => 'prepare-converter' -# When no task specified, run test. -task :default => :test diff --git a/docs/asciidoctor-reveal.js-master/asciidoctor-revealjs.gemspec b/docs/asciidoctor-reveal.js-master/asciidoctor-revealjs.gemspec deleted file mode 100644 index 3631ae2..0000000 --- a/docs/asciidoctor-reveal.js-master/asciidoctor-revealjs.gemspec +++ /dev/null @@ -1,53 +0,0 @@ -# -*- encoding: utf-8 -*- -require File.expand_path '../lib/asciidoctor-revealjs/version', __FILE__ -require 'open3' - -Gem::Specification.new do |s| - s.name = 'asciidoctor-revealjs' - s.version = Asciidoctor::Revealjs::VERSION - s.authors = ['Olivier Bilodeau'] - s.email = ['olivier@bottomlesspit.org'] - s.homepage = 'https://github.com/asciidoctor/asciidoctor-reveal.js' - s.summary = 'A reveal.js converter for Asciidoctor. Write your slides in AsciiDoc!' - s.description = 'Converts AsciiDoc documents into HTML5 presentations designed to be executed by the reveal.js presentation framework.' - s.license = 'MIT' - - - files = begin - if (result = Open3.popen3('git ls-files -z') {|_, out| out.read }.split %(\0)).empty? - Dir['**/*'] - else - # converter.rb is built locally before packaging but ignored by git. Adding manually. - result + ['lib/asciidoctor-revealjs/converter.rb'] - end - rescue - Dir['**/*'] - end - # TODO should we still package template files now that they are built into ruby? - s.files = files.grep %r/^(?:(?:examples|lib|templates)\/.+|Gemfile|Rakefile|(?:CHANGELOG|LICENSE|README)\.adoc|#{s.name}\.gemspec)$/ - - s.executables = ['asciidoctor-revealjs'] - s.extra_rdoc_files = Dir['README.adoc', 'LICENSE.adoc', 'HACKING.adoc'] - s.require_paths = ['lib'] - - s.add_runtime_dependency 'asciidoctor', ['>= 2.0.0', '< 3.0.0'] - s.add_runtime_dependency 'thread_safe', '~> 0.3.5' - s.add_runtime_dependency 'concurrent-ruby', '~> 1.0' - - s.add_development_dependency 'rake', '~> 13.0.0' - s.add_development_dependency 'asciidoctor-doctest', '= 2.0.0.beta.5' - s.add_development_dependency 'minitest', '~> 5.14' - if RUBY_ENGINE != 'jruby' - s.add_development_dependency 'pry', '~> 0.12.0' - s.add_development_dependency 'irb' - s.add_development_dependency 'pry-byebug' - s.add_development_dependency 'pygments.rb' - end - s.add_development_dependency 'colorize' - s.add_development_dependency 'asciidoctor-templates-compiler', '~> 0.6.0' - s.add_development_dependency 'slim', '~> 3.0.6' - s.add_development_dependency 'slim-htag', '~> 0.1.0' - s.add_development_dependency 'rouge' - # Overriden in Gemfile and Gemfile.upstream for now - #s.add_development_dependency 'opal', '~> 0.11.1' -end diff --git a/docs/asciidoctor-reveal.js-master/bin/asciidoctor-revealjs b/docs/asciidoctor-reveal.js-master/bin/asciidoctor-revealjs deleted file mode 100644 index efdf5ac..0000000 --- a/docs/asciidoctor-reveal.js-master/bin/asciidoctor-revealjs +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env ruby - -if File.file?(asciidoctor_revealjs = (File.expand_path '../../lib/asciidoctor-revealjs.rb', __FILE__)) - require asciidoctor_revealjs -else - require 'asciidoctor-revealjs' -end -require 'asciidoctor/cli' - -options = Asciidoctor::Cli::Options.new backend: 'revealjs' - -# FIXME (from asciidoctor-pdf) provide an API in Asciidoctor for sub-components to print version information -unless ARGV != ['-v'] && (ARGV & ['-V', '--version']).empty? - $stdout.write %(Asciidoctor reveal.js #{Asciidoctor::Revealjs::VERSION} using ) - options.print_version - exit 0 -end - -# FIXME (from bespoke) This is a really bizarre API. Please make me simpler. -if Integer === (result = options.parse! ARGV) - exit result -else - invoker = Asciidoctor::Cli::Invoker.new options - GC.start - invoker.invoke! - exit invoker.code -end diff --git a/docs/asciidoctor-reveal.js-master/dist/main.js b/docs/asciidoctor-reveal.js-master/dist/main.js deleted file mode 100644 index 0c72c41..0000000 --- a/docs/asciidoctor-reveal.js-master/dist/main.js +++ /dev/null @@ -1,64 +0,0 @@ -/* Generated by Opal 0.10.1 */ -Opal.modules["asciidoctor-revealjs/converter"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$register_for', '$[]', '$+', '$map', '$expand_path', '$new', '$merge', '$basebackend', '$htmlsyntax']); - if ($scope.get('RUBY_ENGINE')['$==']("opal")) {}; - return (function($base) { - var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor'); - - var def = self.$$proto, $scope = self.$$scope; - - (function($base) { - var $Revealjs, self = $Revealjs = $module($base, 'Revealjs'); - - var def = self.$$proto, $scope = self.$$scope; - - (function($base, $super) { - function $Converter(){}; - var self = $Converter = $klass($base, $super, 'Converter', $Converter); - - var def = self.$$proto, $scope = self.$$scope, TMP_2; - - Opal.cdecl($scope, 'ProvidedTemplatesDir', (function() {if ($scope.get('RUBY_ENGINE')['$==']("opal")) { - return "node_modules/asciidoctor-reveal.js/templates"}; return nil; })()); - - self.$register_for("revealjs"); - - return (Opal.defn(self, '$initialize', TMP_2 = function ːinitialize(backend, opts) { - var $a, $b, TMP_1, $c, self = this, $iter = TMP_2.$$p, $yield = $iter || nil, template_dirs = nil, user_template_dirs = nil, template_engine = nil, template_converter = nil, html5_converter = nil; - - if (opts == null) { - opts = $hash2([], {}); - } - TMP_2.$$p = null; - template_dirs = [$scope.get('ProvidedTemplatesDir')]; - if ((($a = (user_template_dirs = opts['$[]']("template_dirs"))) !== nil && $a != null && (!$a.$$is_boolean || $a == true))) { - template_dirs = $rb_plus(template_dirs, ($a = ($b = user_template_dirs).$map, $a.$$p = (TMP_1 = function(d){var self = TMP_1.$$s || this; -if (d == null) d = nil; - return Opal.get('File').$expand_path(d)}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1), $a).call($b))}; - if ($scope.get('RUBY_ENGINE')['$==']("opal")) { - template_engine = "jade"}; - template_converter = ((((Opal.get('Asciidoctor')).$$scope.get('Converter'))).$$scope.get('TemplateConverter')).$new(backend, template_dirs, (opts.$merge($hash2(["htmlsyntax", "template_engine"], {"htmlsyntax": "html", "template_engine": template_engine})))); - html5_converter = ((((Opal.get('Asciidoctor')).$$scope.get('Converter'))).$$scope.get('Html5Converter')).$new(backend, opts); - ($a = ($c = self, Opal.find_super_dispatcher(self, 'initialize', TMP_2, false)), $a.$$p = null, $a).call($c, backend, template_converter, html5_converter); - self.$basebackend("html"); - return self.$htmlsyntax("html"); - }, TMP_2.$$arity = -2), nil) && 'initialize'; - })($scope.base, ((((Opal.get('Asciidoctor')).$$scope.get('Converter'))).$$scope.get('CompositeConverter'))) - })($scope.base) - })($scope.base); -}; - -/* Generated by Opal 0.10.1 */ -(function(Opal) { - var self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; - - Opal.add_stubs(['$==', '$require']); - if ($scope.get('RUBY_ENGINE')['$==']("opal")) { - self.$require("asciidoctor-revealjs/converter"); - return require('asciidoctor-template.js');} -})(Opal); diff --git a/docs/asciidoctor-reveal.js-master/examples/README.adoc b/docs/asciidoctor-reveal.js-master/examples/README.adoc deleted file mode 100644 index 76e8002..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/README.adoc +++ /dev/null @@ -1,17 +0,0 @@ -= Examples - -Minimal AsciiDoc slide-decks to showcase reveal.js' features or test for regressions. - -They are also used in automated testing. -Because of that some metadata (AsciiDoc comments `//`) is present. - -== Preview examples (ruby) - - $ bundle exec rake examples:convert - -== Preview examples (javascript) - - $ bundle exec rake build:converter:opal - $ npm run examples - -Make sure you have a link between `examples/node_modules/` and `node_modules/` where reveal.js is installed. diff --git a/docs/asciidoctor-reveal.js-master/examples/admonitions-icons.adoc b/docs/asciidoctor-reveal.js-master/examples/admonitions-icons.adoc deleted file mode 100644 index 7bdb6a9..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/admonitions-icons.adoc +++ /dev/null @@ -1,37 +0,0 @@ -// .admonitions-font -// :include: //div[@class="slides"] -// :header_footer: -= Admonitions -:backend: revealjs - -== Admonition - -IMPORTANT: This presentation is important - -== Admonition block - -[WARNING] -==== -This is a warning block -==== - -== Admonition block complex - -[NOTE] -.Keeping notes -==== -These are very thorough notes. - -* With -* Bullets -==== - -== Admonition with caption - -[TIP, caption='ProTip(TM)'] -.Reveal.JS -==== -Use include blocks to split your talks into small sections. -It's easier to reorganize afterwards. -==== - diff --git a/docs/asciidoctor-reveal.js-master/examples/admonitions.adoc b/docs/asciidoctor-reveal.js-master/examples/admonitions.adoc deleted file mode 100644 index 6d5e266..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/admonitions.adoc +++ /dev/null @@ -1,38 +0,0 @@ -// .admonitions-font -// :include: //div[@class="slides"] -// :header_footer: -= Admonitions -:backend: revealjs -:icons: font - -== Admonition - -IMPORTANT: This presentation is important - -== Admonition block - -[WARNING] -==== -This is a warning block -==== - -== Admonition block complex - -[NOTE] -.Keeping notes -==== -These are very thorough notes. - -* With -* Bullets -==== - -== Admonition with caption - -[TIP, caption='ProTip(TM)'] -.Reveal.JS -==== -Use include blocks to split your talks into small sections. -It's easier to reorganize afterwards. -==== - diff --git a/docs/asciidoctor-reveal.js-master/examples/autoslide.adoc b/docs/asciidoctor-reveal.js-master/examples/autoslide.adoc deleted file mode 100644 index 1f30eb2..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/autoslide.adoc +++ /dev/null @@ -1,22 +0,0 @@ -= Autoslide! -// automatically proceed to the next slide after 5 seconds -:revealjs_autoSlide: 5000 - -== Slide 0 - -I can do it in 5 seconds! - -// on this slide we need 10 seconds -[autoslide=10000] -== Slide 1 - -All things considered, let's try again in 10 seconds. - -[autoslide=1000] -== Slide 2 - -Don't blink or you'll miss me :) - -== Slide 3 - -(: diff --git a/docs/asciidoctor-reveal.js-master/examples/background-color.adoc b/docs/asciidoctor-reveal.js-master/examples/background-color.adoc deleted file mode 100644 index aea56be..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/background-color.adoc +++ /dev/null @@ -1,45 +0,0 @@ -// .revealjs-background-color -// Demonstration of background color features of both reveal.js and what can be done with CSS. -// :include: //div[@class="slides"] -// :header_footer: -= Colorful Presentation -:backend: revealjs -:customcss: background-color.css -:topic: state=title -:icons: font - -// classic -[background-color="yellow"] -== Hello - -// New: with roles backed by CSS (see background-color.css) -[.red.background] -== Here - -Red - -[.green] -== We - -Green - -NOTE: Green background color shouldn't be applied to the whole slide - -[.blue.canvas] -== Go - -Blue - -// role that alter style but not slide color -[.topic] -== Default color - -but fancy font - -// style role *and* color role (using shorthand markup) -// could also be written in long form like this: -// [role="topic red background"] -[.topic.red.background] -== fancy font - -and color! diff --git a/docs/asciidoctor-reveal.js-master/examples/background-color.css b/docs/asciidoctor-reveal.js-master/examples/background-color.css deleted file mode 100644 index a45bb22..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/background-color.css +++ /dev/null @@ -1,18 +0,0 @@ -section.red.background { - background-color: red; -} - -section.green { - background-color: green; -} - -section.blue.canvas { - background-color: blue; -} - -/* font example */ -@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; -section.topic h2, -section.topic div p { - font-family: 'Baloo Bhai', cursive; -} diff --git a/docs/asciidoctor-reveal.js-master/examples/concealed-slide-titles.adoc b/docs/asciidoctor-reveal.js-master/examples/concealed-slide-titles.adoc deleted file mode 100644 index e92c522..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/concealed-slide-titles.adoc +++ /dev/null @@ -1,20 +0,0 @@ -// .concealed-slide-titles -// The three different ways to hide slide titles -// :include: //div[@class="slides"] -// :header_footer: -= Concealed Slide Titles -:backend: revealjs - -== ! - -This - -[%notitle] -== Presentation - -presentation's titles - -[%conceal] -== Concealed - -should be concealed diff --git a/docs/asciidoctor-reveal.js-master/examples/customcss.adoc b/docs/asciidoctor-reveal.js-master/examples/customcss.adoc deleted file mode 100644 index b64805d..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/customcss.adoc +++ /dev/null @@ -1,9 +0,0 @@ -// .customcss -// Use of the customcss attribute to load external CSS -// :include: //head//link[@rel="stylesheet"] -// :header_footer: -= Custom CSS -Author -:customcss: customcss.css - -== Slide 1 diff --git a/docs/asciidoctor-reveal.js-master/examples/customcss.css b/docs/asciidoctor-reveal.js-master/examples/customcss.css deleted file mode 100644 index e540296..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/customcss.css +++ /dev/null @@ -1,8 +0,0 @@ -.reveal section h1 { - font-family: cursive; -} - -.reveal section small { - margin-top: 15.3em; - font-family: fantasy; -} diff --git a/docs/asciidoctor-reveal.js-master/examples/data-background-newstyle.adoc b/docs/asciidoctor-reveal.js-master/examples/data-background-newstyle.adoc deleted file mode 100644 index 26b98c1..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/data-background-newstyle.adoc +++ /dev/null @@ -1,63 +0,0 @@ -// .images-data-background-new -// Demonstration of the new image background syntax. -// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/52 -// :include: //div[@class="slides"] -// :header_footer: -= Test slide deck -:imagesdir: images -:backend: revealjs - -[%notitle] -== Opening - -image::cover.jpg[background, size=cover] - -== canvas - -image::cover.jpg[canvas, size=cover] - -== ! - -image::70s.jpg[background, size=cover] - -image::meme-2.jpg[width=500px] - -== I have no background - -== ! - -image::meme-7.png[] - -== ! - -image::70s.jpg[background,size=contain] - -== hey - -image::bio.jpg[background,size=100px] - -=== here - -image::bio.jpg[background,size=200px] - -=== I - -image::bio.jpg[background,size=400px] - -=== come - -image::bio.jpg[background,size=800px] - -== URL goat - -image::https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg[background,size=contain] - -[background-color=yellow] -== No [yellow] regression - - -== Empty Vertical top - -=== Vertical with background - -image::70s.jpg[canvas, size=cover] diff --git a/docs/asciidoctor-reveal.js-master/examples/data-background-oldstyle.adoc b/docs/asciidoctor-reveal.js-master/examples/data-background-oldstyle.adoc deleted file mode 100644 index 06f75e7..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/data-background-oldstyle.adoc +++ /dev/null @@ -1,44 +0,0 @@ -// .images-data-background-old -// Demonstration of the old image background syntax. -// We should retain compatibility for a while. -// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/52 -// :include: //div[@class="slides"] -// :header_footer: -= Test slide deck -:imagesdir: images -:backend: revealjs - -[background-image=cover.jpg,background-size=cover] -== ! - -[background-image=70s.jpg,background-size=cover] -== ! - -image::meme-2.jpg[width=500px] - -== I have no background - -== ! - -image::meme-7.png[] - -[background-image=70s.jpg,background-size=contain] -== ! - -[background-image=bio.jpg,background-size=100px] -== hey - -[background-image=bio.jpg,background-size=200px] -=== here - -[background-image=bio.jpg,background-size=400px] -=== I - -[background-image=bio.jpg,background-size=800px] -=== come - -[background-image=https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg,background-size=contain] -== URL Goat - -[background-color=yellow] -== No [yellow] regression diff --git a/docs/asciidoctor-reveal.js-master/examples/docinfo-footer-revealjs.html b/docs/asciidoctor-reveal.js-master/examples/docinfo-footer-revealjs.html deleted file mode 100644 index 223258c..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/docinfo-footer-revealjs.html +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/docs/asciidoctor-reveal.js-master/examples/docinfo-revealjs.html b/docs/asciidoctor-reveal.js-master/examples/docinfo-revealjs.html deleted file mode 100644 index c482ae8..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/docinfo-revealjs.html +++ /dev/null @@ -1,7 +0,0 @@ - - diff --git a/docs/asciidoctor-reveal.js-master/examples/font-awesome.adoc b/docs/asciidoctor-reveal.js-master/examples/font-awesome.adoc deleted file mode 100644 index 2c86ddf..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/font-awesome.adoc +++ /dev/null @@ -1,29 +0,0 @@ -// .font-awesome -// Testing font-awesome icons -// :include: //head//link[@rel="stylesheet"] | //div[@class="slides"] -// :header_footer: -= Font Awesome Tests -:icons: font -:customcss: font-awesome.css - -== ! - -icon:heart[2x] - -== ! - -icon:heart[size=5x] - -== ! - -// TODO -[.red] -icon:heart[size=5x] - -== ! - -icon:stackpath[size=5x] - -== ! - -icon:twitter[size=5x] diff --git a/docs/asciidoctor-reveal.js-master/examples/font-awesome.css b/docs/asciidoctor-reveal.js-master/examples/font-awesome.css deleted file mode 100644 index d793d5b..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/font-awesome.css +++ /dev/null @@ -1,3 +0,0 @@ -div.red > p > span.icon { - color: red; -} diff --git a/docs/asciidoctor-reveal.js-master/examples/fragments.adoc b/docs/asciidoctor-reveal.js-master/examples/fragments.adoc deleted file mode 100644 index d692945..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/fragments.adoc +++ /dev/null @@ -1,32 +0,0 @@ -// .revealjs-features -// This example tests some of reveal.js' fragments features -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= Fragments -:revealjs_history: true -:revealjs_fragmentInURL: true -:customcss: fragments.css - -== Fragments - -[%step] -* Fragments -* Are a reveal.js feature -* Very familiar to Powerpoint users - -== Fragments in URL - -[%step] -* With reveal.js 3.6 -* Fragments -* Can now be displayed in URLs - -== Using data-fragment - -[%step] -* You can now -* Do -* Fancy -* CSS Things -* With Fragments -* See `fragments.css` diff --git a/docs/asciidoctor-reveal.js-master/examples/fragments.css b/docs/asciidoctor-reveal.js-master/examples/fragments.css deleted file mode 100644 index a20b18a..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/fragments.css +++ /dev/null @@ -1,18 +0,0 @@ -@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; - -section[data-fragment="2"] p { - font-family: 'Baloo Bhai', cursive; -} - -section[data-fragment="3"] p { - color: black; - flex: 1; - font-size: 2em; - line-height: 1.2; - text-decoration: none; - background-image: linear-gradient(to right, yellow 0, yellow 100%); - background-position: 0 -0.1em; - background-size: 100% 100%; - background-repeat: no-repeat; - transition: background .5s; -} diff --git a/docs/asciidoctor-reveal.js-master/examples/grid-layout-docinfo-revealjs.html b/docs/asciidoctor-reveal.js-master/examples/grid-layout-docinfo-revealjs.html deleted file mode 100644 index 2064f0d..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/grid-layout-docinfo-revealjs.html +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/docs/asciidoctor-reveal.js-master/examples/grid-layout.adoc b/docs/asciidoctor-reveal.js-master/examples/grid-layout.adoc deleted file mode 100644 index 9722059..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/grid-layout.adoc +++ /dev/null @@ -1,194 +0,0 @@ -// .grid-layout -// Testing our columns roles -// :include: //div[@class="slides"] -// :header_footer: -= Grid Layout -:docinfo: private -:source-highlighter: highlight.js -:highlightjs-languages: clojure,scala -:revealjs_hash: true - -[.columns] -== 2 columns - -[.column] --- -* **Edgar Allen Poe** -* Sheri S. Tepper -* Bill Bryson --- - -[.column] --- -Edgar Allan Poe (/poʊ/; born Edgar Poe; January 19, 1809 – October 7, 1849) was an American writer, editor, and literary critic. --- - -[.columns.wrap] -== Multi-columns with wrap - -[.column] --- -.Kotlin -[source,kotlin] ----- -fun main() { - println("Hello, World!") -} ----- --- - -[.column] --- -.Clojure -[source,clojure] ----- -(defn -main [& args] - (println "Hello, World!")) ----- --- - -[.column] --- -.Scala -[source,scala] ----- -object HelloWorld { - def main(args: Array[String]): Unit = { - println("Hello, world!") - } -} ----- --- - -[.columns] -== Columns with size - -[.column.is-one-third] --- -* **Kotlin** -* Java -* Scala --- - -[.column] --- -Programming language for Android, mobile cross-platform -and web development, server-side, native, -and data science. Open source forever Github. --- - -[.columns] -== 3 columns - -[.column] -* Java -* **Kotlin** - -[.column] -* Node -* **Deno** - -[.column] -* Ruby -* **Crystal** - - -[.columns.is-half.green.left] -== ! - -[.column.is-half] -* Java -* **Kotlin** - -[.column.is-half] -* Ruby -* **Crystal** - -== Languages - -We will go over languages - -[.columns] -=== Kotlin - -[.column] -[source,kotlin] ----- -fun main() { - println("Hello, World!") -} ----- - -[.column] --- -* Nice and compact -* Works well on Android --- - -[.columns] -=== Clojure - -[.column] -[source,clojure] ----- -(defn -main [& args] - (println "Hello, World!")) ----- - -[.column] --- -* Lisp-like -* Few simple concepts --- - -[.columns.is-vcentered] -== Vertically Centered Columns - -[.column] -* Java -* **Kotlin** - -[.column] -* Node -* **Deno** - -[.column.is-half] --- -.Source -[source,asciidoc] -.... -[.columns.is-vcentered] -== Vertically Aligned Columns - -[.column] -* Java -* **Kotlin** - -[.column] -* Node -* **Deno** - -[.column.is-half] -[...] -.... --- - -[.columns] -== Column Text Alignment - -[.column.has-text-left] --- -Something Short - -Something So Long That We Need It Aligned --- - -[.column.has-text-justified] -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - -[.column.has-text-right] --- -Something Short - -Something So Long That We Need It Aligned --- diff --git a/docs/asciidoctor-reveal.js-master/examples/history-hash.adoc b/docs/asciidoctor-reveal.js-master/examples/history-hash.adoc deleted file mode 100644 index 505c570..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/history-hash.adoc +++ /dev/null @@ -1,19 +0,0 @@ -// .hash -// Enables reveal.js hash feature which is good to reload in-progress slides and doesn't push to browser history. -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= No History -:backend: revealjs -:revealjs_hash: true - -== First slide - -This Deck - -== Second slide - -You can reload anytime - -== Third slide - -Yet browser history is not spammed diff --git a/docs/asciidoctor-reveal.js-master/examples/history-regression-tests.adoc b/docs/asciidoctor-reveal.js-master/examples/history-regression-tests.adoc deleted file mode 100644 index 57f4905..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/history-regression-tests.adoc +++ /dev/null @@ -1,44 +0,0 @@ -// .history-regression-tests -// Demonstration of revealjs history regression. -// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/99 and https://github.com/asciidoctor/asciidoctor-reveal.js/issues/127 -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= First Slide -:revealjs_history: true - -== Second Slide - -== 3rd Slide -// slide that starts with a number - -== P3rhaps this will not work -// Second char is a number - -== 5th Slide -// is it skipped by reveal.js? - -== Illegal çhàrâctérß - -[[explicit_with_anchor]] -== Explicit section id - -[id=explicit_with_id] -== Another Explicit Section Id - -[#explicit_with_short_anchor] -== 3rd Explicit is the Charm - -== 67848727 -// Everything should be stripped in the id - -== Repeated title - -== ! -// Explicit no title - -== Repeated title -// Exact same title means exact same id - -== hello こんにちは - -== hello 你好 diff --git a/docs/asciidoctor-reveal.js-master/examples/history.adoc b/docs/asciidoctor-reveal.js-master/examples/history.adoc deleted file mode 100644 index ef9549c..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/history.adoc +++ /dev/null @@ -1,19 +0,0 @@ -// .history -// Enables reveal.js' browser history feature -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= History -:backend: revealjs -:revealjs_history: true - -== First slide - -This - -== Second slide - -Pushes - -== Third slide - -To Browser History Stack diff --git a/docs/asciidoctor-reveal.js-master/examples/images.adoc b/docs/asciidoctor-reveal.js-master/examples/images.adoc deleted file mode 100644 index 9ae3f17..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/images.adoc +++ /dev/null @@ -1,51 +0,0 @@ -// .images -// Demonstration of revealjs images embedding with some options. -// :include: //div[@class="slides"] -// :header_footer: -= Images tests -:imagesdir: images - -== Normal - -image::web_surfing_time.gif[] - -== Stretched - -[.stretch] -image::web_surfing_time.gif[] - -== Hardcoded - -image::web_surfing_time.gif[width="1200"] - -== Image Floating - -image::web_surfing_time.gif[width=400px,float=right] - -* Some -* Points -* You -* Won't -* Look At - -== Image Role Right - -// This is asciidoctor-revealjs specific, it allows you to put an image on the right even though it is not part of the same block -// It uses custom CSS, see #197. - -image::web_surfing_time.gif[role=right,width=400px] - -* Some -* Points -* You -* Won't -* Look At - -== Image Role Right [alt syntax] - -[.right] -image::web_surfing_time.gif[alt text,width=400px] - -* Yup -* That -* Too diff --git a/docs/asciidoctor-reveal.js-master/examples/images/70s.jpg b/docs/asciidoctor-reveal.js-master/examples/images/70s.jpg deleted file mode 100644 index fbee570..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/70s.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/images/asciidoctor-logo.svg b/docs/asciidoctor-reveal.js-master/examples/images/asciidoctor-logo.svg deleted file mode 100644 index 4f9584e..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/images/asciidoctor-logo.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - Asciidoctor - - - - - - image/svg+xml - - Asciidoctor - - - Asciidoctor - - - Asciidoctor project logo. - - - AsciiDoc - - - https://asciidoctor.org - - - - - - - - - - - diff --git a/docs/asciidoctor-reveal.js-master/examples/images/bio.jpg b/docs/asciidoctor-reveal.js-master/examples/images/bio.jpg deleted file mode 100644 index d766c87..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/bio.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/images/cover.jpg b/docs/asciidoctor-reveal.js-master/examples/images/cover.jpg deleted file mode 100644 index 3c63c10..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/cover.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/images/meme-2.jpg b/docs/asciidoctor-reveal.js-master/examples/images/meme-2.jpg deleted file mode 100644 index d323f3c..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/meme-2.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/images/meme-7.png b/docs/asciidoctor-reveal.js-master/examples/images/meme-7.png deleted file mode 100644 index 1fdc435..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/meme-7.png and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/images/web_surfing_time.gif b/docs/asciidoctor-reveal.js-master/examples/images/web_surfing_time.gif deleted file mode 100644 index 213ed2b..0000000 Binary files a/docs/asciidoctor-reveal.js-master/examples/images/web_surfing_time.gif and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/examples/issue-grid-layout-images.adoc b/docs/asciidoctor-reveal.js-master/examples/issue-grid-layout-images.adoc deleted file mode 100644 index e69ac05..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/issue-grid-layout-images.adoc +++ /dev/null @@ -1,25 +0,0 @@ -// .issue-grid-layout-images -// Images would get shrunk before we added a flex-basis auto exception when columns wrap -// :include: //div[@class="slides"] -// :header_footer: -= Grid Wrapping Tests -:imagesdir: images/ -// reveal.js config -:revealjs_hash: true -:revealjs_center: false -:revealjs_height: 1080 -:revealjs_width: 1920 - -[.columns.wrap] -== Should Wrap But Doesn't - -[.column] -* Things here should wrap -* But instead images shrink -* But now it's good - -[.column] -image::cover.jpg[width=900px] - -[.column] -image::70s.jpg[width=900px] diff --git a/docs/asciidoctor-reveal.js-master/examples/keyboard-shortcuts.adoc b/docs/asciidoctor-reveal.js-master/examples/keyboard-shortcuts.adoc deleted file mode 100644 index efe1186..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/keyboard-shortcuts.adoc +++ /dev/null @@ -1,24 +0,0 @@ -// .keyboard-shortcuts -// Demonstration of keyboard shortcuts extension. -// :include: //div[@class="slides"] -// :header_footer: -= Keyboard shortcuts -:experimental: - -== Some shortcuts - -|=== -|Shortcut |Purpose - -|kbd:[F11] -|Toggle fullscreen - -|kbd:[Ctrl+T] -|Open a new tab - -|kbd:[Ctrl+Shift+N] -|New incognito window - -|kbd:[Ctrl + +] -|Increase zoom -|=== diff --git a/docs/asciidoctor-reveal.js-master/examples/level-sections.adoc b/docs/asciidoctor-reveal.js-master/examples/level-sections.adoc deleted file mode 100644 index 7aa4f6d..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/level-sections.adoc +++ /dev/null @@ -1,44 +0,0 @@ -// .sections -// Demonstration of section levels and their specific reveal.js integration. -// :include: //div[@class="slides"] -// :header_footer: -= Levels -:backend: revealjs - -== First level - -First content - -== Vertical - -Vertical slides are using level 2 sections (`===`) - -Press down arrow. - -=== Level 3 - -Level 3 (`====`), rendered as `

` is now supported. - -==== Like this - -=== Deeper - -==== l3 - -===== l4 - -====== l5 - -== Horizontal slide - -==== Also supports levels - -But they issue warnings during render - -== Horizontal sections - -==== l3 - -===== l4 - -====== l5 diff --git a/docs/asciidoctor-reveal.js-master/examples/level-sectnums.adoc b/docs/asciidoctor-reveal.js-master/examples/level-sectnums.adoc deleted file mode 100644 index b5d6b41..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/level-sectnums.adoc +++ /dev/null @@ -1,24 +0,0 @@ -// .sections -// Demonstration of section numbers and their specific reveal.js integration. -// :include: //div[@class="slides"] -// :header_footer: -= Sectnums -:backend: revealjs -:sectnums: -:sectnumlevels: 2 - -== First level - -First content - -== Vertical - -Vertical slides are using level 2 sections - -=== Level 2 - -==== Level 3 does not have sectnum, sectnumlevels is 2 - -== Horizontal slide - -=== Also supports levels diff --git a/docs/asciidoctor-reveal.js-master/examples/links-preview.adoc b/docs/asciidoctor-reveal.js-master/examples/links-preview.adoc deleted file mode 100644 index cae436c..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/links-preview.adoc +++ /dev/null @@ -1,32 +0,0 @@ -// .links-with-preview -// Demonstration of reveal.js global data-preview-link feature -// :include: //div[@class="slides"] | //body/*[last()-1] -// :header_footer: -= Links With Preview Tests -:revealjs_previewlinks: True -:imagesdir: images/ - -== Set Globally - -https://en.wikipedia.org/wiki/February_4[Here's a link] - -== Disabled Locally - -https://en.wikipedia.org/wiki/February_4[Link One, preview=false] - -https://en.wikipedia.org/wiki/February_4[Link Two, preview=0] - -https://en.wikipedia.org/wiki/February_4[Link Three, preview=False] - -== Image block with a Link - -image::70s.jpg[link="https://montrehack.ca/"] - -== Image block with a Link Disabled Locally - -image::70s.jpg[link="https://montrehack.ca/", link_preview=false] - -== Inlined Images - -image:70s.jpg[link="https://montrehack.ca/", width=200px] -image:70s.jpg[link="https://montrehack.ca/", width=200px, link_preview=false] diff --git a/docs/asciidoctor-reveal.js-master/examples/links.adoc b/docs/asciidoctor-reveal.js-master/examples/links.adoc deleted file mode 100644 index daf7ba3..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/links.adoc +++ /dev/null @@ -1,39 +0,0 @@ -// .links -// Demonstration of reveal.js and AsciiDoc links -// :include: //div[@class="slides"] -// :header_footer: -= Links -:imagesdir: images/ - -== Regular - -https://en.wikipedia.org/wiki/February_4[Link] - -https://en.wikipedia.org/wiki/February_4[In new Window, window="_blank"] - -https://en.wikipedia.org/wiki/February_4[In new Window (alternate syntax)^] - - -== With iFrame Preview Overlay - -https://en.wikipedia.org/wiki/February_4[Link One, preview=true] - -https://en.wikipedia.org/wiki/February_4[Link Two, preview=1] - -https://en.wikipedia.org/wiki/February_4[Link Three, preview=True] - - -== Image Block with a Link - -image::70s.jpg[link="https://montrehack.ca/", window="_blank"] - - -== Image Block with a Link With iFrame Preview - -image::70s.jpg[link="https://montrehack.ca/", link_preview=true] - - -== Inlined Images - -image:70s.jpg[link="https://montrehack.ca/", width=200px] -image:70s.jpg[link="https://montrehack.ca/", width=200px, link_preview=true] diff --git a/docs/asciidoctor-reveal.js-master/examples/mathjax-cdn.adoc b/docs/asciidoctor-reveal.js-master/examples/mathjax-cdn.adoc deleted file mode 100644 index 7cc91b0..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/mathjax-cdn.adoc +++ /dev/null @@ -1,21 +0,0 @@ -// .mathjax-cdn -// Demonstration of the Mathjax :mathjaxdir: attribute in action -// :include: //head/link | //div[@class="slides"] -// :header_footer: -= MathJax -:stem: -:revealjsdir: https://cdn.jsdelivr.net/npm/reveal.js@3.9.2 -:mathjaxdir: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/ - -== Math Equation - -Using standard latexmath:[\LaTeX] syntax: - -[stem] -++++ -\sqrt{37} = \sqrt{\frac{73^2-1}{12^2}} \approx \frac{73}{12} (1 - \frac{1}{2\cdot73^2}) -++++ - -Another one: - -stem:[\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}] diff --git a/docs/asciidoctor-reveal.js-master/examples/mathjax.adoc b/docs/asciidoctor-reveal.js-master/examples/mathjax.adoc deleted file mode 100644 index 2a5efd0..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/mathjax.adoc +++ /dev/null @@ -1,20 +0,0 @@ -// .mathjax -// Demonstration of our Mathjax integration -// :include: //div[@class="slides"] -// :header_footer: -= MathJax -:stem: -:revealjsdir: https://cdn.jsdelivr.net/npm/reveal.js@3.9.2 - -== Math Equation - -Using standard latexmath:[\LaTeX] syntax: - -[stem] -++++ -\sqrt{37} = \sqrt{\frac{73^2-1}{12^2}} \approx \frac{73}{12} (1 - \frac{1}{2\cdot73^2}) -++++ - -Another one: - -stem:[\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}] diff --git a/docs/asciidoctor-reveal.js-master/examples/multi-destination-content.adoc b/docs/asciidoctor-reveal.js-master/examples/multi-destination-content.adoc deleted file mode 100644 index 76c96bb..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/multi-destination-content.adoc +++ /dev/null @@ -1,68 +0,0 @@ -// .multiple-backend-destination -// Demonstration of having the same AsciiDoc source generate different files based on usage context. -// This test will only test the revealjs render. -// :include: //div[@class="slides"] -// :header_footer: -= My Doc -John Doe -:revdate: 2016-04-26 - -== Main section - -=== Sub Section lvl 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien ex, elementum nec scelerisque id, condimentum nec nulla. Integer dignissim faucibus ullamcorper. Morbi eget mauris molestie, facilisis augue nec, vulputate metus. Ut volutpat risus lorem, id tempus ex egestas vel. Sed quis accumsan tellus. Suspendisse interdum augue vel augue rhoncus sodales. Ut at ultrices nulla. Sed id iaculis tellus. Pellentesque efficitur diam sit amet diam lobortis, in bibendum lectus ornare. - -=== Sub Section lvl 3 - -Small + -Multiline + -intro - -. very -. long -. list -. of -. items - -ifdef::backend-revealjs[=== !] - -Some overview - ----- -+-------------------------------------------------+ -| Big Picture | -| +-------------+ +-----------+ +-------------+ | -| | | | | | | | -| | | | | | | | -| | | | | | | | -| | | | | | | | -| +-------------+ +-----------+ +-------------+ | -| | -| +-------------+ +-----------+ +-------------+ | -| | | | | | | | -| | | | Focus | | | | -| | | | Here | | | | -| | | | | | | | -| +-------------+ +-----------+ +-------------+ | -| | -+-------------------------------------------------+ ----- - -ifdef::backend-revealjs[=== !] -// TODO one day would be nice to allow -//ifdef::backend-reveal.js[=== !] - -Detailed view - ----- -+---------------------------------------------------+ -| +---------------------------------------------+ | -| | | | | | | -| | | | | | | -| +---------------------------------------------+ | -| | | | IMPORTANT | | | -| | | | DATA | | | -| +---------------------------------------------+ | -+---------------------------------------------------+ ----- diff --git a/docs/asciidoctor-reveal.js-master/examples/release-4.0.adoc b/docs/asciidoctor-reveal.js-master/examples/release-4.0.adoc deleted file mode 100644 index e63daa4..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/release-4.0.adoc +++ /dev/null @@ -1,192 +0,0 @@ -= Asciidoctor reveal.js 4.0.0 -:source-highlighter: highlight.js -:highlightjs-languages: x86asm,asciidoc -:icons: font -:imagesdir: images/ -// reveal.js config -:customcss: release-4.0.css -:revealjs_hash: true -:revealjs_width: 1080 - -== Supports all of reveal.js 3.9.2 features - - -[background-video="https://github.com/obilodeau/asciidoctor-assets/raw/master/videos/synthwave.mp4",background-opacity=0.7] -=== Background videos - -=== Automatic Source Code Highlighting! - -icon:exclamation-circle[] Including step-by-step line highlights - -[.columns.is-vcentered] -=== Assembly from a Compiler - -[.column] -[source,x86asm,highlight="3..6|7..9|10|11,12"] ----- -main proc near -var_10 = dword ptr -10h - push ebp - mov ebp, esp - and esp, 0FFFFFFF0h - sub esp, 10h - mov eax, offset aHelloWorld - mov [esp+10h+var_10], eax - call _printf - mov eax, 0 - leave - retn -main endp ----- - -[.column.is-one-third] --- -* Backed by Highlight.js -* Many languages supported -* Ability to focus on specific lines --- - -=== With very simple source! - -[source,asciidoc] -.... -[source,x86asm,highlight="3..6|7..9|10|11,12"] ----- -main proc near -var_10 = dword ptr -10h - push ebp - mov ebp, esp - and esp, 0FFFFFFF0h - sub esp, 10h - mov eax, offset aHelloWorld - mov [esp+10h+var_10], eax - call _printf - mov eax, 0 - leave - retn -main endp ----- -.... - -=== And More! - -* Background images (and gif!) -* Speaker notes -* Embedded videos -* Embedded and interactive iframes -* etc. - - -[.columns.is-vcentered] -== Plus AsciiDoc Features - -[.column] --- -image::asciidoctor-logo.svg[] - -Powered by Asciidoctor --- - -[.column] -.Available toolchains -* Ruby / Bundler -* JavaScript / NPM -* Standalone executables -* icon:exclamation-circle[] JVM / Maven - -[.columns.is-vcentered] -=== Easy Grid Layout - -[.column] -* Easy - -[.column] -* Flexible - -[.column] -Grid Layout - -[.column.is-one-third] --- -[source,asciidoc] -.Source -.... -[.columns] -=== Easy Grid Layout - -[.column] -* Easy - -[.column] -* Flexible - -[.column] -Grid Layout - -[.column.is-one-third] -[source,asciidoc] -[...] -.... --- - -[.columns.is-vcentered] -=== FontAwesome Integration - -[.column.is-one-third] --- -Expressive icon:palette[] Icons icon:icons[] -at your Fingertips icon:hand-holding-heart[] - -[.red] -icon:heart[size=3x] --- - -[.column] --- -[source,asciidoc] -.Source -.... -Expressive icon:palette[] -Icons icon:icons[] -at your Fingertips -icon:hand-holding-heart[] - -[.red] -icon:heart[size=3x] -.... --- - -[.columns] -=== Includes - -[.column] -You can include content from other files. -Including source code! - -[.column] --- -[source,asciidoc] -.Example Source -.... -[source,python] ----- -\include::demo.py[] ----- -.... --- - -=== For Great Technical Presentations! - - -[.important.white.background,transition="zoom"] -== Can you do that PowerPoint? - - -[transition=fade,transition-speed=slow] -== Learn More! - -* https://github.com/asciidoctor/asciidoctor-reveal.js/[Asciidoctor reveal.js] -* https://revealjs.com[reveal.js] -* https://github.com/asciidoctor/asciidoctor/[Asciidoctor] -* https://asciidoctor.org/docs/what-is-asciidoc/[What is AsciiDoc?] -* https://github.com/asciidoctor/asciidoctor-reveal.js/raw/master/examples/release-4.0.adoc[This slide deck's AsciiDoc source] diff --git a/docs/asciidoctor-reveal.js-master/examples/release-4.0.css b/docs/asciidoctor-reveal.js-master/examples/release-4.0.css deleted file mode 100644 index cdc461c..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/release-4.0.css +++ /dev/null @@ -1,23 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Permanent+Marker&display=swap'); -section.white.background { - background-color: white; -} - -section.important h2 { - font-family: 'Permanent Marker', cursive; - text-transform: none; - font-size: 3em; -} - -div.red > p > span.icon { - color: red; -} - -/* theme overrides */ -.reveal pre code { - max-height: none; -} -.reveal section img { - background: none; - border: none; -} diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugin-activation.adoc b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugin-activation.adoc deleted file mode 100644 index b53e6e2..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugin-activation.adoc +++ /dev/null @@ -1,16 +0,0 @@ -// .revealjs-plugin-activation -// Use of the revealjs_plugin_... attributes to enable and disable some revealjs plugins -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= Default Plugins Changes -Author -:revealjs_plugins_pdf: enabled -:revealjs_plugins_marked: disabled - -== Slide 1 - -Content 1 - -== Slide 2 - -Content 2 diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins-conf.js b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins-conf.js deleted file mode 100644 index 8e4acff..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins-conf.js +++ /dev/null @@ -1,10 +0,0 @@ -menu: { - side: 'right' -}, -keyboard: { - 67: function() { RevealChalkboard.toggleNotesCanvas() }, // toggle notes canvas when 'c' is pressed - 66: function() { RevealChalkboard.toggleChalkboard() }, // toggle chalkboard when 'b' is pressed - 46: function() { RevealChalkboard.clear() }, // clear chalkboard when 'DEL' is pressed - 8: function() { RevealChalkboard.reset() }, // reset chalkboard data on current slide when 'BACKSPACE' is pressed - 68: function() { RevealChalkboard.download() }, // downlad recorded chalkboard drawing when 'd' is pressed -}, diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.adoc b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.adoc deleted file mode 100644 index a814623..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.adoc +++ /dev/null @@ -1,16 +0,0 @@ -// .revealjs-plugins -// Use of the revealjs_plugins attribute to load custom revealjs plugins -// :include: //body/script | //div[@class="slides"] -// :header_footer: -= Custom Plugins -Author -:revealjs_plugins: examples/revealjs-plugins.js -:revealjs_plugins_configuration: examples/revealjs-plugins-conf.js - -== Slide 1 - -Content 1 - -== Slide 2 - -Content 2 diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.js b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.js deleted file mode 100644 index 02cfe0c..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins.js +++ /dev/null @@ -1,2 +0,0 @@ -{ src: 'revealjs-plugins/reveal.js-menu/menu.js' }, -{ src: 'revealjs-plugins/chalkboard/chalkboard.js' } diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/README.md b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/README.md deleted file mode 100644 index 1593283..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/README.md +++ /dev/null @@ -1,124 +0,0 @@ -# Chalkboard - -With this plugin you can add a chalkboard to reveal.js. The plugin provides two possibilities to include handwritten notes to your presentation: - -- you can make notes directly on the slides, e.g. to comment on certain aspects, -- you can open a chalkboard on which you can make notes. - -The main use case in mind when implementing the plugin is classroom usage in which you may want to explain some course content and quickly need to make some notes. - -The plugin records all drawings made so that they can be play backed using the ```autoSlide``` feature or the ```audio-slideshow``` plugin. - -[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/chalkboard-demo.html) - -The chalkboard effect is based on [Chalkboard](https://github.com/mmoustafa/Chalkboard) by Mohamed Moustafa. - -## Installation - -Copy the file ```chalkboard.js``` and the ```img``` directory into the plugin folder of your reveal.js presentation, i.e. ```plugin/chalkboard```. - -Add the plugins to the dependencies in your presentation as shown below. - -```javascript -Reveal.initialize({ - // ... - chalkboard: { - // optionally load pre-recorded chalkboard drawing from file - src: "chalkboard.json", - }, - dependencies: [ - // ... - { src: 'plugin/chalkboard/chalkboard.js' }, - // ... - ], - keyboard: { - 67: function() { RevealChalkboard.toggleNotesCanvas() }, // toggle notes canvas when 'c' is pressed - 66: function() { RevealChalkboard.toggleChalkboard() }, // toggle chalkboard when 'b' is pressed - 46: function() { RevealChalkboard.clear() }, // clear chalkboard when 'DEL' is pressed - 8: function() { RevealChalkboard.reset() }, // reset chalkboard data on current slide when 'BACKSPACE' is pressed - 68: function() { RevealChalkboard.download() }, // downlad recorded chalkboard drawing when 'd' is pressed - }, - // ... - -}); -``` -In order to include buttons for opening and closing the notes canvas or the chalkboard you should make sure that ```font-awesome``` is available. The easiest way is to include -``` - -``` -to the ```head``` section of you HTML-file. - -## Usage - -### Enable & disable - -With above configuration the notes canvas is opened and closed when pressing 'c' and the chalkboard is opened and closed when pressing 'b'. - -### Mouse -- Click the left mouse button and drag to write on notes canvas or chalkboard -- Click the right mouse button and drag to wipe away previous drawings - -### Touch -- Touch and move to write on notes canvas or chalkboard -- Touch and hold for half a second, then move to wipe away previous drawings - -### Keyboard -- Click the 'DEL' key to clear the chalkboard -- Click the 'd' key to download chalkboard drawings -- Click the 'BACKSPACE' key to delete all chalkboard drawings on the current slide - -## Playback - -If the ```autoSlide``` feature is set or if the ```audio-slideshow``` plugin is used, pre-recorded chalkboard drawings can be played. The slideshow plays back the user interaction with the chalkboard in the same way as it was conducted when recording the data. - -## PDF-Export - -If the slideshow is opened in [print mode](https://github.com/hakimel/reveal.js/#pdf-export) the pre-recorded chalkboard drawings (which must be provided in a file, see ```src``` option) are included in the PDF-file. Each drawing on the chalkboard is added after the slide that was shown when opening the chalkboard. Drawings are also included if they had been cleared (using the 'DEL' key). Drawings on the notes canvas are not included in the PDF-file. - - -## Configuration - -The plugin has several configuration options: - -- ```src```: Optional filename for pre-recorded drawings. -- ```readOnly```: Configuation option allowing to prevent changes to existing drawings. If set to ```true``` no changes can be made, if set to false ```false``` changes can be made, if unset or set to ```undefined``` no changes to the drawings can be made after returning to a slide or fragment for which drawings had been recorded before. In any case the recorded drawings for a slide or fragment can be cleared by pressing the 'DEL' key (i.e. by using the ```RevealChalkboard.clear()``` function). -- ```toggleNotesButton```: If set to ```true``` a button for opening and closing the notes canvas is shown. Alternatively, the css position attributes can be provided if the default position is not appropriate. -- ```toggleChalkboardButton```: If set to ```true``` a button for opening and closing the chalkboard is shown. Alternatively, the css position attributes can be provided if the default position is not appropriate. -- ```transition```: Gives the duration (in milliseconds) of the transition for a slide change, so that the notes canvas is drawn after the transition is completed. -- ```theme```: Can be set to either ```"chalkboard"``` or ```"whiteboard"```. - -The following configuration options allow to change the appearance of the notes canvas and the chalkboard. All of these options require two values, the first gives the value for the notes canvas, the second for the chalkboard. - -- ```color```: The first value gives the pen color, the second value gives the color of the chalk. -- ```background```: The first value expects a (semi-)transparent color which is used to provide visual feedback that the notes canvas is enabled, the second value expects a filename to a background image for the chalkboard. -- ```pen```: The first value expects a filename for an image of the pen used for the notes canvas, the second value expects a filename for an image of the pen used for the chalkboard. - -All of the configurations are optional and the default values shown below are used if the options are not provided. - -```javascript -Reveal.initialize({ - // ... - chalkboard: { - src: null, - readOnly: undefined, - toggleChalkboardButton: { left: "30px", bottom: "30px", top: "auto", right: "auto" }, - toggleNotesButton: { left: "30px", bottom: "30px", top: "auto", right: "auto" }, - transition: 800, - theme: "chalkboard", - // configuration options for notes canvas and chalkboard - color: [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ], - background: [ 'rgba(127,127,127,.1)' , 'reveal.js-plugins/chalkboard/img/blackboard.png' ], - pen: [ 'url(reveal.js-plugins/chalkboard/img/boardmarker.png), auto', 'url(reveal.js-plugins/chalkboard/img/chalk.png), auto' ], - }, - // ... - -}); -``` - -**Note:** Customisation of pens has changed since version 0.5 of the plugin, it is now possible to use standard cursors, e.g. by setting ```pen: [ 'crosshair', 'pointer' ]```. Please update your parameters if migrating from an older version. - -## License - -MIT licensed - -Copyright (C) 2016 Asvin Goel diff --git a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/chalkboard.js b/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/chalkboard.js deleted file mode 100644 index 2434878..0000000 --- a/docs/asciidoctor-reveal.js-master/examples/revealjs-plugins/chalkboard/chalkboard.js +++ /dev/null @@ -1,1288 +0,0 @@ -/***************************************************************** -** Author: Asvin Goel, goel@telematique.eu -** -** A plugin for reveal.js adding a chalkboard. -** -** Version: 0.6 -** -** License: MIT license (see LICENSE.md) -** -** Credits: -** Chalkboard effect by Mohamed Moustafa https://github.com/mmoustafa/Chalkboard -******************************************************************/ - -var RevealChalkboard = window.RevealChalkboard || (function(){ - var path = scriptPath(); - function scriptPath() { - // obtain plugin path from the script element - var src; - if (document.currentScript) { - src = document.currentScript.src; - } else { - var sel = document.querySelector('script[src$="/chalkboard.js"]') - if (sel) { - src = sel.src; - } - } - - var path = typeof src === undefined ? src - : src.slice(0, src.lastIndexOf("/") + 1); -//console.log("Path: " + path); - return path; -} - -/***************************************************************** -** Configuration -******************************************************************/ - var config = Reveal.getConfig().chalkboard || {}; - - var background, pen, draw, color; - var theme = config.theme || "chalkboard"; - switch ( theme ) { - case "whiteboard": - background = [ 'rgba(127,127,127,.1)' , path + 'img/whiteboard.png' ]; - pen = [ 'url(' + path + 'img/boardmarker.png), auto', - 'url(' + path + 'img/boardmarker.png), auto' ]; - draw = [ drawWithPen , drawWithPen ]; - color = [ 'rgba(0,0,255,1)', 'rgba(0,0,255,1)' ]; - break; - default: - background = [ 'rgba(127,127,127,.1)' , path + 'img/blackboard.png' ]; - pen = [ 'url(' + path + 'img/boardmarker.png), auto', - 'url(' + path + 'img/chalk.png), auto' ]; - draw = [ drawWithPen , drawWithChalk ]; - color = [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ]; - } - - if ( config.background ) background = config.background; - if ( config.pen ) pen = config.pen; - if ( config.draw ) draw = config.draw; - if ( config.color ) color = config.color; - - var toggleChalkboardButton = config.toggleChalkboardButton == undefined ? true : config.toggleChalkboardButton; - var toggleNotesButton = config.toggleNotesButton == undefined ? true : config.toggleNotesButton; - var transition = config.transition || 800; - - var readOnly = config.readOnly; - - var legacyFileSupport = config.legacyFileSupport; - if ( legacyFileSupport ) { console.warn("Legacy file support is deprecated and may be removed in future versions!") } - -/***************************************************************** -** Setup -******************************************************************/ - - function whenReady( callback ) { - // wait for drawings to be loaded and markdown to be parsed - if ( loaded == null || document.querySelector('section[data-markdown]:not([data-markdown-parsed])') ) { - setTimeout( whenReady, 100, callback ) - } - else { - callback(); - } - } - - var eraserDiameter = 20; - - if ( toggleChalkboardButton ) { -//console.log("toggleChalkboardButton") - var button = document.createElement( 'div' ); - button.className = "chalkboard-button"; - button.id = "toggle-chalkboard"; - button.style.visibility = "visible"; - button.style.position = "absolute"; - button.style.zIndex = 30; - button.style.fontSize = "24px"; - - button.style.left = toggleChalkboardButton.left || "30px"; - button.style.bottom = toggleChalkboardButton.bottom || "30px"; - button.style.top = toggleChalkboardButton.top || "auto"; - button.style.right = toggleChalkboardButton.right || "auto"; - - button.innerHTML = '' - document.querySelector(".reveal").appendChild( button ); - } - if ( toggleNotesButton ) { -//console.log("toggleNotesButton") - var button = document.createElement( 'div' ); - button.className = "chalkboard-button"; - button.id = "toggle-notes"; - button.style.position = "absolute"; - button.style.zIndex = 30; - button.style.fontSize = "24px"; - - button.style.left = toggleNotesButton.left || "70px"; - button.style.bottom = toggleNotesButton.bottom || "30px"; - button.style.top = toggleNotesButton.top || "auto"; - button.style.right = toggleNotesButton.right || "auto"; - - button.innerHTML = '' - document.querySelector(".reveal").appendChild( button ); - } -//alert("Buttons"); - - var drawingCanvas = [ {id: "notescanvas" }, {id: "chalkboard" } ]; - setupDrawingCanvas(0); - setupDrawingCanvas(1); - - var mode = 0; // 0: notes canvas, 1: chalkboard - - var mouseX = 0; - var mouseY = 0; - var xLast = null; - var yLast = null; - - var slideStart = Date.now(); - var slideIndices = { h:0, v:0 }; - var event = null; - var timeouts = [ [], [] ]; - var touchTimeout = null; - var slidechangeTimeout = null; - var playback = false; - - function setupDrawingCanvas( id ) { - var container = document.createElement( 'div' ); - container.id = drawingCanvas[id].id; - container.classList.add( 'overlay' ); - container.setAttribute( 'data-prevent-swipe', '' ); - container.oncontextmenu = function() { return false; } - container.style.cursor = pen[ id ]; - - drawingCanvas[id].width = window.innerWidth; - drawingCanvas[id].height = window.innerHeight; - drawingCanvas[id].scale = 1; - drawingCanvas[id].xOffset = 0; - drawingCanvas[id].yOffset = 0; - - - if ( id == "0" ) { - container.style.background = 'rgba(0,0,0,0)'; - container.style.zIndex = "24"; - container.classList.add( 'visible' ) - container.style.pointerEvents = "none"; - - var slides = document.querySelector(".slides"); - var aspectRatio = Reveal.getConfig().width / Reveal.getConfig().height; - if ( drawingCanvas[id].width > drawingCanvas[id].height*aspectRatio ) { - drawingCanvas[id].xOffset = (drawingCanvas[id].width - drawingCanvas[id].height*aspectRatio) / 2; - } - else if ( drawingCanvas[id].height > drawingCanvas[id].width/aspectRatio ) { - drawingCanvas[id].yOffset = ( drawingCanvas[id].height - drawingCanvas[id].width/aspectRatio ) / 2; - } - } - else { - container.style.background = 'url("' + background[id] + '") repeat'; - container.style.zIndex = "26"; - } - - var sponge = document.createElement( 'img' ); - sponge.src = path + 'img/sponge.png'; - sponge.id = "sponge"; - sponge.style.visibility = "hidden"; - sponge.style.position = "absolute"; - container.appendChild( sponge ); - drawingCanvas[id].sponge = sponge; - - var canvas = document.createElement( 'canvas' ); - canvas.width = drawingCanvas[id].width; - canvas.height = drawingCanvas[id].height; - canvas.setAttribute( 'data-chalkboard', id ); - canvas.style.cursor = pen[ id ]; - container.appendChild( canvas ); - drawingCanvas[id].canvas = canvas; - - drawingCanvas[id].context = canvas.getContext("2d"); - - - document.querySelector( '.reveal' ).appendChild( container ); - drawingCanvas[id].container = container; - } - - -/***************************************************************** -** Storage -******************************************************************/ - var storage = [ - { width: drawingCanvas[0].width - 2 * drawingCanvas[0].xOffset, height: drawingCanvas[0].height - 2 * drawingCanvas[0].yOffset, data: []}, - { width: drawingCanvas[1].width, height: drawingCanvas[1].height, data: []} - ]; -//console.log( JSON.stringify(storage)); - - var loaded = null; - if ( config.src != null ) { - loadData( config.src ); - } - - - /** - * Load data. - */ - function loadData( filename ) { - var xhr = new XMLHttpRequest(); - xhr.onload = function() { - if (xhr.readyState === 4 && xhr.status != 404 ) { - storage = JSON.parse(xhr.responseText); - for (var id = 0; id < storage.length; id++) { - if ( drawingCanvas[id].width != storage[id].width || drawingCanvas[id].height != storage[id].height ) { - drawingCanvas[id].scale = Math.min( drawingCanvas[id].width/storage[id].width, drawingCanvas[id].height/storage[id].height); - drawingCanvas[id].xOffset = (drawingCanvas[id].width - storage[id].width * drawingCanvas[id].scale)/2; - drawingCanvas[id].yOffset = (drawingCanvas[id].height - storage[id].height * drawingCanvas[id].scale)/2; - } - if ( config.readOnly ) { - drawingCanvas[id].container.style.cursor = 'default'; - drawingCanvas[id].canvas.style.cursor = 'default'; - } - } - loaded = true; -//console.log("Drawings loaded"); - } - else { - config.readOnly = undefined; - readOnly = undefined; - console.warn( 'Failed to get file ' + filename +". ReadyState: " + xhr.readyState + ", Status: " + xhr.status); - loaded = false; - } - }; - - xhr.open( 'GET', filename, true ); - try { - xhr.send(); - } - catch ( error ) { - config.readOnly = undefined; - readOnly = undefined; - console.warn( 'Failed to get file ' + filename + '. Make sure that the presentation and the file are served by a HTTP server and the file can be found there. ' + error ); - loaded = false; - } - } - - /** - * Download data. - */ - function downloadData() { - var a = document.createElement('a'); - document.body.appendChild(a); - try { - // cleanup slide data without events - for (var id = 0; id < 2; id++) { - for (var i = storage[id].data.length-1; i >= 0; i--) { - if (storage[id].data[i].events.length == 0) { - storage[id].data.splice(i, 1); - } - } - } - a.download = "chalkboard.json"; - var blob = new Blob( [ JSON.stringify( storage ) ], { type: "application/json"} ); - a.href = window.URL.createObjectURL( blob ); - } catch( error ) { - a.innerHTML += " (" + error + ")"; - } - a.click(); - document.body.removeChild(a); - } - - /** - * Returns data object for the slide with the given indices. - */ - function getSlideData( indices, id ) { - if ( id == undefined ) id = mode; - if (!indices) indices = slideIndices; - var data; - for (var i = 0; i < storage[id].data.length; i++) { - if (storage[id].data[i].slide.h === indices.h && storage[id].data[i].slide.v === indices.v && storage[id].data[i].slide.f === indices.f ) { - data = storage[id].data[i]; - return data; - } - if ( !legacyFileSupport && - ( storage[id].data[i].slide.h > indices.h || - ( storage[id].data[i].slide.h === indices.h && storage[id].data[i].slide.v > indices.v ) || - ( storage[id].data[i].slide.h === indices.h && storage[id].data[i].slide.v === indices.v && storage[id].data[i].slide.f > indices.f ) - ) - ) { - storage[id].data.splice( i, 0, { slide: indices, events: [], duration: 0 } ); - data = storage[id].data[i]; - return data; - } - } - storage[id].data.push( { slide: indices, events: [], duration: 0 } ); - data = storage[id].data[storage[id].data.length-1]; - return data; - } - - /** - * Returns maximum duration of slide playback for both modes - */ - function getSlideDuration( indices ) { - if (!indices) indices = slideIndices; - var duration = 0; - for (var id = 0; id < 2; id++) { - for (var i = 0; i < storage[id].data.length; i++) { - if (storage[id].data[i].slide.h === indices.h && storage[id].data[i].slide.v === indices.v && storage[id].data[i].slide.f === indices.f ) { - duration = Math.max( duration, storage[id].data[i].duration ); - break; - } - } - } -//console.log( duration ); - return duration; - } - -/***************************************************************** -** Print -******************************************************************/ - var printMode = ( /print-pdf/gi ).test( window.location.search ); -//console.log("createPrintout" + printMode) - - function createPrintout( ) { -//console.log( 'Create printout for ' + storage[1].data.length + " slides"); - drawingCanvas[0].container.classList.remove( 'visible' ); // do not print notes canvas - - var patImg = new Image(); - patImg.onload = function () { - var nextSlide = []; - var width = Reveal.getConfig().width; - var height = Reveal.getConfig().height; - var scale = 1; - var xOffset = 0; - var yOffset = 0; - if ( width != storage[1].width || height != storage[1].height ) { - scale = Math.min( width/storage[1].width, height/storage[1].height); - xOffset = (width - storage[1].width * scale)/2; - yOffset = (height - storage[1].height * scale)/2; - } - - for (var i = 0; i < storage[1].data.length; i++) { - var slide = Reveal.getSlide( storage[1].data[i].slide.h, storage[1].data[i].slide.v ); - nextSlide.push( slide.nextSibling ); - } - for (var i = 0; i < storage[1].data.length; i++) { -console.log( 'Create printout for slide ' + storage[1].data[i].slide.h + "." + storage[1].data[i].slide.v ); - var parent = Reveal.getSlide( storage[1].data[i].slide.h, storage[1].data[i].slide.v ).parentElement; - var slideData = getSlideData( storage[1].data[i].slide, 1 ); - - var imgCanvas = document.createElement('canvas'); - imgCanvas.width = width; - imgCanvas.height = height; - - var imgCtx = imgCanvas.getContext("2d"); - imgCtx.fillStyle = imgCtx.createPattern( patImg ,'repeat'); - imgCtx.rect(0,0,imgCanvas.width,imgCanvas.height); - imgCtx.fill(); - - for (var j = 0; j < slideData.events.length; j++) { - switch ( slideData.events[j].type ) { - case "draw": - for (var k = 1; k < slideData.events[j].curve.length; k++) { - draw[1]( imgCtx, - xOffset + slideData.events[j].curve[k-1].x*scale, - yOffset + slideData.events[j].curve[k-1].y*scale, - xOffset + slideData.events[j].curve[k].x*scale, - yOffset + slideData.events[j].curve[k].y*scale - ); - } - break; - case "erase": - for (var k = 0; k < slideData.events[j].curve.length; k++) { - eraseWithSponge( imgCtx, - xOffset + slideData.events[j].curve[k].x*scale, - yOffset + slideData.events[j].curve[k].y*scale - ); - } - break; - case "clear": - addPrintout( parent, nextSlide[i], imgCanvas, patImg ); - imgCtx.clearRect(0,0,imgCanvas.width,imgCanvas.height); - imgCtx.fill(); - break; - default: - break; - } - } - if ( slideData.events.length ) { - addPrintout( parent, nextSlide[i], imgCanvas, patImg ); - } - } - Reveal.sync(); - }; - patImg.src = background[1]; - } - - function addPrintout( parent, nextSlide, imgCanvas, patImg ) { - var slideCanvas = document.createElement('canvas'); - slideCanvas.width = Reveal.getConfig().width; - slideCanvas.height = Reveal.getConfig().height; - var ctx = slideCanvas.getContext("2d"); - ctx.fillStyle = ctx.createPattern( patImg ,'repeat'); - ctx.rect(0,0,slideCanvas.width,slideCanvas.height); - ctx.fill(); - ctx.drawImage(imgCanvas, 0, 0); - - var newSlide = document.createElement( 'section' ); - newSlide.classList.add( 'present' ); - newSlide.innerHTML = '

Drawing

'; - newSlide.setAttribute("data-background-size", '100% 100%' ); - newSlide.setAttribute("data-background-repeat", 'norepeat' ); - newSlide.setAttribute("data-background", 'url("' + slideCanvas.toDataURL("image/png") +'")' ); - if ( nextSlide != null ) { - parent.insertBefore( newSlide, nextSlide ); - } - else { - parent.append( newSlide ); - } - } - -/***************************************************************** -** Drawings -******************************************************************/ - - function drawWithPen(context,fromX,fromY,toX,toY){ - context.lineWidth = 3; - context.lineCap = 'round'; - context.strokeStyle = color[0]; - context.beginPath(); - context.moveTo(fromX, fromY); - context.lineTo(toX, toY); - context.stroke(); - } - - function drawWithChalk(context,fromX,fromY,toX,toY) { - var brushDiameter = 7; - context.lineWidth = brushDiameter; - context.lineCap = 'round'; - context.fillStyle = color[1]; // 'rgba(255,255,255,0.5)'; - context.strokeStyle = color[1]; - var opacity = Math.min(0.8, Math.max(0,color[1].replace(/^.*,(.+)\)/,'$1') - 0.1)) + Math.random()*0.2; - context.strokeStyle = context.strokeStyle.replace(/[\d\.]+\)$/g, opacity + ')'); - context.beginPath(); - context.moveTo(fromX, fromY); - context.lineTo(toX, toY); - context.stroke(); - // Chalk Effect - var length = Math.round(Math.sqrt(Math.pow(toX-fromX,2)+Math.pow(toY-fromY,2))/(5/brushDiameter)); - var xUnit = (toX-fromX)/length; - var yUnit = (toY-fromY)/length; - for(var i=0; i
) diff --git a/docs/asciidoctor-reveal.js-master/templates/literal.html.slim b/docs/asciidoctor-reveal.js-master/templates/literal.html.slim deleted file mode 100644 index f3a1045..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/literal.html.slim +++ /dev/null @@ -1,4 +0,0 @@ -.literalblock id=@id class=role - - if title? - .title=title - .content: pre class=(!(@document.attr? :prewrap) || (option? 'nowrap') ? 'nowrap' : nil) =content diff --git a/docs/asciidoctor-reveal.js-master/templates/notes.html.slim b/docs/asciidoctor-reveal.js-master/templates/notes.html.slim deleted file mode 100644 index c78b059..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/notes.html.slim +++ /dev/null @@ -1 +0,0 @@ -aside.notes =resolve_content diff --git a/docs/asciidoctor-reveal.js-master/templates/olist.html.slim b/docs/asciidoctor-reveal.js-master/templates/olist.html.slim deleted file mode 100644 index 28e4266..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/olist.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -.olist id=@id class=[@style,role] - - if title? - .title=title - ol class=@style start=(attr :start) type=list_marker_keyword - - items.each do |item| - li class=('fragment' if (option? :step) or (has_role? 'step')) - p=item.text - - if item.blocks? - =item.content diff --git a/docs/asciidoctor-reveal.js-master/templates/open.html.slim b/docs/asciidoctor-reveal.js-master/templates/open.html.slim deleted file mode 100644 index ec0feb0..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/open.html.slim +++ /dev/null @@ -1,18 +0,0 @@ -- if @style == 'abstract' - - if @parent == @document && @document.doctype == 'book' - - puts 'asciidoctor: WARNING: abstract block cannot be used in a document without a title when doctype is book. Excluding block content.' - - else - .quoteblock.abstract id=@id class=role - - if title? - .title=title - blockquote=content -- elsif @style == 'partintro' && (@level != 0 || @parent.context != :section || @document.doctype != 'book') - - puts 'asciidoctor: ERROR: partintro block can only be used when doctype is book and it\'s a child of a book part. Excluding block content.' -- else - - if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes') - include notes.html.slim - - else - .openblock id=@id class=[(@style != 'open' ? @style : nil),role] - - if title? - .title=title - .content=content diff --git a/docs/asciidoctor-reveal.js-master/templates/outline.html.slim b/docs/asciidoctor-reveal.js-master/templates/outline.html.slim deleted file mode 100644 index 970e5d0..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/outline.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -- unless sections.empty? - - toclevels ||= (document.attr 'toclevels', DEFAULT_TOCLEVELS).to_i - - slevel = section_level sections.first - ol class="sectlevel#{slevel}" - - sections.each do |sec| - li - a href="##{sec.id}" =section_title sec - - if (sec.level < toclevels) && (child_toc = converter.convert sec, 'outline') - = child_toc diff --git a/docs/asciidoctor-reveal.js-master/templates/page_break.html.slim b/docs/asciidoctor-reveal.js-master/templates/page_break.html.slim deleted file mode 100644 index 3781f05..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/page_break.html.slim +++ /dev/null @@ -1 +0,0 @@ -div style='page-break-after: always;' diff --git a/docs/asciidoctor-reveal.js-master/templates/paragraph.html.slim b/docs/asciidoctor-reveal.js-master/templates/paragraph.html.slim deleted file mode 100644 index 9211cf3..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/paragraph.html.slim +++ /dev/null @@ -1,7 +0,0 @@ -.paragraph id=@id class=role - - if title? - .title=title - - if has_role? 'small' - small=content - - else - p=content diff --git a/docs/asciidoctor-reveal.js-master/templates/pass.html.slim b/docs/asciidoctor-reveal.js-master/templates/pass.html.slim deleted file mode 100644 index 7125c22..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/pass.html.slim +++ /dev/null @@ -1 +0,0 @@ -=content diff --git a/docs/asciidoctor-reveal.js-master/templates/preamble.html.slim b/docs/asciidoctor-reveal.js-master/templates/preamble.html.slim deleted file mode 100644 index ee2bed4..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/preamble.html.slim +++ /dev/null @@ -1,2 +0,0 @@ -/ file intentionally left blank -/ preamble is shown on the title slide which is rendered by document template diff --git a/docs/asciidoctor-reveal.js-master/templates/quote.html.slim b/docs/asciidoctor-reveal.js-master/templates/quote.html.slim deleted file mode 100644 index bf27555..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/quote.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -.quoteblock id=@id class=role - - if title? - .title=title - blockquote=content - - attribution = (attr? :attribution) ? (attr :attribution) : nil - - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil - - if attribution || citetitle - .attribution - - if citetitle - cite=citetitle - - if attribution - - if citetitle - br - | — #{attribution} diff --git a/docs/asciidoctor-reveal.js-master/templates/ruler.html.slim b/docs/asciidoctor-reveal.js-master/templates/ruler.html.slim deleted file mode 100644 index fcb5e9c..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/ruler.html.slim +++ /dev/null @@ -1 +0,0 @@ -hr diff --git a/docs/asciidoctor-reveal.js-master/templates/section.html.slim b/docs/asciidoctor-reveal.js-master/templates/section.html.slim deleted file mode 100644 index f8d3b05..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/section.html.slim +++ /dev/null @@ -1,86 +0,0 @@ -/ OPTIONS PROCESSING -/ hide slides on %conceal, %notitle and named "!" -- titleless = (title = self.title) == '!' -- hide_title = (titleless || (option? :notitle) || (option? :conceal)) - -- vertical_slides = find_by(context: :section) {|section| section.level == 2 } - -/ extracting block image attributes to find an image to use as a -/ background_image attribute -- data_background_image, data_background_size, data_background_repeat, - data_background_position, data_background_transition = nil - -/ process the first image block in the current section that acts as a background -- section_images = blocks.map do |block| - - if (ctx = block.context) == :image - - ['background', 'canvas'].include?(block.attributes[1]) ? block : [] - - elsif ctx == :section - - [] - - else - - block.find_by(context: :image) {|image| ['background', 'canvas'].include?(image.attributes[1]) } || [] -- if (bg_image = section_images.flatten.first) - - data_background_image = image_uri(bg_image.attr 'target') - / make sure no crash on nil and default values make sense - - data_background_size = bg_image.attr 'size' - - data_background_repeat = bg_image.attr 'repeat' - - data_background_transition = bg_image.attr 'transition' - - data_background_position = bg_image.attr 'position' - -/ background-image section attribute overrides the image one -- if attr? 'background-image' - - data_background_image = image_uri(attr 'background-image') - -- if attr? 'background-video' - - data_background_video = media_uri(attr 'background-video') - -- if attr? 'background-color' - - data_background_color = attr 'background-color' - -- parent_section_with_vertical_slides = @level == 1 && !vertical_slides.empty? - -- content_for :section - section(id=(titleless ? nil : id) - class=roles - data-transition=(attr 'transition') - data-transition-speed=(attr 'transition-speed') - data-background-color=data_background_color - data-background-image=data_background_image - data-background-size=(data_background_size || attr('background-size')) - data-background-repeat=(data_background_repeat || attr('background-repeat')) - data-background-transition=(data_background_transition || attr('background-transition')) - data-background-position=(data_background_position || attr('background-position')) - data-background-iframe=(attr "background-iframe") - data-background-video=data_background_video - data-background-video-loop=((attr? 'background-video-loop') || (option? 'loop')) - data-background-video-muted=((attr? 'background-video-muted') || (option? 'muted')) - data-background-opacity=(attr "background-opacity") - data-autoslide=(attr "autoslide") - data-state=(attr 'state')) - - unless hide_title - h2=section_title - - if parent_section_with_vertical_slides - - unless (_blocks = blocks - vertical_slides).empty? - div.slide-content - - _blocks.each do |block| - =block.convert - - else - - unless (_content = content.chomp).empty? - div.slide-content - =_content - -/ RENDERING -/ render parent section of vertical slides set -- if parent_section_with_vertical_slides - section - - yield_content :section - - vertical_slides.each do |subsection| - =subsection.convert - -/ render standalone slides (or vertical slide subsection) -- else - - if @level >= 3 - / dynamic tags which maps with level - h level=(@level) =title - =content.chomp - - else - - yield_content :section diff --git a/docs/asciidoctor-reveal.js-master/templates/sidebar.html.slim b/docs/asciidoctor-reveal.js-master/templates/sidebar.html.slim deleted file mode 100644 index 8dd5f82..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/sidebar.html.slim +++ /dev/null @@ -1,8 +0,0 @@ -- if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes') - include notes.html.slim -- else - .sidebarblock id=@id class=role - .content - - if title? - .title=title - =content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_admonition.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_admonition.html.slim deleted file mode 100644 index 0507cc5..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_admonition.html.slim +++ /dev/null @@ -1,18 +0,0 @@ -- if (has_role? 'aside') or (has_role? 'speaker') - aside.notes - =content -- else - .admonitionblock id=@id class=[(attr :name),role] - table: tr - td.icon - - if @document.attr? :icons, 'font' - - icon_mapping = Hash['caution', 'fire', 'important', 'exclamation-circle', 'note', 'info-circle', 'tip', 'lightbulb-o', 'warning', 'warning'] - i class=%(fa fa-#{icon_mapping[attr :name]}) title=@caption - - elsif @document.attr? :icons - img src=icon_uri(attr :name) alt=@caption - - else - .title=@caption - td.content - - if title? - .title=title - =content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_audio.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_audio.html.slim deleted file mode 100644 index 96226ff..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_audio.html.slim +++ /dev/null @@ -1,6 +0,0 @@ -.audioblock id=@id class=[@style,role] - - if title? - .title=captioned_title - .content - audio src=media_uri(attr :target) autoplay=(option? 'autoplay') controls=!(option? 'nocontrols') loop=(option? 'loop') - |Your browser does not support the audio tag. diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_colist.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_colist.html.slim deleted file mode 100644 index 4ae362b..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_colist.html.slim +++ /dev/null @@ -1,20 +0,0 @@ -.colist id=@id class=[@style,role] - - if title? - .title=title - - if @document.attr? :icons - - font_icons = @document.attr? :icons, 'font' - table - - items.each_with_index do |item, i| - - num = i + 1 - tr - td - - if font_icons - i.conum data-value=num - b=num - - else - img src=icon_uri("callouts/#{num}") alt=num - td=item.text - - else - ol - - items.each do |item| - li: p=item.text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_dlist.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_dlist.html.slim deleted file mode 100644 index 07f4836..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_dlist.html.slim +++ /dev/null @@ -1,53 +0,0 @@ -- case @style -- when 'qanda' - .qlist id=@id class=['qanda',role] - - if title? - .title=title - ol - - items.each do |questions, answer| - li - - [*questions].each do |question| - p: em=question.text - - unless answer.nil? - - if answer.text? - p=answer.text - - if answer.blocks? - =answer.content -- when 'horizontal' - .hdlist id=@id class=role - - if title? - .title=title - table - - if (attr? :labelwidth) || (attr? :itemwidth) - colgroup - col style=((attr? :labelwidth) ? %(width:#{(attr :labelwidth).chomp '%'}%;) : nil) - col style=((attr? :itemwidth) ? %(width:#{(attr :itemwidth).chomp '%'}%;) : nil) - - items.each do |terms, dd| - tr - td class=['hdlist1',('strong' if option? 'strong')] - - terms = [*terms] - - last_term = terms.last - - terms.each do |dt| - =dt.text - - if dt != last_term - br - td.hdlist2 - - unless dd.nil? - - if dd.text? - p=dd.text - - if dd.blocks? - =dd.content -- else - .dlist id=@id class=[@style,role] - - if title? - .title=title - dl - - items.each do |terms, dd| - - [*terms].each do |dt| - dt class=('hdlist1' unless @style) =dt.text - - unless dd.nil? - dd - - if dd.text? - p=dd.text - - if dd.blocks? - =dd.content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_example.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_example.html.slim deleted file mode 100644 index 501da73..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_example.html.slim +++ /dev/null @@ -1,4 +0,0 @@ -.exampleblock id=@id class=role - - if title? - .title=captioned_title - .content=content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_floating_title.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_floating_title.html.slim deleted file mode 100644 index e8dd650..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_floating_title.html.slim +++ /dev/null @@ -1 +0,0 @@ -*{:tag=>"h#{@level + 1}", :id=>@id, :class=>[@style,role].compact} =title diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_image.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_image.html.slim deleted file mode 100644 index b534153..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_image.html.slim +++ /dev/null @@ -1,21 +0,0 @@ -- width = (attr? :width) ? (attr :width) : nil -- height = (attr? :height) ? (attr :height) : nil - -/ When the stretch class is present, block images will take the most space -/ they can take. Setting width and height can override that. -/ We pinned the 100% to height to avoid aspect ratio breakage and since -/ widescreen monitors are the most popular, chances are that height will -/ be the biggest constraint -- if (has_role? 'stretch') && !((attr? :width) || (attr? :height)) - - height = "100%" - -- unless attr(1) == 'background' || attr(1) == "canvas" - .imageblock(id=@id class=roles - style=[("text-align: #{attr :align}" if attr? :align),("float: #{attr :float}" if attr? :float)].compact.join('; ')) - - if attr? :link - a.image href=(attr :link) - img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil) - - else - img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil) - - if title? - .title=captioned_title diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_listing.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_listing.html.slim deleted file mode 100644 index e917600..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_listing.html.slim +++ /dev/null @@ -1,33 +0,0 @@ -.listingblock id=@id class=role - - if title? - .title=captioned_title - .content - - nowrap = !(@document.attr? :prewrap) || (option? 'nowrap') - / implicit listing blocks and source blocks are rendered as code - / explicit listing blocks stay listing - - if @style == 'source' || (@style == 'listing' && !(attr? 1, 'listing')) - - language = attr :language - - code_class = language ? [language, "language-#{language}"] : nil - - pre_class = ['highlight'] - - pre_lang = nil - - case attr 'source-highlighter' - - when 'coderay' - - pre_class = ['CodeRay'] - - when 'pygments' - - pre_class = ['pygments','highlight'] - - when 'prettify' - - pre_class = ['prettyprint'] - - pre_class << 'linenums' if attr? :linenums - - pre_class << language if language - - pre_class << "language-#{language}" if language - - code_class = nil - - when 'html-pipeline' - - pre_lang = language - - pre_class = code_class = nil - - nowrap = false - /- when 'highlightjs', 'highlight.js' - - pre_class << 'nowrap' if nowrap - pre class=pre_class lang=pre_lang - code class=code_class =content - - else - pre class=(nowrap ? 'nowrap' : nil) =content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_literal.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_literal.html.slim deleted file mode 100644 index f3a1045..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_literal.html.slim +++ /dev/null @@ -1,4 +0,0 @@ -.literalblock id=@id class=role - - if title? - .title=title - .content: pre class=(!(@document.attr? :prewrap) || (option? 'nowrap') ? 'nowrap' : nil) =content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_olist.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_olist.html.slim deleted file mode 100644 index 28e4266..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_olist.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -.olist id=@id class=[@style,role] - - if title? - .title=title - ol class=@style start=(attr :start) type=list_marker_keyword - - items.each do |item| - li class=('fragment' if (option? :step) or (has_role? 'step')) - p=item.text - - if item.blocks? - =item.content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_open.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_open.html.slim deleted file mode 100644 index 70040ed..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_open.html.slim +++ /dev/null @@ -1,15 +0,0 @@ -- if @style == 'abstract' - - if @parent == @document && @document.doctype == 'book' - - puts 'asciidoctor: WARNING: abstract block cannot be used in a document without a title when doctype is book. Excluding block content.' - - else - .quoteblock.abstract id=@id class=role - - if title? - .title=title - blockquote=content -- elsif @style == 'partintro' && (@level != 0 || @parent.context != :section || @document.doctype != 'book') - - puts 'asciidoctor: ERROR: partintro block can only be used when doctype is book and it\'s a child of a book part. Excluding block content.' -- else - .openblock id=@id class=[(@style != 'open' ? @style : nil),role] - - if title? - .title=title - .content=content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_page_break.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_page_break.html.slim deleted file mode 100644 index 3781f05..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_page_break.html.slim +++ /dev/null @@ -1 +0,0 @@ -div style='page-break-after: always;' diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_paragraph.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_paragraph.html.slim deleted file mode 100644 index 9211cf3..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_paragraph.html.slim +++ /dev/null @@ -1,7 +0,0 @@ -.paragraph id=@id class=role - - if title? - .title=title - - if has_role? 'small' - small=content - - else - p=content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_pass.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_pass.html.slim deleted file mode 100644 index 7125c22..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_pass.html.slim +++ /dev/null @@ -1 +0,0 @@ -=content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_preamble.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_preamble.html.slim deleted file mode 100644 index ee2bed4..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_preamble.html.slim +++ /dev/null @@ -1,2 +0,0 @@ -/ file intentionally left blank -/ preamble is shown on the title slide which is rendered by document template diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_quote.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_quote.html.slim deleted file mode 100644 index bf27555..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_quote.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -.quoteblock id=@id class=role - - if title? - .title=title - blockquote=content - - attribution = (attr? :attribution) ? (attr :attribution) : nil - - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil - - if attribution || citetitle - .attribution - - if citetitle - cite=citetitle - - if attribution - - if citetitle - br - | — #{attribution} diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_ruler.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_ruler.html.slim deleted file mode 100644 index fcb5e9c..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_ruler.html.slim +++ /dev/null @@ -1 +0,0 @@ -hr diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_sidebar.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_sidebar.html.slim deleted file mode 100644 index 1c276ea..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_sidebar.html.slim +++ /dev/null @@ -1,5 +0,0 @@ -.sidebarblock id=@id class=role - .content - - if title? - .title=title - =content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_stem.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_stem.html.slim deleted file mode 100644 index 33e2e52..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_stem.html.slim +++ /dev/null @@ -1,10 +0,0 @@ -- open, close = Asciidoctor::BLOCK_MATH_DELIMITERS[@style.to_sym] -- equation = content.strip -- if (@subs.nil? || @subs.empty?) && !(attr? 'subs') - - equation = sub_specialcharacters equation -- unless (equation.start_with? open) && (equation.end_with? close) - - equation = %(#{open}#{equation}#{close}) -.stemblock id=@id class=role - - if title? - .title=title - .content=equation diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_table.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_table.html.slim deleted file mode 100644 index dcd2d9f..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_table.html.slim +++ /dev/null @@ -1,45 +0,0 @@ -table(id=@id class=['tableblock',"frame-#{attr :frame, 'all'}","grid-#{attr :grid, 'all'}",role] - style=[("width:#{attr :tablepcwidth}%" unless option? 'autowidth'),("float:#{attr :float}" if attr? :float)].compact.join('; ')) - - if title? - caption.title=captioned_title - - unless (attr :rowcount).zero? - colgroup - - if option? 'autowidth' - - @columns.each do - col - - else - - @columns.each do |col| - col style="width:#{col.attr :colpcwidth}%" - - [:head, :foot, :body].select {|tblsec| !@rows[tblsec].empty? }.each do |tblsec| - *{:tag=>"t#{tblsec}"} - - @rows[tblsec].each do |row| - tr - - row.each do |cell| - / store reference of content in advance to resolve attribute assignments in cells - - if tblsec == :head - - cell_content = cell.text - - else - - case cell.style - - when :verse, :literal - - cell_content = cell.text - - else - - cell_content = cell.content - *{:tag=>(tblsec == :head ? 'th' : 'td'), :class=>['tableblock',"halign-#{cell.attr :halign}","valign-#{cell.attr :valign}"], - :colspan=>cell.colspan, :rowspan=>cell.rowspan, - :style=>((@document.attr? :cellbgcolor) ? %(background-color:#{@document.attr :cellbgcolor};) : nil)} - - if tblsec == :head - =cell_content - - else - - case cell.style - - when :asciidoc - div=cell_content - - when :verse - .verse=cell_content - - when :literal - .literal: pre=cell_content - - when :header - - cell_content.each do |text| - p.tableblock.header=text - - else - - cell_content.each do |text| - p.tableblock=text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_thematic_break.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_thematic_break.html.slim deleted file mode 100644 index fcb5e9c..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_thematic_break.html.slim +++ /dev/null @@ -1 +0,0 @@ -hr diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_toc.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_toc.html.slim deleted file mode 100644 index 7d4bbff..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_toc.html.slim +++ /dev/null @@ -1,12 +0,0 @@ -- if @document.attr? :toc - - toc_id = @id - - toc_role = (attr 'role', (@document.attr 'toc-class', 'toc')) - - toc_title_id = nil - - toc_title = title? ? title : (@document.attr 'toc-title') - - toc_levels = (attr? :levels) ? (attr :levels).to_i : (@document.attr :toclevels, 2).to_i - - if !toc_id && (@document.embedded? || !(@document.attr? 'toc-placement')) - - toc_id = 'toc' - - toc_title_id = 'toctitle' - div id=toc_id class=toc_role - .title id=toc_title_id =toc_title - =Asciidoctor::HTML5::DocumentTemplate.outline(@document, toc_levels) diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_ulist.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_ulist.html.slim deleted file mode 100644 index 354ff6a..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_ulist.html.slim +++ /dev/null @@ -1,25 +0,0 @@ -- if (checklist = (option? :checklist) ? 'checklist' : nil) - - if option? :interactive - - marker_checked = '' - - marker_unchecked = '' - - else - - if @document.attr? :icons, 'font' - - marker_checked = '' - - marker_unchecked = '' - - else - / could use ☑ (checked ballot) and ☐ (ballot) w/o font instead - - marker_checked = '' - - marker_unchecked = '' -.ulist id=@id class=[checklist,@style,role] - - if title? - .title=title - ul class=(checklist || @style) - - items.each do |item| - li class=('fragment' if (option? :step) || (has_role? 'step')) - p - - if checklist && (item.attr? :checkbox) - =%(#{(item.attr? :checked) ? marker_checked : marker_unchecked}#{item.text}) - - else - =item.text - - if item.blocks? - =item.content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_verse.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_verse.html.slim deleted file mode 100644 index 58a068a..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_verse.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -.verseblock id=@id class=role - - if title? - .title=title - pre.content=content - - attribution = (attr? :attribution) ? (attr :attribution) : nil - - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil - - if attribution || citetitle - .attribution - - if citetitle - cite=citetitle - - if attribution - - if citetitle - br - | — #{attribution} diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/block_video.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/block_video.html.slim deleted file mode 100644 index b4912f2..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/block_video.html.slim +++ /dev/null @@ -1,40 +0,0 @@ -/ in a slide-deck context we assume video should take as much place as possible -/ unless already specified -- no_stretch = ((attr? :width) || (attr? :height)) -- width = (attr? :width) ? (attr :width) : "100%" -- height = (attr? :height) ? (attr :height) : "100%" -/ we apply revealjs stretch class to the videoblock take all the place we can -.videoblock id=@id class=[@style,role,(no_stretch ? nil : "stretch")] - - if title? - .title=captioned_title - - case attr :poster - - when 'vimeo' - - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? - - asset_uri_scheme = %(#{asset_uri_scheme}:) - - start_anchor = (attr? :start) ? "#at=#{attr :start}" : nil - - delimiter = '?' - - loop_param = (option? 'loop') ? "#{delimiter}loop=1" : nil - - src = %(#{asset_uri_scheme}//player.vimeo.com/video/#{attr :target}#{start_anchor}#{loop_param}) - iframe(width=(width) height=(height) src=src frameborder=0 - webkitAllowFullScreen=true mozallowfullscreen=true allowFullScreen=true - data-autoplay=(option? 'autoplay')) - / data-autoplay is not supported on vimeo videos - / upstream: https://github.com/hakimel/reveal.js/issues/388 - - when 'youtube' - - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? - - asset_uri_scheme = %(#{asset_uri_scheme}:) - - params = ['rel=0'] - - params << "start=#{attr :start}" if attr? :start - - params << "end=#{attr :end}" if attr? :end - - params << "loop=1" if option? 'loop' - - params << "controls=0" if option? 'nocontrols' - - src = %(#{asset_uri_scheme}//www.youtube.com/embed/#{attr :target}?#{params * '&'}) - iframe(width=(width) height=(height) src=src - frameborder=0 allowfullscreen=!(option? 'nofullscreen') - data-autoplay=(option? 'autoplay')) - - else - video(src=media_uri(attr :target) width=(width) height=(height) - poster=((attr :poster) ? media_uri(attr :poster) : nil) - data-autoplay=(option? 'autoplay') controls=!(option? 'nocontrols') - loop=(option? 'loop')) - |Your browser does not support the video tag. diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/document.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/document.html.slim deleted file mode 100644 index 3df3fc0..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/document.html.slim +++ /dev/null @@ -1,184 +0,0 @@ -doctype 5 -html lang=(attr :lang, 'en' unless attr? :nolang) - head - meta charset="utf-8" - - revealjsdir = (attr :revealjsdir, 'reveal.js') - - unless (asset_uri_scheme = (attr 'asset-uri-scheme', 'https')).empty? - - asset_uri_scheme = %(#{asset_uri_scheme}:) - - cdn_base = %(#{asset_uri_scheme}//cdnjs.cloudflare.com/ajax/libs) - - [:description, :keywords, :author, :copyright].each do |key| - - if attr? key - meta name=key content=(attr key) - title=(doctitle sanitize: true, use_fallback: true) - meta content="yes" name="apple-mobile-web-app-capable" - meta content="black-translucent" name="apple-mobile-web-app-status-bar-style" - meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport" - link href="#{revealjsdir}/css/reveal.css" rel="stylesheet" - / Default theme required even when using custom theme - - if attr? :revealjs_customtheme - link rel='stylesheet' href=(attr :revealjs_customtheme) id='theme' - - else - link rel='stylesheet' href='#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css' id='theme' - - if attr? :icons, 'font' - - if attr? 'iconfont-remote' - link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/4.3.0/css/font-awesome.min.css)) - - else - link rel='stylesheet' href=(normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false) - - if attr? :stem - - eqnums_val = (attr 'eqnums', 'none') - - eqnums_val = 'AMS' if eqnums_val == '' - - eqnums_opt = %( equationNumbers: { autoNumber: "#{eqnums_val}" } ) - script type='text/x-mathjax-config' - | MathJax.Hub.Config({ - tex2jax: { - inlineMath: [#{Asciidoctor::INLINE_MATH_DELIMITERS[:latexmath].to_s}], - displayMath: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:latexmath].to_s}], - ignoreClass: "nostem|nolatexmath" - }, - asciimath2jax: { - delimiters: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:asciimath].to_s}], - ignoreClass: "nostem|noasciimath" - }, - TeX: {#{eqnums_opt}} - }); - script src='#{cdn_base}/mathjax/2.4.0/MathJax.js?config=TeX-MML-AM_HTMLorMML' - - case attr 'source-highlighter' - - when 'coderay' - - if (attr 'coderay-css', 'class') == 'class' - - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss) - link rel='stylesheet' href=normalize_web_path('asciidoctor-coderay.css', (attr :stylesdir, '')) - - else - style=Asciidoctor::Stylesheets.instance.coderay_stylesheet_data - - when 'pygments' - - if (attr 'pygments-css', 'class') == 'class' - - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss) - link rel='stylesheet' href=normalize_web_path('asciidoctor-pygments.css', (attr :stylesdir, '')) - - else - style=Asciidoctor::Stylesheets.instance.pygments_stylesheet_data(attr 'pygments-style') - / For syntax highlighting - - if attr? 'highlightjs-theme' - link href=(attr 'highlightjs-theme') rel="stylesheet" - - else - link href="#{revealjsdir}/lib/css/zenburn.css" rel="stylesheet" - / If the query includes 'print-pdf', use the PDF print sheet - javascript: - document.write( '' ); - - unless (docinfo_content = docinfo :header, '.html').empty? - =docinfo_content - - if attr? :customcss - link rel='stylesheet' href=((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss) - body - .reveal - / Any section element inside of this container is displayed as a slide - .slides - - unless notitle || !has_header? - - bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil - - bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil - section.title(class = role - data-transition=(attr 'title-slide-transition') - data-transition-speed=(attr 'title-slide-transition-speed') - data-background=(attr 'title-slide-background') - data-background-size=(attr 'title-slide-background-size') - data-background-image=bg_image - data-background-video=bg_video - data-background-video-loop=(attr 'title-slide-background-video-loop') - data-background-video-muted=(attr 'title-slide-background-video-muted') - data-background-iframe=(attr 'title-slide-background-iframe') - data-background-color=(attr 'title-slide-background-color') - data-background-repeat=(attr 'title-slide-background-repeat') - data-background-position=(attr 'title-slide-background-position') - data-background-transition=(attr 'title-slide-background-transition')) - - if (_title_obj = doctitle partition: true, use_fallback: true).subtitle? - h1=slice_text _title_obj.title, (_slice = header.option? :slice) - h2=slice_text _title_obj.subtitle, _slice - - else - h1=@header.title - - preamble = @document.find_by context: :preamble - - unless preamble.nil? or preamble.length == 0 - div.preamble=preamble.pop.content - - unless author.nil? - p.author: small=author - =content - script src="#{revealjsdir}/lib/js/head.min.js" - script src="#{revealjsdir}/js/reveal.js" - javascript: - // See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options - Reveal.initialize({ - // Display controls in the bottom right corner - controls: #{attr 'revealjs_controls', 'true'}, - // Display a presentation progress bar - progress: #{attr 'revealjs_progress', 'true'}, - // Display the page number of the current slide - slideNumber: #{attr 'revealjs_slidenumber', 'false'}, - // Push each slide change to the browser history - history: #{attr 'revealjs_history', 'false'}, - // Enable keyboard shortcuts for navigation - keyboard: #{attr 'revealjs_keyboard', 'true'}, - // Enable the slide overview mode - overview: #{attr 'revealjs_overview', 'true'}, - // Vertical centering of slides - center: #{attr 'revealjs_center', 'true'}, - // Enables touch navigation on devices with touch input - touch: #{attr 'revealjs_touch', 'true'}, - // Loop the presentation - loop: #{attr 'revealjs_loop', 'false'}, - // Change the presentation direction to be RTL - rtl: #{attr 'revealjs_rtl', 'false'}, - // Turns fragments on and off globally - fragments: #{attr 'revealjs_fragments', 'true'}, - // Flags if the presentation is running in an embedded mode, - // i.e. contained within a limited portion of the screen - embedded: #{attr 'revealjs_embedded', 'false'}, - // Number of milliseconds between automatically proceeding to the - // next slide, disabled when set to 0, this value can be overwritten - // by using a data-autoslide attribute on your slides - autoSlide: #{attr 'revealjs_autoslide', 0}, - // Stop auto-sliding after user input - autoSlideStoppable: #{attr 'revealjs_autoslidestoppable', 'true'}, - // Enable slide navigation via mouse wheel - mouseWheel: #{attr 'revealjs_mousewheel', 'false'}, - // Hides the address bar on mobile devices - hideAddressBar: #{attr 'revealjs_hideaddressbar', 'true'}, - // Opens links in an iframe preview overlay - previewLinks: #{attr 'revealjs_previewlinks', 'false'}, - // Theme (e.g., beige, black, league, night, serif, simple, sky, solarized, white) - // NOTE setting the theme in the config no longer works in reveal.js 3.x - //theme: Reveal.getQueryHash().theme || '#{attr 'revealjs_theme', 'black'}', - // Transition style (e.g., none, fade, slide, convex, concave, zoom) - transition: Reveal.getQueryHash().transition || '#{attr 'revealjs_transition', 'slide'}', - // Transition speed (e.g., default, fast, slow) - transitionSpeed: '#{attr 'revealjs_transitionspeed', 'default'}', - // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom) - backgroundTransition: '#{attr 'revealjs_backgroundtransition', 'fade'}', - // Number of slides away from the current that are visible - viewDistance: #{attr 'revealjs_viewdistance', 3}, - // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'") - parallaxBackgroundImage: '#{attr 'revealjs_parallaxbackgroundimage', ''}', - // Parallax background size in CSS syntax (e.g., "2100px 900px") - parallaxBackgroundSize: '#{attr 'revealjs_parallaxbackgroundsize', ''}', - - // The "normal" size of the presentation, aspect ratio will be preserved - // when the presentation is scaled to fit different resolutions. Can be - // specified using percentage units. - width: #{attr 'revealjs_width', 960}, - height: #{attr 'revealjs_height', 700}, - - // Factor of the display size that should remain empty around the content - margin: #{attr 'revealjs_margin', 0.1}, - - // Bounds for smallest/largest possible scale to apply to content - minScale: #{attr 'revealjs_minscale', 0.2}, - maxScale: #{attr 'revealjs_maxscale', 1.5}, - - // Optional libraries used to extend on reveal.js - dependencies: [ - { src: '#{revealjsdir}/lib/js/classList.js', condition: function() { return !document.body.classList; } }, - { src: '#{revealjsdir}/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, - { src: '#{revealjsdir}/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, - #{(attr? 'source-highlighter', 'highlightjs') ? "{ src: '#{revealjsdir}/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }," : nil} - { src: '#{revealjsdir}/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } }, - { src: '#{revealjsdir}/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } } - ] - }); - - unless (docinfo_content = (docinfo :footer, '.html')).empty? - =docinfo_content diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/embedded.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/embedded.html.slim deleted file mode 100644 index 0594a40..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/embedded.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -- unless notitle || !has_header? - h1 id=@id =@header.title -=content -- unless !footnotes? || attr?(:nofootnotes) - #footnotes - hr - - footnotes.each do |fn| - .footnote id='_footnote_#{fn.index}' - #{fn.index}. #{fn.text} diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/helpers.rb b/docs/asciidoctor-reveal.js-master/templates/slim/helpers.rb deleted file mode 100644 index 6d8c224..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/helpers.rb +++ /dev/null @@ -1,34 +0,0 @@ -# This helper file borrows from the Bespoke converter -# https://github.com/asciidoctor/asciidoctor-bespoke -require 'asciidoctor' -require 'json' - -if Gem::Version.new(Asciidoctor::VERSION) <= Gem::Version.new('1.5.3') - fail 'asciidoctor: FAILED: reveal.js backend needs Asciidoctor >=1.5.4!' -end - -unless defined? Slim::Include - fail 'asciidoctor: FAILED: reveal.js backend needs Slim >= 2.1.0!' -end - -# This module gets mixed in to every node (the context of the template) at the -# time the node is being converted. The properties and methods in this module -# effectively become direct members of the template. -module Slim::Helpers - - EOL = %(\n) - SliceHintRx = / +/ - - def slice_text str, active = nil - if (active || (active.nil? && (option? :slice))) && (str.include? ' ') - (str.split SliceHintRx).map {|line| %(#{line}) }.join EOL - else - str - end - end - -end - -# More custom functions can be added in another namespace if required -#module Helpers -#end diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_anchor.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_anchor.html.slim deleted file mode 100644 index 57d046d..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_anchor.html.slim +++ /dev/null @@ -1,11 +0,0 @@ -- case @type -- when :xref - - refid = (attr :refid) || @target - a href=@target =(@text || @document.references[:ids].fetch(refid, "[#{refid}]")).tr_s("\n", ' ') -- when :ref - a id=@target -- when :bibref - a id=@target - |[#{@target}] -- else - a href=@target class=role target=(attr :window) =@text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_break.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_break.html.slim deleted file mode 100644 index dc4c215..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_break.html.slim +++ /dev/null @@ -1,2 +0,0 @@ -=@text -br diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_button.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_button.html.slim deleted file mode 100644 index df5f26e..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_button.html.slim +++ /dev/null @@ -1 +0,0 @@ -b.button=@text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_callout.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_callout.html.slim deleted file mode 100644 index 452c19d..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_callout.html.slim +++ /dev/null @@ -1,7 +0,0 @@ -- if @document.attr? :icons, 'font' - i.conum data-value=@text - b="(#{@text})" -- elsif @document.attr? :icons - img src=icon_uri("callouts/#{@text}") alt=@text -- else - b="(#{@text})" diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_footnote.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_footnote.html.slim deleted file mode 100644 index bdaadfe..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_footnote.html.slim +++ /dev/null @@ -1,6 +0,0 @@ -- if @type == :xref - span.footnoteref - | [#{attr :index}] -- else - span.footnote id=("_footnote_#{@id}" if @id) - | [#{attr :index}] diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_image.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_image.html.slim deleted file mode 100644 index 6921d16..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_image.html.slim +++ /dev/null @@ -1,24 +0,0 @@ -span class=[@type,role] style=("float: #{attr :float}" if attr? :float) - - if @type == 'icon' && (@document.attr? :icons, 'font') - - style_class = ["fa fa-#{@target}"] - - style_class << "fa-#{attr :size}" if attr? :size - - style_class << "fa-rotate-#{attr :rotate}" if attr? :rotate - - style_class << "fa-flip-#{attr :flip}" if attr? :flip - - if attr? :link - a.image href=(attr :link) target=(attr :window) - i class=style_class title=(attr :title) - - else - i class=style_class title=(attr :title) - - elsif @type == 'icon' && !(@document.attr? :icons) - - if attr? :link - a.image href=(attr :link) target=(attr :window) - |[#{attr :alt}] - - else - |[#{attr :alt}] - - else - - src = (@type == 'icon' ? (icon_uri @target) : (image_uri @target)) - - if attr? :link - a.image href=(attr :link) target=(attr :window) - img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title) - - else - img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title) diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_indexterm.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_indexterm.html.slim deleted file mode 100644 index 7ad9106..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_indexterm.html.slim +++ /dev/null @@ -1,2 +0,0 @@ -- if @type == :visible - =@text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_kbd.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_kbd.html.slim deleted file mode 100644 index 0f372ee..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_kbd.html.slim +++ /dev/null @@ -1,8 +0,0 @@ -- if (keys = attr 'keys').size == 1 - kbd=keys.first -- else - span.keyseq - - keys.each_with_index do |key, idx| - - unless idx.zero? - |+ - kbd=key diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_menu.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_menu.html.slim deleted file mode 100644 index aa04d20..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_menu.html.slim +++ /dev/null @@ -1,15 +0,0 @@ -- menu = attr 'menu' -- menuitem = attr 'menuitem' -- if !(submenus = attr 'submenus').empty? - span.menuseq - span.menu=menu - | ▸ - =submenus.map {|submenu| %(#{submenu} ▸ ) }.join - span.menuitem=menuitem -- elsif !menuitem.nil? - span.menuseq - span.menu=menu - | ▸ - span.menuitem=menuitem -- else - span.menu=menu diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/inline_quoted.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/inline_quoted.html.slim deleted file mode 100644 index fc64731..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/inline_quoted.html.slim +++ /dev/null @@ -1,22 +0,0 @@ -- unless @id.nil? - a id=@id -- case @type -- when :emphasis - em class=role =@text -- when :strong - strong class=role =@text -- when :monospaced - code class=role =@text -- when :superscript - sup class=role =@text -- when :subscript - sub class=role =@text -- when :double - =role? ? %(“#{@text}”) : %(“#{@text}”) -- when :single - =role? ? %(‘#{@text}’) : %(‘#{@text}’) -- when :asciimath, :latexmath - - open, close = Asciidoctor::INLINE_MATH_DELIMITERS[@type] - |#{open}#{@text}#{close} -- else - =role? ? %(#{@text}) : @text diff --git a/docs/asciidoctor-reveal.js-master/templates/slim/section.html.slim b/docs/asciidoctor-reveal.js-master/templates/slim/section.html.slim deleted file mode 100644 index b778591..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/slim/section.html.slim +++ /dev/null @@ -1,89 +0,0 @@ -/ OPTIONS PROCESSING -/ strip IDs the same way revealjs does (remove when hakimel/reveal.js#1230 is fixed) -- _id = id.gsub(/[^a-zA-Z0-9\-\_\:\.]/, '') - -/ hide slides on %conceal, %notitle and named "!" -- titleless = (title = self.title) == '!' -- hide_title = (titleless || (option? :notitle) || (option? :conceal)) - -- vertical_slides = find_by(context: :section) {|section| section.level == 2 } - -/ extracting block image attributes to find an image to use as a -/ background_image attribute -- data_background_image, data_background_size, data_background_repeat, - data_background_transition = nil - -/ process the first image block in the current section that acts as a background -- section_images = blocks.map do |block| - - if (ctx = block.context) == :image - - ['background', 'canvas'].include?(block.attr 1) ? block : [] - - elsif ctx == :section - - [] - - else - - block.find_by(context: :image) {|image| ['background', 'canvas'].include?(image.attr 1) } || [] -- if (bg_image = section_images.flatten.first) - - data_background_image = image_uri(bg_image.attr 'target') - / make sure no crash on nil and default values make sense - - data_background_size = bg_image.attr 'size' - - data_background_repeat = bg_image.attr 'repeat' - - data_background_transition = bg_image.attr 'transition' - -/ background-image section attribute overrides the image one -- if attr? 'background-image' - - data_background_image = image_uri(attr 'background-image') - -- if attr? 'background-color' - - data_background_color = attr 'background-color' - -/ RENDERING -/ render parent section of vertical slides set -- if @level == 1 && !vertical_slides.empty? - section - / TODO: try to get rid of duplication w/ standalone slide section - section(id=(titleless ? nil : _id) - class=roles - data-transition=(attr 'transition') - data-transition-speed=(attr 'transition-speed') - data-background-color=data_background_color - data-background-image=data_background_image - data-background-size=(data_background_size || attr('background-size')) - data-background-repeat=(data_background_repeat || attr('background-repeat')) - data-background-transition=(data_background_transition || attr('background-transition')) - data-background-iframe=(attr "background-iframe") - data-background-video=(attr "background-video") - data-background-video-loop=((attr? 'background-video-loop') || (option? 'loop')) - data-background-video-muted=((attr? 'background-video-muted') || (option? 'muted')) - data-state=(attr 'state')) - - - unless hide_title - h2=title - - (blocks - vertical_slides).each do |block| - =block.convert - - vertical_slides.each do |subsection| - =subsection.convert - -/ render standalone slides (or vertical slide subsection) -- else - - if @level >= 3 - / dynamic tags which maps with level - *{tag: %(h#{@level})} =title - =content.chomp - - else - section(id=(titleless ? nil : _id) - class=roles - data-transition=(attr 'transition') - data-transition-speed=(attr 'transition-speed') - data-background-color=data_background_color - data-background-image=data_background_image - data-background-size=(data_background_size || attr('background-size')) - data-background-repeat=(data_background_repeat || attr('background-repeat')) - data-background-transition=(data_background_transition || attr('background-transition')) - data-background-iframe=(attr "background-iframe") - data-background-video=(attr "background-video") - data-background-video-loop=((attr? 'background-video-loop') || (option? 'loop')) - data-background-video-muted=((attr? 'background-video-muted') || (option? 'muted')) - data-state=(attr 'state')) - - - unless hide_title - h2=title - =content.chomp diff --git a/docs/asciidoctor-reveal.js-master/templates/stem.html.slim b/docs/asciidoctor-reveal.js-master/templates/stem.html.slim deleted file mode 100644 index 33e2e52..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/stem.html.slim +++ /dev/null @@ -1,10 +0,0 @@ -- open, close = Asciidoctor::BLOCK_MATH_DELIMITERS[@style.to_sym] -- equation = content.strip -- if (@subs.nil? || @subs.empty?) && !(attr? 'subs') - - equation = sub_specialcharacters equation -- unless (equation.start_with? open) && (equation.end_with? close) - - equation = %(#{open}#{equation}#{close}) -.stemblock id=@id class=role - - if title? - .title=title - .content=equation diff --git a/docs/asciidoctor-reveal.js-master/templates/stretch_nested_elements.js.slim b/docs/asciidoctor-reveal.js-master/templates/stretch_nested_elements.js.slim deleted file mode 100644 index 2cc2b73..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/stretch_nested_elements.js.slim +++ /dev/null @@ -1,65 +0,0 @@ -javascript: - var dom = {}; - dom.slides = document.querySelector('.reveal .slides'); - - function getRemainingHeight(element, slideElement, height) { - height = height || 0; - if (element) { - var newHeight, oldHeight = element.style.height; - // Change the .stretch element height to 0 in order find the height of all - // the other elements - element.style.height = '0px'; - // In Overview mode, the parent (.slide) height is set of 700px. - // Restore it temporarily to its natural height. - slideElement.style.height = 'auto'; - newHeight = height - slideElement.offsetHeight; - // Restore the old height, just in case - element.style.height = oldHeight + 'px'; - // Clear the parent (.slide) height. .removeProperty works in IE9+ - slideElement.style.removeProperty('height'); - return newHeight; - } - return height; - } - - function layoutSlideContents(width, height) { - // Handle sizing of elements with the 'stretch' class - toArray(dom.slides.querySelectorAll('section .stretch')).forEach(function (element) { - // Determine how much vertical space we can use - var limit = 5; // hard limit - var parent = element.parentNode; - while (parent.nodeName !== 'SECTION' && limit > 0) { - parent = parent.parentNode; - limit--; - } - if (limit === 0) { - // unable to find parent, aborting! - return; - } - var remainingHeight = getRemainingHeight(element, parent, height); - // Consider the aspect ratio of media elements - if (/(img|video)/gi.test(element.nodeName)) { - var nw = element.naturalWidth || element.videoWidth, nh = element.naturalHeight || element.videoHeight; - var es = Math.min(width / nw, remainingHeight / nh); - element.style.width = (nw * es) + 'px'; - element.style.height = (nh * es) + 'px'; - } else { - element.style.width = width + 'px'; - element.style.height = remainingHeight + 'px'; - } - }); - } - - function toArray(o) { - return Array.prototype.slice.call(o); - } - - Reveal.addEventListener('slidechanged', function () { - layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) - }); - Reveal.addEventListener('ready', function () { - layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) - }); - Reveal.addEventListener('resize', function () { - layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) - }); diff --git a/docs/asciidoctor-reveal.js-master/templates/table.html.slim b/docs/asciidoctor-reveal.js-master/templates/table.html.slim deleted file mode 100644 index 235fecc..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/table.html.slim +++ /dev/null @@ -1,45 +0,0 @@ -table(id=@id class=['tableblock',"frame-#{attr :frame, 'all'}","grid-#{attr :grid, 'all'}",role] - style=[("width:#{attr :tablepcwidth}%" unless option? 'autowidth'),("float:#{attr :float}" if attr? :float)].compact.join('; ')) - - if title? - caption.title=captioned_title - - unless (attr :rowcount).zero? - colgroup - - if option? 'autowidth' - - @columns.each do - col - - else - - @columns.each do |col| - col style="width:#{col.attr :colpcwidth}%" - - [:head, :foot, :body].select {|tblsec| !@rows[tblsec].empty? }.each do |tblsec| - / not sure about this one, done when converting to a compilable slim template - - - @rows[tblsec].each do |row| - tr - - row.each do |cell| - / store reference of content in advance to resolve attribute assignments in cells - - if tblsec == :head - - cell_content = cell.text - - else - - case cell.style - - when :literal - - cell_content = cell.text - - else - - cell_content = cell.content - = html_tag(tblsec == :head || cell.style == :header ? 'th' : 'td', - :class=>['tableblock', "halign-#{cell.attr :halign}", "valign-#{cell.attr :valign}"], - :colspan=>cell.colspan, :rowspan=>cell.rowspan, - :style=>((@document.attr? :cellbgcolor) ? %(background-color:#{@document.attr :cellbgcolor};) : nil)) - - if tblsec == :head - =cell_content - - else - - case cell.style - - when :asciidoc - div=cell_content - - when :literal - .literal: pre=cell_content - - when :header - - cell_content.each do |text| - p.tableblock.header=text - - else - - cell_content.each do |text| - p.tableblock=text diff --git a/docs/asciidoctor-reveal.js-master/templates/thematic_break.html.slim b/docs/asciidoctor-reveal.js-master/templates/thematic_break.html.slim deleted file mode 100644 index fcb5e9c..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/thematic_break.html.slim +++ /dev/null @@ -1 +0,0 @@ -hr diff --git a/docs/asciidoctor-reveal.js-master/templates/title_slide.html.slim b/docs/asciidoctor-reveal.js-master/templates/title_slide.html.slim deleted file mode 100644 index fa30588..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/title_slide.html.slim +++ /dev/null @@ -1,28 +0,0 @@ -- bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil -- bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil -section.title(class = role - data-state='title' - data-transition=(attr 'title-slide-transition') - data-transition-speed=(attr 'title-slide-transition-speed') - data-background=(attr 'title-slide-background') - data-background-size=(attr 'title-slide-background-size') - data-background-image=bg_image - data-background-video=bg_video - data-background-video-loop=(attr 'title-slide-background-video-loop') - data-background-video-muted=(attr 'title-slide-background-video-muted') - data-background-opacity=(attr 'title-slide-background-opacity') - data-background-iframe=(attr 'title-slide-background-iframe') - data-background-color=(attr 'title-slide-background-color') - data-background-repeat=(attr 'title-slide-background-repeat') - data-background-position=(attr 'title-slide-background-position') - data-background-transition=(attr 'title-slide-background-transition')) - - if (_title_obj = doctitle partition: true, use_fallback: true).subtitle? - h1=slice_text _title_obj.title, (_slice = header.option? :slice) - h2=slice_text _title_obj.subtitle, _slice - - else - h1=@header.title - - preamble = @document.find_by context: :preamble - - unless preamble.nil? or preamble.length == 0 - div.preamble=preamble.pop.content - - unless author.nil? - p.author: small=author diff --git a/docs/asciidoctor-reveal.js-master/templates/toc.html.slim b/docs/asciidoctor-reveal.js-master/templates/toc.html.slim deleted file mode 100644 index 5e03274..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/toc.html.slim +++ /dev/null @@ -1,17 +0,0 @@ -/ this made tests crash so I replaced it with asciidoctor-backends HTML5 slim template -/- if @document.attr? :toc -/ - toc_id = @id -/ - toc_role = (attr 'role', (@document.attr 'toc-class', 'toc')) -/ - toc_title_id = nil -/ - toc_title = title? ? title : (@document.attr 'toc-title') -/ - toc_levels = (attr? :levels) ? (attr :levels).to_i : (@document.attr :toclevels, 2).to_i -/ - if !toc_id && (@document.embedded? || !(@document.attr? 'toc-placement')) -/ - toc_id = 'toc' -/ - toc_title_id = 'toctitle' -/ div id=toc_id class=toc_role -/ .title id=toc_title_id =toc_title -/ =Asciidoctor::HTML5::DocumentTemplate.outline(@document, toc_levels) -#toc class=(document.attr 'toc-class', 'toc') - #toctitle =(document.attr 'toc-title') - / Renders block_outline.html. - = converter.convert document, 'outline' diff --git a/docs/asciidoctor-reveal.js-master/templates/ulist.html.slim b/docs/asciidoctor-reveal.js-master/templates/ulist.html.slim deleted file mode 100644 index 354ff6a..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/ulist.html.slim +++ /dev/null @@ -1,25 +0,0 @@ -- if (checklist = (option? :checklist) ? 'checklist' : nil) - - if option? :interactive - - marker_checked = '' - - marker_unchecked = '' - - else - - if @document.attr? :icons, 'font' - - marker_checked = '' - - marker_unchecked = '' - - else - / could use ☑ (checked ballot) and ☐ (ballot) w/o font instead - - marker_checked = '' - - marker_unchecked = '' -.ulist id=@id class=[checklist,@style,role] - - if title? - .title=title - ul class=(checklist || @style) - - items.each do |item| - li class=('fragment' if (option? :step) || (has_role? 'step')) - p - - if checklist && (item.attr? :checkbox) - =%(#{(item.attr? :checked) ? marker_checked : marker_unchecked}#{item.text}) - - else - =item.text - - if item.blocks? - =item.content diff --git a/docs/asciidoctor-reveal.js-master/templates/verse.html.slim b/docs/asciidoctor-reveal.js-master/templates/verse.html.slim deleted file mode 100644 index 58a068a..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/verse.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -.verseblock id=@id class=role - - if title? - .title=title - pre.content=content - - attribution = (attr? :attribution) ? (attr :attribution) : nil - - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil - - if attribution || citetitle - .attribution - - if citetitle - cite=citetitle - - if attribution - - if citetitle - br - | — #{attribution} diff --git a/docs/asciidoctor-reveal.js-master/templates/video.html.slim b/docs/asciidoctor-reveal.js-master/templates/video.html.slim deleted file mode 100644 index c4dfd7e..0000000 --- a/docs/asciidoctor-reveal.js-master/templates/video.html.slim +++ /dev/null @@ -1,46 +0,0 @@ -/ in a slide-deck context we assume video should take as much place as possible -/ unless already specified -- no_stretch = ((attr? :width) || (attr? :height)) -- width = (attr? :width) ? (attr :width) : "100%" -- height = (attr? :height) ? (attr :height) : "100%" -/ we apply revealjs stretch class to the videoblock take all the place we can -.videoblock id=@id class=[@style,role,(no_stretch ? nil : "stretch")] - - if title? - .title=captioned_title - - case attr :poster - - when 'vimeo' - - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? - - asset_uri_scheme = %(#{asset_uri_scheme}:) - - start_anchor = (attr? :start) ? "#at=#{attr :start}" : nil - - delimiter = ['?'] - - loop_param = (option? 'loop') ? %(#{delimiter.pop || '&'}loop=1) : '' - - muted_param = (option? 'muted') ? %(#{delimiter.pop || '&'}muted=1) : '' - - src = %(#{asset_uri_scheme}//player.vimeo.com/video/#{attr :target}#{loop_param}#{muted_param}#{start_anchor}) - / We need to delegate autoplay into the iframe starting with Chrome 62 (and other browsers too) - / See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#iframe - iframe(width=(width) height=(height) src=src frameborder=0 - webkitAllowFullScreen=true mozallowfullscreen=true allowFullScreen=true - data-autoplay=(option? 'autoplay') - allow=((option? 'autoplay') ? "autoplay" : nil)) - - when 'youtube' - - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? - - asset_uri_scheme = %(#{asset_uri_scheme}:) - - params = ['rel=0'] - - params << "start=#{attr :start}" if attr? :start - - params << "end=#{attr :end}" if attr? :end - - params << "loop=1" if option? 'loop' - - params << "mute=1" if option? 'muted' - - params << "controls=0" if option? 'nocontrols' - - src = %(#{asset_uri_scheme}//www.youtube.com/embed/#{attr :target}?#{params * '&'}) - / We need to delegate autoplay into the iframe starting with Chrome 62 (and other browsers too) - / See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#iframe - iframe(width=(width) height=(height) src=src - frameborder=0 allowfullscreen=!(option? 'nofullscreen') - data-autoplay=(option? 'autoplay') - allow=((option? 'autoplay') ? "autoplay" : nil)) - - else - video(src=media_uri(attr :target) width=(width) height=(height) - poster=((attr :poster) ? media_uri(attr :poster) : nil) - data-autoplay=(option? 'autoplay') controls=!(option? 'nocontrols') - loop=(option? 'loop')) - |Your browser does not support the video tag. diff --git a/docs/asciidoctor-reveal.js-master/test/admonition-paragraphs.adoc b/docs/asciidoctor-reveal.js-master/test/admonition-paragraphs.adoc deleted file mode 100644 index 284297c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/admonition-paragraphs.adoc +++ /dev/null @@ -1,22 +0,0 @@ -= Admonition Tests -:icons: font - -== ! - -NOTE: Take note that these slides are getting gradually more dangerous - -== ! - -TIP: Moving forward is still the way to go - -== ! - -IMPORTANT: Danger ahead - -== ! - -CAUTION: Take note that these slides are getting gradually more dangerous - -== ! - -WARNING: Danger imminent diff --git a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/custom_templates_test.rb b/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/custom_templates_test.rb deleted file mode 100644 index 181f0e3..0000000 --- a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/custom_templates_test.rb +++ /dev/null @@ -1,8 +0,0 @@ -require_relative '../test_helper' - -class Asciidoctor::Revealjs::CustomTemplatesTest < Minitest::Test - def test_that_templates_can_be_overridden_using_template_dirs_option - html = ::Asciidoctor.convert('hello world', {:template_dirs => 'test/asciidoctor-revealjs/fixtures/templates', :template_engine => 'slim'}) - assert_equal '

hello world

', html - end -end diff --git a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/fixtures/templates/paragraph.html.slim b/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/fixtures/templates/paragraph.html.slim deleted file mode 100644 index a6652ae..0000000 --- a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/fixtures/templates/paragraph.html.slim +++ /dev/null @@ -1,7 +0,0 @@ -p.paragraph id=@id class=role - - if title? - span.title=title - - if has_role? 'small' - small=content - - else - =content diff --git a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/version_test.rb b/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/version_test.rb deleted file mode 100644 index 92b252a..0000000 --- a/docs/asciidoctor-reveal.js-master/test/asciidoctor-revealjs/version_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require_relative '../test_helper' - -class Asciidoctor::Revealjs::VersionTest < Minitest::Test - def test_that_it_has_a_version_number - refute_nil ::Asciidoctor::Revealjs::VERSION - end -end diff --git a/docs/asciidoctor-reveal.js-master/test/concealed-slide-titles.adoc b/docs/asciidoctor-reveal.js-master/test/concealed-slide-titles.adoc deleted file mode 100644 index 2f22b56..0000000 --- a/docs/asciidoctor-reveal.js-master/test/concealed-slide-titles.adoc +++ /dev/null @@ -1,16 +0,0 @@ -= Concealed Slide Titles -:backend: revealjs - -== ! - -This - -[%notitle] -== Presentation - -presentation's titles - -[%conceal] -== Concealed - -should be concealed diff --git a/docs/asciidoctor-reveal.js-master/test/customcss.adoc b/docs/asciidoctor-reveal.js-master/test/customcss.adoc deleted file mode 100644 index 0f47737..0000000 --- a/docs/asciidoctor-reveal.js-master/test/customcss.adoc +++ /dev/null @@ -1,5 +0,0 @@ -= Custom CSS -Author -:customcss: customcss.css - -== Slide 1 diff --git a/docs/asciidoctor-reveal.js-master/test/customcss.css b/docs/asciidoctor-reveal.js-master/test/customcss.css deleted file mode 100644 index e540296..0000000 --- a/docs/asciidoctor-reveal.js-master/test/customcss.css +++ /dev/null @@ -1,8 +0,0 @@ -.reveal section h1 { - font-family: cursive; -} - -.reveal section small { - margin-top: 15.3em; - font-family: fantasy; -} diff --git a/docs/asciidoctor-reveal.js-master/test/data-background-newstyle.adoc b/docs/asciidoctor-reveal.js-master/test/data-background-newstyle.adoc deleted file mode 100644 index 70cfcc9..0000000 --- a/docs/asciidoctor-reveal.js-master/test/data-background-newstyle.adoc +++ /dev/null @@ -1,58 +0,0 @@ -= Test slide deck -:imagesdir: images -:backend: revealjs - -[%notitle] -== Opening - -image::cover.jpg[background, size=cover] - -== canvas - -image::cover.jpg[canvas, size=cover] - -== ! - -image::70s.jpg[background, size=cover] - -image::meme-2.jpg[width=500px] - -== I have no background - -== ! - -image::meme-7.png[] - -== ! - -image::70s.jpg[background,size=contain] - -== hey - -image::bio.jpg[background,size=100px] - -=== here - -image::bio.jpg[background,size=200px] - -=== I - -image::bio.jpg[background,size=400px] - -=== come - -image::bio.jpg[background,size=800px] - -== URL goat - -image::https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg[background,size=contain] - -[background-color=yellow] -== No [yellow] regression - - -== Empty Vertical top - -=== Vertical with background - -image::70s.jpg[canvas, size=cover] diff --git a/docs/asciidoctor-reveal.js-master/test/data-background-oldstyle.adoc b/docs/asciidoctor-reveal.js-master/test/data-background-oldstyle.adoc deleted file mode 100644 index 8e7f041..0000000 --- a/docs/asciidoctor-reveal.js-master/test/data-background-oldstyle.adoc +++ /dev/null @@ -1,38 +0,0 @@ -= Test slide deck -:imagesdir: images -:backend: revealjs - -[background-image=cover.jpg,background-size=cover] -== ! - -[background-image=70s.jpg,background-size=cover] -== ! - -image::meme-2.jpg[width=500px] - -== I have no background - -== ! - -image::meme-7.png[] - -[background-image=70s.jpg,background-size=contain] -== ! - -[background-image=bio.jpg,background-size=100px] -== hey - -[background-image=bio.jpg,background-size=200px] -=== here - -[background-image=bio.jpg,background-size=400px] -=== I - -[background-image=bio.jpg,background-size=800px] -=== come - -[background-image=https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg,background-size=contain] -== URL Goat - -[background-color=yellow] -== No [yellow] regression diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/admonition.html b/docs/asciidoctor-reveal.js-master/test/doctest/admonition.html deleted file mode 100644 index f8bb533..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/admonition.html +++ /dev/null @@ -1,475 +0,0 @@ - -
-
-

Admonitions

-
-
-

Admonition

-
-
- - - - - -
This presentation is important
-
-
-
-
-

Admonition block

-
-
- - - - - -
-
-

This is a warning block

-
-
-
-
-
-
-

Admonition block complex

-
-
- - - - - -
-
Keeping notes
-
-

These are very thorough notes.

-
-
-
    -
  • -

    With

    -
  • -
  • -

    Bullets

    -
  • -
-
-
-
-
-
-
-

Admonition with caption

-
-
- - - - - -
-
Reveal.JS
-
-

Use include blocks to split your talks into small sections. It’s easier to reorganize afterwards.

-
-
-
-
-
-
- - -
-
-

Admonitions

-
-
-

Admonition

-
-
- - - - - -
|| @captionThis presentation is important
-
-
-
-
-

Admonition block

-
-
- - - - - -
|| @caption -
-

This is a warning block

-
-
-
-
-
-
-

Admonition block complex

-
-
- - - - - -
|| @caption -
Keeping notes
-
-

These are very thorough notes.

-
-
-
    -
  • -

    With

    -
  • -
  • -

    Bullets

    -
  • -
-
-
-
-
-
-
-

Admonition with caption

-
-
- - - - - -
|| @caption -
Reveal.JS
-
-

Use include blocks to split your talks into small sections. It’s easier to reorganize afterwards.

-
-
-
-
-
-
- - -
- - - - - -
-
Note
-
This is a note.
-
- - -
- - - - - -
-
Note
-
-
Title of note
- This is a note with title. -
-
- - -
- - - - - -
-
Note
-
This is a note with id and role.
-
- - -
- - - - - -
-
Note
-
-
-

This is a note with complex content.

-
-
-
    -
  • -

    It contains a list.

    -
  • -
-
-
-
- - -
- - - - - -
-
Tip
-
This is a tip.
-
- - -
- - - - - -
-
Tip
-
-
Title of tip
- This is a tip with title. -
-
- - -
- - - - - -
-
Tip
-
This is a tip with id and role.
-
- - -
- - - - - -
-
Tip
-
-
-

This is a tip with complex content.

-
-
-
    -
  • -

    It contains a list.

    -
  • -
-
-
-
- - -
- - - - - -
-
Important
-
This is an important notice.
-
- - -
- - - - - -
-
Important
-
-
Title of important notice
- This is an important notice with title. -
-
- - -
- - - - - -
-
Important
-
This is an important notice with id and role.
-
- - -
- - - - - -
-
Important
-
-
-

This is an important notice with complex content.

-
-
-
    -
  • -

    It contains a list.

    -
  • -
-
-
-
- - -
- - - - - -
-
Caution
-
This is a caution.
-
- - -
- - - - - -
-
Caution
-
-
Title of caution
- This is a caution with title. -
-
- - -
- - - - - -
-
Caution
-
This is a caution with id and role.
-
- - -
- - - - - -
-
Caution
-
-
-

This is a caution with complex content.

-
-
-
    -
  • -

    It contains a list.

    -
  • -
-
-
-
- - -
- - - - - -
-
Warning
-
This is a warning.
-
- - -
- - - - - -
-
Warning
-
-
Title of warning
- This is a warning with title. -
-
- - -
- - - - - -
-
Warning
-
This is a warning with id and role.
-
- - -
- - - - - -
-
Warning
-
-
-

This is a warning with complex content.

-
-
-
    -
  • -

    It contains a list.

    -
  • -
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/admonitions-icons.html b/docs/asciidoctor-reveal.js-master/test/doctest/admonitions-icons.html deleted file mode 100644 index 389ed62..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/admonitions-icons.html +++ /dev/null @@ -1,90 +0,0 @@ - -
-
-

Admonitions

-
-
-

Admonition

-
-
- - - - - -
-
Important
-
This presentation is important
-
-
-
-
-

Admonition block

-
-
- - - - - -
-
Warning
-
-
-

This is a warning block

-
-
-
-
-
-
-

Admonition block complex

-
-
- - - - - -
-
Note
-
-
Keeping notes
-
-

These are very thorough notes.

-
-
-
    -
  • -

    With

    -
  • -
  • -

    Bullets

    -
  • -
-
-
-
-
-
-
-

Admonition with caption

-
-
- - - - - -
-
ProTip™
-
-
Reveal.JS
-
-

Use include blocks to split your talks into small sections. It’s easier to reorganize afterwards.

-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/admonitions.html b/docs/asciidoctor-reveal.js-master/test/doctest/admonitions.html deleted file mode 100644 index ec37365..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/admonitions.html +++ /dev/null @@ -1,82 +0,0 @@ - -
-
-

Admonitions

-
-
-

Admonition

-
-
- - - - - -
This presentation is important
-
-
-
-
-

Admonition block

-
-
- - - - - -
-
-

This is a warning block

-
-
-
-
-
-
-

Admonition block complex

-
-
- - - - - -
-
Keeping notes
-
-

These are very thorough notes.

-
-
-
    -
  • -

    With

    -
  • -
  • -

    Bullets

    -
  • -
-
-
-
-
-
-
-

Admonition with caption

-
-
- - - - - -
-
Reveal.JS
-
-

Use include blocks to split your talks into small sections. It’s easier to reorganize afterwards.

-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/audio.html b/docs/asciidoctor-reveal.js-master/test/doctest/audio.html deleted file mode 100644 index a2b6ec5..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/audio.html +++ /dev/null @@ -1,28 +0,0 @@ - -
-
- -
-
- - -
-
- -
-
- - -
-
Waves!
-
- -
-
- - -
-
- -
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/background-color.html b/docs/asciidoctor-reveal.js-master/test/doctest/background-color.html deleted file mode 100644 index c12f5d3..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/background-color.html +++ /dev/null @@ -1,57 +0,0 @@ - -
-
-

Colorful Presentation

-
-
-

Hello

-
-
-

Here

-
-
-

Red

-
-
-
-
-

We

-
-
-

Green

-
-
- - - - - -
Green background color shouldn’t be applied to the whole slide
-
-
-
-
-

Go

-
-
-

Blue

-
-
-
-
-

Default color

-
-
-

but fancy font

-
-
-
-
-

fancy font

-
-
-

and color!

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/colist.html b/docs/asciidoctor-reveal.js-master/test/doctest/colist.html deleted file mode 100644 index 08cae54..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/colist.html +++ /dev/null @@ -1,72 +0,0 @@ - -
-
-
require 'sinatra' (1)
-
-get '/hi' do  (2)
-  "Hello World!" (3)
-end
-
-
-
-
    -
  1. -

    Library import

    -
  2. -
  3. -

    URL mapping

    -
  4. -
  5. -

    Content for response

    -
  6. -
-
- - -
-
-
require 'sinatra' (1)
-
-get '/hi' do  (2)
-  "Hello World!" (3)
-end
-
-
-
-
Description
-
    -
  1. -

    Library import

    -
  2. -
  3. -

    URL mapping

    -
  4. -
  5. -

    Content for response

    -
  6. -
-
- - -
-
-
require 'sinatra' (1)
-
-get '/hi' do  (2)
-  "Hello World!" (3)
-end
-
-
-
-
    -
  1. -

    Library import

    -
  2. -
  3. -

    URL mapping

    -
  4. -
  5. -

    Content for response

    -
  6. -
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/concealed-slide-titles.html b/docs/asciidoctor-reveal.js-master/test/doctest/concealed-slide-titles.html deleted file mode 100644 index 8cbc091..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/concealed-slide-titles.html +++ /dev/null @@ -1,27 +0,0 @@ - -
-
-

Concealed Slide Titles

-
-
-
-
-

This

-
-
-
-
-
-
-

presentation’s titles

-
-
-
-
-
-
-

should be concealed

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/customcss.html b/docs/asciidoctor-reveal.js-master/test/doctest/customcss.html deleted file mode 100644 index 3e02052..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/customcss.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/data-background-newstyle.html b/docs/asciidoctor-reveal.js-master/test/doctest/data-background-newstyle.html deleted file mode 100644 index 4abef3c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/data-background-newstyle.html +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-

Test slide deck

-
-
-
-

canvas

-
-
-
-
meme 2
-
-
-
-

I have no background

-
-
-
-
meme 7
-
-
-
-
-
-

hey

-
-
-
-

here

-
-
-

I

-
-
-

come

-
-
-
-

URL goat

-
-
-

No [yellow] regression

-
-
-
-

Empty Vertical top

-
-
-

Vertical with background

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/data-background-oldstyle.html b/docs/asciidoctor-reveal.js-master/test/doctest/data-background-oldstyle.html deleted file mode 100644 index fb51812..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/data-background-oldstyle.html +++ /dev/null @@ -1,41 +0,0 @@ - -
-
-

Test slide deck

-
-
-
-
-
meme 2
-
-
-
-

I have no background

-
-
-
-
meme 7
-
-
-
-
-
-

hey

-
-
-

here

-
-
-

I

-
-
-

come

-
-
-
-

URL Goat

-
-
-

No [yellow] regression

-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/dlist.html b/docs/asciidoctor-reveal.js-master/test/doctest/dlist.html deleted file mode 100644 index b191c2b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/dlist.html +++ /dev/null @@ -1,303 +0,0 @@ - -
-
-
Asciidoctor
-
-

An implementation of the AsciiDoc processor in Ruby.

-
-
Asciidoc
-
-

A text document format for writing notes, documentation, articles, books, ebooks, slideshows, web pages, man pages and blogs.

-
-
-
- - -
-
-
About
-
-
-
    -
  • -

    An implementation of the AsciiDoc processor in Ruby.

    -
  • -
  • -

    Fast text processor and publishing toolchain.

    -
  • -
-
-
-
Authors
-
-

Asciidoctor is lead by Dan Allen and Sarah White and has received contributions from many other individuals in Asciidoctor’s awesome community.

-
-

AsciiDoc was started by Stuart Rackham.

-
-
-
-
- - -
-
-
Definition without a description
-
-
- - -
-
Asciidoctor
-
-
License
-
-

MIT

-
-
-
- - -
-
-
License
-
-

MIT

-
-
-
- - -
-
    -
  1. -

    What is Asciidoctor?

    -

    An implementation of the AsciiDoc processor in Ruby.

    -
  2. -
  3. -

    What is the answer to the Ultimate Question?

    -

    42

    -
  4. -
-
- - -
-
    -
  1. -

    What is Asciidoctor?

    -
    -
      -
    • -

      An implementation of the AsciiDoc processor in Ruby.

      -
    • -
    • -

      Fast text processor and publishing toolchain.

      -
    • -
    -
    -
  2. -
  3. -

    Who is behind Asciidoctor?

    -

    Asciidoctor is lead by Dan Allen and Sarah White and has received contributions from many other individuals in Asciidoctor’s awesome community.

    -
    -

    AsciiDoc was started by Stuart Rackham.

    -
    -
  4. -
-
- - -
-
    -
  1. -

    Who knows the answer?

    -
  2. -
-
- - -
-
The most important questions
-
    -
  1. -

    What is the answer to the Ultimate Question?

    -

    42

    -
  2. -
-
- - -
-
    -
  1. -

    What is the answer to the Ultimate Question?

    -

    42

    -
  2. -
-
- - -
- - - - - - - - - -
Hard drive -

Permanent storage for operating system and/or user files.

-
RAM -

Temporarily stores information the CPU uses during operation.

-
-
- - -
- - - - - - - - - - - - - -
Hard drive -

Permanent storage for operating system and/or user files.

-
RAM -

Temporarily stores information the CPU uses during operation.

-
-
- - -
-
Computer terminology for noobs
- - - - - - - - - -
Hard drive -

Permanent storage for operating system and/or user files.

-
RAM -

Temporarily stores information the CPU uses during operation.

-
-
- - -
- - - - - - - - - -
Hard drive -

Permanent storage for operating system and/or user files.

-
RAM -

Temporarily stores information the CPU uses during operation.

-
-
- - -
-
-
Operating Systems
-
-
-
-
Linux
-
-
-
    -
  1. -

    Fedora

    -
    -
      -
    • -

      Desktop

      -
    • -
    -
    -
  2. -
  3. -

    Ubuntu

    -
    -
      -
    • -

      Desktop

      -
    • -
    • -

      Server

      -
    • -
    -
    -
  4. -
-
-
-
BSD
-
-
-
    -
  1. -

    FreeBSD

    -
  2. -
  3. -

    NetBSD

    -
  4. -
-
-
-
-
-
-
Cloud Providers
-
-
-
-
PaaS
-
-
-
    -
  1. -

    OpenShift

    -
  2. -
  3. -

    CloudBees

    -
  4. -
-
-
-
IaaS
-
-
-
    -
  1. -

    Amazon EC2

    -
  2. -
  3. -

    Rackspace

    -
  4. -
-
-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/document.html b/docs/asciidoctor-reveal.js-master/test/doctest/document.html deleted file mode 100644 index 012a3f5..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/document.html +++ /dev/null @@ -1,104 +0,0 @@ - -The Dangerous and Thrilling Documentation Chronicles -
-

The Dangerous and Thrilling Documentation Chronicles

-
- - -The Dangerous and Thrilling Documentation Chronicles -
-

The Dangerous and Thrilling Documentation Chronicles

-

Kismet Rainbow Chameleon

-
- - -The Dangerous and Thrilling Documentation Chronicles -
-

The Dangerous and Thrilling Documentation Chronicles

-

Kismet Rainbow Chameleon

-
- - -The Dangerous and Thrilling Documentation Chronicles -
-

The Dangerous and Thrilling Documentation Chronicles

-

Kismet Rainbow Chameleon

-
- - -Document Title -
-

Document Title

-

Kismet Chameleon

-
- - -Document Title -
-

Document Title

-

Kismet Chameleon

-
- - -Document Title -
-

Document Title

-

Kismet Chameleon

-
- - -
-
-
-

The hail-and-rainbow protocol can be initiated at five levels: double, tertiary, supernumerary, supermassive, and apocalyptic party.[1] A bold statement.[2]

-
-
-

Another outrageous statement.[2]

-
-
-
- - - -
-
-
-

Document Title

-
-
-

Cavern Glow

-
-
-
- - -
-
-
-

Document Title

-
-
-

Cavern Glow

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/embedded.html b/docs/asciidoctor-reveal.js-master/test/doctest/embedded.html deleted file mode 100644 index da0622a..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/embedded.html +++ /dev/null @@ -1,27 +0,0 @@ - -

The Dangerous and Thrilling Documentation Chronicles

- - -
-

The hail-and-rainbow protocol can be initiated at five levels: double, tertiary, supernumerary, supermassive, and apocalyptic party.[1] A bold statement.[2]

-
-
-

Another outrageous statement.[2]

-
-
-
-
- 1. The double hail-and-rainbow level makes my toes tingle.
-
- 2. Opinions are my own.
-
- - -
-

Cavern Glow

-
- - -
-

Cavern Glow

-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/example.html b/docs/asciidoctor-reveal.js-master/test/doctest/example.html deleted file mode 100644 index d7601b0..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/example.html +++ /dev/null @@ -1,30 +0,0 @@ - -
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

-
-
-
- - -
-
Example 1. Sample document
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

-
-
-

The document header is useful, but not required.

-
-
-
- - -
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/floating_title.html b/docs/asciidoctor-reveal.js-master/test/doctest/floating_title.html deleted file mode 100644 index 0608fce..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/floating_title.html +++ /dev/null @@ -1,20 +0,0 @@ - -

Discrete Title Level 1

- - -

Discrete Title Level 2

- - -

Discrete Title Level 3

- - -
Discrete Title Level 4
- - -
Discrete Title Level 5
- - -

Discrete Title Level 1

- - -

Discrete Title Level 2

diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/font-awesome.html b/docs/asciidoctor-reveal.js-master/test/doctest/font-awesome.html deleted file mode 100644 index cfb1481..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/font-awesome.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - -
-
-

Font Awesome Tests

-
-
-
-
-

-
-
-
-
-
-
-

-
-
-
-
-
-
-

-
-
-
-
-
-
-

-
-
-
-
-
-
-

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/fragments.html b/docs/asciidoctor-reveal.js-master/test/doctest/fragments.html deleted file mode 100644 index 051ea80..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/fragments.html +++ /dev/null @@ -1,301 +0,0 @@ - -
-
-

Fragments

-
-
-

Fragments

-
-
-
    -
  • -

    Fragments

    -
  • -
  • -

    Are a reveal.js feature

    -
  • -
  • -

    Very familiar to Powerpoint users

    -
  • -
-
-
-
-
-

Fragments in URL

-
-
-
    -
  • -

    With reveal.js 3.6

    -
  • -
  • -

    Fragments

    -
  • -
  • -

    Can now be displayed in URLs

    -
  • -
-
-
-
-
-

Using data-fragment

-
-
-
    -
  • -

    You can now

    -
  • -
  • -

    Do

    -
  • -
  • -

    Fancy

    -
  • -
  • -

    CSS Things

    -
  • -
  • -

    With Fragments

    -
  • -
  • -

    See fragments.css

    -
  • -
-
-
-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/grid-layout.html b/docs/asciidoctor-reveal.js-master/test/doctest/grid-layout.html deleted file mode 100644 index 8b7c1f3..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/grid-layout.html +++ /dev/null @@ -1,301 +0,0 @@ - -
-
-

Grid Layout

-
-
-

2 columns

-
-
-
-
-
    -
  • -

    Edgar Allen Poe

    -
  • -
  • -

    Sheri S. Tepper

    -
  • -
  • -

    Bill Bryson

    -
  • -
-
-
-
-
-
-
-

Edgar Allan Poe (/poʊ/; born Edgar Poe; January 19, 1809 – October 7, 1849) was an American writer, editor, and literary critic.

-
-
-
-
-
-
-

Multi-columns with wrap

-
-
-
-
-
Kotlin
-
-
fun main() {
-    println("Hello, World!")
-}
-
-
-
-
-
-
-
-
Clojure
-
-
(defn -main [& args]
-  (println "Hello, World!"))
-
-
-
-
-
-
-
-
Scala
-
-
object HelloWorld {
-  def main(args: Array[String]): Unit = {
-    println("Hello, world!")
-  }
-}
-
-
-
-
-
-
-
-

Columns with size

-
-
-
-
-
    -
  • -

    Kotlin

    -
  • -
  • -

    Java

    -
  • -
  • -

    Scala

    -
  • -
-
-
-
-
-
-
-

Programming language for Android, mobile cross-platform and web development, server-side, native, and data science. Open source forever Github.

-
-
-
-
-
-
-

3 columns

-
-
-
    -
  • -

    Java

    -
  • -
  • -

    Kotlin

    -
  • -
-
-
-
    -
  • -

    Node

    -
  • -
  • -

    Deno

    -
  • -
-
-
-
    -
  • -

    Ruby

    -
  • -
  • -

    Crystal

    -
  • -
-
-
-
-
-
-
-
    -
  • -

    Java

    -
  • -
  • -

    Kotlin

    -
  • -
-
-
-
    -
  • -

    Ruby

    -
  • -
  • -

    Crystal

    -
  • -
-
-
-
-
-
-

Languages

-
-
-

We will go over languages

-
-
-
-
-

Kotlin

-
-
-
-
fun main() {
-    println("Hello, World!")
-}
-
-
-
-
-
-
    -
  • -

    Nice and compact

    -
  • -
  • -

    Works well on Android

    -
  • -
-
-
-
-
-
-
-

Clojure

-
-
-
-
(defn -main [& args]
-  (println "Hello, World!"))
-
-
-
-
-
-
    -
  • -

    Lisp-like

    -
  • -
  • -

    Few simple concepts

    -
  • -
-
-
-
-
-
-
-
-

Vertically Centered Columns

-
-
-
    -
  • -

    Java

    -
  • -
  • -

    Kotlin

    -
  • -
-
-
-
    -
  • -

    Node

    -
  • -
  • -

    Deno

    -
  • -
-
-
-
-
-
Source
-
-
[.columns.is-vcentered]
-== Vertically Aligned Columns
-
-[.column]
-* Java
-* **Kotlin**
-
-[.column]
-* Node
-* **Deno**
-
-[.column.is-half]
-[...]
-
-
-
-
-
-
-
-

Column Text Alignment

-
-
-
-
-

Something Short

-
-
-

Something So Long That We Need It Aligned

-
-
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

-
-
-
-
-

Something Short

-
-
-

Something So Long That We Need It Aligned

-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/history-hash.html b/docs/asciidoctor-reveal.js-master/test/doctest/history-hash.html deleted file mode 100644 index 55eb8e7..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/history-hash.html +++ /dev/null @@ -1,262 +0,0 @@ - -
-
-

No History

-
-
-

First slide

-
-
-

This Deck

-
-
-
-
-

Second slide

-
-
-

You can reload anytime

-
-
-
-
-

Third slide

-
-
-

Yet browser history is not spammed

-
-
-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/history-regression-tests.html b/docs/asciidoctor-reveal.js-master/test/doctest/history-regression-tests.html deleted file mode 100644 index 44a81b9..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/history-regression-tests.html +++ /dev/null @@ -1,278 +0,0 @@ - -
-
-

First Slide

-
-
-

Second Slide

-
-
-

3rd Slide

-
-
-

P3rhaps this will not work

-
-
-

5th Slide

-
-
-

Illegal çhàrâctérß

-
-
-

Explicit section id

-
-
-

Another Explicit Section Id

-
-
-

3rd Explicit is the Charm

-
-
-

67848727

-
-
-

Repeated title

-
-
-
-

Repeated title

-
-
-

hello こんにちは

-
-
-

hello 你好

-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/history.html b/docs/asciidoctor-reveal.js-master/test/doctest/history.html deleted file mode 100644 index 47bb48b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/history.html +++ /dev/null @@ -1,262 +0,0 @@ - -
-
-

History

-
-
-

First slide

-
-
-

This

-
-
-
-
-

Second slide

-
-
-

Pushes

-
-
-
-
-

Third slide

-
-
-

To Browser History Stack

-
-
-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/image.html b/docs/asciidoctor-reveal.js-master/test/doctest/image.html deleted file mode 100644 index ff8ab4b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/image.html +++ /dev/null @@ -1,27 +0,0 @@ - -
sunset
- - -
Shining sun
- - -
sunset
- - -
sunset
- - -
Shining sun
- - -
sunset
- - -
sunset
-
Figure 1. A mountain sunset
- - -
sunset
- - -
sunset
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/images.html b/docs/asciidoctor-reveal.js-master/test/doctest/images.html deleted file mode 100644 index e981029..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/images.html +++ /dev/null @@ -1,93 +0,0 @@ - -
-
-

Images tests

-
-
-

Normal

-
-
web surfing time
-
-
-
-

Stretched

-
-
web surfing time
-
-
-
-

Hardcoded

-
-
web surfing time
-
-
-
-

Image Floating

-
-
web surfing time
-
-
    -
  • -

    Some

    -
  • -
  • -

    Points

    -
  • -
  • -

    You

    -
  • -
  • -

    Won’t

    -
  • -
  • -

    Look At

    -
  • -
-
-
-
-
-

Image Role Right

-
-
web surfing time
-
-
    -
  • -

    Some

    -
  • -
  • -

    Points

    -
  • -
  • -

    You

    -
  • -
  • -

    Won’t

    -
  • -
  • -

    Look At

    -
  • -
-
-
-
-
-

Image Role Right [alt syntax]

-
-
alt text
-
-
    -
  • -

    Yup

    -
  • -
  • -

    That

    -
  • -
  • -

    Too

    -
  • -
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_anchor.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_anchor.html deleted file mode 100644 index 2bc28e1..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_anchor.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_break.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_break.html deleted file mode 100644 index aa64e08..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_break.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_button.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_button.html deleted file mode 100644 index 83173a9..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_button.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_callout.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_callout.html deleted file mode 100644 index 83173a9..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_callout.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_footnote.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_footnote.html deleted file mode 100644 index d3addfc..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_footnote.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_image.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_image.html deleted file mode 100644 index cbb672c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_image.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_kbd.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_kbd.html deleted file mode 100644 index 76cda33..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_kbd.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_menu.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_menu.html deleted file mode 100644 index a76dcb8..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_menu.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/inline_quoted.html b/docs/asciidoctor-reveal.js-master/test/doctest/inline_quoted.html deleted file mode 100644 index 06d04d6..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/inline_quoted.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/issue-grid-layout-images.html b/docs/asciidoctor-reveal.js-master/test/doctest/issue-grid-layout-images.html deleted file mode 100644 index d99ec00..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/issue-grid-layout-images.html +++ /dev/null @@ -1,26 +0,0 @@ - -
-
-

Grid Wrapping Tests

-
-
-

Should Wrap But Doesn’t

-
-
-
    -
  • -

    Things here should wrap

    -
  • -
  • -

    But instead images shrink

    -
  • -
  • -

    But now it’s good

    -
  • -
-
-
cover
-
70s
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/keyboard-shortcuts.html b/docs/asciidoctor-reveal.js-master/test/doctest/keyboard-shortcuts.html deleted file mode 100644 index a2369a5..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/keyboard-shortcuts.html +++ /dev/null @@ -1,57 +0,0 @@ - -
-
-

Keyboard shortcuts

-
-
-

Some shortcuts

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ShortcutPurpose
-

F11

-
-

Toggle fullscreen

-
-

Ctrl+T

-
-

Open a new tab

-
-

Ctrl+Shift+N

-
-

New incognito window

-
-

Ctrl++

-
-

Increase zoom

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/level-sections.html b/docs/asciidoctor-reveal.js-master/test/doctest/level-sections.html deleted file mode 100644 index aef3009..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/level-sections.html +++ /dev/null @@ -1,61 +0,0 @@ - -
-
-

Levels

-
-
-

First level

-
-
-

First content

-
-
-
-
-
-

Vertical

-
-
-

Vertical slides are using level 2 sections (===)

-
-
-

Press down arrow.

-
-
-
-
-

Level 3

-
-
-

Level 3 (====), rendered as <h3> is now supported.

-
-

Like this

-
-
-
-

Deeper

-
-

l3

-

l4

-
l5
-
-
-
-
-

Horizontal slide

-
-

Also supports levels

-
-

But they issue warnings during render

-
-
-
-
-

Horizontal sections

-
-

l3

-

l4

-
l5
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/level-sectnums.html b/docs/asciidoctor-reveal.js-master/test/doctest/level-sectnums.html deleted file mode 100644 index 6a86a71..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/level-sectnums.html +++ /dev/null @@ -1,38 +0,0 @@ - -
-
-

Sectnums

-
-
-

1. First level

-
-
-

First content

-
-
-
-
-
-

2. Vertical

-
-
-

Vertical slides are using level 2 sections

-
-
-
-
-

2.1. Level 2

-
-

Level 3 does not have sectnum, sectnumlevels is 2

-
-
-
-
-
-

3. Horizontal slide

-
-
-

3.1. Also supports levels

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/links-preview.html b/docs/asciidoctor-reveal.js-master/test/doctest/links-preview.html deleted file mode 100644 index da68998..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/links-preview.html +++ /dev/null @@ -1,213 +0,0 @@ - -
-
-

Links With Preview Tests

-
-
-

Set Globally

-
- -
-
-
-

Disabled Locally

-
-
-

Link One

-
-
-

Link Two

-
- -
-
- - -
-

Inlined Images

-
-
-

70s70s

-
-
-
-
- diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/links.html b/docs/asciidoctor-reveal.js-master/test/doctest/links.html deleted file mode 100644 index db79c40..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/links.html +++ /dev/null @@ -1,54 +0,0 @@ - -
-
-

Links

-
-
-

Regular

- -
-
-

With iFrame Preview Overlay

-
-
-

Link One

-
-
-

Link Two

-
- -
-
- - -
-

Inlined Images

-
-
-

70s70s

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/listing.html b/docs/asciidoctor-reveal.js-master/test/doctest/listing.html deleted file mode 100644 index f1e0405..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/listing.html +++ /dev/null @@ -1,78 +0,0 @@ - -
-
-
echo -n "Please enter your name: "
-read name
-echo "Hello, $name!"
-
-
- - -
-
Reading user input
-
-
echo -n "Please enter your name: "
-read name
-echo "Hello, $name!"
-
-
- - -
-
-
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
-
- - -
-
-
echo -n "Please enter your name: "
-read name
-echo "Hello, $name!"
-
-
- - -
-
-
5.times do
-  print "Odelay!"
-end
-
-
- - -
-
Odelay!
-
-
5.times do
-  print "Odelay!"
-end
-
-
- - -
-
-
5.times do
-  print "Odelay!"
-end
-
-
- - -
-
-
public class ApplicationConfigurationProvider extends HttpConfigurationProvider {
-
-   public Configuration getConfiguration(ServletContext context) {
-      return ConfigurationBuilder.begin()
-               .addRule()
-               .when(Direction.isInbound().and(Path.matches("/{path}")))
-               .perform(Log.message(Level.INFO, "Client requested path: {path}"))
-               .where("path").matches(".*");
-   }
-}
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/literal.html b/docs/asciidoctor-reveal.js-master/test/doctest/literal.html deleted file mode 100644 index 3bc4120..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/literal.html +++ /dev/null @@ -1,36 +0,0 @@ - -
-
-
error: The requested operation returned error: 1954 Forbidden search for defensive operations manual
-absolutely fatal: operation initiation lost in the dodecahedron of doom
-would you like to die again? y/n
-
-
- - -
-
Die again?
-
-
error: The requested operation returned error: 1954 Forbidden search for defensive operations manual
-absolutely fatal: operation initiation lost in the dodecahedron of doom
-would you like to die again? y/n
-
-
- - -
-
-
error: The requested operation returned error: 1954 Forbidden search for defensive operations manual
-absolutely fatal: operation initiation lost in the dodecahedron of doom
-would you like to die again? y/n
-
-
- - -
-
-
error: The requested operation returned error: 1954 Forbidden search for defensive operations manual
-absolutely fatal: operation initiation lost in the dodecahedron of doom
-would you like to die again? y/n
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/mathjax-cdn.html b/docs/asciidoctor-reveal.js-master/test/doctest/mathjax-cdn.html deleted file mode 100644 index ca7e854..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/mathjax-cdn.html +++ /dev/null @@ -1,24 +0,0 @@ - - -
-
-

MathJax

-
-
-

Math Equation

-
-
-

Using standard \(\LaTeX\) syntax:

-
-
-
\$\sqrt{37} = \sqrt{\frac{73^2-1}{12^2}} \approx \frac{73}{12} (1 - \frac{1}{2\cdot73^2})\$
-
-
-

Another one:

-
-
-

\$\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}\$

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/mathjax.html b/docs/asciidoctor-reveal.js-master/test/doctest/mathjax.html deleted file mode 100644 index 0677067..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/mathjax.html +++ /dev/null @@ -1,23 +0,0 @@ - -
-
-

MathJax

-
-
-

Math Equation

-
-
-

Using standard \(\LaTeX\) syntax:

-
-
-
\$\sqrt{37} = \sqrt{\frac{73^2-1}{12^2}} \approx \frac{73}{12} (1 - \frac{1}{2\cdot73^2})\$
-
-
-

Another one:

-
-
-

\$\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}\$

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/multi-destination-content.html b/docs/asciidoctor-reveal.js-master/test/doctest/multi-destination-content.html deleted file mode 100644 index 924e489..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/multi-destination-content.html +++ /dev/null @@ -1,97 +0,0 @@ - -
-
-

My Doc

-

John Doe

-
-
-
-

Main section

-
-
-

Sub Section lvl 2

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien ex, elementum nec scelerisque id, condimentum nec nulla. Integer dignissim faucibus ullamcorper. Morbi eget mauris molestie, facilisis augue nec, vulputate metus. Ut volutpat risus lorem, id tempus ex egestas vel. Sed quis accumsan tellus. Suspendisse interdum augue vel augue rhoncus sodales. Ut at ultrices nulla. Sed id iaculis tellus. Pellentesque efficitur diam sit amet diam lobortis, in bibendum lectus ornare.

-
-
-
-
-

Sub Section lvl 3

-
-
-

Small
- Multiline
- intro

-
-
-
    -
  1. -

    very

    -
  2. -
  3. -

    long

    -
  4. -
  5. -

    list

    -
  6. -
  7. -

    of

    -
  8. -
  9. -

    items

    -
  10. -
-
-
-
-
-
-
-

Some overview

-
-
-
-
+-------------------------------------------------+
-|       Big Picture                               |
-| +-------------+  +-----------+  +-------------+ |
-| |             |  |           |  |             | |
-| |             |  |           |  |             | |
-| |             |  |           |  |             | |
-| |             |  |           |  |             | |
-| +-------------+  +-----------+  +-------------+ |
-|                                                 |
-| +-------------+  +-----------+  +-------------+ |
-| |             |  |           |  |             | |
-| |             |  |  Focus    |  |             | |
-| |             |  |  Here     |  |             | |
-| |             |  |           |  |             | |
-| +-------------+  +-----------+  +-------------+ |
-|                                                 |
-+-------------------------------------------------+
-
-
-
-
-
-
-
-

Detailed view

-
-
-
-
+---------------------------------------------------+
-|   +---------------------------------------------+ |
-|   |     |      |             |                  | |
-|   |     |      |             |                  | |
-|   +---------------------------------------------+ |
-|   |     |      | IMPORTANT   |                  | |
-|   |     |      | DATA        |                  | |
-|   +---------------------------------------------+ |
-+---------------------------------------------------+
-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/olist.html b/docs/asciidoctor-reveal.js-master/test/doctest/olist.html deleted file mode 100644 index a63689a..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/olist.html +++ /dev/null @@ -1,180 +0,0 @@ - -
-
    -
  1. -

    Step 1

    -
  2. -
  3. -

    Step 2

    -
  4. -
  5. -

    Step 3

    -
  6. -
-
- - -
-
    -
  1. -

    Step 1

    -
  2. -
  3. -

    Step 2

    -
  4. -
  5. -

    Step 3

    -
  6. -
-
- - -
-
    -
  1. -

    Step 1

    -
  2. -
  3. -

    Step 2

    -
  4. -
  5. -

    Step 3

    -
  6. -
-
- - -
-
    -
  1. -

    level 1

    -
    -
      -
    1. -

      level 2

      -
      -
        -
      1. -

        level 3

        -
        -
          -
        1. -

          level 4

          -
          -
            -
          1. -

            level 5

            -
          2. -
          -
          -
        2. -
        -
        -
      2. -
      -
      -
    2. -
    -
    -
  2. -
-
- - -
-
Steps
-
    -
  1. -

    Step 1

    -
  2. -
  3. -

    Step 2

    -
  4. -
  5. -

    Step 3

    -
  6. -
-
- - -
-
    -
  1. -

    Step 1

    -
  2. -
  3. -

    Step 2

    -
  4. -
  5. -

    Step 3

    -
  6. -
-
- - -
-
    -
  1. -

    level 1

    -
    -
      -
    1. -

      level 2

      -
      -
        -
      1. -

        level 3

        -
        -
          -
        1. -

          level 4

          -
          -
            -
          1. -

            level 5

            -
          2. -
          -
          -
        2. -
        -
        -
      2. -
      -
      -
    2. -
    3. -

      level 2

      -
    4. -
    -
    -
  2. -
-
- - -
-
    -
  1. -

    Every list item has at least one paragraph of content, which may be wrapped, even using a hanging indent.

    -
    -

    Additional paragraphs or blocks are adjoined by putting a list continuation on a line adjacent to both blocks.

    -
    -
    -
    -
    list continuation
    -
    -

    a plus sign (+) on a line by itself

    -
    -
    -
    -
  2. -
  3. -

    A literal paragraph does not require a list continuation.

    -
    -
    -
    $ gem install asciidoctor
    -
    -
    -
  4. -
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/open.html b/docs/asciidoctor-reveal.js-master/test/doctest/open.html deleted file mode 100644 index dc0189c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/open.html +++ /dev/null @@ -1,55 +0,0 @@ - -
-
-
-

An open block can be an anonymous container, or it can masquerade as any other block.

-
-
-
- - -
-
An open block
-
-
-

An open block can be an anonymous container, or it can masquerade as any other block.

-
-
-
- - -
-
-
-

An open block can be an anonymous container, or it can masquerade as any other block.

-
-
-
- - -
-
-
-

This is an abstract quote block.

-
-
-
- - -
-
Abstract title is abstract
-
-
-

This is an abstract quote block. Who knows what it really means?

-
-
-
- - -
-
-
-

This is an abstract quote block. Who knows what it really means?

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/outline.html b/docs/asciidoctor-reveal.js-master/test/doctest/outline.html deleted file mode 100644 index cd1821c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/outline.html +++ /dev/null @@ -1,69 +0,0 @@ - -
-

Section 1

-
-
-
-

Section 2

-
-
-

Section 2.1

-
-

Section 2.1.1

-
-
-
-
-

Section 3

-
- - -
-
-

Section 1

-
-
-

Section 1.1

-
-

Section 1.1.1

-
-
-
-
-

Section 2

-
- - -
-

1. Section 1

-
-
-

Unnumbered Section

-
-
-
-

2. Section 2

-
-
-

2.1. Section 2.1

-
-
-
-

3. Section 3

-
- - -
-
-

1. Section 1

-
-
-

Section 1.1

-
-

Section 1.1.1

-
-
-
-
-

2. Section 2

-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/page_break.html b/docs/asciidoctor-reveal.js-master/test/doctest/page_break.html deleted file mode 100644 index 28ca510..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/page_break.html +++ /dev/null @@ -1,8 +0,0 @@ - -
-

Text on the first page

-
-
-
-

was breaked!

-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/paragraph.html b/docs/asciidoctor-reveal.js-master/test/doctest/paragraph.html deleted file mode 100644 index 86f538f..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/paragraph.html +++ /dev/null @@ -1,21 +0,0 @@ - -
-

Paragraphs don’t require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text.

-
-
-

To begin a new paragraph, separate it by at least one blank line.

-
- - -
-
Paragraphs
-

Paragraphs don’t require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text.

-
-
-

To begin a new paragraph, separate it by at least one blank line.

-
- - -
-

Paragraphs don’t require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text.

-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/pass.html b/docs/asciidoctor-reveal.js-master/test/doctest/pass.html deleted file mode 100644 index 51b151f..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/pass.html +++ /dev/null @@ -1,3 +0,0 @@ - -

Allons-y!

-image:tiger.png[] diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/preamble.html b/docs/asciidoctor-reveal.js-master/test/doctest/preamble.html deleted file mode 100644 index c0349be..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/preamble.html +++ /dev/null @@ -1,19 +0,0 @@ - -
-

Cavern Glow

-
-
-

The river rages through the cavern, rattling its content.

-
-
-
- - -
-

Cavern Glow

-
-
-

The river rages through the cavern, rattling its content.

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/quote.html b/docs/asciidoctor-reveal.js-master/test/doctest/quote.html deleted file mode 100644 index 63be01e..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/quote.html +++ /dev/null @@ -1,44 +0,0 @@ - -
-
Four score and seven years ago our fathers brought forth on this continent a new nation…​
-
- - -
-
A person who never made a mistake never tried anything new.
-
— Albert Einstein
-
- - -
-
Everybody remember where we parked.
-
- Star Trek IV: The Voyage Home
- — Captain James T. Kirk
-
- - -
-
After landing the cloaked Klingon bird of prey in Golden Gate park:
-
Everybody remember where we parked.
-
- - -
-
Everybody remember where we parked.
-
- - -
-
-
-

Dennis: Come and see the violence inherent in the system. Help! Help! I’m being repressed!

-
-
-

King Arthur: Bloody peasant!

-
-
-

Dennis: Oh, what a giveaway! Did you hear that? Did you hear that, eh? That’s what I’m on about! Did you see him repressing me? You saw him, Didn’t you?

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugin-activation.html b/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugin-activation.html deleted file mode 100644 index 1230aec..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugin-activation.html +++ /dev/null @@ -1,255 +0,0 @@ - -
-
-

Default Plugins Changes

-

Author

-
-
-

Slide 1

-
-
-

Content 1

-
-
-
-
-

Slide 2

-
-
-

Content 2

-
-
-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugins.html b/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugins.html deleted file mode 100644 index 19719d3..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-plugins.html +++ /dev/null @@ -1,267 +0,0 @@ - -
-
-

Custom Plugins

-

Author

-
-
-

Slide 1

-
-
-

Content 1

-
-
-
-
-

Slide 2

-
-
-

Content 2

-
-
-
-
- - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-stretch.html b/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-stretch.html deleted file mode 100644 index 6f47a41..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/revealjs-stretch.html +++ /dev/null @@ -1,34 +0,0 @@ - -
-
-

Stretch class

-
-
-

First slide

-
-
-

Some content

-
-
-

Nothing stretched

-
-
-

See?

-
-
-
-
-

Second slide

-
-
-

Some content

-
-
-

Stretched

-
-
-

See?

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/section.html b/docs/asciidoctor-reveal.js-master/test/doctest/section.html deleted file mode 100644 index 7e56f13..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/section.html +++ /dev/null @@ -1,116 +0,0 @@ - -
-

Section Level 1

-
- - -
-

Section Level 2

-
- - -

Section Level 3

- - -

Section Level 4

- - -
Section Level 5
- - -
-
-

Section Level 1

-
-
-

Section Level 2

-
-

Section Level 3

-

Section Level 4

-
Section Level 5
-
-
-
-

Section Level 2

-
-
- - -
-

Section Title

-
- - -
-

Section Title

-
- - -
-

Title with anchor

-
- - -
-

Linked title

-
- - -
-

Linked title with anchor

-
- - -
-

1. Introduction to Asciidoctor

-
-
-
-

2. Quick Starts

-
-
-

2.1. Usage

-
-

Using the Command Line Interface

-

Processing Your Content

-
-
-
-

2.2. Syntax

-
-
-
-

3. Terms and Concepts

-
- - -
-

1. Introduction to Asciidoctor

-
-
-
-

2. Quick Starts

-
-
-

Usage

-
-

Using the Command Line Interface

-
-
-
-

Syntax

-
-
-
-

3. Terms and Concepts

-
- - -
-

Part Title

-
-
-

Section Level 1

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/sidebar.html b/docs/asciidoctor-reveal.js-master/test/doctest/sidebar.html deleted file mode 100644 index ca1ca50..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/sidebar.html +++ /dev/null @@ -1,27 +0,0 @@ - -
-
-
-

AsciiDoc was first released in Nov 2002 by Stuart Rackham. It was designed from the start to be a shorthand syntax for producing professional documents like DocBook and LaTeX.

-
-
-
- - -
-
-
AsciiDoc history
-
-

AsciiDoc was first released in Nov 2002 by Stuart Rackham. It was designed from the start to be a shorthand syntax for producing professional documents like DocBook and LaTeX.

-
-
-
- - -
-
-
-

AsciiDoc was first released in Nov 2002 by Stuart Rackham. It was designed from the start to be a shorthand syntax for producing professional documents like DocBook and LaTeX.

-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-custom.html b/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-custom.html deleted file mode 100644 index dcf3033..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-custom.html +++ /dev/null @@ -1,30 +0,0 @@ - -
-
-

Title

-
-
-

First slide

-
-
-

Content

-
-
-
-
-

Second slide

-
-
-

Content

-
-
-
-
-

Third slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-for-speaker.html b/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-for-speaker.html deleted file mode 100644 index 432d564..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-for-speaker.html +++ /dev/null @@ -1,40 +0,0 @@ - -
-
-

Title

-
-
-
-

First slide

-
-
-

Content

-
-
-
-
-

First step

-
-
-

Content

-
-
-
-
-
-

Second slide

-
-
-

Content

-
-
-
-
-

Third slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-no.html b/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-no.html deleted file mode 100644 index de26e2d..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers-no.html +++ /dev/null @@ -1,30 +0,0 @@ - -
-
-

Title

-
-
-

First slide

-
-
-

Content

-
-
-
-
-

Second slide

-
-
-

Content

-
-
-
-
-

Third slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers.html b/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers.html deleted file mode 100644 index d67b4f0..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/slide-numbers.html +++ /dev/null @@ -1,40 +0,0 @@ - -
-
-

Title

-
-
-
-

First slide

-
-
-

Content

-
-
-
-
-

First step

-
-
-

Content

-
-
-
-
-
-

Second slide

-
-
-

Content

-
-
-
-
-

Third slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/slide-state.html b/docs/asciidoctor-reveal.js-master/test/doctest/slide-state.html deleted file mode 100644 index 317b3e3..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/slide-state.html +++ /dev/null @@ -1,25 +0,0 @@ - -
-
-

Title

-
-
-

First slide

-
-
-

Content

-
-
-
-
-

Topic slide

-
-
-

Second slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-callouts.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-callouts.html deleted file mode 100644 index 924b516..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-callouts.html +++ /dev/null @@ -1,59 +0,0 @@ - -
-
-

Source code callouts

-
-
-

Callout

-
-
-
-
fn main() {
-    println!("Hello World!"); (1)
-}
-
-
-
- - - - - -
- 1 - - println! is a macro.
-
-
-
-
-

Stretched Callout

-
-
-
-
fn main() { (1)
-    println!("Hello World!"); (2)
-}
-
-
-
- - - - - - - - - -
- 1 - - fn for function
- 2 - - println! is a macro.
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-emphasis.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-emphasis.html deleted file mode 100644 index c1f36fc..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-emphasis.html +++ /dev/null @@ -1,174 +0,0 @@ - -
-
-

Source Code Emphasis

-
-
-
-

Using Asciidoctor features

-
-
-

Bold markers and subs="+quotes,+macros" attribute

-
-
-
-
protected void configure(HttpSecurity http) throws Exception {
-    http
-        .authorizeRequests()
-            .antMatchers("/resources/**").permitAll()
-            .anyRequest().authenticated()
-            .and()
-        .formLogin()
-            .loginPage("/login")
-            .permitAll();
-
-
-
-
-
-

Callouts

-
-
-
-
fn main() {
-    println!("Hello World!"); (1)
-}
-
-
-
- - - - - -
- 1 - - println! is a macro.
-
-
-
-
-
-

Using reveal.js <mark> tags

-
-
-

Needs subs="none" attribute

-
-
-
-
fn main() {
-    println!("Hello marked World!");
-}
-
-
-
-
-
-

Using reveal.js data-line-numbers

-
-
-

Highlights are using Asciidoctor syntax not reveal.js. Ex: 4..8,11 instead of 4-8,11.

-
-
-
-
import React, { useState } from 'react';
-
-function Example() {
-  const [count, setCount] = useState(0);
-
-  return (
-    <div>
-      <p>You clicked {count} times</p>
-      <button onClick={() => setCount(count + 1)}>
-        Click me
-      </button>
-    </div>
-  );
-}
-
-
-
-
-
-

Step by Step with data-line-numbers

-
-
-

Highlights are using Asciidoctor syntax not reveal.js. Ex: 1|2..3|4,6..10 instead of 1|2-3|4,6-10.

-
-
-
-
import React, { useState } from 'react';
-
-function Example() {
-  const [count, setCount] = useState(0);
-
-  return (
-    <div>
-      <p>You clicked {count} times</p>
-      <button onClick={() => setCount(count + 1)}>
-        Click me
-      </button>
-    </div>
-  );
-}
-
-
-
-
-
-

ASM from Compiler

-
-
-
-
main        proc near
-var_10      = dword ptr -10h
-            push ebp                      (1)
-            mov ebp, esp
-            and esp, 0FFFFFFF0h
-            sub esp, 10h
-            mov eax, offset aHelloWorld   (2)
-            mov [esp+10h+var_10], eax
-            call _printf
-            mov eax, 0                    (3)
-            leave                         (4)
-            retn
-main        endp
-
-
-
-
-
- - - - - - - - - - - - - - - - - -
- 1 - Function prologue
- 2 - Preparing arguments and calling printf -
- 3 - Clean-up registers
- 4 - Function epilogue
-
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-html.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-html.html deleted file mode 100644 index 88d974b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-html.html +++ /dev/null @@ -1,36 +0,0 @@ - -
-
-

HTML Source Code with Highlight.js

-
-
-

Use the Source

-
-
-
-
<b>This should be source code and not bold</b>
-
-
-
-
-
-

Callouts

-
-
-
-
<b>complex code</b> (1)
-
-
-
- - - - - -
- 1 - complex code needs a callout
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-languages.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-languages.html deleted file mode 100644 index 779c1ee..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs-languages.html +++ /dev/null @@ -1,569 +0,0 @@ - -
-
-

Scilab Code with Highlight.js

-

using additional languages

-
-
-

Use the Source

-
-
-
-
function B=gauss_filter_3_3(A)
-   x=size(A,2);
-   y=size(A,1);
-   B = zeros(y, x);
-   for j = 2:y-1
-       for i= 2:x-1
-           val= 4*A(j,i)+2*(A(j,i-1)+A(j,i+1)+A(j+1,i)+A(j-1,i))+A(j+1,i+1)+A(j-1,i+1)+A(j+1,i-1)+A(j-1,i-1);
-           B(j,i) = val/16;
-       end
-   end
-endfunction
-
-A = rand(10, 10) * 256;
-B = gauss_filter_3_3(A);
-
-
-
-
-
- - - - - - - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs.html deleted file mode 100644 index a805e73..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-highlightjs.html +++ /dev/null @@ -1,125 +0,0 @@ - -
-
-

Source Code with Highlight.js

-
-
-

Use the Source

-
-
-
-
fn main() {
-    println!("Hello World!");
-}
-
-
-
-
-
-

Numbered lines

-
-
-

With standard linenums attribute

-
-
-
-
fn main() {
-    println!("Hello World!");
-}
-
-
-
-
-
-

Stretch the Source

-
-
-
-
fn main() {
-    println!("Hello stretched World!");
-}
-
-
-
-
-
-

Marked Source

-
-
-

Using <mark> in source requires a subs="none" attribute to the source block.

-
-
-
-
(def lazy-fib
-  (concat
-   [0 1]
-   ((fn rfib [a b]
-        (lazy-cons (+ a b) (rfib b (+ a b)))) 0 1)))
-
-
-
-
-
-

Highlight Lines in Source

-
-
-

Highlights are using Asciidoctor syntax not reveal.js. Ex: 4..8,11 instead of 4-8,11.

-
-
-
-
import React, { useState } from 'react';
-
-function Example() {
-  const [count, setCount] = useState(0);
-
-  return (
-    <div>
-      <p>You clicked {count} times</p>
-      <button onClick={() => setCount(count + 1)}>
-        Click me
-      </button>
-    </div>
-  );
-}
-
-
-
-
-
-

Step by Step Highlights

-
-
-

Highlights are using Asciidoctor syntax not reveal.js. Ex: 1|2..3|4,6..10 instead of 1|2-3|4,6-10.

-
-
-
-
import React, { useState } from 'react';
-
-function Example() {
-  const [count, setCount] = useState(0);
-
-  return (
-    <div>
-      <p>You clicked {count} times</p>
-      <button onClick={() => setCount(count + 1)}>
-        Click me
-      </button>
-    </div>
-  );
-}
-
-
-
-
-
-

Regression test for issue 338

-
-
-
-
This is an example of a paragraph styled with `listing`.
-Notice that the monospace markup is preserved in the output.
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-prettify.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-prettify.html deleted file mode 100644 index 3a8bd0f..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-prettify.html +++ /dev/null @@ -1,18 +0,0 @@ - -
-
-

Source Code with Prettify

-
-
-

Use the Source

-
-
-
-
fn main() {
-    println!("Hello World!");
-}
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/source-rouge.html b/docs/asciidoctor-reveal.js-master/test/doctest/source-rouge.html deleted file mode 100644 index c442493..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/source-rouge.html +++ /dev/null @@ -1,92 +0,0 @@ - -
-
-

Source Code with Prettify

-
-
-

Use the Source

-
-
fn main() {
-      println!("Hello World!");
-  }
-
-
-
- - -
-
-

Source Code with Rouge

-
-
-

Requirements

-
-
- - - - - -
This will not work from Asciidoctor.js
-
-
- - - - - -
-
-

For this to work. You need to add:

-
-
-
-
gem 'rouge'
-
-
-
-

to your Gemfile and re-run:

-
-
-
-
bundle install
-
-
-
-
-
-
-
-

Use the Source

-
-
-
-
fnmain(){println!("Hello World!");}
-
-
-
-
-
-

Stretch the Source

-
-
-
-
fnmain(){println!("Hello stretched World!");}
-
-
-
-
-
-

Rouge Features

-
-
-

This is broken see TODO in this source

-
-
-
-
ORDERED_LIST_KEYWORDS={'loweralpha'=>'a','lowerroman'=>'i','upperalpha'=>'A','upperroman'=>'I',}
-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/speaker-notes.html b/docs/asciidoctor-reveal.js-master/test/doctest/speaker-notes.html deleted file mode 100644 index 3283d59..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/speaker-notes.html +++ /dev/null @@ -1,90 +0,0 @@ - -
-
-

Title Slide

-
-
-

Slide One

-
-
-
    -
  • -

    Foo

    -
  • -
  • -

    Bar

    -
  • -
  • -

    World

    -
  • -
-
-
-
-
-

Slide Two

-
-
-

Hello Speaker Notes

-
- -
-
-
-

Slide Three

-
-
-

Other speaker notes styles

-
- -
-
-
-

Slide Four

-
-
-

Hello Old Style Speaker Notes

-
- -
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/stem.html b/docs/asciidoctor-reveal.js-master/test/doctest/stem.html deleted file mode 100644 index 2fca81a..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/stem.html +++ /dev/null @@ -1,20 +0,0 @@ - -
-
\$sqrt(4) = 2\$
-
- - -
-
\[C = \alpha + \beta Y^{\gamma} + \epsilon\]
-
- - -
-
Equation
-
\$sqrt(4) = 2\$
-
- - -
-
\$sqrt(4) = 2\$
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/table.html b/docs/asciidoctor-reveal.js-master/test/doctest/table.html deleted file mode 100644 index 7cd984a..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/table.html +++ /dev/null @@ -1,515 +0,0 @@ - - - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 1, row 2

-
-

Cell in column 2, row 2

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - - -
Table 1. Table FTW!
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
- - - - - - - - - - - - - - - - - - - - - - - -
Name of Column 1Name of Column 2
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 1, row 2

-
-

Cell in column 2, row 2

-
- - - - - - - - - - - - - - - - - - - - - - - -
-

Footer in column 1, row 3

-
-

Footer in column 2, row 3

-
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 1, row 2

-
-

Cell in column 2, row 2

-
- - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 3, row 1

-
- - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 3, row 1

-
- - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 3, row 1

-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
AsciiDoc content
-
-
-

Emphasized text

-
-

Styled like a header

-
-
-
Literal block
-
-
-

Monospaced text

-
-

Strong text

-
-

Verse block

-
- - - - - - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 3, row 1

-
-

Content in a single cell that spans columns 1 and 3

-
-

Cell in column 3, row 1

-
- - - - - - - - - - - - - - - - - - - - - - - - -
-

Cell in column 1, row 1

-
-

Cell in column 2, row 1

-
-

Cell in column 3, row 1

-
-

Content in a single cell that spans rows 2 and 3

-
-

Cell in column 2, row 2

-
-

Cell in column 3, row 2

-
-

Cell in column 2, row 3

-
-

Cell in column 3, row 3

-
- - - - - - - - - - - - -
-

Single paragraph on row 1

-
-

First paragraph on row 2

-

Second paragraph on row 2

-
- - - - - - - - - - - - - - - - - - - - - - - -
-

Prefix the {vbar} with {caret} to center content horizontally

-
-

Prefix the {vbar} with < to align the content to the left horizontally

-
-

Prefix the {vbar} with > to align the content to the right horizontally

-
-

Prefix the {vbar} with a . and {caret} to center the content in the cell vertically

-
-

Prefix the {vbar} with a . and < to align the content to the top of the cell

-
-

Prefix the {vbar} with a . and > to align the content to the bottom of the cell

-
-

This content spans three columns (3{plus}) and is centered horizontally ({caret}) and vertically (.{caret}) within the cell.

-
- - - - - - - - - - - - - - - - - - - - - - - -
-

This content is duplicated across two columns.

-

It is aligned right horizontally.

-

And it is monospaced.

-
-

This content is duplicated across two columns.

-

It is aligned right horizontally.

-

And it is monospaced.

-
-

This cell spans 3 rows. The content is centered horizontally, aligned to the bottom of the cell, and strong.

-
-

This content is emphasized.

-
-
-
This content is aligned to the top of the cell and literal.
-
-
-

This cell contains a verse that may one day expound on the wonders of tables in an epic sonnet.

-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/thematic_break.html b/docs/asciidoctor-reveal.js-master/test/doctest/thematic_break.html deleted file mode 100644 index 6b3c26b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/thematic_break.html +++ /dev/null @@ -1,2 +0,0 @@ - -
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/theme-custom.html b/docs/asciidoctor-reveal.js-master/test/doctest/theme-custom.html deleted file mode 100644 index 6794103..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/theme-custom.html +++ /dev/null @@ -1,265 +0,0 @@ - - -
-
-

OWASP Theme

-
-
-

A CTF, WTF is that?

-
-
-

CTF ⇒ Capture The Flags

-
-
-

Actually, they are…​

-
-
-
    -
  • -

    hacking games

    -
  • -
  • -

    hacking puzzles

    -
  • -
  • -

    computer science puzzle

    -
  • -
  • -

    nerd puzzles

    -
  • -
-
-
-
-
- - diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/title-preamble.html b/docs/asciidoctor-reveal.js-master/test/doctest/title-preamble.html deleted file mode 100644 index b6b557f..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/title-preamble.html +++ /dev/null @@ -1,15 +0,0 @@ - -
-
-

Presentation Title

-
-
-

Preamble

-
-
-

Author Name

-
-
-

Slide 2

-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-color.html b/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-color.html deleted file mode 100644 index 325e5c1..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-color.html +++ /dev/null @@ -1,14 +0,0 @@ - -
-
-

EPIC TITLE

-
-
-

Next slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-image.html b/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-image.html deleted file mode 100644 index c24f52f..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-image.html +++ /dev/null @@ -1,14 +0,0 @@ - -
-
-

EPIC TITLE

-
-
-

Next slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-video.html b/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-video.html deleted file mode 100644 index 7e0571b..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/title-slide-video.html +++ /dev/null @@ -1,14 +0,0 @@ - -
-
-

EPIC TITLE

-
-
-

Next slide

-
-
-

Content

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/title-subtitle-partitioning.html b/docs/asciidoctor-reveal.js-master/test/doctest/title-subtitle-partitioning.html deleted file mode 100644 index 8d85b7c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/title-subtitle-partitioning.html +++ /dev/null @@ -1,10 +0,0 @@ - -
-
-

Catch phrase

-

Longer more explicit title introducing the real concept

-
-
-

Slide 2

-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/toc.html b/docs/asciidoctor-reveal.js-master/test/doctest/toc.html deleted file mode 100644 index 6cce870..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/toc.html +++ /dev/null @@ -1,129 +0,0 @@ - -
-

Introduction

-
-
-
Table of Contents
-
    -
  1. Introduction
  2. -
  3. - The Ravages of Writing -
      -
    1. A Recipe for Potion
    2. -
    -
  4. -
-
-
-
-
-
-

The Ravages of Writing

-
-
-

A Recipe for Potion

-
-
- - -
-

Introduction

-
-
-
Table of Contents
-
    -
  1. Introduction
  2. -
  3. The Ravages of Writing
  4. -
-
-
-
-
-

The Ravages of Writing

-
- - -
-

Introduction

-
-
-
Table of Contents
-
    -
  1. Introduction
  2. -
  3. - The Ravages of Writing -
      -
    1. A Recipe for Potion
    2. -
    -
  4. -
-
-
-
-
-
-

The Ravages of Writing

-
-
-

A Recipe for Potion

-
-
- - -
-

Introduction

-
-
-
Table of Contents
-
    -
  1. Introduction
  2. -
  3. The Ravages of Writing
  4. -
-
-
-
-
-

The Ravages of Writing

-
- - -
-

Introduction

-
-
-
Table of Contents
-
    -
  1. Introduction
  2. -
  3. - The Ravages of Writing -
      -
    1. A Recipe for Potion
    2. -
    -
  4. -
-
-
-
-
-
-

The Ravages of Writing

-
-
-

A Recipe for Potion

-
-
- - -
-
-

The Ravages of Writing

-
-
-

A Recipe for Potion

-
-
- - -
-
Table of Contents
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/transitions.html b/docs/asciidoctor-reveal.js-master/test/doctest/transitions.html deleted file mode 100644 index 0fcb4bb..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/transitions.html +++ /dev/null @@ -1,27 +0,0 @@ - -
-
-

Slide Transitions

-
-
-
-
-

This

-
-
-
-
-
-
-

This slide will override the presentation transition and zoom!

-
-
-
-
-
-
-

Choose from three transition speeds: default, fast or slow!

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/ulist.html b/docs/asciidoctor-reveal.js-master/test/doctest/ulist.html deleted file mode 100644 index 6ed95e7..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/ulist.html +++ /dev/null @@ -1,131 +0,0 @@ - -
-
    -
  • -

    Edgar Allen Poe

    -
  • -
  • -

    Sheri S. Tepper

    -
  • -
  • -

    Bill Bryson

    -
  • -
-
- - -
-
Writers
-
    -
  • -

    Edgar Allen Poe

    -
  • -
  • -

    Sheri S. Tepper

    -
  • -
  • -

    Bill Bryson

    -
  • -
-
- - -
-
    -
  • -

    Edgar Allen Poe

    -
  • -
  • -

    Sheri S. Tepper

    -
  • -
  • -

    Bill Bryson

    -
  • -
-
- - -
-
    -
  • -

    level 1

    -
    -
      -
    • -

      level 2

      -
      -
        -
      • -

        level 3

        -
        -
          -
        • -

          level 4

          -
          -
            -
          • -

            level 5

            -
          • -
          -
          -
        • -
        -
        -
      • -
      -
      -
    • -
    • -

      level 2

      -
    • -
    -
    -
  • -
-
- - -
-
    -
  • -

    Every list item has at least one paragraph of content, which may be wrapped, even using a hanging indent.

    -
    -

    Additional paragraphs or blocks are adjoined by putting a list continuation on a line adjacent to both blocks.

    -
    -
    -
    -
    list continuation
    -
    -

    a plus sign (+) on a line by itself

    -
    -
    -
    -
  • -
  • -

    A literal paragraph does not require a list continuation.

    -
    -
    -
    $ gem install asciidoctor
    -
    -
    -
  • -
-
- - -
-
    -
  • -

    checked

    -
  • -
  • -

    also checked

    -
  • -
  • -

    not checked

    -
  • -
  • -

    normal list item

    -
  • -
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/verse.html b/docs/asciidoctor-reveal.js-master/test/doctest/verse.html deleted file mode 100644 index 0495fb1..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/verse.html +++ /dev/null @@ -1,45 +0,0 @@ - -
-
The fog comes
-on little cat feet.
-
- - -
-
The fog comes
-on little cat feet.
-
— Carl Sandburg
-
- - -
-
The fog comes
-on little cat feet.
-
- two lines from the poem Fog
- — Carl Sandburg
-
- - -
-
Poetry
-
The fog comes
-on little cat feet.
-
- - -
-
The fog comes
-on little cat feet.
-
- - -
-
The fog comes
-on little cat feet.
-
-It sits looking
-over harbor and city
-on silent haunches
-and then moves on.
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/vertical-slides.html b/docs/asciidoctor-reveal.js-master/test/doctest/vertical-slides.html deleted file mode 100644 index 7de1382..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/vertical-slides.html +++ /dev/null @@ -1,41 +0,0 @@ - -
-
-

Vertical Slides

-
-
-
-

First slide

-
-
-

First content

-
-
-
-
-

Vertical 1

-
-
-

Content

-
-
-
-
-

Vertical 2

-
-
-

More content

-
-

Another level

-
-
-
-
-

Second horizontal slide

-
-
-

And that is all folks

-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/doctest/video.html b/docs/asciidoctor-reveal.js-master/test/doctest/video.html deleted file mode 100644 index ad5fcb1..0000000 --- a/docs/asciidoctor-reveal.js-master/test/doctest/video.html +++ /dev/null @@ -1,95 +0,0 @@ - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
-
Must watch!
- -
- - -
- -
- - -
-
-

Video tests

-
-
-

YouTube Auto-sized

-
-
-
-
-
-

YouTube Auto-sized Auto-starts

-
-
-
-
-
-
-
- -
-
-
-

Remote Video File Auto-sized

-
-
- -
-
-
-
-
-
-
-
-

video file, options

-
-
- -
-
-
-
-

vimeo autostart

-
-
-
-
-
diff --git a/docs/asciidoctor-reveal.js-master/test/history.adoc b/docs/asciidoctor-reveal.js-master/test/history.adoc deleted file mode 100644 index a2115b9..0000000 --- a/docs/asciidoctor-reveal.js-master/test/history.adoc +++ /dev/null @@ -1,16 +0,0 @@ -= History -:backend: revealjs -// enables browser history -:revealjs_history: true - -== First slide - -Uno - -== Second slide - -Dos - -== Third slide - -Tres diff --git a/docs/asciidoctor-reveal.js-master/test/images.adoc b/docs/asciidoctor-reveal.js-master/test/images.adoc deleted file mode 100644 index 6ffb107..0000000 --- a/docs/asciidoctor-reveal.js-master/test/images.adoc +++ /dev/null @@ -1,15 +0,0 @@ -= Images tests -:imagesdir: images - -== Normal - -image::web_surfing_time.gif[] - -== Stretched - -[.stretch] -image::web_surfing_time.gif[] - -== Hardcoded - -image::web_surfing_time.gif[width="1200"] diff --git a/docs/asciidoctor-reveal.js-master/test/images/70s.jpg b/docs/asciidoctor-reveal.js-master/test/images/70s.jpg deleted file mode 100644 index fbee570..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/70s.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/images/bio.jpg b/docs/asciidoctor-reveal.js-master/test/images/bio.jpg deleted file mode 100644 index d766c87..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/bio.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/images/cover.jpg b/docs/asciidoctor-reveal.js-master/test/images/cover.jpg deleted file mode 100644 index 3c63c10..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/cover.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/images/meme-2.jpg b/docs/asciidoctor-reveal.js-master/test/images/meme-2.jpg deleted file mode 100644 index d323f3c..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/meme-2.jpg and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/images/meme-7.png b/docs/asciidoctor-reveal.js-master/test/images/meme-7.png deleted file mode 100644 index 1fdc435..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/meme-7.png and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/images/web_surfing_time.gif b/docs/asciidoctor-reveal.js-master/test/images/web_surfing_time.gif deleted file mode 100644 index 213ed2b..0000000 Binary files a/docs/asciidoctor-reveal.js-master/test/images/web_surfing_time.gif and /dev/null differ diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/.gitignore b/docs/asciidoctor-reveal.js-master/test/js-babel/.gitignore deleted file mode 100644 index e4c7cae..0000000 --- a/docs/asciidoctor-reveal.js-master/test/js-babel/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -dist/*.js -/README.html -/slides.html diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/README.adoc b/docs/asciidoctor-reveal.js-master/test/js-babel/README.adoc deleted file mode 100644 index e849b78..0000000 --- a/docs/asciidoctor-reveal.js-master/test/js-babel/README.adoc +++ /dev/null @@ -1,30 +0,0 @@ -= Asciidoctor Reveal.js integration with Babel - -This little frame was built to demonstrate a problem when trying to integrate Asciidoctor-reveal.js in a modern javascript project like Reactjs. - -You can look at `main.js` to know how to integrate asciidoctor-revealjs into such a framework and we can test from time to time to see if it still works. - - -== Usage - -Install the dependencies: - - $ npm install - -Optional: To install a development version of Asciidoctor-reveal.js (1.1.4 for example): - -1. Build npm package (see instructions in `HACKING.adoc` to do so) -2. Install devel npm package with: -+ - $ npm i --save ../../asciidoctor-reveal.js-1.1.4-dev.tgz - -Test the project: - - $ npm test - -You should obtain HTML looking output on the console that looks like a reveal.js presentation. - -== References - -* https://github.com/asciidoctor/asciidoctor-reveal.js/issues/205 -* https://github.com/asciidoctor/asciidoctor-reveal.js/issues/219 diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/dist/.gitkeep b/docs/asciidoctor-reveal.js-master/test/js-babel/dist/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/main.js b/docs/asciidoctor-reveal.js-master/test/js-babel/main.js deleted file mode 100644 index 74a0020..0000000 --- a/docs/asciidoctor-reveal.js-master/test/js-babel/main.js +++ /dev/null @@ -1,15 +0,0 @@ -import Asciidoctor from '@asciidoctor/core' -import AsciidoctorReveal from '@asciidoctor/reveal.js' - -const asciidoctor = Asciidoctor() -AsciidoctorReveal.register() - -const attributes = { revealjsdir: 'node_modules/reveal.js@' } -const options = { - safe: 'safe', - backend: 'revealjs', - attributes: attributes, - header_footer: true -} - -console.log(asciidoctor.convert('Hello *Babel*', options)) diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/package-lock.json b/docs/asciidoctor-reveal.js-master/test/js-babel/package-lock.json deleted file mode 100644 index df2da10..0000000 --- a/docs/asciidoctor-reveal.js-master/test/js-babel/package-lock.json +++ /dev/null @@ -1,3787 +0,0 @@ -{ - "name": "asciidoctor-reveal.js-integration-babel", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@asciidoctor/reveal.js": { - "version": "3.0.0-rc1", - "resolved": "https://registry.npmjs.org/@asciidoctor/reveal.js/-/reveal.js-3.0.0-rc1.tgz", - "integrity": "sha512-/jcnNTa6NwlvU88bEihiR1lZ8nrmdjrCA/PCPOjNZGWXom6+5mP5aoD2TJkYq5eRBcmB3EcvltSzrwdHCEP2SQ==", - "requires": { - "reveal.js": "3.7.0" - } - }, - "@babel/cli": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.7.4.tgz", - "integrity": "sha512-O7mmzaWdm+VabWQmxuM8hqNrWGGihN83KfhPUzp2lAW4kzIMwBxujXkZbD4fMwKMYY9FXTbDvXsJqU+5XHXi4A==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.13", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "commander": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", - "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/core": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.4.tgz", - "integrity": "sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", - "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", - "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", - "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-call-delegate": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", - "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", - "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", - "dev": true, - "requires": { - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - }, - "dependencies": { - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "@babel/helper-define-map": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", - "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", - "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-function-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", - "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", - "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", - "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", - "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", - "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.4.tgz", - "integrity": "sha512-ehGBu4mXrhs0FxAqN8tWkzF8GSIGAiEumu4ONZ/hD9M88uHcD+Yu2ttKfOCgwzoesJOJrtQh7trI5YPbRtMmnA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-simple-access": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", - "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", - "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-wrap-function": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", - "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", - "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", - "dev": true, - "requires": { - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", - "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4" - } - }, - "@babel/helper-wrap-function": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", - "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/helpers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", - "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", - "dev": true, - "requires": { - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz", - "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", - "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", - "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.7.4" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", - "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.7.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz", - "integrity": "sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", - "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", - "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", - "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", - "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", - "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", - "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", - "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", - "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", - "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-define-map": "^7.7.4", - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", - "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", - "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz", - "integrity": "sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", - "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", - "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", - "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", - "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", - "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", - "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.4.tgz", - "integrity": "sha512-/542/5LNA18YDtg1F+QHvvUSlxdvjZoD/aldQwkq+E3WCkbEjNSN9zdrOXaSlfg3IfGi22ijzecklF/A7kVZFQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz", - "integrity": "sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.7.4", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", - "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", - "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", - "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", - "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", - "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz", - "integrity": "sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==", - "dev": true, - "requires": { - "@babel/helper-call-delegate": "^7.7.4", - "@babel/helper-get-function-arity": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", - "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.4.tgz", - "integrity": "sha512-e7MWl5UJvmPEwFJTwkBlPmqixCtr9yAASBqff4ggXTNicZiwbF8Eefzm6NVgfiBp7JdAGItecnctKTgH44q2Jw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.0" - }, - "dependencies": { - "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - } - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", - "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", - "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", - "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", - "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", - "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", - "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", - "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/preset-env": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.4.tgz", - "integrity": "sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.4", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.4", - "@babel/plugin-transform-modules-commonjs": "^7.7.4", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.4", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.4", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.0.tgz", - "integrity": "sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001012", - "electron-to-chromium": "^1.3.317", - "node-releases": "^1.1.41" - } - }, - "caniuse-lite": { - "version": "1.0.30001013", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001013.tgz", - "integrity": "sha512-hOAXaWKuq/UVFgYawxIOdPdyMQdYcwOCDOjnZcKn7wCgFUrhP7smuNZjGLuJlPSgE6aRA4cRJ+bGSrhtEt7ZAg==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - } - } - }, - "@babel/template": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", - "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.4", - "@babel/types": "^7.7.4" - } - }, - "@babel/traverse": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", - "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "@babel/parser": "^7.7.4", - "@babel/types": "^7.7.4", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", - "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "optional": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "optional": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "optional": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true, - "optional": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "optional": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "optional": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "optional": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "optional": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "optional": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "optional": true - }, - "core-js-compat": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.7.tgz", - "integrity": "sha512-57+mgz/P/xsGdjwQYkwtBZR3LuISaxD1dEwVDtbk8xJMqAmwqaxLOvnNT7kdJ7jYE/NjNptyzXi+IQFMi/2fCw==", - "dev": true, - "requires": { - "browserslist": "^4.8.0", - "semver": "^6.3.0" - }, - "dependencies": { - "browserslist": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.0.tgz", - "integrity": "sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001012", - "electron-to-chromium": "^1.3.317", - "node-releases": "^1.1.41" - } - }, - "caniuse-lite": { - "version": "1.0.30001013", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001013.tgz", - "integrity": "sha512-hOAXaWKuq/UVFgYawxIOdPdyMQdYcwOCDOjnZcKn7wCgFUrhP7smuNZjGLuJlPSgE6aRA4cRJ+bGSrhtEt7ZAg==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "optional": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "optional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "optional": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "optional": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "optional": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "optional": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "optional": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "optional": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "optional": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "optional": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "node-releases": { - "version": "1.1.42", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz", - "integrity": "sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "optional": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "optional": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true, - "optional": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "optional": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "optional": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "optional": true - }, - "resolve": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", - "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true, - "optional": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "optional": true - }, - "reveal.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-3.7.0.tgz", - "integrity": "sha512-HTOTNhF5mQAw6fcsptk4oql/DEEUwTG0YHk/LzTNNx0/3IgvOQZqKzvlK/zNpqqKMLlhn1gH9Nvp+FFoc/e5/w==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "optional": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "optional": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "optional": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "optional": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true, - "optional": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "optional": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "optional": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - } - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "optional": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "optional": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "optional": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "optional": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "optional": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true, - "optional": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/docs/asciidoctor-reveal.js-master/test/js-babel/package.json b/docs/asciidoctor-reveal.js-master/test/js-babel/package.json deleted file mode 100644 index 2cca3ae..0000000 --- a/docs/asciidoctor-reveal.js-master/test/js-babel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "asciidoctor-reveal.js-integration-babel", - "version": "1.0.0", - "description": "Asciidoctor Reveal.js converter integration with Babel", - "main": "index.js", - "scripts": { - "test": "babel --presets @babel/env main.js -o dist/main.js && node dist/main.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Mogztter/asciidoctor-reveal.js-integration-babel.git" - }, - "keywords": [], - "author": "", - "license": "MIT", - "bugs": { - "url": "https://github.com/Mogztter/asciidoctor-reveal.js-integration-babel/issues" - }, - "homepage": "https://github.com/Mogztter/asciidoctor-reveal.js-integration-babel#readme", - "devDependencies": { - "@babel/cli": "^7.7.4", - "@babel/core": "^7.7.4", - "@babel/preset-env": "^7.7.4" - }, - "dependencies": { - "@asciidoctor/reveal.js": "^3.0.0-rc1" - } -} diff --git a/docs/asciidoctor-reveal.js-master/test/keyboard-shortcuts.adoc b/docs/asciidoctor-reveal.js-master/test/keyboard-shortcuts.adoc deleted file mode 100644 index 4cf4035..0000000 --- a/docs/asciidoctor-reveal.js-master/test/keyboard-shortcuts.adoc +++ /dev/null @@ -1,20 +0,0 @@ -= Keyboard shortcuts -:experimental: - -== Some shortcuts - -|=== -|Shortcut |Purpose - -|kbd:[F11] -|Toggle fullscreen - -|kbd:[Ctrl+T] -|Open a new tab - -|kbd:[Ctrl+Shift+N] -|New incognito window - -|kbd:[Ctrl + +] -|Increase zoom -|=== diff --git a/docs/asciidoctor-reveal.js-master/test/level-sections.adoc b/docs/asciidoctor-reveal.js-master/test/level-sections.adoc deleted file mode 100644 index 6af2b3d..0000000 --- a/docs/asciidoctor-reveal.js-master/test/level-sections.adoc +++ /dev/null @@ -1,40 +0,0 @@ -= Levels -:backend: revealjs - -== First level - -First content - -== Vertical - -Vertical slides are using level 2 sections (`===`) - -Press down arrow. - -=== Level 3 - -Level 3 (`====`), rendered as `

` is now supported. - -==== Like this - -=== Deeper - -==== l3 - -===== l4 - -====== l5 - -== Horizontal slide - -==== Also supports levels - -But they issue warnings during render - -== Horizontal sections - -==== l3 - -===== l4 - -====== l5 diff --git a/docs/asciidoctor-reveal.js-master/test/multi-destination-content.adoc b/docs/asciidoctor-reveal.js-master/test/multi-destination-content.adoc deleted file mode 100644 index dc92cce..0000000 --- a/docs/asciidoctor-reveal.js-master/test/multi-destination-content.adoc +++ /dev/null @@ -1,61 +0,0 @@ -= My Doc -John Doe -:revdate: 2016-04-26 - -== Main section - -=== Sub Section lvl 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien ex, elementum nec scelerisque id, condimentum nec nulla. Integer dignissim faucibus ullamcorper. Morbi eget mauris molestie, facilisis augue nec, vulputate metus. Ut volutpat risus lorem, id tempus ex egestas vel. Sed quis accumsan tellus. Suspendisse interdum augue vel augue rhoncus sodales. Ut at ultrices nulla. Sed id iaculis tellus. Pellentesque efficitur diam sit amet diam lobortis, in bibendum lectus ornare. - -=== Sub Section lvl 3 - -Small + -Multiline + -intro - -. very -. long -. list -. of -. items - -ifdef::backend-revealjs[=== !] - -Some overview - ----- -+-------------------------------------------------+ -| Big Picture | -| +-------------+ +-----------+ +-------------+ | -| | | | | | | | -| | | | | | | | -| | | | | | | | -| | | | | | | | -| +-------------+ +-----------+ +-------------+ | -| | -| +-------------+ +-----------+ +-------------+ | -| | | | | | | | -| | | | Focus | | | | -| | | | Here | | | | -| | | | | | | | -| +-------------+ +-----------+ +-------------+ | -| | -+-------------------------------------------------+ ----- - -ifdef::backend-revealjs[=== !] - -Detailed view - ----- -+---------------------------------------------------+ -| +---------------------------------------------+ | -| | | | | | | -| | | | | | | -| +---------------------------------------------+ | -| | | | IMPORTANT | | | -| | | | DATA | | | -| +---------------------------------------------+ | -+---------------------------------------------------+ ----- diff --git a/docs/asciidoctor-reveal.js-master/test/revealjs-stretch.adoc b/docs/asciidoctor-reveal.js-master/test/revealjs-stretch.adoc deleted file mode 100644 index 588640e..0000000 --- a/docs/asciidoctor-reveal.js-master/test/revealjs-stretch.adoc +++ /dev/null @@ -1,18 +0,0 @@ -= Stretch class - -== First slide - -Some content - -Nothing stretched - -See? - -== Second slide - -Some content - -[.stretch] -Stretched - -See? diff --git a/docs/asciidoctor-reveal.js-master/test/settings.adoc b/docs/asciidoctor-reveal.js-master/test/settings.adoc deleted file mode 100644 index 4bb6c3c..0000000 --- a/docs/asciidoctor-reveal.js-master/test/settings.adoc +++ /dev/null @@ -1,19 +0,0 @@ -= Settings -// demonstrates different boolean values -:revealjs_history: true -:revealjs_controls: -:revealjs_progress: false -:revealjs_keyboard: 1 -:revealjs_overview: 0 - -== First slide - -Uno - -== Second slide - -Dos - -== Third slide - -Tres diff --git a/docs/asciidoctor-reveal.js-master/test/slide-state.adoc b/docs/asciidoctor-reveal.js-master/test/slide-state.adoc deleted file mode 100644 index b862d31..0000000 --- a/docs/asciidoctor-reveal.js-master/test/slide-state.adoc +++ /dev/null @@ -1,14 +0,0 @@ -= Title -:topic: state=title,background-color=white -:customcss: slide-state.css - -== First slide - -Content - -[{topic}] -== Topic slide - -== Second slide - -Content diff --git a/docs/asciidoctor-reveal.js-master/test/slide-state.css b/docs/asciidoctor-reveal.js-master/test/slide-state.css deleted file mode 100644 index 3513aef..0000000 --- a/docs/asciidoctor-reveal.js-master/test/slide-state.css +++ /dev/null @@ -1,6 +0,0 @@ -@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; - -section[data-state="title"] h2 { - font-family: 'Baloo Bhai', cursive; - font-size: 4em; -} diff --git a/docs/asciidoctor-reveal.js-master/test/smoke.js b/docs/asciidoctor-reveal.js-master/test/smoke.js deleted file mode 100644 index 9c37c40..0000000 --- a/docs/asciidoctor-reveal.js-master/test/smoke.js +++ /dev/null @@ -1,26 +0,0 @@ -const asciidoctor = require('@asciidoctor/core')() -const asciidoctorRevealjs = require('../dist/main.js') -//require('../dist/main.js') - -const expect = require('expect.js') - -// Register the reveal.js converter -asciidoctorRevealjs.register() - -const options = {safe: 'safe', backend: 'revealjs', standalone: true} -const content = `= Title Slide - -== Slide One - -* Foo -* Bar -* World` - -const result = asciidoctor.convert(content, options) - -expect(result).to.contain(' - -

-

-
- - - - + + + + + + + + +Creating a network from a table of cooccurring items + + + + + + +
+
+
+
+

last modified: 2021-09-22

+
+
+
+gephi logo 2010 transparent +
+
+
+

  + 

+
+
+
+
+

Upgrade: this plugin is now available as a web app!

+
+
+

I have transfered the plugin to a free web application, which makes it easier to access. +Visit the "network builder page" on Nocodefunctions.

+
+
+

You will be able to generate the file of a network (.gexf) and open it in Gephi.

+
+
+
+
+

Presentation of the plugin

+
+
+

This plugin is created by Clement Levallois.

+
+
+

It converts a spreadsheet or a csv file into a network.

+
+
+

This plugin enables you to:

+
+
+
    +
  • +

    Start from a data table in Excel or csv format

    +
  • +
  • +

    In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.)

    +
  • +
  • +

    In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc.

    +
  • +
  • +

    Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row)

    +
  • +
  • +

    Occurrences can have dates, multiple instances of an entity can be listed in a given column.

    +
  • +
+
+
+

1. The input

+
+
+excel 1 en +
+
Figure 1. An Excel file
+
+
+

  + 

+
+
+
+

2. The output

+
+
+gephi result 1 en +
+
Figure 2. Resulting network
+
+
+

  + 

+
+
+
+
+
+

Installing the plugin

+
+
+
+Choose the menu Tools then Plugins +
+
Figure 3. Choose the menu Tools then Plugins
+
+
+

  + 

+
+
+
+Click on the tab Available Plugins +
+
Figure 4. Click on the tab Available Plugins
+
+
+

  + 

+
+
+
+Install the plugin Convert Excel and Csv files and restart Gephi +
+
Figure 5. Install the plugin Convert Excel and Csv files and restart Gephi
+
+
+

  + 

+
+
+
+
+

Opening the plugin

+
+
+
+Open the plugin via the menu File   Import +
+
Figure 6. Open the plugin via the menu File - Import
+
+
+

  + 

+
+
+
+
+

Using the plugin

+
+
+

2nd panel

+
+
+Select a file +
+
Figure 7. Select a file
+
+
+

  + 

+
+
+
+excel 2 en +
+
Figure 8. A file without headers
+
+
+

  + 

+
+
+
+excel 1 en +
+
Figure 9. A file with headers
+
+
+

  + 

+
+
+

To describe the next screens of the plugin, we will take the example of the Excel file just shown, with headers.

+
+
+
+

3rd panel

+
+
+plugin panels 1 en +
+
Figure 10. Which entities should be the nodes?
+
+
+

  + 

+
+
+

What does this panel mean?

+
+
+

If you look back at the Excel file, you see that we have "Clients" and their "Purchases".

+
+
+

→ This means we can build 2 different types of networks, depending on our needs:

+
+
+
    +
  1. +

    A network showing clients and products, with relations representing purchases from a client to a product.

    +
  2. +
+
+
+
+client to product +
+
+
+

To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen.

+
+
+
    +
  1. +

    Or a network where 2 products are connected, if one client puchased them together.

    +
  2. +
+
+
+
+product to product +
+
+
+

To create this kind of networks, choose "Purchases" in the upper and lower windows of the plugin screen.

+
+
+
+

4th panel

+
+
+subfield delimiter en +
+
Figure 11. Choosing which delimiter is used
+
+
+

  + 

+
+
+

This 3rd panel asks: in our Excel file, how are different items separated in a given cell? +In our example, we have used commas: the lists of products purchased are comma-separated:

+
+
+
+commas shown in red +
+
Figure 12. commas shown in red
+
+
+

  + 

+
+
+
+

5th panel

+
+

This panel allows you to specify whether the relations are dynamic in time, or not.

+
+
+

In this case, you need an extra column (column C), where a date is shown. We don’t cover this case here.

+
+
+

(read the tutorials on dynamic networks for a starter)

+
+
+
+

6th panel

+
+
+panel 6 1 en +
+
Figure 13. Options panel
+
+
+

  + 

+
+
+
+
"Create links between Purchases agents and links between Purchase agents"
+
+
+
+

→ If you chose a Product ←→ Product kind of network in panel 3, then of course you are interested in links between products. Check the box.

+
+
+

→ But if you chose a Client ←→ Product kind of network in panel 3, what you need is less obvious.

+
+
+

Let’s take the example of client I, who purchased a table and some chairs:

+
+
+
    +
  1. +

    Checking the box will create a network where:

    +
  2. +
+
+
+
+inner links included +
+
+
+
    +
  1. +

    Not checking the box will create a network where:

    +
  2. +
+
+
+
+inner links excluded +
+
+
+
+
"Remove duplicates"
+
+
+
+

→ Check this option if your Excel or csv file has duplicate rows that you’d like to be removed

+
+
+
+
"Remove self-loops"
+
+
+
+

If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a self loop).

+
+
+

→ Check this option if you’d like self loops to be removed.

+
+
+
+

7th panel

+
+

This panel recaps all the settings. Click on finish to create the network.

+
+
+
+
+
+

The end

+
+
+

Visit the Gephi group on Facebook to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +] to get help,

+
+
+

or visit the website for more tutorials + + +

site
+    stats
+

+
+
+
+
+ + \ No newline at end of file diff --git a/docs/generated-html/creating-a-simple-dynamic-network.html b/docs/generated-html/creating-a-simple-dynamic-network.html index ba8b514..43c70c4 100644 --- a/docs/generated-html/creating-a-simple-dynamic-network.html +++ b/docs/generated-html/creating-a-simple-dynamic-network.html @@ -1,850 +1,861 @@ - - - - - - - - -Creating a simple dynamic network - - - - - - -
-
-
-
-

last modified: 2020-11-15

-
-
-
-gephi logo 2010 transparent -
-
-
-

  - 

-
-
-
-
-

1. Goals of this tutorial

-
-
-
    -
  • -

    We are going to create one very simple non dynamic network (network "A").

    -
  • -
  • -

    then we will create a modified version of it (network "B").

    -
  • -
  • -

    in both files, we need to modify a single line.

    -
  • -
  • -

    finally, we will merge networks A and B, forming a new dynamic network evolving from version A to B.

    -
  • -
-
-
- - - - - -
- - -
-

The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, skip to here.

-
-
-

We create the networks in this tutorial to provide the most simple and clear case.

-
-
-
-
-
-
-

2. Open a new project in Gephi

-
-
-
    -
  • -

    open Gephi. On the Welcome screen that appears, click on New Project

    -
  • -
-
-
-
-Open a new project -
-
Figure 1. Open a new project
-
-
-

  - 

-
-
-
-
-

3. creating network "A"

-
-
-

Our project is empty. -We can use a simple click-and-point tool to create a network:

-
-
-
-Icon for node creation -
-
Figure 2. Icon for node creation
-
-
-

  - 

-
-
-
-A few nodes have been created -
-
Figure 3. A few nodes have been created
-
-
-

  - 

-
-
-

When you have created a couple of nodes, click again on the pencil icon to stop the node creation.

-
-
-

Export the network as a file and call it "network A":

-
-
-
-Exporting the network -
-
Figure 4. Exporting the network
-
-
-

  - 

-
-
-
-Choosing the gexf file format -
-
Figure 5. Choosing the gexf file format
-
-
-

  - 

-
-
-

Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph.

-
-
-
-
-

4. Creating network "B"

-
-
-

Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!)

-
-
-
-Choosing the gexf file format -
-
Figure 6. Choosing the gexf file format
-
-
-

  - 

-
-
-

Create one edge, or a couple of edges, in this way.

-
-
-

Clicking again on the pencil stops the edge creation by mouse clicks.

-
-
-

Then export the network in the same folder where we put the previous file (File → Export → Graph File …​)

-
-
-

This time, name the file 'network B.gexf' and remember to choose the gexf file format just like we did before.

-
-
-
-
-

5. Modifying just one line in the files network A.gexf and network B.gexf

-
-
-

From your computer, open network A.gexf with a text editor (don’t use Microsoft Word!):

-
-
-

(here is how to do it on a Mac, and on Windows).

-
-
-
-The network file opened -
-
Figure 7. The network file opened
-
-
-

  - 

-
-
-

Delete and replace this line by this one:

-
-
-
-
<graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="1">
-
-
-
-

See timestamp="1" ? It means this will be the first "time slice" of your dynamic network.

-
-
-

Save the file.

-
-
-

Repeat the steps for network B.gexf:

-
-
-
    -
  • -

    open the file in a text editor,

    -
  • -
  • -

    find the line <graph defaultedgetype="directed" mode="static">

    -
  • -
  • -

    replace it by:

    -
  • -
-
-
-
-
<graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="2">
-
-
-
-

(see that we have timestamp="2" here: this is going to be the second time slice!)

-
-
-
    -
  • -

    save the file.

    -
  • -
-
-
-
-
-

6. Merging network "A" and "B" into a dynamic network

-
-
-

We will use the 2 files network A.gexf and network B.gexf that we have created.

-
-
-

First, let’s close the project we have in Gephi, without saving:

-
-
-
-Closing the current project -
-
Figure 8. Closing the current project
-
-
-

  - 

-
-
-

Then click on File → Open and navigate to the folder where network A.gexf and network B.gexf are located:

-
-
-
-Opening files -
-
Figure 9. Opening files
-
-
-

  - 

-
-
-

Here, make sure you select the 2 files at once (using the key Ctrl on pc or {commandkey} on mac).

-
-
-
-Opening 2 files at once -
-
Figure 10. Opening 2 files at once
-
-
-

  - 

-
-
-

Opening the files display a report window:

-
-
-
-Import report window -
-
Figure 11. Import report window
-
-
-

  - 

-
-
-
-
-

7. Enabling the timeline

-
-
-

You should see this button, click on it (if not: something went wrong. Retrace your steps)

-
-
-
-Enable the timeline -
-
Figure 12. Enable the timeline
-
-
-

  - 

-
-
-

Click and slide the right side border of the timeline to the left. You should see the edge disappear:

-
-
-
-Sliding the timeline -
-
Figure 13. Sliding the timeline
-
-
-

  - 

-
-
-

We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts.

-
-
-

These features will be explained in the coming tutorials on dynamic networks with Gephi.

-
-
-
-
-

8. More tutorials on dynamic networks with Gephi

-
- -
-
-
-

the end

-
-
-

Visit the Gephi group on Facebook to get help,

-
-
-

or visit the website for more tutorials - to get help,

-
-
-

or visit the website for more tutorials -o get help,

-
-
-

or visit the website for more tutorials -rials/[the website for more tutorials] - - -

site
-    stats
-

-
-
-
-
- - + + + + + + + + +Creating a simple dynamic network + + + + + + +
+
+
+
+

last modified: 2021-09-22

+
+
+
+gephi logo 2010 transparent +
+
+
+

  + 

+
+
+
+
+

1. Goals of this tutorial

+
+
+
    +
  • +

    We are going to create one very simple non dynamic network (network "A").

    +
  • +
  • +

    then we will create a modified version of it (network "B").

    +
  • +
  • +

    in both files, we need to modify a single line.

    +
  • +
  • +

    finally, we will merge networks A and B, forming a new dynamic network evolving from version A to B.

    +
  • +
+
+
+ + + + + +
+ + +
+

The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, skip to here.

+
+
+

We create the networks in this tutorial to provide the most simple and clear case.

+
+
+
+
+
+
+

2. Open a new project in Gephi

+
+
+
    +
  • +

    open Gephi. On the Welcome screen that appears, click on New Project

    +
  • +
+
+
+
+Open a new project +
+
Figure 1. Open a new project
+
+
+

  + 

+
+
+
+
+

3. creating network "A"

+
+
+

Our project is empty. +We can use a simple click-and-point tool to create a network:

+
+
+
+Icon for node creation +
+
Figure 2. Icon for node creation
+
+
+

  + 

+
+
+
+A few nodes have been created +
+
Figure 3. A few nodes have been created
+
+
+

  + 

+
+
+

When you have created a couple of nodes, click again on the pencil icon to stop the node creation.

+
+
+

Export the network as a file and call it "network A":

+
+
+
+Exporting the network +
+
Figure 4. Exporting the network
+
+
+

  + 

+
+
+
+Choosing the gexf file format +
+
Figure 5. Choosing the gexf file format
+
+
+

  + 

+
+
+

Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph.

+
+
+
+
+

4. Creating network "B"

+
+
+

Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!)

+
+
+
+Choosing the gexf file format +
+
Figure 6. Choosing the gexf file format
+
+
+

  + 

+
+
+

Create one edge, or a couple of edges, in this way.

+
+
+

Clicking again on the pencil stops the edge creation by mouse clicks.

+
+
+

Then export the network in the same folder where we put the previous file (File → Export → Graph File …​)

+
+
+

This time, name the file 'network B.gexf' and remember to choose the gexf file format just like we did before.

+
+
+
+
+

5. Modifying just one line in the files network A.gexf and network B.gexf

+
+
+

From your computer, open network A.gexf with a text editor (don’t use Microsoft Word!):

+
+
+

(here is how to do it on a Mac, and on Windows).

+
+
+
+The network file opened +
+
Figure 7. The network file opened
+
+
+

  + 

+
+
+

Delete and replace this line by this one:

+
+
+
+
<graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="1">
+
+
+
+

See timestamp="1" ? It means this will be the first "time slice" of your dynamic network.

+
+
+

Save the file.

+
+
+

Repeat the steps for network B.gexf:

+
+
+
    +
  • +

    open the file in a text editor,

    +
  • +
  • +

    find the line <graph defaultedgetype="directed" mode="static">

    +
  • +
  • +

    replace it by:

    +
  • +
+
+
+
+
<graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="2">
+
+
+
+

(see that we have timestamp="2" here: this is going to be the second time slice!)

+
+
+
    +
  • +

    save the file.

    +
  • +
+
+
+
+
+

6. Merging network "A" and "B" into a dynamic network

+
+
+

We will use the 2 files network A.gexf and network B.gexf that we have created.

+
+
+

First, let’s close the project we have in Gephi, without saving:

+
+
+
+Closing the current project +
+
Figure 8. Closing the current project
+
+
+

  + 

+
+
+

Then click on File → Open and navigate to the folder where network A.gexf and network B.gexf are located:

+
+
+
+Opening files +
+
Figure 9. Opening files
+
+
+

  + 

+
+
+

Here, make sure you select the 2 files at once (using the key Ctrl on pc or {commandkey} on mac).

+
+
+
+Opening 2 files at once +
+
Figure 10. Opening 2 files at once
+
+
+

  + 

+
+
+

Opening the files display a report window:

+
+
+
+Import report window +
+
Figure 11. Import report window
+
+
+

  + 

+
+
+
+
+

7. Enabling the timeline

+
+
+

You should see this button, click on it (if not: something went wrong. Retrace your steps)

+
+
+
+Enable the timeline +
+
Figure 12. Enable the timeline
+
+
+

  + 

+
+
+

Click and slide the right side border of the timeline to the left. You should see the edge disappear:

+
+
+
+Sliding the timeline +
+
Figure 13. Sliding the timeline
+
+
+

  + 

+
+
+

We created a dynamic network. +It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts.

+
+
+

These features will be explained in the coming tutorials on dynamic networks with Gephi.

+
+
+
+
+

8. More tutorials on dynamic networks with Gephi

+
+ +
+
+
+

the end

+
+
+

Visit the Gephi group on Facebook to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials +to get help,

+
+
+

or visit the website for more tutorials + + +

site
+    stats
+

+
+
+
+
+ + \ No newline at end of file diff --git a/docs/generated-html/en/book/.asciidoctor/diagram/client-to-product.png.cache b/docs/generated-html/en/book/.asciidoctor/diagram/client-to-product.png.cache deleted file mode 100644 index 942b67f..0000000 --- a/docs/generated-html/en/book/.asciidoctor/diagram/client-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a67c50f19fc15308972a0678868b7e33","width":321,"height":59} \ No newline at end of file diff --git a/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache b/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache deleted file mode 100644 index 1eade1c..0000000 --- a/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"9de9ec5b8a97bb23a64100d229aa1bf4","width":322,"height":131} \ No newline at end of file diff --git a/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-included.png.cache b/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-included.png.cache deleted file mode 100644 index 080267f..0000000 --- a/docs/generated-html/en/book/.asciidoctor/diagram/inner-links-included.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"6b702ce96acce793bf0a507d0d001797","width":560,"height":99} \ No newline at end of file diff --git a/docs/generated-html/en/book/.asciidoctor/diagram/product-to-product.png.cache b/docs/generated-html/en/book/.asciidoctor/diagram/product-to-product.png.cache deleted file mode 100644 index d5e5962..0000000 --- a/docs/generated-html/en/book/.asciidoctor/diagram/product-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a4eca6ee549cfb02fcdbcff45afa396c","width":453,"height":59} \ No newline at end of file diff --git a/docs/generated-html/en/book/book-gephi-tutorials-en.pdf b/docs/generated-html/en/book/book-gephi-tutorials-en.pdf deleted file mode 100644 index d448468..0000000 Binary files a/docs/generated-html/en/book/book-gephi-tutorials-en.pdf and /dev/null differ diff --git a/docs/generated-html/en/book/custom.xls b/docs/generated-html/en/book/custom.xls deleted file mode 100644 index f94a106..0000000 --- a/docs/generated-html/en/book/custom.xls +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - appendix toc,title - article/appendix nop - article toc,title - book toc,title - chapter toc,title - part toc,title - preface toc,title - qandadiv toc - qandaset toc - reference toc,title - sect1 toc - sect2 toc - sect3 toc - sect4 toc - sect5 toc - section toc - set toc,title - - - - - -6.3in -... - - - - -0 -0 -0 -0 - - - -1 -0 - - - - -0 -1.0 - - - -1.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -auto - - - - - - - - - - - - - - - -auto - - - - -auto - - - - - - - - - - - - - - - -auto - - - - -auto - - - - - - - - - - - -% - -scale-to-fit -scale-down-to-fit - - - - -auto - - - - - - - - - - - -% - -scale-to-fit -scale-down-to-fit - - - - - - - - - - - - - - - - - - - - -before -center -after -auto - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache b/docs/generated-html/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache deleted file mode 100644 index 942b67f..0000000 --- a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a67c50f19fc15308972a0678868b7e33","width":321,"height":59} \ No newline at end of file diff --git a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache b/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache deleted file mode 100644 index 1eade1c..0000000 --- a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"9de9ec5b8a97bb23a64100d229aa1bf4","width":322,"height":131} \ No newline at end of file diff --git a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache b/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache deleted file mode 100644 index 080267f..0000000 --- a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"6b702ce96acce793bf0a507d0d001797","width":560,"height":99} \ No newline at end of file diff --git a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache b/docs/generated-html/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache deleted file mode 100644 index d5e5962..0000000 --- a/docs/generated-html/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a4eca6ee549cfb02fcdbcff45afa396c","width":453,"height":59} \ No newline at end of file diff --git a/docs/generated-html/en/book/en/book/book-gephi-tutorials-en.pdf b/docs/generated-html/en/book/en/book/book-gephi-tutorials-en.pdf deleted file mode 100644 index a5295a1..0000000 Binary files a/docs/generated-html/en/book/en/book/book-gephi-tutorials-en.pdf and /dev/null differ diff --git a/docs/generated-html/en/book/en/book/toc.txt b/docs/generated-html/en/book/en/book/toc.txt deleted file mode 100644 index 5963b02..0000000 --- a/docs/generated-html/en/book/en/book/toc.txt +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\how should Gephi be pronounced.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\what-is-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\history-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\simple-project-from-a-to-z-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\using-filters-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\importing-csv-data-in-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\working-with-text-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\cooccurrences-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\k-partite-bi-partite-graph-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\semantic-web-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\similarity-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\twitter-streaming-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\developers\working-from-the-source-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\converting-a-network-with-dates-into-dynamic.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\creating-a-simple-dynamic-network.adoc diff --git a/docs/generated-html/en/book/images/3-groups-of-icons.png b/docs/generated-html/en/book/images/3-groups-of-icons.png deleted file mode 100644 index 50293b3..0000000 Binary files a/docs/generated-html/en/book/images/3-groups-of-icons.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/A-few-nodes-have-been-created.png b/docs/generated-html/en/book/images/A-few-nodes-have-been-created.png deleted file mode 100644 index c82b501..0000000 Binary files a/docs/generated-html/en/book/images/A-few-nodes-have-been-created.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Adding-a-column-for-Names.png b/docs/generated-html/en/book/images/Adding-a-column-for-Names.png deleted file mode 100644 index e35c399..0000000 Binary files a/docs/generated-html/en/book/images/Adding-a-column-for-Names.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png b/docs/generated-html/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png deleted file mode 100644 index 48c52f6..0000000 Binary files a/docs/generated-html/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Adjusting-edge-thickness.png b/docs/generated-html/en/book/images/Adjusting-edge-thickness.png deleted file mode 100644 index 94b40bb..0000000 Binary files a/docs/generated-html/en/book/images/Adjusting-edge-thickness.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Adjusting-label-size.png b/docs/generated-html/en/book/images/Adjusting-label-size.png deleted file mode 100644 index 327b291..0000000 Binary files a/docs/generated-html/en/book/images/Adjusting-label-size.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/An-Excel-file-with-weights.png b/docs/generated-html/en/book/images/An-Excel-file-with-weights.png deleted file mode 100644 index cd166b0..0000000 Binary files a/docs/generated-html/en/book/images/An-Excel-file-with-weights.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/An-Excel-file.png b/docs/generated-html/en/book/images/An-Excel-file.png deleted file mode 100644 index f13c380..0000000 Binary files a/docs/generated-html/en/book/images/An-Excel-file.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Appearance-and-layout-panels-in-Gephi.png b/docs/generated-html/en/book/images/Appearance-and-layout-panels-in-Gephi.png deleted file mode 100644 index 61f689d..0000000 Binary files a/docs/generated-html/en/book/images/Appearance-and-layout-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Appearand-and-layout-panels-in-Gephi.png b/docs/generated-html/en/book/images/Appearand-and-layout-panels-in-Gephi.png deleted file mode 100644 index 07be9d7..0000000 Binary files a/docs/generated-html/en/book/images/Appearand-and-layout-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Choose-a-username.png b/docs/generated-html/en/book/images/Choose-a-username.png deleted file mode 100644 index 124c44d..0000000 Binary files a/docs/generated-html/en/book/images/Choose-a-username.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Choose-the-menu-Tools-then-Plugins.png b/docs/generated-html/en/book/images/Choose-the-menu-Tools-then-Plugins.png deleted file mode 100644 index 6c39d7a..0000000 Binary files a/docs/generated-html/en/book/images/Choose-the-menu-Tools-then-Plugins.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Choosing-the-gexf-file-format.png b/docs/generated-html/en/book/images/Choosing-the-gexf-file-format.png deleted file mode 100644 index 2fb60db..0000000 Binary files a/docs/generated-html/en/book/images/Choosing-the-gexf-file-format.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Click-on-Create-my-access-token.png b/docs/generated-html/en/book/images/Click-on-Create-my-access-token.png deleted file mode 100644 index 778a4eb..0000000 Binary files a/docs/generated-html/en/book/images/Click-on-Create-my-access-token.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Click-on-Keys-and-Access-Tokens.png b/docs/generated-html/en/book/images/Click-on-Keys-and-Access-Tokens.png deleted file mode 100644 index caa9615..0000000 Binary files a/docs/generated-html/en/book/images/Click-on-Keys-and-Access-Tokens.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Click-on-the-tab-Available-Plugins.png b/docs/generated-html/en/book/images/Click-on-the-tab-Available-Plugins.png deleted file mode 100644 index 4f94d49..0000000 Binary files a/docs/generated-html/en/book/images/Click-on-the-tab-Available-Plugins.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Cloning-the-gephi-source.png b/docs/generated-html/en/book/images/Cloning-the-gephi-source.png deleted file mode 100644 index 3b038cc..0000000 Binary files a/docs/generated-html/en/book/images/Cloning-the-gephi-source.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Closing-the-current-project.png b/docs/generated-html/en/book/images/Closing-the-current-project.png deleted file mode 100644 index b97cab4..0000000 Binary files a/docs/generated-html/en/book/images/Closing-the-current-project.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Coloring-nodes-according-to-their-gender.png b/docs/generated-html/en/book/images/Coloring-nodes-according-to-their-gender.png deleted file mode 100644 index 537e4ac..0000000 Binary files a/docs/generated-html/en/book/images/Coloring-nodes-according-to-their-gender.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Computing-betweenness-centrality.png b/docs/generated-html/en/book/images/Computing-betweenness-centrality.png deleted file mode 100644 index f52ad07..0000000 Binary files a/docs/generated-html/en/book/images/Computing-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Confirmation-of-the-sign-up.png b/docs/generated-html/en/book/images/Confirmation-of-the-sign-up.png deleted file mode 100644 index 649a0b0..0000000 Binary files a/docs/generated-html/en/book/images/Confirmation-of-the-sign-up.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Copy-paste-these-codes-into-Gephi.png b/docs/generated-html/en/book/images/Copy-paste-these-codes-into-Gephi.png deleted file mode 100644 index 3b490f7..0000000 Binary files a/docs/generated-html/en/book/images/Copy-paste-these-codes-into-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Copying-to-this-new-column.png b/docs/generated-html/en/book/images/Copying-to-this-new-column.png deleted file mode 100644 index f442713..0000000 Binary files a/docs/generated-html/en/book/images/Copying-to-this-new-column.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Create-a-new-app.png b/docs/generated-html/en/book/images/Create-a-new-app.png deleted file mode 100644 index 6d77c3d..0000000 Binary files a/docs/generated-html/en/book/images/Create-a-new-app.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Creating-a-Twitter-account.png b/docs/generated-html/en/book/images/Creating-a-Twitter-account.png deleted file mode 100644 index 1294906..0000000 Binary files a/docs/generated-html/en/book/images/Creating-a-Twitter-account.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png b/docs/generated-html/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png deleted file mode 100644 index c13c4a2..0000000 Binary files a/docs/generated-html/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Display-the-plugin-in-Gephi.png b/docs/generated-html/en/book/images/Display-the-plugin-in-Gephi.png deleted file mode 100644 index 3237725..0000000 Binary files a/docs/generated-html/en/book/images/Display-the-plugin-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Edges-attributes..png b/docs/generated-html/en/book/images/Edges-attributes..png deleted file mode 100644 index 2f00136..0000000 Binary files a/docs/generated-html/en/book/images/Edges-attributes..png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Enable-the-timeline.png b/docs/generated-html/en/book/images/Enable-the-timeline.png deleted file mode 100644 index 5495445..0000000 Binary files a/docs/generated-html/en/book/images/Enable-the-timeline.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Enter-the-verification-code-you-received-by-sms.png b/docs/generated-html/en/book/images/Enter-the-verification-code-you-received-by-sms.png deleted file mode 100644 index e9fb8f9..0000000 Binary files a/docs/generated-html/en/book/images/Enter-the-verification-code-you-received-by-sms.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Export-button.png b/docs/generated-html/en/book/images/Export-button.png deleted file mode 100644 index 0aa8d95..0000000 Binary files a/docs/generated-html/en/book/images/Export-button.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Exporting-the-network.png b/docs/generated-html/en/book/images/Exporting-the-network.png deleted file mode 100644 index 14d6933..0000000 Binary files a/docs/generated-html/en/book/images/Exporting-the-network.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Fill-in-the-fields.png b/docs/generated-html/en/book/images/Fill-in-the-fields.png deleted file mode 100644 index 63390d6..0000000 Binary files a/docs/generated-html/en/book/images/Fill-in-the-fields.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Filter-on-edge-weight.png b/docs/generated-html/en/book/images/Filter-on-edge-weight.png deleted file mode 100644 index 89e4744..0000000 Binary files a/docs/generated-html/en/book/images/Filter-on-edge-weight.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Filter-on-the-Gender-attribute.png b/docs/generated-html/en/book/images/Filter-on-the-Gender-attribute.png deleted file mode 100644 index 558ec89..0000000 Binary files a/docs/generated-html/en/book/images/Filter-on-the-Gender-attribute.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Filters-and-statistics-panels-in-Gephi.png b/docs/generated-html/en/book/images/Filters-and-statistics-panels-in-Gephi.png deleted file mode 100644 index 606ab8a..0000000 Binary files a/docs/generated-html/en/book/images/Filters-and-statistics-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png b/docs/generated-html/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png deleted file mode 100644 index f33baac..0000000 Binary files a/docs/generated-html/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Gephi--cumulative-downloads.png b/docs/generated-html/en/book/images/Gephi--cumulative-downloads.png deleted file mode 100644 index b8d30ee..0000000 Binary files a/docs/generated-html/en/book/images/Gephi--cumulative-downloads.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Icon-for-node-creation.png b/docs/generated-html/en/book/images/Icon-for-node-creation.png deleted file mode 100644 index 4d6bc62..0000000 Binary files a/docs/generated-html/en/book/images/Icon-for-node-creation.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Import-report-window.png b/docs/generated-html/en/book/images/Import-report-window.png deleted file mode 100644 index 20678fe..0000000 Binary files a/docs/generated-html/en/book/images/Import-report-window.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Importing-a-list-of-edges-with-attributes.png b/docs/generated-html/en/book/images/Importing-a-list-of-edges-with-attributes.png deleted file mode 100644 index 970f961..0000000 Binary files a/docs/generated-html/en/book/images/Importing-a-list-of-edges-with-attributes.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Importing-a-list-of-nodes-with-attributes.png b/docs/generated-html/en/book/images/Importing-a-list-of-nodes-with-attributes.png deleted file mode 100644 index 6c22c23..0000000 Binary files a/docs/generated-html/en/book/images/Importing-a-list-of-nodes-with-attributes.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Importing-nodes-with-labels-and-their-relations.png b/docs/generated-html/en/book/images/Importing-nodes-with-labels-and-their-relations.png deleted file mode 100644 index 505e6ef..0000000 Binary files a/docs/generated-html/en/book/images/Importing-nodes-with-labels-and-their-relations.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Install-the-plugin-and-restart-Gephi.png b/docs/generated-html/en/book/images/Install-the-plugin-and-restart-Gephi.png deleted file mode 100644 index dc47375..0000000 Binary files a/docs/generated-html/en/book/images/Install-the-plugin-and-restart-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Install-the-plugin-then-restart-Gephi.png b/docs/generated-html/en/book/images/Install-the-plugin-then-restart-Gephi.png deleted file mode 100644 index 509510c..0000000 Binary files a/docs/generated-html/en/book/images/Install-the-plugin-then-restart-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Launching-Gephi.png b/docs/generated-html/en/book/images/Launching-Gephi.png deleted file mode 100644 index a5f139f..0000000 Binary files a/docs/generated-html/en/book/images/Launching-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Making-the-Filter-panel-visible..png b/docs/generated-html/en/book/images/Making-the-Filter-panel-visible..png deleted file mode 100644 index 534b178..0000000 Binary files a/docs/generated-html/en/book/images/Making-the-Filter-panel-visible..png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Merge-columns.png b/docs/generated-html/en/book/images/Merge-columns.png deleted file mode 100644 index 1c35253..0000000 Binary files a/docs/generated-html/en/book/images/Merge-columns.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/New-filter-available.png b/docs/generated-html/en/book/images/New-filter-available.png deleted file mode 100644 index f8ce6dc..0000000 Binary files a/docs/generated-html/en/book/images/New-filter-available.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Nodes-attributes..png b/docs/generated-html/en/book/images/Nodes-attributes..png deleted file mode 100644 index 80536b4..0000000 Binary files a/docs/generated-html/en/book/images/Nodes-attributes..png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Open-a-new-project-in-Gephi.png b/docs/generated-html/en/book/images/Open-a-new-project-in-Gephi.png deleted file mode 100644 index 9484b05..0000000 Binary files a/docs/generated-html/en/book/images/Open-a-new-project-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Open-a-new-project.png b/docs/generated-html/en/book/images/Open-a-new-project.png deleted file mode 100644 index dcfbb02..0000000 Binary files a/docs/generated-html/en/book/images/Open-a-new-project.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Open-the-configuration-panel-for-screenshots.png b/docs/generated-html/en/book/images/Open-the-configuration-panel-for-screenshots.png deleted file mode 100644 index c31f701..0000000 Binary files a/docs/generated-html/en/book/images/Open-the-configuration-panel-for-screenshots.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Open-the-plugin-via-the-menu-File---Import.png b/docs/generated-html/en/book/images/Open-the-plugin-via-the-menu-File---Import.png deleted file mode 100644 index 3da116e..0000000 Binary files a/docs/generated-html/en/book/images/Open-the-plugin-via-the-menu-File---Import.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Opening-2-files-at-once.png b/docs/generated-html/en/book/images/Opening-2-files-at-once.png deleted file mode 100644 index 3dffa60..0000000 Binary files a/docs/generated-html/en/book/images/Opening-2-files-at-once.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Opening-files.png b/docs/generated-html/en/book/images/Opening-files.png deleted file mode 100644 index 6c0e845..0000000 Binary files a/docs/generated-html/en/book/images/Opening-files.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png b/docs/generated-html/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png deleted file mode 100644 index bb7030a..0000000 Binary files a/docs/generated-html/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Ranking-node-sizes-by-centrality.png b/docs/generated-html/en/book/images/Ranking-node-sizes-by-centrality.png deleted file mode 100644 index 8fae248..0000000 Binary files a/docs/generated-html/en/book/images/Ranking-node-sizes-by-centrality.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Report-after-the-computation-of-betweenness-centrality.png b/docs/generated-html/en/book/images/Report-after-the-computation-of-betweenness-centrality.png deleted file mode 100644 index 646c52d..0000000 Binary files a/docs/generated-html/en/book/images/Report-after-the-computation-of-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Resizing-labels-to-reflect-their-node's-size.png b/docs/generated-html/en/book/images/Resizing-labels-to-reflect-their-node's-size.png deleted file mode 100644 index 1c97bba..0000000 Binary files a/docs/generated-html/en/book/images/Resizing-labels-to-reflect-their-node's-size.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Result-of-preview.png b/docs/generated-html/en/book/images/Result-of-preview.png deleted file mode 100644 index b711446..0000000 Binary files a/docs/generated-html/en/book/images/Result-of-preview.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Result.png b/docs/generated-html/en/book/images/Result.png deleted file mode 100644 index cbac425..0000000 Binary files a/docs/generated-html/en/book/images/Result.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png b/docs/generated-html/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png deleted file mode 100644 index 8dab3ec..0000000 Binary files a/docs/generated-html/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Second-screen.png b/docs/generated-html/en/book/images/Second-screen.png deleted file mode 100644 index 3070c25..0000000 Binary files a/docs/generated-html/en/book/images/Second-screen.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Select-a-file.png b/docs/generated-html/en/book/images/Select-a-file.png deleted file mode 100644 index 3cd2657..0000000 Binary files a/docs/generated-html/en/book/images/Select-a-file.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png b/docs/generated-html/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png deleted file mode 100644 index f316836..0000000 Binary files a/docs/generated-html/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Selection-of-the-network-logic.png b/docs/generated-html/en/book/images/Selection-of-the-network-logic.png deleted file mode 100644 index fc6a1f8..0000000 Binary files a/docs/generated-html/en/book/images/Selection-of-the-network-logic.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Set-up-the-parameters---1.png b/docs/generated-html/en/book/images/Set-up-the-parameters---1.png deleted file mode 100644 index c443ada..0000000 Binary files a/docs/generated-html/en/book/images/Set-up-the-parameters---1.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Sliding-the-timeline.png b/docs/generated-html/en/book/images/Sliding-the-timeline.png deleted file mode 100644 index 9dcad6b..0000000 Binary files a/docs/generated-html/en/book/images/Sliding-the-timeline.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Switching-the-view-to-the-data-laboratory.png b/docs/generated-html/en/book/images/Switching-the-view-to-the-data-laboratory.png deleted file mode 100644 index c5c84f8..0000000 Binary files a/docs/generated-html/en/book/images/Switching-the-view-to-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Switching-to-the-data-laboratory-view.png b/docs/generated-html/en/book/images/Switching-to-the-data-laboratory-view.png deleted file mode 100644 index c5c84f8..0000000 Binary files a/docs/generated-html/en/book/images/Switching-to-the-data-laboratory-view.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Switching-to-the-data-laboratory.png b/docs/generated-html/en/book/images/Switching-to-the-data-laboratory.png deleted file mode 100644 index 2f95aa4..0000000 Binary files a/docs/generated-html/en/book/images/Switching-to-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Switching-to-the-preview-panel.png b/docs/generated-html/en/book/images/Switching-to-the-preview-panel.png deleted file mode 100644 index 4c4a2c2..0000000 Binary files a/docs/generated-html/en/book/images/Switching-to-the-preview-panel.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/The-attributes-of-the-edges.png b/docs/generated-html/en/book/images/The-attributes-of-the-edges.png deleted file mode 100644 index 08983e0..0000000 Binary files a/docs/generated-html/en/book/images/The-attributes-of-the-edges.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/The-attributes-of-the-nodes.png b/docs/generated-html/en/book/images/The-attributes-of-the-nodes.png deleted file mode 100644 index 928a804..0000000 Binary files a/docs/generated-html/en/book/images/The-attributes-of-the-nodes.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/The-network-file-opened.png b/docs/generated-html/en/book/images/The-network-file-opened.png deleted file mode 100644 index 5675494..0000000 Binary files a/docs/generated-html/en/book/images/The-network-file-opened.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Updating-the-parameters.png b/docs/generated-html/en/book/images/Updating-the-parameters.png deleted file mode 100644 index cd38129..0000000 Binary files a/docs/generated-html/en/book/images/Updating-the-parameters.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png b/docs/generated-html/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png deleted file mode 100644 index 3c9f6b5..0000000 Binary files a/docs/generated-html/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png b/docs/generated-html/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png deleted file mode 100644 index 1f8106d..0000000 Binary files a/docs/generated-html/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Where-to-find-the-filter-on-edge-weight.png b/docs/generated-html/en/book/images/Where-to-find-the-filter-on-edge-weight.png deleted file mode 100644 index 89e4744..0000000 Binary files a/docs/generated-html/en/book/images/Where-to-find-the-filter-on-edge-weight.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png b/docs/generated-html/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png deleted file mode 100644 index 558ec89..0000000 Binary files a/docs/generated-html/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Workflow-of-filters--size=stretch.png b/docs/generated-html/en/book/images/Workflow-of-filters--size=stretch.png deleted file mode 100644 index 8f3d8e5..0000000 Binary files a/docs/generated-html/en/book/images/Workflow-of-filters--size=stretch.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Workflow-of-filters..png b/docs/generated-html/en/book/images/Workflow-of-filters..png deleted file mode 100644 index 02ff360..0000000 Binary files a/docs/generated-html/en/book/images/Workflow-of-filters..png and /dev/null differ diff --git a/docs/generated-html/en/book/images/Zoom-on-three-attributes-representing-time.png b/docs/generated-html/en/book/images/Zoom-on-three-attributes-representing-time.png deleted file mode 100644 index 802cd26..0000000 Binary files a/docs/generated-html/en/book/images/Zoom-on-three-attributes-representing-time.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/appearance-miserables-result.png b/docs/generated-html/en/book/images/appearance-miserables-result.png deleted file mode 100644 index 32d12c6..0000000 Binary files a/docs/generated-html/en/book/images/appearance-miserables-result.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/applying-the-Force-Atlas-2-layout b/docs/generated-html/en/book/images/applying-the-Force-Atlas-2-layout deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/images/changing-a-few-parameters-and-launching-the-layout.png b/docs/generated-html/en/book/images/changing-a-few-parameters-and-launching-the-layout.png deleted file mode 100644 index d04c51a..0000000 Binary files a/docs/generated-html/en/book/images/changing-a-few-parameters-and-launching-the-layout.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/changing-edge-thickness.gdraw b/docs/generated-html/en/book/images/changing-edge-thickness.gdraw deleted file mode 100644 index eefc6db..0000000 --- a/docs/generated-html/en/book/images/changing-edge-thickness.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1T6K0D48RMiqq9VLWQ6ceJemmdFPuN814e4Dvwzuq9dY", "doc_id": "1T6K0D48RMiqq9VLWQ6ceJemmdFPuN814e4Dvwzuq9dY", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/client-to-product.png b/docs/generated-html/en/book/images/client-to-product.png deleted file mode 100644 index e8ffb50..0000000 Binary files a/docs/generated-html/en/book/images/client-to-product.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/commas-shown-in-red.png b/docs/generated-html/en/book/images/commas-shown-in-red.png deleted file mode 100644 index 64b5d8b..0000000 Binary files a/docs/generated-html/en/book/images/commas-shown-in-red.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/downloads.png b/docs/generated-html/en/book/images/downloads.png deleted file mode 100644 index 945a9cf..0000000 Binary files a/docs/generated-html/en/book/images/downloads.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/add-column-to-nodes-1-en.png b/docs/generated-html/en/book/images/en/add-column-to-nodes-1-en.png deleted file mode 100644 index bcd836d..0000000 Binary files a/docs/generated-html/en/book/images/en/add-column-to-nodes-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/appearance-miserables-detail-2-en.png b/docs/generated-html/en/book/images/en/appearance-miserables-detail-2-en.png deleted file mode 100644 index 552b7c5..0000000 Binary files a/docs/generated-html/en/book/images/en/appearance-miserables-detail-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/appearance-miserables-detail-en.png b/docs/generated-html/en/book/images/en/appearance-miserables-detail-en.png deleted file mode 100644 index 3e1c7d6..0000000 Binary files a/docs/generated-html/en/book/images/en/appearance-miserables-detail-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/appearance-miserables-en.gdraw b/docs/generated-html/en/book/images/en/appearance-miserables-en.gdraw deleted file mode 100644 index 93af3cc..0000000 --- a/docs/generated-html/en/book/images/en/appearance-miserables-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1jjNNZDTl-lPMiAuUDnXruCqBOqR-G3S-R3t-aG1i5oU", "doc_id": "1jjNNZDTl-lPMiAuUDnXruCqBOqR-G3S-R3t-aG1i5oU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/appearance-miserables-en.png b/docs/generated-html/en/book/images/en/appearance-miserables-en.png deleted file mode 100644 index ea994a8..0000000 Binary files a/docs/generated-html/en/book/images/en/appearance-miserables-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/changing-size-labels-en.gdraw b/docs/generated-html/en/book/images/en/changing-size-labels-en.gdraw deleted file mode 100644 index 0c08b8d..0000000 --- a/docs/generated-html/en/book/images/en/changing-size-labels-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1VDye0dWF2QzOYAjOtZ_b_CHxIZ8ifdLfyRO_RE82SM0", "doc_id": "1VDye0dWF2QzOYAjOtZ_b_CHxIZ8ifdLfyRO_RE82SM0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/changing-the-size-of-labels-en.png b/docs/generated-html/en/book/images/en/changing-the-size-of-labels-en.png deleted file mode 100644 index 21d5ad2..0000000 Binary files a/docs/generated-html/en/book/images/en/changing-the-size-of-labels-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/choosing-a-label-adjust-algo-en.png b/docs/generated-html/en/book/images/en/choosing-a-label-adjust-algo-en.png deleted file mode 100644 index 2586b73..0000000 Binary files a/docs/generated-html/en/book/images/en/choosing-a-label-adjust-algo-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/closing-project-1-en.gdraw b/docs/generated-html/en/book/images/en/closing-project-1-en.gdraw deleted file mode 100644 index a46c7b8..0000000 --- a/docs/generated-html/en/book/images/en/closing-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=16_2Pqdof6utX4IRSFGvOXEGPZeTRRnRAJu89q53zceg", "doc_id": "16_2Pqdof6utX4IRSFGvOXEGPZeTRRnRAJu89q53zceg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/closing-project-1-en.png b/docs/generated-html/en/book/images/en/closing-project-1-en.png deleted file mode 100644 index a8112fa..0000000 Binary files a/docs/generated-html/en/book/images/en/closing-project-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-1-en.png b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-1-en.png deleted file mode 100644 index 34999e5..0000000 Binary files a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-2-en.png b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-2-en.png deleted file mode 100644 index c20b557..0000000 Binary files a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-3-en.png b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-3-en.png deleted file mode 100644 index 326f368..0000000 Binary files a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-detail-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.gdraw b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.gdraw deleted file mode 100644 index 54314d9..0000000 --- a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1jGYkRjBG5qA_RQZMqal_EpcdaFovjtst1FxJwefyFyk", "doc_id": "1jGYkRjBG5qA_RQZMqal_EpcdaFovjtst1FxJwefyFyk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.png b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.png deleted file mode 100644 index 1bbd2ae..0000000 Binary files a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw deleted file mode 100644 index 8879d43..0000000 --- a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1AzyWufixDA2iHOTsSHXDRPIvMsPXRRCT81I0EeRAaqs", "doc_id": "1AzyWufixDA2iHOTsSHXDRPIvMsPXRRCT81I0EeRAaqs", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-report-en.gdraw b/docs/generated-html/en/book/images/en/computing-betweenness-centrality-report-en.gdraw deleted file mode 100644 index 58393f2..0000000 --- a/docs/generated-html/en/book/images/en/computing-betweenness-centrality-report-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1t_EJeXCPjlQKy5UZAW4CQ6iKDstCt4XMDrKtTGHCRDE", "doc_id": "1t_EJeXCPjlQKy5UZAW4CQ6iKDstCt4XMDrKtTGHCRDE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/configuration-screenshot-en.png b/docs/generated-html/en/book/images/en/configuration-screenshot-en.png deleted file mode 100644 index 04ff344..0000000 Binary files a/docs/generated-html/en/book/images/en/configuration-screenshot-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-1-en.png deleted file mode 100644 index c248992..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-2-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-2-en.png deleted file mode 100644 index 9a6a88a..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/excel-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw b/docs/generated-html/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw deleted file mode 100644 index 0d7b856..0000000 --- a/docs/generated-html/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wdSpmIFeI6NCvR8EafB4wlXiflwr4S7WLTH4xeigC4Q", "doc_id": "1wdSpmIFeI6NCvR8EafB4wlXiflwr4S7WLTH4xeigC4Q", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png deleted file mode 100644 index bd999cf..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png deleted file mode 100644 index 2326567..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/panel-6-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/panel-6-1-en.png deleted file mode 100644 index 1741e91..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/panel-6-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw b/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw deleted file mode 100644 index 28c207d..0000000 --- a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1xnj226ws51xPEaKv_Vy6tGJdS8OrR12vt4xl8NXC8rk", "doc_id": "1xnj226ws51xPEaKv_Vy6tGJdS8OrR12vt4xl8NXC8rk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.png deleted file mode 100644 index ce8a458..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw b/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw deleted file mode 100644 index d29e6ec..0000000 --- a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1JNltefv-wnyEUVwo8IjOyaiLBbxZPrB_YT56e2vfUw8", "doc_id": "1JNltefv-wnyEUVwo8IjOyaiLBbxZPrB_YT56e2vfUw8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png deleted file mode 100644 index 694f4f8..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png deleted file mode 100644 index b1b3a3e..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw b/docs/generated-html/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index d82d127..0000000 --- a/docs/generated-html/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1pAajy4TTKLW6jOPqbJQek_1PfNLjQXCU2oZGdUsVbG0", "doc_id": "1pAajy4TTKLW6jOPqbJQek_1PfNLjQXCU2oZGdUsVbG0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png b/docs/generated-html/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png deleted file mode 100644 index 49cbeaf..0000000 Binary files a/docs/generated-html/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/copying-a-column-1-en.gdraw b/docs/generated-html/en/book/images/en/copying-a-column-1-en.gdraw deleted file mode 100644 index 8b6a60a..0000000 --- a/docs/generated-html/en/book/images/en/copying-a-column-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=19WLCx35-m8_A7GTA6A5kxpRQWo9xllK04CzVEdyZa5g", "doc_id": "19WLCx35-m8_A7GTA6A5kxpRQWo9xllK04CzVEdyZa5g", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/copying-a-column-2-en.png b/docs/generated-html/en/book/images/en/copying-a-column-2-en.png deleted file mode 100644 index abdc751..0000000 Binary files a/docs/generated-html/en/book/images/en/copying-a-column-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/copying-a-column-3-en.png b/docs/generated-html/en/book/images/en/copying-a-column-3-en.png deleted file mode 100644 index c1475af..0000000 Binary files a/docs/generated-html/en/book/images/en/copying-a-column-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/create-network-icon-1-en.gdraw b/docs/generated-html/en/book/images/en/create-network-icon-1-en.gdraw deleted file mode 100644 index 0a67e4e..0000000 --- a/docs/generated-html/en/book/images/en/create-network-icon-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1zq7_kY7hVGNsyT2Q7RVhUnIHpCYYpt9O8uL-QL_lCq0", "doc_id": "1zq7_kY7hVGNsyT2Q7RVhUnIHpCYYpt9O8uL-QL_lCq0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/create-network-icon-2-en.gdraw b/docs/generated-html/en/book/images/en/create-network-icon-2-en.gdraw deleted file mode 100644 index d1dce41..0000000 --- a/docs/generated-html/en/book/images/en/create-network-icon-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1sBKujZgxueUACQ4JwP8_KvcTZUdLe5pDlZTEA5AAPY8", "doc_id": "1sBKujZgxueUACQ4JwP8_KvcTZUdLe5pDlZTEA5AAPY8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/create-network-icon-2-en.png b/docs/generated-html/en/book/images/en/create-network-icon-2-en.png deleted file mode 100644 index 34f6bb7..0000000 Binary files a/docs/generated-html/en/book/images/en/create-network-icon-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/create-network-icon-3-en.gdraw b/docs/generated-html/en/book/images/en/create-network-icon-3-en.gdraw deleted file mode 100644 index 3816ff2..0000000 --- a/docs/generated-html/en/book/images/en/create-network-icon-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YKheDVU1BiAeQTwXLq9OHky2i2TtO4MyFmWDTJHwMdw", "doc_id": "1YKheDVU1BiAeQTwXLq9OHky2i2TtO4MyFmWDTJHwMdw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.gdraw b/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.gdraw deleted file mode 100644 index 9906c13..0000000 --- a/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1_OpEYfw9vg4bEV69UK5x9Xjk1jf3JdKz-dGpGf2u0L4", "doc_id": "1_OpEYfw9vg4bEV69UK5x9Xjk1jf3JdKz-dGpGf2u0L4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.png deleted file mode 100644 index c44ac81..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-1-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-1-en.png deleted file mode 100644 index df49dce..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw b/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw deleted file mode 100644 index b3c98ac..0000000 --- a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RvDb4ZL23Ny06-Ks3OkAZKxgPYdPWpkuiFApd99we8k", "doc_id": "1RvDb4ZL23Ny06-Ks3OkAZKxgPYdPWpkuiFApd99we8k", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.png deleted file mode 100644 index a2cf49b..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw b/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw deleted file mode 100644 index 68eaa49..0000000 --- a/docs/generated-html/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=12QdHNXNGTP3it96ATY0IEwLfY7aA24yfDC7_t55kHso", "doc_id": "12QdHNXNGTP3it96ATY0IEwLfY7aA24yfDC7_t55kHso", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-1-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-1-en.png deleted file mode 100644 index 3682ac8..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-2-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-2-en.png deleted file mode 100644 index 50d40ea..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-detail-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.gdraw b/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.gdraw deleted file mode 100644 index f929f57..0000000 --- a/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=16GXLSifEdkn9UVOIXfKa62gHxctwhNPzMQ8JBVCAsMo", "doc_id": "16GXLSifEdkn9UVOIXfKa62gHxctwhNPzMQ8JBVCAsMo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.png b/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.png deleted file mode 100644 index 73dc769..0000000 Binary files a/docs/generated-html/en/book/images/en/data-laboratory-miserables-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/enclosing-circles-1-en.png b/docs/generated-html/en/book/images/en/developers/enclosing-circles-1-en.png deleted file mode 100644 index d804abb..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/enclosing-circles-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/enclosing-circles-2-en.png b/docs/generated-html/en/book/images/en/developers/enclosing-circles-2-en.png deleted file mode 100644 index edaf7bf..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/enclosing-circles-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/enclosing-circles-3-en.png b/docs/generated-html/en/book/images/en/developers/enclosing-circles-3-en.png deleted file mode 100644 index da7bec6..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/enclosing-circles-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/enclosing-circles-4-en.gdraw b/docs/generated-html/en/book/images/en/developers/enclosing-circles-4-en.gdraw deleted file mode 100644 index 9a4caa9..0000000 --- a/docs/generated-html/en/book/images/en/developers/enclosing-circles-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1b-NcKKYiD-lxUffw9OaEEGlKFDGZ3yjmKDlaeRL5bsc", "doc_id": "1b-NcKKYiD-lxUffw9OaEEGlKFDGZ3yjmKDlaeRL5bsc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-0-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-0-en.png deleted file mode 100644 index ac36d69..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-0-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.gdraw b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.gdraw deleted file mode 100644 index ca2d1b1..0000000 --- a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=160iBmNFyDrhUJK1Dj5HmthY3JkcPpHX74RMCzdzLRns", "doc_id": "160iBmNFyDrhUJK1Dj5HmthY3JkcPpHX74RMCzdzLRns", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.png deleted file mode 100644 index 3c728cf..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-2-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-2-en.png deleted file mode 100644 index 98d3c3a..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-3-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-3-en.png deleted file mode 100644 index dc0086b..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-4-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-4-en.png deleted file mode 100644 index 6b3a041..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-5-en.png b/docs/generated-html/en/book/images/en/developers/git-clone-gephi-5-en.png deleted file mode 100644 index a07f21f..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/git-clone-gephi-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw b/docs/generated-html/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw deleted file mode 100644 index 441f5ed..0000000 --- a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18JDCdOikUA_JmCHxtAyP757i1rmoz8fobWVHQM6ym-U", "doc_id": "18JDCdOikUA_JmCHxtAyP757i1rmoz8fobWVHQM6ym-U", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-1-en.png b/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-1-en.png deleted file mode 100644 index fe15a5b..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-2-en.png b/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-2-en.png deleted file mode 100644 index 81c188e..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-3-en.png b/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-3-en.png deleted file mode 100644 index dec4546..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-4-en.png b/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-4-en.png deleted file mode 100644 index 9e438f2..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/netbeans-gephi-source-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/screenshot-encircling-pdf.png b/docs/generated-html/en/book/images/en/developers/screenshot-encircling-pdf.png deleted file mode 100644 index b5aa0d0..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/screenshot-encircling-pdf.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/developers/use-the-source.jpg b/docs/generated-html/en/book/images/en/developers/use-the-source.jpg deleted file mode 100644 index 46b7e75..0000000 Binary files a/docs/generated-html/en/book/images/en/developers/use-the-source.jpg and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/empty-project-1-en.png b/docs/generated-html/en/book/images/en/empty-project-1-en.png deleted file mode 100644 index f3ebdf4..0000000 Binary files a/docs/generated-html/en/book/images/en/empty-project-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/enable-timeline.png b/docs/generated-html/en/book/images/en/enable-timeline.png deleted file mode 100644 index 48bd01a..0000000 Binary files a/docs/generated-html/en/book/images/en/enable-timeline.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/export-graph-file-1-en.png b/docs/generated-html/en/book/images/en/export-graph-file-1-en.png deleted file mode 100644 index 50a8598..0000000 Binary files a/docs/generated-html/en/book/images/en/export-graph-file-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/export-graph-file-2-en.png b/docs/generated-html/en/book/images/en/export-graph-file-2-en.png deleted file mode 100644 index c026f38..0000000 Binary files a/docs/generated-html/en/book/images/en/export-graph-file-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/export-network-1-en.gdraw b/docs/generated-html/en/book/images/en/export-network-1-en.gdraw deleted file mode 100644 index f40c3f2..0000000 --- a/docs/generated-html/en/book/images/en/export-network-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1sagJc-hiW5vw7EIzqgHJyC5cOdi8wFCCnmwLMKOYHHk", "doc_id": "1sagJc-hiW5vw7EIzqgHJyC5cOdi8wFCCnmwLMKOYHHk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/export-network-2-en.gdraw b/docs/generated-html/en/book/images/en/export-network-2-en.gdraw deleted file mode 100644 index feab9f7..0000000 --- a/docs/generated-html/en/book/images/en/export-network-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1C_gQNPrHrEXAvs_4Blgv8N6bawTtBb_iO8pgEjntmEg", "doc_id": "1C_gQNPrHrEXAvs_4Blgv8N6bawTtBb_iO8pgEjntmEg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/file-open-1-en.gdraw b/docs/generated-html/en/book/images/en/file-open-1-en.gdraw deleted file mode 100644 index 855cb01..0000000 --- a/docs/generated-html/en/book/images/en/file-open-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1HKO39BgpCDaUTJKb_-uywhe4AjyoJwgL6DrDr9P5Hh4", "doc_id": "1HKO39BgpCDaUTJKb_-uywhe4AjyoJwgL6DrDr9P5Hh4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/file-open-1-en.png b/docs/generated-html/en/book/images/en/file-open-1-en.png deleted file mode 100644 index b0321b4..0000000 Binary files a/docs/generated-html/en/book/images/en/file-open-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filer-partition-node-1-en.png b/docs/generated-html/en/book/images/en/filer-partition-node-1-en.png deleted file mode 100644 index 2aaa3e8..0000000 Binary files a/docs/generated-html/en/book/images/en/filer-partition-node-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter--edges-weight-1-en.png b/docs/generated-html/en/book/images/en/filter--edges-weight-1-en.png deleted file mode 100644 index 3674bb6..0000000 Binary files a/docs/generated-html/en/book/images/en/filter--edges-weight-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-degree-range-1-en.png b/docs/generated-html/en/book/images/en/filter-degree-range-1-en.png deleted file mode 100644 index 05aaf9a..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-degree-range-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-edge-weight-1-en.png b/docs/generated-html/en/book/images/en/filter-edge-weight-1-en.png deleted file mode 100644 index 5f17ddf..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-edge-weight-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-edge-weight-en.gif b/docs/generated-html/en/book/images/en/filter-edge-weight-en.gif deleted file mode 100644 index 000fd4f..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-edge-weight-en.gif and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition-en.gif b/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition-en.gif deleted file mode 100644 index c20fba1..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition-en.gif and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition1-en.png b/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition1-en.png deleted file mode 100644 index b5c2c71..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-edge-weight-gender-partition1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-edges-weight-1-en.gdraw b/docs/generated-html/en/book/images/en/filter-edges-weight-1-en.gdraw deleted file mode 100644 index a48e40b..0000000 --- a/docs/generated-html/en/book/images/en/filter-edges-weight-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1xr4m5nl53wASG4EZjlQpkq-b0OeC_3lJ-62rF8qPzMI", "doc_id": "1xr4m5nl53wASG4EZjlQpkq-b0OeC_3lJ-62rF8qPzMI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/filter-giant-component-1-en.png b/docs/generated-html/en/book/images/en/filter-giant-component-1-en.png deleted file mode 100644 index 3934f74..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-giant-component-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-name-1-en.png b/docs/generated-html/en/book/images/en/filter-name-1-en.png deleted file mode 100644 index a4b8e57..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-name-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-name-2-en.png b/docs/generated-html/en/book/images/en/filter-name-2-en.png deleted file mode 100644 index 048215c..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-name-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-name-3-en.png b/docs/generated-html/en/book/images/en/filter-name-3-en.png deleted file mode 100644 index 1bd5004..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-name-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-not-1-en.png b/docs/generated-html/en/book/images/en/filter-operator-not-1-en.png deleted file mode 100644 index b9c4cdd..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-not-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-not-2-en.png b/docs/generated-html/en/book/images/en/filter-operator-not-2-en.png deleted file mode 100644 index 0cd2769..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-not-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-not-3-en.png b/docs/generated-html/en/book/images/en/filter-operator-not-3-en.png deleted file mode 100644 index 92c8603..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-not-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-union-1-en.png b/docs/generated-html/en/book/images/en/filter-operator-union-1-en.png deleted file mode 100644 index b8f5060..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-union-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-union-2-en.png b/docs/generated-html/en/book/images/en/filter-operator-union-2-en.png deleted file mode 100644 index 6e2ed6e..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-union-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-operator-union-3-en.png b/docs/generated-html/en/book/images/en/filter-operator-union-3-en.png deleted file mode 100644 index 9938be2..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-operator-union-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-order-1-en.png b/docs/generated-html/en/book/images/en/filter-order-1-en.png deleted file mode 100644 index d6a65ca..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-order-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-order-2-en.png b/docs/generated-html/en/book/images/en/filter-order-2-en.png deleted file mode 100644 index ee3202d..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-order-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-overview-1-en.gdraw b/docs/generated-html/en/book/images/en/filter-overview-1-en.gdraw deleted file mode 100644 index 90160c3..0000000 --- a/docs/generated-html/en/book/images/en/filter-overview-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1pRT-SiwCwiiCaItCOSWM53ynzBEchFLZKoipSiHa0i8", "doc_id": "1pRT-SiwCwiiCaItCOSWM53ynzBEchFLZKoipSiHa0i8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/filter-overview-1-en.png b/docs/generated-html/en/book/images/en/filter-overview-1-en.png deleted file mode 100644 index f1a2b95..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-overview-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-panel-1-en.gdraw b/docs/generated-html/en/book/images/en/filter-panel-1-en.gdraw deleted file mode 100644 index eff9f28..0000000 --- a/docs/generated-html/en/book/images/en/filter-panel-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1iraUm1uaQDcEg2myNw6wKSNYMtuULwnwskBIhIiQsIw", "doc_id": "1iraUm1uaQDcEg2myNw6wKSNYMtuULwnwskBIhIiQsIw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/filter-panel-1-en.png b/docs/generated-html/en/book/images/en/filter-panel-1-en.png deleted file mode 100644 index 84beff2..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-panel-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/filter-partition-node-1-en.gdraw b/docs/generated-html/en/book/images/en/filter-partition-node-1-en.gdraw deleted file mode 100644 index 8b67bad..0000000 --- a/docs/generated-html/en/book/images/en/filter-partition-node-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1LjwWLvz38GnmyE6X1Ii0lMIBpLf0wejpRo097eifMG0", "doc_id": "1LjwWLvz38GnmyE6X1Ii0lMIBpLf0wejpRo097eifMG0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/filter-reset-1-en.gdraw b/docs/generated-html/en/book/images/en/filter-reset-1-en.gdraw deleted file mode 100644 index 66c3d0b..0000000 --- a/docs/generated-html/en/book/images/en/filter-reset-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1_9ip0V6ojKMlj109KSbpAtOxFvs6o1P6k5QAI5PmYAM", "doc_id": "1_9ip0V6ojKMlj109KSbpAtOxFvs6o1P6k5QAI5PmYAM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/filter-reset-1-en.png b/docs/generated-html/en/book/images/en/filter-reset-1-en.png deleted file mode 100644 index cd195fa..0000000 Binary files a/docs/generated-html/en/book/images/en/filter-reset-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/force-atlas2-few-parameters-en.gdraw b/docs/generated-html/en/book/images/en/force-atlas2-few-parameters-en.gdraw deleted file mode 100644 index a79df81..0000000 --- a/docs/generated-html/en/book/images/en/force-atlas2-few-parameters-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1PXZrLFBR8D2dPxW90I_UZBfBvUHJcRVIjrXbhOMNHew", "doc_id": "1PXZrLFBR8D2dPxW90I_UZBfBvUHJcRVIjrXbhOMNHew", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/force-atlas2-parameters-1-en.png b/docs/generated-html/en/book/images/en/force-atlas2-parameters-1-en.png deleted file mode 100644 index f5d777a..0000000 Binary files a/docs/generated-html/en/book/images/en/force-atlas2-parameters-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/force-atlas2-result.gdraw b/docs/generated-html/en/book/images/en/force-atlas2-result.gdraw deleted file mode 100644 index 4f2f939..0000000 --- a/docs/generated-html/en/book/images/en/force-atlas2-result.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ODdv7OwT-0afiBOQuhgz7eBtjBhZJnFxckBm4AJGTq4", "doc_id": "1ODdv7OwT-0afiBOQuhgz7eBtjBhZJnFxckBm4AJGTq4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/gephi-welcome-screen-en.png b/docs/generated-html/en/book/images/en/gephi-welcome-screen-en.png deleted file mode 100644 index 2db80cb..0000000 Binary files a/docs/generated-html/en/book/images/en/gephi-welcome-screen-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/gephi-welcome-screen-en_data.xml b/docs/generated-html/en/book/images/en/gephi-welcome-screen-en_data.xml deleted file mode 100644 index 0db4bce..0000000 --- a/docs/generated-html/en/book/images/en/gephi-welcome-screen-en_data.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/gephi-welcome-screen-open-graph-en.png b/docs/generated-html/en/book/images/en/gephi-welcome-screen-open-graph-en.png deleted file mode 100644 index 67835a9..0000000 Binary files a/docs/generated-html/en/book/images/en/gephi-welcome-screen-open-graph-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.gdraw b/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.gdraw deleted file mode 100644 index eed6e03..0000000 --- a/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1b__UoJlhFrt6mJ9oXcwaEcmEzFENNDOkiGPuMg1IHcY", "doc_id": "1b__UoJlhFrt6mJ9oXcwaEcmEzFENNDOkiGPuMg1IHcY", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.png b/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.png deleted file mode 100644 index 49afc38..0000000 Binary files a/docs/generated-html/en/book/images/en/gexf-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/icon-pencils-1-en.png b/docs/generated-html/en/book/images/en/icon-pencils-1-en.png deleted file mode 100644 index 719dcbc..0000000 Binary files a/docs/generated-html/en/book/images/en/icon-pencils-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-1-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-1-en.png deleted file mode 100644 index 48cc339..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-2-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-2-en.png deleted file mode 100644 index 60c7fd0..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-3-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-3-en.png deleted file mode 100644 index 7f52218..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-4-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-4-en.png deleted file mode 100644 index 832f22b..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-5-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-5-en.png deleted file mode 100644 index 97b1ae8..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-6-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-6-en.png deleted file mode 100644 index 25493fa6..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-6-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-7-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-7-en.png deleted file mode 100644 index dd0f227..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-7-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-8-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-8-en.png deleted file mode 100644 index 2bc8204..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-8-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/import-spreadsheet-9-en.png b/docs/generated-html/en/book/images/en/import-spreadsheet-9-en.png deleted file mode 100644 index c900cfe..0000000 Binary files a/docs/generated-html/en/book/images/en/import-spreadsheet-9-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/importing-list-edges-1-en.gdraw b/docs/generated-html/en/book/images/en/importing-list-edges-1-en.gdraw deleted file mode 100644 index df26136..0000000 --- a/docs/generated-html/en/book/images/en/importing-list-edges-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=17e7daVC_J9JFyfyvx0Tq2rWgLblLFLSq0tcJAUUl6tc", "doc_id": "17e7daVC_J9JFyfyvx0Tq2rWgLblLFLSq0tcJAUUl6tc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/importing-list-edges-2-en.gdraw b/docs/generated-html/en/book/images/en/importing-list-edges-2-en.gdraw deleted file mode 100644 index 48eeaee..0000000 --- a/docs/generated-html/en/book/images/en/importing-list-edges-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1gK2kZfVBYf0U393QirpKiMalfBGpeNSLrh6iNojLHIQ", "doc_id": "1gK2kZfVBYf0U393QirpKiMalfBGpeNSLrh6iNojLHIQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/importing-list-nodes-1-en.gdraw b/docs/generated-html/en/book/images/en/importing-list-nodes-1-en.gdraw deleted file mode 100644 index d67e427..0000000 --- a/docs/generated-html/en/book/images/en/importing-list-nodes-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1mgff-wxY4NE5qvuj0Z4dT5XIIA7cx13z6aSCu2VHFUU", "doc_id": "1mgff-wxY4NE5qvuj0Z4dT5XIIA7cx13z6aSCu2VHFUU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/importing-list-nodes-2-en.gdraw b/docs/generated-html/en/book/images/en/importing-list-nodes-2-en.gdraw deleted file mode 100644 index ded5e33..0000000 --- a/docs/generated-html/en/book/images/en/importing-list-nodes-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1lPI1-9Wcr-i_ExJ0wU0bbxko6MBipx5nEWcOpiOjBWI", "doc_id": "1lPI1-9Wcr-i_ExJ0wU0bbxko6MBipx5nEWcOpiOjBWI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-config-2.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-config-2.png deleted file mode 100644 index 1c23ee4..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-config-2.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-config.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-config.png deleted file mode 100644 index 531ec45..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-config.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-install-plugin.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-install-plugin.png deleted file mode 100644 index 6f6722a..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-install-plugin.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-c2c.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-c2c.png deleted file mode 100644 index 09dcd2a..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-c2c.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-graph.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-graph.png deleted file mode 100644 index 9562e82..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-graph.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-p2p.png b/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-p2p.png deleted file mode 100644 index be3aba6..0000000 Binary files a/docs/generated-html/en/book/images/en/k-partite/k-partite-simple-p2p.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/merge-columns-1-en.gdraw b/docs/generated-html/en/book/images/en/merge-columns-1-en.gdraw deleted file mode 100644 index 4855bd9..0000000 --- a/docs/generated-html/en/book/images/en/merge-columns-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1X5XI_1QszdoC08TKMvVJgDp63YdYNFyd2IiDJC4rszw", "doc_id": "1X5XI_1QszdoC08TKMvVJgDp63YdYNFyd2IiDJC4rszw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/merge-columns-2-en.gdraw b/docs/generated-html/en/book/images/en/merge-columns-2-en.gdraw deleted file mode 100644 index 48157d9..0000000 --- a/docs/generated-html/en/book/images/en/merge-columns-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1sA3V5lDqUxRc2ARofmt0TRppgaAZ23JTBE_B1kpGeKw", "doc_id": "1sA3V5lDqUxRc2ARofmt0TRppgaAZ23JTBE_B1kpGeKw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/merge-columns-2-en.png b/docs/generated-html/en/book/images/en/merge-columns-2-en.png deleted file mode 100644 index b33276a..0000000 Binary files a/docs/generated-html/en/book/images/en/merge-columns-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/merge-columns-3-en.gdraw b/docs/generated-html/en/book/images/en/merge-columns-3-en.gdraw deleted file mode 100644 index e0f9093..0000000 --- a/docs/generated-html/en/book/images/en/merge-columns-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1SWIGLR_7KcHtqndaf-MxSgTo1nfbKSMeNO32Bq6ehc8", "doc_id": "1SWIGLR_7KcHtqndaf-MxSgTo1nfbKSMeNO32Bq6ehc8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/merge-columns-3-en.png b/docs/generated-html/en/book/images/en/merge-columns-3-en.png deleted file mode 100644 index f9b16cb..0000000 Binary files a/docs/generated-html/en/book/images/en/merge-columns-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/merge-columns-4-en.gdraw b/docs/generated-html/en/book/images/en/merge-columns-4-en.gdraw deleted file mode 100644 index 8b89a16..0000000 --- a/docs/generated-html/en/book/images/en/merge-columns-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1PgoXOTQ3LhN8YnkHrRQTIJ3GkwePX23ApQYLuZViNPE", "doc_id": "1PgoXOTQ3LhN8YnkHrRQTIJ3GkwePX23ApQYLuZViNPE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/miserables-edges-list-1-en.gdraw b/docs/generated-html/en/book/images/en/miserables-edges-list-1-en.gdraw deleted file mode 100644 index 4f3963b..0000000 --- a/docs/generated-html/en/book/images/en/miserables-edges-list-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1FQyMJwYBFMatJA0lCc1caxjT54tn2Sbql9zQLbt34X0", "doc_id": "1FQyMJwYBFMatJA0lCc1caxjT54tn2Sbql9zQLbt34X0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw b/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw deleted file mode 100644 index 8e433ec..0000000 --- a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1LtgHJTCNzy6w7y9HBqeKNMsvlrAKxEraGB3oYH1pKxM", "doc_id": "1LtgHJTCNzy6w7y9HBqeKNMsvlrAKxEraGB3oYH1pKxM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.png b/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.png deleted file mode 100644 index 10fa140..0000000 Binary files a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-2-en.png b/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-2-en.png deleted file mode 100644 index b92b837..0000000 Binary files a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-3-en.png b/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-3-en.png deleted file mode 100644 index 63094db..0000000 Binary files a/docs/generated-html/en/book/images/en/miserables-with-dates-datalab-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/moving-timeline-1-en.gdraw b/docs/generated-html/en/book/images/en/moving-timeline-1-en.gdraw deleted file mode 100644 index ac41f6b..0000000 --- a/docs/generated-html/en/book/images/en/moving-timeline-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1iZVFI4rHBbx9p18PIOVbj0DYWiEDFfVj4ChwMSF1C9s", "doc_id": "1iZVFI4rHBbx9p18PIOVbj0DYWiEDFfVj4ChwMSF1C9s", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/moving-timeline-1-en.png b/docs/generated-html/en/book/images/en/moving-timeline-1-en.png deleted file mode 100644 index 5c98fbd..0000000 Binary files a/docs/generated-html/en/book/images/en/moving-timeline-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/new-project-1-en.gdraw b/docs/generated-html/en/book/images/en/new-project-1-en.gdraw deleted file mode 100644 index 0272e4b..0000000 --- a/docs/generated-html/en/book/images/en/new-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1nvVFfo8kz1J6h8BcjRfXlnQmWK11ijwHtMB7VagDr0s", "doc_id": "1nvVFfo8kz1J6h8BcjRfXlnQmWK11ijwHtMB7VagDr0s", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/new-project-1-en.png b/docs/generated-html/en/book/images/en/new-project-1-en.png deleted file mode 100644 index dcd9fa2..0000000 Binary files a/docs/generated-html/en/book/images/en/new-project-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/open-2-files-1-en.gdraw b/docs/generated-html/en/book/images/en/open-2-files-1-en.gdraw deleted file mode 100644 index cb73e25..0000000 --- a/docs/generated-html/en/book/images/en/open-2-files-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1DvLxVriTnqatTto4u1Rfwf5-SfJuxiviU9KvV572SCY", "doc_id": "1DvLxVriTnqatTto4u1Rfwf5-SfJuxiviU9KvV572SCY", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/open-dynamic-1-en.gdraw b/docs/generated-html/en/book/images/en/open-dynamic-1-en.gdraw deleted file mode 100644 index 387785e..0000000 --- a/docs/generated-html/en/book/images/en/open-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1esQ7wihbbHohEokpU7yvVkTHN5T13-4OLV7QmM2HGao", "doc_id": "1esQ7wihbbHohEokpU7yvVkTHN5T13-4OLV7QmM2HGao", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/open-new-project-1-en.gdraw b/docs/generated-html/en/book/images/en/open-new-project-1-en.gdraw deleted file mode 100644 index 7d11287..0000000 --- a/docs/generated-html/en/book/images/en/open-new-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1oN_QiN9uOkb47YZFBKxJsD5eK4hu2Y43Sm1WakTSbmM", "doc_id": "1oN_QiN9uOkb47YZFBKxJsD5eK4hu2Y43Sm1WakTSbmM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/opening-2-files-1-en.png b/docs/generated-html/en/book/images/en/opening-2-files-1-en.png deleted file mode 100644 index 0e3ec93..0000000 Binary files a/docs/generated-html/en/book/images/en/opening-2-files-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/opening-dynamic-1-en.png b/docs/generated-html/en/book/images/en/opening-dynamic-1-en.png deleted file mode 100644 index 6008247..0000000 Binary files a/docs/generated-html/en/book/images/en/opening-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/opening-file-report-en.png b/docs/generated-html/en/book/images/en/opening-file-report-en.png deleted file mode 100644 index 0b69bb3..0000000 Binary files a/docs/generated-html/en/book/images/en/opening-file-report-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/operator-mask-1-en.png b/docs/generated-html/en/book/images/en/operator-mask-1-en.png deleted file mode 100644 index c8cd302..0000000 Binary files a/docs/generated-html/en/book/images/en/operator-mask-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/operator-mask-2-en.png b/docs/generated-html/en/book/images/en/operator-mask-2-en.png deleted file mode 100644 index 66192eb..0000000 Binary files a/docs/generated-html/en/book/images/en/operator-mask-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/plugins-window-1-en.png b/docs/generated-html/en/book/images/en/plugins-window-1-en.png deleted file mode 100644 index 0c9fea5..0000000 Binary files a/docs/generated-html/en/book/images/en/plugins-window-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/plugins-window-en.gdraw b/docs/generated-html/en/book/images/en/plugins-window-en.gdraw deleted file mode 100644 index 16fe8b7..0000000 --- a/docs/generated-html/en/book/images/en/plugins-window-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1eZ9GUVZJxnW4KZNgGq3vLhVz2Aznho2cVwFNIUvGPgM", "doc_id": "1eZ9GUVZJxnW4KZNgGq3vLhVz2Aznho2cVwFNIUvGPgM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/preview-export-button-en.gdraw b/docs/generated-html/en/book/images/en/preview-export-button-en.gdraw deleted file mode 100644 index 47e45bb..0000000 --- a/docs/generated-html/en/book/images/en/preview-export-button-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RRgtYX_Dh3zrBFgTaLW7LP8DE9BXHMt8KtNPJOPhYxg", "doc_id": "1RRgtYX_Dh3zrBFgTaLW7LP8DE9BXHMt8KtNPJOPhYxg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/preview-panel-empty-en.png b/docs/generated-html/en/book/images/en/preview-panel-empty-en.png deleted file mode 100644 index 0745b7d..0000000 Binary files a/docs/generated-html/en/book/images/en/preview-panel-empty-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/preview-panel-en.gdraw b/docs/generated-html/en/book/images/en/preview-panel-en.gdraw deleted file mode 100644 index f297242..0000000 --- a/docs/generated-html/en/book/images/en/preview-panel-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=19vU_2o5tHCi4o-LK-d-oSfk3hMqJfCqXnur7EwwS62I", "doc_id": "19vU_2o5tHCi4o-LK-d-oSfk3hMqJfCqXnur7EwwS62I", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/project-initial-view-1-3-en.gdraw b/docs/generated-html/en/book/images/en/project-initial-view-1-3-en.gdraw deleted file mode 100644 index 5228abf..0000000 --- a/docs/generated-html/en/book/images/en/project-initial-view-1-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18y-7jOct17YKwO4NXRnQJ-o3-wrFkLpOU0Ar9ZUfM8Y", "doc_id": "18y-7jOct17YKwO4NXRnQJ-o3-wrFkLpOU0Ar9ZUfM8Y", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/project-initial-view-4-5-en.gdraw b/docs/generated-html/en/book/images/en/project-initial-view-4-5-en.gdraw deleted file mode 100644 index a6c5b81..0000000 --- a/docs/generated-html/en/book/images/en/project-initial-view-4-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1b-NUgPDOsT14q1HGJK-pMexpXzXWujyb0fcF7XNtBdU", "doc_id": "1b-NUgPDOsT14q1HGJK-pMexpXzXWujyb0fcF7XNtBdU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/project-initial-view-6-7-en.gdraw b/docs/generated-html/en/book/images/en/project-initial-view-6-7-en.gdraw deleted file mode 100644 index 895e521..0000000 --- a/docs/generated-html/en/book/images/en/project-initial-view-6-7-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1X3MtvS4atHY3C37XLb5uivuQn8yPHad0-_a3tkEDStE", "doc_id": "1X3MtvS4atHY3C37XLb5uivuQn8yPHad0-_a3tkEDStE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/project-initial-view-8-10-en.gdraw b/docs/generated-html/en/book/images/en/project-initial-view-8-10-en.gdraw deleted file mode 100644 index 4770694..0000000 --- a/docs/generated-html/en/book/images/en/project-initial-view-8-10-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1bwYi8dwbiyy3wZjp3dGjAkMYCgHF9H54xrzz9rdfwTg", "doc_id": "1bwYi8dwbiyy3wZjp3dGjAkMYCgHF9H54xrzz9rdfwTg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/project-initial-view.png b/docs/generated-html/en/book/images/en/project-initial-view.png deleted file mode 100644 index 6fa24cb..0000000 Binary files a/docs/generated-html/en/book/images/en/project-initial-view.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-1-en.gdraw b/docs/generated-html/en/book/images/en/ranking-centrality-miserables-1-en.gdraw deleted file mode 100644 index 102867e..0000000 --- a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1OvcmsHtjhNIJ5_saeXS4f5DxCX6HsDnK6B0ubrWTD8U", "doc_id": "1OvcmsHtjhNIJ5_saeXS4f5DxCX6HsDnK6B0ubrWTD8U", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.gdraw b/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.gdraw deleted file mode 100644 index 7d5660f..0000000 --- a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1tjaOlPhoyy8G8a08q6b7KR7kn8Xku7WEdaGgf_4cKEA", "doc_id": "1tjaOlPhoyy8G8a08q6b7KR7kn8Xku7WEdaGgf_4cKEA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.png b/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.png deleted file mode 100644 index 42ece91..0000000 Binary files a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.gdraw b/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.gdraw deleted file mode 100644 index 0573761..0000000 --- a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1H-gU_tm4dCNrtE20EDLhTV7FjI7dCfp3m1zcBpZj44U", "doc_id": "1H-gU_tm4dCNrtE20EDLhTV7FjI7dCfp3m1zcBpZj44U", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.png b/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.png deleted file mode 100644 index 9a572c3..0000000 Binary files a/docs/generated-html/en/book/images/en/ranking-centrality-miserables-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.gdraw b/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.gdraw deleted file mode 100644 index 107f4b7..0000000 --- a/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1v7dDBVWzZZ_veV_i6FLnHwmJ1LqN6v1x5t2B98TgC8Y", "doc_id": "1v7dDBVWzZZ_veV_i6FLnHwmJ1LqN6v1x5t2B98TgC8Y", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.png b/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.png deleted file mode 100644 index bc2924d..0000000 Binary files a/docs/generated-html/en/book/images/en/report-window-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-1-en.png b/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-1-en.png deleted file mode 100644 index 8d1d99c..0000000 Binary files a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-2-en.png b/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-2-en.png deleted file mode 100644 index a29c586..0000000 Binary files a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size.gdraw b/docs/generated-html/en/book/images/en/resizing-labels-to-node-size.gdraw deleted file mode 100644 index 01438a0..0000000 --- a/docs/generated-html/en/book/images/en/resizing-labels-to-node-size.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1nM-m6cEdpbCLPM7-rCjmVes1jp0902b5est5kuwW9aU", "doc_id": "1nM-m6cEdpbCLPM7-rCjmVes1jp0902b5est5kuwW9aU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/select-force-atlas2-detail-en.png b/docs/generated-html/en/book/images/en/select-force-atlas2-detail-en.png deleted file mode 100644 index 6f6d761..0000000 Binary files a/docs/generated-html/en/book/images/en/select-force-atlas2-detail-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/select-force-atlas2-en.png b/docs/generated-html/en/book/images/en/select-force-atlas2-en.png deleted file mode 100644 index 8f2a8e0..0000000 Binary files a/docs/generated-html/en/book/images/en/select-force-atlas2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/semantic-web-importer/result_1.png b/docs/generated-html/en/book/images/en/semantic-web-importer/result_1.png deleted file mode 100644 index b4cd588..0000000 Binary files a/docs/generated-html/en/book/images/en/semantic-web-importer/result_1.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/semantic-web-importer/setup_1.png b/docs/generated-html/en/book/images/en/semantic-web-importer/setup_1.png deleted file mode 100644 index a565a26..0000000 Binary files a/docs/generated-html/en/book/images/en/semantic-web-importer/setup_1.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/semantic-web-importer/setup_2.png b/docs/generated-html/en/book/images/en/semantic-web-importer/setup_2.png deleted file mode 100644 index 330a09e..0000000 Binary files a/docs/generated-html/en/book/images/en/semantic-web-importer/setup_2.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw b/docs/generated-html/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw deleted file mode 100644 index af1dff5..0000000 --- a/docs/generated-html/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1dpDDMyzeL0NWdaj10UvU-fIy5CmU9MYEBBeuOnLDX7c", "doc_id": "1dpDDMyzeL0NWdaj10UvU-fIy5CmU9MYEBBeuOnLDX7c", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw b/docs/generated-html/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw deleted file mode 100644 index 96e2fb6..0000000 --- a/docs/generated-html/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1AJsLU0Z-PaYI6P6rdXg6QXYgBh_JKaJkBkGGQkqk9MM", "doc_id": "1AJsLU0Z-PaYI6P6rdXg6QXYgBh_JKaJkBkGGQkqk9MM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/similarity-computer/file-with-header-en.png b/docs/generated-html/en/book/images/en/similarity-computer/file-with-header-en.png deleted file mode 100644 index 27b237e..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/file-with-header-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/file-without-header-en.png b/docs/generated-html/en/book/images/en/similarity-computer/file-without-header-en.png deleted file mode 100644 index 5fc6f5f..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/file-without-header-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/first-screen-1-en.gdraw b/docs/generated-html/en/book/images/en/similarity-computer/first-screen-1-en.gdraw deleted file mode 100644 index ab69a0b..0000000 --- a/docs/generated-html/en/book/images/en/similarity-computer/first-screen-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=14MXNE_RyQkpCRYmJgoag7j3FjobA_WS4yDcQg3c6e3U", "doc_id": "14MXNE_RyQkpCRYmJgoag7j3FjobA_WS4yDcQg3c6e3U", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/similarity-computer/no-weights.png b/docs/generated-html/en/book/images/en/similarity-computer/no-weights.png deleted file mode 100644 index a2f9bae..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/no-weights.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/numerical-attributes-en.png b/docs/generated-html/en/book/images/en/similarity-computer/numerical-attributes-en.png deleted file mode 100644 index bf3af12..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/numerical-attributes-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.gdraw b/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.gdraw deleted file mode 100644 index 739999b..0000000 --- a/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1BsTuvtxlKXGHyMOa6TQ5mNE2pDcPn3qlvRrWFwmgs94", "doc_id": "1BsTuvtxlKXGHyMOa6TQ5mNE2pDcPn3qlvRrWFwmgs94", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.png deleted file mode 100644 index 443bc58..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-2-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-2-en.png deleted file mode 100644 index 1ff1657..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-3-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-3-en.png deleted file mode 100644 index 6def404..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-4-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-4-en.png deleted file mode 100644 index 48d7feb..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-5-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-5-en.png deleted file mode 100644 index 6ae664e..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-6-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-6-en.png deleted file mode 100644 index 5506f32..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-6-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-7-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-7-en.png deleted file mode 100644 index 00e93e8..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-7-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/plugin-catalogue-en.png b/docs/generated-html/en/book/images/en/similarity-computer/plugin-catalogue-en.png deleted file mode 100644 index 8280502..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/plugin-catalogue-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/result.png b/docs/generated-html/en/book/images/en/similarity-computer/result.png deleted file mode 100644 index 637b8ae..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/result.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw b/docs/generated-html/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index 914f2f4..0000000 --- a/docs/generated-html/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=15-yjUbTcSxVVj2etbVN4yUBax3V9vkOeY7I1vStX05E", "doc_id": "15-yjUbTcSxVVj2etbVN4yUBax3V9vkOeY7I1vStX05E", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/similarity-computer/weights-ok.png b/docs/generated-html/en/book/images/en/similarity-computer/weights-ok.png deleted file mode 100644 index a9c1efb..0000000 Binary files a/docs/generated-html/en/book/images/en/similarity-computer/weights-ok.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-2-en.gdraw b/docs/generated-html/en/book/images/en/switching-to-data-laboratory-2-en.gdraw deleted file mode 100644 index 641a5bd..0000000 --- a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1pKkaw7B27GbTrPj9G-C8X_egXGvXiBdGO9w8VYDjBEM", "doc_id": "1pKkaw7B27GbTrPj9G-C8X_egXGvXiBdGO9w8VYDjBEM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-detail-en.png b/docs/generated-html/en/book/images/en/switching-to-data-laboratory-detail-en.png deleted file mode 100644 index e0cbf23..0000000 Binary files a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-detail-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.gdraw b/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.gdraw deleted file mode 100644 index 478ae48..0000000 --- a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18XDlbr6qDXTHWQKrv6lMp2iVm7voJuW7gHF95BzNqnc", "doc_id": "18XDlbr6qDXTHWQKrv6lMp2iVm7voJuW7gHF95BzNqnc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.png b/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.png deleted file mode 100644 index e6dbc7e..0000000 Binary files a/docs/generated-html/en/book/images/en/switching-to-data-laboratory-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.gdraw b/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.gdraw deleted file mode 100644 index 351cbf9..0000000 --- a/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1gcREcpVZbbsk8IeIQSUaRjvNt65PpmwOcBKCUDPdcgE", "doc_id": "1gcREcpVZbbsk8IeIQSUaRjvNt65PpmwOcBKCUDPdcgE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.png b/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.png deleted file mode 100644 index d7da6e9..0000000 Binary files a/docs/generated-html/en/book/images/en/switching-to-preview-panel-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/terminology-en.gdraw b/docs/generated-html/en/book/images/en/terminology-en.gdraw deleted file mode 100644 index 91d7a1c..0000000 --- a/docs/generated-html/en/book/images/en/terminology-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1sZrf3bQeUrMknfY8Lk2fexKMx4DE_kwiPK0Lj-0e0js", "doc_id": "1sZrf3bQeUrMknfY8Lk2fexKMx4DE_kwiPK0Lj-0e0js", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/timeline-1-en.png b/docs/generated-html/en/book/images/en/timeline-1-en.png deleted file mode 100644 index e4418c7..0000000 Binary files a/docs/generated-html/en/book/images/en/timeline-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/tools-plugins-1-en.png b/docs/generated-html/en/book/images/en/tools-plugins-1-en.png deleted file mode 100644 index 0a7ef7e..0000000 Binary files a/docs/generated-html/en/book/images/en/tools-plugins-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/tools-plugins-2-en.png b/docs/generated-html/en/book/images/en/tools-plugins-2-en.png deleted file mode 100644 index c0221a7..0000000 Binary files a/docs/generated-html/en/book/images/en/tools-plugins-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/tools-plugins-en.gdraw b/docs/generated-html/en/book/images/en/tools-plugins-en.gdraw deleted file mode 100644 index f74d70c..0000000 --- a/docs/generated-html/en/book/images/en/tools-plugins-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1vUPHrNlE1oMnTRX2iTzFd-LcXqRVL2bP7nWFu4RkHvk", "doc_id": "1vUPHrNlE1oMnTRX2iTzFd-LcXqRVL2bP7nWFu4RkHvk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw deleted file mode 100644 index 6d85b15..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1iImzJG80xITnK5mVFKOK_ppMtYD0GA-VHbMCFA7v8s4", "doc_id": "1iImzJG80xITnK5mVFKOK_ppMtYD0GA-VHbMCFA7v8s4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png deleted file mode 100644 index 66ff7ea..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw deleted file mode 100644 index 5ac422a..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1KGnKHeSgjHiGM6DmsQxT2YY1ATc4iYlydTaOKpPoTsk", "doc_id": "1KGnKHeSgjHiGM6DmsQxT2YY1ATc4iYlydTaOKpPoTsk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png deleted file mode 100644 index 95c486e..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png deleted file mode 100644 index db0c8fc..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw deleted file mode 100644 index 36d21fe..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1OKNRjqzVqdHUdx9uAaJvTy7kc2c6uUuFbBfPt3YfyYA", "doc_id": "1OKNRjqzVqdHUdx9uAaJvTy7kc2c6uUuFbBfPt3YfyYA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png deleted file mode 100644 index 67e30bb..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/interface-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/interface-1-en.png deleted file mode 100644 index 4006b08..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/interface-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw deleted file mode 100644 index 550a9db..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1awaJ45twWdHQNgak0N534kBtO2Ydn0tdVS-ryPiCvdo", "doc_id": "1awaJ45twWdHQNgak0N534kBtO2Ydn0tdVS-ryPiCvdo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png deleted file mode 100644 index e868b97..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png deleted file mode 100644 index 7c25c45..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index 25210bc..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RusnEA5G4REjEIp29LjjEDak815YFKu9Oe4i0kPuh-k", "doc_id": "1RusnEA5G4REjEIp29LjjEDak815YFKu9Oe4i0kPuh-k", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline-enable.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline-enable.png deleted file mode 100644 index 1fa3ecd..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline-enable.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline.gif b/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline.gif deleted file mode 100644 index 0a176cf..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/timeline.gif and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw deleted file mode 100644 index 288822a..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=13aLudaRJd9ul8ANIRDSNdhK9Q4NgZn9NpShse7R5wBg", "doc_id": "13aLudaRJd9ul8ANIRDSNdhK9Q4NgZn9NpShse7R5wBg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png deleted file mode 100644 index 50dda40..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw deleted file mode 100644 index b60a704..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RM6zRn2DMBHYJ1I7FB924JHXXpUn_6RWRXXq_3AExOM", "doc_id": "1RM6zRn2DMBHYJ1I7FB924JHXXpUn_6RWRXXq_3AExOM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png deleted file mode 100644 index d366c91..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw deleted file mode 100644 index 768b523..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RYJnryEiwWWjyCtQvt1ZZna3rTLhdyzJHy6ggCzXiMc", "doc_id": "1RYJnryEiwWWjyCtQvt1ZZna3rTLhdyzJHy6ggCzXiMc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png deleted file mode 100644 index ca9fc3c..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw deleted file mode 100644 index 80b4771..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1aGosYFV9NmRQ5lrqzcvTxGSSYW0cBbrraFH3DT_HGJE", "doc_id": "1aGosYFV9NmRQ5lrqzcvTxGSSYW0cBbrraFH3DT_HGJE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png deleted file mode 100644 index de17fc8..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw deleted file mode 100644 index 993a753..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1X12okCdAfq_R2TXyveTxfrQLp_NhHqWPVPOfTUlh2hg", "doc_id": "1X12okCdAfq_R2TXyveTxfrQLp_NhHqWPVPOfTUlh2hg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png deleted file mode 100644 index 312324b..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw deleted file mode 100644 index 19d81ec..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1nTAvEfU3KVqLa1JmBUi7KcxnLbbw0yVDKBPC0Rx9z28", "doc_id": "1nTAvEfU3KVqLa1JmBUi7KcxnLbbw0yVDKBPC0Rx9z28", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw deleted file mode 100644 index 164dae9..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1mue7XJOvSrllEjI7ak7fO-bQd9gkQx_RYDdhg6l0G8s", "doc_id": "1mue7XJOvSrllEjI7ak7fO-bQd9gkQx_RYDdhg6l0G8s", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png deleted file mode 100644 index 021054f..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw deleted file mode 100644 index 3a22a0d..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1r4hJrexKhPutrTv8XfgwfoY-_-7gPMcTSUZmh5dFuiU", "doc_id": "1r4hJrexKhPutrTv8XfgwfoY-_-7gPMcTSUZmh5dFuiU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png deleted file mode 100644 index dbbaddf..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw deleted file mode 100644 index 9f31c58..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ao6LEQRJavWrctHFhfEFXiIW_qdeh-pnPmr7NQIlTls", "doc_id": "1ao6LEQRJavWrctHFhfEFXiIW_qdeh-pnPmr7NQIlTls", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png deleted file mode 100644 index 0e2476c..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw deleted file mode 100644 index 6bd2fd8..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1sSX241hZD-NH65e23zKxH2OAxuaThAyuCTWjk-M7_N4", "doc_id": "1sSX241hZD-NH65e23zKxH2OAxuaThAyuCTWjk-M7_N4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png deleted file mode 100644 index b2ab977..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw deleted file mode 100644 index 4280f1d..0000000 --- a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wR9eztcTaIhkGoQLg3yKOIuUX8qhbDjfumL6fvFh9eI", "doc_id": "1wR9eztcTaIhkGoQLg3yKOIuUX8qhbDjfumL6fvFh9eI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png b/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png deleted file mode 100644 index 0df3762..0000000 Binary files a/docs/generated-html/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/force-atlas-result.png b/docs/generated-html/en/book/images/force-atlas-result.png deleted file mode 100644 index 08d46c0..0000000 Binary files a/docs/generated-html/en/book/images/force-atlas-result.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/gephi-logo-2010-transparent.png b/docs/generated-html/en/book/images/gephi-logo-2010-transparent.png deleted file mode 100644 index 5c2d4a6..0000000 Binary files a/docs/generated-html/en/book/images/gephi-logo-2010-transparent.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/gephi-welcome-screen_data.xml b/docs/generated-html/en/book/images/gephi-welcome-screen_data.xml deleted file mode 100644 index 6b76f09..0000000 --- a/docs/generated-html/en/book/images/gephi-welcome-screen_data.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-html/en/book/images/google-scholar-gephi.png b/docs/generated-html/en/book/images/google-scholar-gephi.png deleted file mode 100644 index 432eff4..0000000 Binary files a/docs/generated-html/en/book/images/google-scholar-gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/google-trends-gephi.png b/docs/generated-html/en/book/images/google-trends-gephi.png deleted file mode 100644 index a7836ce..0000000 Binary files a/docs/generated-html/en/book/images/google-trends-gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/import-spreadsheet-1-en.gdraw b/docs/generated-html/en/book/images/import-spreadsheet-1-en.gdraw deleted file mode 100644 index 858497a..0000000 --- a/docs/generated-html/en/book/images/import-spreadsheet-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1FGuqhywL51sIIxNV4iHuonJHEOA9EWAUh0ho--PSgA4", "doc_id": "1FGuqhywL51sIIxNV4iHuonJHEOA9EWAUh0ho--PSgA4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/import-spreadsheet-2-en.gdraw b/docs/generated-html/en/book/images/import-spreadsheet-2-en.gdraw deleted file mode 100644 index 93dcee0..0000000 --- a/docs/generated-html/en/book/images/import-spreadsheet-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1VqtQQWOhOT5njRJ495kCjG5Iq-F-6BHzEsiRqwMoMek", "doc_id": "1VqtQQWOhOT5njRJ495kCjG5Iq-F-6BHzEsiRqwMoMek", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/initial-team-credits.txt b/docs/generated-html/en/book/images/initial-team-credits.txt deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/images/initial-team.png b/docs/generated-html/en/book/images/initial-team.png deleted file mode 100644 index fc87dcc..0000000 Binary files a/docs/generated-html/en/book/images/initial-team.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/inner-links-excluded.png b/docs/generated-html/en/book/images/inner-links-excluded.png deleted file mode 100644 index ca1d2f9..0000000 Binary files a/docs/generated-html/en/book/images/inner-links-excluded.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/inner-links-included.png b/docs/generated-html/en/book/images/inner-links-included.png deleted file mode 100644 index 261eb2f..0000000 Binary files a/docs/generated-html/en/book/images/inner-links-included.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/label-size-adjust-detail-1.png b/docs/generated-html/en/book/images/label-size-adjust-detail-1.png deleted file mode 100644 index b711662..0000000 Binary files a/docs/generated-html/en/book/images/label-size-adjust-detail-1.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/label-size-adjust.png b/docs/generated-html/en/book/images/label-size-adjust.png deleted file mode 100644 index 51c8b1d..0000000 Binary files a/docs/generated-html/en/book/images/label-size-adjust.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/levallois.jpg b/docs/generated-html/en/book/images/levallois.jpg deleted file mode 100644 index 51b1d8b..0000000 Binary files a/docs/generated-html/en/book/images/levallois.jpg and /dev/null differ diff --git a/docs/generated-html/en/book/images/matthieu-jacomy.jpg b/docs/generated-html/en/book/images/matthieu-jacomy.jpg deleted file mode 100644 index 1d70590..0000000 Binary files a/docs/generated-html/en/book/images/matthieu-jacomy.jpg and /dev/null differ diff --git a/docs/generated-html/en/book/images/miserables-edge-list-en.png b/docs/generated-html/en/book/images/miserables-edge-list-en.png deleted file mode 100644 index 591e73e..0000000 Binary files a/docs/generated-html/en/book/images/miserables-edge-list-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/miserables-preview-result-en.png b/docs/generated-html/en/book/images/miserables-preview-result-en.png deleted file mode 100644 index c2853b1..0000000 Binary files a/docs/generated-html/en/book/images/miserables-preview-result-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/miserables-preview-result.gdraw b/docs/generated-html/en/book/images/miserables-preview-result.gdraw deleted file mode 100644 index de94c93..0000000 --- a/docs/generated-html/en/book/images/miserables-preview-result.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1UyOVQD_HpEjHN-k81v4U4hkYo5WQU1GKoG3Husn6L00", "doc_id": "1UyOVQD_HpEjHN-k81v4U4hkYo5WQU1GKoG3Husn6L00", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/moving-timeline-miserables-1-en.gif b/docs/generated-html/en/book/images/moving-timeline-miserables-1-en.gif deleted file mode 100644 index 85dec23..0000000 Binary files a/docs/generated-html/en/book/images/moving-timeline-miserables-1-en.gif and /dev/null differ diff --git a/docs/generated-html/en/book/images/moving-timeline-miserables-2-en.png b/docs/generated-html/en/book/images/moving-timeline-miserables-2-en.png deleted file mode 100644 index 4a50fa0..0000000 Binary files a/docs/generated-html/en/book/images/moving-timeline-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/network-formats-gephi-import-en.png b/docs/generated-html/en/book/images/network-formats-gephi-import-en.png deleted file mode 100644 index 51813ad..0000000 Binary files a/docs/generated-html/en/book/images/network-formats-gephi-import-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/no-title.png b/docs/generated-html/en/book/images/no-title.png deleted file mode 100644 index 4afdb58..0000000 Binary files a/docs/generated-html/en/book/images/no-title.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/opening-CompatibilityEngine.java.png b/docs/generated-html/en/book/images/opening-CompatibilityEngine.java.png deleted file mode 100644 index f8d51e5..0000000 Binary files a/docs/generated-html/en/book/images/opening-CompatibilityEngine.java.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/product-to-product.png b/docs/generated-html/en/book/images/product-to-product.png deleted file mode 100644 index 948ee4a..0000000 Binary files a/docs/generated-html/en/book/images/product-to-product.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/project-initial-view-1-3-en.png b/docs/generated-html/en/book/images/project-initial-view-1-3-en.png deleted file mode 100644 index 7bc5cfa..0000000 Binary files a/docs/generated-html/en/book/images/project-initial-view-1-3-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/project-initial-view-4-5-en.png b/docs/generated-html/en/book/images/project-initial-view-4-5-en.png deleted file mode 100644 index 1ceafef..0000000 Binary files a/docs/generated-html/en/book/images/project-initial-view-4-5-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/project-initial-view-6-7-en.png b/docs/generated-html/en/book/images/project-initial-view-6-7-en.png deleted file mode 100644 index 07be9d7..0000000 Binary files a/docs/generated-html/en/book/images/project-initial-view-6-7-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/project-initial-view-8-10-en.png b/docs/generated-html/en/book/images/project-initial-view-8-10-en.png deleted file mode 100644 index 4afdb58..0000000 Binary files a/docs/generated-html/en/book/images/project-initial-view-8-10-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/ranking-centrality-miserables-1-en.png b/docs/generated-html/en/book/images/ranking-centrality-miserables-1-en.png deleted file mode 100644 index 7c0a6e0..0000000 Binary files a/docs/generated-html/en/book/images/ranking-centrality-miserables-1-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/ranking-centrality-miserables-3--en.png b/docs/generated-html/en/book/images/ranking-centrality-miserables-3--en.png deleted file mode 100644 index cf5353a..0000000 Binary files a/docs/generated-html/en/book/images/ranking-centrality-miserables-3--en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/result-label-resizing-en.png b/docs/generated-html/en/book/images/result-label-resizing-en.png deleted file mode 100644 index 8ac726f..0000000 Binary files a/docs/generated-html/en/book/images/result-label-resizing-en.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/result-of-Force-Atlas-2-layout.png b/docs/generated-html/en/book/images/result-of-Force-Atlas-2-layout.png deleted file mode 100644 index 60aac7c..0000000 Binary files a/docs/generated-html/en/book/images/result-of-Force-Atlas-2-layout.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/result_miserables.png b/docs/generated-html/en/book/images/result_miserables.png deleted file mode 100644 index b277856..0000000 Binary files a/docs/generated-html/en/book/images/result_miserables.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/result_miserables_2.png b/docs/generated-html/en/book/images/result_miserables_2.png deleted file mode 100644 index 38b29d4..0000000 Binary files a/docs/generated-html/en/book/images/result_miserables_2.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/screenshot-from-overview-1.gdraw b/docs/generated-html/en/book/images/screenshot-from-overview-1.gdraw deleted file mode 100644 index f22313b..0000000 --- a/docs/generated-html/en/book/images/screenshot-from-overview-1.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1fbb-x6rIcF3XEWDdgXD19HAOk184tbKa9uK6QD-cHCA", "doc_id": "1fbb-x6rIcF3XEWDdgXD19HAOk184tbKa9uK6QD-cHCA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/screenshot-from-overview-1.png b/docs/generated-html/en/book/images/screenshot-from-overview-1.png deleted file mode 100644 index 22be0a9..0000000 Binary files a/docs/generated-html/en/book/images/screenshot-from-overview-1.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/screenshot-from-overview-2.png b/docs/generated-html/en/book/images/screenshot-from-overview-2.png deleted file mode 100644 index ba3ac45..0000000 Binary files a/docs/generated-html/en/book/images/screenshot-from-overview-2.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/select-force-atlas2-en.gdraw b/docs/generated-html/en/book/images/select-force-atlas2-en.gdraw deleted file mode 100644 index 5c45715..0000000 --- a/docs/generated-html/en/book/images/select-force-atlas2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1JvEDiEK6UtNkNVM7hJ8HGnAgq0rhPAbSb_lYKfp4OZA", "doc_id": "1JvEDiEK6UtNkNVM7hJ8HGnAgq0rhPAbSb_lYKfp4OZA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/selecting-the-force-atlas-2-layout.png b/docs/generated-html/en/book/images/selecting-the-force-atlas-2-layout.png deleted file mode 100644 index 8dab3ec..0000000 Binary files a/docs/generated-html/en/book/images/selecting-the-force-atlas-2-layout.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/showing-labels-detail-2.png b/docs/generated-html/en/book/images/showing-labels-detail-2.png deleted file mode 100644 index 4b022b3..0000000 Binary files a/docs/generated-html/en/book/images/showing-labels-detail-2.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/showing-labels-detail.png b/docs/generated-html/en/book/images/showing-labels-detail.png deleted file mode 100644 index d9cf7bf..0000000 Binary files a/docs/generated-html/en/book/images/showing-labels-detail.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/showing-labels.gdraw b/docs/generated-html/en/book/images/showing-labels.gdraw deleted file mode 100644 index 66981de..0000000 --- a/docs/generated-html/en/book/images/showing-labels.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=16EXMQcAWjXks1KQcT94f5iyfzB4a16slycY200Ceqks", "doc_id": "16EXMQcAWjXks1KQcT94f5iyfzB4a16slycY200Ceqks", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-html/en/book/images/showing-labels.png b/docs/generated-html/en/book/images/showing-labels.png deleted file mode 100644 index 13ea835..0000000 Binary files a/docs/generated-html/en/book/images/showing-labels.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/showing-node-labels.png b/docs/generated-html/en/book/images/showing-node-labels.png deleted file mode 100644 index 516c63e..0000000 Binary files a/docs/generated-html/en/book/images/showing-node-labels.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/terminology-for-networks.png b/docs/generated-html/en/book/images/terminology-for-networks.png deleted file mode 100644 index 8f52e17..0000000 Binary files a/docs/generated-html/en/book/images/terminology-for-networks.png and /dev/null differ diff --git a/docs/generated-html/en/book/images/the-3-main-screens-in-Gephi.png b/docs/generated-html/en/book/images/the-3-main-screens-in-Gephi.png deleted file mode 100644 index da8b9a9..0000000 Binary files a/docs/generated-html/en/book/images/the-3-main-screens-in-Gephi.png and /dev/null differ diff --git a/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network A.gexf b/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network A.gexf deleted file mode 100644 index aaa320c..0000000 --- a/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network A.gexf +++ /dev/null @@ -1,37 +0,0 @@ - - - - Gephi 0.9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network B.gexf b/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network B.gexf deleted file mode 100644 index d272a21..0000000 --- a/docs/generated-html/en/book/resources/creating-a-simple-dynamic-network/network B.gexf +++ /dev/null @@ -1,39 +0,0 @@ - - - - Gephi 0.9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-html/en/book/resources/import-tutorial/edges.txt b/docs/generated-html/en/book/resources/import-tutorial/edges.txt deleted file mode 100644 index 87c42ef..0000000 --- a/docs/generated-html/en/book/resources/import-tutorial/edges.txt +++ /dev/null @@ -1,2 +0,0 @@ -Source,Target,Weight,Type,Where first met -1,45,3,"undirected",London diff --git a/docs/generated-html/en/book/resources/import-tutorial/edges_alone.txt b/docs/generated-html/en/book/resources/import-tutorial/edges_alone.txt deleted file mode 100644 index 62f0f4a..0000000 --- a/docs/generated-html/en/book/resources/import-tutorial/edges_alone.txt +++ /dev/null @@ -1,3 +0,0 @@ -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" \ No newline at end of file diff --git a/docs/generated-html/en/book/resources/import-tutorial/nodes.txt b/docs/generated-html/en/book/resources/import-tutorial/nodes.txt deleted file mode 100644 index 987a264..0000000 --- a/docs/generated-html/en/book/resources/import-tutorial/nodes.txt +++ /dev/null @@ -1,4 +0,0 @@ -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 diff --git a/docs/generated-html/en/book/resources/k-partite-bi-partite.zip b/docs/generated-html/en/book/resources/k-partite-bi-partite.zip deleted file mode 100644 index ed58702..0000000 Binary files a/docs/generated-html/en/book/resources/k-partite-bi-partite.zip and /dev/null differ diff --git a/docs/generated-html/en/book/resources/miserables-nodes.csv b/docs/generated-html/en/book/resources/miserables-nodes.csv deleted file mode 100644 index 094c23a..0000000 --- a/docs/generated-html/en/book/resources/miserables-nodes.csv +++ /dev/null @@ -1,75 +0,0 @@ -id;label;timeset;gender;eccentricity;betweenesscentrality;harmonicclosnesscentrality;closnesscentrality;modularity_class;start date;end date;peak moment -0;Myriel;;M;4.0;483.0;0.4988584474885843;0.437125748502994;0;01/01/1818;01/01/1823;44013 -1;Napoleon;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;18/10/1818;18/10/1824;44671 -2;MlleBaptistine;;F;4.0;0.0;0.4509132420091321;0.41954022988505746;0;14/07/1822;14/07/1827;45671 -3;MmeMagloire;;F;4.0;0.0;0.4509132420091321;0.41954022988505746;0;04/05/1826;04/05/1831;47061 -4;CountessDeLo;;F;5.0;0.0;0.3280821917808218;0.3054393305439331;0;28/02/1822;28/02/1827;45532 -5;Geborand;;F;5.0;0.0;0.3280821917808218;0.3054393305439331;0;01/01/1827;01/01/1832;47300 -6;Champtercier;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;14/03/1818;14/03/1825;44818 -7;Cravatte;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;13/01/1824;13/01/1829;46216 -8;Count;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;12/12/1818;12/12/1825;45089 -9;OldMan;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;07/07/1822;07/07/1827;45664 -25;Thenardier,Jondrette;;M;3.0;196.859155120765;0.58675799086758;0.5214285714285715;1;03/03/1828;03/03/1833;47729 -24;MmeThenardier;;F;3.0;81.01165528657789;0.5273972602739725;0.46794871794871795;1;02/11/1831;02/11/1836;12541 -41;Eponine;;F;4.0;33.628408253253454;0.47716894977168955;0.4010989010989011;1;17/09/1830;17/09/1835;12130 -70;Claquesous;;M;3.0;13.856141957457748;0.5182648401826484;0.4620253164556962;1;01/06/1834;01/06/1839;13485 -68;Gueulemer;;M;3.0;12.951380052695843;0.5228310502283104;0.46794871794871795;1;12/12/1830;12/12/1835;12217 -69;Babet;;M;3.0;12.951380052695843;0.5228310502283104;0.46794871794871795;1;22/04/1835;22/04/1840;13810 -71;Montparnasse;;M;3.0;10.540415140415138;0.5136986301369864;0.4620253164556962;1;15/05/1829;15/05/1834;48167 -75;Brujon;;M;4.0;0.75;0.43721461187214605;0.3802083333333333;1;09/02/1832;09/02/1837;12640 -40;Boulatruelle;;M;4.0;0.0;0.3652968036529678;0.3443396226415094;1;18/08/1833;18/08/1838;13200 -42;Anzelma;;F;4.0;0.0;0.3869863013698628;0.35436893203883496;1;16/08/1830;16/08/1835;12101 -11;Valjean;;M;3.0;1532.1511417031543;0.7442922374429224;0.6576576576576577;2;04/04/1833;04/04/1838;13061 -55;Marius;;M;3.0;331.39179892175224;0.6027397260273972;0.5328467153284672;2;06/11/1835;06/11/1840;14006 -27;Javert;;M;3.0;141.49811964781006;0.591324200913242;0.5214285714285715;2;18/07/1837;18/07/1842;14628 -51;MlleGillenormand;;F;3.0;90.50238095238093;0.4840182648401827;0.44242424242424244;2;18/07/1836;18/07/1841;14263 -28;Fauchelevent;;M;4.0;72.5;0.44406392694063895;0.40782122905027934;2;02/01/1838;02/01/1843;14794 -54;LtGillenormand;;M;3.0;47.30106516290728;0.4840182648401828;0.44242424242424244;2;18/11/1839;18/11/1844;15480 -26;Cosette;;F;3.0;47.18836996336997;0.5342465753424659;0.48344370860927155;2;30/11/1833;30/11/1838;13300 -31;Simplice;;F;4.0;23.491507512095748;0.4600456621004564;0.42441860465116277;2;30/03/1837;30/03/1842;14518 -29;Bamatabois;;M;4.0;22.91666666666667;0.48744292237442916;0.43452380952380953;2;22/02/1836;22/02/1841;14114 -50;Magnon;;F;4.0;0.6190476190476191;0.36529680365296785;0.33796296296296297;2;18/10/1839;18/10/1844;15450 -10;Labarre;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;10/10/1835;10/10/1840;13980 -13;MmeDeR;;F;4.0;0.0;0.42123287671232845;0.3989071038251366;2;25/01/1835;25/01/1840;13721 -14;Isabeau;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;26/06/1839;26/06/1844;15336 -15;Gervais;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;25/08/1839;25/08/1844;15397 -30;Perpetue;;F;5.0;0.0;0.3543378995433788;0.3230088495575221;2;13/10/1840;13/10/1845;15809 -32;Scaufflaire;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;27/04/1837;27/04/1842;14545 -33;Woman1;;F;4.0;0.0;0.42808219178082163;0.4010989010989011;2;07/07/1836;07/07/1841;14252 -34;Judge;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;15/03/1839;15/03/1844;15234 -35;Champmathieu;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;18/09/1840;18/09/1845;15785 -36;Brevet;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;21/12/1839;21/12/1844;15513 -37;Chenildieu;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;31/07/1837;31/07/1842;14641 -38;Cochepaille;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;30/08/1838;30/08/1843;15037 -43;Woman2;;F;4.0;0.0;0.43721461187214583;0.40555555555555556;2;16/05/1836;16/05/1841;14200 -44;MotherInnocent;;F;4.0;0.0;0.4303652968036527;0.40331491712707185;2;29/03/1841;29/03/1846;15978 -45;Gribier;;M;5.0;0.0;0.30753424657534234;0.2908366533864542;2;01/07/1836;01/07/1841;14246 -52;MmePontmercy;;F;4.0;0.0;0.3801369863013698;0.3526570048309179;2;01/09/1836;01/09/1841;14305 -53;MlleVaubois;;F;4.0;0.0;0.3253424657534245;0.3080168776371308;2;05/08/1837;05/08/1842;14646 -56;BaronessT;;F;4.0;0.0;0.3801369863013697;0.3526570048309179;2;18/11/1840;18/11/1845;15844 -72;Toussaint;;M;4.0;0.0;0.43721461187214583;0.40555555555555556;2;18/12/1841;18/12/1846;16242 -48;Gavroche;;M;3.0;351.58888588191985;0.6118721461187215;0.5177304964539007;3;12/09/1845;12/09/1850;17604 -58;Enjolras;;M;3.0;120.41734472098251;0.5593607305936072;0.4866666666666667;3;14/03/1838;14/03/1843;14868 -64;Bossuet;;M;3.0;86.79532364780039;0.5456621004566209;0.48026315789473684;3;17/06/1840;17/06/1845;15692 -57;Mabeuf;;M;4.0;75.5845238095238;0.47374429223744285;0.3967391304347826;3;28/09/1843;28/09/1848;16889 -62;Courfeyrac;;M;4.0;14.070955798587379;0.48744292237442916;0.4010989010989011;3;23/01/1842;23/01/1847;16276 -63;Bahorel;;M;4.0;5.538562314878104;0.476027397260274;0.3945945945945946;3;08/08/1840;08/08/1845;15745 -65;Joly;;M;4.0;5.538562314878104;0.476027397260274;0.3945945945945946;3;22/04/1844;22/04/1849;17097 -59;Combeferre;;M;4.0;3.1406926406926403;0.4691780821917808;0.3924731182795699;3;18/02/1844;18/02/1849;17032 -61;Feuilly;;M;4.0;3.1406926406926403;0.4691780821917808;0.3924731182795699;3;22/04/1843;22/04/1848;16732 -66;Grantaire;;M;4.0;0.42857142857142855;0.4372146118721461;0.3613861386138614;3;07/06/1841;07/06/1846;16047 -47;MmeBurgon;;F;4.0;0.0;0.4029680365296803;0.37055837563451777;3;06/12/1846;06/12/1851;18055 -60;Prouvaire;;M;4.0;0.0;0.430365296803653;0.35960591133004927;3;04/04/1845;04/04/1850;17444 -67;MotherPlutarch;;F;5.0;0.0;0.31347031963470307;0.28515625;3;18/09/1842;18/09/1847;16516 -73;Child1;;M;4.0;0.0;0.37785388127853886;0.3443396226415094;3;07/11/1840;07/11/1845;15833 -74;Child2;;M;4.0;0.0;0.37785388127853886;0.3443396226415094;3;07/03/1844;07/03/1849;17052 -76;MmeHucheloup;;F;4.0;0.0;0.4166666666666667;0.35609756097560974;3;09/10/1846;09/10/1851;17997 -23;Fantine;;F;4.0;359.37027514968696;0.5490867579908677;0.47096774193548385;4;30/10/1850;30/10/1855;19479 -16;Tholomyes;;M;4.0;106.27697563874035;0.46118721461187184;0.3945945945945946;4;31/01/1848;31/01/1853;18475 -12;Marguerite;;F;4.0;0.0;0.4463470319634701;0.41954022988505746;4;26/12/1847;26/12/1852;18440 -17;Listolier;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;23/07/1849;23/07/1854;19016 -18;Fameuil;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;04/03/1848;04/03/1853;18510 -19;Blacheville;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;13/05/1845;13/05/1850;17484 -20;Favourite;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;13/04/1848;13/04/1853;18549 -21;Dahlia;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;31/08/1850;31/08/1855;19421 -22;Zephine;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;09/01/1845;09/01/1850;17357 diff --git a/docs/generated-html/en/book/resources/miserables-nodes.xlsx b/docs/generated-html/en/book/resources/miserables-nodes.xlsx deleted file mode 100644 index 7ed1679..0000000 Binary files a/docs/generated-html/en/book/resources/miserables-nodes.xlsx and /dev/null differ diff --git a/docs/generated-html/en/book/resources/miserables-with-dates.gexf b/docs/generated-html/en/book/resources/miserables-with-dates.gexf deleted file mode 100644 index 2ab19d7..0000000 --- a/docs/generated-html/en/book/resources/miserables-with-dates.gexf +++ /dev/null @@ -1,1466 +0,0 @@ - - - - Gephi 0.9 - - - - - - - 0.0 - - - 0.0 - - - 0.0 - - - 0.0 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-html/en/book/resources/miserables-with-dates.zip b/docs/generated-html/en/book/resources/miserables-with-dates.zip deleted file mode 100644 index 5b8ecc0..0000000 Binary files a/docs/generated-html/en/book/resources/miserables-with-dates.zip and /dev/null differ diff --git a/docs/generated-html/en/book/resources/miserables.gexf b/docs/generated-html/en/book/resources/miserables.gexf deleted file mode 100644 index 663d209..0000000 --- a/docs/generated-html/en/book/resources/miserables.gexf +++ /dev/null @@ -1,1352 +0,0 @@ - - - - Gephi, Knuth 1993, Clement Levallois - A network of the characters from the Les Miserables novel by Victor Hugo (Knuth 1993). Modified by Clement Levallois to add the "gender" attribute. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-html/en/book/resources/miserables.zip b/docs/generated-html/en/book/resources/miserables.zip deleted file mode 100644 index e402bda..0000000 Binary files a/docs/generated-html/en/book/resources/miserables.zip and /dev/null differ diff --git a/docs/generated-html/en/book/resources/miserables_result.gexf b/docs/generated-html/en/book/resources/miserables_result.gexf deleted file mode 100644 index 6b73a28..0000000 --- a/docs/generated-html/en/book/resources/miserables_result.gexf +++ /dev/null @@ -1,1164 +0,0 @@ - - - - Gephi 0.9 - - - - - - - 0.0 - - - 0.0 - - - 0.0 - - - 0.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-html/en/book/resources/miserables_result.zip b/docs/generated-html/en/book/resources/miserables_result.zip deleted file mode 100644 index e96fe54..0000000 Binary files a/docs/generated-html/en/book/resources/miserables_result.zip and /dev/null differ diff --git a/docs/generated-html/en/book/subdir/beginner-project-en_temp_common.md b/docs/generated-html/en/book/subdir/beginner-project-en_temp_common.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/subdir/beginner-project-en_temp_pdf.md b/docs/generated-html/en/book/subdir/beginner-project-en_temp_pdf.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/subdir/beginner-project-en_temp_slides.md b/docs/generated-html/en/book/subdir/beginner-project-en_temp_slides.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/subdir/book-gephi-tutorials-en_temp_common.md b/docs/generated-html/en/book/subdir/book-gephi-tutorials-en_temp_common.md deleted file mode 100644 index 5ea9102..0000000 --- a/docs/generated-html/en/book/subdir/book-gephi-tutorials-en_temp_common.md +++ /dev/null @@ -1,3177 +0,0 @@ -= Gephi: the documentation -Clément Levallois -2017-03-14 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -<<< - -= Chapter 2: What is Gephi? - -<<< -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. - -<<< - -= Chapter 3: History of Gephi - -<<< -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - -image::Gephi--cumulative-downloads.png[align="center", title="Gephi, cumulative downloads"] -{nbsp} + - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - -image::google-trends-gephi.png[align="center", title=""] -{nbsp} + - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + - -<<< - -= Chapter 4: Simple Gephi Project from A to Z - -<<< -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: - -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network - -//ST: ! - -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network - -//ST: ! - -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! - -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - - -<<< - -= Chapter 5: Using filters - -<<< -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - - -<<< - -= Chapter 6: Importing data in Gephi - -<<< -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - - -<<< - -= Chapter 7: Working with text in Gephi - -<<< -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - - -<<< - -= Chapter 8: Creating a network from a table of cooccurring items - -<<< -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-and-restart-Gephi.png[align="center", title="Install the plugin and restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - - -<<< - -= Chapter 9: K-partite and Bipartite Graph (Multimode Networks Transformations) - -<<< -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and: - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - - -<<< - -= Chapter 10: Semantic Web Importer - -<<< -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html[Cecill-C] - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: - -[source,SQL] ----- -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} ----- - -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - - -<<< - -= Chapter 11: Creating a network from a table of entities and their attributes - -<<< -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - - -<<< - -= Chapter 12: Twitter Streaming Importer - -<<< -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - - -<<< - -= Chapter 13: Working from Gephi's source - -<<< -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - - -<<< - -= Chapter 14: Converting a network with dates into a dynamic network - -<<< -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -<<< - -= Chapter 15: Creating a simple dynamic network - -<<< -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] diff --git a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md b/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md deleted file mode 100644 index 0cc91da..0000000 --- a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md +++ /dev/null @@ -1,173 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md b/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md deleted file mode 100644 index debd3b5..0000000 --- a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md +++ /dev/null @@ -1,190 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md b/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md deleted file mode 100644 index 81e25de..0000000 --- a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md +++ /dev/null @@ -1,173 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - - -{nbsp} + - -image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -{github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md b/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md deleted file mode 100644 index 0f1eae8..0000000 --- a/docs/generated-html/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md +++ /dev/null @@ -1,192 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial - -== ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice - -== ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -== ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -== ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -== ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== ! -[.stretch] -image::result_miserables.png[align="center",title="The network we will use"] - - -== getting a sense of the attributes in the data laboratory - -== ! -We can switch to the data laboratory to see the underlying data: - -[.stretch] -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] - - - -== ! - -[.stretch] -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] - - - -== ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -== ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -== ! -==== 1. dynamic nodes with a start date - -== ! - -[.stretch] -image::Merge-columns.png[align="center",title="Merge columns"] - - -== ! - -[.stretch] -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] - - -== ! - -[.stretch] -image::Result.png[align="center",title="Result"] - - - -== ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -== ! - -[.stretch] -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] - - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued - - -== more tutorials on dynamic networks with Gephi - -== ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_common.md b/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_common.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_common.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_html.md b/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_html.md deleted file mode 100644 index 39a4ee3..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_html.md +++ /dev/null @@ -1,275 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_pdf.md b/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_pdf.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_pdf.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_slides.md b/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_slides.md deleted file mode 100644 index a4aa87b..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer-en_temp_slides.md +++ /dev/null @@ -1,283 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -== ! -==== 1. The input -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== 2nd panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] - - -== ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -== ! -==== 3rd panel -== ! - -[.stretch] -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] - - -== ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -== ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -== ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -== ! -==== 4th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] - - -== ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -[.stretch] -image::commas-shown-in-red.png[align="center", title="commas shown in red"] - - - -== ! -==== 5th panel -== ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -== ! -==== 6th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] - - -== ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -== ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -== ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -== ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -== ! -==== 7th panel -== ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_common.md b/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_common.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_common.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_html.md b/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_html.md deleted file mode 100644 index 39a4ee3..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_html.md +++ /dev/null @@ -1,275 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_pdf.md b/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_pdf.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_pdf.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_slides.md b/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_slides.md deleted file mode 100644 index a4aa87b..0000000 --- a/docs/generated-html/en/book/subdir/cooccurrences-computer_temp_slides.md +++ /dev/null @@ -1,283 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -== ! -==== 1. The input -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== 2nd panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] - - -== ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -== ! -==== 3rd panel -== ! - -[.stretch] -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] - - -== ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -== ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -== ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -== ! -==== 4th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] - - -== ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -[.stretch] -image::commas-shown-in-red.png[align="center", title="commas shown in red"] - - - -== ! -==== 5th panel -== ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -== ! -==== 6th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] - - -== ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -== ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -== ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -== ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -== ! -==== 7th panel -== ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md b/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md deleted file mode 100644 index ce84d14..0000000 --- a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md +++ /dev/null @@ -1,211 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md b/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md deleted file mode 100644 index dfd5f77..0000000 --- a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md +++ /dev/null @@ -1,228 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md b/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md deleted file mode 100644 index ce84d14..0000000 --- a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md +++ /dev/null @@ -1,211 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md b/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md deleted file mode 100644 index df4ed7e..0000000 --- a/docs/generated-html/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md +++ /dev/null @@ -1,232 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial - -== ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -== ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -[.stretch] -image::Open-a-new-project.png[align="center", title="Open a new project"] - - -== creating network "A" - -== ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -[.stretch] -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] - - -== ! - -[.stretch] -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] - - -== ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -== ! - -[.stretch] -image::Exporting-the-network.png[align="center", title="Exporting the network"] - - -== ! - -[.stretch] -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] - - -== ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" - -== ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -== ! - -[.stretch] -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] - - -Create one edge, or a couple of edges, in this way. - -== ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf - -== ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -== ! -[.stretch] -image::The-network-file-opened.png[align="center", title="The network file opened"] - - -== ! -Delete and replace this line by this one: - -== ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -== ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network - -== ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -== ! - -[.stretch] -image::Closing-the-current-project.png[align="center", title="Closing the current project"] - - -== ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -[.stretch] -image::Opening-files.png[align="center", title="Opening files"] - - -== ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -[.stretch] -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] - - -== ! -Opening the files display a report window: - -[.stretch] -image::Import-report-window.png[align="center", title="Import report window"] - - - -== enabling the timeline - -== ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -[.stretch] -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] - - -== ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -[.stretch] -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] - - -== ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi - -== ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_common.md b/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_common.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_html.md b/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_html.md deleted file mode 100644 index 289229b..0000000 --- a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_html.md +++ /dev/null @@ -1,17 +0,0 @@ -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_pdf.md b/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_pdf.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_slides.md b/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_slides.md deleted file mode 100644 index 289229b..0000000 --- a/docs/generated-html/en/book/subdir/gephi-for-developers-en_temp_slides.md +++ /dev/null @@ -1,17 +0,0 @@ -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/history-en_temp_common.md b/docs/generated-html/en/book/subdir/history-en_temp_common.md deleted file mode 100644 index 0f3cd81..0000000 --- a/docs/generated-html/en/book/subdir/history-en_temp_common.md +++ /dev/null @@ -1,76 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + diff --git a/docs/generated-html/en/book/subdir/history-en_temp_html.md b/docs/generated-html/en/book/subdir/history-en_temp_html.md deleted file mode 100644 index 0a86abd..0000000 --- a/docs/generated-html/en/book/subdir/history-en_temp_html.md +++ /dev/null @@ -1,93 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/history-en_temp_pdf.md b/docs/generated-html/en/book/subdir/history-en_temp_pdf.md deleted file mode 100644 index 4ab0872..0000000 --- a/docs/generated-html/en/book/subdir/history-en_temp_pdf.md +++ /dev/null @@ -1,78 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - - -image::Gephi--cumulative-downloads.png[align="center", title="Gephi, cumulative downloads"] -{nbsp} + - -//ST: General interest for Gephi and related software over 2004 - 2016 - - -image::google-trends-gephi.png[align="center", title=""] -{nbsp} + - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + diff --git a/docs/generated-html/en/book/subdir/history-en_temp_slides.md b/docs/generated-html/en/book/subdir/history-en_temp_slides.md deleted file mode 100644 index b257c8f..0000000 --- a/docs/generated-html/en/book/subdir/history-en_temp_slides.md +++ /dev/null @@ -1,93 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -[.stretch] -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] - - -== ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -[.stretch] -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] - - - -== ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -== ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -== ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -== ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -== Cumulative downloads for Gephi - -pass:[] - - -== General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -== Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -[.stretch] -image::google-scholar-gephi.png[align="center", title=""] - -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_common.md b/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_common.md deleted file mode 100644 index c0cee86..0000000 --- a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_common.md +++ /dev/null @@ -1,2 +0,0 @@ -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] -{nbsp} + diff --git a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_html.md b/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_html.md deleted file mode 100644 index 84a849e..0000000 --- a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_html.md +++ /dev/null @@ -1,19 +0,0 @@ -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] -{nbsp} + -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_pdf.md b/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_pdf.md deleted file mode 100644 index 000b574..0000000 --- a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_pdf.md +++ /dev/null @@ -1,2 +0,0 @@ - -{nbsp} + diff --git a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_slides.md b/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_slides.md deleted file mode 100644 index cea8bac..0000000 --- a/docs/generated-html/en/book/subdir/how should Gephi be pronounced_temp_slides.md +++ /dev/null @@ -1,20 +0,0 @@ -[.stretch] -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] - -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md b/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md deleted file mode 100644 index 9804103..0000000 --- a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md +++ /dev/null @@ -1,243 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md b/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md deleted file mode 100644 index ea4650d..0000000 --- a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md +++ /dev/null @@ -1,260 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md b/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md deleted file mode 100644 index 9804103..0000000 --- a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md +++ /dev/null @@ -1,243 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md b/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md deleted file mode 100644 index 4401bfe..0000000 --- a/docs/generated-html/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md +++ /dev/null @@ -1,263 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file - -== ! -Gephi handles the import of network files in a variety of formats: - -[.stretch] -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - - -== ! -To import any of these files, just choose the `File -> Open` menu - - -== Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -== ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -== ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -[.stretch] -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - - -== ! -In this window, make sure the box "Create missing nodes" is checked: - -[.stretch] -image::Second-screen.png[align="center",title="Second screen"] - - -[[full-csv-version]] -== Importing nodes with labels and their relations: full version - -== ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -== ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -== ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -== ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -== ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -== ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -== ! -These extra " " will make the Gephi import break: - -[.stretch] -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - - -== ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -== ! -This time, Gephi imports the network correctly: - -[.stretch] -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - - -== Importing more than labels: nodes and edges attributes - -== ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -== ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -== ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -== ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -[.stretch] -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - - -== ! -in the next screen, we must be careful with a couple of things: - -[.stretch] -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - - -== ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -[.stretch] -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - - -== ! - -[.stretch] -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - - -== Memo card - -== ! -Nodes - -- header must be at least `Id,Label` - -== ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -== ! -Types of attributes: which to choose? - -[.stretch] -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - - -== ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) - - -== More tutorials on importing data to Gephi -== ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_common.md b/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_common.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_common.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_html.md b/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_html.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_html.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md b/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_slides.md b/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_slides.md deleted file mode 100644 index 1b17ae5..0000000 --- a/docs/generated-html/en/book/subdir/importing-data-in-gephi-en_temp_slides.md +++ /dev/null @@ -1,222 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -== 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file - -== ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -== ! -To import any of these files, just choose the `File -> Open` menu - - -== Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -== ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -== ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -== ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -== Importing nodes with labels and their relations: full version - -== ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -== ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -== ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -== ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -== ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -== ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -== ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -== ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -== ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes - -== ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -== ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -== ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -== ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -== ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -== ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -== ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card - -== ! -Nodes - -- header must be at least `Id,Label` - -== ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -== ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -== ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) - - -== More tutorials on importing data to Gephi -== ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md deleted file mode 100644 index a1d3645..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md +++ /dev/null @@ -1,247 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md deleted file mode 100644 index 139b862..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md +++ /dev/null @@ -1,264 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md deleted file mode 100644 index a1d3645..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md +++ /dev/null @@ -1,247 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md deleted file mode 100644 index 05b4b9d..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md +++ /dev/null @@ -1,262 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Author and documentation - -== ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -== ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - - -== K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -== ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -== ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -== ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -== ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -== ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - - -== The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -== ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -== ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -[.stretch] -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] - - - -== ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - - -== ! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -== ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -== ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -== ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - - -== Using a Plugin - -== ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -== ! - -[.stretch] -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] - - -== ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -== ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -== ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -== ! - -[.stretch] -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] - - - -== ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -== ! - -[.stretch] -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] - - - -== ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -== ! - -[.stretch] -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] - - -== ! - -[.stretch] -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] - - -== ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -== ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -== ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - - -== Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - - -== Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_common.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_common.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_common.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_html.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_html.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_html.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md b/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md deleted file mode 100644 index 3ff235d..0000000 --- a/docs/generated-html/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md +++ /dev/null @@ -1,209 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - - -== K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -== ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -== ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -== ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -== ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -== ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - - -== The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -== ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -== ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -== ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -== ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -== ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -== ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - - -== Using a Plugin - - -== ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -== ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -== ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -== ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -== ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -== ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -== ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -== ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -== ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -== ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -== ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -== ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -== ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -== ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - - -== Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - - -== Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_common.md b/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_common.md deleted file mode 100644 index d421e13..0000000 --- a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_common.md +++ /dev/null @@ -1,213 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_html.md b/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_html.md deleted file mode 100644 index 7167b56..0000000 --- a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_html.md +++ /dev/null @@ -1,230 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_pdf.md b/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_pdf.md deleted file mode 100644 index d421e13..0000000 --- a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_pdf.md +++ /dev/null @@ -1,213 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_slides.md b/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_slides.md deleted file mode 100644 index fe9108a..0000000 --- a/docs/generated-html/en/book/subdir/semantic-web-importer-en_temp_slides.md +++ /dev/null @@ -1,227 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Author and documentation - -== ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -== ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -== Introduction - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -== ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -== ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -== ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -== ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -== ! - -[.stretch] -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] - - -== ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -== ! - -Finally, click on *Run* - -== ! - -[.stretch] -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] - - -== ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -[.stretch] -image::en/semantic-web-importer/result_1.png[align="center", title"result"] - - -== Details - -== ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -== ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -== ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -== ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -== ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -== ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -== ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -== ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_common.md b/docs/generated-html/en/book/subdir/similarity-computer-en_temp_common.md deleted file mode 100644 index 7d0de4a..0000000 --- a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_common.md +++ /dev/null @@ -1,163 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_html.md b/docs/generated-html/en/book/subdir/similarity-computer-en_temp_html.md deleted file mode 100644 index d8e2bed..0000000 --- a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_html.md +++ /dev/null @@ -1,180 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_pdf.md b/docs/generated-html/en/book/subdir/similarity-computer-en_temp_pdf.md deleted file mode 100644 index 7d0de4a..0000000 --- a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_pdf.md +++ /dev/null @@ -1,163 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_slides.md b/docs/generated-html/en/book/subdir/similarity-computer-en_temp_slides.md deleted file mode 100644 index 9d9da0f..0000000 --- a/docs/generated-html/en/book/subdir/similarity-computer-en_temp_slides.md +++ /dev/null @@ -1,187 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -== ! -==== 1. The input -== ! - -[.stretch] -image::An-Excel-file.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/similarity-computer/result.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== First panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] - - -== ! -==== Second panel -== ! - -[.stretch] -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] - - -== ! -==== Third panel -== ! - -[.stretch] -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] - - -== How is the similarity computed, exactly? -== ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -== ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -== ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -[.stretch] -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] - - -== ! - -==== 3. You can't use numerical values in the attributes - -[.stretch] -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] - - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -== ! - -==== 4. Each entity should appear only on one line - -[.stretch] -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] - - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md b/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md deleted file mode 100644 index c8aae23..0000000 --- a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md +++ /dev/null @@ -1,474 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. diff --git a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md b/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md deleted file mode 100644 index e642a93..0000000 --- a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md +++ /dev/null @@ -1,491 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md b/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md deleted file mode 100644 index c8aae23..0000000 --- a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md +++ /dev/null @@ -1,474 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. diff --git a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md b/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md deleted file mode 100644 index 7e9e337..0000000 --- a/docs/generated-html/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md +++ /dev/null @@ -1,509 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - - -== Description of the project -== ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -== ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -== ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== terminology to discuss networks -== ! -[.stretch] -image::terminology-for-networks.png[align="center",title="terminology for networks"] - - - - -== download a network file -== ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -//open the network in Gephi -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - - -== ! - -[.stretch] -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] - - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - - -== ! - -[.stretch] -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] - - -== ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -== ! - -[.stretch] -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] - - -== ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -== ! -[.stretch] -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] - - - -== ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -== ! -[.stretch] -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] - - -== ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - - -== showing labels of the nodes - -== ! - -[.stretch] -image::showing-node-labels.png[align="center", title="showing node labels"] - - - - -== layout ("spatialize") the network - -== ! - -[.stretch] -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] - - -== ! - -[[force-atlas-2-parameters]] -[.stretch] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] - - - -== ! - -[.stretch] -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] - - - -== visualize the properties of the nodes - -== ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -== ! - -[.stretch] -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] - - -== ! - -[.stretch] -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] - - -== ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -[.stretch] -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] - - -== ! - -The result: - -[.stretch] -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] - - - -== prettify the network for enhanced readability -== ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -== ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -== ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -[.stretch] -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] - - -Don't forget to click on "Run" to apply these layouts. - -== ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -== ! -[.stretch] -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] - - -== ! -==== 4. Adjusting the thickness of the links - -[.stretch] -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] - - - -== Computing the centrality of the nodes -== ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -== ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -== ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -== ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -[.stretch] -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] - - -== ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -[.stretch] -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] - - - -== ! -A report window opens (also explained in a other tutorials). Close it. - -[.stretch] -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] - - -Now we can visualize this information. - - -== visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -== ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -[.stretch] -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] - - -== ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -[.stretch] -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] - - -== ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -[.stretch] -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] - - -== ! - -[.stretch] -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] - - -== ! - -[.stretch] -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] - - -== ! - -[.stretch] -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] - - -== ! -[.stretch] -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] - - - -== exporting a network as a picture - -== 1. exporting a screenshot from the Overview (a png image) - -== ! - -[.stretch] -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] - - -== ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -[.stretch] -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] - - -== 2. exporting a pdf or svg picture - -== ! -Let's switch to the preview panel: - -[.stretch] -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] - - -== ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -== ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -[.stretch] -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] - - -== ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -[.stretch] -image::Result-of-preview.png[align="center",title="Result of preview"] - - -== ! -Export: just click on the button and select the file format you prefer - -[.stretch] -image::Export-button.png[align="center",title="Export button"] - - -== donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - - -== questions and exercises - -== ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -== ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -== ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -== ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -== ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -== ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_common.md b/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_common.md deleted file mode 100644 index 00be60a..0000000 --- a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_common.md +++ /dev/null @@ -1,284 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_html.md b/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_html.md deleted file mode 100644 index 61e442c..0000000 --- a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_html.md +++ /dev/null @@ -1,301 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md b/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md deleted file mode 100644 index f2a84bd..0000000 --- a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md +++ /dev/null @@ -1,284 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! - -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_slides.md b/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_slides.md deleted file mode 100644 index 9ec5727..0000000 --- a/docs/generated-html/en/book/subdir/twitter-streaming-importer-en_temp_slides.md +++ /dev/null @@ -1,318 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -== Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - - -== Installing the plugin - -== ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -== ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - - -== Initializing the plugin (to be done just once) - -== Creating a Twitter account - -== ! - -[.stretch] -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] - - -== ! - -[.stretch] -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] - - -== ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -== ! - -[.stretch] -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] - - -== ! - -[.stretch] -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] - - -== ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -== ! - -[.stretch] -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] - - - -== ! - -[.stretch] -image::Choose-a-username.png[align="center", title="Choose a username"] - - -== ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -== ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -== ! - -[.stretch] -image::Create-a-new-app.png[align="center", title="Create a new app"] - - -== ! - -[.stretch] -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] - - -== ! - -INFO: Almost there!! - -== ! - -[.stretch] -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] - - -== ! - -[.stretch] -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] - - -== ! - -[.stretch] -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] - - -== ! - -[.stretch] -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] - - -== Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - - -== Using the plugin - -== ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -== ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -== ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -== ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -== ! - -==== Network Logic - -== ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -== The dropdown menu to choose the network logic: - -[.stretch] -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] - - -There are for the moment 3 Network Logics to choose from: - -== ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -== ! -In the following, we use the network logic "User Network": - -== ! - -[.stretch] -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] - - -== ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -== ! -[.stretch] -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] - - - -== Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -== ! - -[.stretch] -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] - - -== ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -[.stretch] -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] - - -== ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -== ! - -==== Timeline - -== ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -== ! - -[.stretch] -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] - - -== ! -[.stretch] -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] - - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/using-filters-en_temp_common.md b/docs/generated-html/en/book/subdir/using-filters-en_temp_common.md deleted file mode 100644 index 7dac59f..0000000 --- a/docs/generated-html/en/book/subdir/using-filters-en_temp_common.md +++ /dev/null @@ -1,438 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/using-filters-en_temp_html.md b/docs/generated-html/en/book/subdir/using-filters-en_temp_html.md deleted file mode 100644 index 7f24dd8..0000000 --- a/docs/generated-html/en/book/subdir/using-filters-en_temp_html.md +++ /dev/null @@ -1,455 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/using-filters-en_temp_pdf.md b/docs/generated-html/en/book/subdir/using-filters-en_temp_pdf.md deleted file mode 100644 index 1e54639..0000000 --- a/docs/generated-html/en/book/subdir/using-filters-en_temp_pdf.md +++ /dev/null @@ -1,438 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - - -{nbsp} + - -image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -{github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - - -{nbsp} + - -image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -{github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/using-filters-en_temp_slides.md b/docs/generated-html/en/book/subdir/using-filters-en_temp_slides.md deleted file mode 100644 index 8abea3c..0000000 --- a/docs/generated-html/en/book/subdir/using-filters-en_temp_slides.md +++ /dev/null @@ -1,477 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice - -== ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== ! -[.stretch] -image::result_miserables.png[align="center",title="The network we will use"] - - -== getting a sense of the attributes in the data laboratory - -== ! -We can switch to the data laboratory to see the underlying data: - -[.stretch] -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] - - - -== ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -[.stretch] -image::Nodes-attributes..png[align="center",title="Nodes attributes."] - - -== ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -[.stretch] -image::Edges-attributes..png[align="center",title="Edges attributes".] - - -== discovering the filter panel - -== ! -In the overview, make sure the Filter panel is displayed: - -[.stretch] -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] - - - -== ! -How the Filter panel works: - -[.stretch] -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] - - - -== ! -An example: hiding edges with weight lower than 2 - -[.stretch] -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] - - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -== ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters - -== ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -== ! -==== 1. Case when the placement of filters makes no difference - -== ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -== ! - -[.stretch] -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] - - -== ! - -[.stretch] -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] - - -== ! - -[.stretch] -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] - - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -== ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -== ! -==== 2. Case when the placement of filters makes a difference - -== ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -== ! - -[.stretch] -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] - - -== ! - -[.stretch] -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] - - -== ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -== ! - -[.stretch] -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] - - -== ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -== ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -[.stretch] -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] - - -== ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -== ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== Filter operators - -== ! -==== 1. The MASK operator - -== ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -== ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -== ! - -[.stretch] -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] - - -== ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -[.stretch] -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] - - -== ! -==== 2. The UNION operator - -== ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -== ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -== ! - -[.stretch] -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] - - - -== ! - -[.stretch] -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] - - -== ! -We now have an attribute called "Name" that we can find in the Filters: - -[.stretch] -image::New-filter-available.png[align="center",title="New filter available"] - - -== ! -This is how the filter on Name and its parameters look like in the zone: - -[.stretch] -image::en/filter-name-1-en.png[align="center",title="Name Filter"] - - -== ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -== ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -== ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -== ! -Please note that you need to check the box "regex": - -[.stretch] -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] - - -== ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -[.stretch] -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] - - -== ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -== ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -== ! -Instead, we should use the *`UNION`* operator that can be found here: - -[.stretch] -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] - - -== ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -[.stretch] -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] - - -== ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -== ! -As a result, the nodes selected by both filters are added up in the display: - -[.stretch] -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] - - -== ! -==== 3. The NOT operator - -== ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -== ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -[.stretch] -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] - - -== ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -[.stretch] -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] - - -== ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -[.stretch] -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] - - -== ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== More tutorials on using filters in Gephi - -== ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_common.md b/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_common.md deleted file mode 100644 index 0780cd8..0000000 --- a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_common.md +++ /dev/null @@ -1,70 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. diff --git a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_html.md b/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_html.md deleted file mode 100644 index 8f2c926..0000000 --- a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_html.md +++ /dev/null @@ -1,87 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_pdf.md b/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_pdf.md deleted file mode 100644 index 0780cd8..0000000 --- a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_pdf.md +++ /dev/null @@ -1,70 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. diff --git a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_slides.md b/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_slides.md deleted file mode 100644 index d7a7e63..0000000 --- a/docs/generated-html/en/book/subdir/what-is-gephi-en_temp_slides.md +++ /dev/null @@ -1,81 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - - -== open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - - -== "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - - -== committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - - -== modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - - -== created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_common.md b/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_common.md deleted file mode 100644 index 9cdfa48..0000000 --- a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_common.md +++ /dev/null @@ -1,241 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_html.md b/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_html.md deleted file mode 100644 index 16619c7..0000000 --- a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_html.md +++ /dev/null @@ -1,258 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_pdf.md b/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_pdf.md deleted file mode 100644 index 6652e45..0000000 --- a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_pdf.md +++ /dev/null @@ -1,241 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_slides.md b/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_slides.md deleted file mode 100644 index d87f608..0000000 --- a/docs/generated-html/en/book/subdir/working-from-the-source-en_temp_slides.md +++ /dev/null @@ -1,266 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial - -== ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -[.stretch] -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] - - -== ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -== ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -== ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -== ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code - -== ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -== ! - -[.stretch] -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] - - -== ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -== ! - -[.stretch] -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] - - -== ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -== ! - -[.stretch] -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] - - - -== ! -[.stretch] -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] - - -== ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -[.stretch] -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] - - -== ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -[.stretch] -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] - - -== ! -You should now see Gephi as a project on the left in NetBeans: - -[.stretch] -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] - - -== ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -[.stretch] -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] - - -== Running Gephi from source - -== ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -[.stretch] -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] - -== ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -[.stretch] -image::Launching-Gephi.png[align="center", title="Launching Gephi"] - - -== ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine - -== ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -== ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -[.stretch] -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] - - -== ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -[.stretch] -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] - - -== ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -== ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -[.stretch] -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] - - -== ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -== ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -== ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -== ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -== ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -== ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/working-with-text-en_temp_common.md b/docs/generated-html/en/book/subdir/working-with-text-en_temp_common.md deleted file mode 100644 index cf2726e..0000000 --- a/docs/generated-html/en/book/subdir/working-with-text-en_temp_common.md +++ /dev/null @@ -1,361 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/working-with-text-en_temp_html.md b/docs/generated-html/en/book/subdir/working-with-text-en_temp_html.md deleted file mode 100644 index 589b277..0000000 --- a/docs/generated-html/en/book/subdir/working-with-text-en_temp_html.md +++ /dev/null @@ -1,378 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/subdir/working-with-text-en_temp_pdf.md b/docs/generated-html/en/book/subdir/working-with-text-en_temp_pdf.md deleted file mode 100644 index cf2726e..0000000 --- a/docs/generated-html/en/book/subdir/working-with-text-en_temp_pdf.md +++ /dev/null @@ -1,361 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-html/en/book/subdir/working-with-text-en_temp_slides.md b/docs/generated-html/en/book/subdir/working-with-text-en_temp_slides.md deleted file mode 100644 index 0166a96..0000000 --- a/docs/generated-html/en/book/subdir/working-with-text-en_temp_slides.md +++ /dev/null @@ -1,370 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial - -== ! -This tutorial explains how to draw "semantic networks" like this one: - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] - - -== ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -== ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -== ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -== ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -== ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -== ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -== ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -== ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -== ! -==== 1. Removing "stopwords" -== ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -== ! -[start=2] -==== 2. Considering "n-grams" -== ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -== ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -== ! -[start=2] -==== 2 bis. Considering "noun phrases" -== ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -== ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -== ! -[start=3] -==== 3. Stemming and lemmatization -== ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -== ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? - -== ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -== ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -== ! -==== 1. Start with: how many words can fit in your visualization? -== ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -== ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -== ! -==== 2. Representing only the most frequent terms -== ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -== ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -== tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -== ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -== ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -== ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network - -== ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -== ! -==== 1. Co-occurrences -== ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -== ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -== ! -==== 2. What "weight" for the edges? -== ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -== ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -== ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -== ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -== ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -== ! -===== If two terms are very frequent, is their co-occurrence really of interest? -== ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -== ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -== ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -== ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -== ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -== ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -== ! - - - -== (to be continued) - - -== More tutorials on working with semantic networks -== ! - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-html/en/book/toc.txt b/docs/generated-html/en/book/toc.txt deleted file mode 100644 index 5963b02..0000000 --- a/docs/generated-html/en/book/toc.txt +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\how should Gephi be pronounced.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\what-is-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\history-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\simple-project-from-a-to-z-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\using-filters-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\importing-csv-data-in-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\working-with-text-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\cooccurrences-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\k-partite-bi-partite-graph-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\semantic-web-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\similarity-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\twitter-streaming-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\developers\working-from-the-source-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\converting-a-network-with-dates-into-dynamic.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\creating-a-simple-dynamic-network.adoc diff --git a/docs/generated-html/gephi-for-developers-en.html b/docs/generated-html/gephi-for-developers-en.html deleted file mode 100644 index e161a4f..0000000 --- a/docs/generated-html/gephi-for-developers-en.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - - - - -Untitled - - - - - - -
-
-

- -

site
-    stats
-

-
-
- - - \ No newline at end of file diff --git a/docs/generated-html/history-en.html b/docs/generated-html/history-en.html index 96458ac..a0471f7 100644 --- a/docs/generated-html/history-en.html +++ b/docs/generated-html/history-en.html @@ -473,7 +473,7 @@

History of Gephi

-

last modified: 2020-11-15

+

last modified: 2021-09-22

gephi logo 2010 transparent

@@ -600,10 +600,10 @@

a. Cumulative downloads

- - + +

c. Academic citations for Gephi (counting only citations to Bastian et al., 2009)

@@ -628,9 +628,9 @@

the end

or visit the website for more tutorials -te for more tutorials] -ite for more tutorials] -e website for more tutorials] + for more tutorials] + for more tutorials] + for more tutorials] -

site
-    stats
-

-
-
-
- - - + + + + + + + + +Importing csv data in Gephi + + + + + + +
+
+
+
+

last modified: 2021-09-22

+
+
+
+gephi logo 2010 transparent +
+
+
+

  + 

+
+
+
+
+

Importing an existing network file

+
+
+

Gephi handles the import of network files in a variety of formats:

+
+
+
+network formats gephi import en +
+
Figure 1. file formats supported by Gephi. Source: gephi.org
+
+
+

  + 

+
+
+

To import any of these files, just choose the File → Open menu

+
+
+
+
+

Importing nodes with labels and their relations: simplest version

+
+
+

(looking for the complete, full featured csv import version? skip to here.)

+
+
+

The easiest is probably to just have a text file like this one:

+
+
+
+
Source,Target (1)
+Jeremy,Jennifer
+Valerian,Jeremy
+
+
+
+ + + + + +
1This line is mandatory. Don’t put a space between the comma and "Target"
+
+
+

Just write this in a text editor and save it as a file example.txt

+
+
+

To import this file in Gephi, go to File→Import Spreadsheet. Then in the window:

+
+
+
+Importing nodes with labels and their relations +
+
Figure 2. Importing nodes with labels and their relations
+
+
+

  + 

+
+
+

In this window, make sure the box "Create missing nodes" is checked:

+
+
+
+Second screen +
+
Figure 3. Second screen
+
+
+

  + 

+
+
+

Let’s look again at the simple text file we used:

+
+
+
+
Source,Target
+Jeremy,Jennifer
+Valerian,Jeremy
+
+
+
+

There are 2 issues and several missing features, listed below:

+
+
+

1. labels containing commas in them will not work.

+
+

Imagine our characters have first names and last names separated by a comma:

+
+
+

Dubois, Jeremy

+
+
+

Rodriguez, Valerian

+
+
+

This will look like:

+
+
+
+
Source,Target
+Dubois, Jeremy,Jeremy,Jennifer
+Rodriguez, Valerian,Dubois, Jeremy
+
+
+
+

Note that we have 3 commas per line, instead of one! +In this mess, Gephi will not detect where the node labels start and end. +The import will break.

+
+
+

The proper solution is to put node labels inside double quotes:

+
+
+
+
Source,Target
+"Dubois, Jeremy","Jeremy,Jennifer"
+"Rodriguez, Valerian","Dubois, Jeremy"
+
+
+
+

Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have.

+
+
+
+

2. labels containing double quotes " " in them will not work.

+
+

Example: let’s imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. +Our text file will look like:

+
+
+
+
Source,Target
+"Dubois, Jeremy "Danger"","Jeremy,Jennifer"
+"Rodriguez, Valerian","Dubois, Jeremy "Danger""
+
+
+
+

These extra " " will make the Gephi import break:

+
+
+
+import spreadsheet 4 en +
+
Figure 4. The import bugs - the middle name has disappeared
+
+
+

  + 

+
+
+

The solution consists in adding an extra double quote in front of the double quotes. +Our text file will look like:

+
+
+
+
Source,Target
+"Dubois, Jeremy ""Danger""","Jeremy,Jennifer"
+"Rodriguez, Valerian","Dubois, Jeremy ""Danger"""
+
+
+
+

This time, Gephi imports the network correctly:

+
+
+
+import spreadsheet 3 en +
+
Figure 5. Importing node labels containing double quotes
+
+
+

  + 

+
+
+
+
+
+

Importing more than labels: nodes and edges attributes

+
+
+

To import attributes we will need to proceed differently.

+
+
+

We need 2 text files: one for the list of nodes, one for the list of relations (edges)

+
+
+

An example file with a list of nodes:

+
+
+
+
Id,Label,Date of Birth,Place of Birth,Years of experience,Rating (1)
+3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27
+1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34
+45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66
+
+
+
+ + + + + +
1Nodes must have at least an Id and a Label. Don’t put spaces after the commas
+
+
+

An example file with a list of edges:

+
+
+
+
Source,Target,Weight,Type,Where first met (1)
+1,45,3,"undirected",London (2)
+
+
+
+ + + + + + + + + +
1Edges must have at least a Source and Target. Other fields are optional.
2"undirected", the alternative is "directed". Directed edges have arrow heads.
+
+
+

Let’s import the list of nodes first. File → Import Spreadsheet

+
+
+
+Importing a list of nodes with attributes +
+
Figure 6. Importing a list of nodes with attributes
+
+
+

  + 

+
+
+

in the next screen, we must be careful with a couple of things:

+
+
+
+The attributes of the nodes +
+
Figure 7. The attributes of the nodes
+
+
+

  + 

+
+
+

Then we can import the file with the list of relations. File → Import Spreadsheet

+
+
+
+Importing a list of edges with attributes +
+
Figure 8. Importing a list of edges with attributes
+
+
+

  + 

+
+
+
+The attributes of the edges +
+
Figure 9. The attributes of the edges
+
+
+

  + 

+
+
+
+
+

Memo card

+
+
+

Nodes

+
+
+
    +
  • +

    header must be at least Id,Label

    +
  • +
+
+
+

Edges

+
+
+
    +
  • +

    header must be at least Source,Target

    +
  • +
  • +

    To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight".

    +
  • +
  • +

    Want arrows on your links? Add an attribute "Type", with value "Directed"

    +
  • +
  • +

    Don’t wan’t arrows? Add an attribute "Type", with value "Undirected"

    +
  • +
+
+
+

Types of attributes: which to choose?

+
+
+
+import spreadsheet 9 en +
+
Figure 10. Kinds of attributes
+
+
+

  + 

+
+
+
    +
  • +

    Textual attribute: String. Nodes sharing the same textual value can be colored the same, or filtered together…​

    +
  • +
  • +

    Numerical attribute: Integer, Double or Float. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values.

    +
  • +
  • +

    Boolean attribute: just a true or false value. Useful for filtering out some nodes which are true or false on some parameter.

    +
  • +
  • +

    Other types of attributes: not needed for the moment.

    +
  • +
+
+
+
+
+

(to be continued)

+
+ +
+
+
+

More tutorials on importing data to Gephi

+ +
+
+

the end

+
+
+

Visit the Gephi group on Facebook to get help,

+
+
+

or visit the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials + + +

site
+    stats
+

+
+
+
+
+ + \ No newline at end of file diff --git a/docs/generated-html/k-partite-bi-partite-graph-en.html b/docs/generated-html/k-partite-bi-partite-graph-en.html index 4770db4..4a095c3 100644 --- a/docs/generated-html/k-partite-bi-partite-graph-en.html +++ b/docs/generated-html/k-partite-bi-partite-graph-en.html @@ -464,7 +464,7 @@

K-partite and Bipartite Graph (Multimode Networks Transformations)

-

last modified: 2020-11-15

+

last modified: 2021-09-22

@@ -822,9 +822,11 @@

The end

or visit the website for more tutorials -o/gephi-tutorials/[the website for more tutorials] -gephi-tutorials/[the website for more tutorials] -rials/[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] -

site
-    stats
-

-
-
-
-
- - + + + + + + + + +Semantic Web Importer + + + + + + +
+
+
+
+

last modified: 2021-09-22

+
+
+
+gephi logo 2010 transparent +
+
+
+

  + 

+
+
+
+
+

Author and documentation

+
+
+

The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi.

+
+
+

Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic

+
+
+

Plugin Author: Erwan Demairy

+
+ +
+

Licensed under: Cecill-C

+
+
+
+
+

Introduction to concepts

+
+
+

RDF stands for Resource Description Framework . +It is a way to represent information of all kinds. +It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system.

+
+
+

RDF can be considered as the « Grand Father » of graph representation.

+
+
+

The idea is very simple, all information can be represented as a triplet :

+
+
+
+
+

(subject, predicate, object)

+
+
+
+
+

To query such a dataset, a query language has been developed: SPARQL

+
+
+

The SPARQL format is close to SQL format and tries to be as close as possible to a natural language.

+
+
+

DBpedia is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service.

+
+
+

DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts.

+
+
+

You can query it through a web interface or via any RDF toolkit :

+
+ +
+
+
select *
+where
+{
+  <http://dbpedia.org/resource/Leonardo_DiCaprio> ?predicate ?object.
+}
+
+
+
+
+
+

Quickstart

+
+
+

The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. +The Semantic Web Plugin uses this feature to draw the result of your query into Gephi.

+
+
+

First, we need to install Semantic web import. You can find and install this plugin in the menu Tools → Plugins of Gephi.

+
+
+

When installed, go to the Semantic Web Import tab.

+
+
+

In the Driver tab, choose Remote - REST endpoint and put http://dbpedia.org/sparql and EndPoint URL.

+
+
+ + + + + +
+ + +
+

Press Enter after typing the URL endpoint so the url is getting validated and used.

+
+
+
+
+
+setup 1 +
+
Figure 1. Setup endpoint
+
+
+

  + 

+
+
+

Go to Query tab, remove the dummy query and put this one:

+
+
+
+
CONSTRUCT{
+  ?person <http://gephi.org/type> "person".
+  ?movie <http://gephi.org/type> "movie".
+  ?movie <http://toto/link> ?person .
+}
+WHERE
+{
+ ?movie a <http://dbpedia.org/ontology/Film>.
+ ?movie ?rel1 <http://dbpedia.org/resource/Leonardo_DiCaprio>.
+ ?movie ?rel2 ?person.
+ ?person a <http://dbpedia.org/ontology/Person>.
+}
+
+
+
+

Finally, click on Run

+
+
+
+setup 2 +
+
Figure 2. SPARQL Query
+
+
+

  + 

+
+
+

Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering.

+
+
+
+result 1 +
+
Figure 3. result
+
+
+

  + 

+
+
+
+
+

Details

+
+
+

CONSTRUCT block

+
+

The CONSTRUCT block define the new graph to build from the query. That’s the description of your data the plugin will interpet +to build the graph.

+
+
+

What is the syntax for this CONSTRUCT block :

+
+ +
+

→ Will create the node ?a with the property nodeProperty equal to ?b.

+
+
+
    +
  • +

    ?a (<what_You_Want> or ?c) ?b

    +
  • +
+
+
+

→ will create a link between ?a and ?b with label <what_You_Want>

+
+
+
+

WHERE block

+
+

The WHERE block define the data to match based on the query typed in :

+
+
+ +
+
+

→ Get all subject which is a http://dbpedia.org/ontology/Film. +The a is actually a SPARQL special word for <rdf:type>. +So it’s exactly equal to ?movie <rdf:type> http://dbpedia.org/ontology/Film

+
+ +
+

→ Match all subjects which have any predicate where the object is http://dbpedia.org/resource/Leonardo_DiCaprio

+
+
+
    +
  • +

    ?movie ?rel2 ?person.

    +
  • +
+
+
+

→ Match any triplet

+
+
+ +
+
+

→ Match the subject ?person if it’s a http://dbpedia.org/ontology/Person.

+
+
+

In other words, match the variable ?movie to any entity that is a Film and that has at least 1 triplet where Leonardo is an object. Match also all ?person that is a Person.

+
+
+

The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio.

+
+
+
+
+
+

Tips to go further

+
+
+

What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. +We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. +The limit is your imagination to graph.

+
+
+

On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. +It will also maybe give you some insight on which new movies to watch tonight 😉

+
+
+

But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research.

+
+
+

If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL.

+
+
+
+
+

The end

+
+
+

Visit the Gephi group on Facebook to get help,

+
+
+

or visit the website for more tutorials +website for more tutorials] +website for more tutorials] +website for more tutorials] +website for more tutorials] +website for more tutorials] + + +

site
+    stats
+

+
+
+
+
+ + \ No newline at end of file diff --git a/docs/generated-html/similarity-computer-en.html b/docs/generated-html/similarity-computer-en.html index 3b381be..fa005f6 100644 --- a/docs/generated-html/similarity-computer-en.html +++ b/docs/generated-html/similarity-computer-en.html @@ -1,788 +1,804 @@ - - - - - - - - -Creating a network from a table of entities and their attributes - - - - - - -
-
-
-
-

last modified: 2020-11-15

-
-
-
-gephi logo 2010 transparent -
-
-
-

  - 

-
-
-
-
-

Presentation of the plugin

-
-
-

This plugin is created by Clement Levallois.

-
-
-

It converts a spreadsheet or a csv file into a network.

-
-
-

This plugin enables you to:

-
-
-
    -
  • -

    Start from a data table in Excel or csv format

    -
  • -
  • -

    In the data table, nodes are the entities listed in column A

    -
  • -
  • -

    Nodes' attributes must be listed in columns B, C, D, etc.

    -
  • -
  • -

    Connections will be created between nodes, when they have identical attributes.

    -
  • -
  • -

    Attributes can have values, stored in columns right next to the attribute.

    -
  • -
-
-
-

1. The input

-
-
-An Excel file -
-
Figure 1. An Excel file
-
-
-

  - 

-
-
-
-

2. The output

-
-
-result -
-
Figure 2. Resulting network
-
-
-

  - 

-
-
-
-
-
-

Installing the plugin

-
-
-
-Choose the menu Tools then Plugins -
-
Figure 3. Choose the menu Tools then Plugins
-
-
-

  - 

-
-
-
-Click on the tab Available Plugins -
-
Figure 4. Click on the tab Available Plugins
-
-
-

  - 

-
-
-
-Install the plugin Similarity Computer then restart Gephi -
-
Figure 5. Install the plugin Similarity Computer then restart Gephi
-
-
-

  - 

-
-
-
-
-

Opening the plugin

-
-
-
-Open the plugin via the menu File   Import -
-
Figure 6. Open the plugin via the menu File - Import
-
-
-

  - 

-
-
-
-
-

Using the plugin

-
-
-

First panel

-
-
-Select a file -
-
Figure 7. Select a file
-
-
-

  - 

-
-
-
-file without header en -
-
Figure 8. A file without headers
-
-
-

  - 

-
-
-
-file with header en -
-
Figure 9. A file with headers
-
-
-

  - 

-
-
-
-

Second panel

-
-
-plugin 4 en -
-
Figure 10. Parameter for weight
-
-
-

  - 

-
-
-
-

Third panel

-
-
-plugin 5 en -
-
Figure 11. Confirmation panel
-
-
-

  - 

-
-
-
-
-
-

How is the similarity computed, exactly?

-
-
-

We use the cosine similarity. -Sounds complicated, but it is not. -Check here.

-
-
-

The source code for the cosine calculation is in this file, at this place.

-
-
-
-
-

FAQ / special notes on the plugin

-
-
-

1. Excel files should be .xlsx, not .xls

-
-

Because they represent two slightly different files formats, and the plugin supports only .xlsx

-
-
-
-

2. csv files are ok.

-
-

If you select a csv file, you will be asked to indicate the field delimiter and optionally the text delimiter.

-
-
-
-plugin 6 en -
-
Figure 12. When a csv file is selected
-
-
-

  - 

-
-
-
-

3. You can’t use numerical values in the attributes

-
-
-numerical attributes en -
-
Figure 13. Age is a numerical attribute
-
-
-

  - 

-
-
-

This is too bad. -If there is enough demand for it I’ll add this feature, which is not trivial.

-
-
-
-

4. Each entity should appear only on one line

-
-
-plugin 7 en -
-
Figure 14. An entity appearing twice
-
-
-

  - 

-
-
-

David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account.

-
-
-
-
-
-

The end

-
-
-

Visit the Gephi group on Facebook to get help,

-
-
-

or visit the website for more tutorials -cebook] to get help,

-
-
-

or visit the website for more tutorials -book] to get help,

-
-
-

or visit the website for more tutorials -rials/[the website for more tutorials] - - -

site
-    stats
-

-
-
-
-
- - + + + + + + + + +Creating a network from a table of entities and their attributes + + + + + + +
+
+
+
+

last modified: 2021-09-22

+
+
+
+gephi logo 2010 transparent +
+
+
+

  + 

+
+
+
+
+

Upgrade: this plugin is now available as a web app!

+
+
+

I have transfered the plugin to a free web application, which makes it easier to access. +Visit the "network builder page" on Nocodefunctions.

+
+
+

You will be able to generate the file of a network (.gexf) and open it in Gephi.

+
+
+
+
+

Presentation of the plugin

+
+
+

This plugin is created by Clement Levallois.

+
+
+

It converts a spreadsheet or a csv file into a network.

+
+
+

This plugin enables you to:

+
+
+
    +
  • +

    Start from a data table in Excel or csv format

    +
  • +
  • +

    In the data table, nodes are the entities listed in column A

    +
  • +
  • +

    Nodes' attributes must be listed in columns B, C, D, etc.

    +
  • +
  • +

    Connections will be created between nodes, when they have identical attributes.

    +
  • +
  • +

    Attributes can have values, stored in columns right next to the attribute.

    +
  • +
+
+
+

1. The input

+
+
+An Excel file +
+
Figure 1. An Excel file
+
+
+

  + 

+
+
+
+

2. The output

+
+
+result +
+
Figure 2. Resulting network
+
+
+

  + 

+
+
+
+
+
+

Installing the plugin

+
+
+
+Choose the menu Tools then Plugins +
+
Figure 3. Choose the menu Tools then Plugins
+
+
+

  + 

+
+
+
+Click on the tab Available Plugins +
+
Figure 4. Click on the tab Available Plugins
+
+
+

  + 

+
+
+
+Install the plugin Similarity Computer then restart Gephi +
+
Figure 5. Install the plugin Similarity Computer then restart Gephi
+
+
+

  + 

+
+
+
+
+

Opening the plugin

+
+
+
+Open the plugin via the menu File   Import +
+
Figure 6. Open the plugin via the menu File - Import
+
+
+

  + 

+
+
+
+
+

Using the plugin

+
+
+

First panel

+
+
+Select a file +
+
Figure 7. Select a file
+
+
+

  + 

+
+
+
+file without header en +
+
Figure 8. A file without headers
+
+
+

  + 

+
+
+
+file with header en +
+
Figure 9. A file with headers
+
+
+

  + 

+
+
+
+

Second panel

+
+
+plugin 4 en +
+
Figure 10. Parameter for weight
+
+
+

  + 

+
+
+
+

Third panel

+
+
+plugin 5 en +
+
Figure 11. Confirmation panel
+
+
+

  + 

+
+
+
+
+
+

How is the similarity computed, exactly?

+
+
+

We use the cosine similarity. +Sounds complicated, but it is not. +Check here.

+
+
+

The source code for the cosine calculation is in this file, at this place.

+
+
+
+
+

FAQ / special notes on the plugin

+
+
+

1. Excel files should be .xlsx, not .xls

+
+

Because they represent two slightly different files formats, and the plugin supports only .xlsx

+
+
+
+

2. csv files are ok.

+
+

If you select a csv file, you will be asked to indicate the field delimiter and optionally the text delimiter.

+
+
+
+plugin 6 en +
+
Figure 12. When a csv file is selected
+
+
+

  + 

+
+
+
+

3. You can’t use numerical values in the attributes

+
+
+numerical attributes en +
+
Figure 13. Age is a numerical attribute
+
+
+

  + 

+
+
+

This is too bad. +If there is enough demand for it I’ll add this feature, which is not trivial.

+
+
+
+

4. Each entity should appear only on one line

+
+
+plugin 7 en +
+
Figure 14. An entity appearing twice
+
+
+

  + 

+
+
+

David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account.

+
+
+
+
+
+

The end

+
+
+

Visit the Gephi group on Facebook to get help,

+
+
+

or visit the website for more tutorials +ebook] to get help,

+
+
+

or visit the website for more tutorials +ebook] to get help,

+
+
+

or visit the website for more tutorials +acebook] to get help,

+
+
+

or visit the website for more tutorials + + +

site
+    stats
+

+
+
+
+
+ + \ No newline at end of file diff --git a/docs/generated-html/simple-project-from-a-to-z-en.html b/docs/generated-html/simple-project-from-a-to-z-en.html index 69d54d7..8c1b0a0 100644 --- a/docs/generated-html/simple-project-from-a-to-z-en.html +++ b/docs/generated-html/simple-project-from-a-to-z-en.html @@ -479,7 +479,15 @@

Simple Gephi Project from A to Z

+ +
  • export a network as a web visualization +
  • the end
  • @@ -491,17 +499,13 @@

    Simple Gephi Project from A to Z

    -

    last modified: 2020-11-15

    +

    last modified: 2021-09-25

    gephi logo 2010 transparent
    -
    -

      - 

    -
    @@ -560,6 +564,9 @@

    Description of the project

  • export a visualization as a picture or pdf

  • +
  • +

    export a web visualization of the network

    +
  • @@ -569,14 +576,10 @@

    be familiar with
    -terminology for networks +pub?w=960&h=720
    Figure 1. terminology for networks
    -
    -

      - 

    -
    @@ -626,10 +629,6 @@

    open the network in Gephi

    Figure 2. welcome screen
    -
    -

      - 

    -
    @@ -645,10 +644,6 @@

    read the report after opening a f
    Figure 3. report window

    -

      - 

    -
    -

    This tells you that the network comprises 74 characters, connected by 248 links.

    @@ -672,10 +667,6 @@

    initial view

    Figure 4. initial view when opening a graph
    -

      - 

    -
    -

    This is how the network appears in Gephi. Not very useful! Let’s examine what we have here.

    @@ -685,15 +676,11 @@

    basic view of Gephi’s interface
    -the 3 main screens in Gephi +pub?w=960
    Figure 5. the 3 main screens in Gephi
    -

      - 

    -
    -

    Gephi has 3 main screens:

    @@ -714,15 +701,11 @@

    basic view of Gephi’s interface
    -Filters and statistics panels in Gephi +pub?w=960
    Figure 6. Filters and statistics panels in Gephi
    -

      - 

    -
    -

    In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization.

    @@ -737,14 +720,10 @@

    basic view of Gephi’s interface
    -Appearance and layout panels in Gephi +pub?w=1439&h=787
    Figure 7. Appearance and layout panels in Gephi
    -
    -

      - 

    -
    1. @@ -757,14 +736,10 @@

      basic view of Gephi’s interface
      -3 groups of icons +pub?w=1435&h=774
      Figure 8. 3 groups of icons
      -
      -

        - 

      -
      1. @@ -785,14 +760,10 @@

        showing labels of the nodes

        -showing node labels +pub?w=960&h=720
        Figure 9. showing node labels
        -
        -

          - 

        -
      @@ -800,34 +771,22 @@

      layout ("spatialize") the network

      -selecting the force atlas 2 layout +pub?w=960&h=720
      Figure 10. selecting the force atlas 2 layout
      -
      -

        - 

      -
      -changing a few parameters and launching the layout +pub?w=960&h=720
      Figure 11. changing a few parameters and launching the layout
      -
      -

        - 

      -
      -result of Force Atlas 2 layout +pub?w=960&h=720
      Figure 12. result of Force Atlas 2 layout
      -
      -

        - 

      -
      @@ -846,38 +805,26 @@

      visualize the properties of the

      -Switching the view to the data laboratory +pub?w=954&h=524
      Figure 13. Switching the view to the data laboratory
      -
      -

        - 

      -
      -We see there is a Gender attribute for each character. +pub?w=758&h=431
      Figure 14. We see there is a Gender attribute for each character.
      -

        - 

      -
      -

      We will color the nodes based on their gender. To do that, we select Gender in the Appearance panel:

      -Coloring nodes according to their gender +pub?w=758&h=431
      Figure 15. Coloring nodes according to their gender
      -

        - 

      -
      -

      The result:

      @@ -886,10 +833,6 @@

      visualize the properties of the

      Figure 16. After coloring characters according to their gender

    -
    -

      - 

    -

    @@ -942,10 +885,6 @@

    2. Prevent the Labels from overl
    Figure 17. Noverlap or Label Adjust will help you

    -

      - 

    -
    -

    Don’t forget to click on "Run" to apply these layouts.

    @@ -956,27 +895,19 @@

    3. Changing the size of the labels
    -Adjusting label size +pub?w=758&h=431
    Figure 18. Adjusting label size
    -
    -

      - 

    -
    -Adjusting edge thickness +pub?w=758&h=431
    Figure 19. Adjusting edge thickness
    -
    -

      - 

    -
    @@ -1026,41 +957,29 @@

    2. Computing betweenness
    -Computing betweenness centrality +pub?w=758&h=415
    Figure 20. Computing betweenness centrality
    -

      - 

    -
    -

    This will open a window with parameters (explained in a more advanced tutorials). Click "OK":

    -Parameters for the computation of betweenness centrality +pub?w=411&h=232
    Figure 21. Parameters for the computation of betweenness centrality
    -

      - 

    -
    -

    A report window opens (also explained in a other tutorials). Close it.

    -Report after the computation of betweenness centrality +pub?w=300
    Figure 22. Report after the computation of betweenness centrality
    -

      - 

    -
    -

    Now we can visualize this information.

    @@ -1081,28 +1000,20 @@

    visualize attributes created by
    -Switching the view to the data laboratory +pub?w=954&h=524
    Figure 23. Switching the view to the data laboratory
    -

      - 

    -
    -

    When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"):

    -Different centrality measures visible in the data laboratory +pub?w=954&h=525
    Figure 24. Different centrality measures visible in the data laboratory
    -

      - 

    -
    -

    To resize the nodes according to the value of their betweenness centrality, we use the Appearance panel:

    @@ -1119,54 +1030,34 @@

    visualize attributes created by

    -Ranking node sizes by centrality +pub?w=954&h=525
    Figure 25. Ranking node sizes by centrality
    -
    -

      - 

    -
    -Selecting the minimum and maximum sizes of nodes +pub?w=954&h=525
    Figure 26. Selecting the minimum and maximum sizes of nodes
    -
    -

      - 

    -
    ranking centrality miserables 3  en
    Figure 27. Result of the ranking
    -
    -

      - 

    -
    -Resizing labels to reflect their node's size +pub?w=954&h=525
    Figure 28. Resizing labels to reflect their node’s size
    -
    -

      - 

    -
    result label resizing en
    Figure 29. Result of the label resizing
    -
    -

      - 

    -
    @@ -1176,15 +1067,11 @@

    exporting a network as a picture

    1. exporting a screenshot from the Overview (a png image)

    -Open the configuration panel for screenshots +pub?w=954&h=525
    Figure 30. Open the configuration panel for screenshots
    -

      - 

    -
    -

    Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304

    @@ -1193,10 +1080,6 @@

    1. exporting a

    Figure 31. The configuration panel for screenshots
    -
    -

      - 

    -

    2. exporting a pdf or svg picture

    @@ -1205,15 +1088,11 @@

    2. exporting a pdf or svg picture

    -Switching to the preview panel +pub?w=954&h=525
    Figure 32. Switching to the preview panel
    -

      - 

    -
    -

    The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. But as you see, it means the network is now looking different than in the Overview.

    @@ -1231,45 +1110,156 @@

    2. exporting a pdf or svg picture

    -Updating the parameters +pub?w=954&h=525
    Figure 33. Updating the parameters
    -

      - 

    -
    -

    Here I change just 2 parameters: Show Labels and Font (which I reduce to size "5"), to get:

    -Result of preview +pub?w=954&h=525
    Figure 34. Result of preview
    -

      - 

    -
    -

    Export: just click on the button and select the file format you prefer

    -Export button +pub?w=954&h=525
    Figure 35. Export button
    +
    +
    +

    3. download the result file

    +
    +

    download this zip file if you need to see the network in its final form.

    +
    +
    + + +
    +

    export a network as a web visualization

    +
    +
    +

    You can easily create a web-based version of your network. It can be made public or private. +If you choose to make it public, it will be easy to share - simply send the url.

    +
    +
    +

    The web version makes use of VOSviewer online, which works best for networks up to ~ 500 nodes (if your networks has more nodes, it can be hard to read on screen).

    +
    +
    +

    To proceed, simply:

    +
    +
    +

    1. export your graph from Gephi as a .gexf file

    +
    + + + + + +
    + + +make sure you export a gexf file, not a GEPHI file! +
    +
    -

      - 

    +

    In Gephi, do: File → Export → Graph file…​ See an illustration below:

    +
    +
    +
    +pub?w=617&h=356 +
    +
    Figure 36. Export gexf file 1
    +
    +
    +
    +pub?w=566&h=348 +
    +
    Figure 37. Export gexf file 2
    -

    3. donwload the result file

    +

    2. visit nocodefunctions and convert the gexf file to a web visualization

    -

    download this zip file if you need to see the network in its final form.

    +

    Nocode functions is a web application that I developed. +It provides useful tools to work with networks and text. +It is free, does not need a registration, and is respectful of your data.

    +
    +
    +
      +
    • +

      Go to this page on nocodefunction.

      +
    • +
    • +

      Choose option 1 ("convert a Gephi gexf file to VOSviewer json format")

      +
    • +
    • +

      If you want to share your visualization, check the box to make it public

      +
    • +
    • +

      Click on "Convert to VOSviewer json file"

      +
    • +
    +
    +
    +

    You will be directed to a new webpage like the one below:

    +
    +
    +
    +vosviewer result +
    +
    Figure 38. An illustration of the web view of a gexf file
    +
    +
    +
    +

    3. public or private web visualization? How to manage

    +
    +

    If you have chosen "public" at the previous step you can now bookmark the web page of your network, share it, etc. +Otherwise, the visualization will be deleted after an hour. This is to keep the promise that your data is secure: if you want it private, we simply don’t keep it on the servers.

    +
    +
    +

    What if you want to keep your visualization private, but don’t want to redo all the steps after each hour?

    +
    +
    +
      +
    • +

      in the VOSviewer visualization, save your network as a json file by clicking on the "save" icon:

      +
    • +
    +
    +
    +
    +pub?w=566&h=348 +
    +
    Figure 39. Saving the network to a json file from the VOSviewer online interface
    +
    +
    +

    Then, you can re-open this file in the web interface whenever you want:

    +
    +
    + +
    +
    +
    +pub?w=566&h=348 +
    +
    Figure 40. Opening a network in the VOSviewer online interface
    +
    +
    +
    +

    4. More options to share your visualization with VOSviewer online

    +
    +

    This web page offers a full view on the other ways you can share a network visualization with VOSviewer online.

    @@ -1341,25 +1331,6 @@

    questions and exercises

  • In this tutorial, we defined degree centrality. Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -ecific layouts.

    -
  • - -
    -
    -
      -
    1. -

      In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pecific layouts.

      -
    2. -
    -
    -
    -
      -
    1. -

      In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -y network to help you figure. -

      site
-    stats
      -

      -
    - - - -
    -
    -
    -1. D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993) -
    -
    - - + + + + + + + + +Using filters + + + + + + +
    +
    +
    +
    +

    last modified: 2021-09-22

    +
    +
    +
    +gephi logo 2010 transparent +
    +
    +
    +

      + 

    +
    +
    +
    +
    +

    download a network file for practice

    +
    +
    +

    download this zip file and unzip it on your computer.

    +
    +
    +

    or use this direct link: https://tinyurl.com/gephi-tuto-3

    +
    +
    +

    You should find the file miserables.gexf in it. Save it in a folder you will remember (or create a folder specially for this small project).

    +
    +
    +

    This file contains a network representing "who appears next to whom" in the 19th century novel Les Misérables by Victor Hugo[1].

    +
    +
    +

    A link between characters A and B means they appeared on the same page or paragraph in the novel.

    +
    +
    +

    The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions.

    +
    +
    +
    +
    +

    open the network in Gephi

    +
    +
    +
      +
    • +

      open Gephi. On the Welcome screen that appears, click on Open Graph File

      +
    • +
    • +

      find miserables.gexf on your computer and open it

      +
    • +
    +
    +
    +
    +gephi welcome screen open graph en +
    +
    Figure 1. welcome screen
    +
    +
    +

      + 

    +
    +
    +

    A report window will open, giving you basic info on the network you opened:

    +
    +
    +
    +opening file report en +
    +
    Figure 2. report window
    +
    +
    +

      + 

    +
    +
    +

    This tells you that the network comprises 74 characters, connected by 248 links.

    +
    +
    +

    Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A.

    +
    +
    +

    The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won’t "move in time".

    +
    +
    +

    Click on OK to see the graph in Gephi.

    +
    +
    +
    +result miserables +
    +
    Figure 3. The network we will use
    +
    +
    +

      + 

    +
    +
    +
    +
    +

    getting a sense of the attributes in the data laboratory

    +
    +
    +

    We can switch to the data laboratory to see the underlying data:

    +
    +
    +
    +Switching to the data laboratory +
    +
    Figure 4. Switching to the data laboratory
    +
    +
    +

      + 

    +
    +
    +

    We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are:

    +
    +
    +
    +Nodes attributes. +
    +
    Figure 5. Nodes attributes.
    +
    +
    +

      + 

    +
    +
    +

    This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength").

    +
    +
    +
    +Edges attributes. +
    +
    Figure 6. Edges attributes
    +
    +
    +

      + 

    +
    +
    +
    +
    +

    discovering the filter panel

    +
    +
    +

    In the overview, make sure the Filter panel is displayed:

    +
    +
    +
    +Making the Filter panel visible. +
    +
    Figure 7. Making the Filter panel visible.
    +
    +
    +

      + 

    +
    +
    +

    How the Filter panel works:

    +
    +
    +
    +Workflow of filters +
    +
    Figure 8. Workflow of filters
    +
    +
    +

      + 

    +
    +
    +

    An example: hiding edges with weight lower than 2

    +
    +
    +
    +filter edge weight en +
    +
    Figure 9. How to use filters.
    +
    +
    +

      + 

    +
    +
    +

    When you are finished using a filter in the zone, right click on it and select "remove".

    +
    +
    +
    +
    +

    combining 2 filters

    +
    +
    +

    One filter is applied AFTER this other:

    +
    +
    +

    The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"

    +
    +
    +

    Which filter should be placed inside which? Let’s look at different examples:

    +
    +
    +

    1. Case when the placement of filters makes no difference

    +
    +

    Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2.

    +
    +
    +

    → place the filter "edge weight" inside the filter "Gender":

    +
    +
    +
    +Filter on the Gender attribute +
    +
    Figure 10. Filter on the Gender attribute
    +
    +
    +

      + 

    +
    +
    +
    +Filter on edge weight +
    +
    Figure 11. Filter on edge weight
    +
    +
    +

      + 

    +
    +
    +
    +filter edge weight gender partition en +
    +
    Figure 12. Keeping only female characters with at least 2 ties
    +
    +
    +

      + 

    +
    +
    +

    In this case, it was equivalent to:

    +
    +
    +
      +
    • +

      nest the "Gender" filter inside the "Edge weight" filter

      +
    • +
    +
    +
    +

    or

    +
    +
    +
      +
    • +

      nest the "Edge weight" filter inside the "Gender" Filter

      +
    • +
    +
    +
    +

    → The result was the same (the network on screen is identical in both cases)

    +
    +
    +
    +

    2. Case when the placement of filters makes a difference

    +
    +

    Here, we want to visualize:

    +
    +
    +
      +
    • +

      only the nodes which have less than 10 relations <1>

      +
    • +
    • +

      and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2>

      +
    • +
    +
    +
    + + + + + + + + + +
    1in technical terms, nodes with a degree of less than 10.
    2in technical terms, we are looking for the giant component
    +
    +
    +
    +filter degree range 1 en +
    +
    Figure 13. Filter on degree
    +
    +
    +

      + 

    +
    +
    +
    +filter giant component 1 en +
    +
    Figure 14. Filter on giant component
    +
    +
    +

      + 

    +
    +
    +

    We will see that the placement on the filters in the zone will make a difference.

    +
    +
    +

    First, let us place the filter on giant component inside the filter on degree:

    +
    +
    +
    +filter order 1 en +
    +
    Figure 15. Filters in one configuration
    +
    +
    +

      + 

    +
    +
    +

    In this first case,

    +
    +
    +
      +
    • +

      only the giant component of the network was made visible.

      +
    • +
    +
    +
    +

    → Since the network was just one big connected "island" to start with, it did not change a thing.

    +
    +
    +
      +
    • +

      then, all characters with more than 10 relations where hidden

      +
    • +
    +
    +
    +

    → this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others.

    +
    +
    +

    Now instead, placing the filter degree inside the filter on giant component:

    +
    +
    +
    +filter order 2 en +
    +
    Figure 16. Same filters in another configuration
    +
    +
    +

      + 

    +
    +
    +

    In this second case,

    +
    +
    +
      +
    • +

      starting from the complete network, all characters with more than 10 relations where deleted.

      +
    • +
    +
    +
    +

    → this created a network made of many disconnected groups of nodes

    +
    +
    +
      +
    • +

      then the giant component filter is applied,

      +
    • +
    +
    +
    +

    → which had for effect to hide small groups, to keep in view only the biggest group of connected nodes.

    +
    +
    + + + + + +
    + + +In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. +
    +
    +
    +
    +
    +
    +

    filter operators

    +
    +
    +

    1. The MASK operator

    +
    +

    Imagine you are interested in the female characters of the novel "Les Miserables".

    +
    +
    +
      +
    • +

      you are interested in female characters and the relations among them

      +
    • +
    • +

      you are interested in the relations between female characters and male characters

      +
    • +
    • +

      you are not interested in the relations between male characters

      +
    • +
    +
    +
    +

    How to display this?

    +
    +
    +

    The MASK operator applied on the gender partition filter enables you to:

    +
    +
    +
      +
    • +

      show all characters

      +
    • +
    • +

      relations between female characters

      +
    • +
    • +

      and relations between male and female characters

      +
    • +
    • +

      but masking male-male relations

      +
    • +
    +
    +
    +
    +operator mask 1 en +
    +
    Figure 17. Using the MASK operator
    +
    +
    +

      + 

    +
    +
    +

    It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph:

    +
    +
    +
    +operator mask 2 en +
    +
    Figure 18. Parameters of the MASK operator
    +
    +
    +

      + 

    +
    +
    +
    +

    2. The UNION operator

    +
    +

    Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables".

    +
    +
    +

    How to display only these characters?

    +
    +
    +

    We will need to apply filters on the Label of the nodes, which contains the names of the characters.

    +
    +
    +

    However, looking at the "catalogue" of filters, we see no filter on Label. The reason is that Label is an internal property of nodes, inaccessible to filters.

    +
    +
    +

    So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on.

    +
    +
    +

    Let’s switch to the data laboratory and add this attribute:

    +
    +
    +
    +Adding a column for Names +
    +
    Figure 19. Adding a column for Names
    +
    +
    +

      + 

    +
    +
    +
    +Copying to this new column +
    +
    Figure 20. Copying to this new column
    +
    +
    +

      + 

    +
    +
    +

    We now have an attribute called "Name" that we can find in the Filters:

    +
    +
    +
    +New filter available +
    +
    Figure 21. New filter available
    +
    +
    +

      + 

    +
    +
    +

    This is how the filter on Name and its parameters look like in the zone:

    +
    +
    +
    +filter name 1 en +
    +
    Figure 22. Name Filter
    +
    +
    +

      + 

    +
    +
    +

    To recall, we want to show only the characters which name start with "L" or "J". Let’s start with the "L" characters.

    +
    +
    +

    We need to find the names which match the pattern Start with an L. The way to describe a pattern in text is called a "regular expression".

    +
    +
    +

    Said differently, a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text.

    +
    +
    +

    Regular expressions can become very sophisticated. But here, we need just a simple one:

    +
    +
    +
    +
    L.*
    +
    +
    +
    +

    Let’s examine what the L, the dot and the star mean.

    +
    +
    +
      +
    • +

      the letter "L" means we want names starting with this first letter

      +
    • +
    • +

      . the dot means: any character

      +
    • +
    • +

      * the star means: the previous character, repeated any time.

      +
    • +
    +
    +
    +

    So: "select nodes which have a name starting with L, followed by any character, in any number"

    +
    +
    +

    Please note that you need to check the box "regex":

    +
    +
    +
    +filter name 2 en +
    +
    Figure 23. Using a regular expression in a filter
    +
    +
    +

      + 

    +
    +
    +

    When the filter is applied, only the characters wit a name starting with L will be displayed:

    +
    +
    +
    +filter name 3 en +
    +
    Figure 24. Using a regular expression in a filter
    +
    +
    +

      + 

    +
    +
    +

    How to filter characters with a name starting with the letter "L" or "J"?

    +
    +
    +

    We could rely on a more complex regular expression to do this:

    +
    +
    +
    +
    [LJ].*
    +
    +
    +
    +

    Meaning: "select nodes which have a name starting with L or J, followed by any characters"

    +
    +
    +

    But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean:

    +
    +
    +

    "show nodes which start with an L, and among them, only those which start with a J"

    +
    +
    +

    → no node can meet this condition, so they would all be invisible.

    +
    +
    +

    Instead, we should use the UNION operator that can be found here:

    +
    +
    +
    +filter operator union 1 en +
    +
    Figure 25. The UNION operator in filters
    +
    +
    +

      + 

    +
    +
    +

    Drag it to the zone, and then drag inside it twice the Attributes → Equal → Name filter:

    +
    +
    +
    +filter operator union 2 en +
    +
    Figure 26. The UNION operator and 2 subfilters
    +
    +
    +

      + 

    +
    +
    +

    In the settings of the first Name filter, put the regular expression:

    +
    +
    +
    +
    L.*
    +
    +
    +
    +

    In the second Name filter, put:

    +
    +
    +
    +
    J.*
    +
    +
    +
    +

    (make sure the "regex" box is checked in both cases)

    +
    +
    +

    As a result, the nodes selected by both filters are added up in the display:

    +
    +
    +
    +filter operator union 3 en +
    +
    Figure 27. The UNION operator and 2 subfilters
    +
    +
    +

      + 

    +
    +
    +
    +

    3. The NOT operator

    +
    +

    The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa.

    +
    +
    +

    Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials:

    +
    +
    +
    +filter operator not 3 en +
    +
    Figure 28. The NOT nodes operator - 1
    +
    +
    +

      + 

    +
    +
    +

    Same effect, but applying the NOT operator on single filter using a regex on L or J:

    +
    +
    +
    +filter operator not 1 en +
    +
    Figure 29. The NOT nodes operator - 2
    +
    +
    +

      + 

    +
    +
    +

    Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT":

    +
    +
    +
    +
    [^LJ].*
    +
    +
    +
    +
    +filter operator not 2 en +
    +
    Figure 30. Achieving a NOT effect with regex
    +
    +
    +

      + 

    +
    +
    +

    Tutorials about regular expressions:

    +
    + +
    +

    And a web page where you can test your regular expressions: http://regexpal.com

    +
    +
    +
    +
    +
    +

    more tutorials on using filters in Gephi

    + +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +
    +
    +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +
    +
    +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +
    +
    +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +
    +
    +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +
    +
    +
    +
    +

    the end

    +
    +
    +

    Visit the Gephi group on Facebook to get help,

    +
    +
    +

    or visit the website for more tutorials + + +

    site
+    stats
    +

    +
    +
    +
    +
    +
    +
    +
    +1. D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993) +
    +
    + + \ No newline at end of file diff --git a/docs/generated-html/what-is-gephi-en.html b/docs/generated-html/what-is-gephi-en.html index b37db4f..675d380 100644 --- a/docs/generated-html/what-is-gephi-en.html +++ b/docs/generated-html/what-is-gephi-en.html @@ -462,7 +462,7 @@

    What is Gephi?

    -

    last modified: 2020-11-15

    +

    last modified: 2021-09-22

    @@ -580,9 +580,11 @@

    crea
  • The support to users through forums, discussion groups and documents is provided for free. -for free. -for free. -uments] is provided for free. + free. + free. + free. + free. + free.

    Converting a network with dates into a dynamic network

    2017-02-17

    -

    last modified: 2020-11-15

    == !

    +

    last modified: 2021-09-22

    == !

    gephi logo 2010 transparent

       

    @@ -211,8 +211,11 @@

    the end

    Visit the Gephi group on Facebook to get help,

    or visit the website for more tutorials -s://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -rials/[the website for more tutorials] +://seinecle.github.io/gephi-tutorials[the website for more tutorials] +://seinecle.github.io/gephi-tutorials[the website for more tutorials] +://seinecle.github.io/gephi-tutorials[the website for more tutorials] +://seinecle.github.io/gephi-tutorials[the website for more tutorials] +://seinecle.github.io/gephi-tutorials[the website for more tutorials]

    Creating a network from a table of cooccurring items

    2017-02-27

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    Presentation of the plugin

    -

    This plugin is created by Clement Levallois.

    -

    It converts a spreadsheet or a csv file into a network.

    -

    This plugin enables you to:

    -
    • Start from a data table in Excel or csv format

    • In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.)

    -
    • In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc.

    • Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row)

    • Occurrences can have dates, multiple instances of an entity can be listed in a given column.

    -

    1. The input

    -
    excel 1 en
    Figure 1. An Excel file
    -

      - 

    -

    2. The output

    -
    gephi result 1 en
    Figure 2. Resulting network
    -

      - 

    -

    Installing the plugin

    -
    Choose the menu Tools then Plugins
    Figure 3. Choose the menu Tools then Plugins
    -

      - 

    -
    Click on the tab Available Plugins
    Figure 4. Click on the tab Available Plugins
    -

      - 

    -
    Install the plugin Convert Excel and Csv files and restart Gephi
    Figure 5. Install the plugin Convert Excel and Csv files and restart Gephi
    -

      - 

    -

    Opening the plugin

    -
    Open the plugin via the menu File   Import
    Figure 6. Open the plugin via the menu File - Import
    -

      - 

    -

    Using the plugin

    -

    2nd panel

    -
    Select a file
    Figure 7. Select a file
    -

      - 

    -
    excel 2 en
    Figure 8. A file without headers
    -

      - 

    -
    excel 1 en
    Figure 9. A file with headers
    -

      - 

    -

    To describe the next screens of the plugin, we will take the example of the Excel file just shown, with headers.

    -

    3rd panel

    -
    plugin panels 1 en
    Figure 10. Which entities should be the nodes?
    -

      - 

    -

    What does this panel mean?

    -

    If you look back at the Excel file, you see that we have "Clients" and their "Purchases".

    -

    → This means we can build 2 different types of networks, depending on our needs:

    -
    1. A network showing clients and products, with relations representing purchases from a client to a product.

    -
    graph g {
    -    rankdir="LR";
    -    client -- product [ label="purchased" ]
    -}
    -

    To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen.

    -
    1. Or a network where 2 products are connected, if one client puchased them together.

    -
    graph g {
    -    rankdir="LR";
    -    a -- b [label=" purchased together"]
    -     a [label="product 1"];
    -     b [label="product 2"];
    -}
    -

    To create this kind of networks, choose "Purchases" in the upper and lower windows of the plugin screen.

    -

    4th panel

    -
    subfield delimiter en
    Figure 11. Choosing which delimiter is used
    -

      - 

    -

    This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated:

    -
    commas shown in red
    Figure 12. commas shown in red
    -

      - 

    -

    5th panel

    -

    This panel allows you to specify whether the relations are dynamic in time, or not.

    -

    In this case, you need an extra column (column C), where a date is shown. We don’t cover this case here.

    -

    (read the tutorials on dynamic networks for a starter)

    -

    6th panel

    -
    panel 6 1 en
    Figure 13. Options panel
    -

      - 

    -
    "Create links between Purchases agents and links between Purchase agents"
    -

    → If you chose a Product ←→ Product kind of network in panel 3, then of course you are interested in links between products. Check the box.

    -

    → But if you chose a Client ←→ Product kind of network in panel 3, what you need is less obvious.

    -

    Let’s take the example of client I, who purchased a table and some chairs:

    -
    1. Checking the box will create a network where:

    -
    graph g {
    -    rankdir="LR";
    -    a -- b [label=" purchased"]
    -    a -- c [label=" purchased"]
    -    b -- c [label=" co-purchased"]
    -
    -     a [label="client I"];
    -     b [label="table"];
    -     c [label="chairs"];
    -
    -}
    -
    1. Not checking the box will create a network where:

    -
    graph g {
    -    rankdir="LR";
    -    a -- b [label=" purchased"]
    -    a -- c [label=" purchased"]
    -
    -     a [label="client I"];
    -     b [label="table"];
    -     c [label="chairs"];
    -
    -}
    -
    "Remove duplicates"
    -

    → Check this option if your Excel or csv file has duplicate rows that you’d like to be removed

    -
    "Remove self-loops"
    -

    If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a self loop).

    -

    → Check this option if you’d like self loops to be removed.

    -

    7th panel

    -

    This panel recaps all the settings. Click on finish to create the network.

    -

    The end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials - to get help,

    -

    or visit the website for more tutorials -o get help,

    -

    or visit the website for more tutorials -rials/[the website for more tutorials] - - -

    site
-    stats
    -

    Creating a network from a table of cooccurring items

    2017-02-27

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    Upgrade: this plugin is now available as a web app!

    +

    I have transfered the plugin to a free web application, which makes it easier to access. +Visit the "network builder page" on Nocodefunctions.

    +

    You will be able to generate the file of a network (.gexf) and open it in Gephi.

    +

    Presentation of the plugin

    +

    This plugin is created by Clement Levallois.

    +

    It converts a spreadsheet or a csv file into a network.

    +

    This plugin enables you to:

    +
    • Start from a data table in Excel or csv format

    • In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.)

    +
    • In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc.

    • Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row)

    • Occurrences can have dates, multiple instances of an entity can be listed in a given column.

    +

    1. The input

    +
    excel 1 en
    Figure 1. An Excel file
    +

      + 

    +

    2. The output

    +
    gephi result 1 en
    Figure 2. Resulting network
    +

      + 

    +

    Installing the plugin

    +
    Choose the menu Tools then Plugins
    Figure 3. Choose the menu Tools then Plugins
    +

      + 

    +
    Click on the tab Available Plugins
    Figure 4. Click on the tab Available Plugins
    +

      + 

    +
    Install the plugin Convert Excel and Csv files and restart Gephi
    Figure 5. Install the plugin Convert Excel and Csv files and restart Gephi
    +

      + 

    +

    Opening the plugin

    +
    Open the plugin via the menu File   Import
    Figure 6. Open the plugin via the menu File - Import
    +

      + 

    +

    Using the plugin

    +

    2nd panel

    +
    Select a file
    Figure 7. Select a file
    +

      + 

    +
    excel 2 en
    Figure 8. A file without headers
    +

      + 

    +
    excel 1 en
    Figure 9. A file with headers
    +

      + 

    +

    To describe the next screens of the plugin, we will take the example of the Excel file just shown, with headers.

    +

    3rd panel

    +
    plugin panels 1 en
    Figure 10. Which entities should be the nodes?
    +

      + 

    +

    What does this panel mean?

    +

    If you look back at the Excel file, you see that we have "Clients" and their "Purchases".

    +

    → This means we can build 2 different types of networks, depending on our needs:

    +
    1. A network showing clients and products, with relations representing purchases from a client to a product.

    +
    graph g {
    +    rankdir="LR";
    +    client -- product [ label="purchased" ]
    +}
    +

    To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen.

    +
    1. Or a network where 2 products are connected, if one client puchased them together.

    +
    graph g {
    +    rankdir="LR";
    +    a -- b [label=" purchased together"]
    +     a [label="product 1"];
    +     b [label="product 2"];
    +}
    +

    To create this kind of networks, choose "Purchases" in the upper and lower windows of the plugin screen.

    +

    4th panel

    +
    subfield delimiter en
    Figure 11. Choosing which delimiter is used
    +

      + 

    +

    This 3rd panel asks: in our Excel file, how are different items separated in a given cell? +In our example, we have used commas: the lists of products purchased are comma-separated:

    +
    commas shown in red
    Figure 12. commas shown in red
    +

      + 

    +

    5th panel

    +

    This panel allows you to specify whether the relations are dynamic in time, or not.

    +

    In this case, you need an extra column (column C), where a date is shown. We don’t cover this case here.

    +

    (read the tutorials on dynamic networks for a starter)

    +

    6th panel

    +
    panel 6 1 en
    Figure 13. Options panel
    +

      + 

    +
    "Create links between Purchases agents and links between Purchase agents"
    +

    → If you chose a Product ←→ Product kind of network in panel 3, then of course you are interested in links between products. Check the box.

    +

    → But if you chose a Client ←→ Product kind of network in panel 3, what you need is less obvious.

    +

    Let’s take the example of client I, who purchased a table and some chairs:

    +
    1. Checking the box will create a network where:

    +
    graph g {
    +    rankdir="LR";
    +    a -- b [label=" purchased"]
    +    a -- c [label=" purchased"]
    +    b -- c [label=" co-purchased"]
    +
    +     a [label="client I"];
    +     b [label="table"];
    +     c [label="chairs"];
    +
    +}
    +
    1. Not checking the box will create a network where:

    +
    graph g {
    +    rankdir="LR";
    +    a -- b [label=" purchased"]
    +    a -- c [label=" purchased"]
    +
    +     a [label="client I"];
    +     b [label="table"];
    +     c [label="chairs"];
    +
    +}
    +
    "Remove duplicates"
    +

    → Check this option if your Excel or csv file has duplicate rows that you’d like to be removed

    +
    "Remove self-loops"
    +

    If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a self loop).

    +

    → Check this option if you’d like self loops to be removed.

    +

    7th panel

    +

    This panel recaps all the settings. Click on finish to create the network.

    +

    The end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +] to get help,

    +

    or visit the website for more tutorials + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/creating-a-simple-dynamic-network.html b/docs/generated-slides/creating-a-simple-dynamic-network.html index 32f13cc..ded3968 100644 --- a/docs/generated-slides/creating-a-simple-dynamic-network.html +++ b/docs/generated-slides/creating-a-simple-dynamic-network.html @@ -1,483 +1,488 @@ -Creating a simple dynamic network

    Creating a simple dynamic network

    2017-02-16

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    1. Goals of this tutorial

    -
    • We are going to create one very simple non dynamic network (network "A").

    • then we will create a modified version of it (network "B").

    • in both files, we need to modify a single line.

    • finally, we will merge networks A and B, forming a new dynamic network evolving from version A to B.

    -

    The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, skip to here.

    -

    We create the networks in this tutorial to provide the most simple and clear case.

    -

    2. Open a new project in Gephi

    -
    • open Gephi. On the Welcome screen that appears, click on New Project

    -
    Open a new project
    Figure 1. Open a new project
    -

      - 

    -

    3. creating network "A"

    -

    Our project is empty. -We can use a simple click-and-point tool to create a network:

    -
    Icon for node creation
    Figure 2. Icon for node creation
    -

      - 

    -
    A few nodes have been created
    Figure 3. A few nodes have been created
    -

      - 

    -

    When you have created a couple of nodes, click again on the pencil icon to stop the node creation.

    -

    Export the network as a file and call it "network A":

    -
    Exporting the network
    Figure 4. Exporting the network
    -

      - 

    -
    Choosing the gexf file format
    Figure 5. Choosing the gexf file format
    -

      - 

    -

    Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph.

    -

    4. Creating network "B"

    -

    Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!)

    -
    Choosing the gexf file format
    Figure 6. Choosing the gexf file format
    -

      - 

    -

    Create one edge, or a couple of edges, in this way.

    -

    Clicking again on the pencil stops the edge creation by mouse clicks.

    -

    Then export the network in the same folder where we put the previous file (File → Export → Graph File …​)

    -

    This time, name the file 'network B.gexf' and remember to choose the gexf file format just like we did before.

    -

    5. Modifying just one line in the files network A.gexf and network B.gexf

    -

    From your computer, open network A.gexf with a text editor (don’t use Microsoft Word!):

    -

    (here is how to do it on a Mac, and on Windows).

    -
    The network file opened
    Figure 7. The network file opened
    -

      - 

    -

    Delete and replace this line by this one:

    -
    <graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="1">
    -

    See timestamp="1" ? It means this will be the first "time slice" of your dynamic network.

    -

    Save the file.

    -

    Repeat the steps for network B.gexf:

    -
    • open the file in a text editor,

    • find the line <graph defaultedgetype="directed" mode="static">

    • replace it by:

    -
    <graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="2">
    -

    (see that we have timestamp="2" here: this is going to be the second time slice!)

    -
    • save the file.

    -

    6. Merging network "A" and "B" into a dynamic network

    -

    We will use the 2 files network A.gexf and network B.gexf that we have created.

    -

    First, let’s close the project we have in Gephi, without saving:

    -
    Closing the current project
    Figure 8. Closing the current project
    -

      - 

    -

    Then click on File → Open and navigate to the folder where network A.gexf and network B.gexf are located:

    -
    Opening files
    Figure 9. Opening files
    -

      - 

    -

    Here, make sure you select the 2 files at once (using the key Ctrl on pc or {commandkey} on mac).

    -
    Opening 2 files at once
    Figure 10. Opening 2 files at once
    -

      - 

    -

    Opening the files display a report window:

    -
    Import report window
    Figure 11. Import report window
    -

      - 

    -

    7. Enabling the timeline

    -

    You should see this button, click on it (if not: something went wrong. Retrace your steps)

    -
    Enable the timeline
    Figure 12. Enable the timeline
    -

      - 

    -

    Click and slide the right side border of the timeline to the left. You should see the edge disappear:

    -
    Sliding the timeline
    Figure 13. Sliding the timeline
    -

      - 

    -

    We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts.

    -

    These features will be explained in the coming tutorials on dynamic networks with Gephi.

    -

    8. More tutorials on dynamic networks with Gephi

    -
    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials - to get help,

    -

    or visit the website for more tutorials -o get help,

    -

    or visit the website for more tutorials -rials/[the website for more tutorials] - - -

    site
-    stats
    -

    Creating a simple dynamic network

    2017-02-16

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    1. Goals of this tutorial

    +
    • We are going to create one very simple non dynamic network (network "A").

    • then we will create a modified version of it (network "B").

    • in both files, we need to modify a single line.

    • finally, we will merge networks A and B, forming a new dynamic network evolving from version A to B.

    +

    The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, skip to here.

    +

    We create the networks in this tutorial to provide the most simple and clear case.

    +

    2. Open a new project in Gephi

    +
    • open Gephi. On the Welcome screen that appears, click on New Project

    +
    Open a new project
    Figure 1. Open a new project
    +

      + 

    +

    3. creating network "A"

    +

    Our project is empty. +We can use a simple click-and-point tool to create a network:

    +
    Icon for node creation
    Figure 2. Icon for node creation
    +

      + 

    +
    A few nodes have been created
    Figure 3. A few nodes have been created
    +

      + 

    +

    When you have created a couple of nodes, click again on the pencil icon to stop the node creation.

    +

    Export the network as a file and call it "network A":

    +
    Exporting the network
    Figure 4. Exporting the network
    +

      + 

    +
    Choosing the gexf file format
    Figure 5. Choosing the gexf file format
    +

      + 

    +

    Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph.

    +

    4. Creating network "B"

    +

    Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!)

    +
    Choosing the gexf file format
    Figure 6. Choosing the gexf file format
    +

      + 

    +

    Create one edge, or a couple of edges, in this way.

    +

    Clicking again on the pencil stops the edge creation by mouse clicks.

    +

    Then export the network in the same folder where we put the previous file (File → Export → Graph File …​)

    +

    This time, name the file 'network B.gexf' and remember to choose the gexf file format just like we did before.

    +

    5. Modifying just one line in the files network A.gexf and network B.gexf

    +

    From your computer, open network A.gexf with a text editor (don’t use Microsoft Word!):

    +

    (here is how to do it on a Mac, and on Windows).

    +
    The network file opened
    Figure 7. The network file opened
    +

      + 

    +

    Delete and replace this line by this one:

    +
    <graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="1">
    +

    See timestamp="1" ? It means this will be the first "time slice" of your dynamic network.

    +

    Save the file.

    +

    Repeat the steps for network B.gexf:

    +
    • open the file in a text editor,

    • find the line <graph defaultedgetype="directed" mode="static">

    • replace it by:

    +
    <graph mode="slice" defaultedgetype="directed" timerepresentation="timestamp" timestamp="2">
    +

    (see that we have timestamp="2" here: this is going to be the second time slice!)

    +
    • save the file.

    +

    6. Merging network "A" and "B" into a dynamic network

    +

    We will use the 2 files network A.gexf and network B.gexf that we have created.

    +

    First, let’s close the project we have in Gephi, without saving:

    +
    Closing the current project
    Figure 8. Closing the current project
    +

      + 

    +

    Then click on File → Open and navigate to the folder where network A.gexf and network B.gexf are located:

    +
    Opening files
    Figure 9. Opening files
    +

      + 

    +

    Here, make sure you select the 2 files at once (using the key Ctrl on pc or {commandkey} on mac).

    +
    Opening 2 files at once
    Figure 10. Opening 2 files at once
    +

      + 

    +

    Opening the files display a report window:

    +
    Import report window
    Figure 11. Import report window
    +

      + 

    +

    7. Enabling the timeline

    +

    You should see this button, click on it (if not: something went wrong. Retrace your steps)

    +
    Enable the timeline
    Figure 12. Enable the timeline
    +

      + 

    +

    Click and slide the right side border of the timeline to the left. You should see the edge disappear:

    +
    Sliding the timeline
    Figure 13. Sliding the timeline
    +

      + 

    +

    We created a dynamic network. +It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts.

    +

    These features will be explained in the coming tutorials on dynamic networks with Gephi.

    +

    8. More tutorials on dynamic networks with Gephi

    +
    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials +to get help,

    +

    or visit the website for more tutorials + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/en/book/.asciidoctor/diagram/client-to-product.png.cache b/docs/generated-slides/en/book/.asciidoctor/diagram/client-to-product.png.cache deleted file mode 100644 index 942b67f..0000000 --- a/docs/generated-slides/en/book/.asciidoctor/diagram/client-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a67c50f19fc15308972a0678868b7e33","width":321,"height":59} \ No newline at end of file diff --git a/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache b/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache deleted file mode 100644 index 1eade1c..0000000 --- a/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"9de9ec5b8a97bb23a64100d229aa1bf4","width":322,"height":131} \ No newline at end of file diff --git a/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-included.png.cache b/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-included.png.cache deleted file mode 100644 index 080267f..0000000 --- a/docs/generated-slides/en/book/.asciidoctor/diagram/inner-links-included.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"6b702ce96acce793bf0a507d0d001797","width":560,"height":99} \ No newline at end of file diff --git a/docs/generated-slides/en/book/.asciidoctor/diagram/product-to-product.png.cache b/docs/generated-slides/en/book/.asciidoctor/diagram/product-to-product.png.cache deleted file mode 100644 index d5e5962..0000000 --- a/docs/generated-slides/en/book/.asciidoctor/diagram/product-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a4eca6ee549cfb02fcdbcff45afa396c","width":453,"height":59} \ No newline at end of file diff --git a/docs/generated-slides/en/book/book-gephi-tutorials-en.pdf b/docs/generated-slides/en/book/book-gephi-tutorials-en.pdf deleted file mode 100644 index d448468..0000000 Binary files a/docs/generated-slides/en/book/book-gephi-tutorials-en.pdf and /dev/null differ diff --git a/docs/generated-slides/en/book/custom.xls b/docs/generated-slides/en/book/custom.xls deleted file mode 100644 index f94a106..0000000 --- a/docs/generated-slides/en/book/custom.xls +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - appendix toc,title - article/appendix nop - article toc,title - book toc,title - chapter toc,title - part toc,title - preface toc,title - qandadiv toc - qandaset toc - reference toc,title - sect1 toc - sect2 toc - sect3 toc - sect4 toc - sect5 toc - section toc - set toc,title - - - - - -6.3in -... - - - - -0 -0 -0 -0 - - - -1 -0 - - - - -0 -1.0 - - - -1.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -auto - - - - - - - - - - - - - - - -auto - - - - -auto - - - - - - - - - - - - - - - -auto - - - - -auto - - - - - - - - - - - -% - -scale-to-fit -scale-down-to-fit - - - - -auto - - - - - - - - - - - -% - -scale-to-fit -scale-down-to-fit - - - - - - - - - - - - - - - - - - - - -before -center -after -auto - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache b/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache deleted file mode 100644 index 942b67f..0000000 --- a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/client-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a67c50f19fc15308972a0678868b7e33","width":321,"height":59} \ No newline at end of file diff --git a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache b/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache deleted file mode 100644 index 1eade1c..0000000 --- a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-excluded.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"9de9ec5b8a97bb23a64100d229aa1bf4","width":322,"height":131} \ No newline at end of file diff --git a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache b/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache deleted file mode 100644 index 080267f..0000000 --- a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/inner-links-included.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"6b702ce96acce793bf0a507d0d001797","width":560,"height":99} \ No newline at end of file diff --git a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache b/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache deleted file mode 100644 index d5e5962..0000000 --- a/docs/generated-slides/en/book/en/book/.asciidoctor/diagram/product-to-product.png.cache +++ /dev/null @@ -1 +0,0 @@ -{"checksum":"a4eca6ee549cfb02fcdbcff45afa396c","width":453,"height":59} \ No newline at end of file diff --git a/docs/generated-slides/en/book/en/book/book-gephi-tutorials-en.pdf b/docs/generated-slides/en/book/en/book/book-gephi-tutorials-en.pdf deleted file mode 100644 index a5295a1..0000000 Binary files a/docs/generated-slides/en/book/en/book/book-gephi-tutorials-en.pdf and /dev/null differ diff --git a/docs/generated-slides/en/book/en/book/toc.txt b/docs/generated-slides/en/book/en/book/toc.txt deleted file mode 100644 index 5963b02..0000000 --- a/docs/generated-slides/en/book/en/book/toc.txt +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\how should Gephi be pronounced.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\what-is-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\history-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\simple-project-from-a-to-z-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\using-filters-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\importing-csv-data-in-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\working-with-text-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\cooccurrences-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\k-partite-bi-partite-graph-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\semantic-web-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\similarity-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\twitter-streaming-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\developers\working-from-the-source-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\converting-a-network-with-dates-into-dynamic.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\creating-a-simple-dynamic-network.adoc diff --git a/docs/generated-slides/en/book/images/3-groups-of-icons.png b/docs/generated-slides/en/book/images/3-groups-of-icons.png deleted file mode 100644 index 50293b3..0000000 Binary files a/docs/generated-slides/en/book/images/3-groups-of-icons.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/A-few-nodes-have-been-created.png b/docs/generated-slides/en/book/images/A-few-nodes-have-been-created.png deleted file mode 100644 index c82b501..0000000 Binary files a/docs/generated-slides/en/book/images/A-few-nodes-have-been-created.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Adding-a-column-for-Names.png b/docs/generated-slides/en/book/images/Adding-a-column-for-Names.png deleted file mode 100644 index e35c399..0000000 Binary files a/docs/generated-slides/en/book/images/Adding-a-column-for-Names.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png b/docs/generated-slides/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png deleted file mode 100644 index 48c52f6..0000000 Binary files a/docs/generated-slides/en/book/images/Adding-terms-and-launching-the-collection-of-tweets.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Adjusting-edge-thickness.png b/docs/generated-slides/en/book/images/Adjusting-edge-thickness.png deleted file mode 100644 index 94b40bb..0000000 Binary files a/docs/generated-slides/en/book/images/Adjusting-edge-thickness.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Adjusting-label-size.png b/docs/generated-slides/en/book/images/Adjusting-label-size.png deleted file mode 100644 index 327b291..0000000 Binary files a/docs/generated-slides/en/book/images/Adjusting-label-size.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/An-Excel-file-with-weights.png b/docs/generated-slides/en/book/images/An-Excel-file-with-weights.png deleted file mode 100644 index cd166b0..0000000 Binary files a/docs/generated-slides/en/book/images/An-Excel-file-with-weights.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/An-Excel-file.png b/docs/generated-slides/en/book/images/An-Excel-file.png deleted file mode 100644 index f13c380..0000000 Binary files a/docs/generated-slides/en/book/images/An-Excel-file.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Appearance-and-layout-panels-in-Gephi.png b/docs/generated-slides/en/book/images/Appearance-and-layout-panels-in-Gephi.png deleted file mode 100644 index 61f689d..0000000 Binary files a/docs/generated-slides/en/book/images/Appearance-and-layout-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Appearand-and-layout-panels-in-Gephi.png b/docs/generated-slides/en/book/images/Appearand-and-layout-panels-in-Gephi.png deleted file mode 100644 index 07be9d7..0000000 Binary files a/docs/generated-slides/en/book/images/Appearand-and-layout-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Choose-a-username.png b/docs/generated-slides/en/book/images/Choose-a-username.png deleted file mode 100644 index 124c44d..0000000 Binary files a/docs/generated-slides/en/book/images/Choose-a-username.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Choose-the-menu-Tools-then-Plugins.png b/docs/generated-slides/en/book/images/Choose-the-menu-Tools-then-Plugins.png deleted file mode 100644 index 6c39d7a..0000000 Binary files a/docs/generated-slides/en/book/images/Choose-the-menu-Tools-then-Plugins.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Choosing-the-gexf-file-format.png b/docs/generated-slides/en/book/images/Choosing-the-gexf-file-format.png deleted file mode 100644 index 2fb60db..0000000 Binary files a/docs/generated-slides/en/book/images/Choosing-the-gexf-file-format.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Click-on-Create-my-access-token.png b/docs/generated-slides/en/book/images/Click-on-Create-my-access-token.png deleted file mode 100644 index 778a4eb..0000000 Binary files a/docs/generated-slides/en/book/images/Click-on-Create-my-access-token.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Click-on-Keys-and-Access-Tokens.png b/docs/generated-slides/en/book/images/Click-on-Keys-and-Access-Tokens.png deleted file mode 100644 index caa9615..0000000 Binary files a/docs/generated-slides/en/book/images/Click-on-Keys-and-Access-Tokens.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Click-on-the-tab-Available-Plugins.png b/docs/generated-slides/en/book/images/Click-on-the-tab-Available-Plugins.png deleted file mode 100644 index 4f94d49..0000000 Binary files a/docs/generated-slides/en/book/images/Click-on-the-tab-Available-Plugins.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Cloning-the-gephi-source.png b/docs/generated-slides/en/book/images/Cloning-the-gephi-source.png deleted file mode 100644 index 3b038cc..0000000 Binary files a/docs/generated-slides/en/book/images/Cloning-the-gephi-source.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Closing-the-current-project.png b/docs/generated-slides/en/book/images/Closing-the-current-project.png deleted file mode 100644 index b97cab4..0000000 Binary files a/docs/generated-slides/en/book/images/Closing-the-current-project.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Coloring-nodes-according-to-their-gender.png b/docs/generated-slides/en/book/images/Coloring-nodes-according-to-their-gender.png deleted file mode 100644 index 537e4ac..0000000 Binary files a/docs/generated-slides/en/book/images/Coloring-nodes-according-to-their-gender.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Computing-betweenness-centrality.png b/docs/generated-slides/en/book/images/Computing-betweenness-centrality.png deleted file mode 100644 index f52ad07..0000000 Binary files a/docs/generated-slides/en/book/images/Computing-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Confirmation-of-the-sign-up.png b/docs/generated-slides/en/book/images/Confirmation-of-the-sign-up.png deleted file mode 100644 index 649a0b0..0000000 Binary files a/docs/generated-slides/en/book/images/Confirmation-of-the-sign-up.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Copy-paste-these-codes-into-Gephi.png b/docs/generated-slides/en/book/images/Copy-paste-these-codes-into-Gephi.png deleted file mode 100644 index 3b490f7..0000000 Binary files a/docs/generated-slides/en/book/images/Copy-paste-these-codes-into-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Copying-to-this-new-column.png b/docs/generated-slides/en/book/images/Copying-to-this-new-column.png deleted file mode 100644 index f442713..0000000 Binary files a/docs/generated-slides/en/book/images/Copying-to-this-new-column.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Create-a-new-app.png b/docs/generated-slides/en/book/images/Create-a-new-app.png deleted file mode 100644 index 6d77c3d..0000000 Binary files a/docs/generated-slides/en/book/images/Create-a-new-app.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Creating-a-Twitter-account.png b/docs/generated-slides/en/book/images/Creating-a-Twitter-account.png deleted file mode 100644 index 1294906..0000000 Binary files a/docs/generated-slides/en/book/images/Creating-a-Twitter-account.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png b/docs/generated-slides/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png deleted file mode 100644 index c13c4a2..0000000 Binary files a/docs/generated-slides/en/book/images/Different-centrality-measures-visible-in-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Display-the-plugin-in-Gephi.png b/docs/generated-slides/en/book/images/Display-the-plugin-in-Gephi.png deleted file mode 100644 index 3237725..0000000 Binary files a/docs/generated-slides/en/book/images/Display-the-plugin-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Edges-attributes..png b/docs/generated-slides/en/book/images/Edges-attributes..png deleted file mode 100644 index 2f00136..0000000 Binary files a/docs/generated-slides/en/book/images/Edges-attributes..png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Enable-the-timeline.png b/docs/generated-slides/en/book/images/Enable-the-timeline.png deleted file mode 100644 index 5495445..0000000 Binary files a/docs/generated-slides/en/book/images/Enable-the-timeline.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Enter-the-verification-code-you-received-by-sms.png b/docs/generated-slides/en/book/images/Enter-the-verification-code-you-received-by-sms.png deleted file mode 100644 index e9fb8f9..0000000 Binary files a/docs/generated-slides/en/book/images/Enter-the-verification-code-you-received-by-sms.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Export-button.png b/docs/generated-slides/en/book/images/Export-button.png deleted file mode 100644 index 0aa8d95..0000000 Binary files a/docs/generated-slides/en/book/images/Export-button.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Exporting-the-network.png b/docs/generated-slides/en/book/images/Exporting-the-network.png deleted file mode 100644 index 14d6933..0000000 Binary files a/docs/generated-slides/en/book/images/Exporting-the-network.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Fill-in-the-fields.png b/docs/generated-slides/en/book/images/Fill-in-the-fields.png deleted file mode 100644 index 63390d6..0000000 Binary files a/docs/generated-slides/en/book/images/Fill-in-the-fields.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Filter-on-edge-weight.png b/docs/generated-slides/en/book/images/Filter-on-edge-weight.png deleted file mode 100644 index 89e4744..0000000 Binary files a/docs/generated-slides/en/book/images/Filter-on-edge-weight.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Filter-on-the-Gender-attribute.png b/docs/generated-slides/en/book/images/Filter-on-the-Gender-attribute.png deleted file mode 100644 index 558ec89..0000000 Binary files a/docs/generated-slides/en/book/images/Filter-on-the-Gender-attribute.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Filters-and-statistics-panels-in-Gephi.png b/docs/generated-slides/en/book/images/Filters-and-statistics-panels-in-Gephi.png deleted file mode 100644 index 606ab8a..0000000 Binary files a/docs/generated-slides/en/book/images/Filters-and-statistics-panels-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png b/docs/generated-slides/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png deleted file mode 100644 index f33baac..0000000 Binary files a/docs/generated-slides/en/book/images/Find-Network-Diameter-in-the-statistics-panel-and-click-on-Run.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Gephi--cumulative-downloads.png b/docs/generated-slides/en/book/images/Gephi--cumulative-downloads.png deleted file mode 100644 index b8d30ee..0000000 Binary files a/docs/generated-slides/en/book/images/Gephi--cumulative-downloads.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Icon-for-node-creation.png b/docs/generated-slides/en/book/images/Icon-for-node-creation.png deleted file mode 100644 index 4d6bc62..0000000 Binary files a/docs/generated-slides/en/book/images/Icon-for-node-creation.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Import-report-window.png b/docs/generated-slides/en/book/images/Import-report-window.png deleted file mode 100644 index 20678fe..0000000 Binary files a/docs/generated-slides/en/book/images/Import-report-window.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Importing-a-list-of-edges-with-attributes.png b/docs/generated-slides/en/book/images/Importing-a-list-of-edges-with-attributes.png deleted file mode 100644 index 970f961..0000000 Binary files a/docs/generated-slides/en/book/images/Importing-a-list-of-edges-with-attributes.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Importing-a-list-of-nodes-with-attributes.png b/docs/generated-slides/en/book/images/Importing-a-list-of-nodes-with-attributes.png deleted file mode 100644 index 6c22c23..0000000 Binary files a/docs/generated-slides/en/book/images/Importing-a-list-of-nodes-with-attributes.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Importing-nodes-with-labels-and-their-relations.png b/docs/generated-slides/en/book/images/Importing-nodes-with-labels-and-their-relations.png deleted file mode 100644 index 505e6ef..0000000 Binary files a/docs/generated-slides/en/book/images/Importing-nodes-with-labels-and-their-relations.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Install-the-plugin-and-restart-Gephi.png b/docs/generated-slides/en/book/images/Install-the-plugin-and-restart-Gephi.png deleted file mode 100644 index dc47375..0000000 Binary files a/docs/generated-slides/en/book/images/Install-the-plugin-and-restart-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Install-the-plugin-then-restart-Gephi.png b/docs/generated-slides/en/book/images/Install-the-plugin-then-restart-Gephi.png deleted file mode 100644 index 509510c..0000000 Binary files a/docs/generated-slides/en/book/images/Install-the-plugin-then-restart-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Launching-Gephi.png b/docs/generated-slides/en/book/images/Launching-Gephi.png deleted file mode 100644 index a5f139f..0000000 Binary files a/docs/generated-slides/en/book/images/Launching-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Making-the-Filter-panel-visible..png b/docs/generated-slides/en/book/images/Making-the-Filter-panel-visible..png deleted file mode 100644 index 534b178..0000000 Binary files a/docs/generated-slides/en/book/images/Making-the-Filter-panel-visible..png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Merge-columns.png b/docs/generated-slides/en/book/images/Merge-columns.png deleted file mode 100644 index 1c35253..0000000 Binary files a/docs/generated-slides/en/book/images/Merge-columns.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/New-filter-available.png b/docs/generated-slides/en/book/images/New-filter-available.png deleted file mode 100644 index f8ce6dc..0000000 Binary files a/docs/generated-slides/en/book/images/New-filter-available.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Nodes-attributes..png b/docs/generated-slides/en/book/images/Nodes-attributes..png deleted file mode 100644 index 80536b4..0000000 Binary files a/docs/generated-slides/en/book/images/Nodes-attributes..png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Open-a-new-project-in-Gephi.png b/docs/generated-slides/en/book/images/Open-a-new-project-in-Gephi.png deleted file mode 100644 index 9484b05..0000000 Binary files a/docs/generated-slides/en/book/images/Open-a-new-project-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Open-a-new-project.png b/docs/generated-slides/en/book/images/Open-a-new-project.png deleted file mode 100644 index dcfbb02..0000000 Binary files a/docs/generated-slides/en/book/images/Open-a-new-project.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Open-the-configuration-panel-for-screenshots.png b/docs/generated-slides/en/book/images/Open-the-configuration-panel-for-screenshots.png deleted file mode 100644 index c31f701..0000000 Binary files a/docs/generated-slides/en/book/images/Open-the-configuration-panel-for-screenshots.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Open-the-plugin-via-the-menu-File---Import.png b/docs/generated-slides/en/book/images/Open-the-plugin-via-the-menu-File---Import.png deleted file mode 100644 index 3da116e..0000000 Binary files a/docs/generated-slides/en/book/images/Open-the-plugin-via-the-menu-File---Import.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Opening-2-files-at-once.png b/docs/generated-slides/en/book/images/Opening-2-files-at-once.png deleted file mode 100644 index 3dffa60..0000000 Binary files a/docs/generated-slides/en/book/images/Opening-2-files-at-once.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Opening-files.png b/docs/generated-slides/en/book/images/Opening-files.png deleted file mode 100644 index 6c0e845..0000000 Binary files a/docs/generated-slides/en/book/images/Opening-files.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png b/docs/generated-slides/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png deleted file mode 100644 index bb7030a..0000000 Binary files a/docs/generated-slides/en/book/images/Parameters-for-the-computation-of-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Ranking-node-sizes-by-centrality.png b/docs/generated-slides/en/book/images/Ranking-node-sizes-by-centrality.png deleted file mode 100644 index 8fae248..0000000 Binary files a/docs/generated-slides/en/book/images/Ranking-node-sizes-by-centrality.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Report-after-the-computation-of-betweenness-centrality.png b/docs/generated-slides/en/book/images/Report-after-the-computation-of-betweenness-centrality.png deleted file mode 100644 index 646c52d..0000000 Binary files a/docs/generated-slides/en/book/images/Report-after-the-computation-of-betweenness-centrality.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Resizing-labels-to-reflect-their-node's-size.png b/docs/generated-slides/en/book/images/Resizing-labels-to-reflect-their-node's-size.png deleted file mode 100644 index 1c97bba..0000000 Binary files a/docs/generated-slides/en/book/images/Resizing-labels-to-reflect-their-node's-size.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Result-of-preview.png b/docs/generated-slides/en/book/images/Result-of-preview.png deleted file mode 100644 index b711446..0000000 Binary files a/docs/generated-slides/en/book/images/Result-of-preview.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Result.png b/docs/generated-slides/en/book/images/Result.png deleted file mode 100644 index cbac425..0000000 Binary files a/docs/generated-slides/en/book/images/Result.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png b/docs/generated-slides/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png deleted file mode 100644 index 8dab3ec..0000000 Binary files a/docs/generated-slides/en/book/images/Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Second-screen.png b/docs/generated-slides/en/book/images/Second-screen.png deleted file mode 100644 index 3070c25..0000000 Binary files a/docs/generated-slides/en/book/images/Second-screen.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Select-a-file.png b/docs/generated-slides/en/book/images/Select-a-file.png deleted file mode 100644 index 3cd2657..0000000 Binary files a/docs/generated-slides/en/book/images/Select-a-file.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png b/docs/generated-slides/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png deleted file mode 100644 index f316836..0000000 Binary files a/docs/generated-slides/en/book/images/Selecting-the-minimum-and-maximum-sizes-of-nodes.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Selection-of-the-network-logic.png b/docs/generated-slides/en/book/images/Selection-of-the-network-logic.png deleted file mode 100644 index fc6a1f8..0000000 Binary files a/docs/generated-slides/en/book/images/Selection-of-the-network-logic.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Set-up-the-parameters---1.png b/docs/generated-slides/en/book/images/Set-up-the-parameters---1.png deleted file mode 100644 index c443ada..0000000 Binary files a/docs/generated-slides/en/book/images/Set-up-the-parameters---1.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Sliding-the-timeline.png b/docs/generated-slides/en/book/images/Sliding-the-timeline.png deleted file mode 100644 index 9dcad6b..0000000 Binary files a/docs/generated-slides/en/book/images/Sliding-the-timeline.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Switching-the-view-to-the-data-laboratory.png b/docs/generated-slides/en/book/images/Switching-the-view-to-the-data-laboratory.png deleted file mode 100644 index c5c84f8..0000000 Binary files a/docs/generated-slides/en/book/images/Switching-the-view-to-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory-view.png b/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory-view.png deleted file mode 100644 index c5c84f8..0000000 Binary files a/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory-view.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory.png b/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory.png deleted file mode 100644 index 2f95aa4..0000000 Binary files a/docs/generated-slides/en/book/images/Switching-to-the-data-laboratory.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Switching-to-the-preview-panel.png b/docs/generated-slides/en/book/images/Switching-to-the-preview-panel.png deleted file mode 100644 index 4c4a2c2..0000000 Binary files a/docs/generated-slides/en/book/images/Switching-to-the-preview-panel.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/The-attributes-of-the-edges.png b/docs/generated-slides/en/book/images/The-attributes-of-the-edges.png deleted file mode 100644 index 08983e0..0000000 Binary files a/docs/generated-slides/en/book/images/The-attributes-of-the-edges.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/The-attributes-of-the-nodes.png b/docs/generated-slides/en/book/images/The-attributes-of-the-nodes.png deleted file mode 100644 index 928a804..0000000 Binary files a/docs/generated-slides/en/book/images/The-attributes-of-the-nodes.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/The-network-file-opened.png b/docs/generated-slides/en/book/images/The-network-file-opened.png deleted file mode 100644 index 5675494..0000000 Binary files a/docs/generated-slides/en/book/images/The-network-file-opened.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Updating-the-parameters.png b/docs/generated-slides/en/book/images/Updating-the-parameters.png deleted file mode 100644 index cd38129..0000000 Binary files a/docs/generated-slides/en/book/images/Updating-the-parameters.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png b/docs/generated-slides/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png deleted file mode 100644 index 3c9f6b5..0000000 Binary files a/docs/generated-slides/en/book/images/We-see-there-is-a-Gender-attribute-for-each-character..png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png b/docs/generated-slides/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png deleted file mode 100644 index 1f8106d..0000000 Binary files a/docs/generated-slides/en/book/images/Where-to-copy-paste-the-codes-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-edge-weight.png b/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-edge-weight.png deleted file mode 100644 index 89e4744..0000000 Binary files a/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-edge-weight.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png b/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png deleted file mode 100644 index 558ec89..0000000 Binary files a/docs/generated-slides/en/book/images/Where-to-find-the-filter-on-the-Gender-attribute.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Workflow-of-filters--size=stretch.png b/docs/generated-slides/en/book/images/Workflow-of-filters--size=stretch.png deleted file mode 100644 index 8f3d8e5..0000000 Binary files a/docs/generated-slides/en/book/images/Workflow-of-filters--size=stretch.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Workflow-of-filters..png b/docs/generated-slides/en/book/images/Workflow-of-filters..png deleted file mode 100644 index 02ff360..0000000 Binary files a/docs/generated-slides/en/book/images/Workflow-of-filters..png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/Zoom-on-three-attributes-representing-time.png b/docs/generated-slides/en/book/images/Zoom-on-three-attributes-representing-time.png deleted file mode 100644 index 802cd26..0000000 Binary files a/docs/generated-slides/en/book/images/Zoom-on-three-attributes-representing-time.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/appearance-miserables-result.png b/docs/generated-slides/en/book/images/appearance-miserables-result.png deleted file mode 100644 index 32d12c6..0000000 Binary files a/docs/generated-slides/en/book/images/appearance-miserables-result.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/applying-the-Force-Atlas-2-layout b/docs/generated-slides/en/book/images/applying-the-Force-Atlas-2-layout deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/images/changing-a-few-parameters-and-launching-the-layout.png b/docs/generated-slides/en/book/images/changing-a-few-parameters-and-launching-the-layout.png deleted file mode 100644 index d04c51a..0000000 Binary files a/docs/generated-slides/en/book/images/changing-a-few-parameters-and-launching-the-layout.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/changing-edge-thickness.gdraw b/docs/generated-slides/en/book/images/changing-edge-thickness.gdraw deleted file mode 100644 index fb2149a..0000000 --- a/docs/generated-slides/en/book/images/changing-edge-thickness.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1v5MHM6fKeYDoARowYKPeqYqrm6b5rJvVs2QYy0zRpHw", "doc_id": "1v5MHM6fKeYDoARowYKPeqYqrm6b5rJvVs2QYy0zRpHw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/client-to-product.png b/docs/generated-slides/en/book/images/client-to-product.png deleted file mode 100644 index e8ffb50..0000000 Binary files a/docs/generated-slides/en/book/images/client-to-product.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/commas-shown-in-red.png b/docs/generated-slides/en/book/images/commas-shown-in-red.png deleted file mode 100644 index 64b5d8b..0000000 Binary files a/docs/generated-slides/en/book/images/commas-shown-in-red.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/downloads.png b/docs/generated-slides/en/book/images/downloads.png deleted file mode 100644 index 945a9cf..0000000 Binary files a/docs/generated-slides/en/book/images/downloads.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/add-column-to-nodes-1-en.png b/docs/generated-slides/en/book/images/en/add-column-to-nodes-1-en.png deleted file mode 100644 index bcd836d..0000000 Binary files a/docs/generated-slides/en/book/images/en/add-column-to-nodes-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/appearance-miserables-detail-2-en.png b/docs/generated-slides/en/book/images/en/appearance-miserables-detail-2-en.png deleted file mode 100644 index 552b7c5..0000000 Binary files a/docs/generated-slides/en/book/images/en/appearance-miserables-detail-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/appearance-miserables-detail-en.png b/docs/generated-slides/en/book/images/en/appearance-miserables-detail-en.png deleted file mode 100644 index 3e1c7d6..0000000 Binary files a/docs/generated-slides/en/book/images/en/appearance-miserables-detail-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/appearance-miserables-en.gdraw b/docs/generated-slides/en/book/images/en/appearance-miserables-en.gdraw deleted file mode 100644 index e8c7624..0000000 --- a/docs/generated-slides/en/book/images/en/appearance-miserables-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ji71trYfVmCZs71p4l-ykP3ZNohcgEP6vbhboWpCBs0", "doc_id": "1ji71trYfVmCZs71p4l-ykP3ZNohcgEP6vbhboWpCBs0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/appearance-miserables-en.png b/docs/generated-slides/en/book/images/en/appearance-miserables-en.png deleted file mode 100644 index ea994a8..0000000 Binary files a/docs/generated-slides/en/book/images/en/appearance-miserables-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/changing-size-labels-en.gdraw b/docs/generated-slides/en/book/images/en/changing-size-labels-en.gdraw deleted file mode 100644 index fa00823..0000000 --- a/docs/generated-slides/en/book/images/en/changing-size-labels-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RCzqXjQtPr_0xfv0RKdpEsvmFN03qZMBMZbuWG8HHg4", "doc_id": "1RCzqXjQtPr_0xfv0RKdpEsvmFN03qZMBMZbuWG8HHg4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/changing-the-size-of-labels-en.png b/docs/generated-slides/en/book/images/en/changing-the-size-of-labels-en.png deleted file mode 100644 index 21d5ad2..0000000 Binary files a/docs/generated-slides/en/book/images/en/changing-the-size-of-labels-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/choosing-a-label-adjust-algo-en.png b/docs/generated-slides/en/book/images/en/choosing-a-label-adjust-algo-en.png deleted file mode 100644 index 2586b73..0000000 Binary files a/docs/generated-slides/en/book/images/en/choosing-a-label-adjust-algo-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/closing-project-1-en.gdraw b/docs/generated-slides/en/book/images/en/closing-project-1-en.gdraw deleted file mode 100644 index def4670..0000000 --- a/docs/generated-slides/en/book/images/en/closing-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1B9cfQcySPo8hJKs0WfKDxgaJRF4_cmvvW8LRQyQZJxs", "doc_id": "1B9cfQcySPo8hJKs0WfKDxgaJRF4_cmvvW8LRQyQZJxs", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/closing-project-1-en.png b/docs/generated-slides/en/book/images/en/closing-project-1-en.png deleted file mode 100644 index a8112fa..0000000 Binary files a/docs/generated-slides/en/book/images/en/closing-project-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-1-en.png b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-1-en.png deleted file mode 100644 index 34999e5..0000000 Binary files a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-2-en.png b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-2-en.png deleted file mode 100644 index c20b557..0000000 Binary files a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-3-en.png b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-3-en.png deleted file mode 100644 index 326f368..0000000 Binary files a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-detail-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.gdraw b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.gdraw deleted file mode 100644 index 23e788e..0000000 --- a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YW_ro0rmCWMEUYpWljyo1Gm6bUvTcYHRTKaJiWGz9G8", "doc_id": "1YW_ro0rmCWMEUYpWljyo1Gm6bUvTcYHRTKaJiWGz9G8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.png b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.png deleted file mode 100644 index 1bbd2ae..0000000 Binary files a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw deleted file mode 100644 index ddd0c4c..0000000 --- a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-parameters-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1NnnQr51LcC3kgpWrt2tC6diYxj6zjFp5a635CgUwGpQ", "doc_id": "1NnnQr51LcC3kgpWrt2tC6diYxj6zjFp5a635CgUwGpQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-report-en.gdraw b/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-report-en.gdraw deleted file mode 100644 index 16dfe23..0000000 --- a/docs/generated-slides/en/book/images/en/computing-betweenness-centrality-report-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1MVzrkgFrNX-ktVeTjSd9oET7nf7zAtRZh6lISmkn2Yw", "doc_id": "1MVzrkgFrNX-ktVeTjSd9oET7nf7zAtRZh6lISmkn2Yw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/configuration-screenshot-en.png b/docs/generated-slides/en/book/images/en/configuration-screenshot-en.png deleted file mode 100644 index 04ff344..0000000 Binary files a/docs/generated-slides/en/book/images/en/configuration-screenshot-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-1-en.png deleted file mode 100644 index c248992..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-2-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-2-en.png deleted file mode 100644 index 9a6a88a..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/excel-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw b/docs/generated-slides/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw deleted file mode 100644 index 8283a5c..0000000 --- a/docs/generated-slides/en/book/images/en/cooccurrences-computer/first-screen-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1KUPx3QRfnJRqd1psEHzuAD4vIegcyN7pSvViKI3GOK0", "doc_id": "1KUPx3QRfnJRqd1psEHzuAD4vIegcyN7pSvViKI3GOK0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png deleted file mode 100644 index bd999cf..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/gephi-result-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png deleted file mode 100644 index 2326567..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/opening-plugin-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/panel-6-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/panel-6-1-en.png deleted file mode 100644 index 1741e91..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/panel-6-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw b/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw deleted file mode 100644 index 2770b5b..0000000 --- a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1Eb7Mt8M-7T9Ua58Wzxo5gE2G1xu5WRHxwuH6Eq78ePg", "doc_id": "1Eb7Mt8M-7T9Ua58Wzxo5gE2G1xu5WRHxwuH6Eq78ePg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.png deleted file mode 100644 index ce8a458..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw b/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw deleted file mode 100644 index 2ea42e5..0000000 --- a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1jv9NuwvqHb5um4x88F_3ST75h4m2r7ePNJOnHoHE8ac", "doc_id": "1jv9NuwvqHb5um4x88F_3ST75h4m2r7ePNJOnHoHE8ac", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png deleted file mode 100644 index 694f4f8..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-installation-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png deleted file mode 100644 index b1b3a3e..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/plugin-panels-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw b/docs/generated-slides/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index 38b83e8..0000000 --- a/docs/generated-slides/en/book/images/en/cooccurrences-computer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1TGWiVBhEqqIRB7rr5ECYTt0vApDt3QMOslko3-g5Pjc", "doc_id": "1TGWiVBhEqqIRB7rr5ECYTt0vApDt3QMOslko3-g5Pjc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png b/docs/generated-slides/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png deleted file mode 100644 index 49cbeaf..0000000 Binary files a/docs/generated-slides/en/book/images/en/cooccurrences-computer/subfield-delimiter-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/copying-a-column-1-en.gdraw b/docs/generated-slides/en/book/images/en/copying-a-column-1-en.gdraw deleted file mode 100644 index 3ca24e0..0000000 --- a/docs/generated-slides/en/book/images/en/copying-a-column-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1_kcudyC1gz8rErPfL8xeUSASGnmFFrFUlcZcAStUr0s", "doc_id": "1_kcudyC1gz8rErPfL8xeUSASGnmFFrFUlcZcAStUr0s", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/copying-a-column-2-en.png b/docs/generated-slides/en/book/images/en/copying-a-column-2-en.png deleted file mode 100644 index abdc751..0000000 Binary files a/docs/generated-slides/en/book/images/en/copying-a-column-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/copying-a-column-3-en.png b/docs/generated-slides/en/book/images/en/copying-a-column-3-en.png deleted file mode 100644 index c1475af..0000000 Binary files a/docs/generated-slides/en/book/images/en/copying-a-column-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/create-network-icon-1-en.gdraw b/docs/generated-slides/en/book/images/en/create-network-icon-1-en.gdraw deleted file mode 100644 index 0be7904..0000000 --- a/docs/generated-slides/en/book/images/en/create-network-icon-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=175Hsx5C20OZHlVklRP9djm07cvr5wVXhE4y4LY22lYA", "doc_id": "175Hsx5C20OZHlVklRP9djm07cvr5wVXhE4y4LY22lYA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/create-network-icon-2-en.gdraw b/docs/generated-slides/en/book/images/en/create-network-icon-2-en.gdraw deleted file mode 100644 index f3f72f3..0000000 --- a/docs/generated-slides/en/book/images/en/create-network-icon-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1qbEY8qjSIGJ52p0Fh1lPaQOgRzqm-2cD-a3_GGwJX54", "doc_id": "1qbEY8qjSIGJ52p0Fh1lPaQOgRzqm-2cD-a3_GGwJX54", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/create-network-icon-2-en.png b/docs/generated-slides/en/book/images/en/create-network-icon-2-en.png deleted file mode 100644 index 34f6bb7..0000000 Binary files a/docs/generated-slides/en/book/images/en/create-network-icon-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/create-network-icon-3-en.gdraw b/docs/generated-slides/en/book/images/en/create-network-icon-3-en.gdraw deleted file mode 100644 index 31a56a6..0000000 --- a/docs/generated-slides/en/book/images/en/create-network-icon-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1jZQisROc2NbItLdYwBPoBSoMTrq1_Ro7wPkAaEji1Y4", "doc_id": "1jZQisROc2NbItLdYwBPoBSoMTrq1_Ro7wPkAaEji1Y4", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.gdraw b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.gdraw deleted file mode 100644 index 4634ba5..0000000 --- a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=13I3JgpUvi6DEgP3-p9AGNx58nDorKAZ7zz-VsGME7dk", "doc_id": "13I3JgpUvi6DEgP3-p9AGNx58nDorKAZ7zz-VsGME7dk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.png deleted file mode 100644 index c44ac81..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-1-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-1-en.png deleted file mode 100644 index df49dce..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw deleted file mode 100644 index d371fd2..0000000 --- a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1lOYVf9MzwRx_C73oZaQGqwJghiNkpNhAdyd_5E_H_J0", "doc_id": "1lOYVf9MzwRx_C73oZaQGqwJghiNkpNhAdyd_5E_H_J0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.png deleted file mode 100644 index a2cf49b..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw deleted file mode 100644 index a52ae37..0000000 --- a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-centrality-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1R7TcAUYohW6muDlCJF8tnlJYLqVwQNYqpE-gwNC8AJM", "doc_id": "1R7TcAUYohW6muDlCJF8tnlJYLqVwQNYqpE-gwNC8AJM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-1-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-1-en.png deleted file mode 100644 index 3682ac8..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-2-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-2-en.png deleted file mode 100644 index 50d40ea..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-detail-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.gdraw b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.gdraw deleted file mode 100644 index 43b856e..0000000 --- a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18xfapCWEHhcOsjiZbBfgTThgWu9gJEsxUzxvWGmHfek", "doc_id": "18xfapCWEHhcOsjiZbBfgTThgWu9gJEsxUzxvWGmHfek", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.png b/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.png deleted file mode 100644 index 73dc769..0000000 Binary files a/docs/generated-slides/en/book/images/en/data-laboratory-miserables-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-1-en.png b/docs/generated-slides/en/book/images/en/developers/enclosing-circles-1-en.png deleted file mode 100644 index d804abb..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-2-en.png b/docs/generated-slides/en/book/images/en/developers/enclosing-circles-2-en.png deleted file mode 100644 index edaf7bf..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-3-en.png b/docs/generated-slides/en/book/images/en/developers/enclosing-circles-3-en.png deleted file mode 100644 index da7bec6..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-4-en.gdraw b/docs/generated-slides/en/book/images/en/developers/enclosing-circles-4-en.gdraw deleted file mode 100644 index 4197f5e..0000000 --- a/docs/generated-slides/en/book/images/en/developers/enclosing-circles-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1Dcw2s1TlfajOkivkhKbwzlDNJjJfKQZfZ1tFEmB4HPA", "doc_id": "1Dcw2s1TlfajOkivkhKbwzlDNJjJfKQZfZ1tFEmB4HPA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-0-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-0-en.png deleted file mode 100644 index ac36d69..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-0-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.gdraw b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.gdraw deleted file mode 100644 index 3a6191f..0000000 --- a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=104JYNth46_6v3nvsWvVVy2AssX3dsvhoYbYcZVwL5o0", "doc_id": "104JYNth46_6v3nvsWvVVy2AssX3dsvhoYbYcZVwL5o0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.png deleted file mode 100644 index 3c728cf..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-2-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-2-en.png deleted file mode 100644 index 98d3c3a..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-3-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-3-en.png deleted file mode 100644 index dc0086b..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-4-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-4-en.png deleted file mode 100644 index 6b3a041..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-5-en.png b/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-5-en.png deleted file mode 100644 index a07f21f..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/git-clone-gephi-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw b/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw deleted file mode 100644 index 5ac8504..0000000 --- a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-launch-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1zU-H3qQpGuP00DHLQli9ei8hCFyJRliRxUe91ZfF834", "doc_id": "1zU-H3qQpGuP00DHLQli9ei8hCFyJRliRxUe91ZfF834", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-1-en.png b/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-1-en.png deleted file mode 100644 index fe15a5b..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-2-en.png b/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-2-en.png deleted file mode 100644 index 81c188e..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-3-en.png b/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-3-en.png deleted file mode 100644 index dec4546..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-4-en.png b/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-4-en.png deleted file mode 100644 index 9e438f2..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/netbeans-gephi-source-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/screenshot-encircling-pdf.png b/docs/generated-slides/en/book/images/en/developers/screenshot-encircling-pdf.png deleted file mode 100644 index b5aa0d0..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/screenshot-encircling-pdf.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/developers/use-the-source.jpg b/docs/generated-slides/en/book/images/en/developers/use-the-source.jpg deleted file mode 100644 index 46b7e75..0000000 Binary files a/docs/generated-slides/en/book/images/en/developers/use-the-source.jpg and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/empty-project-1-en.png b/docs/generated-slides/en/book/images/en/empty-project-1-en.png deleted file mode 100644 index f3ebdf4..0000000 Binary files a/docs/generated-slides/en/book/images/en/empty-project-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/enable-timeline.png b/docs/generated-slides/en/book/images/en/enable-timeline.png deleted file mode 100644 index 48bd01a..0000000 Binary files a/docs/generated-slides/en/book/images/en/enable-timeline.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/export-graph-file-1-en.png b/docs/generated-slides/en/book/images/en/export-graph-file-1-en.png deleted file mode 100644 index 50a8598..0000000 Binary files a/docs/generated-slides/en/book/images/en/export-graph-file-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/export-graph-file-2-en.png b/docs/generated-slides/en/book/images/en/export-graph-file-2-en.png deleted file mode 100644 index c026f38..0000000 Binary files a/docs/generated-slides/en/book/images/en/export-graph-file-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/export-network-1-en.gdraw b/docs/generated-slides/en/book/images/en/export-network-1-en.gdraw deleted file mode 100644 index 993ca0a..0000000 --- a/docs/generated-slides/en/book/images/en/export-network-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1CkYFDK8Jx9TYdfPsNLhi15lg1_8VIUvNIwg6AKEaCV0", "doc_id": "1CkYFDK8Jx9TYdfPsNLhi15lg1_8VIUvNIwg6AKEaCV0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/export-network-2-en.gdraw b/docs/generated-slides/en/book/images/en/export-network-2-en.gdraw deleted file mode 100644 index c41d9d3..0000000 --- a/docs/generated-slides/en/book/images/en/export-network-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1qe4gW-DIdfCQy4Kka3LO50CVnxgon0XP6m--KpLbSDQ", "doc_id": "1qe4gW-DIdfCQy4Kka3LO50CVnxgon0XP6m--KpLbSDQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/file-open-1-en.gdraw b/docs/generated-slides/en/book/images/en/file-open-1-en.gdraw deleted file mode 100644 index 40bc332..0000000 --- a/docs/generated-slides/en/book/images/en/file-open-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1xqucwiI1ScHUYUIFzZVJI71Cn5uSX1TTVR2FOBIOko8", "doc_id": "1xqucwiI1ScHUYUIFzZVJI71Cn5uSX1TTVR2FOBIOko8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/file-open-1-en.png b/docs/generated-slides/en/book/images/en/file-open-1-en.png deleted file mode 100644 index b0321b4..0000000 Binary files a/docs/generated-slides/en/book/images/en/file-open-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filer-partition-node-1-en.png b/docs/generated-slides/en/book/images/en/filer-partition-node-1-en.png deleted file mode 100644 index 2aaa3e8..0000000 Binary files a/docs/generated-slides/en/book/images/en/filer-partition-node-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter--edges-weight-1-en.png b/docs/generated-slides/en/book/images/en/filter--edges-weight-1-en.png deleted file mode 100644 index 3674bb6..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter--edges-weight-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-degree-range-1-en.png b/docs/generated-slides/en/book/images/en/filter-degree-range-1-en.png deleted file mode 100644 index 05aaf9a..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-degree-range-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-edge-weight-1-en.png b/docs/generated-slides/en/book/images/en/filter-edge-weight-1-en.png deleted file mode 100644 index 5f17ddf..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-edge-weight-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-edge-weight-en.gif b/docs/generated-slides/en/book/images/en/filter-edge-weight-en.gif deleted file mode 100644 index 000fd4f..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-edge-weight-en.gif and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition-en.gif b/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition-en.gif deleted file mode 100644 index c20fba1..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition-en.gif and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition1-en.png b/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition1-en.png deleted file mode 100644 index b5c2c71..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-edge-weight-gender-partition1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-edges-weight-1-en.gdraw b/docs/generated-slides/en/book/images/en/filter-edges-weight-1-en.gdraw deleted file mode 100644 index 71474a4..0000000 --- a/docs/generated-slides/en/book/images/en/filter-edges-weight-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1e7v0uEppHrlbef17k3RiEdKByDyhHoWNfS66Qo-tyJw", "doc_id": "1e7v0uEppHrlbef17k3RiEdKByDyhHoWNfS66Qo-tyJw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/filter-giant-component-1-en.png b/docs/generated-slides/en/book/images/en/filter-giant-component-1-en.png deleted file mode 100644 index 3934f74..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-giant-component-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-name-1-en.png b/docs/generated-slides/en/book/images/en/filter-name-1-en.png deleted file mode 100644 index a4b8e57..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-name-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-name-2-en.png b/docs/generated-slides/en/book/images/en/filter-name-2-en.png deleted file mode 100644 index 048215c..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-name-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-name-3-en.png b/docs/generated-slides/en/book/images/en/filter-name-3-en.png deleted file mode 100644 index 1bd5004..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-name-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-not-1-en.png b/docs/generated-slides/en/book/images/en/filter-operator-not-1-en.png deleted file mode 100644 index b9c4cdd..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-not-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-not-2-en.png b/docs/generated-slides/en/book/images/en/filter-operator-not-2-en.png deleted file mode 100644 index 0cd2769..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-not-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-not-3-en.png b/docs/generated-slides/en/book/images/en/filter-operator-not-3-en.png deleted file mode 100644 index 92c8603..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-not-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-union-1-en.png b/docs/generated-slides/en/book/images/en/filter-operator-union-1-en.png deleted file mode 100644 index b8f5060..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-union-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-union-2-en.png b/docs/generated-slides/en/book/images/en/filter-operator-union-2-en.png deleted file mode 100644 index 6e2ed6e..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-union-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-operator-union-3-en.png b/docs/generated-slides/en/book/images/en/filter-operator-union-3-en.png deleted file mode 100644 index 9938be2..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-operator-union-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-order-1-en.png b/docs/generated-slides/en/book/images/en/filter-order-1-en.png deleted file mode 100644 index d6a65ca..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-order-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-order-2-en.png b/docs/generated-slides/en/book/images/en/filter-order-2-en.png deleted file mode 100644 index ee3202d..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-order-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-overview-1-en.gdraw b/docs/generated-slides/en/book/images/en/filter-overview-1-en.gdraw deleted file mode 100644 index 1465c31..0000000 --- a/docs/generated-slides/en/book/images/en/filter-overview-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1g5bFFvODcla2o1kHaBe6-TUt7XpzzMyk7QjGxQyVwXg", "doc_id": "1g5bFFvODcla2o1kHaBe6-TUt7XpzzMyk7QjGxQyVwXg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/filter-overview-1-en.png b/docs/generated-slides/en/book/images/en/filter-overview-1-en.png deleted file mode 100644 index f1a2b95..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-overview-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-panel-1-en.gdraw b/docs/generated-slides/en/book/images/en/filter-panel-1-en.gdraw deleted file mode 100644 index 06541f3..0000000 --- a/docs/generated-slides/en/book/images/en/filter-panel-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1s-JcF6FzfpLJs03FtGalp-dcm7o9MQ0xLNmPaWVCesg", "doc_id": "1s-JcF6FzfpLJs03FtGalp-dcm7o9MQ0xLNmPaWVCesg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/filter-panel-1-en.png b/docs/generated-slides/en/book/images/en/filter-panel-1-en.png deleted file mode 100644 index 84beff2..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-panel-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/filter-partition-node-1-en.gdraw b/docs/generated-slides/en/book/images/en/filter-partition-node-1-en.gdraw deleted file mode 100644 index 5790f0a..0000000 --- a/docs/generated-slides/en/book/images/en/filter-partition-node-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1imDKWPYyZLghWVXtHqc9D1sJNzNNhPh_QZsYk6DeCyk", "doc_id": "1imDKWPYyZLghWVXtHqc9D1sJNzNNhPh_QZsYk6DeCyk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/filter-reset-1-en.gdraw b/docs/generated-slides/en/book/images/en/filter-reset-1-en.gdraw deleted file mode 100644 index 40f220a..0000000 --- a/docs/generated-slides/en/book/images/en/filter-reset-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RRotHCX2t2hIGd1VTJIOdbIgJM4dbzeVR7qb_7RWPS0", "doc_id": "1RRotHCX2t2hIGd1VTJIOdbIgJM4dbzeVR7qb_7RWPS0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/filter-reset-1-en.png b/docs/generated-slides/en/book/images/en/filter-reset-1-en.png deleted file mode 100644 index cd195fa..0000000 Binary files a/docs/generated-slides/en/book/images/en/filter-reset-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/force-atlas2-few-parameters-en.gdraw b/docs/generated-slides/en/book/images/en/force-atlas2-few-parameters-en.gdraw deleted file mode 100644 index 9d88cfc..0000000 --- a/docs/generated-slides/en/book/images/en/force-atlas2-few-parameters-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1fjbjB0FS5-8mKJRlZMjLadaDyrALr5uSNb56otaYPZw", "doc_id": "1fjbjB0FS5-8mKJRlZMjLadaDyrALr5uSNb56otaYPZw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/force-atlas2-parameters-1-en.png b/docs/generated-slides/en/book/images/en/force-atlas2-parameters-1-en.png deleted file mode 100644 index f5d777a..0000000 Binary files a/docs/generated-slides/en/book/images/en/force-atlas2-parameters-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/force-atlas2-result.gdraw b/docs/generated-slides/en/book/images/en/force-atlas2-result.gdraw deleted file mode 100644 index 9c2bb0b..0000000 --- a/docs/generated-slides/en/book/images/en/force-atlas2-result.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1L-qozjIh5SXY2AeKNLb4PtErBY4R3HMRK-1YDtmmL6U", "doc_id": "1L-qozjIh5SXY2AeKNLb4PtErBY4R3HMRK-1YDtmmL6U", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en.png b/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en.png deleted file mode 100644 index 2db80cb..0000000 Binary files a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en_data.xml b/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en_data.xml deleted file mode 100644 index 0db4bce..0000000 --- a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-en_data.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-open-graph-en.png b/docs/generated-slides/en/book/images/en/gephi-welcome-screen-open-graph-en.png deleted file mode 100644 index 67835a9..0000000 Binary files a/docs/generated-slides/en/book/images/en/gephi-welcome-screen-open-graph-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.gdraw b/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.gdraw deleted file mode 100644 index f6a5b6a..0000000 --- a/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1LbrTrGb0iMAgos0oYkJMmpSAA_p2V-LrmNWlBIMQDr8", "doc_id": "1LbrTrGb0iMAgos0oYkJMmpSAA_p2V-LrmNWlBIMQDr8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.png b/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.png deleted file mode 100644 index 49afc38..0000000 Binary files a/docs/generated-slides/en/book/images/en/gexf-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/icon-pencils-1-en.png b/docs/generated-slides/en/book/images/en/icon-pencils-1-en.png deleted file mode 100644 index 719dcbc..0000000 Binary files a/docs/generated-slides/en/book/images/en/icon-pencils-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-1-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-1-en.png deleted file mode 100644 index 48cc339..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-2-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-2-en.png deleted file mode 100644 index 60c7fd0..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-3-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-3-en.png deleted file mode 100644 index 7f52218..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-4-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-4-en.png deleted file mode 100644 index 832f22b..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-5-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-5-en.png deleted file mode 100644 index 97b1ae8..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-6-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-6-en.png deleted file mode 100644 index 25493fa6..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-6-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-7-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-7-en.png deleted file mode 100644 index dd0f227..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-7-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-8-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-8-en.png deleted file mode 100644 index 2bc8204..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-8-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/import-spreadsheet-9-en.png b/docs/generated-slides/en/book/images/en/import-spreadsheet-9-en.png deleted file mode 100644 index c900cfe..0000000 Binary files a/docs/generated-slides/en/book/images/en/import-spreadsheet-9-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/importing-list-edges-1-en.gdraw b/docs/generated-slides/en/book/images/en/importing-list-edges-1-en.gdraw deleted file mode 100644 index ed13dbb..0000000 --- a/docs/generated-slides/en/book/images/en/importing-list-edges-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1HEm_B7VWgioiK673QSQg3cyEHUfHm5-9Jtwi3zTCvLM", "doc_id": "1HEm_B7VWgioiK673QSQg3cyEHUfHm5-9Jtwi3zTCvLM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/importing-list-edges-2-en.gdraw b/docs/generated-slides/en/book/images/en/importing-list-edges-2-en.gdraw deleted file mode 100644 index 898bed5..0000000 --- a/docs/generated-slides/en/book/images/en/importing-list-edges-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18XZRNVafjzvb7MKq7ALP8VOZtG9jKksSOqc0DaKZWCo", "doc_id": "18XZRNVafjzvb7MKq7ALP8VOZtG9jKksSOqc0DaKZWCo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/importing-list-nodes-1-en.gdraw b/docs/generated-slides/en/book/images/en/importing-list-nodes-1-en.gdraw deleted file mode 100644 index aacf62b..0000000 --- a/docs/generated-slides/en/book/images/en/importing-list-nodes-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wdPMQqeNSlGqrE1bM7CmNJx9htOqww-GGRf0AxphXDQ", "doc_id": "1wdPMQqeNSlGqrE1bM7CmNJx9htOqww-GGRf0AxphXDQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/importing-list-nodes-2-en.gdraw b/docs/generated-slides/en/book/images/en/importing-list-nodes-2-en.gdraw deleted file mode 100644 index 87854a0..0000000 --- a/docs/generated-slides/en/book/images/en/importing-list-nodes-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=18XFIfORPFWpRdASPYOo7bvmGhGl3yX5_fIm1oE8h6zY", "doc_id": "18XFIfORPFWpRdASPYOo7bvmGhGl3yX5_fIm1oE8h6zY", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-config-2.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-config-2.png deleted file mode 100644 index 1c23ee4..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-config-2.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-config.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-config.png deleted file mode 100644 index 531ec45..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-config.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-install-plugin.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-install-plugin.png deleted file mode 100644 index 6f6722a..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-install-plugin.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-c2c.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-c2c.png deleted file mode 100644 index 09dcd2a..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-c2c.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-graph.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-graph.png deleted file mode 100644 index 9562e82..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-graph.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-p2p.png b/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-p2p.png deleted file mode 100644 index be3aba6..0000000 Binary files a/docs/generated-slides/en/book/images/en/k-partite/k-partite-simple-p2p.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/merge-columns-1-en.gdraw b/docs/generated-slides/en/book/images/en/merge-columns-1-en.gdraw deleted file mode 100644 index 74e03bb..0000000 --- a/docs/generated-slides/en/book/images/en/merge-columns-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1rc2duup8Yh8N8zw0qOHR6VzKlYMV6lyOSGikFdiauhQ", "doc_id": "1rc2duup8Yh8N8zw0qOHR6VzKlYMV6lyOSGikFdiauhQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/merge-columns-2-en.gdraw b/docs/generated-slides/en/book/images/en/merge-columns-2-en.gdraw deleted file mode 100644 index c6c3552..0000000 --- a/docs/generated-slides/en/book/images/en/merge-columns-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1pqFrXX9W9Eo-tvq9DXd18WIyWqodHkWz43f5Ee3GGWI", "doc_id": "1pqFrXX9W9Eo-tvq9DXd18WIyWqodHkWz43f5Ee3GGWI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/merge-columns-2-en.png b/docs/generated-slides/en/book/images/en/merge-columns-2-en.png deleted file mode 100644 index b33276a..0000000 Binary files a/docs/generated-slides/en/book/images/en/merge-columns-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/merge-columns-3-en.gdraw b/docs/generated-slides/en/book/images/en/merge-columns-3-en.gdraw deleted file mode 100644 index 4ef471a..0000000 --- a/docs/generated-slides/en/book/images/en/merge-columns-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1V4RuOuom2RNILpihcHAYClkQssLWx8bM2UkLWfpygAw", "doc_id": "1V4RuOuom2RNILpihcHAYClkQssLWx8bM2UkLWfpygAw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/merge-columns-3-en.png b/docs/generated-slides/en/book/images/en/merge-columns-3-en.png deleted file mode 100644 index f9b16cb..0000000 Binary files a/docs/generated-slides/en/book/images/en/merge-columns-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/merge-columns-4-en.gdraw b/docs/generated-slides/en/book/images/en/merge-columns-4-en.gdraw deleted file mode 100644 index 39c2e6f..0000000 --- a/docs/generated-slides/en/book/images/en/merge-columns-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1XfcfrrkzppKtXyo8NrksIZUrKp1ePZ9KhDKJz0nZZKU", "doc_id": "1XfcfrrkzppKtXyo8NrksIZUrKp1ePZ9KhDKJz0nZZKU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/miserables-edges-list-1-en.gdraw b/docs/generated-slides/en/book/images/en/miserables-edges-list-1-en.gdraw deleted file mode 100644 index 16bc1e8..0000000 --- a/docs/generated-slides/en/book/images/en/miserables-edges-list-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wSt9HZORZ0Zle1uiznKoa39wAz_eQGlbGr8-Xd9FUzA", "doc_id": "1wSt9HZORZ0Zle1uiznKoa39wAz_eQGlbGr8-Xd9FUzA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw b/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw deleted file mode 100644 index 3e33185..0000000 --- a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1vIE7std8b8ODM1NkLFpQ7-f1O8WDvZ7j6rwH7hkNn10", "doc_id": "1vIE7std8b8ODM1NkLFpQ7-f1O8WDvZ7j6rwH7hkNn10", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.png b/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.png deleted file mode 100644 index 10fa140..0000000 Binary files a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-2-en.png b/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-2-en.png deleted file mode 100644 index b92b837..0000000 Binary files a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-3-en.png b/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-3-en.png deleted file mode 100644 index 63094db..0000000 Binary files a/docs/generated-slides/en/book/images/en/miserables-with-dates-datalab-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/moving-timeline-1-en.gdraw b/docs/generated-slides/en/book/images/en/moving-timeline-1-en.gdraw deleted file mode 100644 index fbc468e..0000000 --- a/docs/generated-slides/en/book/images/en/moving-timeline-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1mBkzLYi22NNYIAsD5wJE2Ncyv6hqpe5cRbO4op9J2qs", "doc_id": "1mBkzLYi22NNYIAsD5wJE2Ncyv6hqpe5cRbO4op9J2qs", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/moving-timeline-1-en.png b/docs/generated-slides/en/book/images/en/moving-timeline-1-en.png deleted file mode 100644 index 5c98fbd..0000000 Binary files a/docs/generated-slides/en/book/images/en/moving-timeline-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/new-project-1-en.gdraw b/docs/generated-slides/en/book/images/en/new-project-1-en.gdraw deleted file mode 100644 index acb831e..0000000 --- a/docs/generated-slides/en/book/images/en/new-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1B7By3bJAbMHgfkgjOALEtQcyIZe7xJCFDtSrtqSSA-0", "doc_id": "1B7By3bJAbMHgfkgjOALEtQcyIZe7xJCFDtSrtqSSA-0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/new-project-1-en.png b/docs/generated-slides/en/book/images/en/new-project-1-en.png deleted file mode 100644 index dcd9fa2..0000000 Binary files a/docs/generated-slides/en/book/images/en/new-project-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/open-2-files-1-en.gdraw b/docs/generated-slides/en/book/images/en/open-2-files-1-en.gdraw deleted file mode 100644 index 05cf531..0000000 --- a/docs/generated-slides/en/book/images/en/open-2-files-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1hBDwf34uUDpnfEgoVqtGQgDO6aRvcQLLbpWON17mQoo", "doc_id": "1hBDwf34uUDpnfEgoVqtGQgDO6aRvcQLLbpWON17mQoo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/open-dynamic-1-en.gdraw b/docs/generated-slides/en/book/images/en/open-dynamic-1-en.gdraw deleted file mode 100644 index c0b93e6..0000000 --- a/docs/generated-slides/en/book/images/en/open-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1Dkfi4wcECayzbgM8eJIRUVU3C-bhe2ScMiwAtSsE3x8", "doc_id": "1Dkfi4wcECayzbgM8eJIRUVU3C-bhe2ScMiwAtSsE3x8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/open-new-project-1-en.gdraw b/docs/generated-slides/en/book/images/en/open-new-project-1-en.gdraw deleted file mode 100644 index 4ac2fcb..0000000 --- a/docs/generated-slides/en/book/images/en/open-new-project-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1AWePr0gihO3rGn3LpzUDWhfnYqXWbIh11PGsw7L3WPQ", "doc_id": "1AWePr0gihO3rGn3LpzUDWhfnYqXWbIh11PGsw7L3WPQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/opening-2-files-1-en.png b/docs/generated-slides/en/book/images/en/opening-2-files-1-en.png deleted file mode 100644 index 0e3ec93..0000000 Binary files a/docs/generated-slides/en/book/images/en/opening-2-files-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/opening-dynamic-1-en.png b/docs/generated-slides/en/book/images/en/opening-dynamic-1-en.png deleted file mode 100644 index 6008247..0000000 Binary files a/docs/generated-slides/en/book/images/en/opening-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/opening-file-report-en.png b/docs/generated-slides/en/book/images/en/opening-file-report-en.png deleted file mode 100644 index 0b69bb3..0000000 Binary files a/docs/generated-slides/en/book/images/en/opening-file-report-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/operator-mask-1-en.png b/docs/generated-slides/en/book/images/en/operator-mask-1-en.png deleted file mode 100644 index c8cd302..0000000 Binary files a/docs/generated-slides/en/book/images/en/operator-mask-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/operator-mask-2-en.png b/docs/generated-slides/en/book/images/en/operator-mask-2-en.png deleted file mode 100644 index 66192eb..0000000 Binary files a/docs/generated-slides/en/book/images/en/operator-mask-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/plugins-window-1-en.png b/docs/generated-slides/en/book/images/en/plugins-window-1-en.png deleted file mode 100644 index 0c9fea5..0000000 Binary files a/docs/generated-slides/en/book/images/en/plugins-window-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/plugins-window-en.gdraw b/docs/generated-slides/en/book/images/en/plugins-window-en.gdraw deleted file mode 100644 index 00960cc..0000000 --- a/docs/generated-slides/en/book/images/en/plugins-window-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1RZtNofT8azf4wa5eh0I6AU26otOM_5BFlWiOPlARxdA", "doc_id": "1RZtNofT8azf4wa5eh0I6AU26otOM_5BFlWiOPlARxdA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/preview-export-button-en.gdraw b/docs/generated-slides/en/book/images/en/preview-export-button-en.gdraw deleted file mode 100644 index b4cf80c..0000000 --- a/docs/generated-slides/en/book/images/en/preview-export-button-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1eNMgUabtixCuUZx6F1JbkVI6KDGAwebaB732fRaWQE0", "doc_id": "1eNMgUabtixCuUZx6F1JbkVI6KDGAwebaB732fRaWQE0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/preview-panel-empty-en.png b/docs/generated-slides/en/book/images/en/preview-panel-empty-en.png deleted file mode 100644 index 0745b7d..0000000 Binary files a/docs/generated-slides/en/book/images/en/preview-panel-empty-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/preview-panel-en.gdraw b/docs/generated-slides/en/book/images/en/preview-panel-en.gdraw deleted file mode 100644 index 343c0d5..0000000 --- a/docs/generated-slides/en/book/images/en/preview-panel-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=14MhHJDNzk68ZRl47iZGJ264Ddw_kYnaSNpxuxIgO8mo", "doc_id": "14MhHJDNzk68ZRl47iZGJ264Ddw_kYnaSNpxuxIgO8mo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/project-initial-view-1-3-en.gdraw b/docs/generated-slides/en/book/images/en/project-initial-view-1-3-en.gdraw deleted file mode 100644 index adcde88..0000000 --- a/docs/generated-slides/en/book/images/en/project-initial-view-1-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1v3kKzlVXjqnJBlMsKNd0yXdSh3ybugYh1H_aswf6PSw", "doc_id": "1v3kKzlVXjqnJBlMsKNd0yXdSh3ybugYh1H_aswf6PSw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/project-initial-view-4-5-en.gdraw b/docs/generated-slides/en/book/images/en/project-initial-view-4-5-en.gdraw deleted file mode 100644 index 2098a07..0000000 --- a/docs/generated-slides/en/book/images/en/project-initial-view-4-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YoLyPi07bp2gPN7kene6vvr-2aJMUzvwTj41WkwzNk0", "doc_id": "1YoLyPi07bp2gPN7kene6vvr-2aJMUzvwTj41WkwzNk0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/project-initial-view-6-7-en.gdraw b/docs/generated-slides/en/book/images/en/project-initial-view-6-7-en.gdraw deleted file mode 100644 index a0da26d..0000000 --- a/docs/generated-slides/en/book/images/en/project-initial-view-6-7-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ZdUkgjbKeydhT3fMb1Rk0LdPfkx80oSalUrrxXN3gH8", "doc_id": "1ZdUkgjbKeydhT3fMb1Rk0LdPfkx80oSalUrrxXN3gH8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/project-initial-view-8-10-en.gdraw b/docs/generated-slides/en/book/images/en/project-initial-view-8-10-en.gdraw deleted file mode 100644 index 47182ea..0000000 --- a/docs/generated-slides/en/book/images/en/project-initial-view-8-10-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1IV6tlbyJYOSCwUh4P5iav332515q8Fm85VFT5oCuoj8", "doc_id": "1IV6tlbyJYOSCwUh4P5iav332515q8Fm85VFT5oCuoj8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/project-initial-view.png b/docs/generated-slides/en/book/images/en/project-initial-view.png deleted file mode 100644 index 6fa24cb..0000000 Binary files a/docs/generated-slides/en/book/images/en/project-initial-view.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-1-en.gdraw b/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-1-en.gdraw deleted file mode 100644 index 9385479..0000000 --- a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=11ijPVkx1cvJJSCdCT-CmahS81ZYoV6fKue2lKsTCt4w", "doc_id": "11ijPVkx1cvJJSCdCT-CmahS81ZYoV6fKue2lKsTCt4w", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.gdraw b/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.gdraw deleted file mode 100644 index 51ea320..0000000 --- a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wMdoR7WCxRul0po3dy_CMEIvr0JCx0a4Ht0hT_2Zw5k", "doc_id": "1wMdoR7WCxRul0po3dy_CMEIvr0JCx0a4Ht0hT_2Zw5k", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.png b/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.png deleted file mode 100644 index 42ece91..0000000 Binary files a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.gdraw b/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.gdraw deleted file mode 100644 index 2edb9b8..0000000 --- a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1W77PmLUbp4_9OWQfgzf5rscaL08sLJ6__R1ghaZr2WI", "doc_id": "1W77PmLUbp4_9OWQfgzf5rscaL08sLJ6__R1ghaZr2WI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.png b/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.png deleted file mode 100644 index 9a572c3..0000000 Binary files a/docs/generated-slides/en/book/images/en/ranking-centrality-miserables-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.gdraw b/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.gdraw deleted file mode 100644 index 3b784f0..0000000 --- a/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1lw4b4Oac9NxHj-e8fByitVDZ-Yjjimw1FqSUXE5LcwM", "doc_id": "1lw4b4Oac9NxHj-e8fByitVDZ-Yjjimw1FqSUXE5LcwM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.png b/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.png deleted file mode 100644 index bc2924d..0000000 Binary files a/docs/generated-slides/en/book/images/en/report-window-dynamic-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-1-en.png b/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-1-en.png deleted file mode 100644 index 8d1d99c..0000000 Binary files a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-2-en.png b/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-2-en.png deleted file mode 100644 index a29c586..0000000 Binary files a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size.gdraw b/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size.gdraw deleted file mode 100644 index 2ed3ebb..0000000 --- a/docs/generated-slides/en/book/images/en/resizing-labels-to-node-size.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=17Su6wa7QyRY9j0Zm7WfYHaHwXptEzvS-iR7QZrgMWkc", "doc_id": "17Su6wa7QyRY9j0Zm7WfYHaHwXptEzvS-iR7QZrgMWkc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/select-force-atlas2-detail-en.png b/docs/generated-slides/en/book/images/en/select-force-atlas2-detail-en.png deleted file mode 100644 index 6f6d761..0000000 Binary files a/docs/generated-slides/en/book/images/en/select-force-atlas2-detail-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/select-force-atlas2-en.png b/docs/generated-slides/en/book/images/en/select-force-atlas2-en.png deleted file mode 100644 index 8f2a8e0..0000000 Binary files a/docs/generated-slides/en/book/images/en/select-force-atlas2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/semantic-web-importer/result_1.png b/docs/generated-slides/en/book/images/en/semantic-web-importer/result_1.png deleted file mode 100644 index b4cd588..0000000 Binary files a/docs/generated-slides/en/book/images/en/semantic-web-importer/result_1.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_1.png b/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_1.png deleted file mode 100644 index a565a26..0000000 Binary files a/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_1.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_2.png b/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_2.png deleted file mode 100644 index 330a09e..0000000 Binary files a/docs/generated-slides/en/book/images/en/semantic-web-importer/setup_2.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw b/docs/generated-slides/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw deleted file mode 100644 index 7540907..0000000 --- a/docs/generated-slides/en/book/images/en/similarity-computer/data-table-no-weight-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1hCdQriutUPYYkMkrAUt39WXUBcsdYjaFFuU1ZqPw3Bw", "doc_id": "1hCdQriutUPYYkMkrAUt39WXUBcsdYjaFFuU1ZqPw3Bw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw b/docs/generated-slides/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw deleted file mode 100644 index b53c1c6..0000000 --- a/docs/generated-slides/en/book/images/en/similarity-computer/data-table-with-weight-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=132VEJUNQE9XgLikD48gXa-VtEekM1sQZ3O7CmJnXQ5A", "doc_id": "132VEJUNQE9XgLikD48gXa-VtEekM1sQZ3O7CmJnXQ5A", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/file-with-header-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/file-with-header-en.png deleted file mode 100644 index 27b237e..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/file-with-header-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/file-without-header-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/file-without-header-en.png deleted file mode 100644 index 5fc6f5f..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/file-without-header-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/first-screen-1-en.gdraw b/docs/generated-slides/en/book/images/en/similarity-computer/first-screen-1-en.gdraw deleted file mode 100644 index 712517c..0000000 --- a/docs/generated-slides/en/book/images/en/similarity-computer/first-screen-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=16CfpNUZDA4y7ZGN8jAb7yWTQkxV8QvZ6QRyOne8Gb8A", "doc_id": "16CfpNUZDA4y7ZGN8jAb7yWTQkxV8QvZ6QRyOne8Gb8A", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/no-weights.png b/docs/generated-slides/en/book/images/en/similarity-computer/no-weights.png deleted file mode 100644 index a2f9bae..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/no-weights.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/numerical-attributes-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/numerical-attributes-en.png deleted file mode 100644 index bf3af12..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/numerical-attributes-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.gdraw b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.gdraw deleted file mode 100644 index edb1b65..0000000 --- a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1JsOfK6SUyow3SAcuCXv4WLv944bMwnbI0XA3Drnob1g", "doc_id": "1JsOfK6SUyow3SAcuCXv4WLv944bMwnbI0XA3Drnob1g", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.png deleted file mode 100644 index 443bc58..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-2-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-2-en.png deleted file mode 100644 index 1ff1657..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-3-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-3-en.png deleted file mode 100644 index 6def404..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-4-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-4-en.png deleted file mode 100644 index 48d7feb..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-5-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-5-en.png deleted file mode 100644 index 6ae664e..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-6-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-6-en.png deleted file mode 100644 index 5506f32..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-6-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-7-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-7-en.png deleted file mode 100644 index 00e93e8..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-7-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-catalogue-en.png b/docs/generated-slides/en/book/images/en/similarity-computer/plugin-catalogue-en.png deleted file mode 100644 index 8280502..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/plugin-catalogue-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/result.png b/docs/generated-slides/en/book/images/en/similarity-computer/result.png deleted file mode 100644 index 637b8ae..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/result.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw b/docs/generated-slides/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index 29db1d2..0000000 --- a/docs/generated-slides/en/book/images/en/similarity-computer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1t3LH3I-DAxnQW63b4qVdKBXIR-HtFRIRgmG2zHZ2qpU", "doc_id": "1t3LH3I-DAxnQW63b4qVdKBXIR-HtFRIRgmG2zHZ2qpU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/similarity-computer/weights-ok.png b/docs/generated-slides/en/book/images/en/similarity-computer/weights-ok.png deleted file mode 100644 index a9c1efb..0000000 Binary files a/docs/generated-slides/en/book/images/en/similarity-computer/weights-ok.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-2-en.gdraw b/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-2-en.gdraw deleted file mode 100644 index 80b9545..0000000 --- a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1NNYsoQ3vWUbbrJanUKTV6g1J1zGfEiq2IRokpJoexPU", "doc_id": "1NNYsoQ3vWUbbrJanUKTV6g1J1zGfEiq2IRokpJoexPU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-detail-en.png b/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-detail-en.png deleted file mode 100644 index e0cbf23..0000000 Binary files a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-detail-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.gdraw b/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.gdraw deleted file mode 100644 index 162af97..0000000 --- a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1dyHfCiYYdVTuFp2Gz8g4FHOhjvNiaFkAMLwcgCLVGlk", "doc_id": "1dyHfCiYYdVTuFp2Gz8g4FHOhjvNiaFkAMLwcgCLVGlk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.png b/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.png deleted file mode 100644 index e6dbc7e..0000000 Binary files a/docs/generated-slides/en/book/images/en/switching-to-data-laboratory-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.gdraw b/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.gdraw deleted file mode 100644 index ffe1bda..0000000 --- a/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1exhJi8j7Xq0uKrNQdj-hVyeB_o8c33f-I81SbjGZskc", "doc_id": "1exhJi8j7Xq0uKrNQdj-hVyeB_o8c33f-I81SbjGZskc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.png b/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.png deleted file mode 100644 index d7da6e9..0000000 Binary files a/docs/generated-slides/en/book/images/en/switching-to-preview-panel-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/terminology-en.gdraw b/docs/generated-slides/en/book/images/en/terminology-en.gdraw deleted file mode 100644 index d7c2aae..0000000 --- a/docs/generated-slides/en/book/images/en/terminology-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ZkiDS5F6UWL5MUssgxFOWhLysd3FhAQ8ltzVHUVJKrs", "doc_id": "1ZkiDS5F6UWL5MUssgxFOWhLysd3FhAQ8ltzVHUVJKrs", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/timeline-1-en.png b/docs/generated-slides/en/book/images/en/timeline-1-en.png deleted file mode 100644 index e4418c7..0000000 Binary files a/docs/generated-slides/en/book/images/en/timeline-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/tools-plugins-1-en.png b/docs/generated-slides/en/book/images/en/tools-plugins-1-en.png deleted file mode 100644 index 0a7ef7e..0000000 Binary files a/docs/generated-slides/en/book/images/en/tools-plugins-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/tools-plugins-2-en.png b/docs/generated-slides/en/book/images/en/tools-plugins-2-en.png deleted file mode 100644 index c0221a7..0000000 Binary files a/docs/generated-slides/en/book/images/en/tools-plugins-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/tools-plugins-en.gdraw b/docs/generated-slides/en/book/images/en/tools-plugins-en.gdraw deleted file mode 100644 index c1f2f15..0000000 --- a/docs/generated-slides/en/book/images/en/tools-plugins-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1-naHndLNIUWmusTDyOSjvRJAU-_pIuSaPZeSGzuOExc", "doc_id": "1-naHndLNIUWmusTDyOSjvRJAU-_pIuSaPZeSGzuOExc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw deleted file mode 100644 index 5407d77..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-term-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1UIl8a95uVuKJsVDqmf3VfH9lS5HsVRAqeqvzCKiKELg", "doc_id": "1UIl8a95uVuKJsVDqmf3VfH9lS5HsVRAqeqvzCKiKELg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png deleted file mode 100644 index 66ff7ea..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/adding-terms-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw deleted file mode 100644 index 07e2f1d..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-plugin-window-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YxuRouymWwvCp0skGzPsOFB4fxsSTC9IIHyx9_iYJzc", "doc_id": "1YxuRouymWwvCp0skGzPsOFB4fxsSTC9IIHyx9_iYJzc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png deleted file mode 100644 index 95c486e..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png deleted file mode 100644 index db0c8fc..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/displaying-the-plugin-window-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw deleted file mode 100644 index 983ee3f..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-adding-twitter-credentials-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1J9xmsKh1BydrQ1VMuNlZcq4XhldIYllZ6oE-qZ8MMiw", "doc_id": "1J9xmsKh1BydrQ1VMuNlZcq4XhldIYllZ6oE-qZ8MMiw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png deleted file mode 100644 index 67e30bb..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/gephi-twitter-app-credentials-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/interface-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/interface-1-en.png deleted file mode 100644 index 4006b08..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/interface-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw deleted file mode 100644 index 70acf7e..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/network-logic-dropdown-menu-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1l6qd2k-R0XPHy_BufxF6O3YsLzciR-8camo1eyMYgcU", "doc_id": "1l6qd2k-R0XPHy_BufxF6O3YsLzciR-8camo1eyMYgcU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png deleted file mode 100644 index e868b97..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/result-plugin-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png deleted file mode 100644 index 7c25c45..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw deleted file mode 100644 index 4d6dcab..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/selecting-plugin-in-list-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1vOEnZlkhfzilLDkswdecn1HnP65LyNPmcsmvTMJ_sKk", "doc_id": "1vOEnZlkhfzilLDkswdecn1HnP65LyNPmcsmvTMJ_sKk", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline-enable.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline-enable.png deleted file mode 100644 index 1fa3ecd..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline-enable.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline.gif b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline.gif deleted file mode 100644 index 0a176cf..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/timeline.gif and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw deleted file mode 100644 index ff1273f..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1UizTeeAdHwSCBQmLhvDHFHVQM7GClBnmgABUBKhgwaI", "doc_id": "1UizTeeAdHwSCBQmLhvDHFHVQM7GClBnmgABUBKhgwaI", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png deleted file mode 100644 index 50dda40..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw deleted file mode 100644 index 029b114..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=11K9IyPp0UFrwOvplvh2pZpLHWEsZjOyZ-p_OM9GgQm0", "doc_id": "11K9IyPp0UFrwOvplvh2pZpLHWEsZjOyZ-p_OM9GgQm0", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png deleted file mode 100644 index d366c91..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw deleted file mode 100644 index ae1d6ab..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1DFOqDGFjwuWGsPjpZVJhpCZAECKuzaYhBAAWrzebjrE", "doc_id": "1DFOqDGFjwuWGsPjpZVJhpCZAECKuzaYhBAAWrzebjrE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png deleted file mode 100644 index ca9fc3c..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw deleted file mode 100644 index 0dff986..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=15Y3-o6cW1Dpn-ZJg-BIf1ejyeLtjrWooioq8v8JRJTo", "doc_id": "15Y3-o6cW1Dpn-ZJg-BIf1ejyeLtjrWooioq8v8JRJTo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png deleted file mode 100644 index de17fc8..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw deleted file mode 100644 index b8ce061..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=12OUOlNaO4lFsiCIYeF_MgRN4U31d0dUEzuWgNvA0yCY", "doc_id": "12OUOlNaO4lFsiCIYeF_MgRN4U31d0dUEzuWgNvA0yCY", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png deleted file mode 100644 index 312324b..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw deleted file mode 100644 index fd8c8b6..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-app-6-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1wFXgIT3W_o0rHv8fdRaPAPTFWtjDpUx2kLuJxancRBc", "doc_id": "1wFXgIT3W_o0rHv8fdRaPAPTFWtjDpUx2kLuJxancRBc", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw deleted file mode 100644 index b29fd62..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1qzp_dDp6rNwt0_ok7lADhNLFHa59O-kHW-HteijmcNg", "doc_id": "1qzp_dDp6rNwt0_ok7lADhNLFHa59O-kHW-HteijmcNg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png deleted file mode 100644 index 021054f..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw deleted file mode 100644 index f8d40bf..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YpAmyh3-u_Cm-rPZ5p0s5Qw2rD8oQCcMLaqPPrC0byQ", "doc_id": "1YpAmyh3-u_Cm-rPZ5p0s5Qw2rD8oQCcMLaqPPrC0byQ", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png deleted file mode 100644 index dbbaddf..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw deleted file mode 100644 index 4cc958b..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1VlzGqxEGrzVoyWSkYG60oqNfTnVYOUJnLXUuhRLwfoA", "doc_id": "1VlzGqxEGrzVoyWSkYG60oqNfTnVYOUJnLXUuhRLwfoA", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png deleted file mode 100644 index 0e2476c..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw deleted file mode 100644 index 5511be6..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1WxIFp_IhUvsTd9viErLnVKwuW3FfzDJQkcz0LrRNhYg", "doc_id": "1WxIFp_IhUvsTd9viErLnVKwuW3FfzDJQkcz0LrRNhYg", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png deleted file mode 100644 index b2ab977..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-4-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw deleted file mode 100644 index 1e8c7e4..0000000 --- a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1thjxLyFzqIcmJ9g1-NU67bKOI-EjcXr0lXnOP-JtaPU", "doc_id": "1thjxLyFzqIcmJ9g1-NU67bKOI-EjcXr0lXnOP-JtaPU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png b/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png deleted file mode 100644 index 0df3762..0000000 Binary files a/docs/generated-slides/en/book/images/en/twitter-streaming-importer/twitter-sign-up-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/force-atlas-result.png b/docs/generated-slides/en/book/images/force-atlas-result.png deleted file mode 100644 index 08d46c0..0000000 Binary files a/docs/generated-slides/en/book/images/force-atlas-result.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/gephi-logo-2010-transparent.png b/docs/generated-slides/en/book/images/gephi-logo-2010-transparent.png deleted file mode 100644 index 5c2d4a6..0000000 Binary files a/docs/generated-slides/en/book/images/gephi-logo-2010-transparent.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/gephi-welcome-screen_data.xml b/docs/generated-slides/en/book/images/gephi-welcome-screen_data.xml deleted file mode 100644 index 6b76f09..0000000 --- a/docs/generated-slides/en/book/images/gephi-welcome-screen_data.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/google-scholar-gephi.png b/docs/generated-slides/en/book/images/google-scholar-gephi.png deleted file mode 100644 index 432eff4..0000000 Binary files a/docs/generated-slides/en/book/images/google-scholar-gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/google-trends-gephi.png b/docs/generated-slides/en/book/images/google-trends-gephi.png deleted file mode 100644 index a7836ce..0000000 Binary files a/docs/generated-slides/en/book/images/google-trends-gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/import-spreadsheet-1-en.gdraw b/docs/generated-slides/en/book/images/import-spreadsheet-1-en.gdraw deleted file mode 100644 index 633dbc8..0000000 --- a/docs/generated-slides/en/book/images/import-spreadsheet-1-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1ZY9oAbXt2jFWfo2e5s3KQ2FU5SV3ztZ4WnYgphUObSo", "doc_id": "1ZY9oAbXt2jFWfo2e5s3KQ2FU5SV3ztZ4WnYgphUObSo", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/import-spreadsheet-2-en.gdraw b/docs/generated-slides/en/book/images/import-spreadsheet-2-en.gdraw deleted file mode 100644 index 73c8fd8..0000000 --- a/docs/generated-slides/en/book/images/import-spreadsheet-2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=11wHLRAA2oKmEgJyLK85vtpkwdOKA9Hn3IeVCT-OlC_8", "doc_id": "11wHLRAA2oKmEgJyLK85vtpkwdOKA9Hn3IeVCT-OlC_8", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/initial-team-credits.txt b/docs/generated-slides/en/book/images/initial-team-credits.txt deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/images/initial-team.png b/docs/generated-slides/en/book/images/initial-team.png deleted file mode 100644 index fc87dcc..0000000 Binary files a/docs/generated-slides/en/book/images/initial-team.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/inner-links-excluded.png b/docs/generated-slides/en/book/images/inner-links-excluded.png deleted file mode 100644 index ca1d2f9..0000000 Binary files a/docs/generated-slides/en/book/images/inner-links-excluded.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/inner-links-included.png b/docs/generated-slides/en/book/images/inner-links-included.png deleted file mode 100644 index 261eb2f..0000000 Binary files a/docs/generated-slides/en/book/images/inner-links-included.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/label-size-adjust-detail-1.png b/docs/generated-slides/en/book/images/label-size-adjust-detail-1.png deleted file mode 100644 index b711662..0000000 Binary files a/docs/generated-slides/en/book/images/label-size-adjust-detail-1.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/label-size-adjust.png b/docs/generated-slides/en/book/images/label-size-adjust.png deleted file mode 100644 index 51c8b1d..0000000 Binary files a/docs/generated-slides/en/book/images/label-size-adjust.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/levallois.jpg b/docs/generated-slides/en/book/images/levallois.jpg deleted file mode 100644 index 51b1d8b..0000000 Binary files a/docs/generated-slides/en/book/images/levallois.jpg and /dev/null differ diff --git a/docs/generated-slides/en/book/images/matthieu-jacomy.jpg b/docs/generated-slides/en/book/images/matthieu-jacomy.jpg deleted file mode 100644 index 1d70590..0000000 Binary files a/docs/generated-slides/en/book/images/matthieu-jacomy.jpg and /dev/null differ diff --git a/docs/generated-slides/en/book/images/miserables-edge-list-en.png b/docs/generated-slides/en/book/images/miserables-edge-list-en.png deleted file mode 100644 index 591e73e..0000000 Binary files a/docs/generated-slides/en/book/images/miserables-edge-list-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/miserables-preview-result-en.png b/docs/generated-slides/en/book/images/miserables-preview-result-en.png deleted file mode 100644 index c2853b1..0000000 Binary files a/docs/generated-slides/en/book/images/miserables-preview-result-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/miserables-preview-result.gdraw b/docs/generated-slides/en/book/images/miserables-preview-result.gdraw deleted file mode 100644 index dee46ea..0000000 --- a/docs/generated-slides/en/book/images/miserables-preview-result.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=10Jg0j0RfQlgPaa867cza2MpgixrCNveThlQW3f0MLnM", "doc_id": "10Jg0j0RfQlgPaa867cza2MpgixrCNveThlQW3f0MLnM", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/moving-timeline-miserables-1-en.gif b/docs/generated-slides/en/book/images/moving-timeline-miserables-1-en.gif deleted file mode 100644 index 85dec23..0000000 Binary files a/docs/generated-slides/en/book/images/moving-timeline-miserables-1-en.gif and /dev/null differ diff --git a/docs/generated-slides/en/book/images/moving-timeline-miserables-2-en.png b/docs/generated-slides/en/book/images/moving-timeline-miserables-2-en.png deleted file mode 100644 index 4a50fa0..0000000 Binary files a/docs/generated-slides/en/book/images/moving-timeline-miserables-2-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/network-formats-gephi-import-en.png b/docs/generated-slides/en/book/images/network-formats-gephi-import-en.png deleted file mode 100644 index 51813ad..0000000 Binary files a/docs/generated-slides/en/book/images/network-formats-gephi-import-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/no-title.png b/docs/generated-slides/en/book/images/no-title.png deleted file mode 100644 index 4afdb58..0000000 Binary files a/docs/generated-slides/en/book/images/no-title.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/opening-CompatibilityEngine.java.png b/docs/generated-slides/en/book/images/opening-CompatibilityEngine.java.png deleted file mode 100644 index f8d51e5..0000000 Binary files a/docs/generated-slides/en/book/images/opening-CompatibilityEngine.java.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/product-to-product.png b/docs/generated-slides/en/book/images/product-to-product.png deleted file mode 100644 index 948ee4a..0000000 Binary files a/docs/generated-slides/en/book/images/product-to-product.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/project-initial-view-1-3-en.png b/docs/generated-slides/en/book/images/project-initial-view-1-3-en.png deleted file mode 100644 index 7bc5cfa..0000000 Binary files a/docs/generated-slides/en/book/images/project-initial-view-1-3-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/project-initial-view-4-5-en.png b/docs/generated-slides/en/book/images/project-initial-view-4-5-en.png deleted file mode 100644 index 1ceafef..0000000 Binary files a/docs/generated-slides/en/book/images/project-initial-view-4-5-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/project-initial-view-6-7-en.png b/docs/generated-slides/en/book/images/project-initial-view-6-7-en.png deleted file mode 100644 index 07be9d7..0000000 Binary files a/docs/generated-slides/en/book/images/project-initial-view-6-7-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/project-initial-view-8-10-en.png b/docs/generated-slides/en/book/images/project-initial-view-8-10-en.png deleted file mode 100644 index 4afdb58..0000000 Binary files a/docs/generated-slides/en/book/images/project-initial-view-8-10-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/ranking-centrality-miserables-1-en.png b/docs/generated-slides/en/book/images/ranking-centrality-miserables-1-en.png deleted file mode 100644 index 7c0a6e0..0000000 Binary files a/docs/generated-slides/en/book/images/ranking-centrality-miserables-1-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/ranking-centrality-miserables-3--en.png b/docs/generated-slides/en/book/images/ranking-centrality-miserables-3--en.png deleted file mode 100644 index cf5353a..0000000 Binary files a/docs/generated-slides/en/book/images/ranking-centrality-miserables-3--en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/result-label-resizing-en.png b/docs/generated-slides/en/book/images/result-label-resizing-en.png deleted file mode 100644 index 8ac726f..0000000 Binary files a/docs/generated-slides/en/book/images/result-label-resizing-en.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/result-of-Force-Atlas-2-layout.png b/docs/generated-slides/en/book/images/result-of-Force-Atlas-2-layout.png deleted file mode 100644 index 60aac7c..0000000 Binary files a/docs/generated-slides/en/book/images/result-of-Force-Atlas-2-layout.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/result_miserables.png b/docs/generated-slides/en/book/images/result_miserables.png deleted file mode 100644 index b277856..0000000 Binary files a/docs/generated-slides/en/book/images/result_miserables.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/result_miserables_2.png b/docs/generated-slides/en/book/images/result_miserables_2.png deleted file mode 100644 index 38b29d4..0000000 Binary files a/docs/generated-slides/en/book/images/result_miserables_2.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/screenshot-from-overview-1.gdraw b/docs/generated-slides/en/book/images/screenshot-from-overview-1.gdraw deleted file mode 100644 index 655f387..0000000 --- a/docs/generated-slides/en/book/images/screenshot-from-overview-1.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1lEFSZkadWz7uu3ZxgUYGM5TANBG0z-BgZR241Qa59eE", "doc_id": "1lEFSZkadWz7uu3ZxgUYGM5TANBG0z-BgZR241Qa59eE", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/screenshot-from-overview-1.png b/docs/generated-slides/en/book/images/screenshot-from-overview-1.png deleted file mode 100644 index 22be0a9..0000000 Binary files a/docs/generated-slides/en/book/images/screenshot-from-overview-1.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/screenshot-from-overview-2.png b/docs/generated-slides/en/book/images/screenshot-from-overview-2.png deleted file mode 100644 index ba3ac45..0000000 Binary files a/docs/generated-slides/en/book/images/screenshot-from-overview-2.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/select-force-atlas2-en.gdraw b/docs/generated-slides/en/book/images/select-force-atlas2-en.gdraw deleted file mode 100644 index 060e228..0000000 --- a/docs/generated-slides/en/book/images/select-force-atlas2-en.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=1YDwQVO9Vwq6Sq3RTw4FppvSgZIZATIOdPJFUktm_0nU", "doc_id": "1YDwQVO9Vwq6Sq3RTw4FppvSgZIZATIOdPJFUktm_0nU", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/selecting-the-force-atlas-2-layout.png b/docs/generated-slides/en/book/images/selecting-the-force-atlas-2-layout.png deleted file mode 100644 index 8dab3ec..0000000 Binary files a/docs/generated-slides/en/book/images/selecting-the-force-atlas-2-layout.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/showing-labels-detail-2.png b/docs/generated-slides/en/book/images/showing-labels-detail-2.png deleted file mode 100644 index 4b022b3..0000000 Binary files a/docs/generated-slides/en/book/images/showing-labels-detail-2.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/showing-labels-detail.png b/docs/generated-slides/en/book/images/showing-labels-detail.png deleted file mode 100644 index d9cf7bf..0000000 Binary files a/docs/generated-slides/en/book/images/showing-labels-detail.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/showing-labels.gdraw b/docs/generated-slides/en/book/images/showing-labels.gdraw deleted file mode 100644 index b20befb..0000000 --- a/docs/generated-slides/en/book/images/showing-labels.gdraw +++ /dev/null @@ -1 +0,0 @@ -{"url": "https://docs.google.com/open?id=11W-U8duRG63jOM7m1VC7Fa5TXqgNIT6Zg7tCA5nLIKw", "doc_id": "11W-U8duRG63jOM7m1VC7Fa5TXqgNIT6Zg7tCA5nLIKw", "email": "clementlevallois@gmail.com"} \ No newline at end of file diff --git a/docs/generated-slides/en/book/images/showing-labels.png b/docs/generated-slides/en/book/images/showing-labels.png deleted file mode 100644 index 13ea835..0000000 Binary files a/docs/generated-slides/en/book/images/showing-labels.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/showing-node-labels.png b/docs/generated-slides/en/book/images/showing-node-labels.png deleted file mode 100644 index 516c63e..0000000 Binary files a/docs/generated-slides/en/book/images/showing-node-labels.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/terminology-for-networks.png b/docs/generated-slides/en/book/images/terminology-for-networks.png deleted file mode 100644 index 8f52e17..0000000 Binary files a/docs/generated-slides/en/book/images/terminology-for-networks.png and /dev/null differ diff --git a/docs/generated-slides/en/book/images/the-3-main-screens-in-Gephi.png b/docs/generated-slides/en/book/images/the-3-main-screens-in-Gephi.png deleted file mode 100644 index da8b9a9..0000000 Binary files a/docs/generated-slides/en/book/images/the-3-main-screens-in-Gephi.png and /dev/null differ diff --git a/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network A.gexf b/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network A.gexf deleted file mode 100644 index aaa320c..0000000 --- a/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network A.gexf +++ /dev/null @@ -1,37 +0,0 @@ - - - - Gephi 0.9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network B.gexf b/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network B.gexf deleted file mode 100644 index d272a21..0000000 --- a/docs/generated-slides/en/book/resources/creating-a-simple-dynamic-network/network B.gexf +++ /dev/null @@ -1,39 +0,0 @@ - - - - Gephi 0.9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-slides/en/book/resources/import-tutorial/edges.txt b/docs/generated-slides/en/book/resources/import-tutorial/edges.txt deleted file mode 100644 index 87c42ef..0000000 --- a/docs/generated-slides/en/book/resources/import-tutorial/edges.txt +++ /dev/null @@ -1,2 +0,0 @@ -Source,Target,Weight,Type,Where first met -1,45,3,"undirected",London diff --git a/docs/generated-slides/en/book/resources/import-tutorial/edges_alone.txt b/docs/generated-slides/en/book/resources/import-tutorial/edges_alone.txt deleted file mode 100644 index 62f0f4a..0000000 --- a/docs/generated-slides/en/book/resources/import-tutorial/edges_alone.txt +++ /dev/null @@ -1,3 +0,0 @@ -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" \ No newline at end of file diff --git a/docs/generated-slides/en/book/resources/import-tutorial/nodes.txt b/docs/generated-slides/en/book/resources/import-tutorial/nodes.txt deleted file mode 100644 index 987a264..0000000 --- a/docs/generated-slides/en/book/resources/import-tutorial/nodes.txt +++ /dev/null @@ -1,4 +0,0 @@ -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 diff --git a/docs/generated-slides/en/book/resources/k-partite-bi-partite.zip b/docs/generated-slides/en/book/resources/k-partite-bi-partite.zip deleted file mode 100644 index ed58702..0000000 Binary files a/docs/generated-slides/en/book/resources/k-partite-bi-partite.zip and /dev/null differ diff --git a/docs/generated-slides/en/book/resources/miserables-nodes.csv b/docs/generated-slides/en/book/resources/miserables-nodes.csv deleted file mode 100644 index 094c23a..0000000 --- a/docs/generated-slides/en/book/resources/miserables-nodes.csv +++ /dev/null @@ -1,75 +0,0 @@ -id;label;timeset;gender;eccentricity;betweenesscentrality;harmonicclosnesscentrality;closnesscentrality;modularity_class;start date;end date;peak moment -0;Myriel;;M;4.0;483.0;0.4988584474885843;0.437125748502994;0;01/01/1818;01/01/1823;44013 -1;Napoleon;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;18/10/1818;18/10/1824;44671 -2;MlleBaptistine;;F;4.0;0.0;0.4509132420091321;0.41954022988505746;0;14/07/1822;14/07/1827;45671 -3;MmeMagloire;;F;4.0;0.0;0.4509132420091321;0.41954022988505746;0;04/05/1826;04/05/1831;47061 -4;CountessDeLo;;F;5.0;0.0;0.3280821917808218;0.3054393305439331;0;28/02/1822;28/02/1827;45532 -5;Geborand;;F;5.0;0.0;0.3280821917808218;0.3054393305439331;0;01/01/1827;01/01/1832;47300 -6;Champtercier;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;14/03/1818;14/03/1825;44818 -7;Cravatte;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;13/01/1824;13/01/1829;46216 -8;Count;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;12/12/1818;12/12/1825;45089 -9;OldMan;;M;5.0;0.0;0.3280821917808218;0.3054393305439331;0;07/07/1822;07/07/1827;45664 -25;Thenardier,Jondrette;;M;3.0;196.859155120765;0.58675799086758;0.5214285714285715;1;03/03/1828;03/03/1833;47729 -24;MmeThenardier;;F;3.0;81.01165528657789;0.5273972602739725;0.46794871794871795;1;02/11/1831;02/11/1836;12541 -41;Eponine;;F;4.0;33.628408253253454;0.47716894977168955;0.4010989010989011;1;17/09/1830;17/09/1835;12130 -70;Claquesous;;M;3.0;13.856141957457748;0.5182648401826484;0.4620253164556962;1;01/06/1834;01/06/1839;13485 -68;Gueulemer;;M;3.0;12.951380052695843;0.5228310502283104;0.46794871794871795;1;12/12/1830;12/12/1835;12217 -69;Babet;;M;3.0;12.951380052695843;0.5228310502283104;0.46794871794871795;1;22/04/1835;22/04/1840;13810 -71;Montparnasse;;M;3.0;10.540415140415138;0.5136986301369864;0.4620253164556962;1;15/05/1829;15/05/1834;48167 -75;Brujon;;M;4.0;0.75;0.43721461187214605;0.3802083333333333;1;09/02/1832;09/02/1837;12640 -40;Boulatruelle;;M;4.0;0.0;0.3652968036529678;0.3443396226415094;1;18/08/1833;18/08/1838;13200 -42;Anzelma;;F;4.0;0.0;0.3869863013698628;0.35436893203883496;1;16/08/1830;16/08/1835;12101 -11;Valjean;;M;3.0;1532.1511417031543;0.7442922374429224;0.6576576576576577;2;04/04/1833;04/04/1838;13061 -55;Marius;;M;3.0;331.39179892175224;0.6027397260273972;0.5328467153284672;2;06/11/1835;06/11/1840;14006 -27;Javert;;M;3.0;141.49811964781006;0.591324200913242;0.5214285714285715;2;18/07/1837;18/07/1842;14628 -51;MlleGillenormand;;F;3.0;90.50238095238093;0.4840182648401827;0.44242424242424244;2;18/07/1836;18/07/1841;14263 -28;Fauchelevent;;M;4.0;72.5;0.44406392694063895;0.40782122905027934;2;02/01/1838;02/01/1843;14794 -54;LtGillenormand;;M;3.0;47.30106516290728;0.4840182648401828;0.44242424242424244;2;18/11/1839;18/11/1844;15480 -26;Cosette;;F;3.0;47.18836996336997;0.5342465753424659;0.48344370860927155;2;30/11/1833;30/11/1838;13300 -31;Simplice;;F;4.0;23.491507512095748;0.4600456621004564;0.42441860465116277;2;30/03/1837;30/03/1842;14518 -29;Bamatabois;;M;4.0;22.91666666666667;0.48744292237442916;0.43452380952380953;2;22/02/1836;22/02/1841;14114 -50;Magnon;;F;4.0;0.6190476190476191;0.36529680365296785;0.33796296296296297;2;18/10/1839;18/10/1844;15450 -10;Labarre;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;10/10/1835;10/10/1840;13980 -13;MmeDeR;;F;4.0;0.0;0.42123287671232845;0.3989071038251366;2;25/01/1835;25/01/1840;13721 -14;Isabeau;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;26/06/1839;26/06/1844;15336 -15;Gervais;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;25/08/1839;25/08/1844;15397 -30;Perpetue;;F;5.0;0.0;0.3543378995433788;0.3230088495575221;2;13/10/1840;13/10/1845;15809 -32;Scaufflaire;;M;4.0;0.0;0.42123287671232845;0.3989071038251366;2;27/04/1837;27/04/1842;14545 -33;Woman1;;F;4.0;0.0;0.42808219178082163;0.4010989010989011;2;07/07/1836;07/07/1841;14252 -34;Judge;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;15/03/1839;15/03/1844;15234 -35;Champmathieu;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;18/09/1840;18/09/1845;15785 -36;Brevet;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;21/12/1839;21/12/1844;15513 -37;Chenildieu;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;31/07/1837;31/07/1842;14641 -38;Cochepaille;;M;4.0;0.0;0.45547945205479423;0.4101123595505618;2;30/08/1838;30/08/1843;15037 -43;Woman2;;F;4.0;0.0;0.43721461187214583;0.40555555555555556;2;16/05/1836;16/05/1841;14200 -44;MotherInnocent;;F;4.0;0.0;0.4303652968036527;0.40331491712707185;2;29/03/1841;29/03/1846;15978 -45;Gribier;;M;5.0;0.0;0.30753424657534234;0.2908366533864542;2;01/07/1836;01/07/1841;14246 -52;MmePontmercy;;F;4.0;0.0;0.3801369863013698;0.3526570048309179;2;01/09/1836;01/09/1841;14305 -53;MlleVaubois;;F;4.0;0.0;0.3253424657534245;0.3080168776371308;2;05/08/1837;05/08/1842;14646 -56;BaronessT;;F;4.0;0.0;0.3801369863013697;0.3526570048309179;2;18/11/1840;18/11/1845;15844 -72;Toussaint;;M;4.0;0.0;0.43721461187214583;0.40555555555555556;2;18/12/1841;18/12/1846;16242 -48;Gavroche;;M;3.0;351.58888588191985;0.6118721461187215;0.5177304964539007;3;12/09/1845;12/09/1850;17604 -58;Enjolras;;M;3.0;120.41734472098251;0.5593607305936072;0.4866666666666667;3;14/03/1838;14/03/1843;14868 -64;Bossuet;;M;3.0;86.79532364780039;0.5456621004566209;0.48026315789473684;3;17/06/1840;17/06/1845;15692 -57;Mabeuf;;M;4.0;75.5845238095238;0.47374429223744285;0.3967391304347826;3;28/09/1843;28/09/1848;16889 -62;Courfeyrac;;M;4.0;14.070955798587379;0.48744292237442916;0.4010989010989011;3;23/01/1842;23/01/1847;16276 -63;Bahorel;;M;4.0;5.538562314878104;0.476027397260274;0.3945945945945946;3;08/08/1840;08/08/1845;15745 -65;Joly;;M;4.0;5.538562314878104;0.476027397260274;0.3945945945945946;3;22/04/1844;22/04/1849;17097 -59;Combeferre;;M;4.0;3.1406926406926403;0.4691780821917808;0.3924731182795699;3;18/02/1844;18/02/1849;17032 -61;Feuilly;;M;4.0;3.1406926406926403;0.4691780821917808;0.3924731182795699;3;22/04/1843;22/04/1848;16732 -66;Grantaire;;M;4.0;0.42857142857142855;0.4372146118721461;0.3613861386138614;3;07/06/1841;07/06/1846;16047 -47;MmeBurgon;;F;4.0;0.0;0.4029680365296803;0.37055837563451777;3;06/12/1846;06/12/1851;18055 -60;Prouvaire;;M;4.0;0.0;0.430365296803653;0.35960591133004927;3;04/04/1845;04/04/1850;17444 -67;MotherPlutarch;;F;5.0;0.0;0.31347031963470307;0.28515625;3;18/09/1842;18/09/1847;16516 -73;Child1;;M;4.0;0.0;0.37785388127853886;0.3443396226415094;3;07/11/1840;07/11/1845;15833 -74;Child2;;M;4.0;0.0;0.37785388127853886;0.3443396226415094;3;07/03/1844;07/03/1849;17052 -76;MmeHucheloup;;F;4.0;0.0;0.4166666666666667;0.35609756097560974;3;09/10/1846;09/10/1851;17997 -23;Fantine;;F;4.0;359.37027514968696;0.5490867579908677;0.47096774193548385;4;30/10/1850;30/10/1855;19479 -16;Tholomyes;;M;4.0;106.27697563874035;0.46118721461187184;0.3945945945945946;4;31/01/1848;31/01/1853;18475 -12;Marguerite;;F;4.0;0.0;0.4463470319634701;0.41954022988505746;4;26/12/1847;26/12/1852;18440 -17;Listolier;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;23/07/1849;23/07/1854;19016 -18;Fameuil;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;04/03/1848;04/03/1853;18510 -19;Blacheville;;M;4.0;0.0;0.40296803652967983;0.3476190476190476;4;13/05/1845;13/05/1850;17484 -20;Favourite;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;13/04/1848;13/04/1853;18549 -21;Dahlia;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;31/08/1850;31/08/1855;19421 -22;Zephine;;F;4.0;0.0;0.40296803652967983;0.3476190476190476;4;09/01/1845;09/01/1850;17357 diff --git a/docs/generated-slides/en/book/resources/miserables-nodes.xlsx b/docs/generated-slides/en/book/resources/miserables-nodes.xlsx deleted file mode 100644 index 7ed1679..0000000 Binary files a/docs/generated-slides/en/book/resources/miserables-nodes.xlsx and /dev/null differ diff --git a/docs/generated-slides/en/book/resources/miserables-with-dates.gexf b/docs/generated-slides/en/book/resources/miserables-with-dates.gexf deleted file mode 100644 index 2ab19d7..0000000 --- a/docs/generated-slides/en/book/resources/miserables-with-dates.gexf +++ /dev/null @@ -1,1466 +0,0 @@ - - - - Gephi 0.9 - - - - - - - 0.0 - - - 0.0 - - - 0.0 - - - 0.0 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-slides/en/book/resources/miserables-with-dates.zip b/docs/generated-slides/en/book/resources/miserables-with-dates.zip deleted file mode 100644 index 5b8ecc0..0000000 Binary files a/docs/generated-slides/en/book/resources/miserables-with-dates.zip and /dev/null differ diff --git a/docs/generated-slides/en/book/resources/miserables.gexf b/docs/generated-slides/en/book/resources/miserables.gexf deleted file mode 100644 index 663d209..0000000 --- a/docs/generated-slides/en/book/resources/miserables.gexf +++ /dev/null @@ -1,1352 +0,0 @@ - - - - Gephi, Knuth 1993, Clement Levallois - A network of the characters from the Les Miserables novel by Victor Hugo (Knuth 1993). Modified by Clement Levallois to add the "gender" attribute. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-slides/en/book/resources/miserables.zip b/docs/generated-slides/en/book/resources/miserables.zip deleted file mode 100644 index e402bda..0000000 Binary files a/docs/generated-slides/en/book/resources/miserables.zip and /dev/null differ diff --git a/docs/generated-slides/en/book/resources/miserables_result.gexf b/docs/generated-slides/en/book/resources/miserables_result.gexf deleted file mode 100644 index 6b73a28..0000000 --- a/docs/generated-slides/en/book/resources/miserables_result.gexf +++ /dev/null @@ -1,1164 +0,0 @@ - - - - Gephi 0.9 - - - - - - - 0.0 - - - 0.0 - - - 0.0 - - - 0.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/generated-slides/en/book/resources/miserables_result.zip b/docs/generated-slides/en/book/resources/miserables_result.zip deleted file mode 100644 index e96fe54..0000000 Binary files a/docs/generated-slides/en/book/resources/miserables_result.zip and /dev/null differ diff --git a/docs/generated-slides/en/book/subdir/beginner-project-en_temp_common.md b/docs/generated-slides/en/book/subdir/beginner-project-en_temp_common.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/subdir/beginner-project-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/beginner-project-en_temp_pdf.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/subdir/beginner-project-en_temp_slides.md b/docs/generated-slides/en/book/subdir/beginner-project-en_temp_slides.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/subdir/book-gephi-tutorials-en_temp_common.md b/docs/generated-slides/en/book/subdir/book-gephi-tutorials-en_temp_common.md deleted file mode 100644 index 5ea9102..0000000 --- a/docs/generated-slides/en/book/subdir/book-gephi-tutorials-en_temp_common.md +++ /dev/null @@ -1,3177 +0,0 @@ -= Gephi: the documentation -Clément Levallois -2017-03-14 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -<<< - -= Chapter 2: What is Gephi? - -<<< -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. - -<<< - -= Chapter 3: History of Gephi - -<<< -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - -image::Gephi--cumulative-downloads.png[align="center", title="Gephi, cumulative downloads"] -{nbsp} + - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - -image::google-trends-gephi.png[align="center", title=""] -{nbsp} + - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + - -<<< - -= Chapter 4: Simple Gephi Project from A to Z - -<<< -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: - -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network - -//ST: ! - -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network - -//ST: ! - -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! - -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - - -<<< - -= Chapter 5: Using filters - -<<< -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - - -<<< - -= Chapter 6: Importing data in Gephi - -<<< -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - - -<<< - -= Chapter 7: Working with text in Gephi - -<<< -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - - -<<< - -= Chapter 8: Creating a network from a table of cooccurring items - -<<< -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-and-restart-Gephi.png[align="center", title="Install the plugin and restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - - -<<< - -= Chapter 9: K-partite and Bipartite Graph (Multimode Networks Transformations) - -<<< -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and: - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - - -<<< - -= Chapter 10: Semantic Web Importer - -<<< -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html[Cecill-C] - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: - -[source,SQL] ----- -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} ----- - -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - - -<<< - -= Chapter 11: Creating a network from a table of entities and their attributes - -<<< -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - - -<<< - -= Chapter 12: Twitter Streaming Importer - -<<< -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - - -<<< - -= Chapter 13: Working from Gephi's source - -<<< -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - - -<<< - -= Chapter 14: Converting a network with dates into a dynamic network - -<<< -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -<<< - -= Chapter 15: Creating a simple dynamic network - -<<< -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] diff --git a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md b/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md deleted file mode 100644 index 0cc91da..0000000 --- a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_common.md +++ /dev/null @@ -1,173 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md b/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md deleted file mode 100644 index debd3b5..0000000 --- a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_html.md +++ /dev/null @@ -1,190 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] -{nbsp} + - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md b/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md deleted file mode 100644 index 81e25de..0000000 --- a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_pdf.md +++ /dev/null @@ -1,173 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -//ST: ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -//ST: ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -//ST: ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! - -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] -{nbsp} + - - -//ST: ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -//ST: ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -//ST: ! -==== 1. dynamic nodes with a start date - -//ST: ! - -image::Merge-columns.png[align="center",title="Merge columns"] -{nbsp} + - -//ST: ! - -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] -{nbsp} + - -//ST: ! - -image::Result.png[align="center",title="Result"] -{nbsp} + - - -//ST: ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -//ST: ! - - -{nbsp} + - -image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -{github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued -//ST: to be continued - - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md b/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md deleted file mode 100644 index 0f1eae8..0000000 --- a/docs/generated-slides/en/book/subdir/converting-a-network-with-dates-into-dynamic_temp_slides.md +++ /dev/null @@ -1,192 +0,0 @@ -= Converting a network with dates into a dynamic network -Clément Levallois -2017-02-17 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial - -== ! - -- We take a normal network, where nodes have attributes which can serve as time indication (a date, a number...) -- We convert this network into a dynamic network: nodes will appear and disappear according to their attributes. - -== download a network file for practice - -== ! - -link:../../resources/miserables-with-dates.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-4[https://tinyurl.com/gephi-tuto-4] - -== ! - -You should find the file `miserables-with-dates.gexf` in the zip file. Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - -== ! -This file has been modified to add some dates to each character in the novel: - -- a "start date", which is a day (example: 22/09/1835). This is the date when the character *enters* the action in the novel -- an "end date", also a day (example: 22/09/1840). This is the date when the character *leaves* the action in the novel -- a "peak moment". This is a number (example: 14263). This is an instant when the character is at the center of the plot. This number has no historical meaning, this is just a chronological moment in time. - -== ! - -NOTE:: Values for start date, end date and peak moment have no real significance in the novel. They are made up for this exercise. - -== open the network in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables-with-dates.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== ! -[.stretch] -image::result_miserables.png[align="center",title="The network we will use"] - - -== getting a sense of the attributes in the data laboratory - -== ! -We can switch to the data laboratory to see the underlying data: - -[.stretch] -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] - - - -== ! - -[.stretch] -image::Zoom-on-three-attributes-representing-time.png[align="center",title="Zoom on three attributes representing time"] - - - -== ! -The nodes (characters) of the network have attributes (start date, end date, peak moment) which can make this graph dynamic - but it is not yet. - -A couple of steps are needed to enable the dynamic features, and here a choice must be made: - -== ! - -Do we prefer to have... - -1. ... nodes appearing on screen at their start date, and staying on screen for ever after? -2. ... nodes appearing on screen at their start date, and leaving the screen at their end date? -3. ... nodes being representedsimply by their "peak moment" (a number), without reference to chronological dates? - -We will present these 3 possibilities. - -== ! -==== 1. dynamic nodes with a start date - -== ! - -[.stretch] -image::Merge-columns.png[align="center",title="Merge columns"] - - -== ! - -[.stretch] -image::Set-up-the-parameters---1.png[align="center",title="Set up the parameters - 1"] - - -== ! - -[.stretch] -image::Result.png[align="center",title="Result"] - - - -== ! -Let's switch back to the Overview to see the graph and how it evolves in time. - -IMPORTANT:: We are going to use the timeline to play the animation. The timeline has many features which are explained in a specific tutorial. - -== ! - -[.stretch] -image::moving-timeline-miserables-1-en.gif[align="center",title="Animating the dynamic network"] - - -//PDF: image::moving-timeline-miserables-2-en.png[align="center",title="Animating the dynamic network"] - -//PDF: {github-root}images/moving-timeline-miserables-1-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-5 - - -== to be continued - - -== more tutorials on dynamic networks with Gephi - -== ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_common.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_common.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_common.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_html.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_html.md deleted file mode 100644 index 39a4ee3..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_html.md +++ /dev/null @@ -1,275 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_pdf.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_pdf.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_slides.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_slides.md deleted file mode 100644 index a4aa87b..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer-en_temp_slides.md +++ /dev/null @@ -1,283 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -== ! -==== 1. The input -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== 2nd panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] - - -== ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -== ! -==== 3rd panel -== ! - -[.stretch] -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] - - -== ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -== ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -== ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -== ! -==== 4th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] - - -== ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -[.stretch] -image::commas-shown-in-red.png[align="center", title="commas shown in red"] - - - -== ! -==== 5th panel -== ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -== ! -==== 6th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] - - -== ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -== ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -== ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -== ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -== ! -==== 7th panel -== ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_common.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_common.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_common.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_html.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_html.md deleted file mode 100644 index 39a4ee3..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_html.md +++ /dev/null @@ -1,275 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_pdf.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_pdf.md deleted file mode 100644 index fc76b9e..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_pdf.md +++ /dev/null @@ -1,258 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -//ST: ! -==== 1. The input -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== 2nd panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -//ST: ! -==== 3rd panel -//ST: ! - -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] -{nbsp} + - -//ST: ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -//ST: ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -//ST: ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -//ST: ! -==== 4th panel -//ST: ! - -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] -{nbsp} + - -//ST: ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -image::commas-shown-in-red.png[align="center", title="commas shown in red"] -{nbsp} + - - -//ST: ! -==== 5th panel -//ST: ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -//ST: ! -==== 6th panel -//ST: ! - -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] -{nbsp} + - -//ST: ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -//ST: ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -//ST: ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -//ST: ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -//ST: ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -//ST: ! -==== 7th panel -//ST: ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_slides.md b/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_slides.md deleted file mode 100644 index a4aa87b..0000000 --- a/docs/generated-slides/en/book/subdir/cooccurrences-computer_temp_slides.md +++ /dev/null @@ -1,283 +0,0 @@ -= Creating a network from a table of cooccurring items -Clément Levallois -2017-02-27 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, each row describes an "occurrence" (of an event, a purchase, a relation, etc.) -* In columns A, B, C, D, we have the entities involved: column A for persons, column B for what they bought, etc. -* Connections will be created between entities, when they appear in the same occurrence (so, when they are on thee same row) -* Occurrences can have dates, multiple instances of an entity can be listed in a given column. - -== ! -==== 1. The input -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== 2nd panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-2-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/cooccurrences-computer/excel-1-en.png[align="center", title="A file with headers"] - - -== ! -To describe the next screens of the plugin, we will take the example of *the Excel file just shown*, with headers. - -== ! -==== 3rd panel -== ! - -[.stretch] -image::en/cooccurrences-computer/plugin-panels-1-en.png[align="center", title="Which entities should be the nodes?"] - - -== ! -What does this panel mean? - -If you look back at the Excel file, you see that we have "Clients" and their "Purchases". - --> This means we can build 2 different types of networks, depending on our needs: - -== ! - -1. A network showing clients and products, with relations representing purchases from a client to a product. - -[graphviz, client-to-product, png] ----- -graph g { - rankdir="LR"; - client -- product [ label="purchased" ] -} ----- - -To create this kind of networks, choose "Client" in the upper window, and "Purchases" in the lower window of the plugin screen. - - -== ! -[start=2] -2. Or a network where 2 products are connected, if one client puchased them together. - -[graphviz, product-to-product, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased together"] - a [label="product 1"]; - b [label="product 2"]; -} ----- - -To create this kind of networks, choose "Purchases" in the upper [underline]#and# lower windows of the plugin screen. - - -== ! -==== 4th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/subfield-delimiter-en.png[align="center", title="Choosing which delimiter is used"] - - -== ! - -This 3rd panel asks: in our Excel file, how are different items separated in a given cell? -In our example, we have used commas: the lists of products purchased are comma-separated: - -[.stretch] -image::commas-shown-in-red.png[align="center", title="commas shown in red"] - - - -== ! -==== 5th panel -== ! - -This panel allows you to specify whether the relations are dynamic in time, or not. - -In this case, you need an extra column (column C), where a date is shown. We don't cover this case here. - -(read the tutorials on dynamic networks for a starter) - - -== ! -==== 6th panel -== ! - -[.stretch] -image::en/cooccurrences-computer/panel-6-1-en.png[align="center", title="Options panel"] - - -== ! - - "Create links between Purchases agents and links between Purchase agents" - --> If you chose a Product <--> Product kind of network in panel 3, then of course you are interested in links between products. *Check the box*. - -== ! - --> But if you chose a Client <--> Product kind of network in panel 3, what you need is less obvious. - -Let's take the example of client I, who purchased a table and some chairs: - -== ! - -1. Checking the box will create a network where: - -[graphviz, inner-links-included, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - b -- c [label=" co-purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - -1. *Not* checking the box will create a network where: - -[graphviz, inner-links-excluded, png] ----- -graph g { - rankdir="LR"; - a -- b [label=" purchased"] - a -- c [label=" purchased"] - - a [label="client I"]; - b [label="table"]; - c [label="chairs"]; - -} ----- - -== ! - - "Remove duplicates" - --> Check this option if your Excel or csv file has duplicate rows that you'd like to be removed - -== ! - - "Remove self-loops" - -If a Client has purchased tables twice, so that we have "table, table" in a cell: this would create a link from table to table (a *self loop*). - --> Check this option if you'd like self loops to be removed. - -== ! -==== 7th panel -== ! - -This panel recaps all the settings. Click on finish to create the network. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md b/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md deleted file mode 100644 index ce84d14..0000000 --- a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_common.md +++ /dev/null @@ -1,211 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md b/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md deleted file mode 100644 index dfd5f77..0000000 --- a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_html.md +++ /dev/null @@ -1,228 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md b/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md deleted file mode 100644 index ce84d14..0000000 --- a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_pdf.md +++ /dev/null @@ -1,211 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:sourcedir: ../../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial -//ST: Goals of this tutorial - -//ST: ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -//ST: ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi -//ST: open a new project in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -image::Open-a-new-project.png[align="center", title="Open a new project"] -{nbsp} + - -== creating network "A" -//ST: creating network "A" - -//ST: ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] -{nbsp} + - -//ST: ! - -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] -{nbsp} + - -//ST: ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -//ST: ! - -image::Exporting-the-network.png[align="center", title="Exporting the network"] -{nbsp} + - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -//ST: ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" -//ST: creating network "B" - -//ST: ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -//ST: ! - -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] -{nbsp} + - -Create one edge, or a couple of edges, in this way. - -//ST: ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf -//ST: modifying just one line in the files network A.gexf and network B.gexf - -//ST: ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -//ST: ! -image::The-network-file-opened.png[align="center", title="The network file opened"] -{nbsp} + - -//ST: ! -Delete and replace this line by this one: - -//ST: ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -//ST: ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network -//ST: merging network "A" and "B" into a dynamic network - -//ST: ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -//ST: ! - -image::Closing-the-current-project.png[align="center", title="Closing the current project"] -{nbsp} + - -//ST: ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -image::Opening-files.png[align="center", title="Opening files"] -{nbsp} + - -//ST: ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] -{nbsp} + - -//ST: ! -Opening the files display a report window: - -image::Import-report-window.png[align="center", title="Import report window"] -{nbsp} + - - -== enabling the timeline -//ST: enabling the timeline - -//ST: ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] -{nbsp} + - -//ST: ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] -{nbsp} + - -//ST: ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi -//ST: more tutorials on dynamic networks with Gephi - -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md b/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md deleted file mode 100644 index df4ed7e..0000000 --- a/docs/generated-slides/en/book/subdir/creating-a-simple-dynamic-network_temp_slides.md +++ /dev/null @@ -1,232 +0,0 @@ -= Creating a simple dynamic network -Clément Levallois -2017-02-16 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:experimental: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Goals of this tutorial - -== ! - -- We are going to create one very simple *non dynamic* network (network "A"). -- then we will create a modified version of it (network "B"). -- in both files, we need to modify a single line. -- finally, we will merge networks A and B, forming a new *dynamic* network evolving from version A to B. - -== ! -[NOTE] -==== -The creation of the 2 networks is not a mandatory step: you can use your own network files, as long as they are in gexf file format. In this case, <>. - -We create the networks in this tutorial to provide the most simple and clear case. -==== - -== open a new project in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `New Project` - -[.stretch] -image::Open-a-new-project.png[align="center", title="Open a new project"] - - -== creating network "A" - -== ! -Our project is empty. -We can use a simple click-and-point tool to create a network: - -[.stretch] -image::Icon-for-node-creation.png[align="center", title="Icon for node creation"] - - -== ! - -[.stretch] -image::A-few-nodes-have-been-created.png[align="center", title="A few nodes have been created"] - - -== ! -When you have created a couple of nodes, click again on the pencil icon to stop the node creation. - -Export the network as a file and call it "network A": - -== ! - -[.stretch] -image::Exporting-the-network.png[align="center", title="Exporting the network"] - - -== ! - -[.stretch] -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] - - -== ! -Clicking on "Save" saves the file in the folder you chose. You are back to the view on your graph. - -== creating network "B" - -== ! - -Now, click on the "Edge pencil", just below the "Node pencil we have used (careful, the icons are identical!) - -== ! - -[.stretch] -image::Choosing-the-gexf-file-format.png[align="center", title="Choosing the gexf file format"] - - -Create one edge, or a couple of edges, in this way. - -== ! - -Clicking again on the pencil stops the edge creation by mouse clicks. - -Then export the network *in the same folder* where we put the previous file (`File -> Export -> Graph File ...`) - -*This time, name the file 'network B.gexf' and remember to choose the `gexf` file format just like we did before.* - -== modifying just one line in the files network A.gexf and network B.gexf - -== ! -[[merging]] -From your computer, open network A.gexf with a text editor (don't use Microsoft Word!): - -(here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). - -== ! -[.stretch] -image::The-network-file-opened.png[align="center", title="The network file opened"] - - -== ! -Delete and replace this line by this one: - -== ! - -[source,xml] ----- - ----- -See `timestamp="1"` ? It means this will be the first "time slice" of your dynamic network. - -Save the file. - -== ! -Repeat the steps for network B.gexf: - -- open the file in a text editor, -- find the line `` -- replace it by: - -[source,xml] ----- - ----- - -(see that we have *`timestamp="2"`* here: this is going to be the second time slice!) - -- save the file. - -== merging network "A" and "B" into a dynamic network - -== ! -We will use the 2 files network A.gexf and network B.gexf that we have created. - -First, let's close the project we have in Gephi, without saving: - -== ! - -[.stretch] -image::Closing-the-current-project.png[align="center", title="Closing the current project"] - - -== ! -Then click on `File -> Open` and navigate to the folder where network A.gexf and network B.gexf are located: - -[.stretch] -image::Opening-files.png[align="center", title="Opening files"] - - -== ! -Here, make sure you select the *2 files at once* (using the key kbd:[Ctrl] on pc or kbd:[{commandkey}] on mac). - -[.stretch] -image::Opening-2-files-at-once.png[align="center", title="Opening 2 files at once"] - - -== ! -Opening the files display a report window: - -[.stretch] -image::Import-report-window.png[align="center", title="Import report window"] - - - -== enabling the timeline - -== ! -You should see this button, click on it (if not: something went wrong. Retrace your steps) - -[.stretch] -image::Enable-the-timeline.png[align="center", title="Enable the timeline"] - - -== ! -Click and slide the right side border of the timeline *to the left*. You should see the edge disappear: - -[.stretch] -image::Sliding-the-timeline.png[align="center", title="Sliding the timeline"] - - -== ! -We created a dynamic network. -It needs to be animated precisely with the timeline, dynamic attributes should be explored, as well as dynamic layouts. - -These features will be explained in the coming tutorials on dynamic networks with Gephi. - -== more tutorials on dynamic networks with Gephi - -== ! - -- https://github.com/gephi/gephi/wiki/Import-Dynamic-Data[The wiki on gephi.org] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_common.md b/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_common.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_html.md b/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_html.md deleted file mode 100644 index 289229b..0000000 --- a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_html.md +++ /dev/null @@ -1,17 +0,0 @@ -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_pdf.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_slides.md b/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_slides.md deleted file mode 100644 index 289229b..0000000 --- a/docs/generated-slides/en/book/subdir/gephi-for-developers-en_temp_slides.md +++ /dev/null @@ -1,17 +0,0 @@ -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/history-en_temp_common.md b/docs/generated-slides/en/book/subdir/history-en_temp_common.md deleted file mode 100644 index 0f3cd81..0000000 --- a/docs/generated-slides/en/book/subdir/history-en_temp_common.md +++ /dev/null @@ -1,76 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + diff --git a/docs/generated-slides/en/book/subdir/history-en_temp_html.md b/docs/generated-slides/en/book/subdir/history-en_temp_html.md deleted file mode 100644 index 0a86abd..0000000 --- a/docs/generated-slides/en/book/subdir/history-en_temp_html.md +++ /dev/null @@ -1,93 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - -pass:[] - - -//ST: General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/history-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/history-en_temp_pdf.md deleted file mode 100644 index 4ab0872..0000000 --- a/docs/generated-slides/en/book/subdir/history-en_temp_pdf.md +++ /dev/null @@ -1,78 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== 2006 and Web Atlas - -//ST: History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] -{nbsp} + - -//ST: ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] -{nbsp} + - -== A series of metrics on Gephi's popularity over time - -//ST: ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -//ST: ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -//ST: ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -//ST: ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -//ST: Cumulative downloads for Gephi - - -image::Gephi--cumulative-downloads.png[align="center", title="Gephi, cumulative downloads"] -{nbsp} + - -//ST: General interest for Gephi and related software over 2004 - 2016 - - -image::google-trends-gephi.png[align="center", title=""] -{nbsp} + - -//ST: Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -image::google-scholar-gephi.png[align="center", title=""] -{nbsp} + diff --git a/docs/generated-slides/en/book/subdir/history-en_temp_slides.md b/docs/generated-slides/en/book/subdir/history-en_temp_slides.md deleted file mode 100644 index b257c8f..0000000 --- a/docs/generated-slides/en/book/subdir/history-en_temp_slides.md +++ /dev/null @@ -1,93 +0,0 @@ -= History of Gephi -Clément Levallois -2017-01-11 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image:gephi-logo-2010-transparent.png[width="450" align="center"] - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== History of Gephi - -The origin of Gephi lays in http://webatlas.fr/wp/[Web Atlas], a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs. -This was about the same time http://www.cond.org/[Eytan Adar] was developing his https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjljNmDtbrRAhXL6xQKHWDdDRMQFggcMAA&url=http%3A%2F%2Fgraphexploration.cond.org%2Fchi2006%2Fguess-chi2006.pdf&usg=AFQjCNETmuZqHoaZyJSYpSuTGQ87PNSCLA&sig2=ns0z9wqVRIo5riVtHv1QfQ[GUESS software] - -[.stretch] -image::matthieu-jacomy.jpg[align="center", title="Mathieu Jacomy", id=package_overview] - - -== ! - -In 2007/2008, this project morphed into Gephi, developed by a team of students at Université Technologique de Compiègne (https://www.utc.fr/en.html[UTC]). - -[.stretch] -image::initial-team.png[width=450, align="center", title="The initial Gephi team"] - - - -== ! - -Gephi has evolved in several major milestones: - -- version 0.6 (2009): the initial public release. Contains already the filter system. -- version 0.7 (2010): Major overhaul of the graphics interface. Started using OpenGL framework for graphics acceleration. A system of plugin is created. - -== ! - -- version 0.8 (2011): Introduced dynamic graphs. - -2011 to 2016: Many plugins were created for Gephi, and the software sarted becoming much popular. - -Mac computer users had issues installing Gephi on their computers because of a Java compatibility issue. - -== ! - -version 0.9 (December 2015): - -- A graph engine optimized for memory is introduced: Gephi can handle much larger graphs. -- The codebase for the project is "mavenized", making the code more modular and easier to maintain. -- Compatibility issues with Mac OS are solved. - -== ! - -In 2016, Gephi is translated in French, Spanish, Japanese,  Russian, Polish, Brazilian Portuguese, Chinese, Czech and German. - -== Cumulative downloads for Gephi - -pass:[] - - -== General interest for Gephi and related software over 2004 - 2016 - -pass:[] - - -== Academic citations for Gephi (counting only citations to Bastian et al., 2009) - -[.stretch] -image::google-scholar-gephi.png[align="center", title=""] - -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_common.md b/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_common.md deleted file mode 100644 index c0cee86..0000000 --- a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_common.md +++ /dev/null @@ -1,2 +0,0 @@ -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] -{nbsp} + diff --git a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_html.md b/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_html.md deleted file mode 100644 index 84a849e..0000000 --- a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_html.md +++ /dev/null @@ -1,19 +0,0 @@ -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] -{nbsp} + -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_pdf.md b/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_pdf.md deleted file mode 100644 index 000b574..0000000 --- a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_pdf.md +++ /dev/null @@ -1,2 +0,0 @@ - -{nbsp} + diff --git a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_slides.md b/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_slides.md deleted file mode 100644 index cea8bac..0000000 --- a/docs/generated-slides/en/book/subdir/how should Gephi be pronounced_temp_slides.md +++ /dev/null @@ -1,20 +0,0 @@ -[.stretch] -image::http://i.giphy.com/bkKvvzE9PEcTK.gif[] - -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md b/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md deleted file mode 100644 index 9804103..0000000 --- a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_common.md +++ /dev/null @@ -1,243 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md b/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md deleted file mode 100644 index ea4650d..0000000 --- a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_html.md +++ /dev/null @@ -1,260 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md deleted file mode 100644 index 9804103..0000000 --- a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_pdf.md +++ /dev/null @@ -1,243 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] -{nbsp} + - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] -{nbsp} + - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] -{nbsp} + - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] -{nbsp} + - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] -{nbsp} + - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] -{nbsp} + - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] -{nbsp} + - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] -{nbsp} + - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] -{nbsp} + - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] -{nbsp} + - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md b/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md deleted file mode 100644 index 4401bfe..0000000 --- a/docs/generated-slides/en/book/subdir/importing-csv-data-in-gephi-en_temp_slides.md +++ /dev/null @@ -1,263 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Importing an existing network file - -== ! -Gephi handles the import of network files in a variety of formats: - -[.stretch] -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - - -== ! -To import any of these files, just choose the `File -> Open` menu - - -== Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -== ! -The easiest is probably to just have a text file like this one: - ----- -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy ----- - -<1> This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -== ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -[.stretch] -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - - -== ! -In this window, make sure the box "Create missing nodes" is checked: - -[.stretch] -image::Second-screen.png[align="center",title="Second screen"] - - -[[full-csv-version]] -== Importing nodes with labels and their relations: full version - -== ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -== ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -== ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -== ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -== ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -== ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -== ! -These extra " " will make the Gephi import break: - -[.stretch] -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - - -== ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -== ! -This time, Gephi imports the network correctly: - -[.stretch] -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - - -== Importing more than labels: nodes and edges attributes - -== ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -== ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -== ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -== ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -[.stretch] -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - - -== ! -in the next screen, we must be careful with a couple of things: - -[.stretch] -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - - -== ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -[.stretch] -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - - -== ! - -[.stretch] -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - - -== Memo card - -== ! -Nodes - -- header must be at least `Id,Label` - -== ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -== ! -Types of attributes: which to choose? - -[.stretch] -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - - -== ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) - - -== More tutorials on importing data to Gephi -== ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] -- https://www.youtube.com/watch?v=3Im7vNRA2ns[Video "How to import a CSV into Gephi" by Jen Golbeck] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_common.md b/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_common.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_common.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_html.md b/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_html.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_html.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md deleted file mode 100644 index 73cbad9..0000000 --- a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_pdf.md +++ /dev/null @@ -1,230 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -//ST: 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file -//ST: Importing an existing network file - -//ST: ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -//ST: ! -To import any of these files, just choose the `File -> Open` menu - -== Importing nodes with labels and their relations: simplest version - -//ST: Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -//ST: ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -//ST: ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -//ST: ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -//ST: Importing nodes with labels and their relations: full version - -//ST: ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -//ST: ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -//ST: ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -//ST: ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -//ST: ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -//ST: ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -//ST: ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -//ST: ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -//ST: ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes -//ST: Importing more than labels: nodes and edges attributes - -//ST: ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -//ST: ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -//ST: ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -//ST: ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -//ST: ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -//ST: ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -//ST: ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card -//ST: Memo card - -//ST: ! -Nodes - -- header must be at least `Id,Label` - -//ST: ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -//ST: ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -//ST: ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on importing data to Gephi -//ST: More tutorials on importing data to Gephi -//ST: ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_slides.md b/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_slides.md deleted file mode 100644 index 1b17ae5..0000000 --- a/docs/generated-slides/en/book/subdir/importing-data-in-gephi-en_temp_slides.md +++ /dev/null @@ -1,222 +0,0 @@ -= Importing data in Gephi -Clément Levallois -2017-02-03 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - -== 'Escape' to see all sides, F11 for full screen - -== Importing an existing network file - -== ! -Gephi handles the import of network files in a variety of formats: - -image::network-formats-gephi-import-en.png[align="center",title="file formats supported by Gephi. Source: gephi.org"] - -== ! -To import any of these files, just choose the `File -> Open` menu - - -== Importing nodes with labels and their relations: simplest version - -(looking for the complete, full featured csv import version? <>.) - -== ! -The easiest is probably to just have a text file like this one: - -.... -Source,Target <1> -Jeremy,Jennifer -Valerian,Jeremy -.... -<1>This line is mandatory. Don't put a space between the comma and "Target" - -Just write this in a text editor and save it as a file `example.txt` - -== ! - -To import this file in Gephi, go to `File->Import Spreadsheet`. Then in the window: - -image::Importing-nodes-with-labels-and-their-relations.png[align="center",title="Importing nodes with labels and their relations"] - -== ! -In this window, make sure the box "Create missing nodes" is checked: - -image::Second-screen.png[align="center",title="Second screen"] - -[[full-csv-version]] -== Importing nodes with labels and their relations: full version - -== ! -Let's look again at the simple text file we used: - -.... -Source,Target -Jeremy,Jennifer -Valerian,Jeremy -.... - -There are 2 issues and several missing features, listed below: - -== ! -==== 1. labels containing commas in them will not work. - -Imagine our characters have first names and last names separated by a comma: - -Dubois, Jeremy - -Rodriguez, Valerian - -== ! -This will look like: - -.... -Source,Target -Dubois, Jeremy,Jeremy,Jennifer -Rodriguez, Valerian,Dubois, Jeremy -.... - -== ! - -Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break. - -== ! -The proper solution is to put node labels inside *double quotes*: - -.... -Source,Target -"Dubois, Jeremy","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy" -.... - -Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have. - -== ! -==== 2. labels containing double quotes " " in them will not work. - -Example: let's imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy "Danger"","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy "Danger"" -.... - -== ! -These extra " " will make the Gephi import break: - -image::en/import-spreadsheet-4-en.png[align="center",title="The import bugs - the middle name has disappeared"] - - -== ! -The solution consists in *adding an extra double quote in front of the double quotes*. -Our text file will look like: -.... -Source,Target -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer" -"Rodriguez, Valerian","Dubois, Jeremy ""Danger""" -.... - -== ! -This time, Gephi imports the network correctly: - -image::en/import-spreadsheet-3-en.png[align="center",title="Importing node labels containing double quotes"] - -== Importing more than labels: nodes and edges attributes - -== ! -To import attributes we will need to proceed differently. - -We need 2 text files: one for the list of nodes, one for the list of relations (edges) - -== ! - -An example file with a list of nodes: -.... -Id,Label,Date of Birth,Place of Birth,Years of experience,Rating <1> -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27 -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34 -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66 -.... -<1> Nodes *must* have at least an Id and a Label. Don't put spaces after the commas - -== ! -An example file with a list of edges: -.... -Source,Target,Weight,Type,Where first met <1> -1,45,3,"undirected",London <2> -.... -<1> Edges *must* have at least a Source and Target. Other fields are optional. -<2> "undirected", the alternative is "directed". Directed edges have arrow heads. - -== ! -Let's import the list of nodes first. `File -> Import Spreadsheet` - -image::Importing-a-list-of-nodes-with-attributes.png[align="center",title="Importing a list of nodes with attributes"] - -== ! -in the next screen, we must be careful with a couple of things: - -image::The-attributes-of-the-nodes.png[align="center",title="The attributes of the nodes"] - -== ! -Then we can import the file with the list of relations. `File -> Import Spreadsheet` - -image::Importing-a-list-of-edges-with-attributes.png[align="center",title="Importing a list of edges with attributes"] - -== ! - -image::The-attributes-of-the-edges.png[align="center",title="The attributes of the edges"] - -== Memo card - -== ! -Nodes - -- header must be at least `Id,Label` - -== ! -Edges - -- header must be at least `Source,Target` -- To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight". -- Want arrows on your links? Add an attribute "Type", with value "Directed" -- Don't wan't arrows? Add an attribute "Type", with value "Undirected" - -== ! -Types of attributes: which to choose? - -image::en/import-spreadsheet-9-en.png[align="center",title="Kinds of attributes"] - -== ! - -- Textual attribute: `String`. Nodes sharing the same textual value can be colored the same, or filtered together... -- Numerical attribute: `Integer`, `Double` or `Float`. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values. -- Boolean attribute: just a `true` or `false` value. Useful for filtering out some nodes which are true or false on some parameter. -- Other types of attributes: not needed for the moment. - - -== (to be continued) - - -== More tutorials on importing data to Gephi -== ! - -- https://github.com/gephi/gephi/wiki/Import-CSV-Data[The Gephi wiki on importing csv] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md deleted file mode 100644 index a1d3645..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_common.md +++ /dev/null @@ -1,247 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md deleted file mode 100644 index 139b862..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_html.md +++ /dev/null @@ -1,264 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md deleted file mode 100644 index a1d3645..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_pdf.md +++ /dev/null @@ -1,247 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] -{nbsp} + - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - -== Using a Plugin - -//ST: Using a Plugin - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] -{nbsp} + - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] -{nbsp} + - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] -{nbsp} + - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] -{nbsp} + - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] -{nbsp} + - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -//ST: ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - -== Benefits - -//ST: Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md deleted file mode 100644 index 05b4b9d..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph-en_temp_slides.md +++ /dev/null @@ -1,262 +0,0 @@ -= K-partite and Bipartite Graph (Multimode Networks Transformations) -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Author and documentation - -== ! - -The Multimode Networks Transformations plugin allows you transform a k-partite graph into a mono-partite graph. - -== ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic[https://gephi.org/plugins/#/plugin/semantic] - -Plugin Author: https://github.com/jaroslav-kuchar[Jaroslav Kuchar] - -Plugin sources: https://github.com/totetmatt/gephi-plugins/tree/multimode-network[https://github.com/totetmatt/gephi-plugins/tree/multimode-network] - -Licensed under: GNU GENERAL PUBLIC LICENSE - - - -== K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network: Persons -* In a Route Network: Bus Stops, Airports, Stations etc… -* In a Geographical Network: Countries - -== ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. -These -graphs are called **Multipartite Graphs** : - -== ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -== ! - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -== ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -== ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - - -== The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -== ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -== ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -[.stretch] -image::en/k-partite/k-partite-simple-graph.png[align="center",title="Cac 40 bipartite graph"] - - - -== ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - - -== ! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -== ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -== ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go: - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -== ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appear that in some other case, one of the generated graphs won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation? - - -== Using a Plugin - -== ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -== ! - -[.stretch] -image::en/k-partite/k-partite-install-plugin.png[align="center",title="Plugin Install"] - - -== ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -== ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -== ! - -> The plugin will modify directly the graph on the current workspace. If you want to keep the original graph, be sure -> you have copied your workspace. - -== ! - -[.stretch] -image::en/k-partite/k-partite-config.png[align="center",title="MultiPartite_Gephi"] - - - -== ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -== ! - -[.stretch] -image::en/k-partite/k-partite-simple-p2p.png[align="center",title="Tuto_Multi_P2P"] - - - -== ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -== ! - -[.stretch] -image::en/k-partite/k-partite-config-2.png[align="center",title="MultiPartite_Gephi_2"] - - -== ! - -[.stretch] -image::en/k-partite/k-partite-simple-c2c.png[align="center",title="Tuto_Multi_C2C"] - - -== ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of **common administrator** between company is **3**: Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators. -* The maximum of **common company** between person is **3**: Gerard Lamarche and Paul Demaray Jr see each other in Total, GDF Suez and Lafarge SA. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -== ! - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -== ! - -> The next steps are now mostly to look at graphs, and summarize all -> the particularities into some kind of output (poster, interactive graph, -> newspaper etc…) - - -== Limitations - -The plugin works quite well, but sometimes it has some limitation on large graphs. Or sometimes you may want to reduce your graph and have a custom metric computed. -Then the only alternative to that is to use a script that will generate the graph for you. - - -== Conclusion - -Multipartite graphs are complex to analyse, but synthesizing them to lower partite graphs gives you a better vision and insights about your data. - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_common.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_common.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_common.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_html.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_html.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_html.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md deleted file mode 100644 index dcdc73f..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_pdf.md +++ /dev/null @@ -1,216 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== K-partite, Bipartite … What is it ? - -//ST: K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -//ST: ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -//ST: ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -//ST: ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -//ST: ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -//ST: ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - -== The Dataset - -//ST: The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -//ST: ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -//ST: ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -//ST: ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - -== How to deal with multipartite graphs ? - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -//ST: ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -//ST: ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -//ST: ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - -== Using a Plugin - -//ST: Using a Plugin - - -//ST: ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -//ST: ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -//ST: ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -//ST: ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -//ST: ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -//ST: ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -//ST: ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -//ST: ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -//ST: ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -//ST: ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -//ST: ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -//ST: ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -//ST: ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -//ST: ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - -== Limitations - -//ST: Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - -== Conclusion - -//ST: Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md b/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md deleted file mode 100644 index 3ff235d..0000000 --- a/docs/generated-slides/en/book/subdir/k-partite-bi-partite-graph_temp_slides.md +++ /dev/null @@ -1,209 +0,0 @@ -= K-partite and Bipartite Graph -Matthieu Totet -2017-01-29 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - - -== K-partite, Bipartite … What is it ? - -Most of the time, when you create a graph, all the nodes are representing the same « kind » of object. - -* In a Social Network : Persons -* In a Route Netowork : Bus Stops, Airports, Stations etc… -* In a Geographical Network : Countries - -== ! - -But sometimes, you will encounter graphs that will have 2, 3 or multiple « kinds » of nodes where the links are almost exclusively going from one type to the other. These -graphs are called **Multipartite Graphs** : - -== ! - -* If you have **2** kinds of nodes, it’s a **Bi**partite Graph (or **2**-partite) -** Example : Social Network : Persons < - > Companies - -== ! - - -* If you have **3** kinds of nodes it’s a** 3**-partite Graph -** Example : Movie Network : Actors < - > Movies < - > Movie Companies - -== ! - -* If you have **k** kinds of nodes it’s a **k**-partite Graph - -== ! - -If you want a proper scientific definition, you can check the https://en.wikipedia.org/wiki/Multipartite_graph[Wikipedia] page about the subject. - - -== The dataset - -We will use a well known data set : The Cac 40 Administrators relationship from http://www.citoyennumerique.fr/?tag=cac40[www.citoyennumerique.fr.] - -The files for Gephi are accessible here : link::../../resources/k-partite-bi-partite.zip[Gexf files] - -The tutorial will be based on the **SimpleGraph**, but you also have access to the **FullGraph** to play with. - -== ! - -The CAC 40 represents the 40 most valuable company on the french stock market. A **company** has several **administrators ** and nothing prevent an **administrator** to be in multiple **companies**. So the graph is build such as **companies** are sources of edges and targets are the **administrators**. - -== ! - -This is a typical bi-partite graph. If you look on the data, part of the node has a property type **Administrator** and the other part has a property type **Company**. - -image::en/k-partite/k-partite-simple-graph.png[Cac 40 bipartite graph] - - -== ! - -We can get quick observations: - -* Filtering by InDegree, we can check that Michel Pebereau and Jean-Martin Folz are in **5 companies** at the same time. -* Filtering by OutDegree, we can check that St-Gobain and Total have **8 administrators** that are in other companies. - -But that could be done without graph, an ordered list on excel would have done the job. - - -//ST:! - -Having a k-partite graph makes somehow the graph unfriendly to read. Usually, the metrics will be difficult to interpret, and -generating a good visualisation from it won't be trivial. - -One method here is to **reduce** the **bi-partite** graph into a **mono-partite** graph. - -== ! - - -> By reducing, we will « lose » information but we gain in **readability** and **synthesis**, -> that’s part of the work in data visualisation to see at which level we -> want to go and how to deal with this trade of information. This will -> mostly be driven by the question you want to answer. - -== ! - -The principle of the reduction is to consider a type of **nodes** as **edges** and build a new graph based on this rule. -In our example we have 2 ways to go : - -* Either we decide that the nodes of type « Company » are the edges. It will generate a "**graph** of **Persons **" -* Either we decide that the nodes of type « Person » are the edges. It will generate a "**graph** of **Company **" - -== ! - -> Here both graphs generated makes « sense » (network of -> entities) but it might appears that in some other case, one of the generated graph won't really be 'interesting'. -> That’s part of your work to judge this aspect. - -Now, how to perform the transformation ? - - -== Using a Plugin - - -== ! - -The easiest way is to use the link::https://marketplace.gephi.org/plugin/multimode-networks-transformations-2/[Multimode Network Transformation plugin]. -The plugin is available on the Gephi app market and in the plugin manager in Gephi. - -== ! - -image::en/k-partite/k-partite-install-plugin.png[Plugin Install] - -== ! - -When it’s installed, you should be able to see or display the ** Multimode Network Transformation** tab. - -== ! - -Then, load the graph and : - -* Click on **Load Attributes** and select **Type** on **Attribute Type.** -* For left matrix select **Administrator – Company** and right matrix **Company – Adminstrator** -* Enable **Remove Edges** and** Remove Nodes**, and Click** Run - -== ! - -> The plugin will modify directly the graph on the current workspace. If you want' to keep the original graph, be sure -> you've done a clone of your workspace. - -== ! - -image::en/k-partite/k-partite-config.png[MultiPartite_Gephi] - - -== ! - -The plugins will actually to transform each relation like: - -(Administrator)**<-**(Company)**->**(Administrator) - -to - -(Administrator)**<-[**{weight=Nb of Common Companies}**]->**(Administrator) - -Now you should have a graph with only administrators on the graph preview. - -== ! - -image::en/k-partite/k-partite-simple-p2p.png[Tuto_Multi_P2P] - - -== ! - -To generate the relation between companies, replay the same steps -from the original graph (duplicate the workspace0 again) and in the **Multimode Network Transformation** use : - -* Left Matrix : Company – Administrator -* Right Matrix : Administrator – Company - -== ! - -image::en/k-partite/k-partite-config-2.png[MultiPartite_Gephi_2] - -== ! - -image::en/k-partite/k-partite-simple-c2c.png[Tuto_Multi_C2C] - -== ! - -With the 2 new graphs, and playing with the weighted degree of the nodes, we are able to see some particularities: - -* The maximum of** common administrator** between company is **3** : Bouygues and Alstom with Olivier Bouygues, Patrick Kron, Georges Chodron de Courcel -* **Half of the companies** are sharing at least 2 administrators . -* The maximum of **common company** between person is **3** - : Gerard Lamarche and Paul Demaray Jr see each other when Total, GDF - -== ! - -Suez and Lafarge SA have a meeting with Board of Directors. -* From all administrators that are in at least 2 companies,** 1/3 of them are at least in the _same_ 2 companies**. - -Theses statements could have been deduced from the original graph, but now, the information is more visible and accessible, especially if you want to share it to a large public. - -== ! - -> The works now is mostly to look at graphs, and resume all -> the particularities within a production (poster, interactive graph, -> newspaper etc…) - - -== Limitations - -The plugin works quite well, but sometime it has some limitation on large graph. Or sometime you may want to reduce your graph and have a custom metric computed. Then the only alternative to that is to use a script that will generate you the graph. - - -== Conclusion - -Multipartite graph are complex to analyse, but synthesising it to lower partite graphs gives you more vision to get insight about your data. diff --git a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_common.md b/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_common.md deleted file mode 100644 index d421e13..0000000 --- a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_common.md +++ /dev/null @@ -1,213 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_html.md b/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_html.md deleted file mode 100644 index 7167b56..0000000 --- a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_html.md +++ /dev/null @@ -1,230 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_pdf.md deleted file mode 100644 index d421e13..0000000 --- a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_pdf.md +++ /dev/null @@ -1,213 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -//ST: Author and documentation -== Author and documentation - -//ST: ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -//ST: ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -//ST: Introduction -== Introduction to concepts - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -//ST: ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -//ST: ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -//ST: ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -//ST: Quickstart -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -//ST: ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -//ST: ! - -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] -{nbsp} + - -//ST: ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -//ST: ! - -Finally, click on *Run* - -//ST: ! - -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] -{nbsp} + - -//ST: ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -image::en/semantic-web-importer/result_1.png[align="center", title"result"] -{nbsp} + - -//ST: Details -== Details - -//ST: ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -//ST: ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -//ST: ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -//ST: ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -//ST: ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -//ST: ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further -== Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -//ST: ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -//ST: ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_slides.md b/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_slides.md deleted file mode 100644 index fe9108a..0000000 --- a/docs/generated-slides/en/book/subdir/semantic-web-importer-en_temp_slides.md +++ /dev/null @@ -1,227 +0,0 @@ -= Semantic Web Importer -Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Author and documentation - -== ! - -The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi. - -== ! - -Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic - -Plugin Author: https://github.com/ErwanDemairy[Erwan Demairy] - -Plugin sources: https://scm.gforge.inria.fr/anonscm/git/segviz-public/gephi-plugins.git/[git://scm.gforge.inria.fr/segviz-public/gephi-plugins.git] - -Licensed under: Cecill-C - - -== Introduction - -RDF stands for https://en.wikipedia.org/wiki/Resource_Description_Framework[Resource Description Framework] . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system. - -RDF can be considered as the « Grand Father » of graph representation. - -== ! -The idea is very simple, all information can be represented as a triplet : - -> `(subject, predicate, object)` - -== ! - -To query such a dataset, a query language has been developed: https://en.wikipedia.org/wiki/SPARQL[SPARQL] - -The SPARQL format is close to SQL format and tries to be as close as possible to a natural language. - -http://dbpedia.org[DBpedia] is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service. - -== ! - -DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts. - -You can query it through a web interface or via any RDF toolkit : - -http://dbpedia.org/sparql[http://dbpedia.org/sparql] - -[source,SQL] ----- -select * -where -{ - ?predicate ?object. -} ----- - -== Quickstart - -The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi. - -First, we need to install Semantic web import. You can find and install this plugin in the menu Tools -> Plugins of Gephi. - -When installed, go to the Semantic Web Import tab. - -== ! - -In the *Driver* tab, choose *Remote - REST endpoint* and put *http://dbpedia.org/sparql* and *EndPoint URL*. - -[IMPORTANT] -==== -Press *Enter* after typing the URL endpoint so the url is getting validated and used. -==== - -== ! - -[.stretch] -image::en/semantic-web-importer/setup_1.png[align="center", title="Setup endpoint"] - - -== ! - -Go to *Query* tab, remove the dummy query and put this one: -``` -CONSTRUCT{ - ?person "person". - ?movie "movie". - ?movie ?person . -} -WHERE -{ - ?movie a . - ?movie ?rel1 . - ?movie ?rel2 ?person. - ?person a . -} -``` -== ! - -Finally, click on *Run* - -== ! - -[.stretch] -image::en/semantic-web-importer/setup_2.png[align="center", title="SPARQL Query"] - - -== ! - -Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering. - -[.stretch] -image::en/semantic-web-importer/result_1.png[align="center", title"result"] - - -== Details - -== ! - -==== CONSTRUCT block - -The `CONSTRUCT` block define the new graph to build from the query. That's the description of your data the plugin will interpet -to build the graph. - -What is the syntax for this `CONSTRUCT` block : - -== ! - -- `?a ?b` - --> Will create the node `?a` with the property `nodeProperty` equal to `?b`. - -- `?a ( or ?c) ?b` - --> will create a link between `?a` and `?b` with label `` - -== ! - -==== WHERE block -The `WHERE` block define the data to match based on the query typed in : - -== ! - -- `?movie a .` - --> Get all subject which is a ``. -The `a` is actually a SPARQL special word for ``. -So it’s exactly equal to `?movie ` - -- `?movie ?rel1 .` - --> Match all subjects which have any predicate where the object is `` - -== ! - -- `?movie ?rel2 ?person.` - --> Match any triplet - -- `?person a .` - --> Match the subject `?person` if it's a ``. - -== ! - -In other words, match the variable `?movie` to any entity that is a `Film` and that has at least 1 triplet where `Leonardo` is an object. Match also all `?person` that is a `Person`. - -The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio. - -//ST Tips to go further - -What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph. - -== ! - -On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉 - -But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research. - -== ! - -If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL. - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_common.md b/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_common.md deleted file mode 100644 index 7d0de4a..0000000 --- a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_common.md +++ /dev/null @@ -1,163 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_html.md b/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_html.md deleted file mode 100644 index d8e2bed..0000000 --- a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_html.md +++ /dev/null @@ -1,180 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_pdf.md deleted file mode 100644 index 7d0de4a..0000000 --- a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_pdf.md +++ /dev/null @@ -1,163 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin -//ST: Presentation of the plugin - -//ST: ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -//ST: ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -//ST: ! -==== 1. The input -//ST: ! - -image::An-Excel-file.png[align="center", title="An Excel file"] -{nbsp} + - - -//ST: ! -==== 2. The output -//ST: ! - -image::en/similarity-computer/result.png[align="center", title="Resulting network"] -{nbsp} + - -== Installing the plugin -//ST: Installing the plugin -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Opening the plugin -//ST: Opening the plugin -//ST: ! - -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] -{nbsp} + - -== Using the plugin -//ST: Using the plugin - -//ST: ! -==== First panel -//ST: ! - -image::Select-a-file.png[align="center", title="Select a file"] -{nbsp} + - -//ST: Is your file with a header? - -//ST: ! - -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] -{nbsp} + - -//ST: ! - -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] -{nbsp} + - -//ST: ! -==== Second panel -//ST: ! - -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] -{nbsp} + - -//ST: ! -==== Third panel -//ST: ! - -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] -{nbsp} + - -== How is the similarity computed, exactly? -//ST: How is the similarity computed, exactly? -//ST: ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -//ST: FAQ / special notes on the plugin -//ST: ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -//ST: ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] -{nbsp} + - -//ST: ! - -==== 3. You can't use numerical values in the attributes - -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] -{nbsp} + - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -//ST: ! - -==== 4. Each entity should appear only on one line - -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] -{nbsp} + - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_slides.md b/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_slides.md deleted file mode 100644 index 9d9da0f..0000000 --- a/docs/generated-slides/en/book/subdir/similarity-computer-en_temp_slides.md +++ /dev/null @@ -1,187 +0,0 @@ -= Creating a network from a table of entities and their attributes -Clément Levallois -2017-02-22 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Presentation of the plugin - -== ! - -This plugin is created by https://www.clementlevallois.net[Clement Levallois]. - -It converts a spreadsheet or a csv file into a network. - -== ! - -This plugin enables you to: - -* Start from a data table in Excel or csv format -* In the data table, nodes are the entities listed in column A -* Nodes' attributes must be listed in columns B, C, D, etc. -* Connections will be created between nodes, when they have identical attributes. -* Attributes can have values, stored in columns right next to the attribute. - -== ! -==== 1. The input -== ! - -[.stretch] -image::An-Excel-file.png[align="center", title="An Excel file"] - - - -== ! -==== 2. The output -== ! - -[.stretch] -image::en/similarity-computer/result.png[align="center", title="Resulting network"] - - -== Installing the plugin -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - -== Opening the plugin -== ! - -[.stretch] -image::Open-the-plugin-via-the-menu-File---Import.png[align="center", title="Open the plugin via the menu File - Import"] - - -== Using the plugin - -== ! -==== First panel -== ! - -[.stretch] -image::Select-a-file.png[align="center", title="Select a file"] - - -== Is your file with a header? - -== ! - -[.stretch] -image::en/similarity-computer/file-without-header-en.png[align="center", title="A file without headers"] - - -== ! - -[.stretch] -image::en/similarity-computer/file-with-header-en.png[align="center", title="A file with headers"] - - -== ! -==== Second panel -== ! - -[.stretch] -image::en/similarity-computer/plugin-4-en.png[align="center", title="Parameter for weight"] - - -== ! -==== Third panel -== ! - -[.stretch] -image::en/similarity-computer/plugin-5-en.png[align="center", title="Confirmation panel"] - - -== How is the similarity computed, exactly? -== ! - -We use the cosine similarity. Sounds complicated, but it is not. http://stackoverflow.com/questions/1746501/can-someone-give-an-example-of-cosine-similarity-in-a-very-simple-graphical-wa[Check here]. - -The source code for the cosine calculation is in this https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java[file], at https://github.com/gephi/gephi-plugins/blob/master-forge/modules/SimilarityComputer/src/main/java/net/clementlevallois/computer/CosineCalculation.java#L110[this place]. - -== FAQ / special notes on the plugin -== ! - -==== 1. Excel files should be .xlsx, not .xls - -Because they represent two slightly different files formats, and the plugin supports only .xlsx - -== ! - -==== 2. csv files are ok. - -If you select a http://www.computerhope.com/issues/ch001356.htm[csv file], you will be asked to indicate the field delimiter and optionally the text delimiter. - -[.stretch] -image::en/similarity-computer/plugin-6-en.png[align="center", title="When a csv file is selected"] - - -== ! - -==== 3. You can't use numerical values in the attributes - -[.stretch] -image::en/similarity-computer/numerical-attributes-en.png[align="center", title="Age is a numerical attribute"] - - -This is too bad. If there is enough demand for it I'll add this feature, which is not trivial. - -== ! - -==== 4. Each entity should appear only on one line - -[.stretch] -image::en/similarity-computer/plugin-7-en.png[align="center", title="An entity appearing twice"] - - -David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account. - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md b/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md deleted file mode 100644 index c8aae23..0000000 --- a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_common.md +++ /dev/null @@ -1,474 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. diff --git a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md b/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md deleted file mode 100644 index e642a93..0000000 --- a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_html.md +++ /dev/null @@ -1,491 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md deleted file mode 100644 index c8aae23..0000000 --- a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_pdf.md +++ /dev/null @@ -1,474 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Description of the project - -//ST: Description of the project -//ST: ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -//ST: ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -//ST: ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== be familiar with the terminology to discuss networks -//ST: terminology to discuss networks -//ST: ! -image::terminology-for-networks.png[align="center",title="terminology for networks"] -{nbsp} + - - -== download a network file - -//ST: download a network file -//ST: ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//open the network in Gephi -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -== read the report after opening a file - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== initial view - -//ST: ! - -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] -{nbsp} + - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - -== basic view of Gephi's interface - -//ST: ! - -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] -{nbsp} + - -//ST: ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -//ST: ! - -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] -{nbsp} + - -//ST: ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -//ST: ! -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] -{nbsp} + - - -//ST: ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -//ST: ! -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] -{nbsp} + - -//ST: ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - -== showing labels of the nodes - -//ST: showing labels of the nodes - -//ST: ! - -image::showing-node-labels.png[align="center", title="showing node labels"] -{nbsp} + - - -== layout ("spatialize") the network - -//ST: layout ("spatialize") the network - -//ST: ! - -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] -{nbsp} + - -//ST: ! - -[[force-atlas-2-parameters]] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] -{nbsp} + - - -//ST: ! - -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] -{nbsp} + - -== visualize the properties of the nodes - -//ST: visualize the properties of the nodes - -//ST: ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -//ST: ! - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] -{nbsp} + - -//ST: ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] -{nbsp} + - -//ST: ! - -The result: - -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] -{nbsp} + - -== prettify the network for enhanced readability - -//ST: prettify the network for enhanced readability -//ST: ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -//ST: ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -//ST: ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] -{nbsp} + - -Don't forget to click on "Run" to apply these layouts. - -//ST: ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -//ST: ! -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] -{nbsp} + - -//ST: ! -==== 4. Adjusting the thickness of the links - -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] -{nbsp} + - -== computing the centrality of the nodes - -//ST: Computing the centrality of the nodes -//ST: ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -//ST: ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -//ST: ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -//ST: ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] -{nbsp} + - -//ST: ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] -{nbsp} + - - -//ST: ! -A report window opens (also explained in a other tutorials). Close it. - -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] -{nbsp} + - -Now we can visualize this information. - -== visualize attributes created by Gephi - -//ST: visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -//ST: ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] -{nbsp} + - -//ST: ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] -{nbsp} + - -//ST: ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] -{nbsp} + - -//ST: ! - -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] -{nbsp} + - -//ST: ! - -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] -{nbsp} + - -//ST: ! - -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] -{nbsp} + - -//ST: ! -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] -{nbsp} + - -== exporting a network as a picture - -//ST: exporting a network as a picture - -//ST: 1. exporting a screenshot from the Overview (a png image) - -//ST: ! - -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] -{nbsp} + - -//ST: ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] -{nbsp} + - -//ST: 2. exporting a pdf or svg picture - -//ST: ! -Let's switch to the preview panel: - -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] -{nbsp} + - -//ST: ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -//ST: ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] -{nbsp} + - -//ST: ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -image::Result-of-preview.png[align="center",title="Result of preview"] -{nbsp} + - -//ST: ! -Export: just click on the button and select the file format you prefer - -image::Export-button.png[align="center",title="Export button"] -{nbsp} + - -//ST: donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - -== questions and exercises - -//ST: questions and exercises - -//ST: ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -//ST: ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -//ST: ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -//ST: ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -//ST: ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -//ST: ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. diff --git a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md b/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md deleted file mode 100644 index 7e9e337..0000000 --- a/docs/generated-slides/en/book/subdir/simple-project-from-a-to-z-en_temp_slides.md +++ /dev/null @@ -1,509 +0,0 @@ -= Simple Gephi Project from A to Z -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - - -== Description of the project -== ! - - -This project is for complete beginners to Gephi. -It supposes you have Gephi installed and running on your computer. That is all. - -When finishing this tutorial, you should be able to: -[options="compact"] -- be familiar with the vocabulary to discuss networks -- download a network file for this exercise -- description of the file / the network -== ! -- open a network file -- read the report after opening a file -- show the labels of the nodes -- layout the network -== ! -- visualize attributes of the network -- prettify the network for enhanced readability -- compute the centrality of the nodes in the network -- visualize attributes created by Gephi -- export a visualization as a picture or pdf - - -== terminology to discuss networks -== ! -[.stretch] -image::terminology-for-networks.png[align="center",title="terminology for networks"] - - - - -== download a network file -== ! - -link:../resources/miserables_result.zip[download this zip file] and unzip it on your computer. - -You should find the file `miserables.gexf` in it. - -Save it in a folder you will remember (or create a folder specially for this small project). - - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -//open the network in Gephi -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - - -== ! - -[.stretch] -image::en/project-initial-view.png[align="center", title="initial view when opening a graph"] - - -This is how the network appears in Gephi. Not very useful! Let's examine what we have here. - - -== ! - -[.stretch] -image::the-3-main-screens-in-Gephi.png[align="center", title="the 3 main screens in Gephi"] - - -== ! -Gephi has 3 main screens: - -1. Overview: where we can explore the graph visually -2. Data Laboratory: provides an "Excel" table view of the data in network -3. Preview: where we polish the visualization before exporting it as a pictue or pdf - -What we see here is the Overview. - -== ! - -[.stretch] -image::Filters-and-statistics-panels-in-Gephi.png[align="center", title="Filters and statistics panels in Gephi"] - - -== ! - -In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization. - -[options="compact"] -[start=4] -4. "Filters", where we can hide different parts of the network under a variety of conditions -5. "Statistics", where we can compute metrics on the network - -== ! -[.stretch] -image::Appearance-and-layout-panels-in-Gephi.png[align="center", title="Appearance and layout panels in Gephi"] - - - -== ! - -[options="compact"] -[start=6] -6. "Appearance", where we can change colors and sizes in interesting ways -7. "Layouts", where we can apply automated procedures to change the position of the network - -== ! -[.stretch] -image::3-groups-of-icons.png[align="center", title="3 groups of icons"] - - -== ! - -[options="compact"] -[start=8] -8. A series of icons to add / colorize nodes and links manually, by clicking on them -9. Options and sliders to change the size of all nodes, links, or labels -10. More options become visible if we click on this *little arrow head pointing up* - - - -== showing labels of the nodes - -== ! - -[.stretch] -image::showing-node-labels.png[align="center", title="showing node labels"] - - - - -== layout ("spatialize") the network - -== ! - -[.stretch] -image::selecting-the-force-atlas-2-layout.png[align="center", title="selecting the force atlas 2 layout"] - - -== ! - -[[force-atlas-2-parameters]] -[.stretch] -image::changing-a-few-parameters-and-launching-the-layout.png[align="center", title="changing a few parameters and launching the layout"] - - - -== ! - -[.stretch] -image::result-of-Force-Atlas-2-layout.png[align="center", title="result of Force Atlas 2 layout"] - - - -== visualize the properties of the nodes - -== ! - -A network consists in entities and their relations. -This is what we just visualized. -Yet, the properties of these entities remain invisible. - -For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can't tell. - -Now, we will see how to make this property ("Gender") visible. - -== ! - -[.stretch] -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] - - -== ! - -[.stretch] -image::We-see-there-is-a-Gender-attribute-for-each-character..png[align="center",title="We see there is a Gender attribute for each character."] - - -== ! - -We will color the nodes based on their gender. To do that, we select `Gender` in the `Appearance` panel: - -[.stretch] -image::Coloring-nodes-according-to-their-gender.png[align="center",title="Coloring nodes according to their gender"] - - -== ! - -The result: - -[.stretch] -image::appearance-miserables-result.png[align="center",title="After coloring characters according to their gender"] - - - -== prettify the network for enhanced readability -== ! - -There are a number of issues with the result we get: - -1. the network is too big or too small, it is hard to read -2. the labels of the characters overlap -3. the size of the labels might be too big / small -4. the links are sometimes too large - -Let's fix these issues. - -== ! -==== 1. Enlarge or shrink the network - -- either we use the "scaling" parameter of the layout, as we have seen <>. -- or the scale is fine, it is just that we need to zoom it or out. Use the scrolling wheel of your mouse, and right click to move the network. - -== ! -==== 2. Prevent the Labels from overlapping - -In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping: - -[.stretch] -image::en/choosing-a-label-adjust-algo-en.png[align="center",title="Noverlap or Label Adjust will help you"] - - -Don't forget to click on "Run" to apply these layouts. - -== ! -==== 3. Changing the size of the labels -Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3). - -== ! -[.stretch] -image::Adjusting-label-size.png[align="center",title="Adjusting label size"] - - -== ! -==== 4. Adjusting the thickness of the links - -[.stretch] -image::Adjusting-edge-thickness.png[align="center",title="Adjusting edge thickness"] - - - -== Computing the centrality of the nodes -== ! -==== 1. Definitions of centrality - -"Centrality" is a very good metrics to first get an idea of a network. -What does centrality mean? Intuitively, we understand that a "central" node will probably sit in the middle of the network. -But how to measure that "scientifically", so that we have an objective confirmation of our visual impression? - -There are several ways, all equally interesting. - -== ! -We can measure `degree centrality`. "Degree" is the technical term for "number of connections that a node has". - -So, `degree centrality` just means that the most central node is the node which has the most connections. Simple! - -== ! -Another measure is `betweenness centrality`. This one is more tricky. - -- First, you have to imagine what is a `shortest path`. - - A `path` from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B. - - The `shortest path` from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B. - -- A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high `betweenness centrality`. - -== ! -==== 2. Computing betweenness centrality with Gephi - -Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run": - -[.stretch] -image::Computing-betweenness-centrality.png[align="center",title="Computing betweenness centrality"] - - -== ! -This will open a window with parameters (explained in a more advanced tutorials). Click "OK": - -[.stretch] -image::Parameters-for-the-computation-of-betweenness-centrality.png[align="center",title="Parameters for the computation of betweenness centrality"] - - - -== ! -A report window opens (also explained in a other tutorials). Close it. - -[.stretch] -image::Report-after-the-computation-of-betweenness-centrality.png[align="center",title="Report after the computation of betweenness centrality"] - - -Now we can visualize this information. - - -== visualize attributes created by Gephi -Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however. - -It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. -This would allow for a very quick visual appreciation of which nodes are the most central. - -== ! -First, let's switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node: - -[.stretch] -image::Switching-the-view-to-the-data-laboratory.png[align="center",title="Switching the view to the data laboratory"] - - -== ! - -When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"): - -[.stretch] -image::Different-centrality-measures-visible-in-the-data-laboratory.png[align="center",title="Different centrality measures visible in the data laboratory"] - - -== ! -To resize the nodes according to the value of their betweenness centrality, we use the `Appearance` panel: - -CAUTION: make sure you select the correct options - -[.stretch] -image::Ranking-node-sizes-by-centrality.png[align="center",title="Ranking node sizes by centrality"] - - -== ! - -[.stretch] -image::Selecting-the-minimum-and-maximum-sizes-of-nodes.png[align="center",title="Selecting the minimum and maximum sizes of nodes"] - - -== ! - -[.stretch] -image::ranking-centrality-miserables-3--en.png[align="center",title="Result of the ranking"] - - -== ! - -[.stretch] -image::Resizing-labels-to-reflect-their-node's-size.png[align="center",title="Resizing labels to reflect their node's size"] - - -== ! -[.stretch] -image::result-label-resizing-en.png[align="center",title="Result of the label resizing"] - - - -== exporting a network as a picture - -== 1. exporting a screenshot from the Overview (a png image) - -== ! - -[.stretch] -image::Open-the-configuration-panel-for-screenshots.png[align="center",title="Open the configuration panel for screenshots"] - - -== ! - -Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304 - -[.stretch] -image::en/configuration-screenshot-en.png[align="center",title="The configuration panel for screenshots"] - - -== 2. exporting a pdf or svg picture - -== ! -Let's switch to the preview panel: - -[.stretch] -image::Switching-to-the-preview-panel.png[align="center",title="Switching to the preview panel"] - - -== ! -The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. -But as you see, it means the network is now looking different than in the Overview. - -== ! -CAUTION: contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change. - -[.stretch] -image::Updating-the-parameters.png[align="center",title="Updating the parameters"] - - -== ! -Here I change just 2 parameters: `Show Labels` and `Font` (which I reduce to size "5"), to get: - -[.stretch] -image::Result-of-preview.png[align="center",title="Result of preview"] - - -== ! -Export: just click on the button and select the file format you prefer - -[.stretch] -image::Export-button.png[align="center",title="Export button"] - - -== donwload the result file - -link:../resources/miserables_result.zip[download this zip file] if you need to see the network in its final form. - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] - - - -== questions and exercises - -== ! -1. Open the file `miserables.gexf` with a text editor (here is how to do it on a http://www.dummies.com/computers/macs/how-to-open-and-edit-a-text-file-on-a-mac/[Mac], and on https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/app_notepad.mspx?mfr=true[Windows]). See how the nodes and the links are written in the file. Can you find the character Javert? - -== ! -[start=2] -2. Our network of Les Miserables characters was undirected. Can you think of networks which are directed? - -Imagine how undirected and directed networks differ when computing centrality, for example. - -== ! -[start=3] -3. Force Atlas 2 is a layout which brings together connected nodes, and spreads out unconnected nodes. We might have nodes with no relation at all with other nodes (called "isolated nodes"). - -How will these isolated nodes move on screen? - -== ! -[start=4] -4. When applying the Force Atlas 2 layout, the network moves quickly, then stabilizes, and then keeps moving a bit. - -Can you guess why this is happening? - -== ! -[start=5] -5. In the list of layouts, Force Atlas 2 is just one of many options you can choose. -Try "Fruchterman Reingold" and "Yfan Hu". - -These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts. - -== ! -[start=6] -6. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_common.md b/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_common.md deleted file mode 100644 index 00be60a..0000000 --- a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_common.md +++ /dev/null @@ -1,284 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_html.md b/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_html.md deleted file mode 100644 index 61e442c..0000000 --- a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_html.md +++ /dev/null @@ -1,301 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md deleted file mode 100644 index f2a84bd..0000000 --- a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_pdf.md +++ /dev/null @@ -1,284 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== Description of the plugin - -//ST: Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -//ST: Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - -== Installing the plugin - -//ST: Installing the plugin - -//ST: ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -//ST: ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -//ST: ! - -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] -{nbsp} + - - -//ST: ! - -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] -{nbsp} + - -//ST: ! - -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] -{nbsp} + - -== Initializing the plugin (to be done just once) - -//ST: Initializing the plugin (to be done just once) - -//ST: Creating a Twitter account - -//ST: ! - -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] -{nbsp} + - -//ST: ! - -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] -{nbsp} + - -//ST: ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -//ST: ! - -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] -{nbsp} + - -//ST: ! - -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] -{nbsp} + - -//ST: ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -//ST: ! - -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] -{nbsp} + - - -//ST: ! - -image::Choose-a-username.png[align="center", title="Choose a username"] -{nbsp} + - -//ST: ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -//ST: ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -//ST: ! - -image::Create-a-new-app.png[align="center", title="Create a new app"] -{nbsp} + - -//ST: ! - -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] -{nbsp} + - -//ST: ! - -INFO: Almost there!! - -//ST: ! - -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] -{nbsp} + - -//ST: ! - -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] -{nbsp} + - -//ST: ! - -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] -{nbsp} + - -//ST: ! - -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] -{nbsp} + - -//ST: Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - -== Using the plugin - -//ST: Using the plugin - -//ST: ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -//ST: ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -//ST: ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -//ST: ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -//ST: ! - -==== Network Logic - -//ST: ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -//ST: The dropdown menu to choose the network logic: - -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] -{nbsp} + - -There are for the moment 3 Network Logics to choose from: - -//ST: ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -//ST: ! -In the following, we use the network logic "User Network": - -//ST: ! - -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] -{nbsp} + - -//ST: ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -//ST: ! -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] -{nbsp} + - - -//ST: Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -//ST: ! - -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] -{nbsp} + - -//ST: ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] -{nbsp} + - -//ST: ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -//ST: ! - -==== Timeline - -//ST: ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -//ST: ! - -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] -{nbsp} + - -//ST: ! - -{nbsp} + - -== The end - -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_slides.md b/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_slides.md deleted file mode 100644 index 9ec5727..0000000 --- a/docs/generated-slides/en/book/subdir/twitter-streaming-importer-en_temp_slides.md +++ /dev/null @@ -1,318 +0,0 @@ -= Twitter Streaming Importer -Clément Levallois ;Matthieu Totet -2017-01-31 - -last modified: {docdate} - -:icons: font -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - - -== Author and documentation - -This plugin is created by https://matthieu-totet.fr[Matthieu Totet], who is a long time community member of Gephi (check his https://github.com/totetmatt/GephiStreamer[Gephi Streamer]!) - -You can find additional documentation on this plugin on https://matthieu-totet.fr/Koumin/2016/04/25/twitter-streaming-importer-naoyun-as-a-gephi-plugin/[Matthieu's website]. - -== Description of the plugin - -This plugin enables you to: - -* Collect tweets in realtime, on the topic you choose -* Get the connections between the users mentionned in these tweets -* Visualize these connections in Gephi, or just export all the tweets to Excel - - -== Installing the plugin - -== ! -[WARNING] -The setup of the plugin will need you to create a Twitter account, if you don't already have one. -Get your Twitter login and password ready. **You also need a mobile phone number where your Twitter account can be confirmed**. - -== ! -[CAUTION] -==== -Setting up a Twitter account and creating a Twitter app is a boring task. - -It takes just 15 minutes, and you have to do it just once. Then you'll have Twitter at your fingertips. - -Let's go! -==== - -== ! - -[.stretch] -image::Choose-the-menu-Tools-then-Plugins.png[align="center", title="Choose the menu Tools then Plugins"] - - - -== ! - -[.stretch] -image::Click-on-the-tab-Available-Plugins.png[align="center", title="Click on the tab Available Plugins"] - - -== ! - -[.stretch] -image::Install-the-plugin-then-restart-Gephi.png[align="center", title="Install the plugin then restart Gephi"] - - - -== Initializing the plugin (to be done just once) - -== Creating a Twitter account - -== ! - -[.stretch] -image::Open-a-new-project-in-Gephi.png[align="center", title="Open a new project in Gephi"] - - -== ! - -[.stretch] -image::Display-the-plugin-in-Gephi.png[align="center", title="Display the plugin in Gephi"] - - -== ! -We need now to connect to a Twitter account. If you already have a Twitter account and you are logged in, <>. - -== ! - -[.stretch] -image::Creating-a-Twitter-account.png[align="center", title="Creating a Twitter account"] - - -== ! - -[.stretch] -image::Confirmation-of-the-sign-up.png[align="center", title="Confirmation of the sign-up"] - - -== ! - -[WARNING] -You have received an email by Twitter about the sign up. At some point (but now would be a good time), you must click on the link in this email to confirm it. - - -== ! - -[.stretch] -image::Enter-the-verification-code-you-received-by-sms.png[align="center", title="Enter the verification code you received by sms"] - - - -== ! - -[.stretch] -image::Choose-a-username.png[align="center", title="Choose a username"] - - -== ! - -The next screens of the sign up for Twitter are not important for us. -Just follow the steps until you get to the page showing your Twitter profile, meaning the setup is finished. - - - -== ! - -[[twitter-account-finished-setup]] -You now have a Twitter account. -We need to create a Twitter app which will authorize us to collect tweets automatically via Gephi - -Go to *https://apps.twiter.com[https://apps.twiter.com]*: - -== ! - -[.stretch] -image::Create-a-new-app.png[align="center", title="Create a new app"] - - -== ! - -[.stretch] -image::Fill-in-the-fields.png[align="center", title="Fill in the fields"] - - -== ! - -INFO: Almost there!! - -== ! - -[.stretch] -image::Click-on-Keys-and-Access-Tokens.png[align="center", title="Click on Keys and Access Tokens"] - - -== ! - -[.stretch] -image::Click-on-Create-my-access-token.png[align="center", title="Click on Create my access token"] - - -== ! - -[.stretch] -image::Copy-paste-these-codes-into-Gephi.png[align="center", title="Copy paste these codes into Gephi"] - - -== ! - -[.stretch] -image::Where-to-copy-paste-the-codes-in-Gephi.png[align="center", title="Where to copy paste the codes in Gephi"] - - -== Done! - -icon:thumbs-up[] Well done. This setup had just to be done once. -Your credentials are saved and will be loaded at each run. -Now we can start using the plugin. - - -== Using the plugin - -== ! - - -With the ** Words to follow ** tab, you will be able to follow one or multiple words. For ** hashtags **, just enter the word without the hash in front of it. (e.g if you want to follow '**#Gephi**' just add '**Gephi**') - -== ! - -With the ** Users to follow ** tab, you will be able to follow the activity of one or multiple users. Any tweet from this user or retweeting or mentioning the user will be captured. - -== ! - -You can combine the 2 tabs, the tweet collected will be matching either the Words to follow query **or** the User to follow query - -== ! - -The ** Load Query File** and ** Save Query File ** buttons are here to save your search queries in a file or to load it from a file. It's convenient if you have -a long list of words / users. - -== ! - -==== Network Logic - -== ! - - -A ** Network Logic ** means: what should be done with an incoming tweet? How to transform it as a set of nodes and edges? - -== The dropdown menu to choose the network logic: - -[.stretch] -image::Selection-of-the-network-logic.png[align="center",title="Selection of the network logic"] - - -There are for the moment 3 Network Logics to choose from: - -== ! - -* Full Twitter Network : This will represent **all** entities (User, Tweet, Hastags, URL, Media, Symbol etc...) as a graph. -* User Network : This will represent the interaction between users. Any mentions, retweets or quotes between 2 users, will be represented. The size of the edge represent the number of interactions between 2 users. -* Hashtag Network : This will create the network of hashtag. - -== ! -In the following, we use the network logic "User Network": - -== ! - -[.stretch] -image::Adding-terms-and-launching-the-collection-of-tweets.png[align="center", title="Adding terms and launching the collection of tweets"] - - -== ! - -Be careful that if you choose very common terms, tweets will arrive fast and in large volumes. - -If you don't have enough memory (RAM) on your computer, this could make it crash. - -Click on "disconnect" to stop the collection of tweets. - - -== ! -[.stretch] -image::en/twitter-streaming-importer/result-plugin-1-en.png[align="center",title="Users mentioned in or retweeting tweets citing the search terms"] - - - -== Applying a layout while the tweets arrive. - -You can see the users organize spatially in real time, while the tweets are being collected. - -Just run Force Atlas 2 in the "Layout" panel. This will not interrupt the collection of tweets. - -== ! - -[.stretch] -image::Running-the-Force-Atlas-layout-while-the-tweets-are-arriving.png[align="center", title="Running the Force Atlas layout while the tweets are arriving"] - - -== ! -Shift to the `data laboratory` to view the data collected, in a spreadsheet format: - -[.stretch] -image::Switching-to-the-data-laboratory-view.png[align="center", title="Switching to the data laboratory view"] - - -== ! -There, you can export nodes and relations ("edges") as csv files by clicking on "Export table". - -== ! - -==== Timeline - -== ! - -When you are finished with your stream, you can use the ** timeline ** feature to replay the stream of data and look at a particular time window. - -_This feature is still experimental and is higly subject to bug._ - -== ! - -[.stretch] -image::en/twitter-streaming-importer/timeline-enable.png[align="center", title="How to activate the Timeline"] - - -== ! -[.stretch] -image::en/twitter-streaming-importer/timeline.gif[align="center", title="Example of Timeline"] - - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/using-filters-en_temp_common.md b/docs/generated-slides/en/book/subdir/using-filters-en_temp_common.md deleted file mode 100644 index 7dac59f..0000000 --- a/docs/generated-slides/en/book/subdir/using-filters-en_temp_common.md +++ /dev/null @@ -1,438 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/using-filters-en_temp_html.md b/docs/generated-slides/en/book/subdir/using-filters-en_temp_html.md deleted file mode 100644 index 7f24dd8..0000000 --- a/docs/generated-slides/en/book/subdir/using-filters-en_temp_html.md +++ /dev/null @@ -1,455 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] -{nbsp} + - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] -{nbsp} + - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/using-filters-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/using-filters-en_temp_pdf.md deleted file mode 100644 index 1e54639..0000000 --- a/docs/generated-slides/en/book/subdir/using-filters-en_temp_pdf.md +++ /dev/null @@ -1,438 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice -//ST: download a network file for practice - -//ST: ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -//ST: description of the file / the network -//ST: ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi -//ST: open the network in Gephi - -//ST: ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] -{nbsp} + - -//ST: ! -A report window will open, giving you basic info on the network you opened: - -image::en/opening-file-report-en.png[align="center", title="report window"] -{nbsp} + - -//ST: ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -//ST: ! -image::result_miserables.png[align="center",title="The network we will use"] -{nbsp} + - -== getting a sense of the attributes in the data laboratory -//ST: getting a sense of the attributes in the data laboratory - -//ST: ! -We can switch to the data laboratory to see the underlying data: - -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] -{nbsp} + - - -//ST: ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -image::Nodes-attributes..png[align="center",title="Nodes attributes."] -{nbsp} + - -//ST: ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -image::Edges-attributes..png[align="center",title="Edges attributes".] -{nbsp} + - -== discovering the filter panel -//ST: discovering the filter panel - -//ST: ! -In the overview, make sure the Filter panel is displayed: - -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] -{nbsp} + - - -//ST: ! -How the Filter panel works: - -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] -{nbsp} + - - -//ST: ! -An example: hiding edges with weight lower than 2 - - -{nbsp} + - -image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -{github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -//ST: ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters -//ST: combining 2 filters - -//ST: ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -//ST: ! -==== 1. Case when the placement of filters makes no difference - -//ST: ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -//ST: ! - -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] -{nbsp} + - -//ST: ! - -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] -{nbsp} + - -//ST: ! - - -{nbsp} + - -image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -{github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -//ST: ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -//ST: ! -==== 2. Case when the placement of filters makes a difference - -//ST: ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -//ST: ! - -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] -{nbsp} + - -//ST: ! - -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] -{nbsp} + - -//ST: ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -//ST: ! - -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] -{nbsp} + - -//ST: ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -//ST: ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] -{nbsp} + - -//ST: ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -//ST: ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== filter operators -//ST: Filter operators - -//ST: ! -==== 1. The MASK operator - -//ST: ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -//ST: ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -//ST: ! - -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] -{nbsp} + - -//ST: ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] -{nbsp} + - -//ST: ! -==== 2. The UNION operator - -//ST: ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -//ST: ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -//ST: ! - -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] -{nbsp} + - - -//ST: ! - -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] -{nbsp} + - -//ST: ! -We now have an attribute called "Name" that we can find in the Filters: - -image::New-filter-available.png[align="center",title="New filter available"] -{nbsp} + - -//ST: ! -This is how the filter on Name and its parameters look like in the zone: - -image::en/filter-name-1-en.png[align="center",title="Name Filter"] -{nbsp} + - -//ST: ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -//ST: ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -//ST: ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -//ST: ! -Please note that you need to check the box "regex": - -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] -{nbsp} + - -//ST: ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -//ST: ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -//ST: ! -Instead, we should use the *`UNION`* operator that can be found here: - -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] -{nbsp} + - -//ST: ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -//ST: ! -As a result, the nodes selected by both filters are added up in the display: - -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] -{nbsp} + - -//ST: ! -==== 3. The NOT operator - -//ST: ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -//ST: ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] -{nbsp} + - -//ST: ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] -{nbsp} + - -//ST: ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] -{nbsp} + - -//ST: ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== more tutorials on using filters in Gephi -//ST: More tutorials on using filters in Gephi - -//ST: ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/using-filters-en_temp_slides.md b/docs/generated-slides/en/book/subdir/using-filters-en_temp_slides.md deleted file mode 100644 index 8abea3c..0000000 --- a/docs/generated-slides/en/book/subdir/using-filters-en_temp_slides.md +++ /dev/null @@ -1,477 +0,0 @@ -= Using filters -Clément Levallois -2017-02-10 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:github-root: https://github.com/seinecle/gephi-tutorials/blob/master/src/main/asciidoc/ - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== download a network file for practice - -== ! - -link:../resources/miserables.zip[download this zip file] and unzip it on your computer. - -or use this direct link: https://tinyurl.com/gephi-tuto-3[https://tinyurl.com/gephi-tuto-3] - -You should find the file `miserables.gexf` in it. Save it in a folder you will remember (or create a folder specially for this small project). - -== description of the file / the network -== ! - -This file contains a network representing "who appears next to whom" in the 19th century novel _Les Misérables_ by Victor Hugofootnote:[D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing, Addison-Wesley, Reading, MA (1993)]. - -A link between characters A and B means they appeared on the same page or paragraph in the novel. - -The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions. - - -== open the network in Gephi - -== ! -- open Gephi. On the Welcome screen that appears, click on `Open Graph File` -- find `miserables.gexf` on your computer and open it - -[.stretch] -image::en/gephi-welcome-screen-open-graph-en.png[align="center", title="welcome screen"] - - -== ! -A report window will open, giving you basic info on the network you opened: - -[.stretch] -image::en/opening-file-report-en.png[align="center", title="report window"] - - -== ! -This tells you that the network comprises 74 characters, connected by 248 links. - -Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A. - -The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won't "move in time". - -Click on `OK` to see the graph in Gephi. - -== ! -[.stretch] -image::result_miserables.png[align="center",title="The network we will use"] - - -== getting a sense of the attributes in the data laboratory - -== ! -We can switch to the data laboratory to see the underlying data: - -[.stretch] -image::Switching-to-the-data-laboratory.png[align="center",title="Switching to the data laboratory"] - - - -== ! -We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are: - -[.stretch] -image::Nodes-attributes..png[align="center",title="Nodes attributes."] - - -== ! -This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength"). - -[.stretch] -image::Edges-attributes..png[align="center",title="Edges attributes".] - - -== discovering the filter panel - -== ! -In the overview, make sure the Filter panel is displayed: - -[.stretch] -image::Making-the-Filter-panel-visible..png[align="center",title="Making the Filter panel visible."] - - - -== ! -How the Filter panel works: - -[.stretch] -image::Workflow-of-filters--size=stretch.png[align="center",title="Workflow of filters", size="stretch"] - - - -== ! -An example: hiding edges with weight lower than 2 - -[.stretch] -image::en/filter-edge-weight-en.gif[align="center",title="How to use filters."] - - -//PDF: image::en/filter-edge-weight-1-en.png[align="center",title="Filtering out edges with weight lower than 2."] - -//PDF: {github-root}images/en/filter-edge-weight-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-2 - - -== ! -When you are finished using a filter in the zone, right click on it and select "remove". - -== combining 2 filters - -== ! -One filter is applied AFTER this other: - -*The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"* - -Which filter should be placed inside which? Let's look at different examples: - -== ! -==== 1. Case when the placement of filters makes no difference - -== ! -Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2. - --> place the filter "edge weight" inside the filter "Gender": - -== ! - -[.stretch] -image::Filter-on-the-Gender-attribute.png[align="center",title="Filter on the Gender attribute"] - - -== ! - -[.stretch] -image::Filter-on-edge-weight.png[align="center",title="Filter on edge weight"] - - -== ! - -[.stretch] -image::en/filter-edge-weight-gender-partition-en.gif[align="center",title="Keeping only female characters with at least 2 ties"] - - -//PDF: image::en/filter-edge-weight-gender-partition1-en.png[align="center",title="Keeping only female characters with at least 2 ties"] - -//PDF: {github-root}images/en/filter-edge-weight-gender-partition-en.gif[view online animation] - link: https://tinyurl.com/gephi-tuto-1 - -== ! -In this case, it was equivalent to: - -- nest the "Gender" filter inside the "Edge weight" filter -or -- nest the "Edge weight" filter inside the "Gender" Filter - --> The result was the same (the network on screen is identical in both cases) - -== ! -==== 2. Case when the placement of filters makes a difference - -== ! -Here, we want to visualize: - -- only the nodes which have *less than* 10 relations <1> -- and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2> - -<1> in technical terms, nodes with a `degree` of less than 10. -<2> in technical terms, we are looking for the `giant component` - -== ! - -[.stretch] -image::en/filter-degree-range-1-en.png[align="center",title="Filter on degree"] - - -== ! - -[.stretch] -image::en/filter-giant-component-1-en.png[align="center",title="Filter on giant component"] - - -== ! -We will see that the placement on the filters in the zone will make a difference. - -First, let us place the filter on giant component *inside* the filter on degree: - -== ! - -[.stretch] -image::en/filter-order-1-en.png[align="center",title="Filters in one configuration"] - - -== ! -In this first case, - -- only the giant component of the network was made visible. - --> Since the network was just one big connected "island" to start with, it did not change a thing. - -- then, all characters with more than 10 relations where hidden - --> this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others. - -== ! - -Now instead, placing the filter degree *inside* the filter on giant component: - -[.stretch] -image::en/filter-order-2-en.png[align="center",title="Same filters in another configuration"] - - -== ! -In this second case, - -- starting from the complete network, all characters with more than 10 relations where deleted. - --> this created a network made of many disconnected groups of nodes - -- then the giant component filter is applied, - --> which had for effect to hide small groups, to keep in view only the biggest group of connected nodes. - -== ! - -WARNING: In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering. - -== Filter operators - -== ! -==== 1. The MASK operator - -== ! -Imagine you are interested in the female characters of the novel "Les Miserables". - -- you are interested in female characters and the relations among them -- you are interested in the relations between female characters and male characters -- you are *not* interested in the relations between male characters - -How to display this? - -== ! -The MASK operator applied on the gender partition filter enables you to: - -- show all characters -- relations between female characters -- _and relations between male and female characters_ -- _but masking male-male relations_ - -== ! - -[.stretch] -image::en/operator-mask-1-en.png[align="center",title="Using the MASK operator"] - - -== ! -It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph: - -[.stretch] -image::en/operator-mask-2-en.png[align="center",title="Parameters of the MASK operator"] - - -== ! -==== 2. The UNION operator - -== ! - -Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables". - -How to display only these characters? - -== ! -We will need to apply filters on the `Label` of the nodes, which contains the names of the characters. - -However, looking at the "catalogue" of filters, we see no filter on `Label`. The reason is that `Label` is an internal property of nodes, inaccessible to filters. - -So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on. - -Let's switch to the data laboratory and add this attribute: - -== ! - -[.stretch] -image::Adding-a-column-for-Names.png[align="center",title="Adding a column for Names"] - - - -== ! - -[.stretch] -image::Copying-to-this-new-column.png[align="center",title="Copying to this new column"] - - -== ! -We now have an attribute called "Name" that we can find in the Filters: - -[.stretch] -image::New-filter-available.png[align="center",title="New filter available"] - - -== ! -This is how the filter on Name and its parameters look like in the zone: - -[.stretch] -image::en/filter-name-1-en.png[align="center",title="Name Filter"] - - -== ! -To recall, we want to show only the characters which name start with "L" or "J". Let's start with the "L" characters. - -We need to find the names which match the pattern *`Start with an L`*. The way to describe a pattern in text is called a "regular expression". - -Said differently, _a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text_. - -== ! -Regular expressions can become very sophisticated. But here, we need just a simple one: - -[source,regex] -L.* - -Let's examine what the L, the dot and the star mean. - -== ! - -- the letter "L" means we want names starting with this first letter -- . the dot means: any character -- * the star means: the previous character, repeated any time. - -So: "select nodes which have a name starting with L, followed by any character, in any number" - -== ! -Please note that you need to check the box "regex": - -[.stretch] -image::en/filter-name-2-en.png[align="center",title="Using a regular expression in a filter"] - - -== ! -When the filter is applied, only the characters wit a name starting with L will be displayed: - -[.stretch] -image::en/filter-name-3-en.png[align="center",title="Using a regular expression in a filter"] - - -== ! -How to filter characters with a name starting with the letter "L" or "J"? - -We could rely on a more complex regular expression to do this: - -[source,regex] -[LJ].* - -Meaning: "select nodes which have a name starting with L or J, followed by any characters" - -== ! -But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean: - -"show nodes which start with an L, and among them, only those which start with a J" - --> no node can meet this condition, so they would all be invisible. - -== ! -Instead, we should use the *`UNION`* operator that can be found here: - -[.stretch] -image::en/filter-operator-union-1-en.png[align="center",title="The UNION operator in filters"] - - -== ! -Drag it to the zone, and then drag inside it twice the `Attributes -> Equal -> Name` filter: - -[.stretch] -image::en/filter-operator-union-2-en.png[align="center",title="The UNION operator and 2 subfilters"] - - -== ! -In the settings of the first Name filter, put the regular expression: -[source,regex] -L.* - -In the second Name filter, put: -[source,regex] -J.* - -(make sure the "regex" box is checked in both cases) - -== ! -As a result, the nodes selected by both filters are added up in the display: - -[.stretch] -image::en/filter-operator-union-3-en.png[align="center",title="The UNION operator and 2 subfilters"] - - -== ! -==== 3. The NOT operator - -== ! -The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa. - -== ! -Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials: - -[.stretch] -image::en/filter-operator-not-3-en.png[align="center",title="The NOT nodes operator - 1"] - - -== ! -Same effect, but applying the NOT operator on single filter using a regex on L or J: - -[.stretch] -image::en/filter-operator-not-1-en.png[align="center",title="The NOT nodes operator - 2"] - - -== ! -Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT": - -[source,regex] -[^LJ].* - -[.stretch] -image::en/filter-operator-not-2-en.png[align="center",title="Achieving a NOT effect with regex"] - - -== ! -Tutorials about regular expressions: - -- http://www.regular-expressions.info/quickstart.html[https://regexone.com/] -- http://www.themacroscope.org/?page_id=643[http://www.themacroscope.org/?page_id=643] - -And a web page where you can test your regular expressions: http://regexpal.com[http://regexpal.com] - -== More tutorials on using filters in Gephi - -== ! - -- https://www.youtube.com/watch?v=UrrWA_t1rjc[Video on using filters by Jen Golbeck] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_common.md b/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_common.md deleted file mode 100644 index 0780cd8..0000000 --- a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_common.md +++ /dev/null @@ -1,70 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. diff --git a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_html.md b/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_html.md deleted file mode 100644 index 8f2c926..0000000 --- a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_html.md +++ /dev/null @@ -1,87 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_pdf.md deleted file mode 100644 index 0780cd8..0000000 --- a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_pdf.md +++ /dev/null @@ -1,70 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== the leading software to visualize networks on Linux, Windows and Apple computers - -//ST: the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - -== open source & free (including for commercial purposes) - -//ST: open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - -== "Photoshop^TM^ for graphs" - -//ST: "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - -== committed to quality and performance - -//ST: committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - -== modular and extensible - -//ST: modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - -== created, maintained and documented by volunteers, for the community. - -//ST: created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. diff --git a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_slides.md b/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_slides.md deleted file mode 100644 index d7a7e63..0000000 --- a/docs/generated-slides/en/book/subdir/what-is-gephi-en_temp_slides.md +++ /dev/null @@ -1,81 +0,0 @@ -= What is Gephi? -Clément Levallois -2017-01-20 - -last modified: {docdate} - -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - - -== the leading desktop software to visualize and explore networks -- more than 2 million downloads, -- used by analysts, academics, journalists, -- stable on Windows, Mac and Linux, -- in continuous development - - - -== open source & free (including for commercial purposes) - -Gephi adopts a licencing model which makes it free to use, sell, or include the source code of Gephi in larger applications. - -Developers who modify the Gephi code base are required to make these changes public, to benefit the community. - - - -== "Photoshop^TM^ for graphs" - -- for networks of all types (social, semantic, biological, etc.) -- attributes and properties of the network are made visible: not just the http://www.webopedia.com/quick_ref/topologies.asp[topology] of the network. -- Gephi provides functions to explore the network: pan, filter, zoom, colorize, label, etc. -- measures and metrics can be computed, and then rendered visually. - - - -== committed to quality and performance - -- Gephi won a http://www.oracle.com/technetwork/articles/java/dukeschoicewinners-171159.html[Duke Award in 2010]. Duke awards "recognize and honor extreme innovation in the world of Java technology". -- Gephi evolved importantly since 2006 to adopt new, best performing techs for the visualization of very large graphs on the desktop -- The code base of Gephi is maintained with the best standards to insure a https://gephi.wordpress.com/tag/code/[a stable application, ease of maintainance and modularity / extensibility]. - - - -== modular and extensible - -- Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts. -- Since version 0.9 the https://gephi.wordpress.com/2015/12/04/gephi-boosts-its-performance-with-new-graphstore-core/["graph store"] of Gephi has become a completely independent module: it can be reused by another software. -- Anybody can create new modules for Gephi! https://gephi.org/plugins/#/[They are called "plugins"]. They integrate with Gephi seamlessly. - - -== created, maintained and documented by volunteers, for the community. - -- Gephi itself is open source and free -- The https://consortium.gephi.org/[Gephi Consortium] was created to ensure Gephi will remain so -- The https://github.com/gephi/gephi/graphs/contributors[original contributors and their followers] are volunteers -- The support to users through http://forum-gephi.org/[forums], https://www.facebook.com/groups/gephi/[discussion groups] and https://gephi.org/users/[documents] is provided for free. -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_common.md b/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_common.md deleted file mode 100644 index 9cdfa48..0000000 --- a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_common.md +++ /dev/null @@ -1,241 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_html.md b/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_html.md deleted file mode 100644 index 16619c7..0000000 --- a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_html.md +++ /dev/null @@ -1,258 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_pdf.md deleted file mode 100644 index 6652e45..0000000 --- a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_pdf.md +++ /dev/null @@ -1,241 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] -{nbsp} + - -//ST: ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -//ST: ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -//ST: ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code -//ST: Downloading the source code - -//ST: ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -//ST: ! - -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -//ST: ! - -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] -{nbsp} + - -//ST: ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -//ST: ! - -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] -{nbsp} + - - -//ST: ! -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] -{nbsp} + - -//ST: ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] -{nbsp} + - -//ST: ! -You should now see Gephi as a project on the left in NetBeans: - -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] -{nbsp} + - -//ST: ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] -{nbsp} + - -== Running Gephi from source -//ST: Running Gephi from source - -//ST: ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] -{nbsp} + -//ST: ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -image::Launching-Gephi.png[align="center", title="Launching Gephi"] -{nbsp} + - -//ST: ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine -//ST: Modifying Gephi's openGL visualization engine - -//ST: ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -//ST: ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] -{nbsp} + - -//ST: ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] -{nbsp} + - -//ST: ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -//ST: ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] -{nbsp} + - -//ST: ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -//ST: ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -//ST: ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -//ST: ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -//ST: ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -//ST: More tutorials on using the source code of Gephi -//ST: ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - -== the end - -//ST: The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_slides.md b/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_slides.md deleted file mode 100644 index d87f608..0000000 --- a/docs/generated-slides/en/book/subdir/working-from-the-source-en_temp_slides.md +++ /dev/null @@ -1,266 +0,0 @@ -= Working from Gephi's source -Clément Levallois -2017-02-28 - -last modified: {docdate} - -:icons!: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial - -== ! -This tutorial explains how to get and modify Gephi's source code, and build Gephi from it. - -[.stretch] -image::en/developers/use-the-source.jpg[align="center", title="The obligatory meme"] - - -== ! -We will: - -- download the source code -- run Gephi from the source -- modify Gephi's openGL visualization engine -- run Gephi in this modified version - - -== ! -The modified version of Gephi that we will implement will have for effect to add circles around nodes communities. - -This project originates from https://twitter.com/DataToViz/status/828840269072080896[Susie Lu's creation]. - -We should get something like: - -== ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -//PDF: image::en/developers/screenshot-encircling-pdf.png[align="center",title="Circles enclosing communities"] - -//PDF: link to animated version: https://www.youtube.com/watch?v=Y3jk-_QaFx4 - - -== ! - -For this tutorial you will need: - -- some knowledge of Java. - -- NetBeans installed (https://dl.dropboxusercontent.com/u/28091845/coursera/codapps/session%201/module%201%20-%20installing%20NetBeans%20ans%20Codename%20One%20on%20a%20PC.pdf[up to date instructions here]). Eclipse, IntelliJ or any other code editor won't do. - -- a good internet connection since we will download a lot of small dependencies. - -- no Github account is necessary (if you have one, fork Gephi before doing all the steps below). - - -== Downloading the source code - -== ! - -1. Open NetBeans. - -2. In NetBeans, go to `Team -> Git -> Clone` - -(can't find this menu in NetBeans? read an alternative just below) - -== ! - -[.stretch] -image::en/developers/git-clone-gephi-0-en.png[align="center", title="Cloning the gephi source"] - - -== ! - -NOTE:: if you already have projects opened in NetBeans, the menu Team -> Git -> Clone is replaced by: - - Team -> Remote -> Clone - - - -== ! - -[.stretch] -image::Cloning-the-gephi-source.png[align="center", title="Cloning the gephi source"] - - -== ! -- For `Repository URL`, put the address of the Gephi repository on Github, which is: - -https://github.com/gephi/gephi.git[https://github.com/gephi/gephi.git] - -- for `Clone into`, select a folder on your disk. No need to create a new folder inside, the cloning process will do it. - -- Github User and password can be left empty - -- Then click on `Next` - -== ! - -[.stretch] -image::en/developers/git-clone-gephi-2-en.png[align="center", title="Select Master and click next"] - - - -== ! -[.stretch] -image::en/developers/git-clone-gephi-3-en.png[align="center", title="Leave as it is and click on Finish"] - - -== ! -At this step, NetBeans starts downloading the source code of Gephi - not all of it. Should take a couple of minutes, then: - -[.stretch] -image::en/developers/git-clone-gephi-4-en.png[align="center", title="Click on Open Project"] - - -== ! -Select (highlight in blue) the line mentioning Gephi, and click on "Open" - -[.stretch] -image::en/developers/git-clone-gephi-5-en.png[align="center", title="Click on Open Project"] - - -== ! -You should now see Gephi as a project on the left in NetBeans: - -[.stretch] -image::en/developers/netbeans-gephi-source-1-en.png[align="center", title="Gephi project"] - - -== ! -Right click on the project and select "Build with dependencies". This will download all the rest of the source, which can take roughly 5 to 20 minutes. - -[.stretch] -image::en/developers/netbeans-gephi-source-2-en.png[align="center", title="Building the project"] - - -== Running Gephi from source - -== ! -When the build is complete, expand the folder "Modules" of the Gephi project, and double click on "gephi-app": - - -[.stretch] -image::en/developers/netbeans-gephi-source-3-en.png[align="center", title="Opening the gephi-app submodule"] - -== ! -This opens a new project on the left of NetBeans, called "gephi-app". This is a submodule of Gephi, dedicated to managing its launch. - -[.stretch] -image::Launching-Gephi.png[align="center", title="Launching Gephi"] - - -== ! - -And Gephi launches! - -Now that we know how to run Gephi from source, we can modify the source and see how it goes. - -== Modifying Gephi's openGL visualization engine - -== ! -We are going to add circles which will enclose groups of nodes (aka communities). In three steps: - -1. Open the `VisualizationImpl` module -2. Create simple classes for the circles -3. Add some code in the class which manages the display in OpenGL, so that circles get created - -== ! -==== 1. Open the `VisualizationImpl` module - -In the gephi project, in the folder Modules, double click on the `VisualizationImpl` module: - - -[.stretch] -image::en/developers/enclosing-circles-1-en.png[align="center", title="Opening VisualizationImpl"] - - -== ! -==== 2. Create simple classes for the circles - -Create a new package and add 3 classes in it: `Circle.java`, `Point.java`, `SmallestEnclosingCircle.java`. - -(I merely adapted these classes from https://www.nayuki.io/page/smallest-enclosing-circle[this website]) - -[.stretch] -image::en/developers/enclosing-circles-2-en.png[align="center", title="Three classes"] - - -== ! -The code of these classes https://github.com/seinecle/gephi/tree/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/net/clementlevallois/enclosingcircles[can be found here]. - -== ! -==== 3. Add the circle creation logic to the class managing the OpenGL display - -Open the package `org.gephi.visualization.opengl`, and inside open `CompatibilityEngine.java`: - -[.stretch] -image::opening-CompatibilityEngine.java.png[align="center", title="opening CompatibilityEngine.java"] - - -== ! -No need to understand most of the code in this class. - -But we see that starting at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L194[line 194], a loop on nodes starts: - -We will put nodes in a map (declared above, at https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L155[line 155]) where: - -- keys are the name of the cluster nodes belong too, -- values are the Set of Nodes corresponding to the cluster. - -(yes, this implies the nodes must have an attribute called "Modularity Class" showing the cluster they belong to) - -== ! -The code you should add to assign nodes to clusters in the map is in https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L197[lines 197-203] - -== ! - -Then, https://github.com/seinecle/gephi/blob/enclosing-circles-opengl/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java#L210[lines 210-245] iterate on the map, and create the circles around clusters. - -The logic of the circle creation in OpenGL can be understood rather easily, by copying and modyfying the code used just above for the creation of nodes, and by looking at the online documentation on http://www.openglprojects.in/2014/03/draw-circle-opengl.html#gsc.tab=0[how to create shapes in OpenGL]. - -== ! -That's it. Now just run Gephi from source as we did before. From Gephi, open a network where nodes have a "Modularity Class" attribute, and Gephi will draw circles around nodes from the same clusters: - -== ! - -video::Y3jk-_QaFx4[youtube, height=315, width=560, align="center"] - -== More tutorials on using the source code of Gephi -== ! - -- https://github.com/gephi/gephi[The Gephi readme with some instructions for developers] - - -== The end! -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_common.md b/docs/generated-slides/en/book/subdir/working-with-text-en_temp_common.md deleted file mode 100644 index cf2726e..0000000 --- a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_common.md +++ /dev/null @@ -1,361 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_html.md b/docs/generated-slides/en/book/subdir/working-with-text-en_temp_html.md deleted file mode 100644 index 589b277..0000000 --- a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_html.md +++ /dev/null @@ -1,378 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_pdf.md b/docs/generated-slides/en/book/subdir/working-with-text-en_temp_pdf.md deleted file mode 100644 index cf2726e..0000000 --- a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_pdf.md +++ /dev/null @@ -1,361 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: -:sourcedir: ../../../main/java - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -image::gephi-logo-2010-transparent.png[width="450" align="center"] -{nbsp} + - -//ST: 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial -//ST: Presentation of this tutorial - -//ST: ! -This tutorial explains how to draw "semantic networks" like this one: - -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] -{nbsp} + - -//ST: ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -//ST: ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -//ST: Why semantic networks? -//ST: ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -//ST: ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -//ST: ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -//ST: ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -//ST: Choosing what a "term" is in a semantic network -//ST: ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -//ST: ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -//ST: ! -==== 1. Removing "stopwords" -//ST: ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -//ST: ! -[start=2] -==== 2. Considering "n-grams" -//ST: ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -//ST: ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -//ST: ! -[start=2] -==== 2 bis. Considering "noun phrases" -//ST: ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -//ST: ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -//ST: ! -[start=3] -==== 3. Stemming and lemmatization -//ST: ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -//ST: ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? -//ST: Should we represent all terms in a semantic network? - -//ST: ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -//ST: ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -//ST: ! -==== 1. Start with: how many words can fit in your visualization? -//ST: ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -//ST: ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -//ST: ! -==== 2. Representing only the most frequent terms -//ST: ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -//ST: ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -//ST: tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -//ST: ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -//ST: ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -//ST: ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network -//ST: Computing connections (edges) in the network - -//ST: ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -//ST: ! -==== 1. Co-occurrences -//ST: ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -//ST: ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -//ST: ! -==== 2. What "weight" for the edges? -//ST: ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -//ST: ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -//ST: ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -//ST: ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -//ST: ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -//ST: ! -===== If two terms are very frequent, is their co-occurrence really of interest? -//ST: ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -//ST: ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -//ST: ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -//ST: ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -//ST: ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -//ST: ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -//ST: Visualizing semantic networks with Gephi -//ST: ! - - - -== (to be continued) -//ST: (to be continued) - - -== More tutorials on working with semantic networks -//ST: More tutorials on working with semantic networks -//ST: ! - - -== the end -//ST: The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] diff --git a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_slides.md b/docs/generated-slides/en/book/subdir/working-with-text-en_temp_slides.md deleted file mode 100644 index 0166a96..0000000 --- a/docs/generated-slides/en/book/subdir/working-with-text-en_temp_slides.md +++ /dev/null @@ -1,370 +0,0 @@ -= Working with text in Gephi -Clément Levallois -2017-03-07 - -last modified: {docdate} - -:icons!: -:asciimath: -:iconsfont: font-awesome -:revnumber: 1.0 -:example-caption!: - -:title-logo-image: gephi-logo-2010-transparent.png[width="450" align="center"] - -[.stretch] -image::gephi-logo-2010-transparent.png[width="450" align="center"] - - -== 'Escape' or 'o' to see all sides, F11 for full screen, 's' for speaker notes - -== Presentation of this tutorial - -== ! -This tutorial explains how to draw "semantic networks" like this one: - -[.stretch] -image::en/cooccurrences-computer/gephi-result-1-en.png[align="center", title="a semantic network"] - - -== ! - -We call "semantic network" a visualization where textual items (words, expressions) are connected to each others, like above. - -We will see in turn: - -== ! - -- why are semantic networks interesting -- how to create a semantic network -- tips and tricks to visualize semantic networks in the best possible way in Gephi - - -== Why semantic networks? -== ! - -A text, or many texts, can be hard to summarize. - -Drawing a semantic network highlights what are the most frequent terms, how they relate to each other, and reveal the different groups or "clusters" they form. - -== ! - -Often, a cluster of terms characterizes a topic. -Hence, converting a text into a semantic network helps detecting topics in the text, from micro-topics to the general themes discussed in the documents. - -== ! - -Semantic networks are regular networks, where: - -- nodes are words ("USA") or groups of words ("United States of America") - -- relations are, usually, signifying co-occurrences: two words are connected if they appear in the same document, or in the same paragraph, or same sentence... you decide. - -== ! - -It means that if you have a textual network, you can visualize it with Gephi just like any other network. - -Yet, not everything is the same, and this tutorial provides tips and tricks on why textual data can be a bit different than other data. - -== Choosing what a "term" is in a semantic network -== ! - -The starting point can be: a term is a single word. So in this sentence, we would have 7 terms: - - My sister lives in the United States (7 words -> 7 terms) - -This means that each single term is a meaningful semantic unit. - -This approach is simple but not great. Look again at the sentence: - -== ! - - My sister lives in the United States - -1. `My`, `in`, `the` are frequent terms which have no special significance: they should probably be discarded -2. `United` and `States` are meaningful separately, but here they should probably be considered together: `United States` -3. `lives` is the conjugated form of the verb `to live`. In a network, it would make sense to regroup `live`, `lives` and `lived` as one single node. - -Analysts, facing each of these issues, have imagined several solutions: - -== ! -==== 1. Removing "stopwords" -== ! - -To remove these little terms without informational value, the most basic approach is to keep a list of them, and remove any word from the text which belongs to this list. - -You can find a list of these useless terms in many languages, called "stopwords", http://www.ranks.nl/stopwords/[on this website]. - -== ! -[start=2] -==== 2. Considering "n-grams" -== ! - -So, `United States` should probably be a meaningful unit, not just `United` and `States`. -Because `United States` is composed of 2 terms, it is called a "bi-gram". - -Trigrams are interesting as well obviously (eg, `chocolate ice cream`). - -== ! - -People often stop there, but quadrigrams can be meaningful as well, if less frequent: `United States of America`, `functional magnetic resonance imaging`, `The New York Times`, etc. - -Many tools exist to extract n-grams from texts, for example http://homepages.inf.ed.ac.uk/lzhang10/ngram.html[these programs which are under a free license]. - -== ! -[start=2] -==== 2 bis. Considering "noun phrases" -== ! - -Another approach to go beyond single word terms (`United`, `States`) takes a different approach than n-grams. It says: - - "delete all in the text except for groups of words made of nouns and adjectives, ending by a noun" - --> (these are called, a bit improperly, "noun phrases") - -Take `United States`: it is a noun (`States`) preceded by an adjective (`United`). It will be considered as a valid term. - -== ! - -This approach is interesting (implemented for example in the software http://www.vosviewer.com[Vosviewer]), but it has drawbacks: - -- you need to detect adjectives and nouns in your text. This is language dependent (French put adjectives after nouns, for instance), and the processing is slow for large corpora. - -- what about verbs, and noun phrases comprising non adjectives, such as "United States *of* America"? These are not going to be included in the network. - -== ! -[start=3] -==== 3. Stemming and lemmatization -== ! - -`live`, `lives`, `lived`: in a semantic network, it is probably useless to have 3 nodes, one for each of these 3 forms of the same root. - -- Stemming consists in chopping the end of the words, so that here, we would have only `live`. -- Lemmatization is the same, but in a more subtle way: it takes grammar into account. So, "good" and better" would be reduced to "good" because there is the same basic semantic unit behind these two words, even if their lettering differ completely. - -== ! - -A tool performing lemmatization is https://textgrid.de/en/[TextGrid]. -It has many functions for textual analysis, and lemmatization https://wiki.de.dariah.eu/display/TextGrid/The+Lemmatizer+Tool[is explained there]. - -== Should we represent all terms in a semantic network? - -== ! -We have seen that some words are more interesting than others in a corpus: - -- stopwords should be removed, -- some varieties of words (`lived`, `lives`) could be grouped together (`live`). -- sequences of words (`baby phone`) can be added because they mean more than their words taken separately (`baby`, `phone`) - -== ! -Once this is done, we have transformed the text into plenty of words to represent. Should they all be included in the network? - -Imagine we have a word appearing just once, in a single footnote of a text long of 2,000 pages. -Should this word appear? Probably not. - -Which rule to apply to keep or leave out a word? - -== ! -==== 1. Start with: how many words can fit in your visualization? -== ! - -A starting point can be the number of words you would like to see on a visualization. *A ball park figure is 300 words max*: - -- it already fills in all the space of a computer screen. -- 300 words provides enough information to allow micro-topics of a text to be distinguished - -== ! - -More words can be crammed in a visualization, but in this case the viewer would have to take time zooming in and out, panning to explore the visualization. -The viewer transforms into an analyst, instead of a regular reader. - -== ! -==== 2. Representing only the most frequent terms -== ! - -If ~ 300 words would fit in the visualization of the network, and the text you start with contains 5,000 different words: which 300 words should be selected? - -To visualize the semantic network *for a long, single text* the straightforward approach consists in picking the 300 most frequent words (or n-grams, see above). - -In the case of a collection of texts to visualize (several documents instead of one), two possibilities: - -== ! - -1. Either you also take the most frequent terms across these documents, like before - -2. Or you can apply a more subtle rule called "tf-idf", detailed below. - -== tf-idf - -The idea with tf-idf is that terms which appear in all documents are not interesting, because they are so ubiquitous. - -Example: you retrieve all the webpages mentioning the word `Gephi`, and then want to visualize the semantic network of the texts contained in these webpages. - -== ! - --> by definition, all these webpages will mention Gephi, so Gephi will probably be the most frequent term. - --> so your network will end up with a node "Gephi" connected to many other terms, but you actually knew that. Boring. - --> terms used in all web pages are less interesting to you than terms which are used frequently, but not uniformly accross webpages. - -== ! - -Applying the tf-idf correction will highlight terms which are frequently used within some texts, but not used in many texts. - -(to go further, here is a webpage giving a simple example: http://www.tfidf.com/) - -== ! -So, should you visualize the most frequent words in your corpus, or the words which rank highest according to tf-idf? - -Both are interesting, as they show a different info. I'd suggest that the simple frequency count is easier to interpret. - -tf-idf can be left for specialists of the textual data under consideration, after they have been presented with the simple frequency count version. - -== Computing connections (edges) in the network - -== ! -We now have extracted the most interesting / meaningful terms from the text. -How to decide which connections make sense between them? - -== ! -==== 1. Co-occurrences -== ! - -Connections between terms are usually drawn from co-occurrences: two terms will be connected if they appear next to each other in some pre-defined unit of text: - -- in the same sentence -- in the same paragraph -- in the same document (if the corpus is made of several documents) - -(note on vocabulary: in the following, we will call this a "unit of text"). - -== ! -For example, in bibliometrics (the study of the publications produced by scientists), this could give: - -- collect *abstracts* (short summaries) of all scientific articles discussing "nano-technologies". -- so, abstracts are our units of text here. -- two terms will be connected if they frequently appear *in the same abstracts*. - -== ! -==== 2. What "weight" for the edges? -== ! - -An edge between two terms will have: - -- weight of "1" if these two terms co-occur in just one unit of text. -- weight of "2" if they co-occur in two units of text. -- etc... - -The logic is simple, and yet there are some refinements to discuss. It will be up to you to decide what's preferable: - -== ! -===== If 2 terms appear several times *in a given unit of text*, should their co-occurences be counted several times? -== ! - -An example to clarify. Let's imagine that we are interested in webpages discussing nanotechnology. -We want to draw the semantic network of the vocabulary used in these web pages. - -A co-occurrence is: when 2 terms are used on the same web page. - -Among the pages we collected, there is the Wikipedia page discussing nanotechnology: - -== ! - -[quote, 'https://en.wikipedia.org/wiki/Nanotechnology[Wikipedia]'] -____ -[red]#Nanotechnology# ("nanotech") is manipulation of matter on an atomic, [blue]#molecular#, and supramolecular scale. -The earliest, widespread description of [red]#nanotechnology# referred to the particular technological goal of precisely manipulating atoms and molecules for fabrication of macroscale products, also now referred to as [blue]#molecular# [red]#nanotechnology# -____ - -== ! -The question is: - -- should I count only *one* co-occurrence between `molecular` and `nanotechnology`, because it happened on this one web page? -- or should I consider that `molecular` appears twice on this page, and `nanotechnology` three times, so *multiple* co-occurrences between these 2 terms should be counted, just on this page already? - -There is no exact response, and you can experiment with both possibilities. - -== ! -===== If two terms are very frequent, is their co-occurrence really of interest? -== ! - -Example: - -Chun-Yuen Teng, Yu-Ru Lin and Lada Adamic have studied (using Gephi!) https://arxiv.org/abs/1111.3919[the pairing of ingredients in cooking recipes]. - -So, in their study the unit of text was the "recipe", and the terms in the semantic network where ingredients in all these recipes. - -== ! -Just because they are so common, some ingredients (like `flour`, `sugar`, `salt`) are bound to appear more frequently in the same recipes (to co-occur), than infrequent ingredients. - -The authors of this study chose to highlight *complementary ingredients*: some ingredients appear often used together in the same recipes, _even if they are ingredients which are quite rarely used_. - -"Complementary" here means that these ingredients have some interesting relationship: when one is used, the other "must" be used as well. - -== ! - -If we just count co-occurrences, this special relationship between infrequent complementary ingredients will be lost: by definition, 2 infrequent ingredients can't co-occurr often. - -To fix this, a solution consists in comparing how many times the 2 ingredients co-occur, with how frequent they are in all recipes: - --> ingredients co-occurring _each and every time they are used_ will have a large edge weight, - --> ingredients co-occuring many times, _but also appearing many times in different recipes_, will get a low edge weight. - -== ! - -A simple formula does this operation. For ingredients A and B: - - weight of edge between A and B = - nb of recipes where A & B co-occur - divided by - (total nb of recipes where A appear x total nb of recipes where B appear) - -== ! - -Logs are often added to this formula, which is called "Pointwise mutual information": - -[asciimath] -++++ -PMI = log((p(A, B)) /(p(A) p(B))) -++++ - -== ! -We now have nodes and their relations: a semantic network. Let's see now how to visualize it in Gephi. - - -== Visualizing semantic networks with Gephi -== ! - - - -== (to be continued) - - -== More tutorials on working with semantic networks -== ! - - -== The end! - -Visit https://www.facebook.com/groups/gephi/[the Gephi group on Facebook] to get help, - -or visit https://seinecle.github.io/gephi-tutorials/[the website for more tutorials] -pass:[ - - - ] diff --git a/docs/generated-slides/en/book/toc.txt b/docs/generated-slides/en/book/toc.txt deleted file mode 100644 index 5963b02..0000000 --- a/docs/generated-slides/en/book/toc.txt +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\how should Gephi be pronounced.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\what-is-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\history-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\simple-project-from-a-to-z-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\using-filters-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\importing-csv-data-in-gephi-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\working-with-text-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\cooccurrences-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\k-partite-bi-partite-graph-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\semantic-web-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\similarity-computer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\plugins\twitter-streaming-importer-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\developers\working-from-the-source-en.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\converting-a-network-with-dates-into-dynamic.adoc -C:\Users\levallois\Google Drive\open\gephi tutorials\docs\src\main\asciidoc\en\dynamic\creating-a-simple-dynamic-network.adoc diff --git a/docs/generated-slides/gephi-for-developers-en.html b/docs/generated-slides/gephi-for-developers-en.html deleted file mode 100644 index c6ae58c..0000000 --- a/docs/generated-slides/gephi-for-developers-en.html +++ /dev/null @@ -1,387 +0,0 @@ -Untitled

    - -

    site
-    stats
    -

    \ No newline at end of file diff --git a/docs/generated-slides/history-en.html b/docs/generated-slides/history-en.html index 2edaa76..5d9ac8b 100644 --- a/docs/generated-slides/history-en.html +++ b/docs/generated-slides/history-en.html @@ -144,7 +144,7 @@ link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? "reveal.js-3.9.2/css/print/pdf.css" : "reveal.js-3.9.2/css/print/paper.css"; document.getElementsByTagName( 'head' )[0].appendChild( link );

    History of Gephi

    2017-01-11

    -

    last modified: 2020-11-15

    +

    last modified: 2021-09-22

    gephi logo 2010 transparent

    == !

    1. The birth of Gephi

    The origin of Gephi lays in Web Atlas, a project started in 2006 involving Mathieu Jacomy, who was interested in the exploration of web-based graphs.

    @@ -174,10 +174,10 @@

    b. General interest for Gephi and related software in the past 5 years

    -
    -
    +
    +

    c. Academic citations for Gephi (counting only citations to Bastian et al., 2009)

    google scholar gephi
    Figure 3.

      @@ -185,9 +185,9 @@

    the end

    Visit the Gephi group on Facebook to get help,

    or visit the website for more tutorials -te for more tutorials] -ite for more tutorials] -e website for more tutorials] + for more tutorials] + for more tutorials] + for more tutorials]

    bkKvvzE9PEcTK
    +document.getElementsByTagName( 'head' )[0].appendChild( link );
    seinfeld
    Figure 1.

        +nbsp} +nbsp} +nbsp} +nbsp}   - 

    -

     

    Importing csv data in Gephi

    2017-02-03

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    Importing an existing network file

    -

    Gephi handles the import of network files in a variety of formats:

    -
    network formats gephi import en
    Figure 1. file formats supported by Gephi. Source: gephi.org
    -

      - 

    -

    To import any of these files, just choose the File → Open menu

    -

    Importing nodes with labels and their relations: simplest version

    -

    (looking for the complete, full featured csv import version? skip to here.)

    -

    The easiest is probably to just have a text file like this one:

    -
    Source,Target (1)
    -Jeremy,Jennifer
    -Valerian,Jeremy
    -
    1. This line is mandatory. Don’t put a space between the comma and "Target"

    -

    Just write this in a text editor and save it as a file example.txt

    -

    To import this file in Gephi, go to File→Import Spreadsheet. Then in the window:

    -
    Importing nodes with labels and their relations
    Figure 2. Importing nodes with labels and their relations
    -

      - 

    -

    In this window, make sure the box "Create missing nodes" is checked:

    -
    Second screen
    Figure 3. Second screen
    -

      - 

    -

    Let’s look again at the simple text file we used:

    -
    Source,Target
    -Jeremy,Jennifer
    -Valerian,Jeremy
    -

    There are 2 issues and several missing features, listed below:

    -

    1. labels containing commas in them will not work.

    -

    Imagine our characters have first names and last names separated by a comma:

    -

    Dubois, Jeremy

    -

    Rodriguez, Valerian

    -

    This will look like:

    -
    Source,Target
    -Dubois, Jeremy,Jeremy,Jennifer
    -Rodriguez, Valerian,Dubois, Jeremy
    -

    Note that we have 3 commas per line, instead of one! -In this mess, Gephi will not detect where the node labels start and end. -The import will break.

    -

    The proper solution is to put node labels inside double quotes:

    -
    Source,Target
    -"Dubois, Jeremy","Jeremy,Jennifer"
    -"Rodriguez, Valerian","Dubois, Jeremy"
    -

    Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have.

    -

    2. labels containing double quotes " " in them will not work.

    -

    Example: let’s imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. -Our text file will look like:

    -
    Source,Target
    -"Dubois, Jeremy "Danger"","Jeremy,Jennifer"
    -"Rodriguez, Valerian","Dubois, Jeremy "Danger""
    -

    These extra " " will make the Gephi import break:

    -
    import spreadsheet 4 en
    Figure 4. The import bugs - the middle name has disappeared
    -

      - 

    -

    The solution consists in adding an extra double quote in front of the double quotes. -Our text file will look like:

    -
    Source,Target
    -"Dubois, Jeremy ""Danger""","Jeremy,Jennifer"
    -"Rodriguez, Valerian","Dubois, Jeremy ""Danger"""
    -

    This time, Gephi imports the network correctly:

    -
    import spreadsheet 3 en
    Figure 5. Importing node labels containing double quotes
    -

      - 

    -

    Importing more than labels: nodes and edges attributes

    -

    To import attributes we will need to proceed differently.

    -

    We need 2 text files: one for the list of nodes, one for the list of relations (edges)

    -

    An example file with a list of nodes:

    -
    Id,Label,Date of Birth,Place of Birth,Years of experience,Rating (1)
    -3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27
    -1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34
    -45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66
    -
    1. Nodes must have at least an Id and a Label. Don’t put spaces after the commas

    -

    An example file with a list of edges:

    -
    Source,Target,Weight,Type,Where first met (1)
    -1,45,3,"undirected",London (2)
    -
    1. Edges must have at least a Source and Target. Other fields are optional.

    2. "undirected", the alternative is "directed". Directed edges have arrow heads.

    -

    Let’s import the list of nodes first. File → Import Spreadsheet

    -
    Importing a list of nodes with attributes
    Figure 6. Importing a list of nodes with attributes
    -

      - 

    -

    in the next screen, we must be careful with a couple of things:

    -
    The attributes of the nodes
    Figure 7. The attributes of the nodes
    -

      - 

    -

    Then we can import the file with the list of relations. File → Import Spreadsheet

    -
    Importing a list of edges with attributes
    Figure 8. Importing a list of edges with attributes
    -

      - 

    -
    The attributes of the edges
    Figure 9. The attributes of the edges
    -

      - 

    -

    Memo card

    -

    Nodes

    -
    • header must be at least Id,Label

    -

    Edges

    -
    • header must be at least Source,Target

    • To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight".

    • Want arrows on your links? Add an attribute "Type", with value "Directed"

    • Don’t wan’t arrows? Add an attribute "Type", with value "Undirected"

    -

    Types of attributes: which to choose?

    -
    import spreadsheet 9 en
    Figure 10. Kinds of attributes
    -

      - 

    -
    • Textual attribute: String. Nodes sharing the same textual value can be colored the same, or filtered together…​

    • Numerical attribute: Integer, Double or Float. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values.

    • Boolean attribute: just a true or false value. Useful for filtering out some nodes which are true or false on some parameter.

    • Other types of attributes: not needed for the moment.

    -

    (to be continued)

    -
    -

    More tutorials on importing data to Gephi

    -
    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials -it the website for more tutorials -sit the website for more tutorials -e website for more tutorials] - - -

    site
-    stats
    -

    Importing csv data in Gephi

    2017-02-03

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    Importing an existing network file

    +

    Gephi handles the import of network files in a variety of formats:

    +
    network formats gephi import en
    Figure 1. file formats supported by Gephi. Source: gephi.org
    +

      + 

    +

    To import any of these files, just choose the File → Open menu

    +

    Importing nodes with labels and their relations: simplest version

    +

    (looking for the complete, full featured csv import version? skip to here.)

    +

    The easiest is probably to just have a text file like this one:

    +
    Source,Target (1)
    +Jeremy,Jennifer
    +Valerian,Jeremy
    +
    1. This line is mandatory. Don’t put a space between the comma and "Target"

    +

    Just write this in a text editor and save it as a file example.txt

    +

    To import this file in Gephi, go to File→Import Spreadsheet. Then in the window:

    +
    Importing nodes with labels and their relations
    Figure 2. Importing nodes with labels and their relations
    +

      + 

    +

    In this window, make sure the box "Create missing nodes" is checked:

    +
    Second screen
    Figure 3. Second screen
    +

      + 

    +

    Let’s look again at the simple text file we used:

    +
    Source,Target
    +Jeremy,Jennifer
    +Valerian,Jeremy
    +

    There are 2 issues and several missing features, listed below:

    +

    1. labels containing commas in them will not work.

    +

    Imagine our characters have first names and last names separated by a comma:

    +

    Dubois, Jeremy

    +

    Rodriguez, Valerian

    +

    This will look like:

    +
    Source,Target
    +Dubois, Jeremy,Jeremy,Jennifer
    +Rodriguez, Valerian,Dubois, Jeremy
    +

    Note that we have 3 commas per line, instead of one! +In this mess, Gephi will not detect where the node labels start and end. +The import will break.

    +

    The proper solution is to put node labels inside double quotes:

    +
    Source,Target
    +"Dubois, Jeremy","Jeremy,Jennifer"
    +"Rodriguez, Valerian","Dubois, Jeremy"
    +

    Be careful to use these straight " " double quotes, not the curvy ones: “ ” which French keyboards sometimes have.

    +

    2. labels containing double quotes " " in them will not work.

    +

    Example: let’s imagine that one of our characters has a middle name: Jeremy "Danger" Dubois. +Our text file will look like:

    +
    Source,Target
    +"Dubois, Jeremy "Danger"","Jeremy,Jennifer"
    +"Rodriguez, Valerian","Dubois, Jeremy "Danger""
    +

    These extra " " will make the Gephi import break:

    +
    import spreadsheet 4 en
    Figure 4. The import bugs - the middle name has disappeared
    +

      + 

    +

    The solution consists in adding an extra double quote in front of the double quotes. +Our text file will look like:

    +
    Source,Target
    +"Dubois, Jeremy ""Danger""","Jeremy,Jennifer"
    +"Rodriguez, Valerian","Dubois, Jeremy ""Danger"""
    +

    This time, Gephi imports the network correctly:

    +
    import spreadsheet 3 en
    Figure 5. Importing node labels containing double quotes
    +

      + 

    +

    Importing more than labels: nodes and edges attributes

    +

    To import attributes we will need to proceed differently.

    +

    We need 2 text files: one for the list of nodes, one for the list of relations (edges)

    +

    An example file with a list of nodes:

    +
    Id,Label,Date of Birth,Place of Birth,Years of experience,Rating (1)
    +3,"Dubois, Jeremy ""Danger""",17/09/1980,"Paris",8,9.27
    +1,"Jeremy,Jennifer",25/03/1978,"Tampa",8,4.34
    +45,"Rodriguez, Valerian",30/04/1985,"Berlin",5,6.66
    +
    1. Nodes must have at least an Id and a Label. Don’t put spaces after the commas

    +

    An example file with a list of edges:

    +
    Source,Target,Weight,Type,Where first met (1)
    +1,45,3,"undirected",London (2)
    +
    1. Edges must have at least a Source and Target. Other fields are optional.

    2. "undirected", the alternative is "directed". Directed edges have arrow heads.

    +

    Let’s import the list of nodes first. File → Import Spreadsheet

    +
    Importing a list of nodes with attributes
    Figure 6. Importing a list of nodes with attributes
    +

      + 

    +

    in the next screen, we must be careful with a couple of things:

    +
    The attributes of the nodes
    Figure 7. The attributes of the nodes
    +

      + 

    +

    Then we can import the file with the list of relations. File → Import Spreadsheet

    +
    Importing a list of edges with attributes
    Figure 8. Importing a list of edges with attributes
    +

      + 

    +
    The attributes of the edges
    Figure 9. The attributes of the edges
    +

      + 

    +

    Memo card

    +

    Nodes

    +
    • header must be at least Id,Label

    +

    Edges

    +
    • header must be at least Source,Target

    • To have an attribute for the "thickness" or "strength" of a relation, this attribute must be called "Weight".

    • Want arrows on your links? Add an attribute "Type", with value "Directed"

    • Don’t wan’t arrows? Add an attribute "Type", with value "Undirected"

    +

    Types of attributes: which to choose?

    +
    import spreadsheet 9 en
    Figure 10. Kinds of attributes
    +

      + 

    +
    • Textual attribute: String. Nodes sharing the same textual value can be colored the same, or filtered together…​

    • Numerical attribute: Integer, Double or Float. Nodes can be resized according to their value, or colorized in a gradient. Filters can be applied based on the range of values.

    • Boolean attribute: just a true or false value. Useful for filtering out some nodes which are true or false on some parameter.

    • Other types of attributes: not needed for the moment.

    +

    (to be continued)

    +
    +

    More tutorials on importing data to Gephi

    +
    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials +t the website for more tutorials + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/k-partite-bi-partite-graph-en.html b/docs/generated-slides/k-partite-bi-partite-graph-en.html index 9b39dff..1b6abde 100644 --- a/docs/generated-slides/k-partite-bi-partite-graph-en.html +++ b/docs/generated-slides/k-partite-bi-partite-graph-en.html @@ -144,7 +144,7 @@ link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? "reveal.js-3.9.2/css/print/pdf.css" : "reveal.js-3.9.2/css/print/paper.css"; document.getElementsByTagName( 'head' )[0].appendChild( link );

    K-partite and Bipartite Graph (Multimode Networks Transformations)

    2017-01-29

    -

    last modified: 2020-11-15

    == !

    +

    last modified: 2021-09-22

    == !

    gephi logo 2010 transparent

       

    @@ -236,9 +236,11 @@

    The end

    Visit the Gephi group on Facebook to get help,

    or visit the website for more tutorials -o/gephi-tutorials/[the website for more tutorials] -gephi-tutorials/[the website for more tutorials] -rials/[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials] +/gephi-tutorials[the website for more tutorials]

    Semantic Web Importer

    2017-01-31

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    Author and documentation

    -
    -

    The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi.

    -

    Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic

    -

    Plugin Author: Erwan Demairy

    - -

    Licensed under: Cecill-C

    -

    Introduction to concepts

    -

    RDF stands for Resource Description Framework . -It is a way to represent information of all kinds. -It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system.

    -

    RDF can be considered as the « Grand Father » of graph representation.

    -

    The idea is very simple, all information can be represented as a triplet :

    -

    (subject, predicate, object)

    -

    To query such a dataset, a query language has been developed: SPARQL

    -

    The SPARQL format is close to SQL format and tries to be as close as possible to a natural language.

    -

    DBpedia is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service.

    -

    DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts.

    -

    You can query it through a web interface or via any RDF toolkit :

    - -
    select *
    -where
    -{
    -  <http://dbpedia.org/resource/Leonardo_DiCaprio> ?predicate ?object.
    -}
    -

    Quickstart

    -

    The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. -The Semantic Web Plugin uses this feature to draw the result of your query into Gephi.

    -

    First, we need to install Semantic web import. You can find and install this plugin in the menu Tools → Plugins of Gephi.

    -

    When installed, go to the Semantic Web Import tab.

    -

    In the Driver tab, choose Remote - REST endpoint and put http://dbpedia.org/sparql and EndPoint URL.

    -

    Press Enter after typing the URL endpoint so the url is getting validated and used.

    -
    setup 1
    Figure 1. Setup endpoint
    -

      - 

    -

    Go to Query tab, remove the dummy query and put this one:

    -
    CONSTRUCT{
    -  ?person <http://gephi.org/type> "person".
    -  ?movie <http://gephi.org/type> "movie".
    -  ?movie <http://toto/link> ?person .
    -}
    -WHERE
    -{
    - ?movie a <http://dbpedia.org/ontology/Film>.
    - ?movie ?rel1 <http://dbpedia.org/resource/Leonardo_DiCaprio>.
    - ?movie ?rel2 ?person.
    - ?person a <http://dbpedia.org/ontology/Person>.
    -}
    -

    Finally, click on Run

    -
    setup 2
    Figure 2. SPARQL Query
    -

      - 

    -

    Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering.

    -
    result 1
    Figure 3. result
    -

      - 

    -

    Details

    -
    -

    CONSTRUCT block

    -

    The CONSTRUCT block define the new graph to build from the query. That’s the description of your data the plugin will interpet -to build the graph.

    -

    What is the syntax for this CONSTRUCT block :

    -
    -

    → Will create the node ?a with the property nodeProperty equal to ?b.

    -
    • ?a (<what_You_Want> or ?c) ?b

    -

    → will create a link between ?a and ?b with label <what_You_Want>

    -

    WHERE block

    -

    The WHERE block define the data to match based on the query typed in :

    -
    -

    → Get all subject which is a http://dbpedia.org/ontology/Film. -The a is actually a SPARQL special word for <rdf:type>. -So it’s exactly equal to ?movie <rdf:type> http://dbpedia.org/ontology/Film

    - -

    → Match all subjects which have any predicate where the object is http://dbpedia.org/resource/Leonardo_DiCaprio

    -
    • ?movie ?rel2 ?person.

    -

    → Match any triplet

    - -

    → Match the subject ?person if it’s a http://dbpedia.org/ontology/Person.

    -

    In other words, match the variable ?movie to any entity that is a Film and that has at least 1 triplet where Leonardo is an object. Match also all ?person that is a Person.

    -

    The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio.

    -

    Tips to go further

    -

    What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. -We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. -The limit is your imagination to graph.

    -

    On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. -It will also maybe give you some insight on which new movies to watch tonight 😉

    -

    But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research.

    -

    If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL.

    -

    The end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials -e website for more tutorials] -website for more tutorials] -rials/[the website for more tutorials] - - -

    site
-    stats
    -

    Semantic Web Importer

    2017-01-31

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    Author and documentation

    +
    +

    The Semantic Web Importer plugin allows you to query a SPARQL endpoint and represent the result as a graph in Gephi.

    +

    Official page of the plugin: https://gephi.org/plugins/#/plugin/semantic

    +

    Plugin Author: Erwan Demairy

    + +

    Licensed under: Cecill-C

    +

    Introduction to concepts

    +

    RDF stands for Resource Description Framework . +It is a way to represent information of all kinds. +It is now a specification and since 1995 people are working on RDF and all subjects related to information representation for automatic system.

    +

    RDF can be considered as the « Grand Father » of graph representation.

    +

    The idea is very simple, all information can be represented as a triplet :

    +

    (subject, predicate, object)

    +

    To query such a dataset, a query language has been developed: SPARQL

    +

    The SPARQL format is close to SQL format and tries to be as close as possible to a natural language.

    +

    DBpedia is the RDF version of Wikipedia. It is an open datastore that tries to gather and offers in RDF format all information that you can find in wikipedia or other knowledge service.

    +

    DBPedia is very interesting because it preformats concepts and makes them available for automatic processes or complex queries across concepts.

    +

    You can query it through a web interface or via any RDF toolkit :

    + +
    select *
    +where
    +{
    +  <http://dbpedia.org/resource/Leonardo_DiCaprio> ?predicate ?object.
    +}
    +

    Quickstart

    +

    The result of a SPARQL can be a table as we could do it with SQL, but you can also build a graph based on your query. +The Semantic Web Plugin uses this feature to draw the result of your query into Gephi.

    +

    First, we need to install Semantic web import. You can find and install this plugin in the menu Tools → Plugins of Gephi.

    +

    When installed, go to the Semantic Web Import tab.

    +

    In the Driver tab, choose Remote - REST endpoint and put http://dbpedia.org/sparql and EndPoint URL.

    +

    Press Enter after typing the URL endpoint so the url is getting validated and used.

    +
    setup 1
    Figure 1. Setup endpoint
    +

      + 

    +

    Go to Query tab, remove the dummy query and put this one:

    +
    CONSTRUCT{
    +  ?person <http://gephi.org/type> "person".
    +  ?movie <http://gephi.org/type> "movie".
    +  ?movie <http://toto/link> ?person .
    +}
    +WHERE
    +{
    + ?movie a <http://dbpedia.org/ontology/Film>.
    + ?movie ?rel1 <http://dbpedia.org/resource/Leonardo_DiCaprio>.
    + ?movie ?rel2 ?person.
    + ?person a <http://dbpedia.org/ontology/Person>.
    +}
    +

    Finally, click on Run

    +
    setup 2
    Figure 2. SPARQL Query
    +

      + 

    +

    Go back to the Graph preview and you should see a graph. Use the layout tab to get a more intuitive rendering.

    +
    result 1
    Figure 3. result
    +

      + 

    +

    Details

    +
    +

    CONSTRUCT block

    +

    The CONSTRUCT block define the new graph to build from the query. That’s the description of your data the plugin will interpet +to build the graph.

    +

    What is the syntax for this CONSTRUCT block :

    +
    +

    → Will create the node ?a with the property nodeProperty equal to ?b.

    +
    • ?a (<what_You_Want> or ?c) ?b

    +

    → will create a link between ?a and ?b with label <what_You_Want>

    +

    WHERE block

    +

    The WHERE block define the data to match based on the query typed in :

    +
    +

    → Get all subject which is a http://dbpedia.org/ontology/Film. +The a is actually a SPARQL special word for <rdf:type>. +So it’s exactly equal to ?movie <rdf:type> http://dbpedia.org/ontology/Film

    + +

    → Match all subjects which have any predicate where the object is http://dbpedia.org/resource/Leonardo_DiCaprio

    +
    • ?movie ?rel2 ?person.

    +

    → Match any triplet

    + +

    → Match the subject ?person if it’s a http://dbpedia.org/ontology/Person.

    +

    In other words, match the variable ?movie to any entity that is a Film and that has at least 1 triplet where Leonardo is an object. Match also all ?person that is a Person.

    +

    The result in our case is actually a bi-modal graph with Movies and Persons shared with Leonardo Dicaprio.

    +

    Tips to go further

    +

    What is interesting with this method is the way to query the data, and the fact that it is easily extensible to other subjects just by changing few things in the query. +We can think about Music Band and Player relationships, the traditionnal Persons to Companies, or more originally, all the common places where your favorites movies where shot, etc. +The limit is your imagination to graph.

    +

    On our example, you can run multiple time the same query and change which person you want to « expand », it will automatically create the global network of all your research. +It will also maybe give you some insight on which new movies to watch tonight 😉

    +

    But keep in mind that you are heavily dependent on Dbpedia data quality (or other RDF entrypoint), which can alterate a lot you research.

    +

    If you want more refined queries, you will have to learn SPARQL and RDF in more details. There are a lot of tutorials around the web that will help you to master SPARQL.

    +

    The end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +website for more tutorials] +website for more tutorials] +website for more tutorials] +website for more tutorials] +website for more tutorials] + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/similarity-computer-en.html b/docs/generated-slides/similarity-computer-en.html index 84a2052..b01400f 100644 --- a/docs/generated-slides/similarity-computer-en.html +++ b/docs/generated-slides/similarity-computer-en.html @@ -1,471 +1,476 @@ -Creating a network from a table of entities and their attributes

    Creating a network from a table of entities and their attributes

    2017-02-22

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    Presentation of the plugin

    -

    This plugin is created by Clement Levallois.

    -

    It converts a spreadsheet or a csv file into a network.

    -

    This plugin enables you to:

    -
    • Start from a data table in Excel or csv format

    • In the data table, nodes are the entities listed in column A

    • Nodes' attributes must be listed in columns B, C, D, etc.

    -
    • Connections will be created between nodes, when they have identical attributes.

    • Attributes can have values, stored in columns right next to the attribute.

    -

    1. The input

    -
    An Excel file
    Figure 1. An Excel file
    -

      - 

    -

    2. The output

    -
    result
    Figure 2. Resulting network
    -

      - 

    -

    Installing the plugin

    -
    Choose the menu Tools then Plugins
    Figure 3. Choose the menu Tools then Plugins
    -

      - 

    -
    Click on the tab Available Plugins
    Figure 4. Click on the tab Available Plugins
    -

      - 

    -
    Install the plugin Similarity Computer then restart Gephi
    Figure 5. Install the plugin Similarity Computer then restart Gephi
    -

      - 

    -

    Opening the plugin

    -
    Open the plugin via the menu File   Import
    Figure 6. Open the plugin via the menu File - Import
    -

      - 

    -

    Using the plugin

    -

    First panel

    -
    Select a file
    Figure 7. Select a file
    -

      - 

    -
    file without header en
    Figure 8. A file without headers
    -

      - 

    -
    file with header en
    Figure 9. A file with headers
    -

      - 

    -

    Second panel

    -
    plugin 4 en
    Figure 10. Parameter for weight
    -

      - 

    -

    Third panel

    -
    plugin 5 en
    Figure 11. Confirmation panel
    -

      - 

    -

    How is the similarity computed, exactly?

    -

    We use the cosine similarity. -Sounds complicated, but it is not. -Check here.

    -

    The source code for the cosine calculation is in this file, at this place.

    -

    FAQ / special notes on the plugin

    -

    1. Excel files should be .xlsx, not .xls

    -

    Because they represent two slightly different files formats, and the plugin supports only .xlsx

    -

    2. csv files are ok.

    -

    If you select a csv file, you will be asked to indicate the field delimiter and optionally the text delimiter.

    -
    plugin 6 en
    Figure 12. When a csv file is selected
    -

      - 

    -

    3. You can’t use numerical values in the attributes

    -
    numerical attributes en
    Figure 13. Age is a numerical attribute
    -

      - 

    -

    This is too bad. -If there is enough demand for it I’ll add this feature, which is not trivial.

    -

    4. Each entity should appear only on one line

    -
    plugin 7 en
    Figure 14. An entity appearing twice
    -

      - 

    -

    David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account.

    -

    The end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials -cebook] to get help,

    -

    or visit the website for more tutorials -book] to get help,

    -

    or visit the website for more tutorials -rials/[the website for more tutorials] - - -

    site
-    stats
    -

    Creating a network from a table of entities and their attributes

    2017-02-22

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    Upgrade: this plugin is now available as a web app!

    +

    I have transfered the plugin to a free web application, which makes it easier to access. +Visit the "network builder page" on Nocodefunctions.

    +

    You will be able to generate the file of a network (.gexf) and open it in Gephi.

    +

    Presentation of the plugin

    +

    This plugin is created by Clement Levallois.

    +

    It converts a spreadsheet or a csv file into a network.

    +

    This plugin enables you to:

    +
    • Start from a data table in Excel or csv format

    • In the data table, nodes are the entities listed in column A

    • Nodes' attributes must be listed in columns B, C, D, etc.

    +
    • Connections will be created between nodes, when they have identical attributes.

    • Attributes can have values, stored in columns right next to the attribute.

    +

    1. The input

    +
    An Excel file
    Figure 1. An Excel file
    +

      + 

    +

    2. The output

    +
    result
    Figure 2. Resulting network
    +

      + 

    +

    Installing the plugin

    +
    Choose the menu Tools then Plugins
    Figure 3. Choose the menu Tools then Plugins
    +

      + 

    +
    Click on the tab Available Plugins
    Figure 4. Click on the tab Available Plugins
    +

      + 

    +
    Install the plugin Similarity Computer then restart Gephi
    Figure 5. Install the plugin Similarity Computer then restart Gephi
    +

      + 

    +

    Opening the plugin

    +
    Open the plugin via the menu File   Import
    Figure 6. Open the plugin via the menu File - Import
    +

      + 

    +

    Using the plugin

    +

    First panel

    +
    Select a file
    Figure 7. Select a file
    +

      + 

    +
    file without header en
    Figure 8. A file without headers
    +

      + 

    +
    file with header en
    Figure 9. A file with headers
    +

      + 

    +

    Second panel

    +
    plugin 4 en
    Figure 10. Parameter for weight
    +

      + 

    +

    Third panel

    +
    plugin 5 en
    Figure 11. Confirmation panel
    +

      + 

    +

    How is the similarity computed, exactly?

    +

    We use the cosine similarity. +Sounds complicated, but it is not. +Check here.

    +

    The source code for the cosine calculation is in this file, at this place.

    +

    FAQ / special notes on the plugin

    +

    1. Excel files should be .xlsx, not .xls

    +

    Because they represent two slightly different files formats, and the plugin supports only .xlsx

    +

    2. csv files are ok.

    +

    If you select a csv file, you will be asked to indicate the field delimiter and optionally the text delimiter.

    +
    plugin 6 en
    Figure 12. When a csv file is selected
    +

      + 

    +

    3. You can’t use numerical values in the attributes

    +
    numerical attributes en
    Figure 13. Age is a numerical attribute
    +

      + 

    +

    This is too bad. +If there is enough demand for it I’ll add this feature, which is not trivial.

    +

    4. Each entity should appear only on one line

    +
    plugin 7 en
    Figure 14. An entity appearing twice
    +

      + 

    +

    David appears on lines 2 and 5 (because he made two purchases). Only the latest line where David appears (line 5) will be taken into account.

    +

    The end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +ebook] to get help,

    +

    or visit the website for more tutorials +ebook] to get help,

    +

    or visit the website for more tutorials +acebook] to get help,

    +

    or visit the website for more tutorials + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/simple-project-from-a-to-z-en.html b/docs/generated-slides/simple-project-from-a-to-z-en.html index 9a8dd12..b822507 100644 --- a/docs/generated-slides/simple-project-from-a-to-z-en.html +++ b/docs/generated-slides/simple-project-from-a-to-z-en.html @@ -144,21 +144,19 @@ link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? "reveal.js-3.9.2/css/print/pdf.css" : "reveal.js-3.9.2/css/print/paper.css"; document.getElementsByTagName( 'head' )[0].appendChild( link );

    Simple Gephi Project from A to Z

    2017-01-20

    -

    last modified: 2020-11-15

    == !

    +

    last modified: 2021-09-25

    == !

    gephi logo 2010 transparent
    -

      - 

    +

    Description of the project

    This project is for complete beginners to Gephi. It supposes you have Gephi installed and running on your computer. That is all.

    When finishing this tutorial, you should be able to:

    • be familiar with the vocabulary to discuss networks

    • download a network file for this exercise

    • description of the file / the network

    • open a network file

    • read the report after opening a file

    • show the labels of the nodes

    • layout the network

    -
    • visualize attributes of the network

    • prettify the network for enhanced readability

    • compute the centrality of the nodes in the network

    • visualize attributes created by Gephi

    • export a visualization as a picture or pdf

    +
    • visualize attributes of the network

    • prettify the network for enhanced readability

    • compute the centrality of the nodes in the network

    • visualize attributes created by Gephi

    • export a visualization as a picture or pdf

    • export a web visualization of the network

    be familiar with the terminology to discuss networks

    -
    terminology for networks
    Figure 1. terminology for networks
    -

      - 

    +
    pub?w=960&h=720
    Figure 1. terminology for networks
    +

    download a network file

    download this zip file and unzip it on your computer.

    You should find the file miserables.gexf in it.

    @@ -170,76 +168,51 @@

    open the network in Gephi

    • open Gephi. On the Welcome screen that appears, click on Open Graph File

    • find miserables.gexf on your computer and open it

    gephi welcome screen open graph en
    Figure 2. welcome screen
    -

      - 

    +

    read the report after opening a file

    A report window will open, giving you basic info on the network you opened:

    opening file report en
    Figure 3. report window
    -

      - 

    -

    This tells you that the network comprises 74 characters, connected by 248 links.

    +

    This tells you that the network comprises 74 characters, connected by 248 links.

    Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A.

    The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won’t "move in time".

    Click on OK to see the graph in Gephi.

    initial view

    project initial view
    Figure 4. initial view when opening a graph
    -

      - 

    -

    This is how the network appears in Gephi. Not very useful! Let’s examine what we have here.

    +

    This is how the network appears in Gephi. Not very useful! Let’s examine what we have here.

    basic view of Gephi’s interface

    -
    the 3 main screens in Gephi
    Figure 5. the 3 main screens in Gephi
    -

      - 

    -

    Gephi has 3 main screens:

    +
    pub?w=960
    Figure 5. the 3 main screens in Gephi
    +

    Gephi has 3 main screens:

    1. Overview: where we can explore the graph visually

    2. Data Laboratory: provides an "Excel" table view of the data in network

    3. Preview: where we polish the visualization before exporting it as a pictue or pdf

    What we see here is the Overview.

    -
    Filters and statistics panels in Gephi
    Figure 6. Filters and statistics panels in Gephi
    -

      - 

    -

    In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization.

    +
    pub?w=960
    Figure 6. Filters and statistics panels in Gephi
    +

    In the Overview, the graph is shown at the center. Around it, several panels help us fine tune the visualization.

    1. "Filters", where we can hide different parts of the network under a variety of conditions

    2. "Statistics", where we can compute metrics on the network

    -
    Appearance and layout panels in Gephi
    Figure 7. Appearance and layout panels in Gephi
    -

      - 

    -
    1. "Appearance", where we can change colors and sizes in interesting ways

    2. "Layouts", where we can apply automated procedures to change the position of the network

    -
    3 groups of icons
    Figure 8. 3 groups of icons
    -

      - 

    -
    1. A series of icons to add / colorize nodes and links manually, by clicking on them

    2. Options and sliders to change the size of all nodes, links, or labels

    3. More options become visible if we click on this little arrow head pointing up

    +
    pub?w=1439&h=787
    Figure 7. Appearance and layout panels in Gephi
    +
    1. "Appearance", where we can change colors and sizes in interesting ways

    2. "Layouts", where we can apply automated procedures to change the position of the network

    +
    pub?w=1435&h=774
    Figure 8. 3 groups of icons
    +
    1. A series of icons to add / colorize nodes and links manually, by clicking on them

    2. Options and sliders to change the size of all nodes, links, or labels

    3. More options become visible if we click on this little arrow head pointing up

    showing labels of the nodes

    -
    showing node labels
    Figure 9. showing node labels
    -

      - 

    +
    pub?w=960&h=720
    Figure 9. showing node labels
    +

    layout ("spatialize") the network

    -
    selecting the force atlas 2 layout
    Figure 10. selecting the force atlas 2 layout
    -

      - 

    -
    changing a few parameters and launching the layout
    Figure 11. changing a few parameters and launching the layout
    -

      - 

    -
    result of Force Atlas 2 layout
    Figure 12. result of Force Atlas 2 layout
    -

      - 

    +
    pub?w=960&h=720
    Figure 10. selecting the force atlas 2 layout
    +
    +
    pub?w=960&h=720
    Figure 11. changing a few parameters and launching the layout
    +
    pub?w=960&h=720
    Figure 12. result of Force Atlas 2 layout
    +

    visualize the properties of the nodes

    A network consists in entities and their relations. This is what we just visualized. Yet, the properties of these entities remain invisible.

    For instance: the characters in the novel "Les Misérables" are male or female. Are males more likely to be connected to males, or females? Just looking at the network in Gephi, we can’t tell.

    Now, we will see how to make this property ("Gender") visible.

    -
    Switching the view to the data laboratory
    Figure 13. Switching the view to the data laboratory
    -

      - 

    -
    We see there is a Gender attribute for each character.
    Figure 14. We see there is a Gender attribute for each character.
    -

      - 

    -

    We will color the nodes based on their gender. To do that, we select Gender in the Appearance panel:

    -
    Coloring nodes according to their gender
    Figure 15. Coloring nodes according to their gender
    -

      - 

    -

    The result:

    +
    pub?w=954&h=524
    Figure 13. Switching the view to the data laboratory
    +
    pub?w=758&h=431
    Figure 14. We see there is a Gender attribute for each character.
    +

    We will color the nodes based on their gender. To do that, we select Gender in the Appearance panel:

    +
    pub?w=758&h=431
    Figure 15. Coloring nodes according to their gender
    +

    The result:

    appearance miserables result
    Figure 16. After coloring characters according to their gender
    -

      - 

    +

    prettify the network for enhanced readability

    There are a number of issues with the result we get:

    1. the network is too big or too small, it is hard to read

    2. the labels of the characters overlap

    3. the size of the labels might be too big / small

    4. the links are sometimes too large

    @@ -249,18 +222,13 @@

    2. Prevent the Labels from overlapping

    In the layout panel, choose "Label Adjust" or "Noverlap": these layouts will move the nodes just so that the Labels stop overlapping:

    choosing a label adjust algo en
    Figure 17. Noverlap or Label Adjust will help you
    -

      - 

    -

    Don’t forget to click on "Run" to apply these layouts.

    +

    Don’t forget to click on "Run" to apply these layouts.

    3. Changing the size of the labels

    Open the bottom panel of Gephi by clicking on tiny arrow head (1). Then select "nodes" (2), then move the slider (3).

    -
    Adjusting label size
    Figure 18. Adjusting label size
    -

      - 

    +
    pub?w=758&h=431
    Figure 18. Adjusting label size

    4. Adjusting the thickness of the links

    -
    Adjusting edge thickness
    Figure 19. Adjusting edge thickness
    -

      - 

    +
    pub?w=758&h=431
    Figure 19. Adjusting edge thickness
    +

    computing the centrality of the nodes

    1. Definitions of centrality

    "Centrality" is a very good metrics to first get an idea of a network. @@ -273,77 +241,74 @@

    • First, you have to imagine what is a shortest path.

    • A path from node A to node B is a chain of nodes, the road if you will, that you have to traverse to go from A to B.

    • The shortest path from A to B is the quickest road from A to B: the path that has the smallest number of nodes between A and B.

    • A node which is on many shortest paths is "between" many nodes. And when you realize it, it is a very intuitive sense of what it means to "be central". These nodes have a high betweenness centrality.

    2. Computing betweenness centrality with Gephi

    Gephi computes it for you. Find "Network diameter" in the statistics panel and click "run":

    -
    Computing betweenness centrality
    Figure 20. Computing betweenness centrality
    -

      - 

    -

    This will open a window with parameters (explained in a more advanced tutorials). Click "OK":

    -
    Parameters for the computation of betweenness centrality
    Figure 21. Parameters for the computation of betweenness centrality
    -

      - 

    -

    A report window opens (also explained in a other tutorials). Close it.

    -
    Report after the computation of betweenness centrality
    Figure 22. Report after the computation of betweenness centrality
    -

      - 

    -

    Now we can visualize this information.

    +
    pub?w=758&h=415
    Figure 20. Computing betweenness centrality
    +

    This will open a window with parameters (explained in a more advanced tutorials). Click "OK":

    +
    pub?w=411&h=232
    Figure 21. Parameters for the computation of betweenness centrality
    +

    A report window opens (also explained in a other tutorials). Close it.

    +
    pub?w=300
    Figure 22. Report after the computation of betweenness centrality
    +

    Now we can visualize this information.

    visualize attributes created by Gephi

    Gephi has computed for us the betweenness centrality of all nodes. This remains invisible on the network, however.

    It would be interesting to, say, resize the nodes according to their centrality: the more central a node, the bigger. This would allow for a very quick visual appreciation of which nodes are the most central.

    First, let’s switch to the data laboratory to see how Gephi stored the "betweenness centrality" of each node:

    -
    Switching the view to the data laboratory
    Figure 23. Switching the view to the data laboratory
    -

      - 

    -

    When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"):

    -
    Different centrality measures visible in the data laboratory
    Figure 24. Different centrality measures visible in the data laboratory
    -

      - 

    -

    To resize the nodes according to the value of their betweenness centrality, we use the Appearance panel:

    +
    pub?w=954&h=524
    Figure 23. Switching the view to the data laboratory
    +

    When we ran "Network Diameter" in the statistics panel, Gephi has actually computed many kinds of centralities (not just "betweenness centrality"):

    +
    pub?w=954&h=525
    Figure 24. Different centrality measures visible in the data laboratory
    +

    To resize the nodes according to the value of their betweenness centrality, we use the Appearance panel:

    Caution
    make sure you select the correct options
    -
    Ranking node sizes by centrality
    Figure 25. Ranking node sizes by centrality
    -

      - 

    -
    Selecting the minimum and maximum sizes of nodes
    Figure 26. Selecting the minimum and maximum sizes of nodes
    -

      - 

    +
    pub?w=954&h=525
    Figure 25. Ranking node sizes by centrality
    +
    pub?w=954&h=525
    Figure 26. Selecting the minimum and maximum sizes of nodes
    ranking centrality miserables 3  en
    Figure 27. Result of the ranking
    -

      - 

    -
    Resizing labels to reflect their node's size
    Figure 28. Resizing labels to reflect their node’s size
    -

      - 

    +
    pub?w=954&h=525
    Figure 28. Resizing labels to reflect their node’s size
    result label resizing en
    Figure 29. Result of the label resizing
    -

      - 

    +

    exporting a network as a picture

    1. exporting a screenshot from the Overview (a png image)

    -
    Open the configuration panel for screenshots
    Figure 30. Open the configuration panel for screenshots
    -

      - 

    -

    Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304

    +
    pub?w=954&h=525
    Figure 30. Open the configuration panel for screenshots
    +

    Select the maximum value for anti-aliasing, and multiply values for width and height for higher resolution. For example, resolution x 3 is width = 3072 and height = 2304

    configuration screenshot en
    Figure 31. The configuration panel for screenshots
    -

      - 

    2. exporting a pdf or svg picture

    Let’s switch to the preview panel:

    -
    Switching to the preview panel
    Figure 32. Switching to the preview panel
    -

      - 

    -

    The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. +

    pub?w=954&h=525
    Figure 32. Switching to the preview panel
    +

    The preview panel is dedicated to the preparation of the picture to be exported as a pdf or svg, which are "scalable": in pdf or sv, the resolution of the graph will remain perfect, even with a strong zoom. But as you see, it means the network is now looking different than in the Overview.

    Caution
    contrary to the Overview panel, here you need to hit the "refresh" button after each parameter change.
    -
    Updating the parameters
    Figure 33. Updating the parameters
    -

      - 

    -

    Here I change just 2 parameters: Show Labels and Font (which I reduce to size "5"), to get:

    -
    Result of preview
    Figure 34. Result of preview
    -

      - 

    -

    Export: just click on the button and select the file format you prefer

    -
    Export button
    Figure 35. Export button
    -

      - 

    -

    3. donwload the result file

    +
    pub?w=954&h=525
    Figure 33. Updating the parameters
    +

    Here I change just 2 parameters: Show Labels and Font (which I reduce to size "5"), to get:

    +
    pub?w=954&h=525
    Figure 34. Result of preview
    +

    Export: just click on the button and select the file format you prefer

    +
    pub?w=954&h=525
    Figure 35. Export button
    +

    3. download the result file

    download this zip file if you need to see the network in its final form.

    +

    export a network as a web visualization

    +

    You can easily create a web-based version of your network. It can be made public or private. +If you choose to make it public, it will be easy to share - simply send the url.

    +

    The web version makes use of VOSviewer online, which works best for networks up to ~ 500 nodes (if your networks has more nodes, it can be hard to read on screen).

    +

    To proceed, simply:

    +

    1. export your graph from Gephi as a .gexf file

    +
    Warning
    make sure you export a gexf file, not a GEPHI file!
    +

    In Gephi, do: File → Export → Graph file…​ See an illustration below:

    +
    pub?w=617&h=356
    Figure 36. Export gexf file 1
    +
    pub?w=566&h=348
    Figure 37. Export gexf file 2
    +

    2. visit nocodefunctions and convert the gexf file to a web visualization

    +

    Nocode functions is a web application that I developed. +It provides useful tools to work with networks and text. +It is free, does not need a registration, and is respectful of your data.

    +
    • Go to this page on nocodefunction.

    • Choose option 1 ("convert a Gephi gexf file to VOSviewer json format")

    • If you want to share your visualization, check the box to make it public

    • Click on "Convert to VOSviewer json file"

    +

    You will be directed to a new webpage like the one below:

    +
    vosviewer result
    Figure 38. An illustration of the web view of a gexf file
    +

    3. public or private web visualization? How to manage

    +

    If you have chosen "public" at the previous step you can now bookmark the web page of your network, share it, etc. +Otherwise, the visualization will be deleted after an hour. This is to keep the promise that your data is secure: if you want it private, we simply don’t keep it on the servers.

    +

    What if you want to keep your visualization private, but don’t want to redo all the steps after each hour?

    +
    • in the VOSviewer visualization, save your network as a json file by clicking on the "save" icon:

    +
    pub?w=566&h=348
    Figure 39. Saving the network to a json file from the VOSviewer online interface
    +

    Then, you can re-open this file in the web interface whenever you want:

    +
    +
    pub?w=566&h=348
    Figure 40. Opening a network in the VOSviewer online interface
    +

    4. More options to share your visualization with VOSviewer online

    +

    This web page offers a full view on the other ways you can share a network visualization with VOSviewer online.

    the end

    @@ -361,13 +326,6 @@

    These are layouts which follow the same logic as Force Atlas 2, but with slight variations. Explore how these algorithms result in similar, yet specific layouts.

    1. In this tutorial, we defined degree centrality. Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -ecific layouts.

    -
    1. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -pecific layouts.

    -
    1. In this tutorial, we defined degree centrality. -Can you imagine a situation when a node with the largest degree centrality will actually be in the periphery of the network? You can draw a toy network to help you figure. -y network to help you figure.

      Twitter Streaming Importer

      2017-01-31

      -

      last modified: 2020-11-15

      == !

      +

      last modified: 2021-09-22

      == !

    gephi logo 2010 transparent

       

    @@ -280,25 +280,31 @@

    Extra Scripts

    They use it !

    -
    • Panteion University - Dept. of Communication, Media and Culture

    • Storyful

    • BBC Monitoring

    • Paris II

    • University Aberdeen

    +
    • Panteion University - Dept. of Communication, Media and Culture

    • Storyful

    • BBC Monitoring

    • Paris II

    • University Aberdeen

    • Athens university of economics and business / Οικονομικό Πανεπιστήμιο Αθηνών, Department of Management Science and Technology / Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας

    You can ping @totetmatt on twitter if you wish to expand the list ;)

    The end

    Visit the Gephi group on Facebook to get help,

    or visit the website for more tutorials = The end == !

    -

    Visit the Gephi group on Facebook to get help,

    - -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials - Tweet ids, or the export from Gephi’s TwitterStreamingImporter Plugin and download related Tweet media.

    -

    They use it !

    -
    • Panteion University - Dept. of Communication, Media and Culture

    • Storyful

    • BBC Monitoring

    • Paris II

    • University Aberdeen

    -

    You can ping @totetmatt on twitter if you wish to expand the list ;)

    -

    The end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials += The end +== !

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials += The end +== !

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials += The end +== !

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials += The end +== !

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials

    Using filters

    2017-02-10

    -

    last modified: 2020-11-15

    == !

    -
    gephi logo 2010 transparent
    -

      - 

    -

    download a network file for practice

    -

    download this zip file and unzip it on your computer.

    -

    or use this direct link: https://tinyurl.com/gephi-tuto-3

    -

    You should find the file miserables.gexf in it. Save it in a folder you will remember (or create a folder specially for this small project).

    -

    This file contains a network representing "who appears next to whom" in the 19th century novel Les Misérables by Victor Hugo[1].

    -

    A link between characters A and B means they appeared on the same page or paragraph in the novel.

    -

    The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions.

    -

    open the network in Gephi

    -
    • open Gephi. On the Welcome screen that appears, click on Open Graph File

    • find miserables.gexf on your computer and open it

    -
    gephi welcome screen open graph en
    Figure 1. welcome screen
    -

      - 

    -

    A report window will open, giving you basic info on the network you opened:

    -
    opening file report en
    Figure 2. report window
    -

      - 

    -

    This tells you that the network comprises 74 characters, connected by 248 links.

    -

    Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A.

    -

    The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won’t "move in time".

    -

    Click on OK to see the graph in Gephi.

    -
    result miserables
    Figure 3. The network we will use
    -

      - 

    -

    getting a sense of the attributes in the data laboratory

    -

    We can switch to the data laboratory to see the underlying data:

    -
    Switching to the data laboratory
    Figure 4. Switching to the data laboratory
    -

      - 

    -

    We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are:

    -
    Nodes attributes.
    Figure 5. Nodes attributes.
    -

      - 

    -

    This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength").

    -
    Edges attributes.
    Figure 6. Edges attributes
    -

      - 

    -

    discovering the filter panel

    -

    In the overview, make sure the Filter panel is displayed:

    -
    Making the Filter panel visible.
    Figure 7. Making the Filter panel visible.
    -

      - 

    -

    How the Filter panel works:

    -
    Workflow of filters
    Figure 8. Workflow of filters
    -

      - 

    -

    An example: hiding edges with weight lower than 2

    -
    filter edge weight en
    Figure 9. How to use filters.
    -

      - 

    -

    When you are finished using a filter in the zone, right click on it and select "remove".

    -

    combining 2 filters

    -

    One filter is applied AFTER this other:

    -

    The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"

    -

    Which filter should be placed inside which? Let’s look at different examples:

    -

    1. Case when the placement of filters makes no difference

    -

    Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2.

    -

    → place the filter "edge weight" inside the filter "Gender":

    -
    Filter on the Gender attribute
    Figure 10. Filter on the Gender attribute
    -

      - 

    -
    Filter on edge weight
    Figure 11. Filter on edge weight
    -

      - 

    -
    filter edge weight gender partition en
    Figure 12. Keeping only female characters with at least 2 ties
    -

      - 

    -

    In this case, it was equivalent to:

    -
    • nest the "Gender" filter inside the "Edge weight" filter

    -

    or

    -
    • nest the "Edge weight" filter inside the "Gender" Filter

    -

    → The result was the same (the network on screen is identical in both cases)

    -

    2. Case when the placement of filters makes a difference

    -

    Here, we want to visualize:

    -
    • only the nodes which have less than 10 relations <1>

    • and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2>

    -
    1. in technical terms, nodes with a degree of less than 10.

    2. in technical terms, we are looking for the giant component

    -
    filter degree range 1 en
    Figure 13. Filter on degree
    -

      - 

    -
    filter giant component 1 en
    Figure 14. Filter on giant component
    -

      - 

    -

    We will see that the placement on the filters in the zone will make a difference.

    -

    First, let us place the filter on giant component inside the filter on degree:

    -
    filter order 1 en
    Figure 15. Filters in one configuration
    -

      - 

    -

    In this first case,

    -
    • only the giant component of the network was made visible.

    -

    → Since the network was just one big connected "island" to start with, it did not change a thing.

    -
    • then, all characters with more than 10 relations where hidden

    -

    → this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others.

    -

    Now instead, placing the filter degree inside the filter on giant component:

    -
    filter order 2 en
    Figure 16. Same filters in another configuration
    -

      - 

    -

    In this second case,

    -
    • starting from the complete network, all characters with more than 10 relations where deleted.

    -

    → this created a network made of many disconnected groups of nodes

    -
    • then the giant component filter is applied,

    -

    → which had for effect to hide small groups, to keep in view only the biggest group of connected nodes.

    -
    Warning
    In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering.
    -

    filter operators

    -

    1. The MASK operator

    -

    Imagine you are interested in the female characters of the novel "Les Miserables".

    -
    • you are interested in female characters and the relations among them

    • you are interested in the relations between female characters and male characters

    • you are not interested in the relations between male characters

    -

    How to display this?

    -

    The MASK operator applied on the gender partition filter enables you to:

    -
    • show all characters

    • relations between female characters

    • and relations between male and female characters

    • but masking male-male relations

    -
    operator mask 1 en
    Figure 17. Using the MASK operator
    -

      - 

    -

    It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph:

    -
    operator mask 2 en
    Figure 18. Parameters of the MASK operator
    -

      - 

    -

    2. The UNION operator

    -

    Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables".

    -

    How to display only these characters?

    -

    We will need to apply filters on the Label of the nodes, which contains the names of the characters.

    -

    However, looking at the "catalogue" of filters, we see no filter on Label. The reason is that Label is an internal property of nodes, inaccessible to filters.

    -

    So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on.

    -

    Let’s switch to the data laboratory and add this attribute:

    -
    Adding a column for Names
    Figure 19. Adding a column for Names
    -

      - 

    -
    Copying to this new column
    Figure 20. Copying to this new column
    -

      - 

    -

    We now have an attribute called "Name" that we can find in the Filters:

    -
    New filter available
    Figure 21. New filter available
    -

      - 

    -

    This is how the filter on Name and its parameters look like in the zone:

    -
    filter name 1 en
    Figure 22. Name Filter
    -

      - 

    -

    To recall, we want to show only the characters which name start with "L" or "J". Let’s start with the "L" characters.

    -

    We need to find the names which match the pattern Start with an L. The way to describe a pattern in text is called a "regular expression".

    -

    Said differently, a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text.

    -

    Regular expressions can become very sophisticated. But here, we need just a simple one:

    -
    L.*
    -

    Let’s examine what the L, the dot and the star mean.

    -
    • the letter "L" means we want names starting with this first letter

    • . the dot means: any character

    • * the star means: the previous character, repeated any time.

    -

    So: "select nodes which have a name starting with L, followed by any character, in any number"

    -

    Please note that you need to check the box "regex":

    -
    filter name 2 en
    Figure 23. Using a regular expression in a filter
    -

      - 

    -

    When the filter is applied, only the characters wit a name starting with L will be displayed:

    -
    filter name 3 en
    Figure 24. Using a regular expression in a filter
    -

      - 

    -

    How to filter characters with a name starting with the letter "L" or "J"?

    -

    We could rely on a more complex regular expression to do this:

    -
    [LJ].*
    -

    Meaning: "select nodes which have a name starting with L or J, followed by any characters"

    -

    But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean:

    -

    "show nodes which start with an L, and among them, only those which start with a J"

    -

    → no node can meet this condition, so they would all be invisible.

    -

    Instead, we should use the UNION operator that can be found here:

    -
    filter operator union 1 en
    Figure 25. The UNION operator in filters
    -

      - 

    -

    Drag it to the zone, and then drag inside it twice the Attributes → Equal → Name filter:

    -
    filter operator union 2 en
    Figure 26. The UNION operator and 2 subfilters
    -

      - 

    -

    In the settings of the first Name filter, put the regular expression:

    -
    L.*
    -

    In the second Name filter, put:

    -
    J.*
    -

    (make sure the "regex" box is checked in both cases)

    -

    As a result, the nodes selected by both filters are added up in the display:

    -
    filter operator union 3 en
    Figure 27. The UNION operator and 2 subfilters
    -

      - 

    -

    3. The NOT operator

    -

    The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa.

    -

    Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials:

    -
    filter operator not 3 en
    Figure 28. The NOT nodes operator - 1
    -

      - 

    -

    Same effect, but applying the NOT operator on single filter using a regex on L or J:

    -
    filter operator not 1 en
    Figure 29. The NOT nodes operator - 2
    -

      - 

    -

    Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT":

    -
    [^LJ].*
    -
    filter operator not 2 en
    Figure 30. Achieving a NOT effect with regex
    -

      - 

    -

    Tutorials about regular expressions:

    - -

    And a web page where you can test your regular expressions: http://regexpal.com

    -

    more tutorials on using filters in Gephi

    -
    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials -on using filters by Jen Golbeck]

    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials - on using filters by Jen Golbeck]

    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials -e website for more tutorials] - - -

    site
-    stats
    -

    Using filters

    2017-02-10

    +

    last modified: 2021-09-22

    == !

    +
    gephi logo 2010 transparent
    +

      + 

    +

    download a network file for practice

    +

    download this zip file and unzip it on your computer.

    +

    or use this direct link: https://tinyurl.com/gephi-tuto-3

    +

    You should find the file miserables.gexf in it. Save it in a folder you will remember (or create a folder specially for this small project).

    +

    This file contains a network representing "who appears next to whom" in the 19th century novel Les Misérables by Victor Hugo[1].

    +

    A link between characters A and B means they appeared on the same page or paragraph in the novel.

    +

    The file name ends with ".gexf", which just means this is a text file where the network information is stored (name of the characters, their relations, etc.), following some conventions.

    +

    open the network in Gephi

    +
    • open Gephi. On the Welcome screen that appears, click on Open Graph File

    • find miserables.gexf on your computer and open it

    +
    gephi welcome screen open graph en
    Figure 1. welcome screen
    +

      + 

    +

    A report window will open, giving you basic info on the network you opened:

    +
    opening file report en
    Figure 2. report window
    +

      + 

    +

    This tells you that the network comprises 74 characters, connected by 248 links.

    +

    Links are undirected, meaning that if A is connected to B, then it is the same as B connected to A.

    +

    The report also tells us the graph is not dynamic: it means there is no evolution or chronology, it won’t "move in time".

    +

    Click on OK to see the graph in Gephi.

    +
    result miserables
    Figure 3. The network we will use
    +

      + 

    +

    getting a sense of the attributes in the data laboratory

    +

    We can switch to the data laboratory to see the underlying data:

    +
    Switching to the data laboratory
    Figure 4. Switching to the data laboratory
    +

      + 

    +

    We see that the nodes of the network have many attributes. In particular, each have a Gender and a measure of how central they are:

    +
    Nodes attributes.
    Figure 5. Nodes attributes.
    +

      + 

    +

    This is the list of edges (relations) in the network. Notice that they have a "weight" (a "strength").

    +
    Edges attributes.
    Figure 6. Edges attributes
    +

      + 

    +

    discovering the filter panel

    +

    In the overview, make sure the Filter panel is displayed:

    +
    Making the Filter panel visible.
    Figure 7. Making the Filter panel visible.
    +

      + 

    +

    How the Filter panel works:

    +
    Workflow of filters
    Figure 8. Workflow of filters
    +

      + 

    +

    An example: hiding edges with weight lower than 2

    +
    filter edge weight en
    Figure 9. How to use filters.
    +

      + 

    +

    When you are finished using a filter in the zone, right click on it and select "remove".

    +

    combining 2 filters

    +

    One filter is applied AFTER this other:

    +

    The first filter to be applied is NESTED (placed inside) the second one as a "subfilter"

    +

    Which filter should be placed inside which? Let’s look at different examples:

    +

    1. Case when the placement of filters makes no difference

    +

    Goal: Keeping on screen only the female characters which have a tie (an edge, a relation) of at least strength 2.

    +

    → place the filter "edge weight" inside the filter "Gender":

    +
    Filter on the Gender attribute
    Figure 10. Filter on the Gender attribute
    +

      + 

    +
    Filter on edge weight
    Figure 11. Filter on edge weight
    +

      + 

    +
    filter edge weight gender partition en
    Figure 12. Keeping only female characters with at least 2 ties
    +

      + 

    +

    In this case, it was equivalent to:

    +
    • nest the "Gender" filter inside the "Edge weight" filter

    +

    or

    +
    • nest the "Edge weight" filter inside the "Gender" Filter

    +

    → The result was the same (the network on screen is identical in both cases)

    +

    2. Case when the placement of filters makes a difference

    +

    Here, we want to visualize:

    +
    • only the nodes which have less than 10 relations <1>

    • and among these, only those which form the "main island" of the network (we want to hide small detached groups of nodes) <2>

    +
    1. in technical terms, nodes with a degree of less than 10.

    2. in technical terms, we are looking for the giant component

    +
    filter degree range 1 en
    Figure 13. Filter on degree
    +

      + 

    +
    filter giant component 1 en
    Figure 14. Filter on giant component
    +

      + 

    +

    We will see that the placement on the filters in the zone will make a difference.

    +

    First, let us place the filter on giant component inside the filter on degree:

    +
    filter order 1 en
    Figure 15. Filters in one configuration
    +

      + 

    +

    In this first case,

    +
    • only the giant component of the network was made visible.

    +

    → Since the network was just one big connected "island" to start with, it did not change a thing.

    +
    • then, all characters with more than 10 relations where hidden

    +

    → this hides nodes which were connecting with many others, so that we end up with many groups, disconnected from each others.

    +

    Now instead, placing the filter degree inside the filter on giant component:

    +
    filter order 2 en
    Figure 16. Same filters in another configuration
    +

      + 

    +

    In this second case,

    +
    • starting from the complete network, all characters with more than 10 relations where deleted.

    +

    → this created a network made of many disconnected groups of nodes

    +
    • then the giant component filter is applied,

    +

    → which had for effect to hide small groups, to keep in view only the biggest group of connected nodes.

    +
    Warning
    In summary: be careful how you apply several filters at once, this might have an effect on the logic of filtering.
    +

    filter operators

    +

    1. The MASK operator

    +

    Imagine you are interested in the female characters of the novel "Les Miserables".

    +
    • you are interested in female characters and the relations among them

    • you are interested in the relations between female characters and male characters

    • you are not interested in the relations between male characters

    +

    How to display this?

    +

    The MASK operator applied on the gender partition filter enables you to:

    +
    • show all characters

    • relations between female characters

    • and relations between male and female characters

    • but masking male-male relations

    +
    operator mask 1 en
    Figure 17. Using the MASK operator
    +

      + 

    +

    It is also possible to hide / show only some of the directed relations between the visible graph and the filtered out graph:

    +
    operator mask 2 en
    Figure 18. Parameters of the MASK operator
    +

      + 

    +

    2. The UNION operator

    +

    Imagine you are interested in the characters with names starting with "L" or "J" in "Les Miserables".

    +

    How to display only these characters?

    +

    We will need to apply filters on the Label of the nodes, which contains the names of the characters.

    +

    However, looking at the "catalogue" of filters, we see no filter on Label. The reason is that Label is an internal property of nodes, inaccessible to filters.

    +

    So we must first copy the Labels of the nodes in a new attribute, which we will be able to apply a filter on.

    +

    Let’s switch to the data laboratory and add this attribute:

    +
    Adding a column for Names
    Figure 19. Adding a column for Names
    +

      + 

    +
    Copying to this new column
    Figure 20. Copying to this new column
    +

      + 

    +

    We now have an attribute called "Name" that we can find in the Filters:

    +
    New filter available
    Figure 21. New filter available
    +

      + 

    +

    This is how the filter on Name and its parameters look like in the zone:

    +
    filter name 1 en
    Figure 22. Name Filter
    +

      + 

    +

    To recall, we want to show only the characters which name start with "L" or "J". Let’s start with the "L" characters.

    +

    We need to find the names which match the pattern Start with an L. The way to describe a pattern in text is called a "regular expression".

    +

    Said differently, a regular expressions (also called "regex") is a convenient way to express a pattern we search for in a text.

    +

    Regular expressions can become very sophisticated. But here, we need just a simple one:

    +
    L.*
    +

    Let’s examine what the L, the dot and the star mean.

    +
    • the letter "L" means we want names starting with this first letter

    • . the dot means: any character

    • * the star means: the previous character, repeated any time.

    +

    So: "select nodes which have a name starting with L, followed by any character, in any number"

    +

    Please note that you need to check the box "regex":

    +
    filter name 2 en
    Figure 23. Using a regular expression in a filter
    +

      + 

    +

    When the filter is applied, only the characters wit a name starting with L will be displayed:

    +
    filter name 3 en
    Figure 24. Using a regular expression in a filter
    +

      + 

    +

    How to filter characters with a name starting with the letter "L" or "J"?

    +

    We could rely on a more complex regular expression to do this:

    +
    [LJ].*
    +

    Meaning: "select nodes which have a name starting with L or J, followed by any characters"

    +

    But we can also rely on 2 filters: one for L, one for J. Nesting one inside another would not work, it would mean:

    +

    "show nodes which start with an L, and among them, only those which start with a J"

    +

    → no node can meet this condition, so they would all be invisible.

    +

    Instead, we should use the UNION operator that can be found here:

    +
    filter operator union 1 en
    Figure 25. The UNION operator in filters
    +

      + 

    +

    Drag it to the zone, and then drag inside it twice the Attributes → Equal → Name filter:

    +
    filter operator union 2 en
    Figure 26. The UNION operator and 2 subfilters
    +

      + 

    +

    In the settings of the first Name filter, put the regular expression:

    +
    L.*
    +

    In the second Name filter, put:

    +
    J.*
    +

    (make sure the "regex" box is checked in both cases)

    +

    As a result, the nodes selected by both filters are added up in the display:

    +
    filter operator union 3 en
    Figure 27. The UNION operator and 2 subfilters
    +

      + 

    +

    3. The NOT operator

    +

    The NOT operator flips the result of a filter: what was hidden becomes visible and vice and versa.

    +

    Example: if we want to display all characters except for those returned by a UNION on 2 Name filters on L and J initials:

    +
    filter operator not 3 en
    Figure 28. The NOT nodes operator - 1
    +

      + 

    +

    Same effect, but applying the NOT operator on single filter using a regex on L or J:

    +
    filter operator not 1 en
    Figure 29. The NOT nodes operator - 2
    +

      + 

    +

    Same effect again, achieved without using the NOT operator. In regular expressions the ^ sign inside square brackets means "NOT":

    +
    [^LJ].*
    +
    filter operator not 2 en
    Figure 30. Achieving a NOT effect with regex
    +

      + 

    +

    Tutorials about regular expressions:

    + +

    And a web page where you can test your regular expressions: http://regexpal.com

    +

    more tutorials on using filters in Gephi

    +
    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials +on using filters by Jen Golbeck]

    +

    the end

    +

    Visit the Gephi group on Facebook to get help,

    +

    or visit the website for more tutorials + + +

    site
+    stats
    +

    \ No newline at end of file diff --git a/docs/generated-slides/what-is-gephi-en.html b/docs/generated-slides/what-is-gephi-en.html index ade673e..f9fcb97 100644 --- a/docs/generated-slides/what-is-gephi-en.html +++ b/docs/generated-slides/what-is-gephi-en.html @@ -144,7 +144,7 @@ link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? "reveal.js-3.9.2/css/print/pdf.css" : "reveal.js-3.9.2/css/print/paper.css"; document.getElementsByTagName( 'head' )[0].appendChild( link );

    What is Gephi?

    2017-01-20

    -

    last modified: 2020-11-15

    == !

    +

    last modified: 2021-09-22

    == !

    gephi logo 2010 transparent

       

    @@ -161,9 +161,11 @@
    • Gephi is "cut" in a large number of modules, each providing a specific function. This makes it easier to maintain and evolve the software, by working on independent parts.

    • Since version 0.9 the "graph store" of Gephi has become a completely independent module: it can be reused by another software.

    • Anybody can create new modules for Gephi! They are called "plugins". They integrate with Gephi seamlessly.

    created, maintained and documented by volunteers, for the community.

    • Gephi itself is open source and free

    • The Gephi Consortium was created to ensure Gephi will remain so

    • The original contributors and their followers are volunteers

    • The support to users through forums, discussion groups and documents is provided for free. -for free. -for free. -uments] is provided for free. + free. + free. + free. + free. + free.

      Working from Gephi’s source

      2017-02-28

      -

      last modified: 2020-11-15

      == !

      +

      last modified: 2021-09-22

      == !

    gephi logo 2010 transparent

       

    @@ -246,11 +246,16 @@

    the end

    Visit the Gephi group on Facebook to get help,

    or visit the website for more tutorials -hi group on Facebook] to get help,

    -

    or visit the website for more tutorials - group on Facebook] to get help,

    -

    or visit the website for more tutorials -ls/[the website for more tutorials] +i group on Facebook] to get help,

    +

    or visit the website for more tutorials +i group on Facebook] to get help,

    +

    or visit the website for more tutorials +i group on Facebook] to get help,

    +

    or visit the website for more tutorials +i group on Facebook] to get help,

    +

    or visit the website for more tutorials +i group on Facebook] to get help,

    +

    or visit the website for more tutorials

    Working with text in Gephi

    2017-03-07

    -

    last modified: 2020-11-15

    == !

    +

    last modified: 2021-09-22

    == !

    gephi logo 2010 transparent

       

    @@ -267,7 +267,9 @@

    If two terms are very frequent, is their co-occurrence really of interest?
    \$PMI = log((p(A, B)) /(p(A) p(B)))\$

    We now have nodes and their relations: a semantic network. Let’s see now how to visualize it in Gephi.

    Visualizing semantic networks with Gephi

    -

    1. Downloading a dataset for this tutorial

    +

    1. Creating a semantic network by yourself

    +

    You can convert any text into a network with Cowo, an online tool on the Nocodefunctions webapp [disclaimer: I created Cowo and Nocodefunctions].

    +

    2. Or, download a dataset for this tutorial

    We need a dataset to practice. This is a semantic network of 250 terms and 19,613 relations:

    download this zip file and unzip it on your computer.

    The network was built from the short summaries ("abstracts") of 1484 research articles from the PubMed database of scientific reports, retrieved by conducting this query:

    @@ -280,7 +282,7 @@

    If two terms are very frequent, is their co-occurrence really of interest?

       

    Several steps will make this network intelligible

    -

    2. Managing labels size and colors

    +

    3. Managing labels size and colors

    1. Showing the labels of the nodes:

    showing node labels
    Figure 3. showing node labels

      @@ -303,7 +305,7 @@

    If two terms are very frequent, is their co-occurrence really of interest?
    Coloring nodes   second step
    Figure 7. Coloring nodes - second step

       

    -

    3. Tuning the spatialization

    +

    4. Tuning the spatialization

    1. Spatializing the network with Force Atlas 2 will place related terms next to each other, because they co-occur:

    Some parameters have been modified:

    @@ -318,7 +320,7 @@

    If two terms are very frequent, is their co-occurrence really of interest?
    semantic spatializing 3 en
    Figure 10. Spreading labels

       

    -

    4. Exporting an image of the network

    +

    5. Exporting an image of the network

    1. Switching to the preview panel

      • A number of parameters must be modified (to show Labels, hide edges, etc.)

    semantic preview 1 en
    Figure 11. The preview panel
    @@ -327,30 +329,13 @@

    If two terms are very frequent, is their co-occurrence really of interest?

    The network is now ready to be exported to pdf, png or svg file formats.

    More tutorials on working with semantic networks

    Other software / web apps to visualize texts as networks:

    -
    +

    the end

    Visit the Gephi group on Facebook to get help,

    - -

    or visit the website for more tutorials -r visit the website for more tutorials -r visit the website for more tutorials -== ! -==== 4. Exporting an image of the network -== !

    -
    1. Switching to the preview panel

      • A number of parameters must be modified (to show Labels, hide edges, etc.)

    -
    semantic preview 1 en
    Figure 12. The preview panel
    -

      -  -  -  - 

    -

    The network is now ready to be exported to pdf, png or svg file formats.

    -

    More tutorials on working with semantic networks

    -

    Other software / web apps to visualize texts as networks:

    -
    -

    the end

    -

    Visit the Gephi group on Facebook to get help,

    -

    or visit the website for more tutorials +

    or visit the website for more tutorials +or visit the website for more tutorials +or visit the website for more tutorials +or visit the website for more tutorials