コード例 #1
0
ファイル: test_mw2isa.py プロジェクト: pkrog/isa-api
    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")
コード例 #2
0
ファイル: test_validators.py プロジェクト: scottx611x/isa-api
 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'])
コード例 #3
0
    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)
コード例 #4
0
## 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)
コード例 #5
0
 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)
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 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)
コード例 #9
0
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))
コード例 #10
0
    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))
コード例 #11
0
import os
from isatools import isatab

my_json_report = isatab.validate(
    open(os.path.join('./metadata-isa/', 'i_gsk_longitudinal.txt')))
コード例 #12
0
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'],