miriad 4.1.0.0 → 4.1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +1 -1
- data/Rakefile +5 -3
- data/ext/bug.c +2 -2
- data/ext/extconf.rb +1 -1
- data/ext/miriad.i +7 -1
- data/ext/miriad_ruby.c +36 -18
- data/ext/miriad_ruby.i +15 -5
- data/ext/miriad_wrap.c +57 -7
- data/ext/narray_ruby.swg +2 -0
- data/lib/miriad.rb +368 -81
- metadata +4 -3
data/README
CHANGED
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# $Id: Rakefile 10 2008-04-21 19:51:41Z davidm $
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'rake/gempackagetask'
|
3
5
|
|
@@ -12,7 +14,7 @@ run_swig unless test ?e, 'ext/miriad_wrap.c'
|
|
12
14
|
spec = Gem::Specification.new do |s|
|
13
15
|
# Basics
|
14
16
|
s.name = 'miriad'
|
15
|
-
s.version = '4.1.0.
|
17
|
+
s.version = '4.1.0.2'
|
16
18
|
s.summary = 'Ruby interface to MIRIAD'
|
17
19
|
s.description = <<-EOS
|
18
20
|
The MIRIAD-Ruby package...
|
@@ -25,7 +27,7 @@ spec = Gem::Specification.new do |s|
|
|
25
27
|
EOS
|
26
28
|
|
27
29
|
#s.platform = Gem::Platform::Ruby
|
28
|
-
s.required_ruby_version = '>= 1.8.
|
30
|
+
s.required_ruby_version = '>= 1.8.4'
|
29
31
|
#s.requirements << 'a prerequisite'
|
30
32
|
s.add_dependency('narray', '>= 0.5.9')
|
31
33
|
|
@@ -58,7 +60,7 @@ spec = Gem::Specification.new do |s|
|
|
58
60
|
s.extensions << 'ext/extconf.rb'
|
59
61
|
|
60
62
|
# Documentation
|
61
|
-
s.rdoc_options = ['-x', 'ext/.*.c', '-m', 'README', '-t', "MIRIAD-Ruby Documentation"]
|
63
|
+
s.rdoc_options = ['-S', '-x', 'ext/.*.c', '-m', 'README', '-t', "MIRIAD-Ruby Documentation"]
|
62
64
|
s.has_rdoc = true
|
63
65
|
s.extra_rdoc_files = %w[README ext/miriad_ruby.c]
|
64
66
|
|
data/ext/bug.c
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
#ifdef MIRIAD_RUBY
|
35
35
|
#include "ruby.h"
|
36
36
|
|
37
|
-
extern VALUE
|
37
|
+
extern VALUE mirlib_eWrappedMirlibError;
|
38
38
|
|
39
39
|
#define fprintf(io,fmt,...) \
|
40
40
|
do { \
|
@@ -44,7 +44,7 @@ extern VALUE mirlib_eMirlibError;
|
|
44
44
|
fprintf(io,fmt,__VA_ARGS__); \
|
45
45
|
break; \
|
46
46
|
default: \
|
47
|
-
rb_raise(
|
47
|
+
rb_raise(mirlib_eWrappedMirlibError,fmt,__VA_ARGS__); \
|
48
48
|
} \
|
49
49
|
} while(0)
|
50
50
|
|
data/ext/extconf.rb
CHANGED
data/ext/miriad.i
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* $Id: miriad.i
|
1
|
+
/* $Id: miriad.i 11 2008-04-21 20:31:15Z davidm $ */
|
2
2
|
|
3
3
|
/* MIRIAD Swig wrapper */
|
4
4
|
|
@@ -309,6 +309,12 @@ typedef struct {} uvio;
|
|
309
309
|
}
|
310
310
|
#endif
|
311
311
|
|
312
|
+
unsigned int visno() {
|
313
|
+
double visno = 0.0;
|
314
|
+
uvinfo_c(self->fd, "visno", &visno);
|
315
|
+
return (unsigned int)visno;
|
316
|
+
}
|
317
|
+
|
312
318
|
// void uvflgwr_c (int tno, Const int *flags);
|
313
319
|
void flagwr(int *flags) {
|
314
320
|
uvflgwr_c(self->fd, flags);
|
data/ext/miriad_ruby.c
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
/*
|
2
|
+
* $Id: miriad_ruby.c 16 2008-04-22 05:40:33Z davidm $
|
3
|
+
*
|
2
4
|
* This file is just to document the classes/methods from the SWIG wrappers
|
3
5
|
* that we want to document. It is for rdoc, not gcc. At least for now.
|
4
6
|
* Eventually, it might be nice to dump SWIG since I seem to spend more time
|
@@ -10,26 +12,18 @@
|
|
10
12
|
|
11
13
|
/*
|
12
14
|
* Document-class: Miriad
|
15
|
+
*
|
16
|
+
* In addition to the Uvio and Visibility classes, the Miriad module also
|
17
|
+
* provides some utility methods.
|
13
18
|
*/
|
14
19
|
|
15
20
|
/*
|
16
21
|
* Document-class: Miriad::Uvio
|
17
|
-
*/
|
18
|
-
|
19
|
-
/*
|
20
|
-
* Document-method: initialize
|
21
|
-
*
|
22
|
-
* call-seq: Uvio.new(name, status)
|
23
|
-
*
|
24
|
-
* <b>NOTE: This method provides lower-level access than the open() method. It
|
25
|
-
* may disappear in future versions.</b>
|
26
22
|
*
|
27
|
-
*
|
28
|
-
*
|
29
|
-
*
|
30
|
-
* new dataset, or <tt>'append'</tt> to add to an existing dataset
|
23
|
+
* The Uvio class is mostly a SWIG wrapper around the UVIO C routines from
|
24
|
+
* MIRIAD. Some convenience methods are added in
|
25
|
+
* miriad.rb[link:files/lib/miriad_rb.html].
|
31
26
|
*/
|
32
|
-
static VALUE uvio_initialize();
|
33
27
|
|
34
28
|
/*
|
35
29
|
* Document-method: close
|
@@ -144,6 +138,12 @@ static VALUE uvio_scan;
|
|
144
138
|
* complex data points. This will be either half as many elements as +data+
|
145
139
|
* (if +data+ has real and imaginary components in consecutive elements) or the
|
146
140
|
* same number of elements as +data+ (if +data+ is NArray::SCOMPLEX).
|
141
|
+
*
|
142
|
+
* The +flags+ indicate whether the corresponding +data+ value has been deemed
|
143
|
+
* good or bad:
|
144
|
+
*
|
145
|
+
* * <tt>1</tt> means good
|
146
|
+
* * <tt>0</tt> means bad
|
147
147
|
*/
|
148
148
|
static VALUE uvio_write;
|
149
149
|
|
@@ -352,8 +352,8 @@ static VALUE uvio_set;
|
|
352
352
|
*
|
353
353
|
* * +flags+
|
354
354
|
*
|
355
|
-
* The flags indicate whether the corresponding data value has been deemed
|
356
|
-
* good or bad. A
|
355
|
+
* The +flags+ indicate whether the corresponding data value has been deemed
|
356
|
+
* good or bad. A <tt>1</tt> means good; a <tt>0</tt> means bad.
|
357
357
|
*
|
358
358
|
* * If a Fixnum or Bignum is passed in as +flags+, an NArray that long of
|
359
359
|
* type NArray::LINT is created, populated with +nread+ flag values, and
|
@@ -395,6 +395,19 @@ static VALUE uvio_uvread;
|
|
395
395
|
*/
|
396
396
|
static VALUE uvio_uvwread;
|
397
397
|
|
398
|
+
/*
|
399
|
+
* Document-method: visno
|
400
|
+
*
|
401
|
+
* call-seq: visno(name) -> Integer
|
402
|
+
*
|
403
|
+
* Returns the number of the last visibility read. Note that MIRIAD currently
|
404
|
+
* increments the visibiliity number on every read, including reads at (or
|
405
|
+
* beyond) the end of file. This means that after looping through a dataset
|
406
|
+
* with <tt>while vis = uvio.read(vis)</tt>, +visno+ will return one more than
|
407
|
+
* the visibility number of the last visibility.
|
408
|
+
*/
|
409
|
+
static VALUE uvio_visno;
|
410
|
+
|
398
411
|
/*
|
399
412
|
* Document-method: getvr
|
400
413
|
*
|
@@ -543,7 +556,12 @@ static VALUE uvio_select;
|
|
543
556
|
* file), thus overwriting the old flags.
|
544
557
|
*
|
545
558
|
* +flags+ is either an Array or NArray (of type NArray::LINT) and will
|
546
|
-
* typically have been returned by uvread and subsequently modified.
|
559
|
+
* typically have been returned by uvread and subsequently modified. The
|
560
|
+
* +flags+ indicate whether the corresponding data value has been deemed good
|
561
|
+
* or bad:
|
562
|
+
*
|
563
|
+
* * <tt>1</tt> means good
|
564
|
+
* * <tt>0</tt> means bad
|
547
565
|
*/
|
548
566
|
static VALUE uvio_flagwr;
|
549
567
|
|
@@ -575,7 +593,6 @@ static VALUE uvio_hiswrite;
|
|
575
593
|
void Init_Uvio() {
|
576
594
|
VALUE mMiriad = rb_define_module("Miriad");
|
577
595
|
VALUE cUvio = rb_define_class_under(mMiriad,"Uvio",rb_cObject);
|
578
|
-
rb_define_method(cUvio, "initialize", uvio_initialize, 0);
|
579
596
|
rb_define_method(cUvio, "close", uvio_close, 0);
|
580
597
|
rb_define_method(cUvio, "flush", uvio_flush, 0);
|
581
598
|
rb_define_method(cUvio, "uvnext", uvio_uvnext, 0);
|
@@ -588,6 +605,7 @@ void Init_Uvio() {
|
|
588
605
|
rb_define_method(cUvio, "set", uvio_set, 0);
|
589
606
|
rb_define_method(cUvio, "uvread", uvio_uvread, 0);
|
590
607
|
rb_define_method(cUvio, "uvwread", uvio_uvwread, 0);
|
608
|
+
rb_define_method(cUvio, "visno", uvio_visno, 0);
|
591
609
|
rb_define_method(cUvio, "getvr", uvio_getvr, 0);
|
592
610
|
rb_define_method(cUvio, "updated?", uvio_updated, 0);
|
593
611
|
rb_define_method(cUvio, "track", uvio_track, 0);
|
data/ext/miriad_ruby.i
CHANGED
@@ -1,13 +1,18 @@
|
|
1
|
-
/*
|
1
|
+
/*
|
2
|
+
* $Id: miriad_ruby.i 15 2008-04-22 05:26:51Z davidm $
|
3
|
+
*
|
4
|
+
* Ruby specific typemaps for MIRIAD Swig wrapper
|
5
|
+
*/
|
2
6
|
|
3
7
|
#if defined SWIGRUBY
|
4
8
|
|
5
9
|
%{
|
6
|
-
VALUE
|
10
|
+
VALUE mirlib_eWrappedMirlibError;
|
7
11
|
%}
|
8
12
|
|
9
13
|
%init %{
|
10
|
-
|
14
|
+
mirlib_eWrappedMirlibError =
|
15
|
+
rb_define_class("WrappedMirlibError", rb_eStandardError);
|
11
16
|
%}
|
12
17
|
|
13
18
|
// Requires NArray Ruby extension
|
@@ -301,8 +306,13 @@ PUTVRX_TYPEMAP(NA_DFLOAT,double,NUM2DBL);
|
|
301
306
|
}
|
302
307
|
break;
|
303
308
|
case H_BYTE:
|
304
|
-
|
305
|
-
|
309
|
+
{
|
310
|
+
// Make sure we have a string!
|
311
|
+
VALUE val = rb_ary_entry(vinput3,0);
|
312
|
+
Check_Type(val, T_STRING);
|
313
|
+
$1 = RSTRING(val)->ptr;
|
314
|
+
$2 = RSTRING(val)->len;
|
315
|
+
}
|
306
316
|
break;
|
307
317
|
default:
|
308
318
|
rb_raise(rb_eArgError,
|
data/ext/miriad_wrap.c
CHANGED
@@ -1791,7 +1791,7 @@ typedef struct {
|
|
1791
1791
|
} uvio;
|
1792
1792
|
|
1793
1793
|
|
1794
|
-
VALUE
|
1794
|
+
VALUE mirlib_eWrappedMirlibError;
|
1795
1795
|
|
1796
1796
|
|
1797
1797
|
#include "narray.h"
|
@@ -2095,6 +2095,28 @@ SWIGINTERN void uvio_sela(uvio *self,char *object,int datasel,char *string){
|
|
2095
2095
|
SWIGINTERN void uvio_select(uvio *self,char *object,int datasel,double p1,double p2){
|
2096
2096
|
uvselect_c(self->fd, object, p1, p2, datasel);
|
2097
2097
|
}
|
2098
|
+
SWIGINTERN unsigned int uvio_visno(uvio *self){
|
2099
|
+
double visno = 0.0;
|
2100
|
+
uvinfo_c(self->fd, "visno", &visno);
|
2101
|
+
return (unsigned int)visno;
|
2102
|
+
}
|
2103
|
+
|
2104
|
+
#define SWIG_From_long LONG2NUM
|
2105
|
+
|
2106
|
+
|
2107
|
+
SWIGINTERNINLINE VALUE
|
2108
|
+
SWIG_From_unsigned_SS_long (unsigned long value)
|
2109
|
+
{
|
2110
|
+
return ULONG2NUM(value);
|
2111
|
+
}
|
2112
|
+
|
2113
|
+
|
2114
|
+
SWIGINTERNINLINE VALUE
|
2115
|
+
SWIG_From_unsigned_SS_int (unsigned int value)
|
2116
|
+
{
|
2117
|
+
return SWIG_From_unsigned_SS_long (value);
|
2118
|
+
}
|
2119
|
+
|
2098
2120
|
SWIGINTERN void uvio_flagwr(uvio *self,int *flags){
|
2099
2121
|
uvflgwr_c(self->fd, flags);
|
2100
2122
|
}
|
@@ -2132,9 +2154,6 @@ SWIGINTERN int uvio_haccess(uvio *self,char *keyword,char *status){
|
|
2132
2154
|
return ihandle;
|
2133
2155
|
}
|
2134
2156
|
|
2135
|
-
#define SWIG_From_long LONG2NUM
|
2136
|
-
|
2137
|
-
|
2138
2157
|
SWIGINTERNINLINE VALUE
|
2139
2158
|
SWIG_From_int (int value)
|
2140
2159
|
{
|
@@ -2535,8 +2554,13 @@ _wrap_Uvio_putvr(int argc, VALUE *argv, VALUE self) {
|
|
2535
2554
|
}
|
2536
2555
|
break;
|
2537
2556
|
case H_BYTE:
|
2538
|
-
|
2539
|
-
|
2557
|
+
{
|
2558
|
+
// Make sure we have a string!
|
2559
|
+
VALUE val = rb_ary_entry(vinput3,0);
|
2560
|
+
Check_Type(val, T_STRING);
|
2561
|
+
arg3 = RSTRING(val)->ptr;
|
2562
|
+
arg4 = RSTRING(val)->len;
|
2563
|
+
}
|
2540
2564
|
break;
|
2541
2565
|
default:
|
2542
2566
|
rb_raise(rb_eArgError,
|
@@ -3546,6 +3570,30 @@ fail:
|
|
3546
3570
|
}
|
3547
3571
|
|
3548
3572
|
|
3573
|
+
SWIGINTERN VALUE
|
3574
|
+
_wrap_Uvio_visno(int argc, VALUE *argv, VALUE self) {
|
3575
|
+
uvio *arg1 = (uvio *) 0 ;
|
3576
|
+
unsigned int result;
|
3577
|
+
void *argp1 = 0 ;
|
3578
|
+
int res1 = 0 ;
|
3579
|
+
VALUE vresult = Qnil;
|
3580
|
+
|
3581
|
+
if ((argc < 0) || (argc > 0)) {
|
3582
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
3583
|
+
}
|
3584
|
+
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_uvio, 0 | 0 );
|
3585
|
+
if (!SWIG_IsOK(res1)) {
|
3586
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "uvio *","visno", 1, self ));
|
3587
|
+
}
|
3588
|
+
arg1 = (uvio *)(argp1);
|
3589
|
+
result = (unsigned int)uvio_visno(arg1);
|
3590
|
+
vresult = SWIG_From_unsigned_SS_int((unsigned int)(result));
|
3591
|
+
return vresult;
|
3592
|
+
fail:
|
3593
|
+
return Qnil;
|
3594
|
+
}
|
3595
|
+
|
3596
|
+
|
3549
3597
|
SWIGINTERN VALUE
|
3550
3598
|
_wrap_Uvio_flagwr(int argc, VALUE *argv, VALUE self) {
|
3551
3599
|
uvio *arg1 = (uvio *) 0 ;
|
@@ -4168,7 +4216,8 @@ SWIGEXPORT void Init_miriad(void) {
|
|
4168
4216
|
buglabel_c("mirlib");
|
4169
4217
|
|
4170
4218
|
|
4171
|
-
|
4219
|
+
mirlib_eWrappedMirlibError =
|
4220
|
+
rb_define_class("WrappedMirlibError", rb_eStandardError);
|
4172
4221
|
|
4173
4222
|
|
4174
4223
|
rb_require("narray");
|
@@ -4195,6 +4244,7 @@ SWIGEXPORT void Init_miriad(void) {
|
|
4195
4244
|
rb_define_method(cUvio.klass, "track", _wrap_Uvio_track, -1);
|
4196
4245
|
rb_define_method(cUvio.klass, "sela", _wrap_Uvio_sela, -1);
|
4197
4246
|
rb_define_method(cUvio.klass, "select", _wrap_Uvio_select, -1);
|
4247
|
+
rb_define_method(cUvio.klass, "visno", _wrap_Uvio_visno, -1);
|
4198
4248
|
rb_define_method(cUvio.klass, "flagwr", _wrap_Uvio_flagwr, -1);
|
4199
4249
|
rb_define_method(cUvio.klass, "wflagwr", _wrap_Uvio_wflagwr, -1);
|
4200
4250
|
rb_define_method(cUvio.klass, "haccess", _wrap_Uvio_haccess, -1);
|
data/ext/narray_ruby.swg
CHANGED
data/lib/miriad.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# astronomy related methods to Ruby classes.
|
8
8
|
#
|
9
9
|
#--
|
10
|
-
|
10
|
+
# $Id: miriad.rb 15 2008-04-22 05:26:51Z davidm $
|
11
11
|
#++
|
12
12
|
|
13
13
|
require 'rbconfig'
|
@@ -16,7 +16,7 @@ require 'date'
|
|
16
16
|
require 'narray'
|
17
17
|
miriad_shared_lib = 'miriad.' + Config::CONFIG['DLEXT']
|
18
18
|
require miriad_shared_lib
|
19
|
-
require '
|
19
|
+
require 'miriad_gem' if false # Fake out RDoc
|
20
20
|
#require 'fftw3'
|
21
21
|
|
22
22
|
# Add CKMS constant to Math module
|
@@ -67,7 +67,7 @@ module Math
|
|
67
67
|
def self.h2d(h) h*15.0; end
|
68
68
|
end
|
69
69
|
|
70
|
-
#
|
70
|
+
# The MIRIAD package adds angle conversion and angle formatting methods to
|
71
71
|
# Numeric class.
|
72
72
|
class Numeric
|
73
73
|
# Convert +self+ to [degrees, minutes, seconds] where degrees and minutes are
|
@@ -112,7 +112,7 @@ end
|
|
112
112
|
|
113
113
|
# The MIRIAD package adds angle parsing methods to String class.
|
114
114
|
class String
|
115
|
-
# Parse a "dd:mm:ss.sss" String to
|
115
|
+
# Parse a "dd:mm:ss.sss" String to Numeric degrees.
|
116
116
|
# <b>NOT</b> the inverse of Numeric#to_dmsstr (but may become so).
|
117
117
|
def dms_to_d; Math::dms_to_d(*split(':').map{|s| s.to_f}); end
|
118
118
|
# Parse a "hh:mm:ss.sss" String to Float hours.
|
@@ -138,9 +138,11 @@ class DateTime
|
|
138
138
|
2000+(amjd-51544.5)/365.242189813
|
139
139
|
end
|
140
140
|
|
141
|
+
# UT2-UT1 (unit is seconds) at the time represented by +self+
|
142
|
+
#
|
143
|
+
# Taken from
|
144
|
+
# http://www.iers.org/products/6/11136/orig/bulletina-xx-042.txt
|
141
145
|
def ut2_ut1
|
142
|
-
# Taken from
|
143
|
-
# http://www.iers.org/products/6/11136/orig/bulletina-xx-042.txt
|
144
146
|
pi2t=Math::PI*2*(by%1)
|
145
147
|
ENV['UT2_UT1'] || 0.022 * Math::sin(pi2t) \
|
146
148
|
- 0.012 * Math::cos(pi2t) \
|
@@ -260,7 +262,7 @@ class DateTime
|
|
260
262
|
end
|
261
263
|
|
262
264
|
# A subclass of StandardError raised by wrapped MIRIAD code.
|
263
|
-
class
|
265
|
+
class WrappedMirlibError < StandardError
|
264
266
|
end
|
265
267
|
|
266
268
|
# In addition to the Uvio and Visibility classes, the Miriad module also
|
@@ -270,35 +272,59 @@ module Miriad
|
|
270
272
|
# The version of mirlib on which this package is based.
|
271
273
|
MIRLIB_VERSION = "4.1.0"
|
272
274
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
YY
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
275
|
+
polarization_code_lookup_table = {
|
276
|
+
1 => 'I' ,
|
277
|
+
2 => 'Q' ,
|
278
|
+
3 => 'U' ,
|
279
|
+
4 => 'V' ,
|
280
|
+
-1 => 'RR',
|
281
|
+
-2 => 'LL',
|
282
|
+
-3 => 'RL',
|
283
|
+
-4 => 'LR',
|
284
|
+
-5 => 'XX',
|
285
|
+
-6 => 'YY',
|
286
|
+
-7 => 'XY',
|
287
|
+
-8 => 'YX',
|
288
|
+
'I' => 1, 'i' => 1,
|
289
|
+
'Q' => 2, 'q' => 2,
|
290
|
+
'U' => 3, 'u' => 3,
|
291
|
+
'V' => 4, 'v' => 4,
|
292
|
+
'RR' => -1, 'rr' => -1,
|
293
|
+
'LL' => -2, 'll' => -2,
|
294
|
+
'RL' => -3, 'rl' => -3,
|
295
|
+
'LR' => -4, 'lr' => -4,
|
296
|
+
'XX' => -5, 'xx' => -5,
|
297
|
+
'YY' => -6, 'yy' => -6,
|
298
|
+
'XY' => -7, 'xy' => -7,
|
299
|
+
'YX' => -8, 'yx' => -8,
|
300
|
+
}.freeze
|
301
|
+
|
302
|
+
# POLMAP is a Hash that can be used to map polarization codes to strings and
|
303
|
+
# vice versa.
|
304
|
+
#
|
305
|
+
# * Whem mapping from codes (i.e. numbers), uppercase strings are returned.
|
306
|
+
#
|
307
|
+
# * Whem mapping from strings, either uppercase or lowercase (but *not* mixed
|
308
|
+
# case) can be used.
|
309
|
+
#
|
310
|
+
# The values follow the AIPS/FITS conventions. Here is the mapping:
|
311
|
+
#
|
312
|
+
# 1:: 'I' (Stokes I)
|
313
|
+
# 2:: 'Q' (Stokes Q)
|
314
|
+
# 3:: 'U' (Stokes U)
|
315
|
+
# 4:: 'V' (Stokes V)
|
316
|
+
# -1:: 'RR' (Circular RR)
|
317
|
+
# -2:: 'LL' (Circular LL)
|
318
|
+
# -3:: 'RL' (Circular RL)
|
319
|
+
# -4:: 'LR' (Circular LR)
|
320
|
+
# -5:: 'XX' (Linear XX)
|
321
|
+
# -6:: 'YY' (Linear YY)
|
322
|
+
# -7:: 'XY' (Linear XY)
|
323
|
+
# -8:: 'YX' (Linear YX)
|
324
|
+
POLMAP = polarization_code_lookup_table
|
325
|
+
|
326
|
+
# call-seq: Miriad.xyz2uvw(xyz1, xyz2, obsra, obsdec, lst) -> [u, v, w]
|
327
|
+
#
|
302
328
|
# Compute the [u,v,w] projection of a baseline with endpoints <tt>xyz1</tt>
|
303
329
|
# and <tt>xyz2</tt> in the direction of +obsra+, +obsdec+ (i.e. right
|
304
330
|
# ascension and declination in the current epoch) at the local apparent
|
@@ -329,6 +355,128 @@ module Miriad
|
|
329
355
|
[u,v,w]
|
330
356
|
end
|
331
357
|
|
358
|
+
# call-seq:
|
359
|
+
# Miriad.neu2xyz(n, e, u, latitude) -> [x, y, z]
|
360
|
+
#
|
361
|
+
# Convert topoceptric coordinates to geocentric coordinates. If given,
|
362
|
+
# +latitude+ should be in radians. If +latitude+ is not given, the value
|
363
|
+
# from <tt>ENV['LATITUDE']</tt> (which should be in degrees in
|
364
|
+
# <tt>dd:mm:ss.sss</tt> or <tt>dd.ddd</tt> format) will be used.
|
365
|
+
#
|
366
|
+
# Output coordinates will be in the same units as the input coordinates.
|
367
|
+
#
|
368
|
+
# See also Miriad.xyz2neu
|
369
|
+
def self.neu2xyz(n, e, u, latitude=String(ENV['LATITUDE']).dms_to_d.d2r)
|
370
|
+
sinlat = Math.sin(latitude)
|
371
|
+
coslat = Math.cos(latitude)
|
372
|
+
[
|
373
|
+
u * coslat - n * sinlat,
|
374
|
+
e,
|
375
|
+
n * coslat + u * sinlat
|
376
|
+
]
|
377
|
+
end
|
378
|
+
|
379
|
+
# :stopdoc:
|
380
|
+
class << self
|
381
|
+
alias :xyz2neu :neu2xyz
|
382
|
+
end
|
383
|
+
# :startdoc:
|
384
|
+
# RDoc xyz2neu as a method rather than an alias
|
385
|
+
if false
|
386
|
+
# call-seq:
|
387
|
+
# Miriad.xyz2nue(x, y, z, latitude) -> [n, e, u]
|
388
|
+
#
|
389
|
+
# Convert geocentric coordinates to topocentric coordinates. If given,
|
390
|
+
# +latitude+ should be in radians. If +latitude+ is not given, the value
|
391
|
+
# from <tt>ENV['LATITUDE']</tt> (which should be in degrees in
|
392
|
+
# <tt>dd:mm:ss.sss</tt> or <tt>dd.ddd</tt> format) will be used.
|
393
|
+
#
|
394
|
+
# Output coordinates will be in the same units as the input coordinates.
|
395
|
+
#
|
396
|
+
# See also Miriad.neu2xyz
|
397
|
+
def self.xyz2neu(x, y, z, latitude=String(ENV['LATITUDE']).dms_to_d.d2r)
|
398
|
+
sinlat = Math.sin(latitude)
|
399
|
+
coslat = Math.cos(latitude)
|
400
|
+
[
|
401
|
+
u * coslat - n * sinlat,
|
402
|
+
e,
|
403
|
+
n * coslat + u * sinlat
|
404
|
+
]
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
# call-seq: Miriad.azel(obsra, obsdec, lst, latitude) -> [azimuth, elevation]
|
409
|
+
#
|
410
|
+
# Compute +azimuth+ and +elevation+ from +obsra+, +obsdec+, +lst+,
|
411
|
+
# +latitude+.
|
412
|
+
#
|
413
|
+
# NOTE: This calculation is based on a spherical model for the earth, and
|
414
|
+
# does not include any atmospheric effects (e.g. refraction).
|
415
|
+
#
|
416
|
+
# Input:
|
417
|
+
#
|
418
|
+
# +obsra+:: Apparent RA of the source of interest (radians).
|
419
|
+
# +obsdec+:: Apparent DEC of the source of interest (radians).
|
420
|
+
# +lst+:: Local sidereal time (radians).
|
421
|
+
# +latitude+:: Observatory geodetic latitude (radians). If not given, the
|
422
|
+
# value from <tt>ENV['LATITUDE']</tt> (which should be in
|
423
|
+
# degrees in <tt>dd:mm:ss.sss</tt> or <tt>dd.ddd</tt> format)
|
424
|
+
# will be used.
|
425
|
+
#
|
426
|
+
# Output:
|
427
|
+
#
|
428
|
+
# +azimuth+:: Azimuth from north (radians).
|
429
|
+
# +elevation+:: Elevation from horizon (radians).
|
430
|
+
#
|
431
|
+
# The body of this method was transcribed from the miriad source file
|
432
|
+
# <tt>ephem.for</tt> originally created by Bob Sault.
|
433
|
+
def self.azel(obsra, obsdec, lst, latitude=String(ENV['LATITUDE']).dms_to_d.d2r)
|
434
|
+
ha = lst - obsra
|
435
|
+
cosha = Math.cos(ha)
|
436
|
+
sinha = Math.sin(ha)
|
437
|
+
cosd = Math.cos(obsdec)
|
438
|
+
sind = Math.sin(obsdec)
|
439
|
+
cosl = Math.cos(latitude)
|
440
|
+
sinl = Math.sin(latitude)
|
441
|
+
|
442
|
+
az = Math.atan2(-cosd*sinha, cosl*sind - sinl*cosd*cosha)
|
443
|
+
|
444
|
+
el = Math.asin(sinl*sind + cosl*cosd*cosha)
|
445
|
+
|
446
|
+
[az, el]
|
447
|
+
end
|
448
|
+
|
449
|
+
# call-seq: Miriad.parang(obsra, obsdec, lst, latitude) -> parallactic_angle
|
450
|
+
#
|
451
|
+
# Compute parallactic angle of an altitude-azimuth telescope. Accuracy is
|
452
|
+
# about 0.0003 radians.
|
453
|
+
#
|
454
|
+
# Input:
|
455
|
+
#
|
456
|
+
# +obsra+:: Apparent RA of the source of interest (radians).
|
457
|
+
# +obsdec+:: Apparent DEC of the source of interest (radians).
|
458
|
+
# +lst+:: Local sidereal time (radians).
|
459
|
+
# +latitude+:: Observatory geodetic latitude (radians). If not given, the
|
460
|
+
# value from <tt>ENV['LATITUDE']</tt> (which should be in
|
461
|
+
# degrees in <tt>dd:mm:ss.sss</tt> or <tt>dd.ddd</tt> format)
|
462
|
+
# will be used.
|
463
|
+
#
|
464
|
+
# Output:
|
465
|
+
#
|
466
|
+
# +parang+:: Parallactic angle (radians).
|
467
|
+
#
|
468
|
+
# The body of this method was transcribed from the miriad source file
|
469
|
+
# <tt>ephem.for</tt> originally created by Bob Sault.
|
470
|
+
def self.parang(obsra, obsdec, lst, latitude=String(ENV['LATITUDE']).dms_to_d.d2r)
|
471
|
+
ha = lst - obsra
|
472
|
+
sinq = Math.cos(latitude) * Math.sin(ha)
|
473
|
+
cosq = Math.sin(latitude) * Math.cos(obsdec) -
|
474
|
+
Math.cos(latitude) * Math.sin(obsdec) * Math.cos(ha)
|
475
|
+
Math.atan2(sinq, cosq)
|
476
|
+
end
|
477
|
+
|
478
|
+
# call-seq: Miriad.precess(ra, dec, to_jd, from_jd) -> [ra, dec]
|
479
|
+
#
|
332
480
|
# Precess from one mean RA,DEC to another.
|
333
481
|
#
|
334
482
|
# A simple precession routine, to precess from one set of mean
|
@@ -336,18 +484,22 @@ module Miriad
|
|
336
484
|
# This is accurate to order 0.3 arcsec over 50 years.
|
337
485
|
#
|
338
486
|
# Reference:
|
339
|
-
#
|
487
|
+
#
|
488
|
+
# <em>Explanatory Supplement to the Astronomical Almanac</em>, 1993. p
|
489
|
+
# 105-106.
|
340
490
|
#
|
341
491
|
# NOTE: This does not take account of atmospheric refraction,
|
342
492
|
# nutation, aberration nor gravitational deflection.
|
343
493
|
#
|
344
494
|
# Input:
|
345
|
-
#
|
346
|
-
#
|
347
|
-
#
|
495
|
+
#
|
496
|
+
# +ra+, +dec+:: RA,DEC at the from_jd epoch (radians).
|
497
|
+
# +to_jd+:: Julian day of the new epoch. (defaults to current time)
|
498
|
+
# +from_jd+:: Julian day of the known epoch. (defaults to J2000)
|
348
499
|
#
|
349
500
|
# Output:
|
350
|
-
#
|
501
|
+
#
|
502
|
+
# <tt>[ra, dec]</tt>:: Precessed coordinates (radians).
|
351
503
|
#
|
352
504
|
# The body of this method was transcribed from the miriad source file
|
353
505
|
# <tt>ephem.for</tt> originally created by Bob Sault.
|
@@ -377,24 +529,32 @@ module Miriad
|
|
377
529
|
[ra, dec]
|
378
530
|
end
|
379
531
|
|
380
|
-
#
|
381
|
-
|
532
|
+
# call-seq: Miriad.basstr(baseline, format='%d-%d') -> "A1-A2"
|
533
|
+
#
|
534
|
+
# Format a MIRIAD baseline number as a String according to +format+.
|
535
|
+
def self.basstr(baseline, format='%d-%d')
|
382
536
|
baseline = baseline.to_i
|
383
|
-
|
537
|
+
format % basant(baseline)
|
384
538
|
end
|
385
539
|
|
540
|
+
# call-seq: Miriad.basant(baseline) -> [a1, a2]
|
541
|
+
#
|
386
542
|
# Convert a MIRIAD baseline number into two antenna numbers.
|
387
543
|
def self.basant(baseline)
|
388
544
|
baseline = baseline.to_i
|
389
545
|
[baseline/256, baseline%256]
|
390
546
|
end
|
391
547
|
|
548
|
+
# call-seq: Miriad.antbas(a1, a2) -> baseline_number
|
549
|
+
#
|
392
550
|
# Convert two antenna numbers into a MIRIAD baseline number
|
393
551
|
def self.antbas(a1,a2)
|
394
552
|
a1, a2 = a2, a1 if a2 < a1
|
395
553
|
a1.to_i*256 + a2.to_i
|
396
554
|
end
|
397
555
|
|
556
|
+
# call-seq: Miriad.basidx(a1, a2, n) -> baseline_index
|
557
|
+
#
|
398
558
|
# Convert two antenna numbers, <tt>a1</tt> and <tt>a2</tt>, into a baseline
|
399
559
|
# index (NOT a MIRIAD baseline number) using +n+ as the maximum antenna
|
400
560
|
# number.
|
@@ -403,6 +563,8 @@ module Miriad
|
|
403
563
|
return a1 + ((2*n+1)*(a2-a1) - (a2-a1)**2) / 2
|
404
564
|
end
|
405
565
|
|
566
|
+
# call-seq: Miriad.idxbas(baseline_index, n) -> [a1, a2]
|
567
|
+
#
|
406
568
|
# Convert a baseline index (NOT a MIRIAD baseline number) +i+ into two
|
407
569
|
# antenna numbers using +n+ as the maximum antenna number.
|
408
570
|
def self.idxbas(i,n)
|
@@ -439,21 +601,29 @@ module Miriad
|
|
439
601
|
def self.[](preamble, data, flags)
|
440
602
|
self.new(preamble, data, flags)
|
441
603
|
end
|
442
|
-
#
|
604
|
+
# call-seq: coord() -> [u, v, w]
|
605
|
+
#
|
606
|
+
# Returns the [u,v,w] coordinates from this Visibility's preamble. Note
|
607
|
+
# that the returned array could be an Array or an NArray, depending on how
|
608
|
+
# Uvio#read was called. If you want to use multiple assignment, be sure to
|
609
|
+
# call +to_a+ on the returned value (otherwise your +u+ variable might end
|
610
|
+
# up as a three element NArray and +v+ and +w+ nil.)
|
443
611
|
def coord() preamble[0..2]; end
|
444
|
-
#
|
612
|
+
# Computes the uv distance from this Visibility's preamble.
|
613
|
+
def uvdist() Math.sqrt(preamble[0]**2+preamble[1]**2); end
|
614
|
+
# Returns the Julian date from this Visibility's preamble.
|
445
615
|
def jd() preamble[3]; end
|
446
|
-
# Returns the baseline number from
|
616
|
+
# Returns the baseline number from this Visibility's preamble.
|
447
617
|
def baseline() preamble[4].to_i; end
|
448
|
-
# Returns a DateTime object corresponding to the Julian date from
|
449
|
-
# preamble.
|
618
|
+
# Returns a DateTime object corresponding to the Julian date from this
|
619
|
+
# Visibility's preamble.
|
450
620
|
def time() DateTime.ajd(jd); end
|
451
621
|
# Returns the two antenna numbers corresponding to the baseline number
|
452
|
-
# from
|
453
|
-
def
|
454
|
-
# True if
|
622
|
+
# from this Visibility's preamble.
|
623
|
+
def basant() Miriad.basant(baseline); end
|
624
|
+
# True if this Visibility's baseline is an autocorrelation.
|
455
625
|
def auto?() a1,a2=Miriad.basant(baseline); a1 == a2; end
|
456
|
-
# True if
|
626
|
+
# True if this Visibility's baseline is a cross correlation.
|
457
627
|
def cross?() a1,a2=Miriad.basant(baseline); a1 != a2; end
|
458
628
|
## TODO Make this more robust (i.e. less hard-coded)
|
459
629
|
#def lags()
|
@@ -478,9 +648,33 @@ module Miriad
|
|
478
648
|
# Calls <tt>putvr(var, data, ?d)</tt>
|
479
649
|
def putvrd(var,data) putvr(var, data, ?d); end
|
480
650
|
|
481
|
-
#
|
482
|
-
|
483
|
-
|
651
|
+
# Make new protected
|
652
|
+
class << self
|
653
|
+
protected :new
|
654
|
+
end
|
655
|
+
|
656
|
+
# call-seq:
|
657
|
+
# Uvio.open(name, mode='r') -> uvio
|
658
|
+
# Uvio.open(name, mode='r') {|uvio| ...}
|
659
|
+
#
|
660
|
+
# Opens a uv dataset and readies it for access.
|
661
|
+
#
|
662
|
+
# +name+:: The dataset's name
|
663
|
+
# +mode+:: Specifies how to open the dataset. Valid values are:
|
664
|
+
# * <tt>'r'</tt> for reading an existing dataset,
|
665
|
+
# * <tt>'w'</tt> for writing a new dataset, or
|
666
|
+
# * <tt>'a'</tt> for appending to an existing dataset.
|
667
|
+
#
|
668
|
+
# Note that datsets opened for reading may still be modified in some ways
|
669
|
+
# (e.g. writing new flags).
|
670
|
+
#
|
671
|
+
# If a block is given, dataset +name+ is opened according to +mode+ and the
|
672
|
+
# resulting Uvio object is passed into the block. The dataset will be
|
673
|
+
# automatically closed when the block terminates. In this case, the return
|
674
|
+
# value of Uvio.open is the return value of the block.
|
675
|
+
#
|
676
|
+
# If no block is given, the new Uvio object is returned.
|
677
|
+
def self.open(name, mode='r')
|
484
678
|
raise 'invalid dataset name' if name.nil? or name.empty?
|
485
679
|
case mode[0]
|
486
680
|
when ?r then
|
@@ -491,7 +685,15 @@ module Miriad
|
|
491
685
|
raise 'invalid dataset given' unless test ?d, name
|
492
686
|
end
|
493
687
|
|
494
|
-
self.new(name,mode)
|
688
|
+
uvio = self.new(name,mode)
|
689
|
+
|
690
|
+
return uvio unless block_given?
|
691
|
+
|
692
|
+
begin
|
693
|
+
return yield(uvio)
|
694
|
+
ensure
|
695
|
+
uvio.close() rescue nil
|
696
|
+
end
|
495
697
|
end
|
496
698
|
|
497
699
|
# call-seq:
|
@@ -510,6 +712,7 @@ module Miriad
|
|
510
712
|
# future versions!</b>
|
511
713
|
def read(*args)
|
512
714
|
if args.length == 0 || args[0].nil?
|
715
|
+
nchan = getvr('nchan') || 0
|
513
716
|
n, p, d, f = uvread(5,nchan,nchan)
|
514
717
|
elsif args.length == 1 && Visibility === args[0]
|
515
718
|
n, p, d, f = uvread(args[0].preamble,args[0].data,args[0].flags)
|
@@ -520,44 +723,128 @@ module Miriad
|
|
520
723
|
# Return nil on EOF
|
521
724
|
return nil if n == 0
|
522
725
|
|
523
|
-
# FIXME for Array inputs
|
524
726
|
# If nread is different than what was passed in
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
727
|
+
dlen = flen = n
|
728
|
+
dlen *= 2 if Array === d
|
729
|
+
# Shorten data and flags
|
730
|
+
d = d[0...dlen] if dlen != d.length
|
731
|
+
f = f[0...flen] if flen != f.length
|
530
732
|
|
531
733
|
# Return Visibility
|
532
734
|
return args[0] if Visibility === args[0]
|
533
735
|
Visibility[p,d,f]
|
534
736
|
end
|
535
737
|
|
536
|
-
# call-seq:
|
738
|
+
# call-seq: polstr -> String
|
739
|
+
#
|
740
|
+
# Format the current value of the _pol_ uv variable as a String according
|
741
|
+
# to <tt>Miriad::POLMAP</tt>.
|
742
|
+
def polstr
|
743
|
+
Miriad::POLMAP[getvr('pol')]
|
744
|
+
end
|
745
|
+
|
746
|
+
# call-seq: basstr(format='%d-%d') -> "A1-A2"
|
537
747
|
#
|
538
|
-
#
|
748
|
+
# Format the current value of the _baseline_ uv variable as a String
|
749
|
+
# according to +format+.
|
750
|
+
def basstr(format='%d-%d')
|
751
|
+
format % basant(getvr('baseline'))
|
752
|
+
end
|
753
|
+
|
754
|
+
# call-seq: basant -> [ant1, ant2]
|
755
|
+
#
|
756
|
+
# Decodes the value of the _baseline_ uv variable and returns a two element
|
539
757
|
# array containing the two antenna numbers.
|
540
|
-
def
|
758
|
+
def basant
|
541
759
|
bl = getvr('baseline')
|
542
760
|
bl = [bl.to_i/256, bl.to_i%256] if bl
|
543
761
|
end
|
544
762
|
|
545
|
-
#
|
546
|
-
#
|
547
|
-
|
763
|
+
# Computes hour angle (in radians) as <tt>lst - obsra</tt>.
|
764
|
+
# Returns 0.0 if either one (or both) is undefined.
|
765
|
+
def ha
|
766
|
+
getvr('lst') - getvr('obsra') rescue 0.0
|
767
|
+
end
|
768
|
+
|
769
|
+
# Computes the uv distance from the current value of the _coord_ uv
|
770
|
+
# variable. Returns 0.0 if _coord_ is undefined or maldefined.
|
771
|
+
def uvdist
|
772
|
+
u, v, w = getvr('coord')
|
773
|
+
(u && v) ? Math.sqrt(u**2+v**2) : 0.0
|
774
|
+
end
|
775
|
+
|
776
|
+
# Computes the azimuth and elevation from the current values of _lst_,
|
777
|
+
# _obsra_, _obsdec_, and _latitude_. Missing components are assumed to be
|
778
|
+
# 0.0.
|
548
779
|
#
|
549
|
-
#
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
780
|
+
# See Miriad.azel for more details.
|
781
|
+
def azel
|
782
|
+
obsra = getvr('obsra') || 0.0
|
783
|
+
obsdec = getvr('obsdec') || 0.0
|
784
|
+
lst = getvr('lst') || 0.0
|
785
|
+
latitude = getvr('latitud') || 0.0
|
786
|
+
Miriad.azel(obsra, obsdec, lst, latitude)
|
787
|
+
end
|
788
|
+
|
789
|
+
# Computes the current parallactic angle from the current values of _lst_,
|
790
|
+
# _obsra_, _obsdec_, and _latitude_. Missing components are assumed to be
|
791
|
+
# 0.0.
|
792
|
+
#
|
793
|
+
# See Miriad.parang for more details.
|
794
|
+
def parang
|
795
|
+
obsra = getvr('obsra') || 0.0
|
796
|
+
obsdec = getvr('obsdec') || 0.0
|
797
|
+
lst = getvr('lst') || 0.0
|
798
|
+
latitude = getvr('latitud') || 0.0
|
799
|
+
Miriad.parang(obsra, obsdec, lst, latitude)
|
800
|
+
end
|
801
|
+
|
802
|
+
# Returns the value of the uv variable _chi_. If _chi_ is not defined,
|
803
|
+
# return <tt>parang()</tt> plus the value of the _evector_ uv variable
|
804
|
+
# if it is defined.
|
805
|
+
def chi
|
806
|
+
getvr('chi') || (parang + (getvr('evector') || 0.0))
|
807
|
+
end
|
808
|
+
|
809
|
+
# call-seq:
|
810
|
+
# uvio['name'] -> value or nil
|
811
|
+
# uvio[:name] -> value or nil
|
812
|
+
#
|
813
|
+
# Returns the current value of the uv variable named +name+ or +nil+ if the
|
814
|
+
# named variable does not (yet) exist.
|
815
|
+
#
|
816
|
+
# This provides a Hash-like interface to the uv variables.
|
817
|
+
#
|
818
|
+
# It is implemented as <tt>getvr(name.to_s)</tt>.
|
819
|
+
def [](name)
|
820
|
+
getvr(name.to_s)
|
821
|
+
end
|
822
|
+
|
823
|
+
# call-seq:
|
824
|
+
# uvio['name'] = value -> value
|
825
|
+
# uvio[:name] = value -> value
|
826
|
+
# uvio['name', type] = value -> value
|
827
|
+
# uvio[:name, type] = value -> value
|
828
|
+
#
|
829
|
+
# Sets the uv variable +name+ to +value+. If +type+ is not given, the
|
830
|
+
# MIRIAD type will be autodetected from +value+. Generally, this works
|
831
|
+
# well only for Strings and NArrays, but not for Numeric types. For full
|
832
|
+
# control, specify +type+ as one of...
|
833
|
+
#
|
834
|
+
# * <tt>?a</tt> - ASCII data
|
835
|
+
# * <tt>?i</tt> - Integer data
|
836
|
+
# * <tt>?r</tt> - Single precision real data
|
837
|
+
# * <tt>?d</tt> - Double precision real data
|
838
|
+
def []=(*args)
|
839
|
+
n, t, v = case args.length
|
840
|
+
when 2: [args[0], -1, args[1]]
|
841
|
+
when 3: [args[0], args[1], args[2]]
|
842
|
+
else
|
843
|
+
raise ArgumentError.new(
|
844
|
+
"wrong number of arguments (#{args.length} for 3)")
|
845
|
+
end
|
846
|
+
putvr(n.to_s, v, t)
|
847
|
+
v
|
561
848
|
end
|
562
849
|
end
|
563
850
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miriad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.0.
|
4
|
+
version: 4.1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David MacMahon
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-04-
|
12
|
+
date: 2008-04-21 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,6 +61,7 @@ has_rdoc: true
|
|
61
61
|
homepage: http://miriad.rubyforge.org/
|
62
62
|
post_install_message:
|
63
63
|
rdoc_options:
|
64
|
+
- -S
|
64
65
|
- -x
|
65
66
|
- ext/.*.c
|
66
67
|
- -m
|
@@ -74,7 +75,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
75
|
requirements:
|
75
76
|
- - ">="
|
76
77
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.8.
|
78
|
+
version: 1.8.4
|
78
79
|
version:
|
79
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
81
|
requirements:
|