UniverseViewer: un logiciel interactif de visualisation et de traitement géodésique d'objets astronomiques

Salut à tous !

Je poste pour vous présenter un nouveau projet personnel: UniverseViewer !

Bon, je vous préviens desuite, c’est un peu technique et clairement pas grand public, donc si la cosmologie ne vous intéresse pas, vous devriez passer votre chemin :wink:

Cette application web permet de charger des catalogues d’objets astronomiques (actuellement deux catalogues de quasars, mais d’autres viendront), et de les étudier via des projections sur un plan en fonction de divers paramètres. Nous manipulons des objets 4D (espace + temps) que nous projetons sur un plan (2D).

Les objets étudiés sont des objets lointains (quasars ou noyaux galactiques) pour lesquels un décalage vers le rouge de leur spectre est mesurable, et nous permet d’évaluer leur distance par rapport à nous.

Les détails techniques sont présentés sur mon site web: code source, publication scientifique sur laquelle le logiciel s’appuie, et explication des mathématiques utilisées.

Petit tutoriel de prise en main de l’application :slight_smile:

Rendez-vous sur https://universeviewer.com (ça ne marche que sur un ordinateur, par sur smartphone ou tablette).

Le plus visuel est sans doute de simuler les trois courbures de l’Univers: sphérique, hyperbolique, ou plat.

Commencez par charger le catalogue Hewitt & Burbidge en haut à gauche dans la section Data.

Vous verrez une première projection apparaître à droite.

Ensuite, toujours dans le panneau de gauche, descendez un peu vers la section View settings pour choisir une vue de côté plutôt qu’une vue de face. Prenons Edge 3.

Pour l’instant, nous avons une courbure positive, donc un univers sphérique, car dans la section Cosmological parameters Kappa est supérieur à zéro. La forme que nous voyons représente l’horizon cosmologique.
Nous allons tester les autres courbures possibles. Commencez par cocher la case devant le paramètre Lambda, ce qui nous permettra de faire varier Kappa.
En effet, ces quatre paramètres sont liés par une équation, donc il y a une case à cocher qui va définir quel paramètre va évoluer lorsque vous allez faire varier les autres.

Nous pouvons maintenant modifier Kappa. Rajoutez un “-” devant la valeur de Kappa pour le rendre négatif: courbure hyperbolique ! On peut déplacer la vue en maintenant clic droit tout en déplaçant la souris.
Et pour finir, vous pouvez définir Kappa à 0, pour obtenir un univers plat. Nous ne voyons plus qu’une ligne verticale dans notre vue de côté, pour y voir de nouveau quelque chose vous devez repasser en vue de face, en sélectionnant par exemple Front 3.

Vous pouvez utiliser la molette de la souris pour le zoom, et faire varier le point de vue de la projection avec RA1, Dec1 et Beta.

Pour finir, vous avez un bouton Sky view qui vous permet de voir ce que les radiotélescopes ont observé depuis la terre dans le catalogue étudié.

Un peu de contexte sur le développement

En 2008, nous avons réalisé avec une amie une ancienne version de ce logiciel, écrit en Java, alors que nous étions en Master.
Nous nous étions appuyés sur une publication d’un chercheur en cosmologie, et nous avions bénéficié de son aide pour le développement des aspects mathématiques de la chose.
Mais depuis lors, ce logiciel Java n’est plus maintenu, et il est clairement dépassé à tous les niveaux (technologies datées, ergonomie).

Comme ce projet me tennait à coeur, j’envisageais depuis un moment de le réécrire avec des technos plus modernes, et surtout des technos web: Vue.js, Javascript, Three.js, et Vuetify.

Mais j’avais estimé ce travail à quelques semaines, sur mon temps libre :sob:
La grosse flemme.

Finalement, j’ai envisagé l’idée d’effectuer cette réécriture en m’aidant de l’IA.
Après tout, les LLM sont très à l’aise pour passer proprement d’un langage à l’autre.

Je me suis donc appuyé sur ChatGPT, sur Gemini 3 à travers Antigravity, un peu de Gemini 2.5 et de Claude Sonnet 2.5.

