<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse(self, rec):
 """Retrieve row data from files associated with the ISATabRecord. """

        final_studies = []
        for study in rec.studies:
            source_data = self._parse_study(study.metadata["Study File Name"],
                                            ["Source Name", "Sample Name", "Comment[ENA_SAMPLE]"])
            if source_data:
                study.nodes = source_data
                final_assays = []
                for assay in study.assays:
                    cur_assay = ISATabAssayRecord(assay)
                    assay_data = self._parse_study(assay["Study Assay File Name"],
                                                   ["Sample Name","Extract Name","Raw Data File","Derived Data File", "Image File", "Acquisition Parameter Data File", "Free Induction Decay Data File"])
                    cur_assay.nodes = assay_data
                    self._get_process_nodes(assay["Study Assay File Name"], cur_assay)
                    final_assays.append(cur_assay)
                study.assays = final_assays

                #get process nodes
                self._get_process_nodes(study.metadata["Study File Name"], study)
                final_studies.append(study)
        rec.studies = final_studies
        return rec