Skip to content

The main goal of this software is to give assistance to Graph Theory and Spectral Graph Theory researchers to establish or refute conjectures quickly and simply, providing for visualization a filtered list of graphs according to the properties given by the user.

License

Notifications You must be signed in to change notification settings

lichengzhang2/GraphFilter

 
 

Repository files navigation

Graph Filter
Graph Filter

DOI

Software for manipulating and searching graphs.

AboutFeaturesUsed LibrariesInstallationGetting StartedMoreLicense

About

The main goal of this software is to give assistance to Graph Theory and Spectral Graph Theory researchers to establish or refute conjectures quickly and simply, providing for visualization a filtered list of graphs according to the properties given by the user.

This project is a reimplementation in python of GraphFilter project in order to provide more functionalities to the software, in addition to better performance.

The Graph Filter is a software to help graph researchers, with a simple and intuitive interface. It allows you to draw, save and manipulate graphs with the mouse and keyboard. It provides more than 170 invariants (spectral and structural) and some graph operations, which are calculated in a few clicks.

Another purpose of the software is to filter graphs: the user enters conditions and equations, attaches a list of up to thousands of graphs, then the program filters the graphs that meet the conditions. An important tool for drawing up results and finding counterexamples. You can also export the graphs in different formats.

The program is supported by any Windows, Linux and Mac. No installation is required, just download and run.

Features

  • Filter graphs with conditions customizable by the user;
  • Visualization of filtered graphs, with calculation of invariants.
  • The filtered graphs can be exported to different file formats.
  • Intuitive layout, does not require programming knowledge;
  • Support for several graph invariants;
  • It helps the researcher in Graphs to test conjectures and results.
  • Visualize, draw and manipulate Graphs
  • Create well-known Graph layouts
  • Manipulate files with an tree file manager

Used libraries

Calculations of invariants GUI development Utilities
Networkx PyQt5 Matplotlib
Grinpy Netgraph network2tikz
Numpy simpleeval

Installation

You can run the program from an executable file or from the source code.

Run from an executable (release)

Download the compact file from the release that matches your Operational System.

Run from source code

To run from the source code, you have to:

  • Install Python and Pip.
  • Clone this project using git or Download the source code from the release
  • Create and activate a Virtual Environment (optional)
  • Install the requirements
  • Then, run the app.py from the project's source folder

You can see more details about these steps clicking here

Getting started

When opening the program, at the first page start a new project clicking on the New Project button.

When starting a new project, you will be guided through a wizard to select the filtering conditions.

First, choose the Project Name and the Project Location.

At the Equations page, insert the equation you want to use to filter graphs.

You can insert the (in)equations involving the invariants and operationsof your choice, using either the keyboard or the buttons to assist in the insertion. You can also leave it empty, but in the next step you will have to choose a least one Condition to filter.

Choose a condition to the filter

You can check the Boolean conditions you want to impose on your filtering. When you mark TRUE on an invariant, the program will only filter those that satisfy the condition. Respectively check FALSE if you do not want graphs that satisfy that condition. If you are indifferent, just don't check that invariant.

Choose the method to filter

The user decides which filtering method: if he wants to filter all the graphs, among his input list, that satisfy the imposed conditions. Or if you prefer, just look if there is a graph that does not satisfy those conditions, useful for trying to refute conjectures.

Input the files with the graphs you want to filter

Here you can load the graphs for filtering. The file format of the entry is .g6 or .txt containing a list of graphs in graph6. Note that the user can insert more than one file.

Graph6 is a compact format file, created by D. McKay. But you do not have to understand how this fortat works. You can find files in this format for different classes of graphs on the pages:

This pages will let you choose the kind of graphs you want, and then export in Graph6 format for you.


After these steps, the program will analyze all the conditions and the filtering will be performed. When finished, a window will open for viewing and analyzing each graph returned in the filtering.

Project Main Window

Here you can visualize, draw and manipulate the graph on the screen. There is also a List of invariants to be calculated in the displayed graph, just mark the desired invariants and they will appear in the Info dock, which can be resized or even seen as a separate window, for a better visualization. In the dictionary tab you can see a short definition of each invariant implemented in the program.

To navigate between the graphs returned from the filtering or opened from a .g6, .txt file, you can use the combo box or navigation arrows at the top of the window.

Tool Bar

The toolbar gives you access to some of the software's features, such as applying certain operations, exporting, inserting a universal vertex, saving the edited graph or deleting it. These functions refer to the graph on the screen. You can also create a new well-known used graph to work with the software. In the dictionary tab, you can see all the new graphs options with their definitions and parameters.

File Tree

In the left-hand corner you can see a tree of files, opened in the directory previously selected in Open or New Project. In the tree you can double-click with the left button to open the folder or file, or right-click to display the menu with the following options:

  • Load File: This will load the file into the window, if they are graphs they will be plotted.
  • Export all graphs: Export all the graphs in the file in one of the selected file types.
  • Delete: Delete the file or empty folder

File Types and Exports

The software accepts the following file types:

  • .g6 and .txt : Responsible for storing a list of graphs.
  • .gml: Able to store just one graph, but in more detail, such as the position of the vertices.
  • .json: The result of the old way the software worked, there are still json files that store a list of graphs, but this type will be deprecated.

The software can export graphs in the following file types:

When export is selected via the tool bar only the open graph will be exported, whereas when the export option is selected via the tree all the graphs in the file will be exported.

  • Graph(.gml),
  • Graph6(.g6 ou .txt),
  • Image(.png ou .pdf),
  • Latex Tikz(.tex), or
  • Sheets with invariants (.xlsx

In the case of files exported in .xlsx, the numerical and boolean data from the information dock will be exported to the table.

More

For further information on how to use the program, please go to the Wiki page.

⚖️ License

GNU General Public License v3.0

About

The main goal of this software is to give assistance to Graph Theory and Spectral Graph Theory researchers to establish or refute conjectures quickly and simply, providing for visualization a filtered list of graphs according to the properties given by the user.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%