Spécification Technique oiFitsExplorer

Ce topic à pour objectif de définir les fonctions à implémenter dans le logiciel.

Les Données

Chargement

  • On ne modifie/écrase jamais un fichier original.
  • Ouvrir en lecture seule (en local/en distant) plusieurs OIFits complexes : assuré par OITools/OIFitsCollectionManager.
  • Charger en lecture seule plusieurs fichiers de l'OIDB : à faire (SAMP).
  • Valider chaque fichier : OITools.

On obtient un modèle en mémoire de tous les fichiers chargés, appelée OIFitsCollectionOriginale : doit-on cloner cette structure pour la garder intacte à tout instant de la vie de l'application ?

Analyse

  • Doit-on factoriser automatiquement toutes les informations/tables redondantes (crossmatch des targets, les wavelengthes, les oi_array) ?
  • Pour l'instant on garde tout, et une analyse permet de détecter les éléments communs (targets, stations/baselines/configurations, plage min/max wavelength);
    • Doit-on analyser d'autres informations (temps) ?
  • On calcule des données dérivées rajoutées comme colonnes virtuelles dans les objets OIData (fréquence spatiale, effective wavelength, configuration des stations);
    • Il faut rajouter les bases projetées, l'angle de position de la base, l'angle horaire, le temps;
  • Comment interpréter les INSNAME pour catégorisation par code couleur ?
  • Comment interpréter les différents modes instrumentaux ?
  • Comment identifier chaque table parmi toute celles chargées ? Quel identifiant (fichier, vis2, arrayname, insane, nb de points, ...) ?

Présentation

  • Doit-on pouvoir afficher la structure/header des fichiers ?
  • Afficher les données sous forme de table:
    • Quoi afficher ? Une table ? Toutes les tables ?
    • Doit-on pouvoir trier par colonne ?
    • Sélection continue/discontinue par l'utilisateur ?
    • Mise en surbrillance d'un ensemble de valeurs sélectionnées dans un plot ?
    • doit-on afficher les données et identifiants bruts, ou afficher les références résolues (index n°1 ou ETA_TAU dans la case TARGET_ID) avec tous les risques d'ambiguité que cela peut engendrer ?
    • y-a-t'il des conversions à faire (temps julien, ...)
    • doit-on afficher les colonnes dérivées ?
    • comment afficher les valeurs dépendantes de la longueur d'onde (tableau de tableau) ?

Parcours

  • Doit-on garder/naviguer par le nom/chemin des fichiers ?
  • Est-ce que le nom de fichier doit pouvoir servir pour identifier des données dans des plots (valeur/symboles) ?
  • Une donnée peut être référencée par son fichier/table/numero de ligne. Il faut trouver une clé magique qui permettrai de s'abstraire au moins du numero de ligne mais aussi du nom de fichier pour permettre de reassocier des données selectionnées parmi des données issues de la même source mais apparaissant à plusieurs étages de filtrage.

Filtrage

  • Comment filtrer par dates/heures ?
    • Quelles sont les formules d'interprétation du temps ?

Transformation

  • Flagger les données:
    • Directement par sélection depuis les plots;
    • Suivant une valeur de barre d'erreur maximum ?
    • Par date ?
  • Merger des données:
    • Merger des fichiers différents ?
    • Merger des tables différentes ?
    • Quelles sont les règles de décision en cas de redondances des informations ?
  • Modifier les données:
    • Comment les sélectionner ?
    • Moyenne, binage, ...
    • Comment exprimer les modifications complexes (formules, langage de script) ?
  • Quid des binages complexes ? plugins ???

Export

  • Suppression des redondances de méta-données (target name, arrname, ...) ?
  • Exporter un graphe au format ASCII;
  • Exporter un graphe au format PDF;

Plots

  • Choisir des symboles de point, mais en fonction de quoi ?
    • quid de la légende ?
  • Comment superposer des jeux de données différents ?
  • Liste des plots particuliers:
    • Plan UV;
    • Plan de l'interféromètre ?
  • Synchronisation des sélections entre plots ?
  • Cohérence des couleurs et symboles entre plots ?

Les Sessions

  • Quels réglages doit-on conserver d'un lancement à l'autre de l'application ?
  • Quels réglages doit-on pouvoir exporter pour transmission à un collègue ?

Les Recettes

  • ???

Annexes

Calcul HA / ANGLE / BASE

RADIUS = SQRT(U² + V²)

BASE = RADIUS * sin(angle) ?

let MyName['a_'] "ANGLE" let MyErr['a_'] 0 let MyText['a_'] "UV position angle (degrees)" let MyFunc['a_'] "180|pi*atan2(Y,X)" let MyNpars['a_'] 2 let MyUnit['a_'] "SPACE" let MyVar[1,'a_'] "OI_DATA%OI_VIS2%COL%UCOORD" let MyVar[2,'a_'] "OI_DATA%OI_VIS2%COL%VCOORD"

hour angle computation from Aspro1

  let x OI_DATA%OI_ARRAY%ARRAYX
  let y OI_DATA%OI_ARRAY%ARRAYY
  let z OI_DATA%OI_ARRAY%ARRAYZ
  let oi%arraylat atan2(z,sqrt(x^2+y^2))
  let oi%arraylat 180|PI*oi%arraylat
  let oi%arraylon atan2(y,x)
  let oi%arraylon 180|PI*oi%arraylon

!
! formula necessary for hour angle . Do it for v2 
! retrieve DAY MONTH YEAR HOUR MIN SEC
! note MJD = JD - 2400000.5 . MJD2000=51544.0
! use j2000 as julian days (+ or -) starting at 1-JAN-2000 12:00 UT
! 
 define double j2000 /like OI_DATA%OI_VIS2%COL%MJD
 define double julcen gmst Om L L1 dp de eps dT gast lmst last /like j2000
  if (exist(oi%ha)) then
   delete /var oi%ha
  endif
  define double oi%ha /like j2000 /global
 let j2000 OI_DATA%OI_VIS2%COL%MJD-51544.5
 let julcen j2000/36525.0
 let gmst mod(280.46061837+360.98564736629*j2000,360.0)
 let Om mod(125.04452-1934.136261*julcen,360.0)*PI|180 !ascending node of sun
 let L mod(280.4665+36000.7698*julcen,360.0)*PI|180 !MeanLongOfSun
 let L1 mod(218.3165+481267.8813*JULCEN,360.0)*PI|180 !MeanLongOfMoon
! change in the ecliptic longitude of a star due to the nutation
! (good to about 0.5arcsec)
 let dp -17.2*sin(Om)-1.32*sin(2*L)-0.23*sin(2*l1)+0.21*sin(2*Om) !degrees
! shift in angle between the ecliptic and equator (good to about
! 0.1 arcsec)
 let de 9.2*cos(Om)+0.57*cos(2*L)+0.1*cos(2*l1)-0.09*cos(2*Om) !degrees
! Obliquity of the Ecliptic
 let eps 23.43929111-46.815/60/60*julcen !degrees
! difference between Mean and Apparent Sidereal Times
 let dT dp*cos((de+eps)*PI/180)/3600
! Greenwich Apparent sidereal time
 let gast gmst+dT
! Local Mean Sidereal 
 let lmst gmst+oi%arraylon
! Local Apparent Sidereal Time
 let last gast+oi%arraylon
 let oi%ha (last-oi_data%oi_target%COL%RAEP0)|15.0D0
 delete /variable j2000 julcen gmst Om L L1 dp de eps dT gast lmst last

-- SylvainLafrasse - 07 Feb 2013

Edit | Attach | Watch | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r5 - 2013-02-08 - GuillaumeMella
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback