import brewer2mpl mpl.rcParams['axes.color_cycle'] = brewer2mpl.get_map('Dark2', 'qualitative', 7).mpl_colors mpl.rcParams['figure.figsize'] = (9,6) import os DEV_KEY = os.environ['ADS_DEV_KEY'] BASE_URL = 'http://adslabs.org/adsabs/api/search/' params = {} params['q'] = 'ack:simbad' # searches for the word 'simbad' params['fl'] = 'pubdate' params['rows'] = '10' # use a small value for now params['dev_key'] = DEV_KEY import requests params['start'] = 0 r = requests.get(BASE_URL, params=params) import simplejson data = simplejson.loads(r.text) data['results']['docs'][0] for d in data['results']['docs']: print(d['pubdate']) year = d['pubdate'].split('-')[0] print(year) import os DEV_KEY = os.environ['ADS_DEV_KEY'] BASE_URL = 'http://adslabs.org/adsabs/api/search/' def query_acknowledgments(word): # Set query parameters params = { 'q': 'ack:{0:s},property:REFEREED'.format(word), 'fl': 'pubdate', 'rows': '200', 'dev_key': DEV_KEY } import requests params['start'] = 0 processed = 0 pub_years = [] while True: # Execute the query r = requests.get(BASE_URL, params=params) # Check if anything went wrong if r.status_code != requests.codes.ok: e = simplejson.loads(r.text) sys.stderr.write("error retrieving results: {0:s}\n".format(e['error'])) continue # Extract results import simplejson data = simplejson.loads(r.text) for d in data['results']['docs']: pub_years.append(float(d['pubdate'].split('-')[0])) # Update starting point params['start'] += data['meta']['count'] # Check if finished if params['start'] >= data['meta']['hits']: break import numpy as np return np.array(pub_years) pub_years = query_acknowledgments('simbad') pub_years YEARS = list(range(1995, 2014)) YEARS query_count = np.array([np.sum(pub_years == year) for year in YEARS]) plt.plot(YEARS, query_count) _ = plt.xlabel("Year") _ = plt.ylabel("Number of papers mentioning SIMBAD") def total_number(year): params = { 'q': 'pubdate:{0:s},property:REFEREED'.format(year), 'dev_key':DEV_KEY, 'rows':1 } import requests r = requests.get(BASE_URL, params=params) import simplejson data = simplejson.loads(r.text) return data['meta']['hits'] total_number('2012') TOTAL_COUNT = [] for year in YEARS: date = '{0:04d}'.format(year) TOTAL_COUNT.append(total_number(date)) TOTAL_COUNT = np.array(TOTAL_COUNT) plt.plot(YEARS, TOTAL_COUNT) plt.ylim(0, 400000) _ = plt.xlabel("Year") _ = plt.ylabel("Total number of papers") plt.plot(YEARS, query_count / TOTAL_COUNT * 100.) plt.xlabel("Year") plt.ylabel("% of papers mentioning SIMBAD") def plot_yearly_trend(keyword, label=None): pub_years = query_acknowledgments(keyword) query_count = np.array([np.sum(pub_years == year) for year in YEARS]) plt.plot(YEARS, query_count / TOTAL_COUNT * 100., label=label, lw=2, alpha=0.8) plot_yearly_trend('simbad', label='simbad') plt.legend(loc=2) _ = plt.xlabel("Year") _ = plt.ylabel("% of papers mentioning various keywords") plot_yearly_trend('Astrophysics Data System', label='Astrophysics Data System') plt.legend(loc=2) _ = plt.xlabel("Year") _ = plt.ylabel("% of papers mentioning various keywords") plot_yearly_trend('simbad', label='Simbad') plot_yearly_trend('vizier', label='Vizier') plot_yearly_trend('ned', label='NED') plt.legend(loc=2) _ = plt.xlabel("Year") _ = plt.ylabel("% of papers mentioning various keywords") plot_yearly_trend('idl', label='IDL') plot_yearly_trend('python', label='Python') plot_yearly_trend('fortran', label='Fortran') plot_yearly_trend('perl', label='perl') plt.legend(loc=2) _ = plt.xlabel("Year") _ = plt.ylabel("% of papers mentioning various keywords") plot_yearly_trend('starlink', label='Starlink') plot_yearly_trend('ds9', label='ds9') plot_yearly_trend('topcat', label='Topcat') plot_yearly_trend('aladin', label='Aladin') plot_yearly_trend('iraf', label='IRAF') plt.legend(loc=2) _ = plt.xlabel("Year") _ = plt.ylabel("% of papers mentioning various keywords")