johnmartins / mdac Goto Github PK
View Code? Open in Web Editor NEWmulti-disciplinary analysis client
Home Page: https://mdac.netlify.app/
License: MIT License
multi-disciplinary analysis client
Home Page: https://mdac.netlify.app/
License: MIT License
The PCP in particular performs better the more horizontal space it has. It would therefore be beneficial, especially for smaller screens, if the side menu visibility could be toggled. Alternatively, the menu could perhaps be moved to the bottom of the screen.
Certain errors should be treated with more transparancy such as:
There is a need to be able to flip axis (e.g. by doubleclicking them)
Similar to how the PCP can be exported, it would be useful to be able to export the scatterplot(s).
When there are a lot of lines in the plot then the data-ticks can be hard to see. To mitigate this, a background could perhaps be used to the text elements.
This could potentially be done using filters, like so:
https://stackoverflow.com/questions/15500894/background-color-of-text-in-svg
There should be options to
A commonly requested feature is to implement a scatter grid for analysing how different variables correlate.
One way of approaching this is to convert the existing scatterplot to rasterized rendering (this would make it a lot more efficient), and then rendering multiple variants of that component at the same time in a grid.
It has been proposed to integrate support for latex mathematical notation in the axis display strings. This would enable users to, for instance, use greek letters in axis names to match what has been used in the rest of the research paper.
Library that could potentially be used: https://github.com/KaTeX/KaTeX
When rendering images for e.g., journal papers it would be nice to have the option to reduce some of the visual clutter, such as the pull tabs on the filter bands.
In the scatter plot view:
If one sidebar is hidden, and you attempt to resize the non-hidden sidebar, then the layout breaks.
The problem is in this line:
Rather than messing with the grid template, the adjust layout method should be called.
Adjust layout method in same component:
mdac/src/components/layouts/DoubleSidebarLayout.vue
Lines 48 to 57 in 7c4e08d
Some categorical data may be in string format. It would thus be useful if that could be parsed and visualized as well.
If the "Browse.." button is clicked, and then cancelled without selecting a file, a non-breaking error is thrown.
Ideally, nothing should happen at all if the dialogue is cancelled.
It could be useful to connect the PCP dataset with resuts data. Selecting sample points in the PCP should then select the corresponding samples in a separate results plot (typically, a plot with a time series).
When deploying this application into a sub-directory the page is blank, meaning the static content isn't loaded properly. This could probably be resolved by adjusting the vue build config.
Selecting an axis and changing the bounds does not update the plot if in rasterized render mode. A redraw should be triggered when the user clicks on the "Update" button.
There is a need to normalize individual categories (0-1 scale) to hide real values. Useful for publications where the real values are sensitive.
A necessary feature is the possibility to save a plot with the data and its settings. This could potentially be done by dumping the data and settings into a JSON-file.
When adding data filters, the data that is INCLUDED should be rendered ON TOP of the EXCLUDED data.
Furthermore, it should be possible to change the color of the data based on inclusion/exclusion (e.g. included data is blue, excluded data is grey)
Categorical data is currently not supported by the IO mechanism. Yet, in the data view, categorical data IO can be set. This can cause instability in the other views.
Fix either by adding support for categorical data IO, or disable the ability to change IO for categorical data.
Currently, errors are displayed only in the console windows. They should be visualized such that the user knows that something went wrong.
After patch 1.11.0 the rasterized rendering has become significantly quicker. The major performance-hog is no longer the resolution (at least not under normal circumstances), but rather the parsing and sequencing of the data. Therefore, the default resolutions can be bumped up to improve initial visual quality.
The user should be able to remove and reintroduce categories from the imported dataset
The data view has barely been touched since it was introduced. It could be improved significantly. A first step is to introduce some CSS to make it a bit more readable, and a sticky-header to make scrolling more useful.
This issue seems to be restricted to large datasets (~1000) on slow computers. Clicking on a category often results in a filter being added. This indicates that the drag drop filter mechanic needs to be adjusted, or remade.
When the amount of sample points reaches above 1000 the program starts to gradually slow down. At around 20000 it sometimes breaks down. To resolve this, the amount of information stored in the DOM needs to be reduced. This can be achieved by factoring out styles, and other information that is common for multiple elements.
Some identified information that can be refactored:
Bug in code:
// Store nearest similarity value
if (!closestSimilarityValue {
closestSimilarityValue = s
} else if (closestSimilarityValue > s) {
closestSimilarityValue = s
}
Proposed solution:
// Store nearest similarity value
if (!closestSimilarityValue && closestSimilarityValue !== 0) {
closestSimilarityValue = s
} else if (closestSimilarityValue > s) {
closestSimilarityValue = s
}
Currently, to color code in the PCP, you click on an axis label. It would be preferable if this worked the same as in the scatter-view, where you have a dedicated tool for color coding. This would enable you to make changes to axes (which is done by clicking on them) without having to re-render the entire plot. This would be especially beneficial for large datasets.
The data point count should be displayed somewhere (both filtered points and total)
Problem with fill opacity.
Can be fixed by adding following CSS to SVG style:
path {
fill-opacity: 0;
}
If the dataset has a high dimensionality then the data settings view overflow, causing some columns to become invisible. This could easily be resolved using scrolling.
It should be possible to create filters in the scatter plot in a similar way to how it is done in the PCP. If this is done by "drawing squares", then it could be implemented "easily" using the same filter system that is already in place (no new logic needed except for drawing the squares)
When loading large datasets (N > 1000) there is a significant reduction in performance in the PCP. This is because of all the individual SVG elements in the DOM. This could easily be handled with a HTML5 canvas instead of an SVG element.
A step towards solving this issue was done when the path layer (PCPlotPathLayer.vue) was separated from the PCP component (PCPlot.vue) in MR #35. The axes could remain SVG, but the paths could be rendered using a HTML5 canvas, only refreshing when there is a change in the data. This could potentially be done by changing the PCPlotPathLayer component, and moving the PCPlotPathLayer component out from the SVG element in the PCPlot.
Currently the user can select between ",", ";", or "\t". It would be useful if there was a fourth (default) option called "Auto", which detects the latter possibilities.
This could be done with a decent success-rate using a simple "search & count". To avoid unnecessarily long load times it could be done on only a small portion of the file.
Categorical data can be color-coded in the plots, but the range indicator component is bugged, and only shows a single color.
It would be nice to have the option to load an example file. This could be especially useful when showing the tool for others.
Proto-filter box is offset relative to mouse position when creating new filters.
LayerX and LayerY does not seem to be standardized (https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/layerX). Migrating to alternative method.
Currently there are a lot of emissions and listeners controlling various aspects of the charts. A more elegant solution would be to utilize a storage for options and state. Options should be reserved for things that the user may want to save between sessions, while state should be reserved for variables that should not be saved between sessions.
The current function for rounding down visualized data does not seem to work properly
mdac/src/components/plot-layouts/PCPlot/PCPlot.vue
Lines 208 to 209 in d1eef33
As more features are added, it is no longer feasible to keep adding new blocks into the side menus. Proposed solutions:
Some users wants to be able to send file locations via URLs to enable easy sharing.
While accessing files locally will not work as the local filesystem is not accessible, data can be sourced from a pre-configured webserver (not ANY server, due to CORS).
Some users wants to be able to pull the entire filter up/down in the PCP view (not just change edge position)
Now that MDAC has analysis capabilities it would be useful to be able to export results as a CSV file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.