Initial Design - AVanDeBrook/citation-graph GitHub Wiki
Initial design notes, work in progress
Design Flow Chart 2/16/2021:
High level design:
The user inputs their research paper(s). The program requires it to be in LaTex with BibTex.
The program uses the BibTex to create a file in a language that Doxygen can handle, we've chosen C.
Doxygen generates the graph using the C code. Doxygen provides HTML for our GUI.
The user can modify and add fields. The program will rewrite the files that are used by Doxygen to regenerate the graph.
High level design expanded:
The user inputs their research paper(s). The program requires it to be in LaTex with BibTex.
The program uses the BibTex to create a file in a language that Doxygen can handle, we've chosen C.
BibTex resembles a dictionary (ie. author="Corrina"). This is extremely beneficial to us.
Doxygen cannot handle BibTex, however, so we convert it to C.
The C code won't be functional, it's just a way to speak to Doxgyen in a language it'll understand.
TODO describe structure of C file/methods
Doxygen generates the graph using the C code. Doxygen provides HTML for our GUI.
Graph nodes are paper names. Graph connections are the references to other papers.
A purely Doxygen-generated front end is initial. Later, the developers may make their own front-end.
The user can modify and add fields. The program will rewrite the files that are used by Doxygen to regenerate the graph.
Initially, this can be done by the user editing the files in a text editor. Later, we could create our own GUI with fillable forms.
For example, a new page opens for Paper A with a form to change existing fields like author or add new fields like summary.
Notes from meeting with Dr. Liu 1/28/2021:
All.bib header file
Common / all.bib, common_def.tex
Paper / paper1.tex, paper2.tex, ...
Graph / luis2021A.tex, sam2020.tex, tex, ...
Reduce paper1.tex to sam2020.tex
Single function for C file
Plain file structure instead of SQL database
Notes from meeting with Dr. Liu 2/2/2021:
GUI shows... (what is in the reduced/simplified LaTex file)
Title/author/affiliation
Abstract
Index terms
Most import contributions
Citation graph
You can use Doxygen to set how many layers deep the graph should go, a single layer is good enough
Answer to question "how should the graph nodes nodes (papers) be labeled? name?"
Liu2008, Chayat1997
Later, if possible, add paper title below that^
Later, if possible, label connections with purpose
A forms GUI is fancy, the user can modify feilds using a text editor for now.
SQL database idea (scratched for now):
Rather than rewriting the files, the original data from the files is stored in the database and further additions/modifications are done with SQL.
Attributes directly from paper (BibTex) are inserted into the database, immodifiable (boolean flag ie. Author = Corrina, author_editable = false)
The graph is not regenerated because the nodes are only paper names, which do not change.
Other information than that^ cannot be displayed using Doxygen HTML because we want to include manually entered data from the database. Requires more GUI work.
Click on a node of the graph (paper name) and it opens a sidebar (or other page) to display database information.
Manually added information goes into database, IS modifiable, does not need to be added to C code.
Possibly faster than plain file structure because no regeneration or rewriting is needed.
Other ideas/considerations:
Input sanitization on manually entered information