[REDMINE1D-241] [RM-5614] Activation du LeastSquareMeritFast Created: 06/Jul/23  Updated: 06/Jul/23

Status: In Progress
Project: 1D Redmine
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Normal
Reporter: Redmine-Jira Migtation Assignee: Redmine-Jira Migtation
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Created on 2020-02-19 18:07:19 by Edouard Marguerite. % Done: 20

Dans la fonction @fit@ du fichier @elementlist.cpp@ et avec la condition @m_rigidity=="tplshape"@ vérifiée, il faut activer un "LeastSquareMeritFast" par un appel à la fonction @getLeastSquareMeritFast@ ce qui permettra d'obtenir des gains de performance. Par ailleurs, dans la boucle sur les redshfits effectuée lors de la première passe, il serait intéressant de ne garder que le "matériel algorithmique" utile.



 Comments   
Comment by Redmine-Jira Migtation [ 06/Jul/23 ]

Comment by Didier Vibert on 2020-02-20 08:24:58:
remarques:

  1. il faudrait aussi activer le LeastSquareMeritFast dans les autres cas: m_rigidity="rules | tplcorr "
  2. le seul cas où le "meritfast" n'est pas applicable en l'état est le cas où le continu n'est pas orthogonal au linemodel, i.e élargissement de la largeur des raies (je ne vois pas d'autres cas de continu non othogonal au linemodel ?)
    Dans ce cas,
  • soit on désactive le meritfast,
  • soit on ajoute dans les méthodes fitAmplitudes[Hybrid |Simplex | Lmfit | ...] le calcul du terme croisé CtM, lequel sera soustrait (-2*Ac*A*CtM) au moindre carré dans la méthode LeastSquareMeritFast
  • soit on considère que ce terme est de toute façon petit et on le néglige...
Comment by Redmine-Jira Migtation [ 06/Jul/23 ]

Comment by Didier Vibert on 2020-03-05 12:43:31:
En activant m_estimateLeastSquareFast, la pdf est différente de la pdf obtenue lorsque ce booléen est désactivé. Cette assertion est vérifiée pour les spectres contenus dans les datasets @se8@ et @sp8@.

Comment by Redmine-Jira Migtation [ 06/Jul/23 ]

Comment by Didier Vibert on 2020-04-29 16:20:43:
j'ai une piste pour expliquer la différence:

ce qui est fait: on fitte d’abord l'amplitude du continu a_c en utilisant le continu orthogonal Co: a_c = Co^t.D/Co^t.Co
ensuite l'amplitude du linemodel L est fitté sur le spectre sans continu D-a_c.C : a_l = L^t.(D- a_c.C)/L^t.L
et on calcule le chi2 "fast" en faisant:
chi2 = D^t.D - 2 a_c.Co^t.D + a_c^2.Co^t.Co - 2* a_l . L^t.D + a_l^2 L^t.L
or il faut calculer le chi2 avec le continu plein, ie. non-orthogonal:
chi2 = D^t.D - 2 a_c.C^t.D + a_c^2.C^t.C - 2* a_l . L^t.D + a_l^2 L^t.L
or les termes C^t.D et C^t.C n'ont pas été calculés (car ils sont caculé lors du fit du continu et donc avec Co), ils peuvent cependant s'en déduire.
Je vais donc modifier la classe CTemplatesOrthogonalization pour pouvoir le faire.

Comment by Redmine-Jira Migtation [ 06/Jul/23 ]

Comment by Didier Vibert on 2020-11-16 12:56:28:
En plus de la correction du least-square merit fast dans la classe CTemplateOrthogonlisation,

il faut:

  • désactiver le fit Lya lors du fit du linemodel sur les template: @m_forceLyaFitting=yes@ in CLineModelElementList
  • revoir le calcul pour les raie d'absorption (continu nul est faux)
Generated at Sat Feb 10 15:30:43 JST 2024 using Jira 8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b.