Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ciesielski-bsc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# ignore downloaded PDB files
res/models/pdb/

7 changes: 7 additions & 0 deletions ciesielski-bsc/Disclaimer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
With this project including another bachelor thesis' code base as well as its own, here is the distribution of code ownership:

Mateusz Ciesielski:
Every file inside of './res/', './src/', and outside of the three top-level folders is written or included by Mateusz Ciesielski as part of his "A reimplementation of the molecular modelling and visualization application BALLView using Julia and Electron" bachelor thesis.

Pascal Pfannes:
Every file inside of './dep/pfannes_bsc/' is either entirely written by Pascal Pfannes as part of his "Visualization of biological molecules in web browsers via three.js" bachelor thesis or only partly changed by Mateusz Ciesielski for project integration or extensibility purposes, with all changes contained in marked places of the './dep/pfannes_bsc/src/MoleculeVisualizer/index.html', './dep/pfannes_bsc/src/MoleculeVisualizer/js/main.js', and './dep/pfannes_bsc/src/MoleculeVisualizer/js/Visualizer.js' files.
39 changes: 39 additions & 0 deletions ciesielski-bsc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Bachelor Thesis


## Name
BALLView.jl

## Description
This project is meant to work as an interface between the still in-development 'BiochemicalAlgorithms.jl' package and a JavaScript visualization library called 'Molecule Visualizer'. It is meant to work as a front-end for the Julia package, serving as a molecular modelling and visualization tool and a successor to 'BALLView'.
The project is still a work-in-progress.

