Home - GraphFilter/GraphFilter GitHub Wiki

Graph Filter
Welcome to Graph Filter Wiki!

Graph Filter is a program with tools that help the study of Graph Theory and Graph's Spectral Theory. The software has the purpose of filtering a list of graphs through conditions customized by the user, without requiring any programming knowledge. After the process, the filtered graphs are returned and the user can analyze them according to his scientific research. This user will have access to plot of the graphs and the calculation of several invariants, at the user's choice.

Development

This project is an upgrade of another project that was primarily made in C# Programming Language, GraphFilter v1.0. The first version of the implemented project worked as expected, and the continuation of the project only aimed to upgrade what was already done. At a first sight what the project needed was:

  • Implement a better way to filter the results in a faster way
  • Add more options to calculations upon the graphs
  • Generate executable files to Operation Systems other than Microsoft Windows

Unfortunately, some issues got in the way. The first problem that had to be solved was about how to implement more calculations to the program. The most important libraries that implements graphs calculations are built in Python, and re-implement them would take too much time and probably would not be so optimized as consolidate libraries. Those libraries does not exist in C#.

A first try was to embed Python code inside C#, with solutions like IronPython or Pythonnet, or even call python scripts inside C#. But these solutions had a lot of fallbacks that would hold the project too much, and in the future would prevent the project to scale. So the most reasonable solution was to re-implement the entire project in Python.

Why Python?

Python is a Programing Language with a huge community, easy to use and very powerful. It's the most indicate language to use to solve math problems, because it is based in a low level programming language, C++, so it is capable to make calculations faster. The scope of the project required the problem to filter the graphs faster, and give more calculations options, and Python could offer them both.

The project already had a software interface, and in C# is easy to build because of the program that allows us to drag and drop components in the screen and it self-generate the code behind. To speed up the re-implementation, the search was for a library that already had this option. PyQt is an library to build embed software interfaces that is based on Qt, from C++. Even that it had the interface that allow us do drag and drop components, for being so simple to use, it was preferable to code the components by hand. Not only for being simple, but also because it gave us much more freedom to modify the project.

User Interface

As we had to re-implement the interface, we first re-design it entirely. For that, we used Balsamiq free account to mock up the screens. It was important to design the interface before actually coding it, because we could discuss if a screen was a good solution and would avoid wasting time undoing everything in case the idea turned up to be bad. It saved us a lot of time.

⚠️ **GitHub.com Fallback** ⚠️