Skip to content
Merged
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
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,19 @@ env:
PROGNAME: managlyph

jobs:
version-sync:
name: Version sync check
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Verify application version consistency
run: ./scripts/check-version-sync.sh

linux:
name: Linux (Ubuntu)
needs: version-sync
runs-on: ubuntu-latest

steps:
Expand Down Expand Up @@ -45,6 +56,7 @@ jobs:
# --------------------------------------------------
windows-mingw:
name: Windows (MSYS2 MinGW64)
needs: version-sync
runs-on: windows-latest

defaults:
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ add_executable(managlyph
src/data/orbitals/wavefunction.cpp
src/gui/anaglyph_widget.cpp
src/gui/interface_window.cpp
src/gui/lighting_settings_dialog.cpp
src/gui/visualisation_settings_dialog.cpp
src/gui/logwindow.cpp
src/gui/mainwindow.cpp
src/gui/orbital_widget.cpp
Expand Down
92 changes: 92 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Contributing

When contributing to this repository, please first discuss the change you wish to make via issue,
email, or any other method with the owners of this repository before making a change.

Please note we have a code of conduct, please follow it in all your interactions with the project.

## Pull Request Process

1. Ensure any install or build dependencies are removed before the end of the layer when doing a
build.
2. Update the README.md with details of changes to the interface, this includes new environment
variables, exposed ports, useful file locations and container parameters.
3. Increase the version numbers in any examples files and the README.md to the new version that this
Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
do not have permission to do that, you may request the second reviewer to merge it for you.

## Code of Conduct

### Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.

### Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

### Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

### Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

### Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

### Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
92 changes: 48 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,47 +5,51 @@
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)

## Overview
Managlyph is a powerful educational tool for visualizing atomic and molecular
structures in 3D. It enables students and educators to explore atomic orbitals,
reaction mechanisms, and molecular properties interactively, enhancing learning
through dynamic 3D visualizations using red/cyan glasses or 3D monitors. Its
versatility and ease of use make it an invaluable resource for teaching complex
chemical concepts.

