-
-
Notifications
You must be signed in to change notification settings - Fork 370
GSoC 2020 Implement Boyer Myrvold Planarity Testing and Make Connected in pgRouting
- Proposal
- Participants
-
Timeline
- Community Bonding Period (May 4th - June 1st)
- First Coding Period (June 1st - June 29th)
- Second Coding Period (June 29th - July 27th)
- Third Coding Period (July 27th - August 24th)
- Log of Pull Requests
- Slides
- Final Report
- Weekly Reports
- Third Evaluation Period (July 27th - August 24th)
- Second Evaluation Period (June 29th - July 27th)
- First Evaluation Period (June 1st - June 29th)
- Meeting Discussions
- Community Bonding Period (May 4th - June 1st)
- Pre-Bonding Period (February 25th - March 31st)
- References
- Boost::boyer_myrvold_planarity_test A graph is planar if it can be drawn in two-dimensional space with no two of its edges crossing. Such a drawing of a planar graph is called a plane drawing. Every planar graph also admits a straight-line drawing, which is a plane drawing where each edge is represented by a line segment. When a graph has K5 or K3,3 as subgraph then the graph is not planar. This algorithm is only applicable for undirected graphs. It has a linear time complexity of O(|V|).
- Boost::make_connected Adds the minimum number of edges needed to make the input graph connected. The algorithm first identifies all of the connected components in the graph, then adds edges to connect those components together in a path. For example, if a graph contains three connected components A, B, and C, make_connected will add two edges. The two edges added might consist of one connecting a vertex in A with a vertex in B and one connecting a vertex in B with a vertex in C. This algorithm is only applicable for undirected graphs. It has a linear time complexity of O(|V| + |E|).
I propose to add the above two algorithms to pgRouting during the GSoC period.
- pgRouting currently does not have these algorithms implemented.
- Implementation of
pgr_isPlanar()
for pgRouting. - Implementation of
pgr_makeConnected()
for pgRouting. - Documentation, test, pgTap of above implemented functions.
Title | GitHub Handle | Name |
---|---|---|
1st Mentor | @cvvergara | Vicky Vergara |
2nd Mentor | @dkastl | Daniel Kastl |
Student Developer | @rajhim2 | Himanshu Raj |
- Set up the development environment.
- Interact with mentors, introduce myself to the community, and actively get involved in the discussion.
- Make a wiki page for setting up TODO lists and weekly reports.
- Getting familiar with the community, the BGL docs.
- Get familiar with the PgRouting architecture.
- Develop a better understanding of PostgreSQL, PostGIS, Pl/pgSQL, and how they interact with pgRouting.
- Get familiar with postgreSQL procedural language.
- Go through pgTap to create unit tests for PostgreSQL.
- Learn to create unit tests using pgTap.
- Implement simple dummy functions to better understand pgRouting.
Note: Due to COVID-19 our Institute exams have been shifted. After discussing with mentors I have planned to complete some work of the official coding period in the community bonding period. So I will be having some buffer time when exams are held.
- Developing
pgr_isPlanar()
starts. - Create a basic skeleton for C, C++, SQL code, and for documentation and tests.
- Prepare user documentation.
- Read data from PostgreSQL.
- Transform results to C++ containers suitable for using with Boost.
- Create the necessary class wrappers for the Boost function.
- Process the data with the Boost function.
- Transform results to C containers suitable for passing to PostgreSQL.
- Prepare user documentation.
- Create suitable queries using the sample data of the pgRouting documentation.
- Create the first term report.
- Work on feedback provided from the first evaluation.
- Developing
pgr_makeConnected()
starts. - Create a basic skeleton for C, C++, SQL code, and for documentation and tests.
- Read data from PostgreSQL.
- Transform data to C++ containers suitable for using with Boost.
- Create the necessary class wrappers for the Boost function.
- Process the data with the Boost function.
- Transform results to C containers suitable for passing to PostgreSQL.
- Prepare user documentation.
- Create suitable queries using the sample data of the pgRouting documentation.
- Create the first term report.
- Work on feedback provided from the second evaluation.
- Tests for function
pgr_isPlanar()
.- create pgTap tests to check no server crash.
- create pgTap unit tests for expected results for different small graphs:
- one vertex graph
- one edge graph
- two edge graph
- cycle graph with 3 edges
- Tests for function
pgr_makeConnected()
.- create pgTap tests to check no server crash.
- create pgTap unit tests for expected results for different small graphs:
- one vertex graph
- one edge graph
- two edge graph
- cycle graph with 3 edges
- Integration to the develop branch in the main repository.
- Preparation of final report.
Pull Request | Description | Date | Status |
---|---|---|---|
#1606 | GSoC 2020 Removed links from linkcheck_ignore | August 19th, 2020 | Merged |
#1605 | [GSoC-2020] Experimental Functions - pgr_makeConnected, pgr_isPlanar | August 18th, 2020 | Merged |
#132 | Himanshu GSoC-2020 Week [11] | August 15th, 2020 | Merged |
#119 | Himanshu GSoC-2020 Week [10] | August 7th, 2020 | Merged |
#115 | Himanshu GSoC-2020 Week [9] | August 2nd, 2020 | Merged |
#74 | Himanshu GSoC-2020 Week [8] | July 25th, 2020 | Merged |
#66 | pgr_makeConnected GSoC-2020 Week [7] Part 2 | July 19th, 2020 | Merged |
#63 | pgr_makeConnected GSoC-2020 Week [7] | July 14th, 2020 | Merged |
#58 | pgr_makeConnected GSoC-2020 Week [6] | July 12th, 2020 | Merged |
#52 | pgr_makeConnected GSoC-2020 Week [5] | July 05th, 2020 | Merged |
#49 | pgr_boyerMyrvold GSoC-2020 Week [4] | June 28th, 2020 | Merged |
#47 | pgr_boyerMyrvold GSoC-2020 Week [3] | June 21th, 2020 | Merged |
#42 | pgr_boyerMyrvold GSoC-2020 Week [2] | June 14th, 2020 | Merged |
#41 | Himanshu GSoC-2020 Week [1] | June 06th, 2020 | Merged |
#36 | Rebase to 3.0.0 and GSoC 2020 Week [0] | May 25th, 2020 | Merged |
The below report was sent to the GSoC mailing list of OSGeo which can be found in SoC and pgrouting-dev
Hello everyone,
With GSoC coming to an end, I present to you the final report of my work over the past three months! It has been an incredible experience! This report is in accordance with the guidelines set by Google and OSGeo GSoC Admins.
Title - GSoC 2020 Implement Boyer Myrvold Planarity Testing and Make Connected in pgRouting
Organisation - pgRouting under OSGeo
Abstract - This GSoC project dealt with implementing two new graph algorithms in pgRouting. The algorithms are described as follows:
- Boost::boyer_myrvold_planarity_test A graph is planar if it can be drawn in two-dimensional space with no two of its edges crossing. Such a drawing of a planar graph is called a plane drawing. Every planar graph also admits a straight-line drawing, which is a plane drawing where each edge is represented by a line segment. When a graph has K5 or K3,3 as subgraph then the graph is not planar. This algorithm is only applicable for undirected graphs. It has a linear time complexity of O(|V|).
- Boost::make_connected Adds the minimum number of edges needed to make the input graph connected. The algorithm first identifies all of the connected components in the graph, then adds edges to connect those components together in a path. For example, if a graph contains three connected components A, B, and C, make_connected will add two edges. The two edges added might consist of one connecting a vertex in A with a vertex in B and one connecting a vertex in B with a vertex in C. This algorithm is only applicable for undirected graphs. It has a linear time complexity of O(|V| + |E|).
State of the Project Before GSoC - pgRouting did not have any of the proposed algorithms implemented.
The addition that my project brought to pgRouting: The deliverables are code, documentation, documentation tests, and the pgTAP tests of the two functions.
- The Boyer Myrvold Planarity Testing Algorithm (
pgr_isPlanar
) can be used to check the planarity of a graph. It returns a boolean value depending upon the planarity of a graph. This function is applicable only for undirected graph. - The Make Connected Algorithm (
pgr_makeConnected
) can be used to get the minimum list of edges to make a graph connected. This function is also applicable only for undirected graphs.
Potential Future Work
- More planar graph functions can be added in the future. The Boyer Myrvold Planarity Testing can be extended to give a planar embedding or a Kuratowski graph in the future work.
- A new function
pgr_make_biconnected_planar
can also be developed which will give the minimum list of edges that can make a given graph biconnected while preserving the planarity at the same time. - A new function
pgr_make_maximal_planar
can also be developed which will give the minimum list of edges that can make a given graph maximal planar.
Links
-
Code Documentation
- Boyer Myrvold Planarity Testing (
pgr_isPlanar
) - https://docs.pgrouting.org/dev/en/pgr_isPlanar.html - Make Connected (
pgr_makeConnected
) - https://docs.pgrouting.org/dev/en/pgr_makeConnected.html
- Boyer Myrvold Planarity Testing (
- Tag
-
Pull Requests
- Final pull request (#1605).
- Pull Request for removing links from linkcheck_ignore (#1606).
- Intermediate pull requests - https://github.com/pgRouting/GSoC-pgRouting/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+author%3Arajhim2
- Project Documentation (Wiki Page)
- Images
Media
- Slide Demonstration - https://docs.google.com/presentation/d/1odtr2sjBNar306gunpWbeghlNHgSLGyZR1S5avMRUOk/edit?usp=sharingslide=id.g5fc0475bda_1_54
I am so glad to have such an interesting and exciting adventure with all of you. Thanks for all your support! I will be happy if my code proves beneficial to the community.
Best Regards,
Himanshu Raj
-
What did I get done this week?
- Merged the final pull request with all changes (#1605).
- Merged the pull request to removed links from linkcheck_ignore (#1606).
- Made the presentation for the two functions which I implemented during the program.
- Made the final report as per guidelines set by Google and OSGeo GSoC Admins.
-
What do I plan on doing next week?
- Prepare for final evaluation of my mentors.
-
Am I blocked on anything?
- No, I don't have any blocking issues.
-
What did I get done this week?
- Moved the contents of makeConnected directory into components directory. This was done because makeConnected function is more related to the components directory.
- Modified the coding implementation of the function
pgr_makeConnected()
andpgr_isPlanar
. Included the try catch block for boost calls. IncludedCHECK_FOR_INTERRUPTS()
snippet forpgr_isPlanar()
before boost calls to catch cancellation from user.- Modified the .hpp file in this directory
include/components/
- pgr_makeConnected.hpp - Modified the .hpp file in this directory
include/planar/
- pgr_boyerMyrvold.hpp
- Modified the .hpp file in this directory
- Modified the documentation of
pgr_makeConnected()
. Renamed the output columns toseq
,start_vid
andend_vid
. This was done to make the output columns similar to the already existing functions in the pgRouting.- Modified the doc file in this directory
doc/components/
- pgr_makeConnected.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/components/
- doc-pgr_makeConnected.test.sql, doc-pgr_makeConnected.result, test.conf, CMakeLists.txt.
- Modified the doc file in this directory
- Modified documentation for the function
components-family
. Added the functionpgr_makeConnected()
in the experimental section of components-family.- Modified the doc file in this directory
doc/components/
- pgr_components-family.rst. - Modified the experimental section files in this directory
doc/src/
- experimental.rst.
- Modified the doc file in this directory
- Completed the pgTAP tests of
pgr_isPlanar()
intypes_check
which were earlier in TODO list.- Modified the pgtap tests file in this directory
pgtap/planar/isPlanar/
- types_check.sql.
- Modified the pgtap tests file in this directory
- Modified the pgTAP tests of
pgr_makeConnected()
according to the new modified documentation.- Modified the pgtap tests file in this directory
pgtap/components/makeConected/
- types_check.sql.
- Modified the pgtap tests file in this directory
- Created a tag 2020-rajhim2-isPlanar-makeConnected of the work product done till week 11.
- Merged a pull request with all these changes (#132).
- Opened a pull request with my final work product to be merged in
develop
branch of pgRouting (#1605).
-
What do I plan on doing next week?
- Merge the pull request (#1605) after all the mentors review and approve.
- Implement the remaining pgTAP tests of
pgr_isPlanar()
that are currently in todo. - Generate a video of my contributions using
gsource
andffmpeg
. - Complete my work product of the program and make a PR to the
develop
branch with all the files.
-
Am I blocked on anything?
- No
-
What did I get done this week?
-
Modified the coding implementation of the function
pgr_makeConnected()
. Included theCHECK_FOR_INTERRUPTS()
to before boost calls to catch cancellation from user.- Modified the .hpp file in this directory
include/makeConnected/
- pgr_makeConnected.hpp
- Modified the .hpp file in this directory
-
Modified the documentation of
pgr_isPlanar()
. Included the image of non-planar graph in Additional Example of documentation. The image of non-planar graph was generated using QGIS. I used three layers to generate the image i.e., planar, Edges, and Vertices.- Modified the doc file in this directory
doc/isPlanar/
- pgr_isPlanar.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/isPlanar/
- doc-pgr_isPlanar.test.sql, doc-pgr_isPlanar.result, test.conf, CMakeLists.txt. - Added the image in the directory
doc/isPlanar/images
- nonPlanar.png, CMakeLists.txt
- Modified the doc file in this directory
-
Modified documentation for the function
pgr_makeConnected()
. Earlier it had too many example queries in the documentation. Removed the addtional queries.- Modified the doc file in this directory
doc/makeConnected/
- pgr_makeConnected.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/makeConnected/
- doc-pgr_makeConnected.test.sql, doc-pgr_makeConnected.result, test.conf, CMakeLists.txt.
- Modified the doc file in this directory
-
Modified the pgTAP tests of
pgr_isPlanar()
to includetypes_check
andno_crash_test
in TODO.- Modified the pgtap tests file in this directory
pgtap/planar/isPlanar/
- edge_cases.sql, inner_query.sql, types_check.sql, no_crash_test.sql .
- Modified the pgtap tests file in this directory
-
Modified the pgTAP tests of
pgr_makeConnected()
to include new format oftypes_check
.- Modified the pgtap tests file in this directory
pgtap/makeConnected/makeConected/
- types_check.sql.
- Modified the pgtap tests file in this directory
-
Merged a pull request with all these changes (#119).
-
-
What do I plan on doing next week?
- Implement the remaining pgTAP tests of
pgr_isPlanar()
that are currently in todo. - Generate a video of my contributions using
gsource
andffmpeg
. - Make a presentation of my work and functions which I have Implemented.
- Complete my work product of the program and make a PR to the
develop
branch with all the files.
- Implement the remaining pgTAP tests of
-
Am I blocked on anything?
- No
-
What did I get done this week?
-
Completed with coding implementation of the function
pgr_isPlanar()
. It is now working as a true/false function.- Modified the .hpp file in this directory
include/planar/
- pgr_boyerMyrvold.hpp
- Modified the .hpp file in this directory
-
Completed the documentation of
pgr_isPlanar()
which provides a short description of the function, sample usage of the function through sample queries and results, tables that explain the input parameters as well as output parameters and finally reference links to Boost's boyerMyrvold documentation. Also added the additional examples section in the documentation.- Modified the doc file in this directory
doc/isPlanar/
- pgr_isPlanar.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/isPlanar/
- doc-pgr_isPlanar.test.sql, doc-pgr_isPlanar.result, test.conf, CMakeLists.txt.
- Modified the doc file in this directory
-
Completed documentation for the function
pgr_makeConnected()
which provides a short description of the function, sample usage of the function through sample queries and results, tables that explain the input parameters as well as output parameters and finally reference links to Boost's make_connected() documentation.- Modified the doc file in this directory
doc/makeConnected/
- pgr_makeConnected.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/makeConnected/
- doc-pgr_makeConnected.test.sql, doc-pgr_makeConnected.result, test.conf, CMakeLists.txt.
- Modified the doc file in this directory
-
Modified the pgTAP directory structure for my functions which may become the standard directory structure for pgRouting in future. Modified the names of pgTAP test files because earlier it was redundant to include name of function in every file.
- Modified the pgtap tests file in this directory
pgtap/planar/isPlanar/
- edge_cases.sql, inner_query.sql, types_check.sql, no_crash_test.sql . - Modified the pgtap tests file in this directory
pgtap/makeConnected/makeConected/
- edge_cases.sql, inner_query.sql, types_check.sql, no_crash_test.sql .
- Modified the pgtap tests file in this directory
-
Merged a pull request with all these changes (#115).
-
-
What do I plan on doing next week?
- Implement the suggested changes for pgtap tests for the functions
pgr_isPlanar()
andpgr_makeConnected()
. - Add the
CHECK_FOR_INTERRUPTS()
snippet before the boost calls to catch cancellation from postgres user. - Use .editorconfig to make my code as it is required in pgRouting coding style.
- Implement the suggested changes for pgtap tests for the functions
-
Am I blocked on anything?
- No
-
What did I get done this week?
- Added documentation for the function
pgr_makeConnected()
which provides a short description of the function, sample usage of the function through sample queries and results, tables that explain the input parameters as well as output parameters and finally reference links to Boost's make_connected() documentation.- Modified the doc file in this directory
doc/makeConnected/
- pgr_makeConnected.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/makeConnected/
- doc-pgr_makeConnected.test.sql, doc-pgr_makeConnected.result, test.conf, CMakeLists.txt.
- Modified the doc file in this directory
- Prepared a shared doc file to show possible applications of my implemented functions to my mentor. My mentor suggested some changes to the doc file and my functions.
- My mentor reviewed my code till now and suggested the changes to the function
pgr_boyerMyvold( )
.The suggested changes were - a true/false function instead of returning whole graph, pgTAP tests for 2 edges disconnected graphs and smaller non-planar graphs. - So, I made copies of the directories of
pgr_boyerMyrvold()
to have a backup function. Started working for the suggested changes on the backup function. - Merged a pull request with all these changes (#74).
- Added documentation for the function
-
What do I plan on doing next week?
- Implement the suggested changes for the function
pgr_boyerMyrvold()
i.e. a true / false function, pgTAP tests for 2 edges disconnected graphs and smaller non-planar graphs. - Complete the remaining documentation of the function
pgr_makeConnected()
i.e. complete the Additional Examples section of the doc. - Finalize the shared doc file of implemented functions report and move it to the wiki.
- Implement the suggested changes for the function
-
Am I blocked on anything?
- No
-
What did I get done this week?
- Removed all the redundant debug files, comments and headers and headers.
- Added all the pgTap Tests for my function pgr_makeConnected:
- Completed function input/output parameter type-check pgTap tests.
- Completed algorithm edge-cases pgTap tests.
- Completed additional inner-query pgTap tests.
- Completed additional no crash pgTap tests.
- Completed additional rows consistency pgTap tests.
- Modified the files in this directory
pgtap/makeConnected/
- makeConnected-edge-cases.sql, makeConnected-innerQuery.sql, makeConnected-types-check.sql, no_crash_test-makeConnected.sql
- Modified and completed the documentation of my previous function
pgr_boyerMyrvold()
based on the recommendations given by my mentor during Bolsena Code Spirint. - Modified the doc file in this directory
doc/planarGraph/
- pgr_boyerMyrvold.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/planarGraph/
- doc-pgr_boyerMyrvold.test.sql, doc-pgr_boyerMyrvold.result. - Performed the rebase to 3.1.0 and resolved all code conflicts.
- Merged a pull request with all these changes (#63).
- Merged another pull request after rebase with all these changes (#66).
-
What do I plan on doing next week?
- The documentation of pgr_makeConnected is remaining. So, in the coming week, I plan to add all the documentation files for my function.
- In next week, I will also make a doc file in which I will show the possible applications of my functions that could be implemented within pgRouting. My mentor will be reviewing my code next week. I will also refine the code based on my mentor's recommendations.
-
Am I blocked on anything?
- No
-
Meetings Attended
- July 14: Performed the rebase to 3.1.0 and resolved all code conflicts.
-
What did I get done this week?
- Completed with coding implementation of boost Graph function
pgr_makeConnected
. The correct set of rows are getting returned at the ouput. - Modified the coding implementation of my previous function
pgr_boyerMyrvold()
based on my mentor's reviews during Bolsena Code Spirint. - Modified and added all the required files for the implementation of my function:
-
include/drivers/makeConnected/
- makeConnected.h -
pgtap/makeConnected/
- makeConnected-edge-cases.sql, makeConnected-innerQuery.sql, makeConnected-types-check.sql, no_crash_test-makeConnected.sql - Modified
sql/makeConnected/
- CMakeLists.txt, _makeConnected.sql, makeConnected.sql - Modified
src/makeConnected/
- CMakeLists.txt, makeConnected.c, makeConnected_driver.cpp - Modified the configuration.conf file in the root of the repository
-
- Modified the
.github/workflows/ubuntu.yml
to fix the ubuntu build error. - Fixed all Travis CI and Appveyor warnings and errors.
- Merged a pull request with all these changes (#58).
- Completed with coding implementation of boost Graph function
-
What do I plan on doing next week?
- The pgTAP tests of
pgr_makeConnected
are remaining. So, in the coming week, I plan to add all the pgTAP tests - Server no crash test for null parameters, parameters type check, inner query tests, and the unit tests - one vertex, one edge, two edges, cycle with 3 edges, etc. - I will also be working on the documentation of this function.
- I will also be modifying the pgTap tests implementation, documentation of my previous function
pgr_boyerMyrvold()
based on my mentor's reviews which was given during the Bolsena Code Spirint.
- The pgTAP tests of
-
Am I blocked on anything?
- No, I don't have any blocking issues.
-
What did I get done this week?
- Completed designing my next boost Graph function
pgr_makeConnected
. Completed with designing of the function. Able to read data from postgresql. Currently the data returned after the query is 0 row. - Modified and added all the required files for the implementation of my function:
-
include/drivers/makeConnected/
- makeConnected.h -
pgtap/makeConnected/
- makeConnected-edge-cases.sql, makeConnected-innerQuery.sql, makeConnected-types-check.sql, no_crash_test-makeConnected.sql - Modified
sql/makeConnected/
- CMakeLists.txt, _makeConnected.sql, makeConnected.sql - Modified
src/makeConnected/
- CMakeLists.txt, makeConnected.c, makeConnected_driver.cpp - Modified the function signatures in
sql/sigs/pgrouting--3.0.0.sig
- Modified the configuration.conf file in the root of the repository
-
- Merged a pull request with all these changes (#52).
- Attended meetings which were a part of the Bolsena Online Code Sprint 2020:
- June 30th: Discussed and presented all the functions, code, documentation, pgTap Tests which I had done during the first phase evaluations for the GSoC '20 program, with the mentor and pgRouting community who reviewed the work and suggested some modifications.
- July 2nd: Attended and reviewed the workshop of MobilityDB team with pgRouting and PostGIS. It came under pgRouting release 3.0.1
- Completed designing my next boost Graph function
-
What do I plan on doing next week?
- Currently the data returned after the query for my new function
pgr_makeConnected()
is 0 row. - The coding of .hpp file in the directory
include/makeConnected
for functionpgr_makeConnected()
is remaining. So, in the coming week, I plan to study and implement the functionboost::make_connected()
in .hpp file. - I will also be modifying the pgTap tests implementation, documentation of my previous function
pgr_boyerMyrvold()
based on my mentor's reviews which was given during the Bolsena Code Spirint.
- Currently the data returned after the query for my new function
-
Am I blocked on anything?
- No, I don't have any blocking issues.
-
What did I get done this week?
- Removed unnecessary header files, redundant code and comments from the files.
- Added name to the contributors list in pgRouting.
- Added documentation for the function
pgr_boyerMyrvold()
which provides a short description of the function, sample usage of the function through sample queries and results, tables that explain the input parameters as well as output parameters and finally reference links to Boost's Boyer Myrvold planarity documentation as well as Wikipedia's explanation of the Planarity explanation. - Modified the doc file in this directory
doc/planarGraph/
- pgr_boyerMyrvold.rst, CMakeLists.txt - Modified the docqueries files in this directory
docqueries/planarGraph/
- doc-pgr_boyerMyrvold.test.sql, doc-pgr_boyerMyrvold.result, test.conf, CMakeLists.txt. - Completed the
pgr_boyerMyrvold()
function with coding, documentation and pgTap Tests. - Started designing my next planar graph boost function
boost::make_connected()
.- Added sql files in this directory
sql/makeConnected
- makeConnected.sql, _makeConnected.sql, CMakeLists.txt
- Added sql files in this directory
- Merged a pull request with all these changes (#49).
- Fixed all Travis CI, Appveyor warnings and errors.
-
What do I plan on doing next week?
- Complete designing of next boost function
boost::make_connected()
. - I will be creating a basic skeleton for C, C++, SQL code, and for the documentation and tests. For this, I will be adding all the required files in their required directories, containing basic code related with the new function. I will also add the function name in the configuration file and update the signature file accordingly.
- Complete designing of next boost function
-
Am I blocked on anything?
- Currently I am getting error on doxygen dot files on my pc.
- Error: /home/himanshu/GSoC-pgRouting/build/doxygen/html/inline_dotgraph_2.dot: syntax error in line 14 near '-'
- Apart from this I don't have any blocking issues.
-
What did I get done this week?
- Previously the data returned after the query was displayed incorrectly at the respective columns. One of the columns was showing garbage values. I finally fixed this bug.
- Added all the pgTap Tests for my function pgr_boyerMyrvold:
- Completed function input/output parameter type-check pgTap tests.
- Completed algorithm edge-cases pgTap tests.
- Completed additional inner-query pgTap tests.
- Completed additional no crash pgTap tests.
- Modified the files in this directory
pgtap/planarGraph/
- boyerMyrvold-edge-cases.sql, boyerMyrvold-innerQuery.sql, boyerMyrvold-types-check.sql, no_crash_test-boyerMyrvold.sql
- Merged a pull request with all these changes (#47).
-
What do I plan on doing next week?
- The documentation of pgr_boyerMyrvold is remaining. So, in the coming week, I plan to add all the documentation files for my function.
- Meanwhile, I will also start preparation for my next planar Graph boost algorithm.
-
Am I blocked on anything?
- Currently I am getting error on doxygen dot files on my pc.
- Error: /home/himanshu/GSoC-pgRouting/build/doxygen/html/inline_dotgraph_2.dot: syntax error in line 14 near '-'
- Apart from this I don't have any blocking issues.
-
What did I get done this week?
- Started coding on my boost planar Graph function
pgr_boyerMyrvold
. Completed with coding of the function. Able to read data from postgresql. Currently the data which returns after the query is not getting displayed properly. - Modified and added all the required files for the implementation of my function:
-
include/drivers/planarGraph/
- boyerMyrvold.h -
pgtap/planarGraph/
- boyerMyrvold-edge-cases.sql, boyerMyrvold-innerQuery.sql, boyerMyrvold-types-check.sql, no_crash_test-boyerMyrvold.sql - Modified
sql/planarGraph/
- CMakeLists.txt, _boyerMyrvold.sql, boyerMyrvold.sql - Modified
src/planarGraph/
- CMakeLists.txt, boyerMyrvold.c, boyerMyrvold_driver.cpp - Modified the function signatures in
sql/sigs/pgrouting--3.0.0.sig
-
- Merged a pull request with all these changes (#42).
- Started coding on my boost planar Graph function
-
What do I plan on doing next week?
- Currently the data returned after the query is displayed incorrectly at the respective columns. I will be fixing this bug.
- The pgTAP tests of
pgr_boyerMyrvold
are remaining. So, in the coming week, I plan to add all the pgTAP tests - Server no crash test for null parameters, parameters type check, inner query tests, and the unit tests - one vertex, one edge, two edges, cycle with 3 edges, etc after the above bug is removed. - I will also be working on the documentation of this function.
-
Am I blocked on anything?
- Currently the data returned after the query is displayed incorrectly at the respective columns. One of the columns is showing garbage values. I am trying to fix this bug.
- Apart from this I don't have any blocking issues.
-
What did I get done this week?
- Continued coding on my function
pgr_kargersContraction
. Completed with designing the skeleton of the function. Able to read data from postgresql. Currently it is returning (0 rows) on the query. - Modified and added all the required files for the implementation of my function:
-
doc/kargersContraction/
- CMakeLists.txt, pgr_kargersContraction.rst -
docqueries/kargersContraction/
- CMakeLists.txt, doc-pgr_kargersContraction.result, doc-pgr_kargersContraction.test.sql, test.conf -
include/drivers/kargersContraction/
- kargersContraction.h -
pgtap/kargersContraction/
- kargersContraction-edge-cases.sql, kargersContraction-innerQuery.sql, kargersContraction-types-check.sql, no_crash_test-kargersContraction.sql - Modified
sql/kargersContraction/
- CMakeLists.txt, _kargersContraction.sql, kargersContraction.sql - Modified
src/kargersContraction/
- CMakeLists.txt, kargersContraction.c, kargersContraction_driver.cpp - Modified the function signatures in
sql/sigs/pgrouting--3.0.0.sig
-
- Merged a pull request with all these changes (#41).
- Fixed all the Travis-CI warnings and errors.
- Discussed about the areaContraction technique and its algorithm in the meeting discussions June 5th and June 6th.
- Continued coding on my function
-
What do I plan on doing next week?
- Based on the discussion of June 5th and June 6th with my mentor I will start coding a new boost function which will give support of planar graph algorithms in pgRouting.
- I will be designing the skeleton and C++ containers of this new boost function in the coming week.
- Meanwhile, I will be verifying and designing the contraction function pgTap Tests manually. I will be planning the pseudo-code of the function.
- I will be modifying the name of my contraction function from pgr_kargersContraction() to pgr_areaContraction() and do the same for all the header/c/c++ files.
-
Am I blocked on anything?
- No, currently I don't have any blocking issue.
- Added some basic dummy sql functions on my fork
pgr_funnyDijkstra
,pgr_funnyContraction
- To perform rebase on my forked repository : I executed these commands on my forked repository.
git checkout him
git fetch upstream
git rebase upstream/master
git push -f
- Now I want to merge these basic dummy changes in my GSoC-pgRouting repo branch edgeContract: https://github.com/pgRouting/GSoC-pgRouting/tree/edgeContract. This is just being done to check how this whole system works.
- Week 1 Coding Period
- Designing of
pgr_kargersContraction
function. - Created a basic skeleton for C, C++, SQL code.
- Designing of
- Merged a pull request with all these changes (#36).
-
May 6th
- Understood the file structure of the functions of pgRouting - sql, src, include, pgtap, doc, docqueries.
- Analyzed the code sequence of the pgr_dijkstra function, so that any other function developed would follow the same code sequence.
-
May 7th
- Understood the testing schema of pgRouting.
- Understood how is a test designed, and how to do the testing using pgTAP (types-check, inner-query, no-crash-test, edge-cases) and docqueries (creating custom tests and verifying).
-
May 10th
- Understood how to design a function.
- Analyzed how to store the graph in the database and the functions related to that (e.g. functions in
edges_input.c
).
-
May 12th
- Set up a branch named
edgeContract
on the pgRouting GSoC-repository for sending pull requests. - Learned how to create a simple dummy function (
pgr_funnyDijkstra
,pgr_span2trees
).
- Set up a branch named
-
May 15th
- Understood the releases of pgRouting (alpha, beta, rc1) and that v3.0.0 will be released later.
- Understood the Continuous Integration on Travis CI, Appveyor and GitHub build, and how to report the build problems, if encountered.
-
May 28th
- Discussion regarding Contraction documentation in pgRouting.
- Discussion about existing Contraction techniques dead end and linear contraction.
- How to process the contracted graph to use other functions available in pgRouting
- What changes need to be done to edge_table and edge_table_vertices_pgr to use contracted graph with other functions.
-
June 1st
- Discussion about
pgr_dijkstra
with SQL combinations. - How we should be approaching the GSoC-2020.
- When mentors are not available do documentation of your functions and code.
- It is a full time commitment and community expects 40 hrs of work from us.
- Merge our generated pull requests by the end of the week.
- Discussion about
-
June 5th
- Thorough discussion about areaContraction technique and algorithm.
- How to use the small contracted graphs to make the contracted graph of bigger size.
-
June 6th
-
pgr_dijkstra
many to many as a way to get the results of areaContraction. - Coding for a new boost function planar graph algorithms in pgRouting.
- Based on this discussion I will be coding the planar graph algorithms till the time my mentor tells me to resume the contraction work. So , I will be working on planar graph algorithms for now.
-
-
June 30
- Discussed and presented all the functions, code, documentation, pgTap Tests which I had done during the first phase evaluations for the GSoC '20 program, with the mentor and pgRouting community who reviewed the work and suggested some modifications.
-
July 2nd
- Attended and reviewed the workshop of MobilityDB team with pgRouting and PostGIS. It came under pgRouting release 3.0.1 .
-
July 12th
- During mobilityDB workshop I installed postgresql 12. And when I started working on my function nothing got updated on database. So in this meeting on jitsi my mentor helped me to reconfigure the build and setup postgresql 12.
-
July 14th
- Performed the rebase to 3.1.0 and resolved all code conflicts.
- Set up the development environment.
- Interact with mentors, introduce myself to the community, and actively get involved in the discussion.
- Set up a wiki page to keep track of weekly progress.
- Add a wiki link to OSGeo's accepted student's wiki page.
- Introduce myself and my project on OSGeo's SOC mailing list.
- Get familiar with pgRouting’s development style. Understand expected coding, documentation, and testing standards set by pgRouting.
- Develop a better understanding of PostgreSQL, PostGIS, Pl/pgSQL, and how they interact with pgRouting.
- Learn to create unit tests using pgTap.
- Implement simple dummy functions to better understand pgRouting.
- Boyer Myrvold Planarity Testing from Boost Graph Library.
- Planar Graphs from Boost Graph Library.
- Make Connected from Boost Graph Library.
- pgRouting Sample Data.
- pgRouting Documentation.