## Installation
For the application to work, the latest versions of [Julia](https://julialang.org/downloads/) and [Node.js](https://nodejs.org/en/download/) need to be installed. Make sure to add Julia to your PATH variable.
All modules and libraries used by the project can be installed via the following commands:
```bash
> cd ciesielski-bsc
> julia install.jl
```
```bash
> cd ciesielski-bsc/dep/pfannes_bsc/src/MoleculeVisualizer
> npm install
```

## Usage
To start the application run the following command:
```bash
> cd ciesielski-bsc
> julia main.jl
```
Most available functionalities can be read in "ciesielski-bsc/Usecases.md". Have fun!

## Authors and acknowledgment
The Julia application is written by Mateusz Ciesielski, relying on a JavaScript visualization library written by Pascal Pfannes.
The specific ownership of each code can be read in "ciesielski-bsc/Disclaimer.md".

## License
[MIT](https://choosealicense.com/licenses/mit/)

## Project status
The project is still a work-in-progress. Most of the functionalities of the JavaScript 'Molecule Visualizer' have been successfully integrated into and are callable from within Julia, however the functionalities of 'BiochemicalAlgorithms.jl' still need to be integrated -- which should not be a problem anymore, since everything is currently running in Julia and was specifically designed for a smooth integration.
84 changes: 84 additions & 0 deletions ciesielski-bsc/Usecases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
Use Case 1: Loading a supported file and displaying the structure.
Use Case Overview: 1 User clicks on "Select File" button or selects "File" -> "Select File" in the menu bar.
2 User picks a supported file.
3 File structure is displayed to the user in the viewer and the button layout changes.

Extensions: 2a User picks a not supported file.
Nothing will be displayed. Functionality remains intact. User must start over from Step 1.

Use Case 2: Loading a PDB file by ID from an online database.
Use Case Overview: 1 User clicks on "Load PDB by ID" button or selects "File" -> "Load PDB by ID" in the menu bar.
2 "Enter PDB here" input box appears. User types in a valid PDB ID and presses Enter.
3 PDB file structure is displayed to the user in the viewer and the button layout changes.

Extensions: 2a User types in a not valid PDB ID.
A popup window appears informing the user of the invalidity. Nothing is displayed. User must start over from Step 1.

Use Case 3: Downloading a PDB file by ID from an online database.
Use Case Overview: 1 User clicks on "Load PDB by ID" button or selects "File" -> "Load PDB by ID" in the menu bar.
2 "Enter PDB here" input box appears. User types in a valid PDB ID and presses Ctrl and Enter simultaneously.
3a If corresponding PDB file does not exist yet in the current directory, it is downloaded.
3b If corresponding PDB file does exist in the current directory, nothing is downloaded.
4 A popup window appears informing the user that the file exists. User is asked if the structure should be displayed.
5a If user clicks on "Yes" button, the popup window closes and Use Case 2 starts from step 3.
5b If user clicks on "No" button, the popup window closes and nothing is displayed.

Extensions: 2a User types in a not valid PDB ID.
A popup window appears informing the user of the invalidity. Nothing is downloaded. User must start over from Step 1.

Use Case 4: Changing the model type for the displayed PDB structure.
Use Case Overview: 1a User follows Use Case 1 and selects a ".pdb" file.
1b User follows Use Case 2.
1c User follows Use Case 3, including step 5a.
2 Menu with available model variations appears. Initially set to "Balls and Sticks".
3 User clicks on the model menu.
4 The displayed structure changes according to the user's selection in the menu.

Extensions: 1aa User follows Use Case 1 but selects a different file than a ".pdb" file.
Use Case 1 continues from step 3 without a model menu appearing.

Use Case 5: Resetting the camera position for the displayed structure.
Use Case Overview: 1 User follows Use Case 1, 2 or 3 and views a displayed structure.
2 User clicks on "Reset Camera" button or selects "View" -> "Reset Camera" in the menu bar.
3 The camera position for the displayed structure changes to its initial position.

Extensions: /

Use Case 6: Resetting the application to its original state.
Use Case Overview: 1 User follows Use Case 1, 2 or 3 and views a displayed structure.
2 User clicks on "Reset Viewer" button or selects "View" -> "Reset Viewer" in the menu bar.
3 The currently displayed structure is removed from the viewer and the button layout changes to its initial state.

Extensions: /

Use Case 7: Closing the application.
Use Case Overview: 1 User clicks on "Exit" button or selects "File" -> "Exit" in the menu bar.
2 The window closes and the application shuts down.

Extensions: /

Use Case 8: Changing the window's size.
Use Case Overview: 1 User selects "Window" -> "Change Window Size" in the menu bar.
2 A selection of percentages reaching from 10% to 100% appears.
3 User selects one of the percentages and the window's size changes to the selected percentage of the user's screen size.

Extensions: /

Use Case 9: Toggling the window's fullscreen mode.
Use Case Overview: 1 User selects "Window" -> "Toggle Fullscreen" in the menu bar.
2a If the window is currently in fullscreen mode, it exits fullscreen mode.
2b If the window is not currently in fullscreen mode, it enters fullscreen mode.

Extensions: /

Use Case 10: Opening a Julia shell.
Use Case Overview: 1 User selects "Debug" -> "Open Julia REPL" in the menu bar.
2 The Julia REPL opens up in a separate window.

Extensions: /

Use Case 11: Toggling the application's web developer tools for debugging purposes.
Use Case Overview: 1 User selects "Debug" -> "Toggle DevTools" in the menu bar.
2 The application's web developer tools open up on the right-hand side of the window.

Extensions: /
19 changes: 19 additions & 0 deletions ciesielski-bsc/dep/pfannes_bsc/.gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This file is a template, and might need editing before it works on your project.
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml

# Full project: https://gitlab.com/pages/plain-html
pages:
stage: deploy
script:
- mkdir .public
- cp -r ./src/MoleculeVisualizer/* .public
- rm -rf public
- mv .public public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
49 changes: 49 additions & 0 deletions ciesielski-bsc/dep/pfannes_bsc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Bachelor Thesis

This is where important information and progress regarding my project will go.

> ### Installation
> You need to make sure you have the latest version of [node.js](https://nodejs.org/en/download/) installed. \
> The main component of the project is a visualization library called [three.js](https://threejs.org/). All libraries
> used by the project are managed via the [npm package manager](https://www.npmjs.com/). Install them by executing the following commands:
> ```bash
> > cd bachelor_thesis/src/MoleculeVisualizer
> > npm install
> ```

> ### Usage
> MoleculeVisualizer is built as a single page application, so you need to run a local webserver in order to use it.
> The simplest solution is to use the [serve package](https://www.npmjs.com/package/serve) from npm by running the following
> inside the MoleculeVisualizer directory:
> ```bash
> > npx serve
> ```
> After executing this command, copy the URL that shows up in the CLI into your browser and the MoleculeVisualizer
> should start up.

> ### Priority List
>1. Grundlegende Visualisierungen: VdW (also nur Kugeln), Ball and Stick (Kugeln und Zylinder), Wireframe
>
>2. Verwendung über wie auch immer geartete API (damit wir es mit Daten füttern können)
>
>3. Möglichkeit, Meshes zu visualisieren
>
>4. Möglichkeit, Text-Label zu plazieren
>
>5. Stereo-Visualisierung
>
>6. Interaktionsmöglichkeiten (im Moment reicht es, die in der API zu haben, so dass man sich da später einhängen kann)
>
>7. Unterschiedliche Rendering-Möglichkeiten (Clipping, Capping, Transparenz, unterschiedliche Färbungen)
>
>8. Komplexere Visualisierungen (Ribbon-Modelle, Secondary Structure, SES, SAS, …) -> Würde erstmal durch Meshes abgedeckt


> ### Current Feature ToDo list
> 1. Add API for integration into Julia-BALL

> ### Current bug list
> None

> ## License
> [MIT](https://choosealicense.com/licenses/mit/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
#info {
background-color: rgba(0,0,0,0.75);
}

.lil-gui .gui-stats {
line-height: var(--widget-height);
padding: var(--padding);
}
</style>
<title>InstancedMesh Performance Test 1</title>
</head>
<body>
<div id="app"></div>
<div id="container"></div>
<script type="module" src="/main.js"></script>
</body>
</html>
Loading