fix(p_loraks.py): remove incorrect S-matrix operator_shape doubling i… - #15
Open
wzlk655 wants to merge 1 commit into
Open
fix(p_loraks.py): remove incorrect S-matrix operator_shape doubling i…#15wzlk655 wants to merge 1 commit into
wzlk655 wants to merge 1 commit into
Conversation
…n _initialize_matrix_indices
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pull Request Description
Problem
When using P-LORAKS with the S-matrix operator type and multi-coil data, reconstruction failed with the error:
This occurred in
s_operator()at the lineindices_rev = indices.view(matrix_shape).flip(dims=(0,)).Root Cause Analysis
Complete data-flow trace through the S-matrix pipeline:
get_linear_indices()returnsindices(62500, 49)=(ns, nb)_initialize_matrix_indices()incorrectly doublesmatrix_operator_shape(125000, 98)=(2×ns, 2×nb)s_operator()callsindices.view(matrix_shape)indicesThe
s_operatorfunction internally handles S-matrix doubling via quadrant concatenation:No external doubling of
matrix_operator_shapeis needed — the doubling insides_operatoralready produces the correct(2×nb, 2×ns)dimensions.Fix
File: p_loraks.py
Removed the 2 lines that incorrectly doubled
matrix_operator_shapefor S-matrix:def _initialize_matrix_indices(self): self.indices, self.matrix_operator_shape = get_linear_indices( self.k_space_shape[1:], self.patch_shape, self.sample_directions ) - if self.operator_type == OperatorType.S: - self.matrix_operator_shape = tuple(2 * d for d in self.matrix_operator_shape)