示例#1
0
	def Stats(self, patns, nQuarters):
		'''Collect all the statistics needed'''
		for patn in patns.itervalues():
			if patn.pno % 100000 == 0:
				print '\r', patn.pno,
				
			isq = patn.isq
			self.nPatns[isq] += 1
			self.nRawCitesMade[isq] += len(patn.rawcites)
			self.nCitesMade[isq] += len(patn.cites)
			self.nCitesRecd[isq] += len(patn.citedby)
			
			# activity stuff
			self.totAct[isq] = [a+b for a,b in zip(self.totAct[isq],patn.Activity(patns))]
			self.totActApd[isq] = [a+b for a,b in zip(self.totActApd[isq],patn.ActivityApd(patns))]
		print
			
		for isq in range(nQuarters):
			nPatns = self.nPatns[isq]
			if nPatns < 1:	# mostly for testing
				continue
			self.avgRawCitesMade[isq] = 1.0 * self.nRawCitesMade[isq] / nPatns
			self.avgCitesMade[isq] = 1.0 * self.nCitesMade[isq] / nPatns
			self.avgCitesRecd[isq] = 1.0 * self.nCitesRecd[isq] / nPatns
			for i in range(nQuarters):
				self.avgAct[isq][i] = 1.0 * self.totAct[isq][i] / nPatns
				self.avgActApd[isq][i] = 1.0 * self.totActApd[isq][i] / nPatns
		
		self.cumIsd = Patent.Cumulate(self.nPatns)
		self.cumCitesMade = Patent.Cumulate(self.nCitesMade)
		self.cumCitesPerPatn = [1.0 * c / n for c,n in zip(self.cumCitesMade,self.cumIsd)]
示例#2
0
def Activity(patn, f):
	'''Returns the patent's cumulative hits, weighted via f(patn, citingPatn)'''
	act = [0] * nQuarters
	
	for citingPatnNo in patn.citedby:
		act[patns[citingPatnNo].isq] += f(patns[citingPatnNo], patn)
	
	return Patent.Cumulate(act)