def test_get_citation_data(self):
     '''Test getting citation data'''
     from models import get_citation_data
     data = get_citation_data(testset)
     # The most important thing here is to test that it is a list
     # of MetricsModel instances
     self.assertEqual(isinstance(data, list), True)
     self.assertTrue(False not in
                     [x.__class__.__name__ == 'MetricsModel' for x in data])
 def test_get_citation_data(self):
     '''Test getting citation data'''
     from models import get_citation_data
     data = get_citation_data(testset)
     # The most important thing here is to test that it is a list
     # of MetricsModel instances
     self.assertEqual(isinstance(data, list), True)
     self.assertTrue(
         False not in [x.__class__.__name__ == 'MetricsModel' for
                       x in data])
Beispiel #3
0
def get_citation_stats(identifiers, bibcodes, bibcodes_ref):
    data = selfcits = citdata = None
    # citation stats for all publications
    cs = {}
    # citation stats for refereed publications
    csr = {}
    # Get the data to compute the citation statistics
    # First get data with just the numbers
    data = get_citation_data(identifiers)
    Nzero = len(bibcodes) - len(data)
    Nzero_ref = len(bibcodes_ref) - \
        len([p.citation_num for p in data if p.refereed])
    citnums = [p.citation_num for p in data] + [0] * Nzero
    ref_citnums = [p.refereed_citation_num for p in data] + [0] * Nzero
    citnums_ref = [p.citation_num
                   for p in data if p.refereed] + [0] * Nzero_ref
    ref_citnums_ref = [p.refereed_citation_num
                       for p in data if p.refereed] + [0] * Nzero_ref
    # Next, get more detailed citation information
    # (with data to be used later on)
    # citdata    : data structure with citation data for reuse later on
    # selfcits   : data structure with self-citations
    # Nself      : number of self-citations
    # Nself_ref  : number of self-citations for refereed publications
    # Nciting    : number of citing papers
    # Nciting_ref: number of citing papers for refereed publications
    citdata, selfcits, Nself, Nself_ref, Nciting, Nciting_ref = \
        get_selfcitations(identifiers, bibcodes)
    # The number of unique citing papers and the number of self-citations
    cs['number of citing papers'] = Nciting
    csr['number of citing papers'] = Nciting_ref
    cs['number of self-citations'] = Nself
    csr['number of self-citations'] = Nself_ref
    # The citation stats
    # Total number of citations
    cs['total number of citations'] = np.sum([p.citation_num for p in data]
                                             or [0])
    csr['total number of citations'] = np.sum(
        [p.citation_num for p in data if p.refereed] or [0])
    # Average number of citations
    cs['average number of citations'] = np.mean(citnums or [0])
    csr['average number of citations'] = np.mean(citnums_ref or [0])
    # Median number of citations
    cs['median number of citations'] = np.median(citnums or [0])
    csr['median number of citations'] = np.median(citnums_ref or [0])
    # Normalized number of citations
    cs['normalized number of citations'] = np.sum(
        [float(p.citation_num) / float(p.author_num) for p in data] or [0])
    csr['normalized number of citations'] = np.sum([
        float(p.citation_num) / float(p.author_num) for p in data if p.refereed
    ] or [0])
    # The refereed citations stats
    ##
    cs['total number of refereed citations'] = np.sum(
        [p.refereed_citation_num for p in data] or [0])
    csr['total number of refereed citations'] = np.sum(
        [p.refereed_citation_num for p in data if p.refereed] or [0])
    cs['average number of refereed citations'] = np.mean(ref_citnums or [0])
    csr['average number of refereed citations'] = np.mean(ref_citnums_ref
                                                          or [0])
    cs['median number of refereed citations'] = np.median(ref_citnums or [0])
    csr['median number of refereed citations'] = np.median(ref_citnums_ref
                                                           or [0])
    cs['normalized number of refereed citations'] = np.sum(
        [float(p.refereed_citation_num) / float(p.author_num) for p in data]
        or [0])
    csr['normalized number of refereed citations'] = np.sum([
        float(p.refereed_citation_num) / float(p.author_num)
        for p in data if p.refereed
    ] or [0])
    # Send the results back
    return cs, csr, data, selfcits, citdata
Beispiel #4
0
def get_citation_stats(identifiers, bibcodes, bibcodes_ref):
    data = selfcits = citdata = None
    # citation stats for all publications
    cs = {}
    # citation stats for refereed publications
    csr = {}
    # Get the data to compute the citation statistics
    # First get data with just the numbers
    data = get_citation_data(identifiers)
    Nzero = len(bibcodes) - len(data)
    Nzero_ref = len(bibcodes_ref) - \
        len([p.citation_num for p in data if p.refereed])
    citnums = [p.citation_num for p in data] + [0] * Nzero
    ref_citnums = [p.refereed_citation_num for p in data] + [0] * Nzero
    citnums_ref = [
        p.citation_num for p in data if p.refereed] + [0] * Nzero_ref
    ref_citnums_ref = [
        p.refereed_citation_num for p in data if p.refereed] + [0] * Nzero_ref
    # Next, get more detailed citation information
    # (with data to be used later on)
    # citdata    : data structure with citation data for reuse later on
    # selfcits   : data structure with self-citations
    # Nself      : number of self-citations
    # Nself_ref  : number of self-citations for refereed publications
    # Nciting    : number of citing papers
    # Nciting_ref: number of citing papers for refereed publications
    citdata, selfcits, Nself, Nself_ref, Nciting, Nciting_ref = \
        get_selfcitations(identifiers, bibcodes)
    # The number of unique citing papers and the number of self-citations
    cs['number of citing papers'] = Nciting
    csr['number of citing papers'] = Nciting_ref
    cs['number of self-citations'] = Nself
    csr['number of self-citations'] = Nself_ref
    # The citation stats
    # Total number of citations
    cs['total number of citations'] = np.sum(
        [p.citation_num for p in data] or [0])
    csr['total number of citations'] = np.sum(
        [p.citation_num for p in data if p.refereed] or [0])
    # Average number of citations
    cs['average number of citations'] = np.mean(citnums or [0])
    csr['average number of citations'] = np.mean(citnums_ref or [0])
    # Median number of citations
    cs['median number of citations'] = np.median(citnums or [0])
    csr['median number of citations'] = np.median(citnums_ref or [0])
    # Normalized number of citations
    cs['normalized number of citations'] = np.sum(
        [float(p.citation_num) / float(p.author_num) for p in data] or [0])
    csr['normalized number of citations'] = np.sum(
        [float(p.citation_num) / float(p.author_num) for p in data if
         p.refereed] or [0])
    # The refereed citations stats
    ##
    cs['total number of refereed citations'] = np.sum(
        [p.refereed_citation_num for p in data]or [0])
    csr['total number of refereed citations'] = np.sum(
        [p.refereed_citation_num for p in data if p.refereed] or [0])
    cs['average number of refereed citations'] = np.mean(ref_citnums or [0])
    csr['average number of refereed citations'] = np.mean(
        ref_citnums_ref or [0])
    cs['median number of refereed citations'] = np.median(ref_citnums or [0])
    csr['median number of refereed citations'] = np.median(
        ref_citnums_ref or [0])
    cs['normalized number of refereed citations'] = np.sum(
        [float(p.refereed_citation_num) / float(p.author_num) for
         p in data] or [0])
    csr['normalized number of refereed citations'] = np.sum(
        [float(p.refereed_citation_num) / float(p.author_num) for
         p in data if p.refereed] or [0])
    # Send the results back
    return cs, csr, data, selfcits, citdata