spectralbrain.viz.spectral_deformation#

spectralbrain.viz.spectral_deformation(V_N, F_N, V_M, F_M, k1=100, n_steps=10, bounds=(0.1, 10.0), align_tol=0.0, eig_sigma=-1e-06, return_history=True)[source]#

Alinha os primeiros k1 autovalores de N aos de M via função de escala ω.

Parameters:
  • V_N (vértices/faces da malha FONTE N (a função de escala é definida nela).)

  • F_N (vértices/faces da malha FONTE N (a função de escala é definida nela).)

  • V_M (vértices/faces da malha ALVO M (só seus autovalores são usados).)

  • F_M (vértices/faces da malha ALVO M (só seus autovalores são usados).)

  • k1 (nº de autovalores não-nulos a alinhar. Baixo → deformação global/grosseira;) – alto → detecta deformações de frequência mais fina (paper: k1=100).

  • n_steps (K passos da integração linear (paper: K=10 já é suficiente).)

  • bounds ((h_l, h_u) limites da escala por-vértice (positiva, não-infinita).)

  • align_tol (0.0 = igualdade dura (fiel ao paper). >0 = banda (modo "soft",) – mais estável quando os limites apertam).

  • eig_sigma (shift do shift-invert do eigsh (pequeno negativo evita singular).)

  • return_history (bool)

Returns:

dict com – ‘scale’ : (n_N,) função de escala ω por-vértice em N. ‘log_scale’ : (n_N,) log(ω) — campo a visualizar (diverge em torno de 0). ‘lambda_M’ : (k1,) autovalores-alvo. ‘lambda_N0’ : (k1,) autovalores iniciais de N. ‘lambda_final’: (k1,) autovalores de N após a deformação (≈ lambda_M). ‘align_error’: (K,) erro relativo médio de alinhamento por passo (se history). ‘k1’,’n_steps’ : parâmetros usados.

Return type:

Dict[str, object]

Notes

Custo: O(n²) por iteração de autovalor, linear em k1 e em K. Em malhas hipocampais (~5k–8k vértices) com k1=100, K=10 roda em segundos a poucos minutos na workstation. NÃO rode isto no sandbox — entregue para a RTX 3090.