Giter Site home page Giter Site logo

liujichao-ljc / grakel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ysig/grakel

0.0 0.0 0.0 20.61 MB

A scikit-learn compatible library for graph kernels

Home Page: https://ysig.github.io/GraKeL/dev/

License: Other

Batchfile 0.40% Shell 0.74% Python 72.19% C++ 25.94% C 0.72%

grakel's Introduction

GraKeL: A library for graph kernels

Pypi Versions Coverage Status Travis Status Appveyor status CircleCI Status

GraKeL is a library compatible with the project of scikit-learn

Installation

The GraKeL library requires:

  • Python (>=2.7, >=3.5)
  • NumPy (>=1.8.2)
  • SciPy (>=0.13.3)
  • Cython (>=0.27.3)
  • cvxopt (>=1.2.0) [optional: lovasz]
  • future (>=0.16.0) (for python 2.7)

Installing Dependencies

You can install the dependencies as follows:

$ pip install extension>=extension_version

or

$ pip install -r requirements.txt

Installing the development-version

To install the development-version using pip execute:

$ pip install grakel-dev

Getting Started

To learn how to use the GraKeL api as a user, please read the documentation on sections Introduction and A longer introduction (in case your are full of curiosity).

Initialise a Kernel

from grakel import GraphKernel
wl_subtree = GraphKernel(kernel=['WL', 'ST-WL'], normalize=True)

Provide Input

  • Custom Input

    H2O = [[(0, 1), (0, 2), (2, 0), (1, 0)], # Directed Graph
           {0: 'O', 1: 'H', 2: 'H'}] # Node Labels
    H3O = [[(0, 1), (0, 2), (0, 3), (3, 0), (2, 0), (1, 0)], # Directed Graph
           {0: 'O', 1: 'H', 2: 'H', 3:'H'}]] # Node Labels
    X = [H2O, H3O] # List of Graph-Like Objects
  • Download a Dataset

    from grakel.datasets import fetch_dataset
    MUTAG = fetch_dataset("MUTAG")
    X = MUTAG.data # MUTAG.target contains class labels

Calculate Kernel Matrix

   K = wl_subtree.fit_transform(X) # len(X) x len(X): symmetric

Testing

You first need to build the package's c++ extensions locally by executing:

$ python setup.py build_ext -i

To test the package, execute:

$ nosetests

For executing unit_tests or use a testing-interface for testing the kernel module:

$ python  grakel/tests/test_kernels.py --help
usage: test_kernels.py [-h] [--verbose] [--problematic] [--slow]
                       [--ignore_warnings] [--dataset DATASET] [--normalize]
                       [--develop | --all | --main]

A test file for all kernels

optional arguments:
  -h, --help         show this help message and exit
  --verbose          print kernels with their outputs on stdout
  --problematic      allow execution of problematic test cases in development
  --slow             allow execution of slow test cases in development
  --ignore_warnings  ignore warnings produced by kernel executions
  --dataset DATASET  chose the datset you want the tests to be executed
  --normalize        normalize the kernel output
  --develop          execute only tests connected with current development
  --all              execute all tests
  --main             execute the main tests [default]

For testing graph_kernels:

$ python grakel/tests/test_graph_kernel.py --help
usage: test_graph_kernels.py [-h] [--verbose] [--problematic] [--slow]
                             [--normalize] [--ignore_warnings]
                             [--dataset DATASET] [--develop | --all | --main]

A test file for all kernels

optional arguments:
  -h, --help         show this help message and exit
  --verbose          print kernels with their outputs on stdout
  --problematic      allow execution of problematic test cases in development
  --slow             allow execution of slow test cases in development
  --normalize        normalize the kernel output
  --ignore_warnings  ignore warnings produced by kernel executions
  --dataset DATASET  chose the datset you want the tests to be executed
  --develop          execute only tests connected with current development
  --all              execute all tests
  --main             execute the main tests [default]

And for testing the Graph class:

$ python grakel/tests/test_graph.py --help
usage: test_graph.py [-h] [--verbose] [--ignore_warnings]

A test file for all `Graph` type objects

optional arguments:
  -h, --help         show this help message and exit
  --verbose          verbose outputs on stdout
  --ignore_warnings  ignore warnings produced by kernel executions

You can also execute the kernel test locally through a test-main-function as

$ python -m grakel.tests

Contributing

To learn how to integrate your own kernel and how to contribute to the GraKeL project, please read the sections Write your own kernel and Contributing in the Documentation, respectively.

License

GraKeL comes with a BSD 3-clause license (as with scikit-learn). It contains the C++ source code of BLISS (a library for graph isomorphism) which is LGPL licensed. Futhermore its optional dependency in the package of cvxopt (a tool for solving convex-optimization problems) comes with a GPL license.

Citation

If you use GraKeL in a scientific publication, please cite our paper:

@article{siglidis2018grakel,
  title={GraKeL: A Graph Kernel Library in Python},
  author={Siglidis, Giannis and Nikolentzos, Giannis and Limnios, Stratis and Giatsidis, Christos and Skianis, Konstantinos and Vazirgiannis, Michalis},
  journal={arXiv preprint arXiv:1806.02193},
  year={2018}
}

grakel's People

Contributors

arokem avatar bryandeng avatar fabianp avatar giannisnik avatar kjacks21 avatar mechcoder avatar ramaroberto avatar tomdlt avatar vighneshbirodkar avatar ysig avatar

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.