<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register_preprocessed_file(self, infile, pmid, extra_annotations):
 """Set up already preprocessed text file for reading with ISI reader. This is essentially a mock function to "register" already preprocessed files and get an IsiPreprocessor object that can be passed to the IsiProcessor. Parameters infile : str Path to an already preprocessed text file (i.e. one ready to be sent for reading to ISI reader). pmid : str The PMID corresponding to the file extra_annotations : dict Extra annotations to be added to each statement, possibly including metadata about the source (annotations with the key "interaction" will be overridden) """

        infile_base = os.path.basename(infile)
        outfile = os.path.join(self.preprocessed_dir, infile_base)
        shutil.copyfile(infile, outfile)

        infile_key = os.path.splitext(infile_base)[0]

        self.pmids[infile_key] = pmid
        self.extra_annotations[infile_key] = extra_annotations