Je dois dire que je suis impressionné par le travail que j’ai pu abattre à l’aide d’Antigravity et Gemini 3: en trois jours en bossant un peu le soir, j’ai obtenu une première version utilisable du logiciel.
Sans écrire une seule ligne de code, juste en l’orientant, en le recadrant quand le code écrit ne me convennait pas ou quand le résultat était erroné.
Donc si vous voulez faire du portage de code d’un langage vers un autre, c’est vraiment top !

Puis, j’ai voulu améliorer les choses et ajouter de nouvelles fonctionnalités. C’est là que ça a été plus compliqué avec les LLM et où j’ai dû me mettre à coder. Mais le gain de temps qu’ils m’ont apporté est fou !

Si vous avez lu jusqu’ici, vous êtes fou :smiling_face_with_sunglasses:

24 « J'aime »

Nouvelle version 0.9.3, avec:

  • de nouveaux gros catalogues de quasars et de noyaux galactiques actifs,
  • d’énormes optimisations du code pour les calculs: web workers, mémoire partagée, zéro copie entre les processus de calcul et le rendu, ce qui permet à présent de gérer des catalogues de millions d’objets :smiling_face_with_sunglasses: (ça marche impec sur mon laptop qui a presque 10 ans),
  • outil de sélection pour avoir des informations sur les objets sélectionnés : 1 objet → détails, 2 objets → distance entre eux.

Ce que nous voyons sur cette image sont des quasars et des noyaux galactiques actifs, sur une portion non négligeable de l’univers visible, nous nous trouvons à peu près au centre.
Les lignes qui partent du centre sont donc des artefacts observationnels (ligne de visée des radiotélectopes).

4 « J'aime »

Salut à tous !
Nouvelle version majeure 0.9.7, avec comme changements depuis la 0.9.3:

  • le support des navigateurs mobiles, pour enfin explorer l’Univers depuis ses toilettes !
  • la possibilité d’afficher le redshift en dégradé de couleur pour mieux évaluer les distances dans la projection,
  • le graphique de distribution du redshift du catalogue,
  • le changement fluide de point de vue même sur de très gros catalogues, en ne recalculant les projections que d’un sous-nsemble des objets lors du mouvement,
  • l’inversion de sélection et la suppression d’objets sélectionnés,
  • la possibilité d’exporter des sous-ensemble de catalogues après y avoir supprimé des objets,
  • une information claire lorsqu’une contrainte sur les contantes cosmologiques est cassée (si jamais vous avez cassé l’Univers…),
  • affichage des angles lorsque deux objets sont sélectionnés, du point de vue de la terre, et du point de vue de chaque objet,
  • l’affichage des distances comobiles en mégaparsec,
  • l’ajout de pas mal de contenu dans la page d’aide,
  • et l’ajout de nouveaux catalogues d’objets astronomiques.

À bientôt !

5 « J'aime »

Bonjour !

La version 0.9.8 est à présent suffisamment performante pour gérer de très gros catalogues d'objets astronomiques.
J'ai donc remplacé le catalogue AGN/QSO DESI DR1 par le AGN/Galaxy DESI DR1 (qui est le même catalogue renommé par DESI, mais sur lequel j'ai retiré des filtres que j'avais placés précedemment pour exclure une partie des objets). On passe donc de ~1.6 millions d'objets à ~16 millions d'objets !

Pour le coup ça nous permet de distinguer des structures intéressantes, voyez plutôt :


Je rappelle que les zones vides (que l'on voit se diriger vers le bas et vers le haut à droite de l'image) sont artificielles, elles sont dûes à la présence de notre disque galactique, derrière lequel nous ne pouvons pas observer.

Sur mon PC qui a 10 ans ça mouline un peu au chargement du catalogue (environ 40s de calculs).
Mais comme vous avez tous des Mac Studio M4 Max je pense que ce ne sera pas un problème pour vous :rofl:

