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])
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
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