Skip to content

Commit

Permalink
Bump from v0.8.0-beta to v0.8.0-beta.1 (#82)
Browse files Browse the repository at this point in the history
### Changes

- CrysFML and CrysPy simulations now show Bragg peaks.
- Updated and extended user tutorials.
- Contact email more prominently displayed.
- More detailed `README.md` file for the project.
- Updated module dependencies.
- Updated application installer.

### Bug Fixes

- CrysFML and GSAS-II binding on Linux have been fixed.
- Now project reset clears the experimental data correctly.
- When an example is loaded, the summary save path is corrected.
- Broken links in the About box have been updated.
- Minor text fixes.
  • Loading branch information
AndrewSazonov committed May 7, 2021
1 parent fe3838e commit 75e0e67
Show file tree
Hide file tree
Showing 38 changed files with 967 additions and 249 deletions.
12 changes: 9 additions & 3 deletions .github/workflows/build.yml
Expand Up @@ -6,7 +6,7 @@ jobs:
build:
if: "!contains(github.event.head_commit.message, '[ci skip]')"

timeout-minutes: 35
timeout-minutes: 40

runs-on: ${{ matrix.os }}

Expand All @@ -26,10 +26,10 @@ jobs:
- name: Set up non-Python dependences (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get install libgfortran4
sudo apt-get install libxcb-xinerama0
sudo apt-get install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xfixes0
sudo apt-get install libpulse-mainloop-glib0
# sudo apt-get install libgfortran4
# echo "QT_DEBUG_PLUGINS=1" >> $GITHUB_ENV

- name: Set up Python environment
Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:
- name: Create offline and online app installers from freezed app bundle
run: python ${{ env.SCRIPTS_PATH }}/MakeInstaller.py ${{ secrets.BINARY_SIGN_WIN }} ${{ secrets.CERT_ZIP_PASS }}

- name: Sign the installer on platforms which support it
- name: Sign the installer
run: python ${{ env.SCRIPTS_PATH }}/Signatures.py ${{ secrets.BINARY_SIGN_WIN }} ${{ secrets.CERT_ZIP_PASS }}

- name: Set up screen recording dependencies (macOS)
Expand All @@ -111,10 +111,15 @@ jobs:
Set-DisplayResolution -Width 1920 -Height 1080 -Force
Get-DisplayResolution
- name: Make dir for .desktop file (Linux)
if: runner.os == 'Linux'
run: mkdir -p ~/.local/share/applications/

- name: Install app
run: python ${{ env.SCRIPTS_PATH }}/InstallApp.py

- name: Run app in testmode, record screen and quit
if: runner.os != 'Windows'
run: python ${{ env.SCRIPTS_PATH }}/RunApp.py --testmode

- name: Rename test videos
Expand All @@ -135,6 +140,7 @@ jobs:
artifacts: "${{ env.DISTRIBUTION_PATH }}/${{ env.APP_NAME }}_*.zip,${{ env.DISTRIBUTION_PATH }}/tutorial_*.mp4"
tag: ${{ env.BRANCH_NAME }}
commit: ${{ env.BRANCH_NAME }}
bodyFile: "RELEASE.md"

- name: Upload online app installer to repository via FTP
if: github.event_name == 'push'
Expand Down
36 changes: 36 additions & 0 deletions CHANGELOG.md
@@ -1 +1,37 @@
# Version 0.8.0-beta.1 (7 May 2021)

### Changes

- CrysFML and CrysPy simulations now show Bragg peaks.
- Updated and extended user tutorials.
- Contact email more prominently displayed.
- More detailed `README.md` file for the project.
- Updated module dependencies.
- Updated application installer.

### Bug Fixes

- CrysFML and GSAS-II binding on Linux have been fixed.
- Now project reset clears the experimental data correctly.
- When an example is loaded, the summary save path is corrected.
- Broken links in the About box have been updated.
- Minor text fixes.

# Version 0.8.0-beta (3 May 2021)

This is a new version of easyDiffraction, which is now based on the easyScience framework. Whereas some features present in the original implementation have not yet been implemented, new easyDiffraction has improved GUI, additional back-end calculator interfaces, enhancement of minimization options and other improvements over the original version of easyDiffraction (0.7.0).

### New features in version 0.8.0:

- Ability to run in simulation-only mode
- Multiple crystallographic calculation engines: [CrysPy](https://github.com/ikibalin/cryspy), [CrysFML](https://code.ill.fr/scientific-software/crysfml) and [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS)
- Multiple minimization engines: [lmfit](https://lmfit.github.io/lmfit-py/), [bumps](https://github.com/bumps/bumps) and [DFO_LS](https://github.com/numericalalgorithmsgroup/dfols)
- High quality structure visualizer
- Interactive HTML report generation
- Built-in guided tutorials
- Improved visualization of experimental and simulated data
- Structural editor for cells and atoms
- Improved project management
- Parameter searching and filtering
- Engine independent cif interpreter/editor
- Engine independent background generation
87 changes: 87 additions & 0 deletions CONTRIBUTING.md
@@ -1 +1,88 @@
# Contributing

When contributing to the EasyDiffraction 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:

* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community

Examples of unacceptable behavior by participants include:

* 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 suport@easydiffraction.org. 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/
14 changes: 4 additions & 10 deletions DEPENDENCIES.md
@@ -1,17 +1,17 @@
# External Open Source Dependencies

The following Open Source projects are used in easyDiffraction (_if there are any issues with licensing, please contact us via <https://easydiffraction.org/contact.html>_):
The following Open Source projects are used in easyDiffraction (if there are any issues with licensing, please contact us via [support@easydiffraction.org](mailto:support@easydiffraction.org)):

## Computational libraries

* [CrysPy](https://github.com/ikibalin/cryspy): [MIT License](https://raw.githubusercontent.com/ikibalin/cryspy/master/LICENSE)
* [CrysPy](https://github.com/ikibalin/cryspy): [MIT License](https://raw.githubusercontent.com/ikibalin/cryspy/master/LICENSE)
* [CrysFML](https://code.ill.fr/scientific-software/crysfml): [GNU Lesser General Public License (LGPL)](https://raw.githubusercontent.com/easyScience/libsDarwin/main/libsDarwin/CFML_api/LICENSE)
* [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS): [License](https://raw.githubusercontent.com/easyScience/libsDarwin/main/libsDarwin/GSASII/license2013.txt)

## Visualization libraries

* [BokehJS](https://docs.bokeh.org/en/2.2.3/docs/user_guide/bokehjs.html): [License](https://raw.githubusercontent.com/bokeh/bokeh/branch-2.2/bokehjs/LICENSE)
* [ChemDoodle Web Components](https://web.chemdoodle.com/): [GNU General Public License (GPL)](http://www.gnu.org/licenses/gpl-3.0.html)
* [BokehJS](https://docs.bokeh.org/en/2.2.3/docs/user_guide/bokehjs.html): [License](https://raw.githubusercontent.com/bokeh/bokeh/branch-2.2/bokehjs/LICENSE)
* [ChemDoodle Web Components](https://web.chemdoodle.com/): [GNU General Public License (GPL)](http://www.gnu.org/licenses/gpl-3.0.html)

## Fonts

Expand All @@ -22,12 +22,6 @@ The following Open Source projects are used in easyDiffraction (_if there are an
* [PT Mono](https://fonts.google.com/specimen/PT+Mono): [SIL Open Font Licence (OFL)](https://scripts.sil.org/OFL)
* [Font Awesome](https://github.com/FortAwesome/Font-Awesome): [SIL Open Font Licence (OFL)](https://scripts.sil.org/OFL)


## Python Modules

Module information can be found at <https://app.fossa.com/attribution/ef7a4b12-0ea0-4c0e-a77a-791b5f307327>


## Notes

* GSAS-II: This product includes software produced by UChicago Argonne, LLC under Contract No. DE-AC02-06CH11357 with the Department of Energy.
144 changes: 78 additions & 66 deletions README.md
@@ -1,97 +1,109 @@
<img src="https://easydiffraction.github.io/images/easydiffraction-logo.svg" height="80"><img width="15"><img src="https://easydiffraction.github.io/images/easydiffraction-text.svg" height="80">

**easyDiffraction** is a scientific software for modelling and analysis of the diffraction data.

## Dev info

[![CI Build][20]][21]

[![Release][30]][31]

[![Downloads][70]][71] [![Lines of code][82]][80] [![Total lines][81]][80] [![Files][83]][80]

[![License][50]][51]

[![w3c][90]][91]

### Download easyDiffractionApp repo
* Open **Terminal**
* Change the current working directory to the location where you want the **easyDiffractionApp** directory
* Clone **easyDiffractionApp** repo from GitHub using **git**
```
git clone https://github.com/easyScience/easyDiffractionApp
```

### Install easyDiffractionApp dependencies
* Open **Terminal**
* Install [**Poetry**](https://python-poetry.org/docs/) (Python dependency manager)
* osx / linux / bashonwindows
```
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
```
* windows powershell
```
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python
```
* Go to **easyDiffractionApp** directory
* Create virtual environment for **easyDiffractionApp** and install its dependences using **poetry** (configuration file: **pyproject.toml**)
```
poetry install
```

### Launch easyDiffractionApp application
* Open **Terminal**
* Go to **easyDiffractionApp** directory
* Launch **easyDiffraction** application using **poetry**
```
poetry run easyDiffraction
```

### Update easyDiffractionApp dependencies
* Open **Terminal**
* Go to **easyDiffractionApp** directory
* Update **easyDiffractionApp** using **poetry** (configuration file: **pyproject.toml**)
```
poetry update
```

### Delete easyDiffractionApp
* Delete **easyDiffractionApp** directory
* Uninstall **Poetry**
* osx / linux / bashonwindows
```
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | POETRY_UNINSTALL=1 python
```
## [![CI Build][20]][21] [![Release][30]][31] [![Downloads][70]][71] [![Lines of code][82]][80] [![Total lines][81]][80] [![Files][83]][80] [![License][50]][51]

<img height="80"><img src="./resources/images/ed_logo.svg" height="65">

**easyDiffraction** is a scientific software for modelling and analysis of diffraction data. Currently, **easyDiffraction** covers classical 1D unpolarized neutron powder diffraction data collected at constant wavelength.

![easyDiffraction Screenshot](./resources/images/ed_analysis_dark.png)

## What is easyDiffraction for?

**easyDiffraction** allows simulation of diffraction patterns based on a structural model and refinement of its parameters. For refinement, the program uses a number of fitting engines (minimizers).

**easyDiffraction** is similar to crystallographic programs like FullProf, Jana, GSAS, ShelX, etc. Unlike these programs **easyDiffraction** is based on _external_ crystallographic libraries such as [CrysPy](https://github.com/ikibalin/cryspy), [CrysFML](https://code.ill.fr/scientific-software/crysfml) and [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS). This allows **easyDiffraction** to cover different functionality aspects within a single, intuitive and user-friendly graphical interface. These libraries are included with the installation so there is no need to download and compile any additional components.

## Main features

**easyDiffraction** is open source (currently [GPL v3](LICENSE.md)) and cross-platform, with support for Windows, macOS and Linux (Ubuntu).

The intuitive tabbed interface allows for a clear and defined data modelling and analysis workflow. There are also built-in step-by-step user guides and video tutorials for new users.

Current main features of **easyDiffraction**:

- Support for constant-wavelength 1D unpolarized neutron powder diffraction data.
- Structure refinement (yet unstable) using [CrysPy](https://github.com/ikibalin/cryspy), [CrysFML](https://code.ill.fr/scientific-software/crysfml) and [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS).
- Simulations of diffraction pattern using aforementioned libraries.
- Multiple minimization engines: [lmfit](https://lmfit.github.io/lmfit-py), [bumps](https://github.com/bumps/bumps) and [DFO-LS](https://github.com/numericalalgorithmsgroup/dfols).
- Crystal structure visualizer and builder.
- Diffraction pattern viewer, including Bragg peaks and difference curve.
- Live update of calculations on parameters change.
- Input files are in [CIF (Crystallographic Information File)](https://www.iucr.org/resources/cif) format.
- Interactive HTML and standard PDF report generation.
- Undo/redo for both parameter changes and fitting.

Planned improvements / new functionality for **easyDiffraction**:

- Improved refinement.
- Parameter constraints during refinement.
- Loading and simulation of Time-of-Flight data.
- Support for polarized neutron data.
- Magnetic structure refinement.
- Pair distribution function.
- X-ray data analysis.

## Getting Started

### Downloading

Download the official **easyDiffraction installer v0.8.0-beta** for your operating system:

- [Windows 10 and above, 32-bit](https://github.com/easyScience/easyDiffractionApp/releases/download/v0.8.0-beta.1/easyDiffraction_Windows_x86-32_v0.8.0-beta.1.zip)
- [macOS 10.15 and above, 64-bit](https://github.com/easyScience/easyDiffractionApp/releases/download/v0.8.0-beta.1/easyDiffraction_macOS_x86-64_v0.8.0-beta.1.zip)
- [Ubuntu 20.04 and above, 64-bit](https://github.com/easyScience/easyDiffractionApp/releases/download/v0.8.0-beta.1/easyDiffraction_Linux_x86-64_v0.8.0-beta.1.zip)

### Installing

Run **easyDiffraction installer** and follow the instructions.

macOS: If you see the message _easyDiffractionSetup.app can't be opened because it is from an unidentified developer_, do the following:
In the **Finder**, locate the **easyDiffraction installer app**, then _control-click_ the app icon, then choose _Open_ from the shortcut menu and finally click _Open_.

### Uninstalling

Run **MaintenanceTool** from the **easyDiffraction** installation directory, select _Remove all components_ and follow the instructions.

## Get in touch

For general questions or comments, please contact us at [support@easydiffraction.org](mailto:support@easydiffraction.org).

For bug reports and feature requests, please use [Issue Tracker](https://github.com/easyScience/easyDiffractionApp/issues) instead.

<!---URLs--->
<!---https://naereen.github.io/badges/--->

<!---CI Build Status--->
[20]: https://github.com/easyScience/easyDiffractionApp/workflows/build%20macOS,%20Linux,%20Windows/badge.svg

[20]: https://img.shields.io/github/workflow/status/easyScience/easyDiffractionApp/build%20macOS,%20Linux,%20Windows/master
[21]: https://github.com/easyScience/easyDiffractionApp/actions?query=workflow%3A%22build+macOS%2C+Linux%2C+Windows%22

<!---Release--->
[30]: https://img.shields.io/github/release/easyScience/easyDiffractionApp.svg

[30]: https://img.shields.io/github/release/easyScience/easyDiffractionApp.svg?include_prereleases
[31]: https://github.com/easyScience/easyDiffractionApp/releases

<!---License--->

[50]: https://img.shields.io/github/license/easyScience/easyDiffractionApp.svg
[51]: https://github.com/easyScience/easyDiffractionApp/blob/master/LICENSE.md

<!---LicenseScan--->

[60]: https://app.fossa.com/api/projects/git%2Bgithub.com%2FeasyScience%2FeasyDiffractionApp.svg?type=shield
[61]: https://app.fossa.com/projects/git%2Bgithub.com%2FeasyScience%2FeasyDiffractionApp?ref=badge_shield

<!---Downloads--->

[70]: https://img.shields.io/github/downloads/easyScience/easyDiffractionApp/total.svg
[71]: https://github.com/easyScience/easyDiffractionApp/releases

<!---Code statistics--->

[80]: https://github.com/easyScience/easyDiffractionApp
[81]: https://tokei.rs/b1/github/easyScience/easyDiffractionApp
[82]: https://tokei.rs/b1/github/easyScience/easyDiffractionApp?category=code
[83]: https://tokei.rs/b1/github/easyScience/easyDiffractionApp?category=files

<!---W3C validation--->

[90]: https://img.shields.io/w3c-validation/default?targetUrl=https://easyscience.github.io/easyDiffractionApp
[91]: https://easyscience.github.io/easyDiffractionApp

0 comments on commit 75e0e67

Please sign in to comment.