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) ?

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: r4 - 2013-02-08 - LaurentBourges
 
  • 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