> [!TIP]
> * Download the Windows 64 bit installer [via this link](https://github.com/ifilot/managlyph/releases/latest/download/managlyph-installer-win64.exe)
> * Detailed information on how to use Managlyph can be found in the [online manual](https://ifilot.github.io/managlyph/).

## Features

- **Anaglyph Projection**: Immerse yourself in stunning 3D visualizations with
just a simple pair of red/cyan anaglyph glasses, bringing depth and realism to
your viewing experience. For those with specialized 3D equipment, the system
also supports interlacing, enabling seamless compatibility with a wide range
of 3D monitors and projectors. Whether you're exploring 3D content on basic
setups or advanced displays, this feature ensures accessibility and enhanced
visual performance for everyone.

![red/cyan stereographic projection](img/screenshot-anaglyph.png)
- **Molecular Orbitals**: Managlyph leverages the versatile 'Atom Bond Object'
(ABO) file format, a powerful tool for embedding and managing multiple
atomistic structures. These files can encapsulate complex details, such as
molecular geometries, chemical bonding, and even molecular orbitals
represented as isosurfaces. This flexibility allows for the seamless
integration and visualization of intricate structural and electronic
properties, making it an invaluable resource for advanced scientific modeling
and analysis.

![molecular orbitals](img/screenshot-molecular-orbitals.png)
- **Atomic Orbitals**: Create, project, and rotate atomic orbitals up to the 4f
subshell, providing an unparalleled opportunity to explore the intricate
details of atomic structures. This capability allows users to visualize and
analyze the shapes, orientations, and complexities of orbitals in 3D, offering
a deeper understanding of quantum mechanics and atomic interactions.

![molecular orbitals](img/screenshot-atomic-orbitals.png)

## Boost

**Managlyph** was developed with the generous financial support of the
[TU/e boost program](https://boost.tue.nl/projects/3d-visualization-with-artificial-intelligence-and-projection/).
Managlyph is a desktop application for 3D visualization of atomic and molecular
structures.

The application supports stereoscopic rendering via red/cyan anaglyph projection
and interlaced output for compatible 3D displays. Typical use cases include
classroom demonstrations, self-study, and interactive exploration of molecular
models.

## Documentation and Downloads
- Windows 64-bit installer:
https://github.com/ifilot/managlyph/releases/latest/download/managlyph-installer-win64.exe
- User manual:
https://ifilot.github.io/managlyph/

## Capabilities

### Stereoscopic Rendering
Managlyph provides red/cyan anaglyph rendering and interlaced stereo output.
These modes are intended for use with either anaglyph glasses or supported 3D
monitors/projectors.

![red/cyan stereographic projection](img/screenshot-anaglyph.png)

### ABO File Support and Molecular Orbitals
Managlyph uses the Atom Bond Object (ABO) format to store atomistic structures
and related metadata. ABO datasets can include molecular geometries, bonding
information, and molecular-orbital isosurfaces for visualization.

![molecular orbitals](img/screenshot-molecular-orbitals.png)

### Atomic Orbitals
The application can generate and render atomic orbitals up to the 4f subshell,
including rotation and inspection in 3D.

![atomic orbitals](img/screenshot-atomic-orbitals.png)

### Reaction Pathway Visualization
Managlyph can visualize elementary reaction pathways by interpolating between
structures (for example: reactants, intermediates, transition states, and
products). This allows stepwise inspection of geometry changes during a
reaction.

![reaction pathway](img/screenshot-reaction.png)

## Project Support
Development of Managlyph received financial support from the TU/e Boost
program:
https://boost.tue.nl/projects/3d-visualization-with-artificial-intelligence-and-projection/
Binary file not shown.
Binary file not shown.
4 changes: 4 additions & 0 deletions assets/shaders/phong.fs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ uniform float specular_strength;
uniform float shininess; // specular exponent (e.g. 16–128)
uniform float edge_strength;
uniform float edge_power;
uniform int camera_mode;

out vec4 fragColor;

Expand All @@ -21,6 +22,9 @@ void main()
vec3 N = normalize(normal_eyespace);
vec3 L = normalize(lightdirection_eyespace);
vec3 V = normalize(vertex_direction_eyespace);
if (camera_mode == 1) {
V = vec3(0.0, 0.0, 1.0);
}

// --- Ambient ---
vec3 ambient = ambient_strength * light_color;
Expand Down
7 changes: 1 addition & 6 deletions assets/shaders/simplecanvas.fs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,5 @@ layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;

void main()
{
vec3 col = texture(regular_texture, TexCoords).rgb;
if(length(col) > .1) {
FragColor = vec4(col, 1.0f);
} else {
FragColor = vec4(col, 0.0f);
}
FragColor = texture(regular_texture, TexCoords);
}
11 changes: 11 additions & 0 deletions docs/source/_static/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,15 @@
background: #24292e;
padding: 6px 10px;
border-radius: 4px;
}

/* Disable horizontal scrolling for tables */
.wy-table-responsive {
overflow-x: visible !important;
}

/* Allow table cells to wrap normally */
.wy-table-responsive table td,
.wy-table-responsive table th {
white-space: normal !important;
}
Binary file added docs/source/_static/img/screenshot_4dz2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/source/building_models.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Building Models
===============

Managlyph renders 3D geometry stored inside ABO containers. These models can
represent molecular orbitals, isosurfaces, or general 3D meshes. Models are
typically prepared using **AboBuilder**, a companion tool for constructing ABO
files compatible with Managlyph.

Using AboBuilder
----------------

AboBuilder provides tools for constructing atomic structures and generating
renderable geometry for use in Managlyph. It supports:

- construction of molecular and atomic structures
- generation of orbital and isosurface meshes
- export of frame data and geometry to the ABO container format

AboBuilder is available at: `https://ifilot.github.io/abobuilder/ <https://ifilot.github.io/abobuilder/>`_

Generated ABO files can be opened directly in Managlyph.

Integration with PyQInt
-----------------------

AboBuilder can integrate with **PyQInt**, a quantum chemistry library used to
compute electronic structure properties such as molecular orbitals and electron
density distributions.

PyQInt project page: `https://github.com/ifilot/pyqint <https://github.com/ifilot/pyqint>`_

This integration enables the generation of orbital surfaces and related data
for visualization.

Typical workflow:

1. Compute molecular orbitals or electron density using PyQInt.
2. Use AboBuilder (in conjunction with PyTessel) to convert computed data into isosurfaces or meshes.
3. Export the result to an ABO container.
4. Open the ABO file in Managlyph for stereographic visualization.
13 changes: 13 additions & 0 deletions docs/source/community_guidelines.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. index:: Community Guidelines

Community guidelines
====================

* Contributions to :program:`Managlyph` are always welcome and appreciated. Before doing
so, please first read the `CONTRIBUTING <https://github.com/ifilot/managlyph/blob/master/CONTRIBUTING.md>`_
guide.
* For reporting issues or problems with the software, you are kindly invited to
`to open a new issue on Github with the bug tag <https://github.com/ifilot/managlyph/issues/new?labels=bug>`_.
* If you seek support in using :program:`Managlyph`, please
`open an issue with the question tag <https://github.com/ifilot/managlyph/issues/new?labels=question>`_.
* If you wish to contact the developers, please send an e-mail to ivo@ivofilot.nl.
Loading