diff --git a/README.md b/README.md index e065f54..f0ab3fd 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # Pair Distribution Function Converter ## Introduction -This code was developed as part of my M.Sc. thesis at the University of Copenhagen and is ment to improve data +This code was developed as part of my M.Sc. thesis at the University of Copenhagen and is meant to improve data analysis of x-ray data. More specifical to improve data analysis of _in situ_ measurements using the Pair Distribution Function (PDF). -This simple program is ment to easy the workload of preprocessing the data before modelling is preformed and to -help the user keep track of all used parameters making data reproduceable. -This framework is build using the following two packages: +This simple program is meant to ease the workload of preprocessing the data before modeling is preformed and to +help the user keep track of all used parameters making data reproducible. +This framework is built using the following two packages: * [PyFAI](https://pyfai.readthedocs.io/en/latest/)[1](#references) * [PDfgetX3](https://www.diffpy.org/products/pdfgetx.html)[2](#references) @@ -15,10 +15,10 @@ an almost religous question, PyFAI was chosen as it supports the most used ones: [Fit2D](http://www.esrf.eu/computing/scientific/FIT2D/)[3](#references) and [Dioptas](http://www.clemensprescher.com/programs/dioptas)[4](#references). PyFAI can load both calibration and mask files from either of those programs while still having its own framework for -handling these tasks. This flexibility made it the obivois choise. +handling these tasks. This flexibility made it the obvious choice. The two following sections will provide a simple guide to installing and running the program. -A more complete guide for installing, how to use examples and implementation -can be found in [PDFconverter_manual.pdf](PDFconverter_manual.pdf). +A more complete guide for installing, how to use examples and implementation can be found in +[PDFconverter_manual.pdf](PDFconverter_manual.pdf). The __README.md__ file consist of the following sections: 1. [Installing PDF Converter](#Installing-pdf-converter) @@ -30,35 +30,43 @@ The __README.md__ file consist of the following sections: 7. [References](#references) ## Installing PDF Converter -For running this program i recommend using Python 3.7 but it is compatible down to Python 3.4. If you do not have +For running this program I recommend using Python 3.7 but it is compatible down to Python 3.4. If you do not have Python installed the easiest way is to install [Anaconda](https://www.anaconda.com/distribution/#windows). Remember to -add Anaconda to you path when installing it. To verify that python has been installed correctly after installing Anaconda -open your terminal and type _python --version_, if this does not produce an error then you have you +add Anaconda to your path when installing it. To verify that python has been installed correctly after installing Anaconda +open your terminal and type _python --version_, if this does not produce an error then you have installed Python correctly! ``` python --version >>> Python 3.7.4 ``` -The "hardest" packages to install for this program is functional are PyFAI and PDFgetX3. I recommend reading their -installation guides, for getting help installing PyFAI [press here](https://pyfai.readthedocs.io/en/latest/operations/index.html#detailed-installation-procedure-on-different-operating-system) -and for PDFgetX3 [press here](https://www.diffpy.org/doc/pdfgetx/2.0.0/install.html). Remember to chose the right operating system! -When these packages are correctly installed then you are practically done, all of the remining packages can simply be -installed using either Anaconda or pip. Unfortunately, the simplest way to install all packages is to run the program -and install the missing packages when it gives an error. Examples on how to install are shown below. +The "hardest" packages to install for this program are PyFAI and PDFgetX3. I recommend reading their +installation guides on their homapages, for getting help installing +PyFAI [press here](https://pyfai.readthedocs.io/en/latest/operations/index.html#detailed-installation-procedure-on-different-operating-system) +and for PDFgetX3 [press here](https://www.diffpy.org/doc/pdfgetx/2.0.0/install.html). Remember to choose the right operating system! +When these packages are correctly installed then you are practically done, all of the remaining packages can simply be +installed using either Anaconda or pip, which ever you prefer. Remember only to install the needed packages with either +of them and not both of them, as it will confuse Python! ```` pip install tqdm or conda install tqdm ```` -The number of packages needed to run this program depend on how you chose to install Python. If you chose Anaconda +Unfortunately, the simplest way to install the remaining packages, +is to run the program and install the missing packages when the following error is produced: +```` +>>> Traceback (most recent call last): +>>> File "", line 1, in +>>> ModuleNotFoundError: No module named 'prompter' +```` +The number of packages needed to run this program depends on how you chose to install Python. If you chose Anaconda then you should only have to install 2-3 additional packages. ## Running the code -This program has three core functions: calibration, integration and background subtraction. It is so far +This program has three core functions: calibration, integration and background subtraction. It is so far recommended to use Fit2D for calibration. -The __main_config.init__ is used to setup the program. To make the program run only three parameters need to be specified, +The __main_config.init__ is used to configure the program. To run only the program only three parameters are needed, *Importdir*, *Outputdir* and *Calibrationconfig*. If nothing else is specified default values will be imported from __main_default.init__. -To ignore/use dedault values within the progrem either use '#' to outcomment the parameter, set it to None or simply delete it +To ignore/use default values within the program either use '#' at the beginning of the line, set the variable to None or simply delete it from __main_config.init__. The first parameter that needs to be specific is *Importdir*. ```` @@ -67,28 +75,27 @@ or Importdir = /Home/Folder/Data ```` All '.tif' files within these two directories will be imported. The first specified directory is data of interest while -the second is background data. It is not necesary to specify a background directory, hence no background will be subtracted +the second is background data. It is not necessary to specify a background directory, hence no background will be subtracted from the data. -The second parameters is the *Outputdir*. +The second parameter is the *Outputdir* variable. ````angular2 Outputdir = /Home/Folder ```` This is the directory where the __project folder__ will be created. The __project folder__ will be named after the parameter _Stemname_ and is where all generated data and used configurations are saved. -The calibration and mask file is specified through the parameters _Calibrationconfig_ and _Mask_. -The +The calibration and mask file is specified through the parameters _Calibrationconfig_ and _Mask_. ## The GUI -To get a better overview of how background subtraction and change in parameters affect the PDFs a simply GUI was implemented. -The GUI consist of 4 different plots, different possiblities for automated background subtraction and easy access to +To get a better overview of how background subtraction and change in parameters affect the PDFs a simple GUI was implemented. +The GUI consist of 4 different plots, different possibilities for automated background subtraction and easy access to the parameters needed for the Fourier Transformation. ![GUI example](./img/gui.png) On the left side of the GUI 4 different plots are present and the header shows the current plotted data set and its scaling factor. From the top and down I(q), F(q), G(r) and scaling factors as a function of time. By hovering the scaling -plot the 3 top graphs will change to corresponding I(q), F(q) and G(r). E.g. This gives the possibility of deciding the best +plot the 3 top graphs will change to the corresponding timeframe hovered. E.g. This gives the possibility of deciding the best Qmax and to remove unique atom-atom distances from the PDF through the background subtraction. The __method box__ is an automatic way of calculating the scaling factor/factors for a large dataset. The different methods are explained in the table below. When a method is chosen and __Recalculating scaling__ is pressed, then the @@ -98,18 +105,27 @@ and Qmax. | Method | Description | | :---: | --- | | __1__ | One scaling factor is calculated | -| __2__ | A scaling factor for each dataframe is calculated. | +| __2__ | A scaling factor for each data frame is calculated. | | __3__ | Not implemented, room for improvement. | | __4__ | Not implemented, room for improvement. | All scaling factors can be altered by the __relative scale__, either by giving a float or changing the scale bar. -The chance is comittedby pressing the __Calculate__ button. Furthermore, specific time areas of the data set can be -adjust by using the __First__ and __Last__ box and then pressing __Choose frames__. This will marc an area on the +The chance is committed by pressing the __Calculate__ button. Furthermore, specific time areas of the data set can be +adjusted by using the __First__ and __Last__ box and then pressing __Choose frames__. This will mark an area on the 4th plot indicating which frames will have their scaling factors changed by the next __Calculate__. Scaling factors can also be set to absolute values by using the __Scale__ field and then pressing __Calculate__. To remove miss selected frames the __Clear__ button can be pressed. - +Parameters such as Qmin, Qmax, rstep etc. determine the range of how the scaling factors +are determined and how the Fourier transformation is done. By pressing __Set q and r range__ the plots will be redrawn. +In the upper right corner, 4 checkboxes are shown. Here the outputs generated are determined. In the example shown below +only F(q) and G(r) are save in the __project folder__. + +* [ ] I(q) +* [ ] S(q) +* [X] F(q) +* [X] G(r) +The GUI is closed and outputs are created by pressing __Continue__. ## Argparse Possible arguments for PDF Converter. @@ -126,8 +142,8 @@ python __init__.py --create fit2d >>> Creating .Fit2D calibration file! ```` ## Author -* __Emil T. S. Kjær__, PhD student in Nanoscience at the University of Copenhagen -* suporvisor __Kirsten M. Ø. Jensen__, associate professor at the University og Copenhagen. +* __Emil T. S. Kjær__, Ph.D. student in Nanoscience at the University of Copenhagen +* Supervisor __Kirsten M. Ø. Jensen__, associate professor at the University of Copenhagen. Should there be any question, desired improvement or bugs please contact me on GitHub or through my email __etsk@chem.ku.dk__.