<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def est_propensity(self, lin='all', qua=None):
 		""" 		Estimates the propensity scores given list of covariates to 		include linearly or quadratically. 		The propensity score is the conditional probability of 		receiving the treatment given the observed covariates. 		Estimation is done via a logistic regression. 		Parameters 		lin: string or list, optional 			Column numbers (zero-based) of variables of 			the original covariate matrix X to include 			linearly. Defaults to the string 'all', which 			uses whole covariate matrix. 		qua: list, optional 			Tuples indicating which columns of the original 			covariate matrix to multiply and include. E.g., 			[(1,1), (2,3)] indicates squaring the 2nd column 			and including the product of the 3rd and 4th 			columns. Default is to not include any 			quadratic terms. 		"""


		lin_terms = parse_lin_terms(self.raw_data['K'], lin)
		qua_terms = parse_qua_terms(self.raw_data['K'], qua)

		self.propensity = Propensity(self.raw_data, lin_terms, qua_terms)
		self.raw_data._dict['pscore'] = self.propensity['fitted']
		self._post_pscore_init()