https://github.com/iamjuaness/knot
Knot is a Java library designed to model and visualize complex structures, such as knots, molecules and helical structures. Inspired by knot theory, this library allows you to graphically represent links between nodes with specific crossings, which is ideal for visually exploring patterns and connections in two-dimensional graphs.
https://github.com/iamjuaness/knot
bidimensional data-structures graphs java knot-theory knots library nodes patterns
Last synced: about 1 year ago
JSON representation
Knot is a Java library designed to model and visualize complex structures, such as knots, molecules and helical structures. Inspired by knot theory, this library allows you to graphically represent links between nodes with specific crossings, which is ideal for visually exploring patterns and connections in two-dimensional graphs.
- Host: GitHub
- URL: https://github.com/iamjuaness/knot
- Owner: iamjuaness
- License: mit
- Created: 2024-11-02T14:37:31.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-27T05:56:25.000Z (over 1 year ago)
- Last Synced: 2025-01-08T13:43:48.469Z (about 1 year ago)
- Topics: bidimensional, data-structures, graphs, java, knot-theory, knots, library, nodes, patterns
- Language: Java
- Homepage:
- Size: 39.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
KNOT
โฏ Knot is a Java library and data structure designed to model, save data and visualize complex structures, such as knots, molecules and helical structures. Inspired by knot theory, this library allows you to graphically represent links between nodes with specific crossings, which is ideal for visually exploring patterns and connections in two-dimensional graphs. v
Built with the tools and technologies:
Table of Contents
- [๐ Overview](#-overview)
- [๐พ Features](#-features)
- [๐ Project Structure](#-project-structure)
- [๐ Project Index](#-project-index)
- [๐ Getting Started](#-getting-started)
- [โ๏ธ Prerequisites](#-prerequisites)
- [โ๏ธ Installation](#-installation)
- [๐ค Usage](#๐ค-usage)
- [๐งช Testing](#๐งช-testing)
- [๐ Project Roadmap](#-project-roadmap)
- [๐ฐ Contributing](#-contributing)
- [๐ License](#-license)
- [๐ Acknowledgments](#-acknowledgments)
## ๐ Overview
Knot is a Java library developed for creating and exploring graph-based structures such as knots, molecular bonds, and helical formations. This library utilizes `KnotNode` and `KnotEdge` classes to represent nodes and edges with customizable crossing types (e.g., over and under crossings), enabling users to construct both simple and complex structures like DNA helices or molecular models.
---
## ๐พ Features
- **Graph Representation**: Model nodes and edges with customizable crossing types.
- **Library of Knots**: Pre-built knots such as the Trefoil Knot, Figure-Eight Knot, and Clove Hitch.
- **Molecular Modeling**: Represent molecules with covalent bonds and 3D-like node spacing.
- **Helical Structures**: Create DNA-like double helices with paired nucleotide nodes.
- **Visualization Capabilities**: Easily visualize complex knot patterns and molecule-like structures.
---
## ๐ Project Structure
```sh
โโโ Knot/
โโโ LICENSE
โโโ README.md
โโโ pom.xml
โโโ src
โโโ main
โโโ java
โโโ knot
โโโ exception
โโโ KnotExcepcion.java
โโโ factory
โโโ KnotFactory.java
โโโ model
โโโ Crossing.java
โโโ DataKnot.java
โโโ utils
โโโ KnotUtils.java
```
### ๐ Project Index
KNOT/
__root__
src
main
java
knot
KnotVisualizer.java
โฏ REPLACE-ME
KnotGraph.java
โฏ REPLACE-ME
KnotLibrary.java
โฏ REPLACE-ME
KnotEdge.java
โฏ REPLACE-ME
KnotNode.java
โฏ REPLACE-ME
---
## ๐ Getting Started
### โ๏ธ Prerequisites
Before getting started with Knot, ensure your runtime environment meets the following requirements:
- **Programming Language:** Java
### โ๏ธ Installation
#### With Maven
Add the repository and dependency in your `pom.xml` file:
````xml
jitpack.io
https://jitpack.io
com.github.iamjuaness
knot
0.0.1
````
#### With Gradle
Add JitPack in the `build.gradle` file and then the dependency:
````xml
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.iamjuaness:knot:0.0.1'
}
````
### ๐ค Usage
#### 1. Creating and visualizing a simple knot
This example shows how to create a Trefoil Knot and visualize it using the `KnotVisualizer` class:
````class
````
---
## ๐ Project Roadmap
- [X] **`Task 1`**: Implement basic Knot and molecular structures.
- [ ] **`Task 2`**: Expand visualization capabilities (3D support).
- [ ] **`Task 3`**: Add further molecular structures (e.g., amino acids, protein backbones).
---
## ๐ฐ Contributing
- **๐ฌ [Join the Discussions](https://github.com/iamjuaness/Knot/discussions)**: Share your insights, provide feedback, or ask questions.
- **๐ [Report Issues](https://github.com/iamjuaness/Knot/issues)**: Submit bugs found or log feature requests for the `Knot` project.
- **๐ก [Submit Pull Requests](https://github.com/iamjuaness/Knot/blob/main/CONTRIBUTING.md)**: Review open PRs, and submit your own PRs.
Contributing Guidelines
1. **Fork the Repository**: Start by forking the project repository to your github account.
2. **Clone Locally**: Clone the forked repository to your local machine using a git client.
```sh
git clone https://github.com/iamjuaness/Knot
```
3. **Create a New Branch**: Always work on a new branch, giving it a descriptive name.
```sh
git checkout -b new-feature-x
```
4. **Make Your Changes**: Develop and test your changes locally.
5. **Commit Your Changes**: Commit with a clear message describing your updates.
```sh
git commit -m 'Implemented new feature x.'
```
6. **Push to github**: Push the changes to your forked repository.
```sh
git push origin new-feature-x
```
7. **Submit a Pull Request**: Create a PR against the original project repository. Clearly describe the changes and their motivations.
8. **Review**: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph
---
## ๐ License
This project is protected under the [Mit License](https://choosealicense.com/licenses/mit/) License. For more details, refer to the [LICENSE](https://github.com/iamjuaness/knot/blob/master/LICENSE) file.
---
## ๐ Acknowledgments
- Special thanks to resources in knot theory and molecular biology that inspired the creation of this library.
---