Coder Social home page Coder Social logo

nsherry4 / peakaboo Goto Github PK

View Code? Open in Web Editor NEW
22.0 6.0 10.0 124.92 MB

XRF Analysis Software

Home Page: https://peakaboo.org

License: GNU General Public License v3.0

Java 99.96% Ruby 0.02% Shell 0.01% Batchfile 0.01%
xrf xrf-visualization physics chemistry java windows linux macos x-ray-physics

peakaboo's Introduction

Peakaboo

XRF Visualization Software

Java CI with Maven

Peakaboo allows users to identify the spectral origins of the XRF spectrum using a technique that fits all components of the K, L, or M spectrum including escape peaks and pileup peaks, and then plots their spatial intensity distributions as maps.

Peakaboo

Downloads for Windows, Mac, Linux

Learn how to use Peakaboo on our Wiki

Ask a question in our Discussions

Peak Fitting

The spectra produced are fitted with several K, L, or M lines for each element. The line positions and relative intensities for each line series were taken from several tabulated sources, including Xraylib. For fitting of the spectral peaks, a Pseudo-Voigt function is used by default. Thus, the identification of a particular element involves a close fit of multiple lines in the spectrum, each with its own shape.

Noise Reduction

Noise reduction is essential for spectra taken at very brief intervals while the sample is scanned in the X-Ray beam. The software provides a number of mathematical filters that are used in noise reduction or in background attenuation or removal. Noise filters include moving average, fast Fourier transform (FFT) low pass, Savitsky-Golay, and others.

Where applicable, noise removal filter parameters can be adjusted to suit the data in question. Best noise reduction with minimum change in peak shape is often achieved using a Savitsky-Golay filter.

Background Removal

Background removal or reduction is particularly important for spectra acquired using white radiation. Peakaboo has a number of background removal filters of varying sophistication and performance. Varying levels of background can be removed.

Results Mapping

Once peak fitting is complete, one or two dimentional data sets can be mapped to show the distribution of the selected elements. Peakaboo can show individual elements, composites of several elements, ratios of sets of elements, overlays of up to four sets of elements, as well as two dimensional histograms to compare element concentrations.

User Extendable

Peakaboo allows users who are comfortable with Java programming to extend Peakaboo in three ways:

  • Filters
  • Data Sources
  • Data Sinks

To get started creating your own filters or file format support, all you need is the Peakaboo JAR to build against. For more information on creating plugins, see the user manual.

Library and Plugins

Peakaboo can also be used as a library. This is also the easiest target to build custom plugins against. Read more about Peakaboo as a library without the GUI.

Building

Peakaboo builds and manages its dependencies with maven. It also has a dependency on xraylib. At the time of writing, xraylib was not available in maven, so a prebuilt version is included in a local maven repository. To build Peakaboo, run mvn package and it will produce a runnable jar file you can invoke with the java -jar <JARNAME> command.

peakaboo's People

Contributors

dependabot[bot] avatar nathanielsherry avatar nsherry4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

peakaboo's Issues

masked (marked bad) scan information does not properly carry through to subplots

Because the dimensions of the data change, the index values used to store the bad scans are no longer accurate, and now mark the wrong scan as bad, or cause index out of bounds exceptions

for that reason, 'bad scan' data is intentionally discarded in Peakaboo 3 when creating a subplot view

This could be addressed by recalculating the index values, or by storing the 'bad scan' data as a boolean list in the DataSource object so that CopiedDataSource could do the index adjustments for it, as well

Interpolation cap

Currently, the maximum number of interpolation iterations is limited by total map size as a matter of performance. This can lead to very small maps having very high levels of interpolation allowed, which doesn't really make sense. Interpolation should be limited to 2 or 3 levels regardless of map size.

Persistent Settings

Should Peakaboo remember preferences like log/linear, axes, etc between sessions?

Save Images with Explicit Sizing

Currently, plot/map images are saved at whatever size the window is at. This can make it hard to produce maps the same size on two different computers/monitors. When exporting images, the size should be confirmed with the user.

Maybe the default can be the current size, but we should probably also provide some other sensible defaults to choose from, along with manual entry.

Energy auto-calibration should be more thorough

The energy calibration currently looks for the best "rough" fit, then uses the slower "quality" algorithm to refine the result. Instead, the rough algorithm should be used to rule out, say, 99% of possibilities, leaving the rest for the quality algorithm to verify and then refine.

Taking a subset of a large data set freezes the UI for a time

Because any new SubsetDataSource needs to recalculate the mean/max scans and other values, it can take a long time to load a large subset of a large data set.

The UI should show the "Calculating Values" progress meter that it shows as part of opening data for the first time.

Documentation Update

Documentation needs to be updated with new screenshots, and with information on new features.

Application title not set

It looks like with Java 9 (and at least my impl of Java 8), setting the application title via the Toolkit's awtAppClassName field is no longer allowed, and generates deprecation warnings. This means that (on linux, at least) the application name is not set, and appears blank.

Allow customization of Curve Fitting

Different XRF data from different equipment is going to have differently properties, including different peak shapes, widths, etc. The user should be able to calibrate peak width and fitting function.

Allow minimum energy to be non-zero

Currently, users can set a max energy to scale their data properly, but if the scan does not start at 0 energy, it can skew the results, especially when points of interest are in different parts of a spectrum

Ratio view occationally shows white for one side of the ratio

After some complex series of steps which I have not been able to identify, the ratio view in the mapping window will fail to draw (or draw in white) one side of the ratio data.

Workaround: Close the map window and remap. Failing that, save your session, close Peakaboo, reopen it and reload your data and your session.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.