ນີ້ແມ່ນຄໍາສັ່ງ funjoin ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
funjoin - ເຂົ້າຮ່ວມສອງຫຼືຫຼາຍກວ່າ FITS ຕາຕະລາງຄູ່ໃນຖັນທີ່ລະບຸ
ສະຫຼຸບສັງລວມ
ມ່ວນຊື່ນ [ສະຫຼັບ] ...
OPTIONS
-a cols # ຖັນເພື່ອເປີດໃຊ້ໃນທຸກໄຟລ໌
-a1 cols ... an cols # ຖັນເພື່ອເປີດໃຊ້ໃນແຕ່ລະໄຟລ໌
-b 'c1:bvl,c2:bv2' # ຄ່າຫວ່າງເປົ່າສຳລັບຖັນທົ່ວໄປໃນທຸກໄຟລ໌
-bn 'c1:bv1,c2:bv2' # ຄ່າຫວ່າງເປົ່າສຳລັບຖັນໃນໄຟລ໌ສະເພາະ
-j col # ຖັນເພື່ອເຂົ້າຮ່ວມໃນທຸກໄຟລ໌
-j1 col ... jn col # ຖັນເພື່ອເຂົ້າຮ່ວມໃນແຕ່ລະໄຟລ໌
-m min # min matches to output a row
-M max # ສູງສຸດທີ່ກົງກັນກັບຜົນຜະລິດແຖວ
-s # ເພີ່ມຖັນສະຖານະ 'jfiles'
-S col # ເພີ່ມ col ເປັນຖັນສະຖານະ
-t tol # ຄວາມທົນທານຕໍ່ການເຂົ້າຮ່ວມ cols ຕົວເລກ [2 ໄຟລ໌ເທົ່ານັ້ນ]
ລາຍລະອຽດ
ມ່ວນຊື່ນ ເຂົ້າຮ່ວມແຖວຈາກສອງຫຼືຫຼາຍກວ່າ (ສູງເຖິງ 32) FITS Binary Table ໄຟລ໌, ອີງຕາມການ
ຄ່າຂອງຖັນເຂົ້າຮ່ວມທີ່ລະບຸໃນແຕ່ລະໄຟລ໌. NB: ຖັນເຂົ້າຮ່ວມຕ້ອງມີດັດຊະນີ
ໄຟລ໌ທີ່ກ່ຽວຂ້ອງກັບມັນ. ໄຟລ໌ເຫຼົ່ານີ້ຖືກສ້າງຂື້ນໂດຍໃຊ້ funindex ໂຄງການ.
ການໂຕ້ຖຽງທໍາອິດກັບໂຄງການກໍານົດຕາຕະລາງ FITS ທໍາອິດທີ່ປ້ອນຂໍ້ມູນຫຼືໄຟລ໌ເຫດການດິບ.
ຖ້າ "stdin" ຖືກລະບຸ, ຂໍ້ມູນຈະຖືກອ່ານຈາກວັດສະດຸປ້ອນມາດຕະຖານ. ການໂຕ້ຖຽງຕໍ່ມາ
ລະບຸໄຟລ໌ເຫດການເພີ່ມເຕີມ ແລະຕາຕະລາງທີ່ຈະເຂົ້າຮ່ວມ. ການໂຕ້ຖຽງສຸດທ້າຍແມ່ນຜົນຜະລິດ FITS
ຍື່ນ.
NB: ເຮັດ ບໍ່ ໃຊ້ Funtools Bracket Notation ເພື່ອລະບຸສ່ວນຂະຫຍາຍ FITS ແລະຕົວກອງແຖວເມື່ອໃດ
ແລ່ນ funjoin ຫຼືທ່ານຈະໄດ້ຮັບຜົນທີ່ບໍ່ຖືກຕ້ອງ. ແຖວຖືກເຂົ້າເຖິງແລະເຂົ້າຮ່ວມໂດຍໃຊ້
index ໄຟລ໌ໂດຍກົງ, ແລະນີ້ bypasses ການກັ່ນຕອງທັງຫມົດ.
ຖັນເຂົ້າຮ່ວມແມ່ນລະບຸໂດຍໃຊ້ -j col switch (ທີ່ລະບຸຊື່ຖັນເປັນ
ໃຊ້ສໍາລັບໄຟລ໌ທັງຫມົດ) ຫຼືກັບ -j1 ຄໍ 1, -j2 ຄໍ 2, ... -jn ຄໍນ switches (ທີ່ລະບຸ a
ຊື່ຖັນທີ່ຈະໃຊ້ສໍາລັບແຕ່ລະໄຟລ໌). ຕ້ອງລະບຸຖັນເຂົ້າຮ່ວມສຳລັບແຕ່ລະໄຟລ໌. ຖ້າທັງສອງ
-j col ແລະ -jn ຄໍນ ໄດ້ຖືກລະບຸໄວ້ສໍາລັບໄຟລ໌ທີ່ໃຫ້, ຫຼັງຈາກນັ້ນໄດ້ຖືກນໍາໃຊ້. ເຂົ້າຮ່ວມຖັນ
ຕ້ອງເປັນປະເພດສະຕຣິງ ຫຼື ປະເພດຕົວເລກ; ມັນຜິດກົດໝາຍທີ່ຈະປະສົມຕົວເລກ ແລະສະຕຣິງ
ຖັນໃນການເຂົ້າຮ່ວມທີ່ໃຫ້. ຕົວຢ່າງ, ເພື່ອເຂົ້າຮ່ວມສາມໄຟລ໌ໂດຍໃຊ້ຄໍລໍາທີ່ສໍາຄັນດຽວກັນສໍາລັບ
ແຕ່ລະໄຟລ໌, ໃຊ້:
funjoin -j key in1.fits in2.fits in3.fits out.fits
ສາມາດລະບຸລະຫັດອື່ນສໍາລັບໄຟລ໌ທີສາມດ້ວຍວິທີນີ້:
funjoin -j key -j3 otherkey in1.fits in2.fits in3.fits out.fits
ໄດ້ -a "cols" ປ່ຽນ (ແລະ -a1 "col1", -a2 "cols2" counterparts) ສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດ
ຖັນເພື່ອກະຕຸ້ນ (ເຊັ່ນ: ຂຽນໃສ່ໄຟລ໌ຜົນຜະລິດ) ສໍາລັບແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ທັງຫມົດ
ຖັນແມ່ນຜົນຜະລິດ.
ຖ້າສອງຫຼືຫຼາຍກວ່າຄໍລໍາຈາກໄຟລ໌ແຍກຕ່າງຫາກມີຊື່ດຽວກັນ, ທີສອງ (ແລະຕໍ່ມາ)
ຖັນຖືກປ່ຽນຊື່ເພື່ອໃຫ້ມີຂີດກ້ອງ ແລະຄ່າຕົວເລກຕໍ່ທ້າຍ.
ໄດ້ -m ນາທີ ແລະ -M ສູງສຸດທີ່ເຄຍ switches ລະບຸຈໍານວນຕໍາ່ສຸດທີ່ແລະສູງສຸດຂອງ joins ທີ່ຕ້ອງການເພື່ອ
ຂຽນອອກແຖວ. ຕໍາ່ສຸດທີ່ເລີ່ມຕົ້ນແມ່ນ 0 ເຂົ້າຮ່ວມ (ເຊັ່ນ: ແຖວທັງຫມົດຖືກຂຽນອອກ) ແລະ
ສູງສຸດໃນຕອນຕົ້ນແມ່ນ 63 (ຈໍານວນສູງສຸດຂອງການເຂົ້າຮ່ວມທີ່ເປັນໄປໄດ້ທີ່ມີຈໍາກັດ 32 ວັດສະດຸປ້ອນ
ໄຟລ໌). ສໍາລັບຕົວຢ່າງ, ການຂຽນພຽງແຕ່ແຖວທີ່ສອງໄຟລ໌ມີຄໍລໍາ
ການແຂ່ງຂັນນັ້ນ (ເຊັ່ນ: ຫນຶ່ງທີ່ເຂົ້າຮ່ວມ):
funjoin -j key -m 1 -M 1 in1.fits in2.fits in3.fits ... out.fits
ແຖວໃດນຶ່ງສາມາດມີຈໍານວນການເຂົ້າຮ່ວມທີ່ຕ້ອງການໄດ້ ໂດຍບໍ່ຕ້ອງມີໄຟລ໌ທັງໝົດເຂົ້າຮ່ວມ
(ຕົວຢ່າງ: ສາມໄຟລ໌ທີ່ກໍາລັງຖືກເຂົ້າຮ່ວມແຕ່ມີພຽງສອງໄຟລ໌ທີ່ມີມູນຄ່າສໍາຄັນເຂົ້າຮ່ວມ). ໃນນີ້
ກໍລະນີ, ທັງຫມົດຂອງຖັນຂອງໄຟລ໌ທີ່ບໍ່ໄດ້ເຂົ້າຮ່ວມແມ່ນໄດ້ຖືກຂຽນອອກ, ໂດຍເລີ່ມຕົ້ນ, ການນໍາໃຊ້ຊ່ອງຫວ່າງ
(ສູນ ຫຼື NULLs). ໄດ້ -b c1:bv1,c2:bv2 ແລະ -b1 'c1:bv1,c2:bv2' -b2 'c1:bv1,c2 - bv2' ...
ປຸ່ມສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດຄ່າຫວ່າງເປົ່າສໍາລັບຄໍລໍາທົ່ວໄປກັບໄຟລ໌ທັງຫມົດແລະ / ຫຼືຖັນ
ໃນໄຟລ໌ທີ່ລະບຸ, ຕາມລໍາດັບ. ແຕ່ລະສະຕຣິງຄ່າຫວ່າງເປົ່າມີລາຍການທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ
ຂອງຖັນ: blank_val specifiers. ສໍາລັບຄ່າຈຸດທີ່ເລື່ອນ (ດຽວຫຼືສອງ), ກໍລະນີ -
ຄ່າສະຕຣິງທີ່ບໍ່ເຂົ້າໃຈຂອງ "nan" ຫມາຍຄວາມວ່າ IEEE NaN (ບໍ່ແມ່ນຕົວເລກ) ຄວນຖືກນໍາໃຊ້.
ດັ່ງນັ້ນ, ສໍາລັບການຍົກຕົວຢ່າງ:
funjoin -b "AKEY:???" -b1 "A:-1" -b3 "G:NaN,E:-1,F:-100" ...
ຫມາຍຄວາມວ່າຖັນ AKEY ທີ່ບໍ່ເຂົ້າຮ່ວມໃນໄຟລ໌ໃດນຶ່ງຈະມີສະຕຣິງ "???", ທີ່ບໍ່ແມ່ນ.
ເຂົ້າຮ່ວມຖັນຂອງໄຟລ໌ 1 ຈະມີຄ່າຂອງ -1, ຖັນ G ທີ່ບໍ່ໄດ້ເຂົ້າຮ່ວມຂອງໄຟລ໌ 3
ຈະມີ IEEE NaNs, ໃນຂະນະທີ່ຄໍລໍາ E ແລະ F ທີ່ບໍ່ເຂົ້າຮ່ວມຂອງໄຟລ໌ດຽວກັນຈະມີ
ຄ່າ -1 ແລະ -100, ຕາມລໍາດັບ. ແນ່ນອນ, ບ່ອນທີ່ມີຄ່າຫວ່າງເປົ່າທົ່ວໄປ ແລະສະເພາະ
ທີ່ລະບຸໄວ້ສໍາລັບຖັນດຽວກັນ, ຄ່າສະເພາະທີ່ຫວ່າງເປົ່າແມ່ນຖືກນໍາໃຊ້.
ເພື່ອຈຳແນກວ່າໄຟລ໌ໃດເປັນອົງປະກອບທີ່ບໍ່ຫວ່າງເປົ່າຂອງແຖວທີ່ໃຫ້ໄວ້, the -s (ສະຖານະ) ສະຫຼັບ
ສາມາດໃຊ້ເພື່ອເພີ່ມຖັນ bitmask ທີ່ມີຊື່ວ່າ "JFILES" ໃສ່ໄຟລ໌ຜົນຜະລິດ. ໃນຄໍລໍານີ້, ກ
bit ຖືກກໍານົດໄວ້ສໍາລັບແຕ່ລະໄຟລ໌ທີ່ບໍ່ແມ່ນເປົ່າປະກອບແຖວທີ່ໃຫ້, ມີ bit 0 ເທົ່າກັບ.
ໄຟລ໌ທໍາອິດ, bit 1 ກັບໄຟລ໌ທີສອງ, ແລະອື່ນໆ. ຊື່ໄຟລ໌ຕົວມັນເອງຖືກເກັບໄວ້ໃນ
header FITS ເປັນພາລາມິເຕີທີ່ມີຊື່ JFILE1, JFILE2, ແລະອື່ນໆ -S col ສະຫຼັບອະນຸຍາດໃຫ້ທ່ານ
ປ່ຽນຊື່ຂອງຖັນສະຖານະຈາກຄ່າເລີ່ມຕົ້ນ "JFILES".
ການເຂົ້າຮ່ວມລະຫວ່າງແຖວແມ່ນຜະລິດຕະພັນ Cartesian ຂອງແຖວທັງໝົດໃນໄຟລ໌ດຽວທີ່ມີການເຂົ້າຮ່ວມໃຫ້
ຄ່າຖັນກັບແຖວທັງໝົດໃນໄຟລ໌ທີສອງທີ່ມີມູນຄ່າດຽວກັນກັບຖັນເຂົ້າຮ່ວມ ແລະ
ອື່ນໆ. ດັ່ງນັ້ນ, ຖ້າ file1 ມີ 2 ແຖວທີ່ມີຄ່າ join column 100, file2 ມີ 3 ແຖວທີ່ມີຄ່າ.
ຄ່າດຽວກັນ, ແລະໄຟລ໌ 3 ມີ 4 ແຖວ, ຈາກນັ້ນຜົນການເຂົ້າຮ່ວມໃນ 2*3*4=24 ແຖວກຳລັງຖືກສົ່ງອອກ.
ຂັ້ນຕອນການເຂົ້າຮ່ວມໂດຍກົງປະມວນຜົນໄຟລ໌ດັດສະນີທີ່ກ່ຽວຂ້ອງກັບຖັນເຂົ້າຮ່ວມຂອງ
ແຕ່ລະໄຟລ໌. ມູນຄ່ານ້ອຍທີ່ສຸດຂອງຖັນປະຈຸບັນທັງຫມົດແມ່ນຖືກເລືອກເປັນພື້ນຖານ, ແລະນີ້
ຄ່າແມ່ນໃຊ້ເພື່ອເຂົ້າຮ່ວມຖັນທີ່ມີຄ່າເທົ່າກັນໃນໄຟລ໌ອື່ນ. ດ້ວຍວິທີນີ້, ດັດຊະນີ
ໄຟລ໌ຖືກຂ້າມຜ່ານແນ່ນອນຄັ້ງດຽວ.
ໄດ້ -t ຊຸກຍູ້ switch ລະບຸຄ່າຄວາມທົນທານສຳລັບຖັນຕົວເລກ. ໃນປັດຈຸບັນ, ກ
ຄ່າຄວາມທົນທານສາມາດເຂົ້າຮ່ວມພຽງແຕ່ສອງໄຟລ໌ຕໍ່ຄັ້ງ. (ສູດການຄິດໄລ່ທີ່ແຕກຕ່າງກັນຫມົດແມ່ນ
ຕ້ອງການເຂົ້າຮ່ວມຫຼາຍກວ່າສອງໄຟລ໌ໂດຍໃຊ້ຄວາມທົນທານ, ບາງຢ່າງທີ່ພວກເຮົາອາດຈະພິຈາລະນາ
ການປະຕິບັດໃນອະນາຄົດ.)
ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນລັກສະນະຫຼາຍຢ່າງຂອງ funjoin. ໄຟລ໌ປ້ອນຂໍ້ມູນ t1.fits,
t2.fits, ແລະ t3.fits ມີຖັນຕໍ່ໄປນີ້:
[sh] fundisp t1.fits
AKEY KEY AB
--------------------------------------
aaa 0 0 1
bb 1 3 4
ccc 2 6 7
ດດ 3 9 10
ee 4 12 13
ff 5 15 16
ggg 6 18 19
ຮຮ 7 21 22
fundisp t2.fits
AKEY KEY CD
--------------------------------------
iii 8 24 25
ggg 6 18 19
ee 4 12 13
ccc 2 6 7
aaa 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
ddd 3 9 10 400.40
ເນື່ອງຈາກໄຟລ໌ປ້ອນຂໍ້ມູນເຫຼົ່ານີ້, ຄໍາສັ່ງ funjoin ຕໍ່ໄປນີ້:
funjoin -s -a1 "-B" -a2 "-D" -a3 "-E" -b \
"AKEY:???" -b1 "AKEY:XXX,A:255" -b3 "G:NaN,E:-1,F:-100" \
-j key t1.fits t2.fits t3.fits foo.fits
ຈະເຂົ້າຮ່ວມກັບໄຟລ໌ໃນຖັນ KEY, outputs ຖັນທັງຫມົດຍົກເວັ້ນ B (ໃນ t1.fits), D (in.
t2.fits) ແລະ E (ໃນ t3.fits), ແລະກໍານົດຄ່າຫວ່າງເປົ່າສໍາລັບ AKEY (ທົ່ວໂລກ, ແຕ່ overridden
ສໍາລັບ t1.fits) ແລະ A (ໃນໄຟລ໌ 1) ແລະ G, E, ແລະ F (ໃນໄຟລ໌ 3). ຖັນ JFILES ຈະເປັນ
ຜົນໄດ້ຮັບເພື່ອທຸງວ່າໄຟລ໌ໃດຖືກໃຊ້ໃນແຕ່ລະແຖວ:
ປຸ່ມ AKEY A AKEY_2 KEY_2 C AKEY_3 KEY_3 FG JFILES
------------ ------ ------ ------------ ------ ------ ------ ---------- ------ -------- ------------ --------
aaa 0 0 aaa 0 0 aaa 0 1 300.30 7
bb 1 3 ??? 0 0 ??? 0 -100 ນາ 1
ccc 2 6 ccc 2 6 ??? 0 -100 ນານ 3
ດດ 3 9 ??? 0 0 ddd 3 10 400.40 5
eee 4 12 eee 4 12 ??? 0 -100 ນານ 3
ff 5 15 ??? 0 0 ??? 0 -100 ນາ 1
ggg 6 18 ggg 6 18 ggg 6 19 100.10 7 .
ຮຮ 7 21 ??? 0 0 ??? 0 -100 ນາ 1
XXX 0 255 iii 8 24 ??? 0 -100 ນານ 2
XXX 0 255 ??? 0 0 jjj 9 28 200.20 4
ໃຊ້ funjoin ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net