Cependant, si vous avez une vieille machine comme moi, vous pouvez toujours demander au soft de ne calculer qu'une portion du catalogue (à configurer avant de charger un catalogue) :

À bientôt ! Pour le catalogue AGN/Galaxy DESI DR2 j'espère (qui devrait compter environ 40 millions d'objets... si quelqu'un a un Mac Studio M4 Ultra pour moi à dépanne...).
Bonne journée ! :waving_hand:

PS : je suis curieux de connaître les timings sur des machines performantes si certains veulent essayer. uv.perf() dans la console du navigateur après chargement des données donne des informations précises.

1 « J'aime »

ah tiens je suis tombé sur ton post un peu par hasard, j'avoue que la cosmo c'est pas du tout mon domaine mais j'ai cliqué pour voir et franchement c'est super joli a manipuler ^^

j'ai testé vite fait sur le pc et ca tourne nickel, par contre j'ai pas encore essayé sur tel. 16 millions d'objets c'est juste hallucinant comme chiffre, je comprend a moitié ce que je regarde mais j'aime bien zoomer au pif et voir la structure qui se dessine

ptite question vu que tu parle du support mobile, ca reste fluide sur un tel qui commence a dater ou faut une bête de course ? le mien a quelques années je me demande si ca passe

en tout cas respect pour le taf, c'est le genre de projet perso qui force l'admiration

1 « J'aime »

Merci :blush:

Même délire ici :laughing:

Ce que l'on voit : la terre est au centre du cercle, et les points sont des objets astronomiques extrêmement lointains.
Ils sont suffisamment lointains pour que leur spectre lumineux ait été décalé vers le rouge du fait de l'expansion de l'univers. Un peu comme le son d'une ambulance qui s'éloigne, qui devient plus grave, du fait de la vitesse d'éloignement du véhicule qui distord l'onde sonore.
Ce décalage vers le rouge est d'ailleurs le moyen utilisé pour calculer leur distance par rapport à nous.

Ces objets sont très gros, et tous hors de notre galaxie (loin de notre galaxie).
Ils peuvent être des galaxies, des noyaux galactiques actifs ou des trous noirs supermassifs.
Le cercle (en vue de face) matérialise la frontière de l'univers visible suivant les paramètres cosmologiques définis.
En vue de côté, la projection est une hyperbole, et la terre est à son sommet (si on considère un univers à espace courbe).

Donc en gros résumé, si tu charges un gros catalogue tu as une vue de la répartition des objets lointains dans l'univers visible :slightly_smiling_face:

J'ai un vieux Google Pixel 3 XL ici, 2018, que j'utilise pour des tests de dev dans le cadre du boulot, et il manipule sans problème le catalogue Quaia G20.5 et ses ~1.3 millions d'objets. Je peux faire bouger le point de vue et changer les paramètres cosmologies sans souci. Par contre j'ai tenté de charger le DESI AGN/Galaxy DR1 et... ça m'a crashé le navigateur :rofl:

Donc pour répondre à ta question je dirai que tant qu'on abuse pas, on peut voyager dans le cosmos depuis ses toilettes !

Mais le support mobile c'était surtout pour le fun, le logiciel n'est clairement pas très pratique à utiliser sur de tels appareils.

1 « J'aime »

haha le voyage dans le cosmos depuis les toilettes jvais ressortir celle la xD merci pour l'explication en tout cas, le coup du décalage vers le rouge avec l'ambulance ça m'a débloqué le truc javais jamais capté comment ils calculait les distances. et ok donc le pixel 3 encaisse 1.3 millions mais pas les 16, le mien doit etre a peu pres du meme age je tenterai le gros catalogue juste pour voir si il survit. en tout cas tu gere bonne continuation sur le projet

1 « J'aime »

Merci !

Oui cette méthode est valable pour les objets extrêmement lointains, où les effets de l'expansion se font ressentir.
Il y a plusieurs autres méthodes pour évaluer les distances.
Par exemple pour des objets plus "proches", il y a d'autres méthodes, comme les chandelles standard, et pour des objets encore plus proches tout simplement la parallaxe. Mais là on sort du scope des objets étudiés via mon logiciel.

