-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate Musical Isomorphisms by Default #269
Open
lukem12345
wants to merge
8
commits into
main
Choose a base branch
from
llm/halfar-wedge
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
8cbca40
Use musical isomorphism inference from DiagX main
lukem12345 adbc661
Make operator sets global consts
GeorgeR227 1a170b6
Revert "Make operator sets global consts"
GeorgeR227 c709926
Fixed making operator sets global consts
GeorgeR227 b7b55e3
Change match to getter functions
GeorgeR227 8cfff5e
Move musical iso to just default
GeorgeR227 808cd61
Fixed always adding non_opt ops
GeorgeR227 f536e8e
Annotate operators in docs
GeorgeR227 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,31 @@ using Krylov | |
using LinearAlgebra | ||
using SparseArrays | ||
|
||
# Define mappings for default DEC operations that are not optimizable. | ||
# -------------------------------------------------------------------- | ||
function default_dec_generate(sd::HasDeltaSet, my_symbol::Symbol, hodge::DiscreteHodge=GeometricHodge()) | ||
|
||
op = @match my_symbol begin | ||
|
||
# :plus => (+) | ||
:(-) || :neg => x -> -1 .* x | ||
:ln => (x -> log.(x)) | ||
|
||
# Musical Isomorphisms | ||
:♯ᵖᵖ => dec_♯_p(sd) | ||
:♯ᵈᵈ => dec_♯_d(sd) | ||
:♭ᵈᵖ => dec_♭(sd) | ||
|
||
_ => error("Unmatched operator $my_symbol") | ||
end | ||
|
||
return (args...) -> op(args...) | ||
end | ||
|
||
function default_dec_cu_generate() end; | ||
|
||
# Define mappings for default DEC operations that are optimizable. | ||
# ---------------------------------------------------------------- | ||
function default_dec_cu_matrix_generate() end; | ||
|
||
function default_dec_matrix_generate(sd::HasDeltaSet, my_symbol::Symbol, hodge::DiscreteHodge) | ||
|
@@ -57,12 +82,6 @@ function default_dec_matrix_generate(sd::HasDeltaSet, my_symbol::Symbol, hodge:: | |
:Δᵈ₀ => Δᵈ(Val{0},sd) | ||
:Δᵈ₁ => Δᵈ(Val{1},sd) | ||
|
||
# Musical Isomorphisms | ||
:♯ => dec_♯_p(sd) | ||
:♯ᵈ => dec_♯_d(sd) | ||
|
||
:♭ => dec_♭(sd) | ||
|
||
# Averaging Operator | ||
:avg₀₁ => dec_avg₀₁(sd) | ||
|
||
|
@@ -146,20 +165,6 @@ function dec_avg₀₁(sd::HasDeltaSet) | |
(avg_mat, x -> avg_mat * x) | ||
end | ||
|
||
function default_dec_generate(sd::HasDeltaSet, my_symbol::Symbol, hodge::DiscreteHodge=GeometricHodge()) | ||
|
||
op = @match my_symbol begin | ||
|
||
:plus => (+) | ||
:(-) || :neg => x -> -1 .* x | ||
:ln => (x -> log.(x)) | ||
|
||
_ => error("Unmatched operator $my_symbol") | ||
end | ||
|
||
return (args...) -> op(args...) | ||
end | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see that the function above is just a move of this + adding the sharp and flat. |
||
|
||
function open_operators(d::SummationDecapode; dimension::Int=2) | ||
e = deepcopy(d) | ||
open_operators!(e, dimension=dimension) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
by optimizable do you mean able to be represented by a sparse matrix? The function below is called
default_dec_matrix_generate
, which has matrix in the name.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, for example, the sharp operator is a matrix, but we do not allocate memory for their outputs.
If I recall correctly, the generic term "optimizable" as used in this code base just means that the assignment uses either
.=
syntax or themul!
method when being emitted.One of the things that I tried to do is amend this state of affairs, by drawing a distinction between
operators with special logic that happen to be matrices
,operators with special logic that do not happen to be matrices
, andoperators with no special logic and we do not care if they are matrices or not