def test_conversion(self): success, study_id, validate = mw2isa_convert(studyid="ST000367", outputdir=self._tmp_dir, dl_option="no", validate_option=True) # exit_code = sys.exit() if success and validate: log.info("conversion successful, invoking the validator for " + study_id) with open( os.path.join(self._tmp_dir, study_id, 'i_investigation.txt')) as fp: # print(isatab.dumps(isatab.load(fp))) # fp.seek(0) report = isatab.validate(fp) print(report) if len(report['errors']) > 0: self.fail("conversion successful but validation failed") else: self.fail("conversion failed, validation was not invoked")
def test_info_reporting_bii_i_1_isatab(self): test_case = 'BII-I-1' with open( os.path.join(utils.TAB_DATA_DIR, test_case, 'i_investigation.txt')) as test_case_fp: report = isatab.validate( fp=test_case_fp, config_dir=utils.DEFAULT2015_XML_CONFIGS_DATA_DIR, log_level=self._reporting_level) self.assertIn( { 'message': 'Found 18 study groups in s_BII-S-1.txt', 'supplemental': 'Found 18 study groups in s_BII-S-1.txt', 'code': 5001 }, report['info']) self.assertIn( { 'message': 'Found 9 study groups in a_proteome.txt', 'code': 5001, 'supplemental': 'Found 9 study groups in a_proteome.txt' }, report['info']) self.assertIn( { 'message': 'Found 17 study groups in a_metabolome.txt', 'code': 5001, 'supplemental': 'Found 17 study groups in a_metabolome.txt' }, report['info']) self.assertIn( { 'message': 'Found 12 study groups in a_transcriptome.txt', 'code': 5001, 'supplemental': 'Found 12 study groups in a_transcriptome.txt' }, report['info']) self.assertIn( { 'message': 'Found 7 study groups in a_microarray.txt', 'code': 5001, 'supplemental': 'Found 7 study groups in a_microarray.txt' }, report['info'])
def test_all_convert(self, client_mock1, client_mock2): """Test the full conversion from BrAPI to ISA using mock data and validating using ISA validator.""" # Mock API calls instance_mock = client_mock1.return_value = client_mock2.return_value instance_mock.get_trials.return_value = mock_data.mock_trials instance_mock.get_study.return_value = mock_data.mock_study instance_mock.get_study_germplasms.return_value = mock_data.mock_germplasms instance_mock.get_study_observation_units.return_value = mock_data.mock_observation_units instance_mock.get_study_observed_variables.return_value = mock_data.mock_variables # Run full conversion brapi_to_isa.main(None) out_folder = brapi_to_isa.get_output_path( mock_data.mock_trials[0]['trialName']) assert os.path.exists(out_folder) # TODO: use MIAPPE ISA configuration for validation here investigation_file_path = os.path.join(out_folder, 'i_investigation.txt') with open(investigation_file_path, 'r', encoding='utf-8') as i_fp: assert isatab.validate(i_fp)
## Validation of ISA-Tab metadata produced manually and available in folder 'metadata-isa' import os import logging from isatools import isatab my_json_report = isatab.validate(open( os.path.join('./metadata-isa/', 'i_gsk_longitudinal.txt')), log_level=logging.WARN)
def test_get_experiment_as_isatab_mtab_20(self): AX.get_isatab('E-MTAB-20', self._tmp_dir) # gets E-MTAB-20 MAGE-TAB files with open(os.path.join(self._tmp_dir, 'i_investigation.txt')) as i_fp: isatab.validate(i_fp)
def test_get_experiment_as_isatab_mtab_1936(self): # splits three assays AX.get_isatab('E-MTAB-1963', self._tmp_dir) # gets E-MTAB-4649 MAGE-TAB files with open(os.path.join(self._tmp_dir, 'i_investigation.txt')) as i_fp: isatab.validate(i_fp)
def test_get_experiment_as_isatab_mtab_584(self): AX.get_isatab('E-MTAB-584', self._tmp_dir) with open(os.path.join(self._tmp_dir, 'i_investigation.txt')) as i_fp: isatab.validate(i_fp)
def test_get_experiment_as_isatab_afmx_2( self): # FIXME -> output ISA-Tab has many missing cells! WHY!?!? AX.get_isatab('E-AFMX-2', self._tmp_dir) # gets E-AFMX-2 MAGE-TAB files with open(os.path.join(self._tmp_dir, 'i_investigation.txt')) as i_fp: isatab.validate(i_fp)
with TemporaryDirectory() as tmpdirname: print('Created temporary directory:', tmpdirname) print('Converting files to UTF-8.') for f in files: with codecs.open(isa_tab_dir + os.sep + f, 'r') as file: lines = file.read() with codecs.open(tmpdirname + os.sep + f, 'w', encoding='utf8') as file: file.write(lines) # Validating ISA-TAB with configuration files # ------------------------------------------- try: print('Validating isa-tab files against configuration files found in ' + isa_config_dir) validation_log_path = isa_tab_dir + os.sep + 'validation_log.json' report = isatab.validate( open(os.path.join(tmpdirname, 'i_investigation.txt')), isa_config_dir) with open(validation_log_path, 'w') as out_fp2: json.dump(report, out_fp2, indent=4) print('VALIDATION FINISHED') print("* Errors found: {}\n* Warnings found: {}\n* Info messages: {}".format( len(report['errors']), len(report['warnings']), len(report['info']))) print('The ISA-TAB validation log file can be found at: ' + validation_log_path) except Exception as ioe: print('ISA-TAB validation failed!...') print(str(ioe))
def test_exportISATAB(self): nmrData = nPYc.NMRDataset('', fileType='empty') raw_data = { 'Acquired Time': [ '2016-08-09 01:36:23', '2016-08-09 01:56:23', '2016-08-09 02:16:23', '2016-08-09 02:36:23', '2016-08-09 02:56:23' ], 'AssayRole': [ 'AssayRole.LinearityReference', 'AssayRole.LinearityReference', 'AssayRole.LinearityReference', 'AssayRole.Assay', 'AssayRole.Assay' ], #'SampleType': ['SampleType.StudyPool', 'SampleType.StudyPool', 'SampleType.StudyPool','SampleType.StudySample', 'SampleType.StudySample'], 'Status': [ 'SampleType.StudyPool', 'SampleType.StudyPool', 'SampleType.StudyPool', 'SampleType.StudySample', 'SampleType.StudySample' ], 'Subject ID': ['', '', '', 'SCANS-120', 'SCANS-130'], 'Sampling ID': ['', '', '', 'T0-7-S', 'T0-9-S'], 'Sample File Name': ['sfn1', 'sfn2', 'sfn3', 'sfn4', 'sfn5'], 'Study': ['TestStudy', 'TestStudy', 'TestStudy', 'TestStudy', 'TestStudy'], 'Gender': ['', '', '', 'Female', 'Male'], 'Age': ['', '', '', '55', '66'], 'Sampling Date': ['', '', '', '27/02/2006', '28/02/2006'], 'Sample batch': ['', '', '', 'SB 1', 'SB 2'], 'Batch': ['1', '2', '3', '4', '5'], 'Run Order': ['0', '1', '2', '3', '4'], 'Instrument': ['QTOF 2', 'QTOF 2', 'QTOF 2', 'QTOF 2', 'QTOF 2'], 'Assay data name': ['', '', '', 'SS_LNEG_ToF02_S1W4', 'SS_LNEG_ToF02_S1W5'] } nmrData.sampleMetadata = pandas.DataFrame( raw_data, columns=[ 'Acquired Time', 'AssayRole', 'Status', 'Subject ID', 'Sampling ID', 'Study', 'Gender', 'Age', 'Sampling Date', 'Sample batch', 'Batch', 'Run Order', 'Instrument', 'Assay data name', 'Sample File Name' ]) with tempfile.TemporaryDirectory() as tmpdirname: details = { 'investigation_identifier': "i1", 'investigation_title': "Give it a title", 'investigation_description': "Add a description", 'investigation_submission_date': "2016-11-03", #use today if not specified 'investigation_public_release_date': "2016-11-03", 'first_name': "Noureddin", 'last_name': "Sadawi", 'affiliation': "University", 'study_filename': "my_nmr_study", 'study_material_type': "Serum", 'study_identifier': "s1", 'study_title': "Give the study a title", 'study_description': "Add study description", 'study_submission_date': "2016-11-03", 'study_public_release_date': "2016-11-03", 'assay_filename': "my_nmr_assay" } nmrData.initialiseMasks() nmrData.exportDataset(destinationPath=tmpdirname, isaDetailsDict=details, saveFormat='ISATAB') investigatio_file = os.path.join(tmpdirname, 'i_investigation.txt') numerrors = 0 with open(investigatio_file) as fp: report = isatab.validate(fp) numerrors = len(report['errors']) #self.assertTrue(os.path.exists(a)) self.assertEqual( numerrors, 0, msg="ISATAB Validator found {} errors in the ISA-Tab archive". format(numerrors))
import os from isatools import isatab my_json_report = isatab.validate( open(os.path.join('./metadata-isa/', 'i_gsk_longitudinal.txt')))
if os.path.isdir(input_path): isatab_dir = input_path else: with zipfile.ZipFile(input_path) as zfp: zfp.extractall(path=tmp_dir) isatab_dir = tmp_dir if not os.path.exists(tmp_dir): print('File path to ISA files \'{}\' does not exist'.format(isatab_dir)) sys.exit(0) report = None i_files = glob.glob(os.path.join(isatab_dir, 'i_*.txt')) if len(i_files) == 1: i_file_name = next(iter(i_files)) with open(i_file_name) as in_fp: json_report = isatab.validate(in_fp) if json_report is not None: with open(json_output_path, 'w') as out_fp: json.dump(json_report, out_fp, indent=4) import shutil shutil.rmtree(tmp_dir) def build_messages(messages): messages_table = "No messages." if len(messages) > 0: messages_table = "<table>" messages_table += "<tr><th>Code</th><th>Message</th><th>Supplemental information</th></tr>" for message in messages: messages_table += "<tr><td>{code}</td><td>{message}</td><td>{supplemental}</td></tr>".format( code=message['code'],