In [4]:
%autosave 2
import numpy as np
import pandas
import gzip
Autosaving every 2 seconds
In [2]:
filename = 'V404Cyg.txt.gz'
In [5]:
with gzip.open(filename) as f:
print(f.readline())
print(f.readline())
b'JD\tMagnitude\tUncertainty\tHQuncertainty\tBand\tObserver Code\tComment Code(s)\tComp Star 1\tComp Star 2\tCharts\tComments\tTransfomed\tAirmass\tValidation Flag\tCmag\tKmag\tHJD\tStar Name\tObserver Affiliation\tMeasurement Method\tGrouping Method\tADS Reference\tDigitizer\tCredit\n'
b'2456295.242\t<17.6\t\t\tCV\tSFY\t\tNA\t\t\t\t1\t\tZ\t\t\t\tV404 CYG\tBAA-VSS\tSTD\t\t\t\t\n'
In [24]:
table = np.genfromtxt(
filename,
usecols=(0,1,2),
delimiter='\t',
names=True,
dtype=(np.float, np.float, np.float),
missing_values=b'',
filling_values=0,
converters={1: lambda s: float(s.replace(b'<',b'-'))},
)
table[:5]
Out[24]:
array([( 2456295.242, -17.6, 0.), ( 2456297.249, 17.6, 0.),
( 2456304.281, -17.6, 0.), ( 2456305.28 , -17.6, 0.),
( 2456308.235, -17.6, 0.)],
dtype=[('JD', '<f8'), ('Magnitude', '<f8'), ('Uncertainty', '<f8')])
In [32]:
def magn_converter(s):
return float(s.replace(b'<',b'-'))
table = np.genfromtxt(
filename,
usecols=(0,1,2),
delimiter='\t',
names=True,
dtype=(np.float, np.float, np.float),
missing_values=b'',
filling_values=0,
converters={1: magn_converter},
)
is_upper_limit = table['Magnitude'] < 0 # np.zeros_like(table, dtype=np.float)
table['Magnitude'] = np.abs(table['Magnitude'])
print('Number of observations: {}'.format(len(table['Magnitude'])))
is_not_upper_limit = np.logical_not(is_upper_limit)
detections = table[is_not_upper_limit]
print('Number of detections: {}'.format(len(detections)))
Number of observations: 72271
Number of detections: 71454
In [37]:
table = np.genfromtxt(
filename,
names=True,
delimiter='\t',
skip_footer=70000,
# usecols=range(24),
)
print(table[0])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-37-1f5d3045b9a4> in <module>()
3 names=True,
4 delimiter='\t',
----> 5 skip_footer=70000,
6 # usecols=range(24),
7 )
/opt/conda/lib/python3.6/site-packages/numpy/lib/npyio.py in genfromtxt(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows)
1826 # Raise an exception ?
1827 if invalid_raise:
-> 1828 raise ValueError(errmsg)
1829 # Issue a warning ?
1830 else:
ValueError: Some errors were detected !
Line #147 (got 25 columns instead of 24)
Line #161 (got 25 columns instead of 24)
Line #176 (got 25 columns instead of 24)
Line #252 (got 25 columns instead of 24)
Line #255 (got 25 columns instead of 24)
Line #280 (got 25 columns instead of 24)
In [39]:
df = pandas.DataFrame(table)
df
Out[39]:
JD
Magnitude
Uncertainty
HQuncertainty
Band
Observer_Code
Comment_Codes
Comp_Star_1
Comp_Star_2
Charts
...
Cmag
Kmag
HJD
Star_Name
Observer_Affiliation
Measurement_Method
Grouping_Method
ADS_Reference
Digitizer
Credit
0
2.456295e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
1
2.456297e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2
2.456304e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
3
2.456305e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
4
2.456308e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
5
2.456308e+06
NaN
0.500
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
-6.746
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
6
2.456356e+06
17.350
0.200
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
7
2.456396e+06
NaN
NaN
NaN
NaN
NaN
NaN
138.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
8
2.456421e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
9
2.456422e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
10
2.456429e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
11
2.456433e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
12
2.456434e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
13
2.456437e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
14
2.456438e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
15
2.456439e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
16
2.456444e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
17
2.456445e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
18
2.456446e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
19
2.456447e+06
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
20
2.456450e+06
NaN
NaN
NaN
NaN
NaN
NaN
141.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
21
2.456452e+06
NaN
NaN
NaN
NaN
NaN
NaN
141.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
22
2.456452e+06
17.600
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
23
2.456456e+06
NaN
NaN
NaN
NaN
NaN
NaN
141.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
24
2.456456e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
25
2.456457e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
26
2.456458e+06
NaN
NaN
NaN
NaN
NaN
NaN
141.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
27
2.456459e+06
NaN
NaN
NaN
NaN
NaN
NaN
156.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
28
2.456460e+06
NaN
NaN
NaN
NaN
NaN
NaN
144.0
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
29
2.456460e+06
NaN
NaN
NaN
NaN
NaN
NaN
15.2
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
2241
2.457191e+06
14.801
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.924
13.728
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2242
2.457191e+06
14.804
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.926
13.725
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2243
2.457191e+06
14.842
0.015
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.928
13.738
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2244
2.457191e+06
14.820
0.016
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.932
13.742
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2245
2.457191e+06
14.819
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.947
13.748
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2246
2.457191e+06
14.802
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.920
13.720
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2247
2.457191e+06
14.781
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.917
13.722
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2248
2.457191e+06
14.786
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.910
13.711
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2249
2.457191e+06
14.817
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.910
13.719
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2250
2.457191e+06
14.815
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.904
13.715
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2251
2.457191e+06
14.773
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.910
13.713
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2252
2.457191e+06
14.762
0.011
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.914
13.728
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2253
2.457191e+06
14.767
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.942
13.759
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2254
2.457191e+06
14.779
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.929
13.723
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2255
2.457191e+06
14.750
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.950
13.764
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2256
2.457191e+06
14.774
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.929
13.736
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2257
2.457191e+06
14.773
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.926
13.723
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2258
2.457191e+06
14.794
0.011
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.971
13.757
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2259
2.457191e+06
14.789
0.013
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.964
13.769
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2260
2.457191e+06
14.767
0.011
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.961
13.747
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2261
2.457191e+06
14.759
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.987
13.803
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2262
2.457191e+06
14.811
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.945
13.752
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2263
2.457191e+06
14.827
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.927
13.748
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2264
2.457191e+06
14.809
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.985
13.778
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2265
2.457191e+06
14.832
0.015
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.972
13.767
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2266
2.457191e+06
14.820
0.015
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.932
13.754
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2267
2.457191e+06
14.862
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.905
13.716
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2268
2.457191e+06
14.841
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.904
13.720
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2269
2.457191e+06
14.834
0.012
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.912
13.728
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2270
2.457191e+06
14.845
0.014
NaN
NaN
NaN
NaN
123.0
141.0
NaN
...
11.916
13.733
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
2271 rows × 24 columns
In [45]:
df = pandas.read_table(filename, low_memory=False)
df.types
Out[45]:
JD float64
Magnitude object
Uncertainty float64
HQuncertainty float64
Band object
Observer Code object
Comment Code(s) object
Comp Star 1 object
Comp Star 2 object
Charts object
Comments object
Transfomed float64
Airmass float64
Validation Flag object
Cmag float64
Kmag float64
HJD float64
Star Name object
Observer Affiliation object
Measurement Method object
Grouping Method object
ADS Reference float64
Digitizer float64
Credit object
dtype: object
In [46]:
type(df.Magnitude[0])
Out[46]:
str
In [53]:
df.loc[:,'m'] = [float(s.replace('<','')) for s in df.Magnitude]
df.columns
Out[53]:
Index(['JD', 'Magnitude', 'Uncertainty', 'HQuncertainty', 'Band',
'Observer Code', 'Comment Code(s)', 'Comp Star 1', 'Comp Star 2',
'Charts', 'Comments', 'Transfomed', 'Airmass', 'Validation Flag',
'Cmag', 'Kmag', 'HJD', 'Star Name', 'Observer Affiliation',
'Measurement Method', 'Grouping Method', 'ADS Reference', 'Digitizer',
'Credit', 'm'],
dtype='object')
In [57]:
df.loc[:,'is_upper_limit'] = [
s.startswith('<') for s in df.Magnitude
]
df.is_upper_limit
Out[57]:
0 True
1 False
2 True
3 True
4 True
5 True
6 False
7 True
8 True
9 True
10 True
11 True
12 True
13 False
14 False
15 False
16 False
17 False
18 True
19 True
20 True
21 True
22 False
23 True
24 True
25 True
26 True
27 True
28 True
29 True
...
72241 True
72242 True
72243 True
72244 True
72245 True
72246 True
72247 True
72248 True
72249 True
72250 True
72251 True
72252 True
72253 True
72254 True
72255 True
72256 True
72257 False
72258 True
72259 True
72260 True
72261 True
72262 True
72263 True
72264 True
72265 True
72266 True
72267 True
72268 True
72269 True
72270 True
Name: is_upper_limit, Length: 72271, dtype: bool
In [58]:
df.loc[:,'date'] = df.JD - df.JD[0]
In [66]:
%matplotlib inline
from matplotlib import pyplot as plt
plt.plot(
df.date[df.is_upper_limit],
df.m[df.is_upper_limit],
'rv',
)
plt.plot(
df.date[np.logical_not(df.is_upper_limit)],
df.m[np.logical_not(df.is_upper_limit)],
'bo',
)
plt.gca().invert_yaxis()
In [ ]:
Content source: hombit/scientific_python
Similar notebooks: