Aide pour dechiffrer ce code

Fermé
boliro - 27 nov. 2019 à 22:08
 Telltale - 27 nov. 2019 à 22:46
Bonjour,
Je débute en Javascript, et j'ai trouvé un script qui m'intrigue beaucoup, serez t-il possible que quelqu'un m'explique ce code de façon claire ??
/*
Kmeans used for clustering circular shapes
*/
'use strict';

// Import helper functions
const IJ_PLUGINS = IJ.getDir('plugins');
load(`${IJ_PLUGINS}/javascript/nashorn_polyfill.js`);
load(`${IJ_PLUGINS}/javascript/tml.js`);

////main////
let stack=IJ.getImage();

//Step 1: create data frame object
let df=new DataFrame();
df.fromIJ(stack);

console.log(df.shape);

//step 2: run the Kmeans
let K = 6;
let km =  new Kmeans(K);
km.fit(df); //apprentissage
let clusters=km.clusters;

for (let i=0;i<clusters.length;i++){
    if(clusters[i]===undefined){
        console.log(i,'@','--');
    }
    else{
        console.log(i,'@',clusters[i].length);
    }
}

////Functions////

function extractshape(stack, clusters){
    console.log('Size', stack.getWidth(),'x',stack.getHeight());
    
    for (let c=0;c<clusters.length;c++){
        let imp=IJ.createImage(`cluster #${c}`,"32-bit black", 33, 33, clusters[c].length);
    
        for (let i=0;i<clusters[c].length;i++){
            let idx =clusters[c][i];
            let tmp = stack.getProcessor(idx+1);
            imp.getImageStack().setProcessor(tmp,i+1);
        }
    
    imp.show();
    }
}


////Call function////

extractshape(stack.getImageStack(), clusters);


EN esperant que vous puissiez m'aider !!
Merci !
A voir également:

1 réponse

Bonsoir,
'j'ai trouvé un script'
Ah bon...quel intérêt?

Pour comprendre surtout si vous débutez le mieux est de regarder la notice pour chaque fonction que vous ne comprenez pas.

Que voulez vous que l'on vous explique ou que peut on vous expliquer ?
Tout est marqué en commentaire il me semble. Si vous débutez en JavaScript c'est un peu inutile de regarder des scripts par curiosité si vous n'avez pas les bases et une bonne maîtrise du langage.

La question est plutôt que cherchez vous à faire?
Parce que pour apprendre il y a mieux que regarder un bout de programme hors de tout contexte.
Et un script ou programme c'est forcément pour faire quelque chose et en rapport avec son environnement (la page web? un systèmes d'informations, autre chose...).

Un code ne se déchiffre pas, il eut se lire par contre.
Pour le lire il faut connaître le langage, comme pour tous les langages.
Un programme étant un ensemble de toutes ses parties un seul morceau(dit code) ne suffit pas et ne peut servir à grand chose sans tout l'ensemble... comme si vous regardiez une pièce automobile mais sans savoir que le reste des pièces peut exister...bref inutile.

Bref si vous cherchez à quoi sert le code c'est marqué ici:
"Kmeans used for clustering circular shapes"
Ou en français : Kmeans est utile pour fractionner des formes circulaires.
En sachant cela on n'est pas plus avancé. Il s'agit probablement d'une bibliothèque, dans ce cas il suffit de vous référer à la notice d'utilisation; du moment bien sûr que vous êtes au point avec la récursivité qui est un principe indispensable en programmation. La récursivité veut dire qu'une fonction ou un programme peut s’appeler elle même. C'est d'autant plus vrai avec la programmation orienté objet(POO ou OOP) qui permet des niveaux fermés les uns aux autres.

Pour les fonctions JavaScript en général voici une notice ou chercher(et non déchiffrer, le principe d'un langage est qu'il doit être compréhensible et avoir un sens, tout le contraire d'un chiffrage qui offusque tout sens et cohérence):

https://www.w3schools.com/jsref/default.asp
0
J'ai trouvé ceci ...
https://github.com/mljs/kmeans

mais reste la question de ce que vous voulez faire, un programme dénué de son but c'est encore pire qu'un morceau de code sans le reste: ça sert à rien = perte de temps.

Commencer par apprendre les bases, il existe pas mal de tutos et cours.
Comme celui ci qui vous explique à quoi se réfère le mot-clé 'new' :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets
0