Closed nducros closed 4 months ago
Le problème vient du np.argsort(), qui utilise par défaut un quicksort, qui ne conserve pas l'ordre quand il y a plusieurs valeurs égales. Il faut donc écrire :
idx = np.argsort(-Ord_nai.ravel(), axis=None, kind='stable')
mask_nai = np.zeros_like(Ord_nai)
mask_nai.flat[idx[0:M]] = 1
en précisant kind=stable
on perd un peu en vitesse mais on garde l'ordre dans les mesures.
à noter la différence qu'on doit écrire -Ord_nai.ravel()
contrairement à Ord_nai.ravel() ... [::-1]
. Pour le "variance subsampling" ça devient donc :
idx = np.argsort(-Ord_var.ravel(), axis=None, kind='stable')
D'accord, j'ai fusionné ! Le mieux serait d'ajouter une fonction sampling_mask, ou quelque chose du genre, pour masquer ça à l'utilisateur.
Hehe c'est déjà fait, c'est ma fonction sort_by_significance J'ai modifié tout ça dans ma dernière version sur ma branche
Tout fonctionne, à fusionner sur le master
J'ai fusionné les différentes branches et tout me semble OK. Dans le tuto 5, j'ai essayé de créer les "naive" et "variance" sampling masques de la même façon
mais j'obtiens un masque bizarre, ce que tu solutionnes avec
Je ne suis pas arrivé à voir si le sampling masque correspond bien à la sampling matrix plus bas, mais je soupçonne un petit bug quelque part. Je ne demande si la recette "np.argsort + np.zeros_like + flat" est identique à ce qui est fait dans le meas.