Multiscale-Statistical-Analysis

Multiscale regression/discrimination analysis software, which uses multiscale area data exported from MountainsMap®.

MIT License

Stars
2
Committers
1
Multiscale-Statistical-Analysis - Version 0.5.0 - Restructuring of plot data backend Latest Release

Published by MatthewSpofford about 4 years ago

Overview

This release contains few additions to the GUI, and was mainly focused on restructuring the backend of PlotData's internal data structure. The PlotData class was originally using various lists that stored the overall data read from results files. However, with these being difficult to maintain, an easy to use structure needed to replace it. Therefore, this release brings along the MultiscaleData class (maintains the data read from an individual result/surface) and the MultiscaleDataset class (maintains the overall multiscale data, adapting the older structure with the new and polished structure). Since most of the analysis backend still depends on the less efficient structuring of the previous PlotData class, there is still more work that will need to be done to fix this.

The PlotData class has now been replaced with MultiscaleImporter, and is only used for importing files, as it should not be intended to store any multiscale information. The MultiscaleImporter then outputs a MultiscaleData class that can be compiled/appended onto a MultiscaleDataset stored within the currently opened Workbook.

As for the small changes to the GUI, the HHP plot generation tool has been temporarily removed until further notice. The HPP plot was in a nonfunctional state, and so it did not seem appropriate to keep it packaged in the pre-releases. The surface importer tool also now displays a warning to the user with regards to consistency with measurements/tools in order to have accurate results from the app. But more importantly, the user now has the capability of adding more surfaces on to a workbook. This means data is no longer replaced when a new file is open, improving workflow. Along with this change, a warning is now displayed if there are any scale discrepancies, and a scale does not line up between files, causing those scales to be ignored.

Changelog

