https://github.com/baiyueh/hina
A Learning Analytics Tool for Heterogenous Interaction Network Analysis in Python
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.9%) to scientific vocabulary
Repository
A Learning Analytics Tool for Heterogenous Interaction Network Analysis in Python
Basic Info
- Host: GitHub
- Owner: baiyueh
- License: mit
- Language: TypeScript
- Default Branch: main
- Size: 44.5 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
HINA: A Learning Analytics Tool for Heterogenous Interaction Network Analysis in Python
HINA is a learning analytics tool that models and analyzes heterogenous interactions in learning processes. Heterogenous interactions refer to the interactions occurring between different types of entities during learning processes, such as students’ interactions with learning objects or students’ display of different behaviors coded using multimodal process data.
Heterogenous interaction networks (HINs) consist of different sets of nodes and edges connecting nodes from different sets. Each node in a heterogenous interaction network (HIN) can represent any meaningful entity reflecting a certain object or construct in a learning process, such as a student, group of students, coded behavior, or learning artefact. Edges in HINs pair nodes from different sets and can reflect affiliations, associations, or interactions among the nodes for modeling a specific learning process.
Heterogenous interaction network analysis (HINA) offers a flexible, adaptive, and widely applicable method to model a wide variety of interactions that can occur during the learning processes, across individual learning, group learning, and community learning.

Table of Contents
Installation
HINA is available on PyPI and can be installed using pip, which will include the dependencies automatically:
To ensure running in a working environment please make sure the python version >=3.9
bash
pip install hina
For users who prefer installing dependencies manually, we provide a requirements.txt file on GitHub. To install HINA and its dependencies using this file:
bash
git clone https://github.com/SHF-NAILResearchGroup/HINA.git
cd HINA
pip install -e .
pip install -r requirements.txt
HINA Dashboard APP is available to build and run locally with Docker:
bash
git clone https://github.com/SHF-NAILResearchGroup/HINA.git
cd HINA
docker compose up --build
Then, open the web browser and navigate to http://localhost:8080 to access the HINA Dashboard.
Modules
hina.construction
- Heterogeneous Interaction Network Construction: Provides functions to construct Heterogeneous Interaction Networks (HINs) (see examples above) directly from input learning process data. The methods in this module are designed to handle the typical
data format encountered for learning process data traces, supporting seamless integration with learning analytics workflows.
hina.individual
- Individual-level Analysis: Provides functions to compute the node-level measures gauging the quantity and diversity of individuals’ connections to different learning constructs. Students’ group information and construct attributes can be flexibly manipulated for different applications.
hina.dyad
- Dyadic Analysis: Provides methods to identify statistically significant edges in the heterogeneous interaction
network relative to different null models of interaction structure, which can be specified by the user.
hina.mesoscale
- Mesoscale Clustering: Provides methods for clustering nodes in a heterogeneous interaction network according to shared interaction structure, to automatically learn the number of clusters from heterogeneity in the interaction data to find a mesoscale representation. Utilizes a novel method based on data compression for parsimonious inference. If the input is a tripartite representation of heterogeneous interaction network, the function also returns the projected bipartite networks of the related constructs of individuals within each cluster.
hina.visualization
- Visualization: Provides network visualization functionalities for heterogeneous interaction networks. Users can generate a customizable network visualization using a specified layout, allowing for the pruning of insignificant edges, grouping of nodes based on engagement patterns, and customization of the graph's appearance. Users can also visualize HINs with a novel community-based layout, emphasizing the underlying bipartite community structure.
hina.app
- HINA Dashboard: Provides functions to deploy a dashboard that includes a web-based interface for data analysis and visualization.
1. The dashboard serves as a web-based tool for conducting learning analytics with HINA using an intuitive user interface,
enabling users to conduct the individual-, dyadic- and mesoscale-level analysis available in the package without any programming.
2. The dashboard also allows teachers and students to visualize, interpret, and communicate HINA results effectively.
This dual functionality supports both data analysis and the sharing of actionable insights in an interactive and user-friendly manner,
making it a versatile tool for both data analytics and teaching practice.
Documentation
Detailed documentation for each module and function is available at the link below:
HINA Documentation
License
Distributed under the MIT License. See LICENSE for more information.
Layout
```bash
HINA/ ├── init.py │ ├── construction/ # Construct bipartite & tripartite networks │ ├── init.py │ ├── networkconstruct.py │ └── tests/ │ ├── _init.py │ └── testnetworkconstruct.py ├── individual/ # Node-level analysis: quantity & diversity │ ├── __init.py │ ├── quantity.py │ ├── diversity.py │ └── tests/ │ ├── init.py │ └── testquantity.py │ └── testdiversity.py │ ├── dyad/ # Edge-level analysis: significant edges │ ├── init.py │ ├── significantedges.py │ └── tests/ │ ├── _init.py │ └── testsignificantedges.py │ ├── mesoscale/ # Mesoscale clustering analysis │ ├── __init.py │ ├── clustering.py │ └── tests/ │ ├── init.py │ └── testclustering.py │ ├── visualization/ # Network visualization utilities │ ├── _init.py │ ├── networkvisualization.py │ └── tests/ │ ├── _init.py │ └── testnetworkvisualization.py │ ├── app/ # Web-based API & frontend │ ├── init.py │ ├── api/ # Backend API logic │ │ ├── init.py │ │ ├── api.py │ │ ├── utils.py │ │ │ ├── tests/ # API unit tests │ │ ├── init.py │ │ └── testapi.py │ │ │ ├── frontend/ # APP Development (React/TypeScript) │ ├── src/ │ ├── components/ │ │ ├── CanvasBackground/ │ │ │ ├── NetworkBackground.tsx │ │ │ ├── UploadOverlay.tsx │ │ ├── Navbar/ │ │ │ ├── NavbarMinimalColored.tsx │ │ ├── AnalysisPanel/ │ │ │ ├── AnalysisPanel.tsx │ │ ├── DataInputPanel/ │ │ │ ├── DataInputPanel.tsx │ │ ├── NetworkVisualization/ │ │ │ ├── NetworkVisualization.tsx │ │ ├── Webinterface/ │ │ │ ├── Webinterface.tsx │ │ │ ├── hooks │ │ │ ├── useNetworkData.tsx │ │ │ ├── pages/ │ │ ├── Homepage.tsx │ │ │ ├── App.tsx │ ├── main.tsx │ ├── Router.tsx │ ├── utils/ # Utility functions for graph & plotting │ ├── _init.py │ ├── graphtools.py │ ├── plottools.py │ └── tests/ │ ├── __init.py │ ├── testgraphtools.py │ └── testplottools.py │ ├── data/ # Sample datasets │ ├── init.py │ ├── syntheticdata.csv │ └── exampledataset.xlsx
Owner
- Login: baiyueh
- Kind: user
- Repositories: 1
- Profile: https://github.com/baiyueh
GitHub Events
Total
- Member event: 2
- Push event: 217
- Fork event: 1
- Create event: 4
Last Year
- Member event: 2
- Push event: 217
- Fork event: 1
- Create event: 4
Dependencies
- actions/checkout v4 composite
- actions/setup-python v4 composite
- myst_parser *
- sphinx-rtd-theme *
- sphinxcontrib.bibtex *
- dash <=3.0.0
- numpy >=1.24
- pandas >=2.2
- scikit-network ==0.32.1
- scipy >=1.10
- dash <=3.0.0
- numpy >=1.24
- pandas >=2.2
- scikit-network ==0.32.1
- scipy >=1.10
- dash <=3.0.0
- numpy >=1.24
- pandas >=2.2
- scikit-network ==0.32.1
- scipy >=1.10