Yop, super projet, quel boulot :smiley:
Alors, chui pas du tout câblé pour y comprendre quoi que ce soit, mais j'ai vu ta requête, alors voilà :

Résultats
  • machine : macbook pro m4 max
  • firefox :
    -- catalogue 16m:
    {
    "view_refresh_rate_per_sec": 0.04634555990997839,
    "view_immediate_refresh_enabled": false,
    "total_computation_duration_ms": 21219.920000000002,
    "projections_computation_duration_ms": 21577.039999999997
    }
    -- le même catalogue après quelques changements de catalogues :
    {
    "view_refresh_rate_per_sec": 0.00910407523899108,
    "view_immediate_refresh_enabled": false,
    "total_computation_duration_ms": 109553.78,
    "projections_computation_duration_ms": 109840.92
    }
    -- catalogue 1.295m :
    {
    "view_refresh_rate_per_sec": 0.20417080112538946,
    "view_immediate_refresh_enabled": false,
    "total_computation_duration_ms": 4809.24,
    "projections_computation_duration_ms": 4897.86
    }
    -- idem après passage par un autre catalogue :
    {
    "view_refresh_rate_per_sec": 0.02782260308274442,
    "view_immediate_refresh_enabled": false,
    "total_computation_duration_ms": 35866.22,
    "projections_computation_duration_ms": 35942
    }
  • safari :
    -- catalogue 16m :
    {
    view_refresh_rate_per_sec: 1.651309488424276,
    view_immediate_refresh_enabled: false,
    total_computation_duration_ms: 85636.23999999999,
    projections_computation_duration_ms: 605.5800000000163
    }
    -- catalogue 1.295m :
    {
    view_refresh_rate_per_sec: 136.61202185792894,
    view_immediate_refresh_enabled: true,
    total_computation_duration_ms: 7059.96,
    projections_computation_duration_ms: 7.319999999999709
    }
  • chrome :
    -- catalogue 16m : current data set reste à 0 indéfiniment après chargement du catalogue
    -- catalogue 1.295m :
    {
    view_refresh_rate_per_sec: 108.8139282110373,
    view_immediate_refresh_enabled: true,
    total_computation_duration_ms: 430482.02499997616,
    projections_computation_duration_ms: 9.189999997615814
    }

Bon les résultats sont très (très) fluctuants d'un essai à l'autre, je ne sais pas trop à quoi c'est dû, mais une constante est qu'en passant d'un catalogue à l'autre sans recharger la page, les perfs semblent s'effondrer (cf les essais sur FF).
Après ma machine est un gros bordel, y a Rider / DataGrip et de multiples fenêtres de VSCode qui tournent, un wezterm / tmux, une quarantaine de conteneurs, un iPhone en simulator et j'en passe :man_shrugging:
À l'occasion je ferai un test après un reboot avant de tout rouvrir :sweat_smile:

1 « J'aime »

Merci c'est trop cool !
Bon je soupçonne d'avoir un bug dans cette fonction de stats, mais j'ai pas eu le temps de m'y pencher. Quoiqu'il en soit je devrais pouvoir exploiter tes résultats lorsque j'aurais compris l'erreur dans mes calcul :wink:
Je te remercie en tout cas !

1 « J'aime »

La version 0.9.9 d'Universe Viewer est sortie ! et avec pas mal de nouveautés intéressantes !

En voici un résumé :

  • D'énormes optimisations sur le rendu, le parsing des catalogues, et aussi un peu sur les calculs, qui font gagner pas mal de temps sur les plus gros catalogues.
    Sur mon PC je passe de près de 40s pour charger le catalogue DESI DR1 (16M d'objets) à moins de 20s ... !
  • La possibilité d'embarquer Universe Viewer dans une page web pour montrer quelque chose, un peu comme une vidéo Youtube, voyez plutôt.
  • De la même façon, la possibilité de partager un lien direct, comme par exemple celui-ci.
  • Une navigation améliorée sur mobile.

Bon weekend !