Code Monkey home page Code Monkey logo

graphstore's Introduction

Gephi - The Open Graph Viz Platform

build Downloads Downloads Translation progress

Gephi is an award-winning open-source platform for visualizing and manipulating large graphs. It runs on Windows, Mac OS X and Linux. Localization is available in English, French, Spanish, Japanese, Russian, Brazilian Portuguese, Chinese, Czech, German and Romanian.

  • Fast Powered by a built-in OpenGL engine, Gephi is able to push the envelope with very large networks. Visualize networks up to a million elements. All actions (e.g. layout, filter, drag) run in real-time.

  • Simple Easy to install and get started. An UI that is centered around the visualization. Like Photoshop™ for graphs.

  • Modular Extend Gephi with plug-ins. The architecture is built on top of Apache Netbeans Platform and can be extended or reused easily through well-written APIs.

Download Gephi for Windows, Mac OS X and Linux and consult the release notes. Example datasets can be found on our wiki.

Gephi

Install and use Gephi

Download and Install Gephi on your computer.

Get started with the Quick Start and follow the Tutorials. Load a sample dataset and start to play with the data.

If you run into any trouble or have questions consult our discussions.

Latest releases

Stable

Development builds

Development builds are generated regularly. Current version is 0.10.2-SNAPSHOT

Developer Introduction

Gephi is developed in Java and uses OpenGL for its visualization engine. Built on the top of Netbeans Platform, it follows a loosely-coupled, modular architecture philosophy. Gephi is split into modules, which depend on other modules through well-written APIs. Plugins can reuse existing APIs, create new services and even replace a default implementation with a new one.

Consult the Javadoc for an overview of the APIs.

Requirements

  • Java JDK 11 (or later)

  • Apache Maven version 3.6.3 or later

Checkout and Build the sources

  • Fork the repository and clone

      git clone [email protected]:username/gephi.git
    
  • Run the following command or open the project in an IDE

      mvn -T 4 clean install
    
  • Once built, one can test running Gephi

      cd modules/application
      mvn nbm:cluster-app nbm:run-platform
    

Note that while Gephi can be built using JDK 11 or later, it currently requires JDK 11 to run.

Create Plug-ins

Gephi is extensible and lets developers create plug-ins to add new features, or to modify existing features. For example, you can create a new layout algorithm, add a metric, create a filter or a tool, support a new file format or database, or modify the visualization.

Gephi Toolkit

The Gephi Toolkit project packages essential Gephi modules (Graph, Layout, Filters, IO…) in a standard Java library which any Java project can use for getting things done. It can be used on a server or command-line tool to do the same things Gephi does but automatically.

Localization

We use Weblate for localization. Follow the guidelines on the wiki for more details how to contribute.

Icons

Gephi uses icons from various sources. The icons are licensed under the CC BY 3.0 license.

All icons can be found in the DesktopIcons module, organised by module name.

License

Gephi main source code is distributed under the dual license CDDL 1.0 and GNU General Public License v3. Read the Legal FAQs to learn more.

Copyright 2011 Gephi Consortium. All rights reserved.

The contents of this file are subject to the terms of either the GNU General Public License Version 3 only ("GPL") or the Common Development and Distribution License ("CDDL") (collectively, the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the License at http://gephi.github.io/developers/license/ or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License files at /cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: "Portions Copyrighted [year] [name of copyright owner]"

If you wish your version of this file to be governed by only the CDDL or only the GPL Version 3, indicate your decision by adding "[Contributor] elects to include this software in this distribution under the [CDDL or GPL Version 3] license." If you do not indicate a single choice of license, a recipient has the option to distribute your version of this file under either the CDDL, the GPL Version 3 or to extend the choice of license to its licensees as provided above. However, if you add GPL Version 3 code and therefore, elected the GPL Version 3 license, then the option applies only if the new code is made subject to such option by the copyright holder.

graphstore's People

Contributors

dependabot[bot] avatar eduramiba avatar gerwinjansen avatar mbastian avatar trajar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

graphstore's Issues

Remove timestamp index indirection in TimestampSet and TimestampMap

This system should be kept in the Timestamp indices so keys can remain array indices but it adds to much overhead in the TimestampSet and TimestampMap classes. We shall directly use the (double) timestamp instead of the timestamp index. This will simplify the implementation and remove the index lookup in many places. It will also allow to keep the set/map sorted by timestamp rather than sorted by index, which will speed up some operations (e.g. estimators). Using double keys instead of integers will use twice more memory but I think it's worth for the speed and simplicity gain.

Reorganize packages

Simplify packages so only the following five remains:

  • org.gephi.graph.api
  • org.gephi.graph.api.types
  • org.gephi.graph.spi
  • org.gephi.graph.impl
  • org.gephi.graph.impl.utils

Introduce deepEquals/deepHashCode paradigm to guarantee immutability

Multiple internal implementations (TableImpl, NodeStore, GraphViewImpl) override equals() and hashcode() but shouldn't as these objects aren't immutable and could potentially be used as keys in hash tables. In most cases, this is only needed for testing purposes (e.g. serialization tests) and could easily be replaced by deepEquals/deepHashCode.

Graphstore currently can't be used with the graph-streaming plugin

Hi,

I've been working on some software that constructs graphs using graphstore. I also want to
use the graph-streaming plugin/libraries in my software, to be able to stream the graphs I'm building to Gephi clients. It seems like it is possible for me to swap out graphstore with the org.graph packages in gephi-toolkit. However, it still seems to be an issue that there are naming conflicts by having duplicate "org.graph" package names in projects from the gephi group. It also feels like it is the intention to have graphstore 'replace' org.graph in the toolkit, but hasn't been finished yet. I'm just generally confused because I don't know how efficient org.graph from the toolkit might be compared to graphstore and so on and so forth; there are differences, such as not having GraphListener and GraphEvent, which made me unable to use it in my project.

Better handling in EdgeImpl with static/dynamic getWeight() usage

Edges can either have a static or a dynamic weight. A static weight is simply a double number and has a default value of 1.0. Dynamic weights are associated to timestamps and set by using setWeight(double, double). We enforce the usage of one or the other so it shouldn't be possible to get the static weight after a dynamic weight has been set and vice-versa.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.