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ự
-
New InternshipĐang mởnew_internship
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
get_graph warns that the oneway column is missing when no way has a oneway tagCó thể đã có người làm @HTenkanen đã 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
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
cython/cython#8110 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix: security 🔐 style: article/section 📝 system: data-mgmt 🗃️ system: security 🔐 system: software 💻
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
uabrc/uabrc.github.io#1267 ·
-
Link Checker ReportĐang mởBot Type: Bug Type: Documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày