DynamicsAndNeuralSystems / pycatch22

python implementation of catch22
https://time-series-features.gitbook.io/catch22/python
GNU General Public License v3.0
75 stars 15 forks source link

Output results as a dataframe + return short names, hctsa names and values as standard. #31

Open jmoo2880 opened 4 months ago

jmoo2880 commented 4 months ago

Modifying the original changes proposed by @anniegbryant in PR https://github.com/DynamicsAndNeuralSystems/pycatch22/pull/21, this PR updates the catch22 output to a DataFrame and marks a transition away from long (HCTSA) feature names toward what has previously been called "short" feature names, as default, i.e., mode_5 instead of DN_HistogramMode_5, etc.

Breaking Changes:

Since these modifications will introduce breaking changes for the existing user base, this PR will constitute a new major version release (catch22 v1.0.0), with docs + README updated to reflect the new output format. Users will need to be made aware of the new output via clear documentation and a migration guide in the changelogs to avoid confusion.

Major changes

print the first feature name

print(df.feature[0])

print the first feature value

print(df.value[0])

print the first feature HCTSA (long) name

print(df.hctsa_name[0])


- Added `pandas` and `numpy` dependencies.

# Minor changes 
- Added a security policy, `SECURITY.md`.
- Added a code of conduct, `CODE_OF_CONDUCT.md`
- Added a darkmode logo to the README.
- Added python unit testing + python version support badges to README. 
- Updated usage guide in README to notify users of `DataFrame` output. 
- Included support for python `3.12` unit test runners.
- Updated unit tests to support new `DataFrame` output. 
jmoo2880 commented 4 months ago

Also, the changelogs will be more extensive and clearer about the breaking changes for users + new naming conventions with old short_names and names essentially swapping places.

benfulcher commented 4 months ago

@anniegbryant can you do a quick test?

KieranOwens commented 4 months ago

I tried the new catch22_all function with my workflow. The change in the dictionary/dataframe key from 'values' (old version) to 'value' (new version) breaks my code. Otherwise, it works fine.