Skip to main content

FSRS Optimizer

PyPi Code style: black

The FSRS Optimizer is a Python library capable of utilizing personal spaced repetition review logs to refine the FSRS algorithm. Designed with the intent of delivering a standardized, universal optimizer to various FSRS implementations across numerous programming languages, this tool is set to establish a ubiquitous standard for spaced repetition review logs. By facilitating the uniformity of learning data among different spaced repetition softwares, it guarantees learners consistent review schedules across a multitude of platforms.

Delve into the underlying principles of the FSRS Optimizer's training process at: https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-mechanism-of-optimization

Explore the mathematical formula of the FSRS model at: https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm

Review Logs Schema

The review_logs table captures the review activities performed by users. Each log records the details of a single review instance. The schema for this table is as follows:

Column Name Data Type Description Constraints
card_id integer or string The unique identifier of the flashcard being reviewed Not null
review_time timestamp in miliseconds The exact moment when the review took place Not null
review_rating integer The user's rating for the review. This rating is subjective and depends on how well the user believes they remembered the information on the card Not null, Values: {1 (Again), 2 (Hard), 3 (Good), 4 (Easy)}
review_state integer The state of the card at the time of review. This describes the learning phase of the card Optional, Values: {0 (New), 1 (Learning), 2 (Review), 3 (Relearning)}
review_duration integer The time spent on reviewing the card, typically in miliseconds Optional, Non-negative

Extra Info:

  • timezone: The time zone of the user when they performed the review, which is used to identify the start of a new day.
  • day_start: The hour (0-23) at which the user starts a new day, which is used to separate reviews that are divided by sleep into different days.

Notes:

  • All timestamp fields are expected to be in UTC.
  • The card_id should correspond to a valid card in the corresponding flashcards dataset.
  • review_rating should be a reflection of the user's memory of the card at the time of the review.
  • review_state helps to understand the learning progress of the card.
  • review_duration measures the cost of the review.
  • timezone should be a string from the IANA Time Zone Database (e.g., "America/New_York"). For more information, refer to this list of IANA time zones.
  • day_start determines the start of the learner's day and is used to correctly assign reviews to days, especially when reviews are divided by sleep.

Please ensure your data conforms to this schema for optimal compatibility with the optimization process.

Optimize FSRS with your review logs

Installation

Install the package with the command:

python -m pip install fsrs-optimizer

You should upgrade regularly to make sure you have the most recent version of FSRS-Optimizer:

python -m pip install fsrs-optimizer --upgrade

Opimization

If you have a file named revlog.csv with the above schema, you can run:

python -m fsrs_optimizer "revlog.csv"

Expected Functionality

image

image


Alternative

Are you getting tired of installing torch? Try fsrs-rs-python!

Metadata

Release files for FSRS-Optimizer 6.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for FSRS-Optimizer 6.5.0
File Size Uploaded
fsrs_optimizer-6.5.0.tar.gz 37.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for FSRS-Optimizer 6.5.0
File Interpreter ABI Platform
fsrs_optimizer-6.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 76.0 kB

Release files / fsrs_optimizer-6.5.0.tar.gz

Download URL fsrs_optimizer-6.5.0.tar.gz
Size 37.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2afb0c10ad8abca5071bacc6a3888aeecf153f2a7348f0fe2767bec3ccfd5cd8
BLAKE2b-256 checksum
How to use checksums
f2db97688f4b8bb0d15ee513f84e8fba433cf4baf575b80c148e9498aa5cb6bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.14

Release files / fsrs_optimizer-6.5.0-py3-none-any.whl

Download URL fsrs_optimizer-6.5.0-py3-none-any.whl
Size 38.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
245ea144584c3db2bbdfdccb3beebf29978a400aa01f8cd33bf947b6f7cff20c
BLAKE2b-256 checksum
How to use checksums
a637740eeb688a0d4dee86fb8530785bc621e4e5b456fd52bc7b236faf62c576
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.14

Release history Release notifications | RSS feed

This release

6.5.0 This release

2 release files

6.4.0

2 release files

6.3.0

2 release files

6.2.0

2 release files

6.1.6

2 release files

6.1.5

2 release files

6.1.4

2 release files

6.1.3

2 release files

6.1.2

2 release files

6.1.1

2 release files

6.1.0

2 release files

6.0.0

2 release files

5.7.3

2 release files

5.7.2

2 release files

5.7.1

2 release files

5.7.0

2 release files

5.6.5

2 release files

5.6.4

2 release files

5.6.3

2 release files

5.6.2

2 release files

5.6.1

2 release files

5.6.0

2 release files

5.5.0

2 release files

5.4.2

2 release files

5.4.1

2 release files

5.4.0

2 release files

5.3.0

2 release files

5.2.3

2 release files

5.2.2

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.0

2 release files

5.0.10

2 release files

5.0.9

2 release files

5.0.8

2 release files

5.0.7

2 release files

5.0.6

2 release files

5.0.5

2 release files

5.0.4

2 release files

5.0.3

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.29.0

2 release files

4.28.2

2 release files

4.28.1

2 release files

4.28.0

2 release files

4.27.7

2 release files

4.27.6

2 release files

4.27.2

2 release files

4.27.1

2 release files

4.27.0

2 release files

4.26.8

2 release files

4.26.7

2 release files

4.26.6

2 release files

4.26.5

2 release files

4.26.4

2 release files

4.26.3

2 release files

4.26.2

2 release files

4.26.1

2 release files

4.25.1

2 release files

4.25.0

2 release files

4.24.2

2 release files

4.22.0

2 release files

4.21.0

2 release files

4.20.8

2 release files

4.20.4

2 release files

4.20.3

2 release files

4.20.2

2 release files

4.20.1

2 release files

4.20.0

2 release files

4.19.2

2 release files

4.19.1

2 release files

4.19.0

2 release files

4.18.1

2 release files

4.18.0

2 release files

4.17.0

2 release files

4.16.3

2 release files

4.16.2

2 release files

4.16.1

2 release files

4.16.0

2 release files

4.15.4

2 release files

4.15.3

2 release files

4.15.2

2 release files

4.15.1

2 release files

4.15.0

2 release files

4.14.3

2 release files

4.14.2

2 release files

4.14.1

2 release files

4.14.0

2 release files

4.12.1

2 release files

4.12.0

2 release files

4.11.0

2 release files

4.10.0

2 release files

4.9.1

2 release files

4.9.0

2 release files

4.8.0

2 release files

4.7.1

2 release files

4.7.0

2 release files

4.6.0

2 release files

4.5.5

2 release files

4.5.4

2 release files

4.5.3

2 release files

4.5.2

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.2

2 release files

4.4.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page