In [3]:
import json
import numpy as np

In [41]:
qutip_citation_pacs_json = """
[
    {
        "author": "Prado",
        "pacs": ["32.80.-t", "42.50.Ct", "42.50.Dv"]
    },
    {
        "author": "Gessner",
        "pacs": ["03.67.Ac", "05.30.Rt", "37.10.Ty"]
    },
    {
        "author": "Migdal",
        "pacs": [""]
    },
    {
        "author": "Haikka",
        "pacs": [""]
    },
    {
        "author": "Peuntinger",
        "pacs": ["03.67.Hk", "42.50.Dv", "42.68.Bz"]
    },
    {
        "author": "Johansson2014",
        "pacs": ["85.85.+j", "05.45.-a", "03.65.Ud"]
    },
    {
        "author": "Xu",
        "pacs": ["03.65.Yz", "03.67.-a", "42.50.Dv"]
    },
    {
        "author": "Nigg",
        "pacs": ["03.67.Lx", "42.50.Dv", "42.50.Pq", "85.25.-j"]
    },
    {
        "author": "Gessner",
        "pacs": ["78.47.jh", "37.10.Jk", "42.50.Ar", "42.50.Lc"]
    },
    {
        "author": "Chen",
        "pacs": [""]
    },
    {
        "author": "Dajka",
        "pacs": [""]
    },
    {
        "author": "Lörch",
        "pacs": [""]
    },
    {
        "author": "Wan",
        "pacs": [""]
    },
    {
        "author": "Puzzouli",
        "pacs": [""]
    },
    {
        "author": "Liao",
        "pacs": ["42.50.Pq", "42.50.Ar", "42.50.Wk", "07.10.Cm"]
    },
    {
        "author": "Nation",
        "pacs": ["42.50.Wk", "42.50.Ct", "42.50.Pq"]
    },
    {
        "author": "Settnes",
        "pacs": ["78.67.Hc", "42.50.Pq", "78.55.-m", "78.67.De"]
    },
    {
        "author": "Genway",
        "pacs": [""]
    },
    {
        "author": "Daniilidis",
        "pacs": [""]
    },
    {
        "author": "Ostermann",
        "pacs": ["42.50.-p", "42.50.Ar", "42.50.Lc", "42.72.-g"]
    },
    {
        "author": "Armour",
        "pacs": ["85.25.Cp", "42.50.Lc", "42.50.Dv"]
    },
    {
        "author": "Kovalev",
        "pacs": [""]
    },
    {
        "author": "Grimsmo",
        "pacs": ["42.50.Pq", "37.30.+i", "42.50.Ct", "05.70.Fh"]
    },
    {
        "author": "Johansson",
        "pacs": ["42.50.Lc", "85.25.Cp", "03.70.+k"]
    },
    {
        "author": "Majumdar",
        "pacs": ["78.67.Hc", "03.67.Hk", "42.50.Pq", "85.35.Be"]
    },
    {
        "author": "Hardal",
        "pacs": ["42.50.Pq", "42.50.Ar", "42.65.Lm"]
    },
    {
        "author": "Reiter",
        "pacs": ["03.67.Bg", "42.50.Dv", "42.50.Lc", "85.25.-j"]
    },
    {
        "author": "Moelbjerg",
        "pacs": ["42.55.Sa", "42.55.Ah", "42.50.Pq", "42.50.Ct"]
    },
    {
        "author": "Xu",
        "pacs": ["73.23.-b", "73.63.Kv", "42.50.Hz", "73.50.Pz"]
    },
    {
        "author": "Li",
        "pacs": ["74.45.+c", "85.35.Gv", "74.20.Mn"]
    },
    {
        "author": "Hardal",
        "pacs": ["03.67.Lx", "05.40.Fb", "03.65.Yz"]
    },
    {
        "author": "Grimsmo",
        "pacs": ["42.50.Pq", "37.30.+i", "42.50.Ct", "05.70.Fh"]
    },
    {
        "author": "Tipsmark",
        "pacs": ["42.50.-p", "42.50.Ar", "42.50.Dv", "42.50.Ex"]
    },
    {
        "author": "Nigg",
        "pacs": ["42.50.Ct", "03.67.-a", "42.50.Pq", "85.25.Am"]
    },
    {
        "author": "Holloway",
        "pacs": ["03.67.Dd", "42.65.-k", "07.05.Kf", "42.50.Dv"]
    },
    {
        "author": "Murch",
        "pacs": ["42.50.Dv", "03.65.Yz", "42.50.Pq", "85.25.-j"]
    },
    {
        "author": "Tezak",
        "pacs": [""]
    },
    {
        "author": "Dereli",
        "pacs": ["42.50.Pq", "71.70.Ej", "85.25.-j"]
    }
]
"""

