<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Applicant-apply-Job matrix
Jobs are considered at job title level.
Each entry $ e_{u,j} $ of the matrix is either the number of times (frequency) applicant $u$ applies job title $j$.
Here we are using the total number of times instead of frequency.
Step1:  Applicant-apply-(Job, Employer) matrix
<ASSISTANT_TASK:>
Python Code:
index_of_users = mkUserIndex(df=apps, user_col='uid')
index_of_items = mkItemIndex(df=apps, item_col='job_title')
print('# users: %d' %len(user_ids))
print('# job titles: %d' %len(item_ids))
from scipy.io import *
user_apply_job = mmread(DATA_DIR + 'user_apply_job.mtx')
printInfo(user_apply_job)
Explanation: Applicant-apply-Job matrix
Jobs are considered at job title level.
Each entry $ e_{u,j} $ of the matrix is either the number of times (frequency) applicant $u$ applies job title $j$.
Here we are using the total number of times instead of frequency.
End of explanation
apps_by_job_emp = pd.read_csv(AGG_DIR + 'apps_by_job_emp.csv')
apps_by_job_emp.shape
apps_by_job_emp['job_emp'] = apps_by_job_emp['job_title'] + ' at ' + apps_by_job_emp['organisation_name_ep']
apps_by_job_emp.head()
index_of_items = mkItemIndex(df=apps_by_job_emp, item_col='job_emp')
user_apply_job_emp = buildUserItemMat(df=apps_by_job_emp, 
                                      index_of_users=index_of_users, index_of_items=index_of_items, 
                                      user_col='uid', item_col='job_emp', rating_col='n_apply')
Explanation: Applicant-apply-(Job, Employer) matrix
End of explanation
<END_TASK>