Il s'agit de la commande funjoin qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
funjoin - joint deux ou plusieurs tables binaires FITS sur des colonnes spécifiées
SYNOPSIS
s'amuser [commutateurs] ...
OPTIONS
-a cols # colonnes à activer dans tous les fichiers
-a1 cols ... un cols # colonnes à activer dans chaque fichier
-b 'c1:bvl,c2:bv2' # valeurs vides pour les colonnes communes dans tous les fichiers
-bn 'c1:bv1,c2:bv2' # valeurs vides pour les colonnes dans des fichiers spécifiques
-j col # colonne à joindre dans tous les fichiers
-j1 col ... jn col # colonne à joindre dans chaque fichier
-m min # min correspond à la sortie d'une ligne
-M max # max correspond à la sortie d'une ligne
-s # ajoute la colonne d'état 'jfiles'
-S col # ajoute une colonne comme colonne d'état
-t tol # tolérance pour joindre les cols numériques [2 fichiers seulement]
DESCRIPTION
s'amuser joint les lignes de deux ou plusieurs (jusqu'à 32) fichiers de table binaire FITS, en fonction du
valeurs des colonnes de jointure spécifiées dans chaque fichier. NB : les colonnes de jointure doivent avoir un index
fichier qui lui est associé. Ces fichiers sont générés à l'aide du indice fun .
Le premier argument du programme spécifie la première table FITS d'entrée ou le premier fichier d'événement brut.
Si "stdin" est spécifié, les données sont lues à partir de l'entrée standard. Arguments ultérieurs
spécifier des fichiers d'événements et des tables supplémentaires à joindre. Le dernier argument est la sortie FITS
fichier.
NB : faire ne sauraient utilisez Funtools Bracket Notation pour spécifier les extensions FITS et les filtres de lignes lorsque
exécuter funjoin ou vous obtiendrez de mauvais résultats. Les lignes sont accessibles et jointes à l'aide de la
indexer directement les fichiers, ce qui contourne tout filtrage.
Les colonnes de jointure sont spécifiées à l'aide de la -j avec switch (qui spécifie un nom de colonne à
utiliser pour tous les fichiers) ou avec -j1 col1, -j2 col2... -Jn col commutateurs (qui spécifient un
nom de colonne à utiliser pour chaque fichier). Une colonne de jointure doit être spécifiée pour chaque fichier. Si les deux
-j avec et -Jn col sont spécifiés pour un fichier donné, alors ce dernier est utilisé. Joindre des colonnes
doit être de type chaîne ou de type numérique ; il est illégal de mélanger numérique et chaîne
colonnes dans une jointure donnée. Par exemple, pour joindre trois fichiers en utilisant la même colonne clé pour
chaque fichier, utilisez :
funjoin -j clé in1.fits in2.fits in3.fits out.fits
Une clé différente peut être spécifiée pour le troisième fichier de cette manière :
funjoin -j key -j3 otherkey in1.fits in2.fits in3.fits out.fits
La -a "cols" commutateur (et .A1 "col1", .A2 "cols2" homologues) peut être utilisé pour spécifier
colonnes à activer (c'est-à-dire écrire dans le fichier de sortie) pour chaque fichier d'entrée. Par défaut, tout
les colonnes sont sorties.
Si deux colonnes ou plus de fichiers séparés ont le même nom, la seconde (et les suivantes)
les colonnes sont renommées pour avoir un trait de soulignement et une valeur numérique ajoutée.
La -m m. et -M max les commutateurs spécifient le nombre minimum et maximum de jointures requises pour
écrivez une ligne. Le minimum par défaut est 0 jointure (c'est-à-dire que toutes les lignes sont écrites) et le
le maximum par défaut est 63 (le nombre maximum de jointures possibles avec une limite de 32 entrées
des dossiers). Par exemple, pour écrire uniquement les lignes dans lesquelles exactement deux fichiers ont des colonnes
qui correspondent (c'est-à-dire une jointure) :
funjoin -j clé -m 1 -M 1 in1.fits in2.fits in3.fits ... out.fits
Une ligne donnée peut avoir le nombre requis de jointures sans que tous les fichiers soient joints
(par exemple, trois fichiers sont joints mais seulement deux ont une valeur de clé de jointure donnée). Dans ce
cas, toutes les colonnes du fichier non joint sont écrites, par défaut, en utilisant des blancs
(zéros ou NULL). Les -b c1:bv1,c2:bv2 et -b1 'c1:bv1,c2:bv2' -b2 'c1:bv1,c2 - bv2' ...
les commutateurs peuvent être utilisés pour définir la valeur vide pour les colonnes communes à tous les fichiers et/ou colonnes
dans un fichier spécifié, respectivement. Chaque chaîne de valeur vide contient une liste séparée par des virgules
des spécificateurs de colonne:blank_val. Pour les valeurs à virgule flottante (simple ou double), un cas-
la valeur de chaîne insensible de "nan" signifie que l'IEEE NaN (not-a-number) doit être utilisé.
Ainsi, par exemple :
funjoin -b "AKEY:???" -b1 "A:-1" -b3 "G:NaN,E:-1,F:-100" ...
signifie qu'une colonne AKEY non jointe dans n'importe quel fichier contiendra la chaîne "???", le non-
joint Une colonne du fichier 1 contiendra une valeur de -1, la colonne G non jointe du fichier 3
contiendra des NaN IEEE, tandis que les colonnes E et F non jointes du même fichier contiendront
valeurs -1 et -100, respectivement. Bien sûr, lorsque des valeurs à blanc communes et spécifiques sont
spécifié pour la même colonne, la valeur vide spécifique est utilisée.
Pour distinguer quels fichiers sont des composants non vides d'une ligne donnée, le -s commutateur (état)
peut être utilisé pour ajouter une colonne de masque de bits nommée "JFILES" au fichier de sortie. Dans cette colonne, un
bit est défini pour chaque fichier non vide composant la ligne donnée, le bit 0 correspond au
premier fichier, bit 1 au deuxième fichier, et ainsi de suite. Les noms de fichiers eux-mêmes sont stockés dans
l'en-tête FITS en tant que paramètres nommés JFILE1, JFILE2, etc. -S avec l'interrupteur vous permet de
changez le nom de la colonne d'état par défaut "JFILES".
Une jointure entre lignes est le produit cartésien de toutes les lignes d'un fichier ayant une jointure donnée
valeur de colonne avec toutes les lignes d'un deuxième fichier ayant la même valeur pour sa colonne de jointure et
bientôt. Ainsi, si file1 a 2 lignes avec la valeur de colonne de jointure 100, file2 a 3 lignes avec le
même valeur, et file3 a 4 lignes, alors la jointure donne 2*3*4=24 lignes en sortie.
L'algorithme de jointure traite directement le fichier d'index associé à la colonne de jointure de
chaque fichier. La plus petite valeur de toutes les colonnes actuelles est sélectionnée comme base, et cela
value est utilisé pour joindre des colonnes de valeur égale dans les autres fichiers. De cette façon, l'indice
les fichiers sont parcourus exactement une fois.
La -t tol switch spécifie une valeur de tolérance pour les colonnes numériques. A l'heure actuelle, un
La valeur de tolérance ne peut joindre que deux fichiers à la fois. (Un algorithme complètement différent est
requis pour joindre plus de deux fichiers en utilisant une tolérance, quelque chose que nous pourrions considérer
mise en œuvre à l'avenir.)
L'exemple suivant montre de nombreuses fonctionnalités de funjoin. Les fichiers d'entrée t1.fits,
t2.fits et t3.fits contiennent les colonnes suivantes :
[sh] fundisp t1.fits
AKEY KEY AB
----------- ------ ------ ------
0 0 1
bbb 1 3 4
ccc 2 6 7
jjj 3 9 10
eeee 4 12 13
fff 5 15 16
ggg 6 18 19
hhh 7 21 22
fundisp t2.fits
CD CLÉ AKEY
----------- ------ ------ ------
8 24 25
ggg 6 18 19
eeee 4 12 13
ccc 2 6 7
0 0 1
fundisp t3.fits
AKEY KEY EFG ------------ ------ -------- --------
-----------
ggg 6 18 19 100.10
jjj 9 27 28 200.20
aaa 0 0 1 300.30
jjj 3 9 10 400.40
Compte tenu de ces fichiers d'entrée, la commande funjoin suivante :
funjoin -s -a1 "-B" -a2 "-D" -a3 "-E" -b \
"UNE CLÉ:???" -b1 "AKEY:XXX,A:255" -b3 "G:NaN,E:-1,F:-100" \
-j clé t1.fits t2.fits t3.fits foo.fits
rejoindra les fichiers sur la colonne KEY, produisant toutes les colonnes sauf B (dans t1.fits), D (dans
t2.fits) et E (dans t3.fits), et définir des valeurs vides pour AKEY (globalement, mais remplacées
pour t1.fits) et A (dans le fichier 1) et G, E et F (dans le fichier 3). Une colonne JFILES sera
sortie pour signaler quels fichiers ont été utilisés dans chaque ligne :
AKEY CLÉ A A CLÉ_2 CLÉ_2 C A CLÉ_3 CLÉ_3 FG JFILES
------------ ------ ------ ------------ ------ ------ -- ---------- ------ -------- ----------- --------
aaa 0 0 aaa 0 0 aaa 0 1 300.30 7
bbb 1 3 ??? 0 0 ??? 0 -100 nan 1
ccc 2 6 ccc 2 6 ??? 0 -100 nan 3
jjj 3 9 ??? 0 0 jjj 3 10 400.40 5
eee 4 12 eee 4 12 ??? 0 -100 nan 3
fff 5 15 ??? 0 0 ??? 0 -100 nan 1
ggg 6 18 ggg 6 18 ggg 6 19 100.10 7
hhh 7 21 ??? 0 0 ??? 0 -100 nan 1
XXX 0 255 iii 8 24 ??? 0 -100 nan 2
XXX 0 255 ??? 0 0 jjj 9 28 200.20 4
Utilisez funjoin en ligne en utilisant les services onworks.net