In [42]:
data = json.loads(qutip_citation_pacs_json)

In [43]:
print("Number of papers %d" % len(data))


Number of papers 38

In [44]:
unique_pacs = np.unique(np.array([item for sublist in data for item in sublist['pacs']]))

In [45]:
unique_pacs


Out[45]:
array(['', '03.65.Ud', '03.65.Yz', '03.67.-a', '03.67.Ac', '03.67.Bg',
       '03.67.Dd', '03.67.Hk', '03.67.Lx', '03.70.+k', '05.30.Rt',
       '05.40.Fb', '05.45.-a', '05.70.Fh', '07.05.Kf', '07.10.Cm',
       '32.80.-t', '37.10.Jk', '37.10.Ty', '37.30.+i', '42.50.-p',
       '42.50.Ar', '42.50.Ct', '42.50.Dv', '42.50.Ex', '42.50.Hz',
       '42.50.Lc', '42.50.Pq', '42.50.Wk', '42.55.Ah', '42.55.Sa',
       '42.65.-k', '42.65.Lm', '42.68.Bz', '42.72.-g', '71.70.Ej',
       '73.23.-b', '73.50.Pz', '73.63.Kv', '74.20.Mn', '74.45.+c',
       '78.47.jh', '78.55.-m', '78.67.De', '78.67.Hc', '85.25.-j',
       '85.25.Am', '85.25.Cp', '85.35.Be', '85.35.Gv', '85.85.+j'], 
      dtype='<U8')

In [46]:
print("Number of unique pacs %d" % len(unique_pacs))


Number of unique pacs 51

In [47]:
count_pacs = np.array([sum([pacs in item['pacs'] for item in data]) for pacs in unique_pacs])

count_pacs


Out[47]:
array([11,  1,  3,  2,  1,  1,  1,  2,  2,  1,  1,  1,  1,  2,  1,  1,  1,
        1,  1,  2,  2,  5,  6,  9,  1,  1,  5, 12,  2,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  1,  2,  1,  1,  1])

Plot histogram for pacs data


In [48]:
%matplotlib inline

In [49]:
import matplotlib.pyplot as plt

