-
Notifications
You must be signed in to change notification settings - Fork 41
Contributor_Projects
There are many places a code developer can contribute. For people with limited skills or even just new to SasView, a good place to start are the issues on Github labelled "Good First Issue". Beyond that there are a large number of issues, in both the _sasview _AND _sasmodels _repositories (as well as some in other repos), many of which are bugs in need of fixing. There are also a number of "Enhancement" issues (aka Feature Requests).
Here we have collected some of the latter into a few small projects that would be appropriate as short term (a few weeks to a few months) projects, for example, for a summer intern/vacation student. They could also be of interest for anyone who feels like they would like to work on an actual feature rather than a bug and do not have a particularly pressing project of their own. But this list is by no means exhaustive.
- Refactor plot transforms (Guinier, Porod, Kratky, Holtzer, etc)
- The transform should apply to the whole plot not just the current data on the plot. In particular, a plot used for fits should also transform the fit curve.
- This should probably live in the plotting section of the code and be general to every plot?
- Probably need a better nomenclature?
- Should this be separated out from the linearized fitting?
- Collect all plots related to one type of analysis (e.g. fit plot, residuals, goodness of fit plots, and distribution plots) into a single tabbed structure. Note discussion #2475
- Scaling (log/linear) should probably be independent to each tab?
- Refactor sasmodels to
- Allow for non-centrosymmetric particle models.
- "unroll" the polydispersity loop to take better advantage of GPU
- To allow for other S(Q) options, in particular the locally monodisperse approximation
- Better integration strategies (fast integration, adaptive integration - e.g. for very long rods)
- Allow for model fits to 1D cuts of anisotropic data.
- Refactor slicers
- Add boxsum to the batch slicer choices (GUI and calculations)
- for boxsum types - batch output should be a file for each defined box containing the output of the box (sum, xcen, ycen, etc) followed by the metadata of interest (time, field, angle of rotation of sample etc) for each file processed.
- Allow selection of multiple files for batch slicing without plotting them all (GUI)
- Define a wedge boxsum to complement current rectangular box sum - basically the intersection of the sector and annulus (GUI and calculations)
- Allow multiple slicers of the same type to be defined at once on a single 2D data set. E.g. parallel and perpendicular sectors, multiple boxsums covering different peaks, etc. (GUI and possibly calculations)
- Provide option of symmetry locking on slicers. E.g. square lattice, hex lattice, twinned hex, etc. (GUI and maybe calculations?)
- Add boxsum to the batch slicer choices (GUI and calculations)
- Model Editor refactor (GUI)
- Simple model editor needs a second code box to define the form_volume function. Currently the user has to know to go back into the generated code to add that function when they define polydisperse parameters.
- Create a GUI editor similar to the current "add model" to simplify creating a reparameterized model.
- Allow the creation of a c file from the model editor tool
- Add more/better debugging features
- Refactor Data Operations
- Allow for intelligent interpolation when adding or subtracting etc two data sets with nonidentical q points.
- Allow for scaler * second dataset and an extra background term (data1 (+,-,/,*) scaler1 * data2 + scaler2)
- Allow to calculate a chain of operation, e.g. the ratio of the difference over the sum of data (data1-data2)/(data1+data2)
- Allow to perform a defined operation on several data sets (e.g. select a list of data that are treated as data1, similar for data2. If there is only one data set selected for a list, it should be repetitively used until all data in the other list have been treated)
- Optionally more complex math? is it needed?
- Provide for quicker/easier interface to do data manipulations (DESIGN required)
- Refactor masking
- All operations on data (plotting, fitting, P(r), slicers, etc) should be able to respect masked data
- Need flag to control using or not using masked data
- Need flag to control visualizing or hiding masked data
- Need better mask creation tools for both 1D and 2D (DESIGN required)
- Make simultaneous/constrained fitting less cumbersome to use. Probably best done by implementing simpler use cases?
- Perhaps the most common would be a single model where all the parameters are fixed, floating independently or constrained to be the same across all data sets
- GUI Design could be a single page like a batch fit or behave like the current constrained/simultaneous fit.
- Whatever the case, this simplified page could just look the same as a normal fit page where the model is chosen and the parameters either fixed or floating. For floating parameters another checkbox could be provided for constraining them to be the same for all fits across all models.
- Another use case would be simultaneous fitting of curves where all the parameters should be identical except the scale (and maybe the background). In this case however the scale might want to be constrained such that the variation is kept within some bounds (e.g. all within 10% of each other). This would be for example when fitting different configurations or the same sample run at multiple sources (but not mixing x-ray and neutron).
- Perhaps the most common would be a single model where all the parameters are fixed, floating independently or constrained to be the same across all data sets
- Refactor mixture model editor. The first step is to agree basic design/architecture. Two options currently:
- Keep existing method of using an editor to create a new persistent model (saved to disk etc)
- In this case need to refactor the GUI to allow for more than a single model
- In this case need to consider how mixture models are saved in project and analysis files
- In this case need to consider how to include a mixture model into a mixture model
- Only create mixture models on the fly at fit time as part of the fitpage infrastructure.
- Keep existing method of using an editor to create a new persistent model (saved to disk etc)
- Build an easy to use wysiwyg (or nearwysiwig) documentation editor with the SasView GUI (Paul Butler)
- Provide easy way to open offending documentation into the built-in editor
- Probably use locally installed rst but user should not have to know where they reside
- Provide markdown editor
- Provide way to "quickly" run sasview sphinx build of page so the user can see what the final result will look like
- Provide way to
- Change local build of sphinx docs to incorporate changes
- Submit change to SasView repos
- Provide easy way to open offending documentation into the built-in editor
- Add ability to use a file/array as a know form factor to fit data to the structure factor (Yun Liu).
- adding an array type form factor
- add the calculation of the beta factor form PD file along with the form factor in the general scattering calculator to enable the beta approximation in the fit.
- Remote fitting interface (Jeff Krzywon)
- Create web-based API to send fits to
- Create server infrastructure to allow GPU-based fits
- Fully scriptable interface for SasView
- Model acceleration using hypergeometric functions (Sylvain)
- Benchmark speed of several models in SasView vs CrystalScatter (Wagener & Forster, Sci. Rep. (2023) 13:780)
- Test & benchmark implementation of simple model
- Explore requirements for further acceleration (polydispersity loop, GPU, etc)?
- Finish work concerning constraints (Lionel)
- Issues #2004, #2243, #2352, #2353, #2355, #2356 + fix tests
- Add option to save/load a set of constraints definitions
- Add confirmation before closing fitting tabs (Lionel)
- Agreed? Select confirmation or not in user preferences?
- Reduce / improve plot management? (Lionel, Sylvain)
- See refactor plot transforms and collect all plots above
- See discussion #2475
- But probably too big and too much preliminary work and coordination needed?
- View/Subscribe to the SasView Calendar
- Fortnightly developer's agenda/minutes
- Developer Guides
- Admin Processes and Procedure Notes
- Active Project Pages
- Historical Archive of Obsolete Pages
- Contributor e-Learning Course (free)
- Non Coding contribution needs/projects
- New functionality projects
- DRAFT for acknowledging contributions