In [1]:
import requests
import time
from IPython.display import HTML
from IPython.display import Image
import pylab as plt
%pylab inline
In [2]:
def get_ngc_page(number):
url = 'http://leda.univ-lyon1.fr/G.cgi?n=9&c=o&o=n%s&a=html&ob=ra' % number
response = requests.get(url)
time.sleep(3)
if response.ok:
return response.content
# else:
# raise
# try:
# r = requests.get(url, params={'s': thing})
# except requests.exceptions.RequestException as e: # This is the correct syntax
# print e
# sys.exit(1)
In [3]:
HTML(get_ngc_page(3898))
Out[3]:
In [4]:
jobs = jobs_manager()
In [5]:
d1,d2,d3,d4 = [],[],[],[]
In [6]:
# %job [d1.append((x, get_ngc_page(x))) for x in log_progress(range(1, 2000))]
# %job [d2.append((x, get_ngc_page(x))) for x in log_progress(range(2000, 4000))]
# %job [d3.append((x, get_ngc_page(x))) for x in log_progress(range(4000, 6000))]
# %job [d4.append((x, get_ngc_page(x))) for x in log_progress(range(6000, 8000))]
In [7]:
# len(d1),len(d2),len(d3),len(d4)
In [8]:
# len(zip(d1,d2))
In [9]:
# data = []
# data.extend(d1)
# data.extend(d2)
# data.extend(d3)
# data.extend(d4)
In [10]:
# len(data)
In [11]:
# f = open('data.txt', 'a')
# for l in data:
# f.write(str(l))
In [12]:
lines= None
with open('data.txt', 'r') as f:
lines = f.readlines()[0]
indices = []
for ind, letter in enumerate(lines):
if letter == '(':
try:
sub = lines[ind:]
number = int(sub[1:sub.index(',')])
indices.append(ind)
except ValueError:
pass
In [13]:
len(indices)
Out[13]:
In [14]:
data = []
sub = None
for ind1, ind2 in zip(indices[:-1], indices[1:]):
sub = lines[ind1:ind2]
comma = sub.index(',')
number = int(sub[1:comma])
data.append((number, sub[comma:]))
In [15]:
len(data)
Out[15]:
In [16]:
without = 0
for num, html in data:
if 'Query Help' in html:
without += 1
print len(data) - without
In [17]:
disp = [d for d in data if 'Query Help' not in d[1]]
In [18]:
len(disp)
Out[18]:
In [19]:
print disp[100][0]
In [20]:
ddisp = []
for n, html in disp:
for row in html.split('<br'):
if row.count('±') > 1: # ± == ±
ddisp.append((n, html))
break
In [21]:
len(ddisp)
Out[21]:
In [22]:
print ['NGC' + str(n) for (n,_) in ddisp]
In [23]:
ddisp[0][1]
Out[23]:
In [24]:
troubled = []
for n, html in ddisp:
good = True
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip():
if len(row.split(' ')) != 9:
good = False
# print len(row.split(' '))
# print row
if not good:
troubled.append(n)
print 'NGC'+str(n)
In [25]:
len(troubled)
Out[25]:
In [26]:
html = ddisp[0][1]
xx, rr, sigs, esigs = [],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip():
_,_,_,x,y,vel,evel,sig,esig = row.split(' ')
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
In [27]:
dd = zip(rr, sigs, esigs)
dd = sorted(dd)
rr, sigs, esigs = zip(*dd)
In [28]:
plt.errorbar(rr, sigs, yerr=esigs)
plt.title('NGC x={}'.format(str(unique(xx))))
plt.show()
In [29]:
%%time
for n, html in ddisp:
if n not in troubled:
xx, rr, sigs, esigs = [],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip():
_,_,_,x,y,vel,evel,sig,esig = row.split(' ')
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
dd = zip(rr, sigs, esigs)
dd = sorted(dd)
rr, sigs, esigs = zip(*dd)
plt.errorbar(rr, sigs, yerr=esigs)
plt.title('NGC{} x={}'.format(str(n), str(unique(xx))))
plt.show()
In [30]:
good = [7332, 7331, 6958, 6703, 5353, 5033, 4762, 4667, 4638, 4621, 4552, 4429, 4350, 4278, 4251, 4111, 4106,
4036, 4026, 3998, 3941, 3627, 3412, 3384, 3379, 3371, 3190, 2974, 2945, 2560, 2217, 1404, 1399, 1381,
1380, 1374, 1339, 1209, 1175, 1023, 584 ]
In [31]:
len(good)
Out[31]:
In [32]:
for n, html in ddisp:
if n in troubled:
xx, rr, sigs, esigs = [],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
_,_,_,x,y,vel,evel,sig,esig = row.split(' ')
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
dd = zip(rr, sigs, esigs)
dd = sorted(dd)
rr, sigs, esigs = zip(*dd)
plt.errorbar(rr, sigs, yerr=esigs)
plt.title('NGC{} x={}'.format(str(n), str(unique(xx))))
plt.show()
In [33]:
good_troubled = [1461, 2648, 4579, 4501, 4435, 2673]
In [34]:
all_good = good
all_good.extend(good_troubled)
len(all_good)
Out[34]:
In [35]:
sources = []
for n, html in ddisp:
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
sources.append(r[r.index('kin02">')+7:r.rfind('<')])
unique(sources)
Out[35]:
In [36]:
sources = []
for n, html in ddisp:
if n in all_good:
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
sources.append(r[r.index('kin02">')+7:r.rfind('<')])
unique(sources)
Out[36]:
In [37]:
for n, html in ddisp:
if n in all_good:
sources = []
ang,xx, rr, sigs, esigs = [],[],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
_,_,a,x,y,vel,evel,sig,esig = row.split(' ')
sources.append(r[r.index('kin02">')+7:r.rfind('<')])
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
ang.append(a)
dd = zip(ang, rr, sigs, esigs)
for a in unique(ang):
dda = [(d[1],d[2],d[3]) for d in dd if d[0] == a]
dda = sorted(dda)
rr, sigs, esigs = zip(*dda)
plt.errorbar(rr, sigs, yerr=esigs)
plt.title('NGC{}\n x={} ang={} s={}'.format(str(n), str(unique(xx)), str(unique(ang)), str(unique(sources))))
plt.show()
In [38]:
def get_ugc_page(number):
url = 'http://leda.univ-lyon1.fr/G.cgi?n=9&c=o&o=u%s&a=html&ob=ra' % number
try:
response = requests.get(url)
time.sleep(3)
if response.ok:
return response.content
except requests.ConnectionError:
return ''
In [39]:
HTML(get_ugc_page(688))
Out[39]:
In [40]:
jobs = jobs_manager()
In [41]:
# u1,u2,u3,u4,u5,u6 = [],[],[],[],[],[]
In [42]:
# start = time.time()
# %job [u1.append((x, get_ugc_page(x))) for x in log_progress(range(1, 2000))]
# %job [u2.append((x, get_ugc_page(x))) for x in log_progress(range(2000, 4000))]
# %job [u3.append((x, get_ugc_page(x))) for x in log_progress(range(4000, 6000))]
# %job [u4.append((x, get_ugc_page(x))) for x in log_progress(range(6000, 8000))]
# %job [u5.append((x, get_ugc_page(x))) for x in log_progress(range(8000, 10000))]
# %job [u6.append((x, get_ugc_page(x))) for x in log_progress(range(10000, 13000))]
In [43]:
# %job [u1.append((x, get_ugc_page(x))) for x in log_progress(range(910, 2000))]
# %job [u2.append((x, get_ugc_page(x))) for x in log_progress(range(2891, 4000))]
In [44]:
# jobs.running
In [45]:
# len(u1),len(u2),len(u3),len(u4),len(u5), len(u6)
In [46]:
# data = []
# data.extend(u1)
# data.extend(u2)
# data.extend(u3)
# data.extend(u4)
# data.extend(u5)
# data.extend(u6)
In [47]:
# data[0]
In [48]:
# f = open('udata.txt', 'a')
# for l in data:
# f.write(str(l))
In [49]:
lines= None
with open('udata.txt', 'r') as f:
lines = f.readlines()[0]
indices = []
for ind, letter in enumerate(lines):
if letter == '(':
try:
sub = lines[ind:]
number = int(sub[1:sub.index(',')])
indices.append(ind)
except ValueError:
pass
In [50]:
len(indices)
Out[50]:
In [51]:
udata = []
sub = None
nums = set()
for ind1, ind2 in zip(indices[:-1], indices[1:]):
sub = lines[ind1:ind2]
comma = sub.index(',')
number = int(sub[1:comma])
# if number in nums:
# pass
# else:
# nums.add(number)
udata.append((number, sub[comma:]))
In [52]:
len(udata)
Out[52]:
In [53]:
without = 0
for num, html in udata:
if 'Query Help' in html:
without += 1
print len(udata) - without
In [54]:
disp = [d for d in udata if 'Query Help' not in d[1]]
In [55]:
len(disp)
Out[55]:
In [56]:
print disp[100][0]
In [57]:
disp[51]
Out[57]:
In [58]:
uddisp = {}
for index, (n, html) in enumerate(disp):
if type(html) != tuple:
for row in html.split('<br'):
if row.count('±') > 1: # ± == ±
uddisp[n] = html
break
In [59]:
len(uddisp)
Out[59]:
In [60]:
print ['UGC' + str(n) for n in uddisp.keys()]
In [61]:
whisp_url = 'http://www.astro.rug.nl/~whisp/Database/OverviewCatalog/ListByName/listing_by_name.html'
html = requests.get(whisp_url).content
In [62]:
from BeautifulSoup import BeautifulSoup
In [63]:
soup = BeautifulSoup(html)
In [64]:
# soup.findAll('a', target="_top")
In [65]:
whisp_galaxies = []
for gal in soup.findAll('a', target="_top")[2:]:
g = str(gal.string)
whisp_galaxies.append(int(g.replace('/', ' ').replace('(', ' ').replace('\x08', ' ').split(' ')[2]))
In [66]:
len(unique(whisp_galaxies))
Out[66]:
In [67]:
print whisp_galaxies
In [68]:
intersect = set(uddisp.keys()).intersection(unique(whisp_galaxies))
In [69]:
len(intersect)
Out[69]:
In [70]:
print list(intersect)
In [71]:
for n in sorted(uddisp.keys()):
html = uddisp[n]
if n in list(intersect):
sources = []
ang,xx, rr, sigs, esigs = [],[],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
_,_,a,x,y,vel,evel,sig,esig = row.split(' ')
sources.append(r[r.index('kin02">')+7:r.rfind('<')])
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
ang.append(a)
dd = zip(ang, rr, sigs, esigs)
for a in unique(ang):
dda = [(d[1],d[2],d[3]) for d in dd if d[0] == a]
dda = sorted(dda)
rr, sigs, esigs = zip(*dda)
plt.errorbar(rr, sigs, yerr=esigs)
plt.title('UGC{}\n x={} ang={} s={}'.format(str(n), str(unique(xx)), str(unique(ang)), str(unique(sources))))
plt.show()
Kennicutt 2001 https://arxiv.org/pdf/astro-ph/0103181v1.pdf (NGC only)
In [72]:
kenn_2001 = [628, 925, 2403, 2841, 2903, 3031, 4178, 4254, 4321, 4394, 4402, 4501, 4535, 4548, 4569, 4571, 4579, 4639, 4647,
4651, 4654, 4689, 4698, 4713, 4736, 4826, 5055, 5194, 5236, 5457, 6946, 7331]
Walter 2008 data https://arxiv.org/pdf/0810.2541v1.pdf and https://arxiv.org/pdf/0810.2556v1.pdf (которая на самом деле Bigiel, F.; Leroy, A, ... 2008)
In [73]:
walter_2008 = ['u8024', 'u5139', 'u4305', 'u5666', 'n4114', 'n2976', 'n4449', 'n3077', 'n7793', 'n925', 'n2403', 'n628',
'n3198', 'n3184', 'n4736', 'n3351', 'n6946', 'n3627', 'n5194', 'n3521', 'n2841', 'n5055', 'n7331']
Katkov 2015 https://arxiv.org/pdf/1505.01386v1.pdf, Katkov 2013 https://arxiv.org/pdf/1312.6701v1.pdf и Katkov 2014 https://arxiv.org/pdf/1406.7121v1.pdf и Katkov 2016 https://arxiv.org/pdf/1604.07624v1.pdf
In [74]:
katkov = ['i875', 'i1502', 'n16', 'n2350', 'n3098', 'n3248', 'n6615', 'n6654', 'n6798', 'n7351', 'u4551', 'u9519',
'i1608', 'i4653', 'n1211', 'n2917', 'n3375', 'n4240', 'n6010', 'n7693', 'u9980',
'n4111', 'n4710', 'n5422',
'n1167', 'n4150', 'n6340', 'n2273', 'n338', 'n3245', 'n5440']
HI кривые вращения http://adsabs.harvard.edu/abs/1988AJ.....96..851G
Warmels 1988 http://adsabs.harvard.edu/abs/1988A%26AS...72..427W WSRT
In [75]:
warmels_1988 = ['n4116', 'n4152', 'n4178', 'n4189', 'n4192', 'n4206', 'n4216', 'n4222', 'n4254', 'n4294', 'n4299', 'n4303',
'n4321', 'i3258', 'n4351', 'n4388', 'n4394', 'n4402', 'n4413', 'n4498', 'n4501', 'n4519', 'n4535', 'n4548',
'n4561', 'n4569', 'n4571', '4579', 'n4639', 'n4647', 'n4651', ' n4654', 'n4689', 'n4698', 'n4713', 'n4900']
In [76]:
ned_url = 'http://ned.ipac.caltech.edu/cgi-bin/objsearch?objname=%s&extend=no&hconst=73&omegam=0.27&omegav=0.73&corr_z=1&\
ut_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=pre_text&zv_breaker=30000.0&list_limit=5&img_stamp=YES'
In [77]:
ned_url
Out[77]:
In [78]:
def get_ugc_number(objname):
html = requests.get(ned_url % objname).content
soup = BeautifulSoup(html)
a_tag = soup.find('a', href = '/cgi-bin/catdef?prefix=UGC')
if a_tag:
return int(a_tag.parent.text.split(' ')[0][3:])
return None
In [79]:
get_ugc_number('n338')
Out[79]:
In [80]:
print get_ugc_number('i1608')
In [81]:
def get_ngc_number(objname):
html = requests.get(ned_url % objname).content
soup = BeautifulSoup(html)
a_tag = soup.find('a', href = '/cgi-bin/catdef?prefix=NGC')
if a_tag:
return int(a_tag.parent.text[3:])
return None
In [82]:
get_ngc_number('u624')
Out[82]:
In [83]:
start = time.time()
ngc_to_ugc = [get_ugc_number('n'+str(d)) for (d,_) in ddisp]
print time.time()-start
In [84]:
intersect = set(ngc_to_ugc).intersection(unique(whisp_galaxies))
In [85]:
len(intersect)
Out[85]:
In [86]:
print sorted(list(intersect))
was [6537, 6787, 5253, 1286, 2503, 2953, 2154, 2183, 8709, 7353, 7989, 5685, 5079, 1305, 4666, 5559, 5351]
In [87]:
ugc_to_ngc = [get_ngc_number('u'+str(d)) for d in uddisp.keys()]
In [88]:
missed = []
for u, d in zip(ngc_to_ugc, ddisp):
if u not in uddisp.keys():
missed.append('n' + str(d))
print u, d[0]
missed.append('u4674')
In [89]:
len(missed)
Out[89]:
In [90]:
joindis = uddisp.keys()
joindis.extend(missed)
print len(joindis)
In [91]:
ngc_to_ugc_walter = [get_ugc_number(d) for d in walter_2008]
In [92]:
print zip(ngc_to_ugc_walter, walter_2008)
In [93]:
walter_2008_u = ['u'+str(d[0]) if d[0] else d[1] for d in zip(ngc_to_ugc_walter, walter_2008)]
print walter_2008_u
In [94]:
intersect = set(joindis).intersection(unique(walter_2008_u))
In [95]:
len(intersect)
Out[95]:
In [96]:
print list(intersect)
In [97]:
kenn_u = [get_ugc_number('n'+str(d)) for d in kenn_2001]
In [98]:
print zip(kenn_u, kenn_2001)
In [99]:
kenn_2001_u = ['u'+str(d[0]) if d[0] else 'n'+str(d[1]) for d in zip(kenn_u, kenn_2001)]
print kenn_2001_u
In [100]:
intersect = set(joindis).intersection(kenn_2001_u)
In [101]:
len(intersect)
Out[101]:
In [102]:
ngc_to_ugc_warmels = [get_ugc_number(d) for d in warmels_1988]
In [103]:
print zip(ngc_to_ugc_warmels, warmels_1988)
In [104]:
warmels_1988_u = ['u'+str(d[0]) if d[0] else d[1] for d in zip(ngc_to_ugc_warmels, warmels_1988)]
print warmels_1988_u
In [105]:
intersect = set(joindis).intersection(warmels_1988_u)
In [106]:
len(intersect)
Out[106]:
In [107]:
ngc_to_ugc_k = [get_ugc_number(d) for d in katkov]
In [108]:
print zip(ngc_to_ugc_k, katkov)
In [109]:
katkov_u = ['u'+str(d[0]) if d[0] else d[1] for d in zip(ngc_to_ugc_k, katkov)]
print katkov_u
In [110]:
intersect = set(katkov_u).intersection(unique(['u'+str(d) for d in whisp_galaxies]))
In [111]:
len(intersect)
Out[111]:
In [112]:
print list(intersect)
= n1167, n338, n2273
In [113]:
intersect = set(katkov_u).intersection(unique(walter_2008_u))
In [114]:
len(intersect)
Out[114]:
In [115]:
print list(intersect)
In [116]:
intersect = set(katkov_u).intersection(warmels_1988_u)
In [117]:
len(intersect)
Out[117]:
In [118]:
print list(intersect)
In [119]:
intersect = set(katkov_u).intersection(kenn_2001_u)
In [120]:
len(intersect)
Out[120]:
In [121]:
hulst2016 = ['u1913', 'u2455', 'u3334', 'u3851', 'u4165', 'u4274', 'u4305', 'u4862', 'u5079', 'u5532', 'u5557', 'u5789', 'u5840', 'u6537', 'u6856', 'u6869', 'u7030', 'u7166', 'u7256', 'u7278', 'u7323', 'u7353', 'u7524', 'u7651', 'u7766', 'u7831', 'u7853', 'u7989', 'u12754']
vs Katkov:
In [122]:
intersect = set(katkov_u).intersection(hulst2016)
In [123]:
len(intersect)
Out[123]:
vs HYPERLEDA:
In [124]:
intersect = set(['u'+str(l) for l in joindis]).intersection(hulst2016)
In [125]:
len(intersect)
Out[125]:
In [126]:
print intersect
In [127]:
for obj in intersect:
print obj, '= n'+str(get_ngc_number(obj))
In [128]:
disp_data_for_hulst = []
for n in sorted(uddisp.keys()):
html = uddisp[n]
if n in [int(l[1:]) for l in intersect]:
sources = []
ang,xx, rr, sigs, esigs = [],[],[],[],[]
for r in html.split('<br'):
if '</a>' in r and '±' in r:
row = ' '.join(r[r.rfind('>')+1:].replace('±', ' ').split())
if row.strip() and len(row.split()) == 9:
_,_,a,x,y,vel,evel,sig,esig = row.split(' ')
sources.append(r[r.index('kin02">')+7:r.rfind('<')])
rr.append(float(y))
xx.append(x)
sigs.append(float(sig))
esigs.append(float(esig))
ang.append(a)
dd = zip(ang, rr, sigs, esigs)
for a in unique(ang):
dda = [(d[1],d[2],d[3]) for d in dd if d[0] == a]
dda = sorted(dda)
rr, sigs, esigs = zip(*dda)
plt.errorbar(rr, sigs, yerr=esigs)
disp_data_for_hulst.append((n, zip(rr, sigs, esigs)))
plt.title('UGC{}\n x={} ang={} s={}'.format(str(n), str(unique(xx)), str(unique(ang)), str(unique(sources))))
plt.show()
Данные по газу из статьи:
In [129]:
from PIL import Image as ImagePIL
%matplotlib inline
for obj in intersect:
plt.imshow(ImagePIL.open(obj+'_HI.png'))
plt.gca().axis('off')
plt.show()
In [130]:
zip(*disp_data_for_hulst)[0]
Out[130]:
Вместе с информацией о масштабах:
In [131]:
# from NED, Scale (Cosmology Corrected)
scales = {'u6537' : 0.072, 'u7353' : 0.043, 'u5079' : 0.056, 'u7989' : 0.098}
In [132]:
dist = {'u6537' : 30, 'u7353' : 40, 'u5079' : 25, 'u7989' : 80}
for ind, (n, sigdata) in enumerate(disp_data_for_hulst):
rr, sigs, esigs = zip(*sigdata)
scale = scales['u'+str(n)]
gas_lenght = dist['u'+str(n)]
if ind != 1: #добавляем еще ось к 5079
fig, (ax1, ax2) = plt.subplots(1,2,figsize=[14, 8])
ax1.errorbar(rr, sigs, yerr=esigs)
# ax1.plot([-gas_lenght/scale, gas_lenght/scale], [0.0, 0.0], '-', lw=5., color='black')
ax2.imshow(ImagePIL.open('u' + str(n) +'_HI.png'))
if ind != 0: #то же самое
ax1.set_title('UGC '+str(n))
ax2.set_title('Scale={} kpc/arcsec'.format(scale))
ax2.axis('off')
plt.show()
Газ везде гораздо более протяженный, чем звездные данные (как и должно быть).
Veselina Kalinova, Glenn van de Ven ... https://arxiv.org/pdf/1609.08700.pdf 18 galaxies with dispersions:
In [133]:
sauron_16_ngc = [488, 772, 4102, 5678, 3949, 4030, 2964, 628, 864, 4254, 1042, 3346, 3423, 4487, 2805, 4775, 5585, 5668]
In [134]:
sauron_16_u = ['u' + str(get_ugc_number('n'+str(d))) for d in sauron_16_ngc]
In [135]:
intersect = set(sauron_16_u).intersection(unique(['u'+str(d) for d in whisp_galaxies]))
In [136]:
print len(intersect), intersect
= n3949
In [137]:
Image('n3949_sig.png')
Out[137]:
In [138]:
intersect = set(sauron_16_u).intersection(unique(walter_2008_u))
In [139]:
print len(intersect), intersect
= n628
In [140]:
Image('n628_sig.png')
Out[140]:
In [141]:
Image('n628_bigiel2008.png', width=500)
Out[141]:
In [142]:
intersect = set(sauron_16_u).intersection(warmels_1988_u)
In [143]:
print len(intersect), intersect
=n4254
In [144]:
Image('n4254_sig.png')
Out[144]:
In [145]:
intersect = set(sauron_16_u).intersection(kenn_2001_u)
In [146]:
print len(intersect), intersect
Обе уже были выше.
In [147]:
intersect = set(sauron_16_u).intersection(hulst2016)
In [148]:
print len(intersect), intersect
=n3949, уже есть выше (кстати есть еще тут дисперсии https://arxiv.org/pdf/astro-ph/0508552v1.pdf)
Wong, Tony; Blitz, Leo 2002
https://ui.adsabs.harvard.edu/#abs/2002ApJ...569..157W/abstract
7 галактик с данными по $\rm{HI}$ и $\rm{H_2}$
In [149]:
wong2002 = ['4321', '4414', '4501', '4736', '5033', '5055', '5457']
In [150]:
wong2002_u = ['u' + str(get_ugc_number('n'+str(d))) for d in wong2002]
vs Katkov:
In [151]:
intersect = set(katkov_u).intersection(wong2002)
In [152]:
len(intersect)
Out[152]:
vs HYPERLEDA:
In [153]:
intersect = set(['u'+str(l) for l in joindis]).intersection(wong2002)
In [154]:
len(intersect)
Out[154]:
vs SAURON 16
In [155]:
intersect = set(sauron_16_u).intersection(wong2002)
In [156]:
len(intersect)
Out[156]:
Thomas P. K. Martinsson, Marc A. W. Verheijen, Kyle B. Westfall,, Matthew A. Bershady, Andrew Schechtman-Rook, David R. Andersen, and Rob A. Swaters
https://ui.adsabs.harvard.edu/#abs/2013A&A...557A.130M/abstract 30 galaxies with dispersions:
In [157]:
diskmass_u = ['448', '463', '1081' , '1087' , '1529' , '1635' , '1862' , '1908' , '3091' , '3140' , '3701' , '3997' , '4036' , '4107' , '4256' , '4368' , '4380' , '4458' , '4555' , '4622' , '6903' , '6918' , '7244' , '7917' , '8196' , '9177' , '9837' , '9965' , '11318', '12391']
In [159]:
diskmass_u = ['u' + d for d in diskmass_u]
In [160]:
intersect = set(diskmass_u).intersection(unique(['u'+str(d) for d in whisp_galaxies]))
In [161]:
print len(intersect), intersect
= NGC 2599, NGC 2441, NGC 4662, NGC 2532
In [170]:
Image('u4458_disp.png')
Out[170]:
In [171]:
Image('u4036_disp.png')
Out[171]:
In [173]:
Image('u7917_disp.png')
Out[173]:
In [174]:
Image('u4256_disp.png')
Out[174]:
In [162]:
intersect = set(diskmass_u).intersection(unique(walter_2008_u))
In [163]:
print len(intersect), intersect
In [164]:
intersect = set(diskmass_u).intersection(warmels_1988_u)
In [165]:
print len(intersect), intersect
In [166]:
intersect = set(diskmass_u).intersection(kenn_2001_u)
In [167]:
print len(intersect), intersect
Обе уже были выше.
In [168]:
intersect = set(diskmass_u).intersection(hulst2016)
In [169]:
print len(intersect), intersect