Releases: LorenFrankLab/spyglass
Releases · LorenFrankLab/spyglass
0.5.5
What's Changed
- Update URL for DANDI Docs by @kabilar in #1210
- Ensure merge tables declared in new database by @samuelbray32 in #1205
- Fix missing pos interval map entry in pose estimation by @samuelbray32 in #1208
- Miscellaneous Fixes by @samuelbray32 in #1220
- Maintenance tool revision by @CBroz1 in #1226
- Fix the bug for computing quality metrics in spikesorting v0 by @sytseng in #1212
- Spike group v1 label compatability by @samuelbray32 in #1238
- Resolve different code and database state for merge table parts by @samuelbray32 in #1237
- Add email-on-fail to cron job by @CBroz1 in #1241
- Export external tables by @CBroz1 in #1239
- Moseq Pipeline by @samuelbray32 in #1056
- Import pose by @samuelbray32 in #1225
- Revert "Import pose" by @CBroz1 in #1245
- Speedup get_sorting by @edeno in #1246
- Fix filtering on labels by @edeno in #1249
- Remove cli module by @edeno in #1250
- Small fixes by @samuelbray32 in #1256
- Import pose edited by @samuelbray32 in #1247
- Add script for drive space check by @CBroz1 in #1257
- Update jupysync by @CBroz1 in #1266
- Fix mismatch in
time_slicetyping inSortedSpikesGroup.fetch_spike_databy @samuelbray32 in #1261 - Add v0.SpikeSortingRecording.cleanup by @CBroz1 in #1263
- Revise cleanup scripts by @CBroz1 in #1271
- Quickfix: Turn off transactions for CuratedSpikeSorting by @samuelbray32 in #1288
- Quickfix: spikesorting vo _use_transaction by @samuelbray32 in #1290
- Misc old issues by @CBroz1 in #1281
- Add fetch1_dataframe to sensor data by @edeno in #1291
- Generalizations for nwb ingestion by @samuelbray32 in #1278
- LFP improvements by @edeno in #1280
- Store arrays in AnalysisNwbfile by @samuelbray32 in #1298
- LFP Import fix by @samuelbray32 in #1302
- Cut down TODOs, part 1: 57 -> 43 by @CBroz1 in #1304
- Allow recompute via
_make_filefunc by @CBroz1 in #1093 - Add badge to tests README by @CBroz1 in #1305
- Interval as object carries functions by @CBroz1 in #1293
- Burst merge curation by @CBroz1 in #1209
- Quickfix: Parse name for Session.Experimenter by @samuelbray32 in #1306
- Fix call to 'upper' in common_behav.py by @sophie-robertson in #1314
- Fix recompute
update_idby @CBroz1 in #1311 - Spikeinterface channel_id ambiguity by @samuelbray32 in #1310
- Generate timestamps from rate and start time by @samuelbray32 in #1322
- Returned merge_id consistency for Merge.fetch_nwb by @samuelbray32 in #1320
- Cleanup Update: exit on fail to
chmodby @CBroz1 in #1328 - Fix spikeinterface channel names by @samuelbray32 in #1334
- Import generalizations by @samuelbray32 in #1318
- DLC updates by @emreybroyles in #1339
- adding function for plotting specific interval lists side by side by @gshvarts in #1330
- Minor Issues by @samuelbray32 in #1270
- Add permissions to GitHub Actions workflows by @edeno in #1344
- Skip empty timestamp objs by @CBroz1 in #1347
- Improve position coverage by @CBroz1 in #1315
- Fix DataJoint query errors with NaN values in probe geometry fields by @Copilot in #1346
- Report table name in
accept_divergenceby @CBroz1 in #1350 - Update kwargs in DLC config by @samuelbray32 in #1352
- Table chains cascade shortest path #1353 by @CBroz1 in #1356
- Allow return of Interval obj from
to_indicesmethod by @CBroz1 in #1357 - More recompute fixes by @CBroz1 in #1340
- Add long-distance example to doc by @CBroz1 in #1361
- Bump version by @CBroz1 in #1316
New Contributors
- @kabilar made their first contribution in #1210 🥳
- @sytseng made their first contribution in #1212 🥳
- @sophie-robertson made their first contribution in #1314 🥳
- @gshvarts made their first contribution in #1330 🥳
- @Copilot made their first contribution in #1346
Database Changes
To update your database to reflect these changes, we recommend running the following script. If you have any issues, please contact maintainers via our Discussions page.
# -- For TrackGraph --
from spyglass.linearization.v1.main import TrackGraph # noqa
TrackGraph.alter() # Add edge map parameter
# -- For dropping deprecated tables --
import datajoint as dj
dj.FreeTable(dj.conn(), "common_nwbfile.analysis_nwbfile_log").drop()
dj.FreeTable(dj.conn(), "common_session.session_group").drop()
# -- For v0 recompute --
from spyglass.spikesorting.v0.spikesorting_recording import (
SpikeSortingRecording,
SpikeSortingRecordingSelection,
IntervalList,
)
SpikeSortingRecording().alter()
SpikeSortingRecording().update_ids()
# -- For v1 recompute --
from spyglass.spikesorting.v1.recording import (
SpikeSortingRecording,
SpikeSortingRecordingSelection,
AnalysisNwbfile,
)
SpikeSortingRecording().alter()
SpikeSortingRecording().update_ids()
# -- For LFP pipeline --
from spyglass.lfp.lfp_imported import ImportedLFP
from spyglass.lfp.lfp_merge import LFPOutput
if len(ImportedLFP()) or len(LFPOutput.ImportedLFP()):
raise ValueError(
"Existing entries found and would be dropped in update. Please delete "
+ "entries or start a GitHub discussion for migration assistance."
+ f"\nImportedLFP: {len(ImportedLFP())}"
+ f"\nLFPOutput.ImportedLFP: {len(LFPOutput.ImportedLFP())}"
)
table = LFPOutput().ImportedLFP()
table_name = table.full_table_name
if len(drop_list := table.connection.dependencies.descendants(table_name)) > 1:
drop_list = [x for x in drop_list if x != table_name]
raise ValueError(
"Downstream tables exist and would be dropped in update."
+ "Please drop the following tables first: \n"
+ "\n ".join([str(t) for t in drop_list])
)
LFPOutput().ImportedLFP().drop_quick()
ImportedLFP().drop()Full Changelog: 0.5.4...0.5.5
0.5.4
What's Changed
- Allow disable transaction for select populates by @CBroz1 in #1067
- Prevent error from unitless spike group by @samuelbray32 in #1083
- Add tests for spikesorting by @CBroz1 in #1078
- Add docstrings by @CBroz1 in #1076
- Bump dj dependency to 0.14.2 by @CBroz1 in #1081
- Fix #1094 by @CBroz1 in #1096
- Fix 1080 by @CBroz1 in #1099
- Add edge map parameter to track linearization by @edeno in #1091
- Fix #1098 by @CBroz1 in #1100
- Fix #1101 by @CBroz1 in #1103
- Remove SessionGroup by @CBroz1 in #1106
- Adjust no-transact pop hashing mechanism by @CBroz1 in #1108
- Add objects to analysis file before insert by @samuelbray32 in #1112
- Apply restrictions on parent tables in fetch_nwb by @samuelbray32 in #1086
- Revise datajoint import name by @CBroz1 in #1116
- Fix Curation primary key creation from spikesorting key by @samuelbray32 in #1114
- NWB ingestion fixes by @samuelbray32 in #1074
- speed up electrodes import by @magland in #1125
- Switch to or logic when multiple merge ids in restriction by @samuelbray32 in #1126
- Fix null config_tasks value by @samuelbray32 in #1120
- Add password setting instruction to setup notebook by @CBroz1 in #1131
- Fix waveform params in metric curation by @edeno in #1132
- Convert string config settings to bool by @samuelbray32 in #1117
- Long distance restr fix by @CBroz1 in #1137
- Update README.md to fix link by @bendichter in #1140
- Update UsingNWB.md to fix typo by @bendichter in #1141
- #1138, #1139 by @CBroz1 in #1145
- Update UsingNWB.md to fix task location in NWB file by @bendichter in #1143
- Quickfix: typo in adding objects to nwb by @samuelbray32 in #1148
- Dandi export fixes by @samuelbray32 in #1095
- Fix test badge by @edeno in #1149
- Additional export fixes by @CBroz1 in #1151
- Remove stored hashes from tests by @CBroz1 in #1152
- Remove mambaforge from tests by @edeno in #1153
- DLC
make_videominor fixes by @CBroz1 in #1150 - Fix topological sort logic by @CBroz1 in #1162
- Fix tests by @CBroz1 in #1165
- Allow python <3.13 and remove numpy pin by @edeno in #1169
- No transact insert v0 lfp by @samuelbray32 in #1172
DLCPosVideo: Use provided epoch, multithread matplotlib by @CBroz1 in #1168- Expand Export logging abilities by @CBroz1 in #1164
- No transact bug by @samuelbray32 in #1178
VideoMakertrodes fixes and resume from fail by @CBroz1 in #1174- Quickfix: pass config_probe by @samuelbray32 in #1179
- Fix failing tests by @CBroz1 in #1181
- No-credential data download by @CBroz1 in #1180
- No transactions v0 spikesorting pipeline by @samuelbray32 in #1187
- Add pytests for decoding pipeline by @CBroz1 in #1155
- Limit spikesorting artifacts to valid timestamps by @samuelbray32 in #1196
- Misc fixes by @CBroz1 in #1192
- Decoding qol updates by @samuelbray32 in #1198
- Cleanup IntervalList orphans in weekly job only by @samuelbray32 in #1195
- fetch_nwb non-mixin compatability by @samuelbray32 in #1201
- Release 0.5.4 by @CBroz1 in #1199
New Contributors
- @bendichter made their first contribution in #1140
Full Changelog: 0.5.3...0.5.4
0.5.3
Database Changes
This release (a) removes the old 'common' ripple pipeline in favor of the dedicated subpackage (see #1061), and (b) edits the definitions of PositionIntervalMap and PositionGroup (see #870, #1008). Users with existing databases should run the following:
import datajoint as dj
from spyglass.common.common_behav import PositionIntervalMap
from spyglass.decoding.v1.core import PositionGroup
dj.schema("common_ripple").drop()
PositionIntervalMap.alter()
PositionGroup.alter()Software Changes
- Add system requirements and typical installation time by @edeno in #945
- Group part delete propagation by @samuelbray32 in #899
- Fix bug report template html by @CBroz1 in #955
- QuickFix: Bug in curation v0 make by @samuelbray32 in #960
- Fix tests/doc build by @CBroz1 in #967
- Fix relative pathing for mkdocstrings>=1.9.1 by @CBroz1 in #968
- Long distance restrictions by @CBroz1 in #949
- Transaction on
populate_all_commonby @CBroz1 in #957 - Permit multiple restrict_by by @CBroz1 in #969
- Allow dlc pipeline to run without prior position tracking by @samuelbray32 in #970
- Revert "Allow dlc pipeline to run without prior position tracking" by @edeno in #972
- Fix test fails related to #957 by @CBroz1 in #971
- Allow dlc pipeline to run without prior position tracking by @edeno in #973
- Cleanup of dlc video by @samuelbray32 in #975
- Replace old
joincall withcascadeby @CBroz1 in #982 - Check existence of optional fields during
Electrodetable population by @khl02007 in #985 - Add pytests to position by @CBroz1 in #966
- Don't insert lab member when creating lab team by @khl02007 in #983
- Add ability to set smoothing sigma in get_firing_rate by @samuelbray32 in #994
- Add docstrings to SortedSpikesGroup and Decoding methods by @samuelbray32 in #996
- Add Common Errors doc by @CBroz1 in #997
- Mua notebook by @denissemorales in #998
- Dandi export and read by @samuelbray32 in #956
- Minor fixes by @samuelbray32 in #999
- Fix bug in change in analysis_file object_id by @samuelbray32 in #1004
- Remove classes for usused tables by @CBroz1 in #1003
- Non-daemon parallel populate by @samuelbray32 in #1001
- Give UUID to artifact interval by @khl02007 in #993
- Fix artifact
list_triggersby @khl02007 in #1009 - remove problem key in DLCPosV1 fetch_nwb attrs by @samuelbray32 in #1011
- Tidy position by @CBroz1 in #870
- Prevent delete orphans by @CBroz1 in #1002
- Remove kachery_client dependency by @samuelbray32 in #1014
- Add upsampling option to PositionGroup by @samuelbray32 in #1008
- Implement adding data from config file by @calderast in #934
- Fix broken link to Clusterless Decoding tutorial notebook from Sorted Spikes Decoding tutorial notebook by @khl02007 in #1018
- #980 by @CBroz1 in #1021
- #1016 - Allow
ModuleNotFoundErrorby @CBroz1 in #1023 - Merge table efficiency by @samuelbray32 in #1017
- Disable AnalysisFile logging by @CBroz1 in #1024
- Group integrity by @samuelbray32 in #1026
- Bugfixes from 870 by @CBroz1 in #1034
- Spike Unit Annotation by @samuelbray32 in #1027
- Reduce duplication 1 by @CBroz1 in #1050
- quick fix for issue 1045 by @MichaelCoulter in #1046
- Quick fix for parralel populate and spike unit naming by @samuelbray32 in #1052
- Set
sparse=Falseduring waveform extraction by @khl02007 in #1039 - Re-organize docs by @CBroz1 in #1029
- Fix interpolation of nans in decoding position by @samuelbray32 in #1033
- Export updates by @CBroz1 in #1048
- Revise get_group_by_shank by @CBroz1 in #1055
- Remove
common_rippleby @CBroz1 in #1061 - Reduce duplication 2 by @CBroz1 in #1053
- #1053 bugfix by @CBroz1 in #1062
- Spikesort artifact fixes by @samuelbray32 in #1069
- Add check threads util by @CBroz1 in #1063
- fix fetch efficiency in insert_curation by @samuelbray32 in #1072
- Decode fixes by @samuelbray32 in #1073
- Ban tables in distance restrict bugfix by @CBroz1 in #1066
- Periph table fallback on TableChain for experimenter summary by @CBroz1 in #1035
New Contributors
- @calderast made their first contribution in #934
Full Changelog: 0.5.2...0.5.3
0.5.2
What's Changed
- Bump version number by @edeno in #864
- Fix failing chains pytests by @CBroz1 in #867
- Hhmi notebook check by @samuelbray32 in #876
- Refine query of upstream tables on FigURL populate by @CBroz1 in #871
- Fix dlc video and kachery cloud config by @samuelbray32 in #882
- Edits for docs by @CBroz1 in #883
- Hhmi notebook check by @samuelbray32 in #888
- Update call to get_template_extremum by @samuelbray32 in #893
- Add spyglass version to created analysis nwb files by @samuelbray32 in #897
- Quickfix: Change existing source script to spyglass version by @samuelbray32 in #900
- Add pynapple support by @edeno in #898
- Hot fixes for clusterless
get_ahead_behind_distanceandget_spike_timesby @edeno in #904 - Quickfix for fetch_nwb by @samuelbray32 in #913
- Check for entry in merge part table prior to insert by @samuelbray32 in #922
- Kachery fixes by @samuelbray32 in #918
- Quickfix for removal of old kachery tables by @samuelbray32 in #925
- Fix improper uses of strip by @edeno in #929
- Misc Issues by @CBroz1 in #903
- Export logger by @CBroz1 in #875
- Spikesorting quality of life helpers by @samuelbray32 in #910
- Add logging of AnalysisNwbfile creation time and file size by @CBroz1 in #937
- Log when file accessed by @CBroz1 in #941
- Fix bug on empty delete in merge table by @samuelbray32 in #940
Full Changelog: 0.5.1...0.5.2
0.5.1
What's Changed
- Only apply include labels filter if include_labels not empty by @samuelbray32 in #827
- gh-actions docs fixes by @CBroz1 in #828
- Proposed structure for user roles. by @CBroz1 in #832
- Fix test for update of position tools by @edeno in #835
- Fix notebook name by @edeno in #840
- Multicam DLC project support by @emreybroyles, @samuelbray32, @CBroz1 in #834
- fix CuratedSpikeSorting insert with no curation by @samuelbray32 in #856
- Revise
dj_chainsfor table -> merge -> merge downstream deletes by @CBroz1 in #846 - Artifact interval bug by @samuelbray32 in #859
- Pytests round 2 by @CBroz1 in #851
- Update spike sorting V1 code and notebook to run sorters other than
mountainsort4by @donghoon-shin in #844 - Make use of waveforms_dir consistent by @samuelbray32 in #857
- Update spikeinterface version by @khl02007 in #852
- Fix non-referencing option in lfp artifact detection by @samuelbray32 in #863
New Contributors
- @donghoon-shin made their first contribution in #844
Full Changelog: 0.5.0...0.5.1
See also CHANGELOG.md
0.5.0
What's Changed
- Add error message for single-led with wrong parameters by @samuelbray32 in #680
- positionVideo debug by @samuelbray32 in #687
- Limited scope docs PR by @CBroz1 in #690
- Make artifact interval a 2d array by @samuelbray32 in #691
- Implement pre-commit, refactor input validation by @CBroz1 in #688
- Linearizationv1 debug and tutorial by @samuelbray32 in #695
- Mixin class by @CBroz1 in #692
- Changed SpyglassMixin to be imported from dj_mixin rather than dj_hel… by @sharon-chiang in #696
- added Path library to imports by @sharon-chiang in #697
- Spike sorting v1 pipeline by @khl02007 in #651
- Change
CurationV1.insert_metric_curationto includemetric_curation_idindescriptionfield to faciliate provenance checking by @khl02007 in #704 - Lfp band fixes by @samuelbray32 in #706
- Make sampling rate for LFP user-defined instead of hard-coded to 1000 Hz by @sharon-chiang in #705
- Delete downstream restriction fix by @CBroz1 in #703
- Prevent Curation from re-adding an existing sorting key with a new cu… by @samuelbray32 in #670
- Dlc debug by @emreybroyles in #702
- add remove_existing_folder argument by @samuelbray32 in #708
- Add cautious delete mixin by @CBroz1 in #711
- Hotfix for attrib error
__->_nwb_table_dictby @CBroz1 in #714 - Fix ref channel append error by @khl02007 in #720
- Avoid bug in spikeinterface for low spikecounts by @samuelbray32 in #721
- Change method of defining base dir in get_abs_path by @samuelbray32 in #715
- Env variables for DLC by @CBroz1 in #722
- Add
mkdirto pass pytests by @CBroz1 in #723 - Priority for fetch_nwb function in merge tables by @samuelbray32 in #724
- Handle single intervals in spike sorting by @edeno in #726
- Handle sortings in which no units are detected (SpikeSortingV1) by @khl02007 in #728
- Helper function for adding data to kachery by @samuelbray32 in #729
- V0 migration model, revised by @CBroz1 in #717
- print -> logger by @CBroz1 in #730
- #732 by @CBroz1 in #734
- Add detail to sharing notebook by @samuelbray32 in #735
- Check for upsampled data in trodes fetch dataframe by @samuelbray32 in #741
- Remove logger.info() without message by @edeno in #747
- Fix PositionOutput.fetch1_dataframe bug by @samuelbray32 in #746
- Remove old
deletemethod fromSpikeSortingtable of V0 pipeline by @khl02007 in #751 - Move
figurl_viewsto spike sorting v0 by @khl02007 in #750 - Decoding pipeline by @edeno in #731
- Interval list types by @samuelbray32 in #742
- Dlc debug: smoothing_duration fix by @emreybroyles in #753
- restrict get position info by session name by @samuelbray32 in #757
- Restrict UnitWaveformFeaturesGroup and SortedSpikesGroup by nwb_file_name by @edeno in #758
- Fix the length of
object_idforImportedSpikeSortingby @khl02007 in #760 - Fix SpikeSortingOutput get_recording and get_sorting by @edeno in #761
- Print session/exp summary, fix lfp target sample fetch by @CBroz1 in #762
- Update LFP notebook by @samuelbray32 in #764
- Use PositionOutput to get data in example notebook by @samuelbray32 in #765
- Comment out video section for mini-rec in Update 20_Position_Trodes.ipynb by @edeno in #767
- Handle numpy arrays in
create_lfp_electrode_groupby @edeno in #766 - Pytest revamp by @CBroz1 in #743
- Minor decoding fixes by @edeno in #769
- DLC notebooks 21 and 22 by @emreybroyles in #772
- Docs fixes for decoding pipeline by @CBroz1 in #776
- Add new function to retrieve spatial series from NWB file by @khl02007 in #777
- Add overview to docs by @edeno in #779
- LFPV1 interval insert by @samuelbray32 in #775
- Proofing and minor edits to Tutorial notebooks 11-32 by @samuelbray32 in #796
- Update 01_Insert_Data.ipynb by @magland in #802
- Decoding pipeline edits for imported data by @edeno in #782
- Blackify 24.1.1 by @CBroz1 in #808
- More robust
delete_downstream_mergeby @CBroz1 in #806 - Address join-compatibility issue for long chains by @CBroz1 in #811
- Filtering units for decoding by @edeno in #807
- Cautious delete bugfixes by @CBroz1 in #821
- Revise dependencies by @CBroz1 in #822
- Minor decoding fixes by @edeno in #819
- Update waveform_features.py by @MichaelCoulter in #813
- Fault-permit insert and remove mutual exclusivity protections on Merge by @CBroz1 in #824
- Update CITATION.cff by @edeno in #826
New Contributors
- @sharon-chiang made their first contribution in #696 🎉
- @emreybroyles made their first contribution in #702 🎉
Full Changelog: 0.4.3...0.5.0
See also CHANGELOG.md