Pre-stack modeling operator for multiple wavelets
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 30/100
Hướng nghiên cứu
Start at the pre-stack inversion operator’s explicit=False path and read how it constructs Convolve1D operators and combines them with BlockDiag; compare this with the dense multi-wavelet path shown in the issue. First focus on the stated 1D case, leaving 2D and 3D extension for later. Done means sparse results for multiple wavelets are consistent with the dense implementation.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
🛠 Multi-Wavelet Support in Pre-Stack Inversion Operator (explicit=False)
📖 Description
The convolution operator used by pylops for pre-stack inversion (explicit=False) is implemented using the Conv1D class. Currently, pylops supports only a single wavelet for all angles, meaning the inversion assumes the same wavelet for each angle.
I attempted to modify the code to allow a different wavelet for each angle (mid-angle in my case, as I’m using partial stacks). However, my current results are only consistent when using dense operators (explicit=True), whereas I would expect them to also work in the sparse case.
🔍 Observations
- ✅ The dense implementation (
explicit=True) behaves as expected. - ❌ The sparse implementation (
explicit=False) does not produce comparable results. - ⚠️ The issue seems related to how the
Conv1Doperator is built when handling multiple wavelets.
The code using Conv1D for multiple wavelets is only working for spatdims=1 at the moment, the idea is to extend for 2D or 3D cases when i adress this issue.
💡 Code Snippet
✅ Dense Implementation (Working)
# Handling multiple wavelets
if isinstance(wav, list):
print("Dense multi-wavelet operator")
n = len(wav)
C = np.zeros((n * nt0, n * nt0))
wsub_list = []
for w in wav:
wsub = np.asarray(convmtx(w, nt0, len(w) // 2)[:nt0])
wsub_list.append(wsub)
C = get_block_diag(theta)(*wsub_list)
else:
# Create wavelet operator
C = ncp.asarray(convmtx(wav, nt0, len(wav) // 2)[:nt0])
C = [C] * ntheta
C = get_block_diag(theta)(*C)
# Combine operators
M = ncp.dot(C, ncp.dot(G, D))
Preop = MatrixMult(M, otherdims=spatdims, dtype=dtype)
❌ Sparse implementation (Not-working)
else:
if isinstance(wav, list):
print("Dense multi-wavelet operator")
# Criar uma lista de operadores de convolução
Cop_list = []
for w in wav:
Cop = Convolve1D(
(nt0),
h=w,
offset=len(w) // 2, # Define o centro da wavelet
axis=0,
dtype='float32',
method='fft'
)
Cop_list.append(Cop.tosparse()) # Adiciona à lista de operadores'
Cop = BlockDiag(Cop_list)
else:
print("Sparse single wavelet operator")
# Create wavelet operator
Cop = Convolve1D(
dims,
h=wav,
offset=len(wav) // 2,
axis=0,
dtype=dtype,
)
- Ngôn ngữ chính
- Python
- Star
- 539
- Fork
- 126
- Merge trung bình
- 2 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 21
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của PyLops/pylops
-
Lipschitz methodCó thể đã có người làm @Megumi1773 đã nhận 26 ngày trước. Đang mởenhancement good first issue
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
PyLops/pylops#786 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Uv setup for intel environmentĐang mởCI
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Introduce spell checkingĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 38/100
PyLops/pylops#731 · 4 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của PyLops/pylops
Issue tương tự
-
HandyModRTransform.deriv3 is wrong for m > 2Có thể đã có người làm @SajalDevX đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
read_messages: the first read after subscribe/psubscribe returns no messages even when some are waitingCó thể đã có người làm @matheussilvano đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
The-Swarm-Corporation/swarms-framework-docs#399 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bump patch
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
autowarefoundation/autoware_carla_scenario#1321 ·
Maintainer thường phản hồi trong vòng 1 ngày