Recent Releases of ratinabox

ratinabox - v1.15.3

Minor bug fixes including:

  • shade kwarg added to plot for easier plotting of large numbers of neurons
  • Motion model update to prevent rat escaping internal boxes (an edge case I'd never thought to consider but was brought to my attention by @romanpogodin)
  • Better commenting of speed params in 2D
  • Vector cell coloring bug

What's Changed

  • Added shadekwargs to utils.mountainplot(). by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/122
  • Resetting the colors of vector cells bugfix by @Alxec in https://github.com/RatInABox-Lab/RatInABox/pull/124
  • Speed mean and std in 2D by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/126

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/v1.15.2...v1.15.3

- Python
Published by TomGeorge1234 over 1 year ago

ratinabox - v1.15.2

@niksirbi fixed a bug causing the documentation website to fail. This has been patched. @colleenjg changed how figures are saved so the folder does YYYMMDD @colleenjg changed how BVCs are scaled with their max_fr

What's Changed

  • Make save folders year first by default. by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/117
  • Changed how firingrate is scaled to maximum for BVCs. by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/118
  • Fix links in documentation build by @niksirbi in https://github.com/RatInABox-Lab/RatInABox/pull/119

New Contributors

  • @niksirbi made their first contribution in https://github.com/RatInABox-Lab/RatInABox/pull/119

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/v1.15.1...v1.15.2

- Python
Published by TomGeorge1234 over 1 year ago

ratinabox - v1.15.1

Just cleans up some API stuff for the SubAgent class introduced in version v1.15.0

- Python
Published by TomGeorge1234 over 1 year ago

ratinabox - v1.15.0

SubAgent contrib and minor QOL upgrades

This release adds save_fig() kwargs which aer passed directly to matplotlib.save_figure function so you can modify how figures are saved.

Also adds SubAgent class in the controls. SubAgents take as input, and are "subservient" to, another Agent (the LeadAgent). The key thing idea is that the SubAgent may have an update() function which relies heavily on the state of the LeadAgent. Examples included are:

  • DumbAgent a noisy version of LeadAgent
  • ThetaSequenceAgent theta sweeps around the LeadAgents position
  • ReplayAgent occasional short replay events

The API is as follows

``` Env = Environment() Ag = Agent(Env) # the lead agent DumbAg = DumbAgent(LeadAgent=Ag, params = {'drift_distance':0.1})

while Ag.t < 60: Ag.update() DumbAg.update() ```

DumbAg.animate_trajectory() then returns something like:

https://github.com/user-attachments/assets/cf472dc3-f33e-41db-bd63-1587949df141

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/v1.14.1...v1.15.0

- Python
Published by TomGeorge1234 over 1 year ago

ratinabox - v1.14.1

Minor interpolation bug fix as pointed out by #114. Also changed save_to_history() from using list(array) to array.tolist()

- Python
Published by TomGeorge1234 almost 2 years ago

ratinabox - v1.14.0

numpy-2.0.0 compatibility

No substantial changes, I just fixed a few bugs to make compatible with numpy>=2.0.0

- Python
Published by TomGeorge1234 almost 2 years ago

ratinabox - v1.13.0

Grids cell

  • Grid cells work in 1D
  • Grid cells have a width_ratio parameter which sets the ration of the width of the receptive field to the grid scale. It mist be between 0 (very sharp grid fields) and 1 (very diffuse grid fields) and only works for the rectified_cosines models.

grid_geometry

  • Minor api change (warning thrown, will not break) three_shifted_cosines --> shifted_cosines
  • Default grid cells have been changed to 30 grid cells in three increasingly slightly rotated modules.

gridcells_default

  • Grid cell documentation on the readme has been improved

Plotting:

  • Plotting the rate map of a single neuron in 1D can now be optimised using optimise_plot_for_single_neuron (without this it just does a mountain plot with a single line, which isn't ideal.

numpy pinned to versions <2.0.0

This will be unpinned as a soon as important associated packages (matplotlib, scipy etc.) support 2.0.0.

- Python
Published by TomGeorge1234 almost 2 years ago

ratinabox - v1.12.6

BVC scaling big fix

Thanks @colleenjg for minor bug fix relating to BVC firing rate scaling (see PR #109 and issue #108)

- Python
Published by TomGeorge1234 about 2 years ago

ratinabox - v1.12.5

Teeny tiny bug fixes....

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/v1.12.3...v1.12.5

- Python
Published by TomGeorge1234 about 2 years ago

ratinabox - v1.12.3

Bug fix to maintain compatibility with python<=3.8.

We had been using list[str] (works in python>=3.9 only) and so have reverted back to from typing import List then List[str]. This fixes issue #105

- Python
Published by TomGeorge1234 about 2 years ago

ratinabox - v1.12.2

Bug fixes and very minor changes from 1.12.1

- Python
Published by TomGeorge1234 about 2 years ago

ratinabox - v1.12.1

Faster animations and bug fixes

  • New Agent._history_arrays dataframe. This is identical to Agent.history except for two things (same for Neurons too):
    • It is dictionary of arrays, not lists.
    • It should only be accessed via its getter-function _history_arrays = self.get_history_arrays() For now this API is intended to be mostly internal. We don't recommend users use this and instead should stuck to using self.history as before. But it speeds up animation internally a lot because it checks a cache to see if the list-->array conversion has been done recently and only repeats it if it hasn't.
  • Plotting rate maps via the history method now shows the regions where the Agent never went as grey rather than black (i.e. zero firing rate). This is more realistic, shows the data more honestly and closer to how experimentalists do it (i.e. by shooting spikes and dividing by position occupancy).
    • Additionally users can specify the discretisation of the rate mat smoothing PlaceCells.plot_rate_map(method="history", bin_size=0.06) #defaults of 0.04, i.e. 4 cm
  • Bug fixes relating to #104 and some other minor stuff I hadn't spotted in 1.12.

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/1.12.0...v1.12.1

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.12.0

Main charges include:

  • Significantly modularised Agent.update() function. It is now more readable. This should be fully backwards compatible for conventional users of RiaB. For power users a few internal variables were renamed e.g. save_velocity-->measured_velocity but really very few. It also accepts (but doesn't recommend) users just forcing the next position of the Agent via python Agent.update(forced_next_position = <next_pos>) This should be fully backwards compatible for conventional users of RiaB. For power users a few internal variables were renamed e.g. save_velocity-->measured_velocity but really very few.
  • Small bug fixes for @colleenjg to do with warning when params['n']` is incompatible with the specific class.
  • Bug fix from @gsivori to make position sampling acknowledge and account for the existence of holes in the Environment more naturally than was done before.
  • Minor changes to some plotting functions. More params have been moved from args to kwargs to clean up the doctoring and some (previously fixed) constants have been exposed as via letting kwargs define them. This both simplifies and improves plotting.
  • ## What's Changed
  • Position sampling in Environments with holes. by @gsivori in https://github.com/RatInABox-Lab/RatInABox/pull/100
  • Small fixes and new warning for Neurons classes. by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/101
  • Fixes spurious warning raised when initializing VectorCells objects. by @colleenjg in https://github.com/RatInABox-Lab/RatInABox/pull/103
  • For spike rasters, or rate maps plotted via the 'history' method there is a hidden option (via a kwarg) to set a different Agent from which you draw position data from. In case, say, you want to plot the spikes from Neurons1 against the positions of Agent2.

New Contributors

  • @gsivori made their first contribution in https://github.com/RatInABox-Lab/RatInABox/pull/100

Full Changelog: https://github.com/RatInABox-Lab/RatInABox/compare/v1.11.4...v1.12.0

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.4

1D Objects (thanks @colleenjg) and minor bug fix for place cell distributions relating to #96

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.3

Updates to the website including new pages for demos and testimonials and a rescaled logo

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.2a

No change to code. Just a bug fix for website https://ratinabox-lab.github.io/RatInABox/

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.2

Recurrent inputs for FeedForwardLayer

Previously FeedForwardLayers would throw recursion errors when you plot their rate maps if any of the inputs were recurrent (or ultimately part of a recurrent loop) since the get_state() method would call the input layer, which would call the input layer, which would.... you get the idea.

This has been elegantly fixed by @colleenjg. Flag an I put as recurrent when you add it and at rate map evaluation time specificy the recursion depth you want to go to.

Before

``` Env = Environment() Ag = Agent(Env) PCs = PlaceCells(Ag) FFL = FeedForwardLayer(Ag)

FFL.addinput(PCs) FFL.addinput(FFL) #< a recurrent input!!!

FFL.plotratemap() returns RecursionError: maximum recursion depth exceeded in comparison ```

Now

``` Env = Environment() Ag = Agent(Env) PCs = PlaceCells(Ag) FFL = FeedForwardLayer(Ag)

FFL.addinput(PCs) FFL.addinput(FFL,recurrent=True) #< a recurrent input, flag it as such!!!

FFL.plotratemap(maxrecurrence=0) # max number of times to pass through the recurrent input loop before then ignoring it FFL.plotratemap(maxrecurrence=1) # 1 pass through the loop FFL.plotratemap(max_recurrence=100) # 100 passes ``` 3c783622-00fc-45df-95ae-0dc7e670a881 de109171-be11-4b06-8828-e1f54d9af97c 3c483aba-bc6f-4728-ab7d-8b34833bdf5b

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.1

New plotting functions and demo focussing on head direction

Head direction selectivity can be plotted for all cells.

python Env = Environment() Ag = Agent(Env) HDCs = HeadDirectionCells(Ag, params={'n':3,'color':'C5'}) #or any other HDCs.plot_angular_rate_map() 02b39dc7-d287-4349-88ad-e54594014973

Spatial rate maps can be plotted averaged over all head directions (for use in instances where rate maps may be position and head direction selective).

This is supported by a new internal function get_head_direction_averaged_state() which calculates the state at all head direction 0 --> 2pi and then averages over these return the spatial receptive field.

python Env = Environment() Ag = Agent(Env) GCs = GridCells(Ag, params={'n':3}) #or any other. GCs.plot_rate_map(method="groundtruth_headdirectionaveraged") (in this case its actually redundant because grid cells have no head direction selectivity but in this demo we show a more involved use case 79d31cdb-92e7-4083-bc27-5de3a24eff12

New Conjunctive grid cells demo

In this demo we showcase FeedForwardLayer in probably its most simple use-case. Combining head direction cells and grid cells non-linearly to make head direction selective grid cells (conjunctive grid cells) conjunctive_grid_cells

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.11.0

AgentVectorCells and FieldOfViewAVCs

AgentVectorCells are like ObjectVectorCells but respond to other Agents in the Environment.
FieldOfViewAVCs are a subclass of AVCs arranged in a "field of view" as shown in the attached video. A demo can be found here (scroll to the bottom). This relates to #89 and closes #91.

https://github.com/RatInABox-Lab/RatInABox/assets/41446693/300baddc-24ca-4495-aae6-916b3bf0a8a6

```python from ratinabox.Neurons import AgentVectorCells, FieldOfViewAVCs

Env = Environment() Ag1 = Agent(Env) Ag2 = Agent(Env) AVCs1to2 = FieldOfViewAVCs(Ag1, OtherAgent=Ag2) AVCs2to1 = FieldOfViewAVCs(Ag2, OtherAgent=Ag1)

remember to update both agents and neurons in the update loop:

for _ in range(int(20/Ag1.dt)): Ag1.update() Ag2.update() AVCs1to2.update() AVCs2to1.update() ```

Other minor changes

  • Changes to VectorCells and GridCell API for how parameters are initialised/sampled (should be backward compatible, a warning might be thrown if you use old parameter names).
  • Bug fixes
  • New DNN demo

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - RatInABox website (pre-release)

We made a website for RatInABox which will eventually host all the documentation, demos etc. It's hosted on Github pages and can be found inside docs.

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.10.0

Random spatially tuned Neurons

In this version, besides minor bug fixes, we are releasing a new Neurons subclass called RandomSpatialNeurons for when you require spatially tuned neurons but which aren't necesarily place cells or grid cells etc.

Users specify a lengthscale and these neurons sample a smooth random function from a Gaussian process with a squared exponential covariance function (roughly analogous to weighted sum of Gaussians). This is a much more "assumption free" way to model spatially tuned inputs and should be useful to a lot of users.

Note walls still act correctly (covariance between points opposite side of a wall is high) and this works in 1D too.

Import like any neuron:

python from ratinabox.Neurons import RandomSpatialNeurons

And use as follows: ```python Env = Environment() Env.add_wall([[0.3,0.35],[0.3,0.85]]) Ag = Agent(Env) RSNs = RandomSpatialNeurons(Ag, params = {'n':3,'lengthscale':0.1,},)

RSNs.plotratemap() ``` a0054d84-2d56-4f5e-83a4-11e738688eb5

python RSNs = RandomSpatialNeurons(Ag, params = {'n':3,'lengthscale':0.2,},) ec435df1-ee45-4510-b2a5-1d19e82e45f6

python Env = Environment(params={'dimensionality':'1D'}) Ag = Agent(Env) RSNs = RandomSpatialNeurons(Ag, params = {'n':10,'lengthscale':0.02,},) 23436238-9a8d-43f4-8e55-8f0e6197b5d9

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.9.3

Very minor change to resume compatibility with python >=3.7 (down from 3.10 in 1.9.2). See issue #79 and PR #81

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.9.2

Python requirement bumped from >= 3.7 to >= 3.10. Comment on issue #79 if this causes problems to your workflow.

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.9.1

Minor big fix for VectorCells

- Python
Published by TomGeorge1234 over 2 years ago

ratinabox - v1.9.0

Two main changes:

  1. Refactoring of VectorCells (BVCs and OVCs) and FieldOFViewNeurons moved from contribs to main. See #71
  2. New call NeuralNetworkNeurons in contribs. These (exciting) new neurons map inputs through a (user-provided NN) to the outputs. Can be used to make awesomely complex/trainable cell classes powered by RatInABox. It's mostly there but will stay as a contrib for now until its mature enough to go in main.

- Python
Published by TomGeorge1234 almost 3 years ago

ratinabox - v1.8.0

Bug fixes and implementation of independent head_direction variable for the Agent class which (by default) is a smoothed version of the velocity vector. The head direction is what is used by HeadDirectionCells and BoundaryVectorCells (egocentric) etc. to determine firing rate and smoothing can aid stability of processes which rely heavily on these classes.

What's Changed

  • Doc file fix by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/51
  • Possible fix for issue #52 by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/53
  • New RewardCache setting, Verbosity changes, Test functions/scripts by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/59
  • env changes, add_hole etc. by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/61
  • Merge pull request #61 from TomGeorge1234/dev by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/62
  • Moved OVC initialization steps to methods by @colleenjg in https://github.com/TomGeorge1234/RatInABox/pull/65
  • Update FieldOfViewNeurons.py by @Alxec in https://github.com/TomGeorge1234/RatInABox/pull/67
  • TaskEnvironment: option to delay episode terminate by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/68
  • flexible head direction by @mehulrastogi in https://github.com/TomGeorge1234/RatInABox/pull/72
  • fix goal_cache attribute and replenish typos by @kushaangupta in https://github.com/TomGeorge1234/RatInABox/pull/74

New Contributors

  • @Alxec made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/67
  • @kushaangupta made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/74

Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/v1.7.0...v1.8.0

- Python
Published by TomGeorge1234 almost 3 years ago

ratinabox - v1.7.0

Wrapper: RatInABox now supports OpenAI's gymnasium API

A new wrapper contributed by @SynapticSage allows RatInABox to natively support OpenAI's gymnasium API for standardised and multiagent reinforment learning. This can be used to flexibly integrate RatInABox with other RL libraries such as Stable-Baselines3 etc. and to build non-trivial tasks with objectives and time dependent rewards. Check it out here.

Overhaul of GridCell structure

How GridCells are initialised has been restructured. This is mostly backwards compatible and is explained in the GridCell docstring. To initialise grid cells you specify three things: (i) params['gridscale'], (ii) params['orientation'] and (iii) params['phaseoffset']. These are all sampled from a distribution (specified as, e.g. params['phaseoffsetdistribution']) and then used to calculate the firing rate of each grid cell. For each of these there quantities the value you specify parameterises the distribution from which it is sampled. For example params['gridscale':0.45,'gridscaledistribution':'uniform'] will pull gridscales from a uniform distribution between 0 and 0.45m. The 'delta' distribution means a constant will be taken. For all three of these you can optionally just pass an array of length GridCells.n (in which case the corresponding distribution parameter is ignored). This array is set a the value for each grid cell.

Other minor changes

  • Changes to how BVCs are initialised (similar to grid cells)

What's Changed

  • Distance tuning by @jquinnlee in https://github.com/TomGeorge1234/RatInABox/pull/47
  • TaskEnvironment by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/49
  • TaskEnvironments: flexible observation space and action_space bug by @SynapticSage in https://github.com/TomGeorge1234/RatInABox/pull/50

New Contributors

  • @jquinnlee made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/47
  • @musicinmybrain made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/48
  • @SynapticSage made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/49

Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/v1.6.3...v1.7.0

- Python
Published by TomGeorge1234 almost 3 years ago

ratinabox - v1.6.3

v1.6.3

  • Minor bug fixes to how figures are made. Some global params (MOUNTAIN_PLOT_WIDTH_MM, MOUNTAIN_PLOT_SHIFT_MM etc.) were created to help make figures more uniform across the package.

  • A new function was created to help make the process of extracting saved data between any two timestamps a bit easier. Figure plotting has been updated to use this function.

``` Agent.gethistoryslice(tstart, tend, framerate) """ " Returns a python slice() object which can be used to get a slice of history lists between tstart and tend with framerate. Use case: >>> slice = gethistoryslice(0,1060,20) >>> t = self.history['t'][slice] >>> pos = self.history['pos'][slice] t and pos are now lists of times and positions between tstart=0 and tend=1060 at 20 frames per second

    Args:
        • t_start: start time in seconds (default = self.history['t'][0])
        • t_end: end time in seconds (default = self.history["t"][-1])
        • framerate: frames per second (default = None --> step=0 so, just whatever the data frequency (1/Ag.dt) is)
    """

```

  • Some minor QOL improvement and bug fixes (again, mostly to figure plotting stuff).

Note tiny 1 line bug fix over 1.6.2

Thats about it

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.6.0

v1.6.0

Official new features

  • SuccessorFeatures(): New Neurons subclass for SRs and accompanying successor_features_example.ipynb demo script. SF_development
  • Ability to visualise multiple Agents with Ag.plot_trajectory(plot_all_agents=True) multi_agents
  • PlaceCells.remap() reinitialises place cell locations
  • Minor bug fixes

What's Changed

  • Successor features branch by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/41 Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/V1.5.1...v1.6.0

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - 1.5.1

1.5.1

Parameter checking

New feature created by @colleenjg which checks parameters passed by the user in the params dict. It works as follows:

If I initialise, for example, some GridCells (a subclass of Neurons) then at the point of initialisation of the parent Neurons class a check is performed: starting from the child class (GridCells) and working upwards to the top-level parent (Neurons) a dictionary of all valid default params -- the super set of GridCells.default_params and Neurons.default_params -- is established. Then, if any of the passed default params is not present in this set a warning is thrown. Example

GCs = GridCells(Ag,{"gridscalee":0.1}) # note typo: "gridscale" --> "gridscalee" returns:

UserWarning: Found 1 unexpected params key(s) while initializing Environment object: 'boundary_conditcions'. If you intended to set this parameter, ignore this message. To see all default parameters for this class call Environment.get_all_default_params().

It this parameter is a new intended by the user then they can ignore the warning. If not it will help prevent silent errors where parameters were incorrectly defined.

In order for this to work default_params now live as a class attribute and are defined in the preamble before __init__()

Users can query the default params of any class, including those inherited from their parents, by runnings:

GridCells.get_all_default_params()

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.4.1

Just minor changes to plotting stuff e.g. utils.save_figure() now usefully prints where a figure/animation is saved any time it does so.

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.4.0

v1.4.0 major changes

Two primary upgrades have been made in this release:

  • FieldOfViewNeurons: arranged manifolds of egocentric BVC or OVCs Neurons to make field-of-view tiling encodings.

python from ratinabox.contribs.FieldOfViewNeurons import FieldOfViewNeurons FoV_BVCs = FieldOfViewNeurons(Ag) FoV_OVCs = FieldOfViewNeurons(Ag,params={ 'cell_type':'OVC', }) FoV_whiskers = FieldOfViewNeurons(Ag,params={ "FoV_angles":[75,105], "FoV_distance":[0.1,0.2], "spatial_resolution":0.02,})

field_of_view

  • Updates to how RatInABox figures are saved.

    • User defined RatInABox.figure_directory sets where figures will be saved into.
    • By setting RatInABox.autosave_plots = True RiaB will automatically attempt to save figures into a figure directory.
    • Alternatively, RatInABox.utils.save_figure(fig, figure_name) can be used to manually save figures.
    • Figures saved by either of the above two methods will be put into a dated folder and appended with the current time (so no overwriting). This is a more sustainable way to make scientific figures, easing the load of saving each one by hand.
  • Retired simultaneously having both a 1.x and a dev branch in favour of just a dev branch. Easier to maintain. Users warned that dev may be unstable and that pip is the stable version.

Other "What's Changed"

  • Minor changes by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/27
  • Fix bug when sampling points in a non-rectangular environment by @frederikrogge in https://github.com/TomGeorge1234/RatInABox/pull/26
  • Bug fix for concave Environments by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/28
  • Various merges made into 1.x by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/29

New Contributors

  • @frederikrogge made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/26

Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/v1.2.0...v1.4.0

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.3.3 <-- v1.2.0

My release notes

Lots of new features, most important ones are listed on the README 1.3.3 because three minor bugs were caught after I published 1.3.0.

Major features:

  • FieldOfViewNeurons class for egocentric representations !!
  • Polygon environments and environments with holes
  • Generalised value function to multidimensional rewards
  • Object vector cells!
    • Objects are inherent to the Environment (Env.add_object()) and can be multiple types.
    • OVCs are selective to one type (at a preferred distance and angle)
  • Lots of figure plotting improvements

    • Default figure formatting and saving functions
    • Animations show inline on jupyter
    • Trajectories can be coloured by time
    • Rate timeseries figure changes (defaults look better now)
    • Curved environments (just by virtue of allowing N-polygon envs)
    • Plotting bug fixes and make defaults look prettier
    • New ratinabox.stylize() function sets rcParams on import to make plots better
    • New utils.save_figure() saves figures and animation in dated folder for rapid access
    • Default colormaps changed (inferno for rate maps)
  • Optional interpolation of trajectories when imported

  • save_history() optional

  • reset_history() method

  • Objects inherent to environment (Env.add_object()), OVCs read off these

  • Lots of smaller bug fixes

  • Updates to the README

=====

Autogenerated Release Notes

What's Changed

  • Minor changes by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/27
  • Fix bug when sampling points in a non-rectangular environment by @frederikrogge in https://github.com/TomGeorge1234/RatInABox/pull/26
  • Bug fix for concave Environments by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/28
  • Various merges made into 1.x by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/29
  • Merge dev into 1.x by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/31
  • animation save bug fix by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/32
  • matplotlib install bug fix by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/33

New Contributors

  • @frederikrogge made their first contribution in https://github.com/TomGeorge1234/RatInABox/pull/26

Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/v1.2.0...v1.3.0

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.2.0

This release add two new features:

  • ThetaSequenceAgent() -- A new Agent() subclass for generating hippocampal theta sequences. Class can be found in contribs folder. Demonstrative video is on the README.
  • Support for any-polygon-shaped environments and adding holes into environments. Demonstrations on the README. Plotting functions have been updated to support this aesthetically.

Full release notes...What's Changed

  • v1.2 <-- v1.1 by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/25 Full Changelog: https://github.com/TomGeorge1234/RatInABox/compare/v1.1.0...v1.2.0

- Python
Published by TomGeorge1234 about 3 years ago

ratinabox - v1.1.0

Some new features include:

some minor updates:

  • Made VelocityCells subclass of HeadDirectionCells
  • Changes to ratinabox/__init__.py so it is possible to import Environment, Agent, and Neurons, with:

python import ratinabox as riab Env = riab.Environment() Ag = riab.Agent(Env) PCs = riab.PlaceCells(Ag)

  • README update
  • Shift from setup.py to setup.cfg & pyproject.toml style installs
  • Citation bibtex file CITATION.bib added.

- Python
Published by TomGeorge1234 over 3 years ago

ratinabox - v1.0.1

What's Changed

Only minor unnoticeable changes * rate timerseries plotting sped-up * Install metainfo shifted from legacy setup.py to setup.cfg, added pyproject.toml

Change log

  • 1.x --> dev by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/14
  • Merge dev into 1.x by @TomGeorge1234 in https://github.com/TomGeorge1234/RatInABox/pull/15

Full Changelog

  • https://github.com/TomGeorge1234/RatInABox/compare/v1.0.0...v1.0.1

- Python
Published by TomGeorge1234 over 3 years ago

ratinabox - v1.0.0

v1.0.0, the initial release!

It is recommended to install this from PyPI (https://pypi.org/project/ratinabox/1.0.0/) via pip. Very minor incompatibility may be observed with pre-release versions, primarily how modules are imported. Built and source binaries provided.

- Python
Published by TomGeorge1234 over 3 years ago