Project Files/Documentation

  • Added build specifications for pyinstaller to repository files
  • Mentioned in CONTRIBUTING the need for adding blocking labels, as well as improving detail for issues/commits/pull requests (#99)
  • Replace instances of the word "fractal" with "multiscale" throughout the repository to maintain consistency (#102)

Enhancements

  • Merged and moved file name labels in the data table on the top row (#21)
  • Cells within the data table can no longer be edited, as this was not intended (#22)
  • Reworked relationship between Workbook structure and PlotData (#54)
    • The Workbooks now store a MultiscaleDataset and have no connection to the importer utility
  • Restructured PlotData backend (#88)
    • Neatly storing data in a usable dataset structure (MultiscaleData & MultiscaleDataset)
    • Converted PlotData into file import utility module and relabeled as MultiscaleImporter
  • Added warnings to importer stating that measurement equipment needs to be identical between datasets (#100)
  • Added warnings if scales to imported files were ignored during the importing process (#101)
  • Removed selection of sensitivity/complexity options (option does not change results and was not needed) (#103)

Bugfixes

  • Resolved problem with new surfaces overwriting/replacing previously imported surfaces (#20)
  • Height-Height Plot generation was incomplete and has been removed/resolved until further notice (#28)
  • Fixed issue with renaming workbooks, which would only rename the workbook to what was typed, not the actual text in the tree menu (#75)
  • Fixed issue where graphing surfaces with varying scales threw a ValueError: x and y must be the same size error (#86)
  • Resolved issue where PlotData open_file2 (now named open_results_file) function does not correctly handle scale discrepancies (#87)
Multiscale-Statistical-Analysis - Version 0.4.1 - Patched surface import failsafe issue

Published by MatthewSpofford over 4 years ago

Overview

This patch fixed some issues with the failsafe not ending the importing process, causing it to run in the background. The threading backend has now been reworked and has removed threading entirely.

Changelog

Project Files/Documentation

  • PyPi README now links to PyPi webpage (#92)
    • Added PyPi license badge to README
  • Update security policy for v0.4.X (#95)

Enhancements

  • App now checks for MountainsMap installation at startup, and prevents import of surfaces if not installed (#78)
  • Added warning against using mouse and keyboard during surface import (#94)

Bugfixes

  • Removed threading backend, now using standard functions
    • Resolved TypeError (pickle '_thread.lock' object) being thrown when starting up surface importer (#90)
    • Resolved issue with import thread not terminating after failsafe is triggered (#91)
  • Failsafe did not trigger during MountainsMap startup configuration window (#93)
  • Triggering failsafe did not allow for opening any of the successfully created result files (#96)
Multiscale-Statistical-Analysis - Version 0.4.0 - Added Surface Import Tool

Published by MatthewSpofford over 4 years ago

Overview

This release brought along the addition of the surface importing tool. The user now has the option to open surface files, and then imports these surfaces MountainsMap® (developed by Digital Surf). These surfaces are then analyzed using scale sensitive fractal analysis, and the results are then exported to a user-specified folder. These results can then be imported into the Multiscale Statistical Analysis software as they normally would.

DISCLAIMER:
In order to use the results data, these surfaces need to be analyzed at identical scales. This issue will be fixed at a later release.

Changelog

Project Files/Documentation

  • Introduction to resource files, which can be easily contained within an executable such as pyinstaller
    • MountainsMap template file for import efficiency (#61)
    • MountainsMap button images to use image detection for clicking on the correct buttons (#68)
  • Updated PyPi badge in README (3c6c71e65)

Enhancements

  • Seperated discrim_test_choices and plot_choices maps and move it into corresponding class within __main__.py (#58)
  • Implement surface importer, which uses an instance of MountainsMap (created by Digital Surf) to open a surface and run a scale-sensitive fractal anlaysis, exporting the results to a specified folder (#11)
    • Information/requirement popup displayed before using import tool (#89)
    • Scale-sensitive or complexity selection menu appears before importing (#59)
    • Length/area analysis selection menu appears before importing (#60)
    • Results directory selection appears before importing (#63)
    • Error popup for incorrect data entry in options menu (#66)
    • File overwrite dialog displays during import process (#67)
    • Use MountainsMap external script and use windows registry to locate Mountains executable for quick execution/analysis of surfaces (#62)
    • Use pre-generated mountains template file for improving external script efficiency (#61)
    • Use pyautogui for mouse and keyboard control within Mountains (#68)
    • Saving results files based on surface file names (#69)
    • Multithreaded termination detection using hotkey/mouse (similar to pyautogui's failsafe) (#70)
  • Create temporary directory at startup and shutdown of surface importer (#79)
  • Rereplaced __setitem__ with array index equivalent, forgot about PlotData (#18)
  • Enabled all surface files types to be openable (#24)
  • Create helper functions for RegressionPlot plot fit functions (#26)
  • Bring app window to foreground after processing surface (#77)
  • Removed whitespace in plot data (#13)

Bugfixes

  • About menu dialog was using 'name' and not 'name', and was displaying an improper application name (#64)
  • Resolved issue where open_file2 fails if extra info is included in a results file (#85)
  • Resolved EXCEPTION_ACCESS_VIOLATION when switching to different MountainsMap templates (#82, occurred within release)
  • Resolved issue, where the user could not close MountainsMap after import process, preventing deletion of temp directory (#81)
  • Resolved issue where Windows would not continue interaction process after the initial launch of MountainsMap, never interacting with the process (#83)
Multiscale-Statistical-Analysis - Version 0.3.0 - Backend Restructure, Release to PyPi, Improved Error Output

Published by MatthewSpofford over 4 years ago

Overview

This release is regarding a complete overhaul of the dialog generation classes and plot fit functions to become more easily manageable. More of these backend changes will come soon. This was also a quick patch regarding a previous issue that was thought to have been resolved regarding divide by zero errors. These issues should now be fixed.

This release also involved improvements to the community/repository general guidelines, as well as publicly releasing the project as a package on PyPi. There are still some issues to be worked out with using the package, but the installation process is functional.

Changelog

Project Files/Documentation

  • Restructured project files by moving python code to the src directory, and created community health files (#51)
  • Created a python package that can be found on PyPi (#35)
  • Updated README with PyPi badge (b4817ce)

Enhancements

  • Cleaned up repetitive code (#33)
    • Regression fit graph dialog generation is now more manageable/future-proof, removing repetitive code using a list to store generation properties (#41)
    • Cleaned up and restructured RegressionPlot fit functions are now nicely packaged within a helper function, making later updates easier (#26)
    • The CurveFit class in charge of many statistical calculations is now static, replacing the need for CurveFit instances being used in many places (#43)
    • Simplified discrimination and scale plot menu event calls in __main__.py (#49)
    • Cleaned up repetitive StatsTestsUI FTestDialog statistical functions, creating needed helpers (#48)
    • Created plot_fit() helper function to simplify R2byScalePlot's fit functions and simplified pick_point() (#45)
    • Simplified plot click functions within RegressionSelectPlot and further simplified the class structure (#47)
  • Removed useless graph properties being displayed on the data table, as well as the corresponding calls to __setitem__ for the table (#2, #18)

Bugfixes

  • Resolved issue with the reappearance of divide by zero errors occurring during discrimination tests (#17)
  • Resolved issue with divide by zero errors not appearing on debug screen (#19)
  • Resolved issue with scipy's OptimizeWarning's not displaying on the debug screen (#26)
  • Resolved issue where adding the --windowed flag in PyInstaller prevented the app from launching
  • Resolved issue where directory structure broke import statements needed to run the application (#55, issue occured within this release)
Multiscale-Statistical-Analysis - Version 0.2.0 - Digital Surf Submission

Published by MatthewSpofford over 4 years ago

Overview

This release is the kickstart of this project and took place in order to submit this software in a state that was usable by Digital Surf. After sitting dormant for a few weeks, this project was finally needed by WPI's Surface Metrology Lab. This release does some general bug fixing to the user interface, creating better error handling, workbook usability, and much more.

Changelog

Project Files/Documentation

  • Created project README (3f33a1b)
    • Added abandonment statement regarding MountainsMap®multiscale addon
    • Added documentation regarding building/running the project
  • Added dependency file for dependabot (requirements.txt)
  • Updated .gitignore to contain visual studio files
  • Added Open Source MIT License
  • Added python module properties

Enhancements

  • Regrouped "Data" and "Analysis" buttons to now be contained within "Regression" and "Discrimination" menus (#3)
  • Divide by zero errors are now displayed in the error window (#19)
  • Restructured backend for maintaining workbooks, now containing the Workbook objects within PlotData objects. This will be further reworked later (#9)
  • Displays a more useful error message when negative values are used for the range of the complexity graph (#29)
  • Displaying more useful error messages for failed curve-fitting on the error window (#32)
  • Items in the tree menu can now be renamed (#25)
  • Window size now shrinks when restoring from a maximized window (#37)

Bugfixes

  • Removed "could not convert string to float" error displaying when opening a file (#1)
  • Fixed issue with graphs not being visible after initially creating them, forcing the user to have to click on the tree menu (#5)
  • Resolved issue where creating a new workbook would be using contents of the previous workbook (#9)
  • Resolved typo (#30) after changes from creating new workbook (#9)
  • Resolved issue where users could select a tree element that wasn't the workbook, attempt to create a graph/workbook which resulted in an AttributeError (#31)
  • Pressing tab through the discrimination analysis menus is now in order from left to right (#4)
  • Resolved curve fit errors by fixing issues originating from workbook changes (#9)
  • Fixed issue with close button disabling when the user prematurely leaves/errors on a file save/open menu (#38)
  • Resolved invalid initialization of "Save As" dialog window (#40)
Multiscale-Statistical-Analysis - Version 0.1.0 - Initial Project Development

Published by MatthewSpofford over 4 years ago

Overview

This is the initial publishing of this project. This contains all code that was completely and initially developed by @nrutkowski1.

Multiscale-Statistical-Analysis - Version 0.1.1 - Released with correct version values

Published by MatthewSpofford over 4 years ago

Overview

Quick patch, adjusting the version number values within the source code so that it matches the release tags.

Badges
Extracted from project README
PyPI version shields.io PyPI license