You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In our monthly developers call, we discussed how we'd like phys2denoise to be structured (along with the other packages). Here are the minutes for anyone who's interested.
There were a few ideas that were discussed. Some of these ideas have broad implications for the whole suite, and, if we decide to go with one of those, then we can figure out how to synchronize package-specific discussions within the suite.
phys2denoise operates on a shared object with peakdet. This class would represent physio data from a single frequency, and could end up being restricted to a single channel.
Pros:
Classes group attributes (e.g., the time series and the sampling rate) together.
peakdet will need its own class to track changes to the data. While we don't need that same functionality in phys2denoise, it's helpful to have the same design philosophy across packages.
Cons:
We would need to either (1) duplicate our class definition across peakdet and phys2denoise or (2) define the class in one package and then manage changes to the class across both.
For "higher level" users, who want to use the individual functions, having to initialize or operate on a new object for their data (instead of a common one like a numpy array or a pandas DataFrame) will make it harder for them to start using the package.
Mocking up package-specific objects for tests is hard and those objects can add overhead to your CI.
phys2denoise's object is moved all the way up to physutils. Same pros and cons as the above, but with additional difficulties in synchronizing the class definition across packages.
A purely functional approach. All functions in phys2denoise would operate on arrays or possibly DataFrames, with no package-specific classes defined.
Pros:
This makes the individual functions easier to work with.
Most users will only interact with the main workflow function/CLI, so the internal structure of the function is not important (i.e., classes are not necessary).
Functions are easier to test.
Cons:
Devs who get used to OOP in peakdet and phys2bids might be confused by phys2denoise, although the opposite is more likely, since functional programming is more intuitive.
If anyone has other ideas, please comment and I can update this issue summary.
The text was updated successfully, but these errors were encountered:
In our monthly developers call, we discussed how we'd like
phys2denoise
to be structured (along with the other packages). Here are the minutes for anyone who's interested.There were a few ideas that were discussed. Some of these ideas have broad implications for the whole suite, and, if we decide to go with one of those, then we can figure out how to synchronize package-specific discussions within the suite.
phys2denoise
operates on a shared object withpeakdet
. This class would represent physio data from a single frequency, and could end up being restricted to a single channel.peakdet
will need its own class to track changes to the data. While we don't need that same functionality inphys2denoise
, it's helpful to have the same design philosophy across packages.peakdet
andphys2denoise
or (2) define the class in one package and then manage changes to the class across both.phys2denoise
's object is moved all the way up tophysutils
. Same pros and cons as the above, but with additional difficulties in synchronizing the class definition across packages.phys2denoise
would operate on arrays or possibly DataFrames, with no package-specific classes defined.peakdet
andphys2bids
might be confused byphys2denoise
, although the opposite is more likely, since functional programming is more intuitive.If anyone has other ideas, please comment and I can update this issue summary.
The text was updated successfully, but these errors were encountered: