Name | SWAXSanalysis JSON |
Version |
2025.4.3.0
JSON |
| download |
home_page | None |
Summary | Package allowing the conversion and analysis of SAXS and WAXS data (EDF format) that's fresh out of the machine. This package convertis the EDF files to an HDF5 file with the NeXus standard for the x-ray community. |
upload_time | 2025-08-04 13:29:23 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | None |
keywords |
edf
hdf5
nexus
data analysis
x-ray
xeuss
saxs
waxs
swaxs
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# SWAXSanalysis
___
This package is used to convert edf files that contain one header and one dataset into an HDF5 file that contains
information selected by the user.
Versioning Y.X1.X2.X3 :
- Y : year of release
- X1 : Big update (refactoring, new GUI, new way to use...)
- X2 : Update including new functionality.
- X3 : If 0, stable release, if not, it's a work in progress
## How it works
___
To convert the EDF file, the program uses a configuration file created by the user. To help create said file, a GUI
is provided. This same GUI can be used to do basic processes to an HDF5 file that follows the NXcanSAS definition,
as described by the NeXus Foundation : https://manual.nexusformat.org/classes/applications/NXcanSAS.html#nxcansas
Once the configuration file has been created it should be saved in the "configs" folder inside the Data Treatment
Center. You need to move the config file inside the Data Treatment Center directly for it to be detected and used in
the conversion of file. By default, the Data Treatment Center is created on your desktop.
Once the config file is moved, you can put the EDF files you want to convert to hdf5 in the Treatment Queue folder.
You can also use the package directly in a python script by importing the main class and some utility functions :
```python
from SWAXSanalysis.class_nexus_file import NexusFile
from SWAXSanalysis.utils import save_data, extract_from_h5, delete_data
```
In any case, an example notebook along with a jupyter notebook launcher is present in
`SWAXSanalysis/machine_configs/XEUSS`. Otherwise, a copy of this jupyter launcher / notebook is also present in the
Data Treatment center once the app has been launched.
## How to install
___
You have to activate a python virtual environment (more info on how to activate a Venv
[here](https://docs.python.org/3/library/venv.html)) and type the following command :
```PowerShell
pip install SWAXSanalysis
```
After SWAXSanalysis is installed you need to install this branch of smi_analysis via the following command
```PowerShell
pip install git+https://github.com/gfreychet/smi-analysis.git@master
```
This wraps up the installation of the package in the activated virtual environment. If you want to use the GUI, you
only need to type
```PowerShell
SWAXSanalysis
```
in the same activated virtual environment
The conversion process can be automated if the `launcher.py` has been launched with the argument `--jenkins "true"` like so :
```PowerShell
python3 -m SWAXSanalysis.launcher --jenkins true
```
## Changing the location of the Data Treatment Center
___
By default, the Data Treatment Center and Treatment Queue folder will be created on your desktop. To change the
location of the Data Treatment Center, go to :
```
path\to\your\venv\Lib\site-packages\SWAXSanalysis
```
and open the `__init__.py` file. In this file, find this line (should be line N°28) :
```python
ENV_PATH: Path = DESKTOP_PATH
```
And change it to
```python
ENV_PATH: Path = Path(r"path\where\Data Treatment Center\should\be")
```
## Implementing new code
___
### New process
To add a new process to the code, simply go to the class_nexus_file.py and in the class NexusFile, you can define a
new method. There are some things you should know :
1. If you want your process to be used only in script, there is no special condition. However if you want it to be
picked up by the GUI, the method's name must start with `process_...`.
2. If you want the process to be available in the GUI. You have to follow this signature standard :
```python
def process_example(
self,
param1: type1 = default1,
param2: type2 = default2,
param3: type3 = default3
) -> None:
pass
```
You need to type your variables and give it a default value. You can put any default value but `None` or `""` are
the most generic ones. Don't hesitate to look at the other processes to guide you.
To learn more about typing :\
https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html
3. A process must include a for loop to apply the process to all files :
```python
for index, smi_data in enumerate(self.list_smi_data):
pass
```
Usually, we iterate over `self.list_smi_data` since it's the pre-processed data and it was corrected via pyFAI. But
should you want to iterate over the HDF5 files directly you can use `self.nx_files`.\
This loop should encompass al the code that actually treats and manipulate the smi_data.
4. If you want to add a way to save data you need to use the `save_data` function, present in the same file.
5. If you want to add a way to display data you need to use the `_display_data` method. This method is quite complex
so don't hesitate to look at other processes to see how to use it properly.
## Testing new implementation
___
When implementing new code in the package, you should always test if you broke something. To do so, you have a few
test that you can conduct. Those test are present in the `tests` folder of the github project. In this folder you have :
- test_conversion : which is a test that should always be run
- test_new_nexus_def : this test should be run in case you have implemented a new NeXus definition
## Known issues
___
- Changing the `ENV_PATH` by changing the `__init__.py` script is impractical.
- While creating the configuration file, there is no way to choose the NeXus definition, meaning that you have to
change the loaded definition in the python script directly.
- The program can't handle anything other than EDF file with one header and one dataset
- Azimuthal angle range is behaving weirdly when 0 is not in the range
- 2 param intensity is still a bit of a work in progress but should work as long as you do not use it with the batch
option enabled
- While processing something in the `data processing` tab, the windows stops responding but everything it is still
processing.
## Prospects
___
- Manage uncertainty
-
Raw data
{
"_id": null,
"home_page": null,
"name": "SWAXSanalysis",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "EDF, HDF5, NeXus, Data analysis, X-ray, Xeuss, SAXS, WAXS, SWAXS",
"author": null,
"author_email": "Adrien Toulouse <toulouseadrienjob@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f2/c6/9ff93170984dae9643aabc51498a64f33509710882917a5c967893417e85/swaxsanalysis-2025.4.3.0.tar.gz",
"platform": null,
"description": "# SWAXSanalysis\r\n___\r\nThis package is used to convert edf files that contain one header and one dataset into an HDF5 file that contains \r\ninformation selected by the user.\r\n\r\nVersioning Y.X1.X2.X3 :\r\n- Y : year of release\r\n- X1 : Big update (refactoring, new GUI, new way to use...)\r\n- X2 : Update including new functionality.\r\n- X3 : If 0, stable release, if not, it's a work in progress\r\n\r\n## How it works\r\n___\r\nTo convert the EDF file, the program uses a configuration file created by the user. To help create said file, a GUI \r\nis provided. This same GUI can be used to do basic processes to an HDF5 file that follows the NXcanSAS definition, \r\nas described by the NeXus Foundation : https://manual.nexusformat.org/classes/applications/NXcanSAS.html#nxcansas \r\n\r\nOnce the configuration file has been created it should be saved in the \"configs\" folder inside the Data Treatment \r\nCenter. You need to move the config file inside the Data Treatment Center directly for it to be detected and used in \r\nthe conversion of file. By default, the Data Treatment Center is created on your desktop.\r\n\r\nOnce the config file is moved, you can put the EDF files you want to convert to hdf5 in the Treatment Queue folder.\r\n\r\nYou can also use the package directly in a python script by importing the main class and some utility functions :\r\n```python\r\nfrom SWAXSanalysis.class_nexus_file import NexusFile\r\nfrom SWAXSanalysis.utils import save_data, extract_from_h5, delete_data\r\n```\r\n\r\nIn any case, an example notebook along with a jupyter notebook launcher is present in \r\n`SWAXSanalysis/machine_configs/XEUSS`. Otherwise, a copy of this jupyter launcher / notebook is also present in the \r\nData Treatment center once the app has been launched.\r\n## How to install\r\n___\r\nYou have to activate a python virtual environment (more info on how to activate a Venv \r\n[here](https://docs.python.org/3/library/venv.html)) and type the following command :\r\n```PowerShell\r\npip install SWAXSanalysis\r\n```\r\nAfter SWAXSanalysis is installed you need to install this branch of smi_analysis via the following command\r\n```PowerShell\r\npip install git+https://github.com/gfreychet/smi-analysis.git@master\r\n```\r\nThis wraps up the installation of the package in the activated virtual environment. If you want to use the GUI, you \r\nonly need to type\r\n```PowerShell\r\nSWAXSanalysis\r\n```\r\nin the same activated virtual environment\r\n\r\nThe conversion process can be automated if the `launcher.py` has been launched with the argument `--jenkins \"true\"` like so :\r\n```PowerShell\r\npython3 -m SWAXSanalysis.launcher --jenkins true \r\n```\r\n\r\n## Changing the location of the Data Treatment Center\r\n___\r\nBy default, the Data Treatment Center and Treatment Queue folder will be created on your desktop. To change the \r\nlocation of the Data Treatment Center, go to :\r\n```\r\npath\\to\\your\\venv\\Lib\\site-packages\\SWAXSanalysis\r\n ```\r\nand open the `__init__.py` file. In this file, find this line (should be line N\u00b028) :\r\n```python\r\nENV_PATH: Path = DESKTOP_PATH\r\n```\r\nAnd change it to\r\n```python\r\nENV_PATH: Path = Path(r\"path\\where\\Data Treatment Center\\should\\be\")\r\n```\r\n\r\n## Implementing new code\r\n___\r\n### New process\r\nTo add a new process to the code, simply go to the class_nexus_file.py and in the class NexusFile, you can define a \r\nnew method. There are some things you should know :\r\n1. If you want your process to be used only in script, there is no special condition. However if you want it to be \r\n picked up by the GUI, the method's name must start with `process_...`.\r\n2. If you want the process to be available in the GUI. You have to follow this signature standard :\r\n```python\r\ndef process_example(\r\n self,\r\n param1: type1 = default1,\r\n param2: type2 = default2,\r\n param3: type3 = default3\r\n ) -> None:\r\n pass\r\n```\r\nYou need to type your variables and give it a default value. You can put any default value but `None` or `\"\"` are \r\nthe most generic ones. Don't hesitate to look at the other processes to guide you.\r\n\r\nTo learn more about typing :\\\r\nhttps://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html\r\n3. A process must include a for loop to apply the process to all files :\r\n```python\r\nfor index, smi_data in enumerate(self.list_smi_data):\r\n pass\r\n```\r\nUsually, we iterate over `self.list_smi_data` since it's the pre-processed data and it was corrected via pyFAI. But \r\nshould you want to iterate over the HDF5 files directly you can use `self.nx_files`.\\\r\nThis loop should encompass al the code that actually treats and manipulate the smi_data.\r\n\r\n4. If you want to add a way to save data you need to use the `save_data` function, present in the same file.\r\n5. If you want to add a way to display data you need to use the `_display_data` method. This method is quite complex \r\n so don't hesitate to look at other processes to see how to use it properly.\r\n\r\n## Testing new implementation\r\n___\r\nWhen implementing new code in the package, you should always test if you broke something. To do so, you have a few \r\ntest that you can conduct. Those test are present in the `tests` folder of the github project. In this folder you have :\r\n- test_conversion : which is a test that should always be run\r\n- test_new_nexus_def : this test should be run in case you have implemented a new NeXus definition \r\n\r\n## Known issues\r\n___\r\n- Changing the `ENV_PATH` by changing the `__init__.py` script is impractical.\r\n- While creating the configuration file, there is no way to choose the NeXus definition, meaning that you have to \r\n change the loaded definition in the python script directly.\r\n- The program can't handle anything other than EDF file with one header and one dataset\r\n- Azimuthal angle range is behaving weirdly when 0 is not in the range\r\n- 2 param intensity is still a bit of a work in progress but should work as long as you do not use it with the batch \r\n option enabled\r\n- While processing something in the `data processing` tab, the windows stops responding but everything it is still \r\n processing.\r\n\r\n## Prospects\r\n___\r\n- Manage uncertainty\r\n- \r\n",
"bugtrack_url": null,
"license": null,
"summary": "Package allowing the conversion and analysis of SAXS and WAXS data (EDF format) that's fresh out of the machine. This package convertis the EDF files to an HDF5 file with the NeXus standard for the x-ray community.",
"version": "2025.4.3.0",
"project_urls": {
"Homepage": "https://github.com/CEA-MetroCarac/SWAXSanalysis"
},
"split_keywords": [
"edf",
" hdf5",
" nexus",
" data analysis",
" x-ray",
" xeuss",
" saxs",
" waxs",
" swaxs"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d579e033a39029af93feb18a1a6434b6199013559a06aa6eb200a8322f0cefdf",
"md5": "91cbfbe1a62615690f86c4744c85f51c",
"sha256": "6c207140508d9add745385820def7d0271b1bc5f7f1fb669da4f393c37d8d4d1"
},
"downloads": -1,
"filename": "swaxsanalysis-2025.4.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "91cbfbe1a62615690f86c4744c85f51c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 8316664,
"upload_time": "2025-08-04T13:29:17",
"upload_time_iso_8601": "2025-08-04T13:29:17.669856Z",
"url": "https://files.pythonhosted.org/packages/d5/79/e033a39029af93feb18a1a6434b6199013559a06aa6eb200a8322f0cefdf/swaxsanalysis-2025.4.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f2c69ff93170984dae9643aabc51498a64f33509710882917a5c967893417e85",
"md5": "219ccac17cc6e919ecdfa36262776d92",
"sha256": "10d9bccf1cbf2257c22428e07307cd26976c747a3b612f039ffd8c93d715d07e"
},
"downloads": -1,
"filename": "swaxsanalysis-2025.4.3.0.tar.gz",
"has_sig": false,
"md5_digest": "219ccac17cc6e919ecdfa36262776d92",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 8312428,
"upload_time": "2025-08-04T13:29:23",
"upload_time_iso_8601": "2025-08-04T13:29:23.705055Z",
"url": "https://files.pythonhosted.org/packages/f2/c6/9ff93170984dae9643aabc51498a64f33509710882917a5c967893417e85/swaxsanalysis-2025.4.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 13:29:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CEA-MetroCarac",
"github_project": "SWAXSanalysis",
"github_not_found": true,
"lcname": "swaxsanalysis"
}