All important changes to the decitala package will be documented here.
The changelog format is based on Keep a Changelog and the project uses Semantic Versioning.
v1.1.2 August 17, 2021
- Fixed typo for Shattala (formerly Shaltala).
- Added missing Schultz prime contour classes, 12a and 12b, to the contour module.
v1.1.1 August 14, 2021
- Rewrote my implementation of the Morris (1993) and Schultz (2008) contour reduction algorithms. Greatly shortened and simplified the code. The Schultz implementation was still complex enough that I decided to move it to a new module (
decitala.hm.schultz
), but the functionschultz_prime_contour
is still used in the same way –– it's just wrapped now. - Added tests for all Rossignol examples from Schultz (2008).
v1.1.0 July 27, 2021
- Added prosodic meters CSV file to the
corpora/prosody
directory. These encodings map to the newProsodicMeter
object. - Added
exact
parameter toFragmentHashTable
–– this allows you to more easily create exact-match hash tables for the various corpora. - Added ditrochee to
default_split_dict
.
- Issues #227: SP plotting utils were incorrectly returning
plt.show
.
v1.0.0 July 19, 2021
First stable release.
- Added a class method to
db.ExtractionData
to maintain consistency between it andsearch.Extraction
. - Added
split_dict
parameter tosearch.path_finder
. That way one doesn't need to re-write this post-processing code. - Added a
contour_class
inhm.contour
for experimenting with Schultz's work. - Added
NormalizedCounter
anddict_to_ordered_dict
todecitala.utils
. - Cleaned up existing hyperparameter calculation and plotting scripts, as well as (re)added a file for hyperparameter optimization (SLSQP and constricted space at finer resolution).
- Added Di- and Tri- proceleusmatic to corpora.
- Switched to codecov.io for coverage; it was annoying to include it as part of my workflow –– I'd rather it be automated.
- Added
colors
column toODNC
database and corresponding attribute to theSpecies
wrapper. - Allow the user to choose spearman or pearson correlation in the
KS
andKS_diatonic
functions inhm.hm_utils
. - Added function for getting the "shells" of an iterable to
utils
:utils.get_shells(iterable)
. - Added
create_path_database
function todatabase.db
for creating a database from fragments in a path.
- Return type for
hm_utils.pc_counter
is now either a tone counter or the sum of the quarter length values associated with each pitch class; any normalization now must usehm_utils.normalize_pc_counter
. - The default cost function used in
path_finder
and the associated helpers is nowCostFunction3D
with the optimized parameters. - Renamed
create_database
tocreate_extraction_database
. - Renamed poorly named functions in the contour module, e.g.
contour.pitch_content_to_contour
is now justcontour.pitch_contour()
.
- Removed unnecessary
frag_type
parameter toExtraction
. Now a class attribute ofGeneralFragment
(and subclasses).
- The
return_tonic
parameter forKS_diatonic
was returning incorrect values.
v0.14.1 July 2, 2021
- Fixed a number of typos and added missing examples in
decitala.hm
. - The
contour_to_prime_contour
function still had theinclude_depth
argument. I removed it. - Re-added commented-out assertions and exceptions, now that all the tests are passing.
- Updated Basic Usage to match the most recent updates.
- Missing default weights to
CostFunction3D
.
v0.14.0 July 1, 2021
- Moved all
moiseaux
(private repo) tools todecitala
. Thedecitala.db
now holdsTranscription
andSpecies
SQLAlchemy query wrappers; also added the corresponding helpers:db.get_all_transcriptions()
anddb.get_all_species()
. - Added
database.db_utils
module. - Added a
make_core_dbs
file todecitala.extra
that creates the fragment database and ODNC database. - Added
decitala.hm
directory for holding all harmony and melody (i.e. pitch) related analysis tools. This directory holds anhm.molt
module (tools for dealing with the modes of limited transposition), anhm.contour
module for contour calculations (moved some general utils there, like Morris prime contour calculation), and anhm.hm_utils
for utility functions; this final module also stores the associated color and key-finding coefficient data. - Improved implementation of the Morris contour reduction algorithm (1993). Also added an implementation of Schultz's modified contour reduction algorithm (see Schultz 2008, p. 108).
- Added
decitala.sp
directory for holding signal processing tools. It currently only holds ansp_utils
module for spectrogram/audio plotting, but this directory will be populated in future versions. - Added Dipartite and Tripartite Hexasyllabic Metrics: Dianapest, Dicretic, Didactyl, and Triiamb.
- Scripts for calculating hyperparameters and plotting analysis are in the
decitala.extra
directory. Latest accuracy is 74.41%. - Added
enforce_earliest_start
argument topath_finding_utils.sources_and_sinks
. - Added
split()
method to bothGeneralFragment
andExtraction
. Used for splitting Di- and Tri- partite greek prosodic feet. - Added
slur_count
andslur_start_end_count
arguments to theExtraction
dataclass.
- Changed
roll_window
parameter towindow_size
(instead ofwindow_length
).
- Dactylo-Epitrite. Removed as, along with Dochmius, there are a large number of variations of the fragment (see Traité Vol. 1).
- Graph calculation for Dijkstra was being done within the function. Given the agnostic source/target picking, this was very inefficient; now, the graph is generated a single time in
dijkstra_best_source_and_sink
. - Various bugfixes for Dijkstra and Floyd-Warshall for source and target picking.
v0.13.2 June 19, 2021
- Added the missing progress bar for
path_finding_utils.build_graph
(verbose=True
did nothing). - Fixed bug (#144) in
measure_divide_mode
ofutils.get_object_indices
. - Fixed several documentation errors.
v0.13.1 June 19, 2021
- Issue #157: broken
source
button.
v0.13.0 June 19, 2021
- All results from
search.rolling_hash_search
are now stored asExtraction
dataclasses. This new approach greatly simplifies the inconsistent dictionary-style search results. Also removes the need to storefrag_type
s in the hash tables. - Added a
CostFunction
class todecitala.path_finding_utils
. This cost function class is to be used as an input topath_finder
anddijkstra
(andfloyd_warshall
, as well), replacing the previously usedweights
dictionaries. This addition allows the user to input any cost function they like (see PR#152). - Added three functions to
fragment
for querying the fragment database for each fragment type:get_all_greek_feet
,get_all_decitalas
, andget_all_prosodic_fragments
. - Added
rolling_SRR
function to utils. - Added
decitala.extra
module where miscellaneous scripts will be stored. This will eventually hold the script for computing hyperparameters (decitala.extra.hyperparameters
) and the formerly hidden script for remaking analysis files. - Added
decitala dtest --module
CLI tool for quickly running doctests (hindered by relative imports). Consequently removed thetests/doctest_runner.py
file. - Restructured the DB approach. Added a
database
directory that will store all the database-related material.
- All tree creation has migrated to the treeplotter package. Removed the Treant templates accordingly.
- Greatly simplified the logic in
successive_ratio_array
andsuccessive_difference_array
using numpy.
- Issues #147: allow weight hyperparameters as input to Dijkstra; #143:
0
as possible quarter length inFragmentHashTable
; #157: broken source button in docs (as well as missing section).
v0.12.1 May 23, 2021
- The
path_finding_utils.build_graph
function was calculating the cost between two vertices without checking if it needed to be calculated. - Bug in
GreekFoot
returned incorrectself.data
due to extra slash in path. - Fixed incorrect presets for
generate_all_modifications
in the hash table module. Also now force clearing the dictionary before running load with new parameters. - Documentation fixes; added screenshots of the visualization functions.
v0.12.0 May 21, 2021
- Began adding prosodic patterns from Traité T1 analyses. Also added classes (and corresponding
frag_types
) for the package. You can now createfragment.ProsodicFragment
objects as well as create, for instance, aProsodicFragmentHashTable
. These fragments will accumulate over future versions (directory structure subject to change). - Added
plot_2D_search_results
tovis
module for plotting search results in XY space, along with a given path. (This implements #4, finally!) - Re-added
search.rolling_search_on_array
. It conforms to the hash table approach. (See #48) - Added
allow_contiguous_summation
parameter tosearch.rolling_hash_search
andpath_finder
. (See #127) - Added
Breve
andMacron
classes to the fragments module. This will eventually be used in accessing theparts
of aProsodicFragment
. - Added missing parameter for
windows
andallow_subdivision
insearch.path_finder
.
- Big documentation improvements, code/logic cleanup. Trying a new solution for documentation maintenence. Using a github build in the sphinx makefile.
- Removed
utils.is_octatonic_collection
. All Modes of Limited Transposition stuff will eventually be living inmoiseaux.molt
. - Moved some
search
-specific functions fromutils
(they were really helpers, not utility functions). See #138.
v0.11.1 May 13, 2021
- Moved
dseg
calculation toutils.py
thatGeneralFragment.dseg
now wraps. Also madereduced
a parameter in the same function for simplicity (removing the need for a second method). - Table name in
database.py
for extractions is nowExtractions
, notFragments
(this made no sense). - Structure of documentation. Major improvements to Basic Usage.
- Missing
lru_cache
inGeneralFragment.ql_tuple()
. - Missing
get_engine/get_session
indatabase.py
. - Issues #133: formatting issue in docs; #131: missing assertions in database tests.
v0.11.0 May 12, 2021
- Added a
utils.phrase_divider
function for over-simplistically dividing a filepath/part-num combination into phrases (in the same output asutils.get_object_indices
). The division is only on the basis of the appearance of rests and fermatas. (See #104) - Added a
contour_to_neume
function in utils.py for some experiments with Wai Ling Cheong's work (2008). - Hash tables and search now support stretch augmentation. Added
utils.stretch_augment
for simplicity.
- All functions accepting a
ql_array
inutils.py
now take in a variable calledql_array
–– a few were set tofragment
instead which was confusing (fixes #122). - The
measure_divider_mode
ofutils.get_object_indices
now accepts"str"
and"list"
to be consistent with standard python type naming. - Renamed
utils.ts_to_reduced_ts
toutils.reframe_ts
and now allow any inputnew_denominator
(reducing maximally by default). - Removed complicated Cauchy-Schwartz pre-filtering in the Tree instantiation. Faster to just overwrite than check.
- Issues #130: Allow both lowercase and uppercase algorithm names in
search.path_finder
; #129: contiguous summation fails with rests; #132:ignore_grace
was not doing anything (also fixed docs typo) inget_object_indices
;
v0.10.1 May 1, 2021
- The caching in the
fragment
module now usesfunctools.lru_cache(maxsize=None)
(replacing the newerfunctools.cache
) to allow support for python 3.7/3.8.
- The
utils.find_possible_superdivisions
function was including itself as a possible superdivision. This was a bit confusing, so I added aninclude_self
parameter. This option was accidentally set toFalse
by default which has been fixed. - Issues #125: duplicate
sr
andrsr
results fromrolling_hash_search
; #123/#126: source-sink error in Dijkstra (fixed with a much more general solution (seepath_finding.dijkstra.dijkstra_best_source_and_sink
) and integrated intosearch.path_finder
.
v0.10.0 April 29, 2021
- Revamped the database module (see #120). Everything is now ported over to SQLAlchemy and is more easily extendable to broader rhythmic corpora. Also added a
database.batch_create_database
function for creating a database from a large set of compositions. - Implemented Dijkstra's Algorithm for path finding. This is now the default algorithm used in
search.path_finder
, but the user can override this. - New utils functions and additions: a
non_retrogradable_measures
function for finding all palindromic measures in a given filepath and part number; an optionalmeasure_divider_mode
parameter toutils.get_object_indices
which returns the same objects, divided into lists of measures or objects divided by a string; autils.ts_to_reduced_ts
function for fully reducing time signatures; aUtilsException
class. - The
search.path_finder
function now has optionalsave_filepath
argument for dumping the results to a JSON file. (#97) - All classes inheriting from
GeneralFragment
(currently justDecitala
andGreekFoot
) as well asGeneralFragment
itself now have afrag_type
class attribute.
- Renamed the
fragments
directory tocorpora
. Also removed the.sib
encoding files for the greek metrics to make the package lighter weight. - The
fragments
module was relying on SQLite in a piecemeal way. Objects from encoded corpora are now proper SQLAchemy models for consistency with the rest of the package. - The
fragment.morris_symmetry_class
function now returns integers representing the classes (instead of string describing them). The meaning of each class is given in the documentation. - Refactored
path_finding.floyd_warshall
and added helper functions for all path-finding algorithms topath_finding_utils.py
. - The CLI
path-finder
tool now logs the saved file. - Improved doctest integration by running them within the (pytest) tests directory.
- Removed all
# -*- coding: utf-8 -*-
lines. - Renamed
trees.rolling_search
totrees.rolling_tree_search
to be consistent with the other rolling search type(s) (#114). - The
Decitala.get_by_id
class method now requires a string as input. Additionally theid_num
property returns a string as a number of the Decitalas have subtalas. - All
GeneralFragment
objects now have thecarnatic_string
andgreek_string
properties.
- Issues #116: missing result logging from
decitala.cli.pathfinder
; #115: incorrect results from Morris symmetry classes; #73: default value fortry_contiguous_summation
. - Incorrect serialization condition for
GeneralFragment
–– forced incorrect parsing to and from analysis files.
v0.9.1 April 16, 2021
- Added testing to improve coverage (50%-52%)
- Issues #102: empty numpy iterator for cases with no extracted fragments; #109: missing verbose argument in
search.path_finder
; #111: UnboundLocalError for Bach chorale –– this also resolves #101; #106: reformatted analysis JSON files to match the output ofsearch.path_finder
(every extraction is a dictionary). - Typo in Documentation installation instructions.
- Missing documentation for
vis.result_bar_plot
. - Fixed incorrect order of Morris Symmetry Classes (1999).
- Removed
py_modules
fromsetup.py
.
v0.9.0 April 14, 2021
- Function for annotating a score with the extracted data:
vis.annotate_score
. - Added private
remake_analysis_files.py
for remaking the analysis files in each release. - Added testing to improve coverage (46%-50%).
- Added various utility functions:
utils.measure_by_measure_time_signatures
(for for extracting measure-by-measure time signatures);utils.is_octatonic_collection
(for checking if pitch content belongs to one of the two octatonic collections);utils.write_analysis
(for writing analysis JSON files);utils.net_ql_array
(for returning all quarter length values in a given composition as a vector);utils.transform_to_time_scale
(for getting the time-scale notation of quarter length array). - Added
PRIMES
variable toutils.py
for storing primes <100. - Added
vis.result_bar_plot
for plotting the counts of the extracted fragments in apath_finder
list or analysis JSON (#105). - Added the first class of the
Theorie_Karnatique
dataset (Tiśra) to thefragments
directory. These are not yet integrated into thefragments
module.
- Improved
fragment.py
'sFragmentEncoder
andFragmentDecoder
classes with better logic; this fixes #99: incorrectfrag_type
in the JSON encoding.
- Missing import bug in
vis.annotate_score
. - README: incorrect installation notes in README, improved translation to the commentary.
- Issues #53: duplicates in logs caused by saved handlers; #100:
path_finder
bug related tocurr_best_sink
;
v0.8.4 March 22, 2021
- Added the missing Zenodo badge to the README.md file.
v0.8.3 March 22, 2021
- Issue #90: removed unused JS modules used in tree visualization.
v0.8.2 March 22, 2021
- Added a
.coveragerc
file for excluding the tests and CLI tools from coverage reports.
- Refactored
get_path
to include areconstruct_standard_path
helper function.
- Additional bugfixes for slur constraint in
get_path
(causing infinite runtime). - Issues #19: referenced a fault Nary tree size. It appears to be fixed, but I added a test; #95: the
pathfinder
command line tool now writes to JSON; #94: minor formatting error infloyd_warshall.py
.
v0.8.1 March 20, 2021
- Coverage and coverage shield for code improvement.
- The CLI
pathfinder
tool now wraps the search.py module'spath_finder
function. - The
create_tree_diagram
now useswebshot
from R to save to PNG. Can also now effectively doFragmentTree.show()
without opening in the browser using the wand library.
- Github Actions is now caching dependencies for faster builds.
- Fixed bugs in
vis.create_tree_diagram
. - Bugfixes in
path_finder
related tois_spanned_by_slur
attribute. - The
utils.roll_window
now ensures that noNoneTypes
are included if the window size is greater than the input data. Similarly, inrolling_hash_search
we ensure no searches of size greater than the length of the data. - Fixed missing Iambs in the GreekFoot hash table (#91).
- The
Decitala
andGreekFoot
classes included astream
attribute in their__init__
–– this is already created in thesuper
. - Hotfix to extremely strange inheritance bug in the
GeneralFragment
child classes. (#92) - Bugfix in
floyd_warshall.get_path
. Function was inserting the given starting point in the path, even if it was overrided by the slur constraint.
v0.8.0 March 15, 2021
- Added a
loader
function in utils.py for easy loading of Messiaen's analyses (encoded by me). Also added additional analysis json files (including parts 0 & 1 of Livre d'Orgue (1951-52) movement V). - Added testing and improved functionality for the hash table creation and
rolling_hash_search
. This included adding aGreekHashTable
andCombinedHashTable
for a combined database. - Added an optional progress bar to the Floyd-Warshall algorithm.
- Added function for getting the best source and sink after Floyd-Warshall (
floyd_warshall.best_source_and_sink(data)
). - Added
+/- 0.125, +/- 0.375, -0.25, 0.875, 1.75, 2.625, 3.5, 4.375
as possible difference valuess inhash_table.py
; also added0.125, 0.25
as a possible ratio values. - Added a
path_finder
command line tool that wraps all the functions for analysis via Floyd-Warshall & the hash tables. Used simply asdecitala path-finder --filepath ... --part_num ... --frag_type ...
. - Added a
ignore_single_anga_class_fragments
parameter torolling_hash_search
(default is False). - Added optional
slur_constraint
parameter tofloyd_warshall.best_path
which constrains the path to require the slurred fragments found (#87).
- Removed the
self.conn
attribute in theDecitala
class; in doing so, we can now use multiprocessing (multiprocessing requires pickling which is impossible on sqlite3Connection
objects).
- Missing modification data in
rolling_hash_search
.
v0.7.4 March 8, 2021 (Kent)
- Finished applying flake8 to modules.
- Fixed #83 (missing modules in setup.py)
v0.7.3 March 8, 2021 (Kent)
- Re-gitignored
local_docs
.
v0.7.2 March 8, 2021 (Kent)
- Missing modifications types
rr
,rd
,sr
, andrsr
inDecitalaHashTable
. Refactored and clean up the instantiation code –– still requires work for Greek metrics and General fragments. - Applied flake8 to vis.py.
- JSON Serialization/Deserialization errors for
GeneralFragment
and its inherited classes. This makes saving "training data" easier. (This step is for the next minor patch.) - The
local_docs
directory (this was previously gitignored for no good reason). Also an analyses directory of databases holding valid analysis of compositions.
v0.7.1 March 3, 2021 (NYC)
- In enabling github actions, I hit several git/github snags. There were some commit message errors and bad merges. Hopefully everything is fixed now.
v0.7.0 March 3, 2021 (NYC)
- Implemented the Floyd-Warshall Algorithm for path-finding.
- Added a
hash_table.py
module for more efficient searching. This is used insearch.rolling_hash_search
. - Added flake8 for maintaining PEP8 standards. Applied to setup.py, fragment.py, and utils.py.
- Added a
fragment_roll
function tovis.py
(#62). - Added a progress bar to
DBParser.model_full_path
to more easily track progress. - Added a
DBParser.onset_ranges
method that returns a list of tuples holding the onset ranges of all extracted fragments. - Added a
return_data
parameter tomodel_full_path
(just a wrapper forpath_data
). - Added an MIT License
- The
trees.py
module has been refactored intotrees.py
andsearch.py
with the relevant search functions in the latter module. (#27)
- Issue #54 (unreferenced variable); Issue #51 (updated databases); Issue #58 (unfiltered fragment table);
v0.6.3 February 23, 2021 (NYC)
- Added support/testing for python3.8.
- Migrated to SQLAlchemy for
database.create_database
. - Further refactored
database.create_database
. - Default window sizes in
database.create_database
no longer includes 1. - Updated the gitignore file.
- Issue #45 (requires .db extension in
database.create_database
); Issue #46 (missing logger reference in helper function); Issue #47 (missing logs in the trees.py module); Issue #40 (incorrect numbers indatabase.create_database
logs); Issue #50 (changestart
in enumeration statements for readability); Issue #41 (first part of migration to SQLAlchemy); Issue #37 (example SQL insertion error).
v0.6.2 - February 5, 2021 (NYC)
- Refactored code in
database.create_database
to improve readability.
v0.6.1 - February 3, 2021 (Kent, CT)
- Fixed issue #35. Error with saving logs to file.
- The trees module no longer logs results. This is a temporary change while I figure out a better solution for global/local logging.
v0.6.0 - February 3, 2021 (Kent, CT)
- Added the missing
database.model_full_path
function. - Documentation fixes for
DBParser
andfragments.py
. - Optional
save_logs_to_file
parameter todatabase.create_database
. - Can now create FragmentTrees from a list of multiple data paths.
- Section in the documentation giving a brief exposition to the encoded rhythmic fragments.
- Documentation now is in sphinx RTD theme.
- Revamped README.
- Rather than setting the same logger at the top of each file, added
get_logger
function to utils.py in which we can set optional filename to the basicConfig for saving to file when desired.
- Missing name argument in fragment trees created from
frag_type
.
v0.5.2 - January 17, 2020 (Kent, CT)
- Codecov coverage status (because the service is terrible).
v0.5.1 - January 17, 2020 (Kent, CT)
- Added a function in database.py that filters out cross-corpus duplicates from the data generated in
create_database
(database.remove_cross_corpus_duplicates
).
- Fragment Trees are now created with
frag_types
via the class methodFragmentTree.from_frag_type
. (The logic in the__init__
is now much cleaner.)
- Coverage results published on codecov.io (private upload token) with badge.
v0.5.0 - January 16, 2020 (Kent, CT)
- Added a
create_fragment_database
function indatabase.py
that holds name/ql data & ratio/difference equivalents in the decitala and greek metric databases (including equivalents across databases). This data is available infragment_database.db
in the databases directory. - Decitala and GreekFoot objects now have an
equivalents
method that return equivalents (based on therep_type
) in the fragment corpus. - Created a Travis-CI account for continuous integration.
- Added a Codecov account for coverage.
- Added build icons for travis-ci and codecov.
- Decitala and Greek Metric instantiation now relies on SQL database instead of
os.listdir
. - FragmentTree instantiation now relies on SQL database instead of os.listdir.
- No doctests rely on absolute paths anymore.
v0.4.4 - January 10, 2020 (Kent, CT)
- The output of rolling search now has an id parameter. This will be useful in a number of contexts. NOTE: this may require some fiddling when dealing with combined databases.
- Rewrote all the
pofp.py
code, making it far more readable. The duplicate error caused by contiguous summation should now be fixed.
v0.4.3 - January 8, 2020 (Kent, CT)
- The DBParser now has
metadata
in the attributes, which stores the path table num, number of subpaths, and average onset data. That way, it needn't be reevalutaed every time we run the model.
- Fixed minor documentation errors.
- Removed all inheritence from
object
in classes (python3 classes are new-style).
v0.4.2 - January 7, 2020 (Kent, CT)
- Added fragment table visualization (
DBParser.show_fragments_table
) using pandas (wrapper for pd.read_sql_query). Also added a few other sub-displays (likeshow_slurred_fragments
). - Added preliminary native FragmentTree visualization. Can be called with
FragmentTree.show()
. - Implemented first path processing/modeling methods for the
database.DBParser
class. Most of thepaths.py
code has moved there.
- Fragments table from
database.create_database
has the name in the fragment column instead of full repr. - Output of
get_pareto_optimal_longest_paths
now includes all data, not just the fragment. - Cleaned up the path code in
database.create_database
. - The Paths tables in the database now store the row number in the
onset_range
columns. - The Path tables are no longer 0-indexed.
- The rolling search code now has a line that filters out all grace notes. This was causing the duplicates in the database creation.
- Minor documentation fixes (typos and old parameters).
- The
paths.py
file has been removed as all of its functionality has migrated todatabase.DBParser
.
v0.4.1 - January 4, 2020 (Kent, CT)
- Bugfix for prime pitch contour calculation (cseg doesn't work on extrema data).
- Bugfix in database creation (missing comma).
v0.4.0 - January 4, 2020 (Kent, CT)
- Added
utils.pitch_content_to_contour
. - Implementation of Morris' 1993 pitch contour reduction algorithm.
utils.contour_to_prime_contour
. - Added
Pitch_Contour
column in the Fragment database.
- The
utils.roll_window
function now allows for afn
input (allows for rolling window over parts of list, as defined by a lambda expression).
v0.3.2 - January 1, 2020 (Kent, CT)
__all__
for each module for ease-of-import.- Documentation for CLI (version getter and
cli.create_db
).
- Bugfix in
utils.frame_is_spanned_by_slur
. Previously didn't take into account the fact that a range may have multiple overlapping spanners. - Removed old tree diagram information from cli.
v0.3.1 - December 31, 2020 (Kent, CT)
- Documentation page for
vis.create_tree_diagram
(Fragment Tree visualization using Treant.js.) - Log message telling the user if a database has already been made (useful for working in Jupyter).
- Incorrect output of
pofp.partition_data_by_break_points
caused by unsorted data fromtrees.rolling_search
. - Documentation typo for
utils.filter_single_anga_class_fragments
.
v0.3.0 - December 30, 2020 (Kent, CT)
- Added preliminary
database.DBParser
class that allows for easier querying of data from theFragment
table ofdatabase.create_database
.
- The pitch information from rolling search is now stored in the Fragments table (made in
database.create_database
).
- Helper functions
database._check_tuple_in_tuple_range
anddatabase._pitch_info_from_onset_range
are removed due to the above addition.
v0.2.4 - December 30, 2020 (Kent, CT)
- Bugfix in
database.create_database
(related to new rolling search output). - Bugfix in
pofp.get_pareto_optimal_longest_paths
(related to new rolling search output).
v0.2.3 - December 30, 2020 (Kent, CT)
- Added a
utils.frame_to_midi
option used in rolling search. - Documentation updates reflecting the new rolling search output.
- Output of
trees.rolling_search
is now a list ofdict
objects. This is better for querying data, adding extra parameters, etc... - The
trees.rolling_search
function now stores pitch data using theutils.frame_to_midi
. - Changed the input data parameter of
utils.frame_to_ql_array
fromdata
toframe
(matching the other functions). - Made the
utils.find_clusters
function public.
- Removed
trees.rolling_search_on_array
(at least for now) as it doesn't currently match the other search formats. - Removed
utils.contiguous_multiplication
.
v0.2.2 - December 29, 2020 (Kent, CT)
- Added a .yaml file for a pre-commit hook that prevents writing to master. (Uses
pre-commit
library).
- Changed the name of
utils.frame_is_spanned_by_slur
(fixing a typo).
- Removed unnecessary doctest imports from modules.
- Removed old cleaning function for
setup.py
.
v0.2.1 - December 29, 2020 (Kent, CT)
- The
decitala.trees
anddecitala.database
modules now uselogging.disable
(removing a number of if statements) for readability. (Also removed logging fromdecitala.pofp
.)
v0.2.0 - December 29, 2020 (Kent, CT)
- The
decitala.utils
module now includes aframe_is_spanned_by_slur
function. - The output of
trees.rolling_search
now includesis_spanned_by_slur
for each fragment found. - The output of
database.create_database
now shows which fragments are spanned by music21.spanner.Slur objects.
- The
database.create_database
function now raises aDatabaseException
when an invalid score path is provided.
v0.1.1 - December 28, 2020 (Kent, CT)
- First tagged version.
- Documentation (made with sphinx, hosted on github pages) available at https://luke-poeppel.github.io/decitala/.