● Purpose:
This application is designed as an academic analysis dashboard that integrates various data points from the academic world database to provide insights into faculty members and their research areas. The target users can be university administrators, faculty members, and prospective students and researchers. The objectives are to help users explore faculties and professors from other institutions based on keywords and research areas.
● Demo:
● Usage: There are 6 widgets in this application:
In widget 1, the users can type in any university name in the database to see the top 10 keywords distribution of that university.
In widget 2, the users can type in any keyword in the database to see the top 5 faculty based on the predefined KRC in the homework. This widget will display their name, position, and corresponding university.
In widget 3, the users can input any faculty name to see a radar chart indicating their publications amount in the top 5 popular area.
In widget 4, the user will be able to search a faculty and see the 14 faculties who share the same area with him/her.
And in widget 5 and widget 6, the users will be able to add or delete their favorite faculty to the database. Meanwhile, widget 5 will show the top 3 cited number of publications of the faculty that the users add.
● Design:
This application basically follows a client-server architecture where the frontend is built using Dash and Plotly to provide an interactive web interface, while the backend handles data fetching, and processing logic. And we also follow a workflow mode, which is: input university output keyword -> input keyword output faculty -> input faculty ouput publication. The components that we used for this application are Dash, Plotly, pandas, mysql, mongodb, and neo4j.
● Implementation:
This application is implemented in python. We used Dash and Plotly as frontend frameworks and libraries to help generating charts and tables. For backend, we use mysql.connector, pymongo, and neo4j to connect to our databases and get the data we need from these databases. After getting the data from databases, we use pandas to form dataframes. Then we used Dash and Plotly modules to transform these dataframes to different charts and tables and display them in the webpage.
● Database Techniques:
The database techniques that we used for this application are index, stored procedure, and foreign key constraints. We created an index in the table Publication_Keyword, which is normal index of the fields publication_id and keyword_id. By implementing it, we have a function “create_index” in mysql_utils, which will first check whether the table contains the index that we are creating in order to avoid error. Then we used the sql query “CREATE INDEX my_idx ON Publication_Keyword(keyword_id, publication_id);” to create our own index. With this index, we can reduce the time on querying the top 5 popular keywords from mysql database. When implementing widgets 5 and 6, we have created two new tables: favorite_professors and publications_to_read (for each favorite professor, publications_to_read holds his/her top 3 most cited papers), in which there is a foreign key constraint in publications_to_read to reference each paper to its author. The constraint allows for easy deletion when removing a favorite professor. The stored procedure technique is also used to efficiently insert into or delete from these two tables when a user adds/removes a favorite professor.