In [52]:
pacs_table = {
    '': 'PACS not specified', 
    '03.65.Yz': 'Decoherence, quantum mechanics', 
    '03.67.-a': 'Quantum information', 
    '03.67.Bg': 'Quantum information, entanglement production', 
    '03.67.Dd': 'Quantum cryptography', 
    '03.67.Hk': 'Quantum communication', 
    '03.67.Lx': 'Quantum computation', 
    '03.70.+k': 'Quantum field theory', 
    '05.40.Fb': 'Random walks', 
    '05.70.Fh': 'Phase transitions in statistical mechanics and thermodynamics', 
    '07.05.Kf': 'Data management', 
    '37.30.+i': 'Ions in cavities', 
    '42.50.-p': 'Population inversion', 
    '42.50.Ar': 'Coherence quantum optics', 
    '42.50.Ct': 'Light interaction with matter', 
    '42.50.Dv': 'Phase (electromagnetic fields)', 
    '42.50.Ex': 'Quantum information optical implementations', 
    '42.50.Hz': 'Relaxation processes in quantum optics', 
    '42.50.Lc': 'Fluctuation phenomena quantum optics', 
    '42.50.Pq': 'Cavity quantum electrodynamics', 
    '42.50.Wk': 'Radiation pressure on atoms and molecules', 
    '42.55.Ah': 'Stimulated emission laser theory', 
    '42.55.Sa': 'Microcavity and microdisk lasers', 
    '42.65.-k': 'Nonlinear optics', 
    '42.65.Lm': 'Entanglement and quantum nonlocality nonlinear optics', 
    '42.72.-g': 'Light sources', 
    '71.70.Ej': 'Spin-orbit coupling in condensed matter', 
    '73.23.-b': 'Aharonov-Bohm effect mesoscopic systems', 
    '73.50.Pz': 'Photoconductivity thin films', 
    '73.63.Kv': 'Quantum dots, electronic transport', 
    '74.20.Mn': 'Spin fluctuations (superconductivity)', 
    '74.45.+c': 'Superconducting junctions (SN and SNS)', 
    '78.55.-m': 'Emission spectra, condensed matter', 
    '78.67.De': 'Optical properties of nanoscale materials and structures, quantum wells', 
    '78.67.Hc': 'Optical properties of nanoscale materials and structures, quantum dots', 
    '85.25.-j': 'Superconducting devices', 
    '85.25.Am': 'Superconducting device characterization, design, and modeling', 
    '85.25.Cp': 'Josephson devices', 
    '85.35.Be': 'Low-dimensional structures devices', 
    '85.35.Gv': 'Single-electron devices',
    '07.10.Cm': 'Micromechanical devices and systems',
    '03.65.Ud': 'Entanglement and quantum nonlocality',
    '03.67.Ac': 'Quantum algorithms and protocols',
    '05.30.Rt': 'Quantum phase transitions',
    '05.45.-a': 'Nonlinear dynamics',
    '32.80.-t': 'Photon-atom interactions',
    '37.10.Jk': 'Optical cooling and trapping of atoms',
    '37.10.Ty': 'Ion traps',
    '42.68.Bz': 'Meteorological factors atmospheric optics',
    '78.47.jh': 'Nonlinear optical spectroscopy coherent',
    '85.25.-j': 'Superconducting devices',
    '85.85.+j': 'Microelectromechanical systems (MEMS)',
    }

In [53]:
translated_pacs = [pacs_table[pacs] for pacs in unique_pacs]

In [59]:
with plt.xkcd():
    fig, ax = plt.subplots(1, 1, figsize=(12, 10))

    y_pos = np.arange(len(unique_pacs))

    axR = ax.twinx()
    axR.yaxis.tick_right()
    axR.yaxis.set_label_position("right")    
    axR.set_yticks(y_pos)
    axR.set_yticklabels(translated_pacs)
    axR.set_ylim(0-1, max(y_pos)+1)
    axR.set_xlim(0, max(count_pacs)+1)
    
    ax.barh(y_pos, count_pacs, align='center', alpha=1.0, color="#1E90B3")
    ax.set_yticks(y_pos)
    ax.set_yticklabels(unique_pacs)
    ax.set_xlabel('Count')
    ax.set_ylim(0-1, max(y_pos)+1)
    ax.set_xlim(0, max(count_pacs)+1)
    ax.set_title('PACS codes from papers that cite QuTiP');
    
    fig.tight_layout()



In [60]:
fig.savefig("qutip_citation_pacs.png", dpi=100)

In [61]:
%reload_ext version_information

In [62]:
%version_information json, numpy, matplotlib


Out[62]:
SoftwareVersion
Python3.3.2+ (default, Oct 9 2013, 14:50:09) [GCC 4.8.1]
IPython2.0.0-dev
OSposix [linux]
json2.0.9
numpy1.9.0.dev-d4c7c3a
matplotlib1.4.x
Wed Mar 26 13:39:34 2014 JST

In [ ]: