Пример #1
0
    def test_write(self, tmpdir):
        yaml_conf = tmpdir / "conf.yml"
        yaml_conf.write(r"""
        numThreads: 4
        fastaFiles: [test1.fasta,test2.fasta]
        parseRules:
          identifierParseRule: ^>.*\|(.*)\|.*$
        paramGroups:
          - files: [Test1.mzXML,Test2.mzXML] # paramGroup 0
            fixedModifications: [mod1]
            variableModifications: [mod2,mod3]
            maxMissedCleavages: 1
        """)
        mqpar_out = tmpdir / "mqpar.xml"

        t = MQParam(TEMPLATE_PATH, yaml=str(yaml_conf))
        t.write(str(mqpar_out))

        test = ET.parse(str(mqpar_out)).getroot()
        assert test.find('numThreads').text == '4'
        assert test.find('fastaFiles')[1].find(
            'identifierParseRule').text == '^>.*\\|(.*)\\|.*$'
        assert [
            el.text for el in test.find('parameterGroups')[0].find(
                'variableModifications')
        ] == ['mod2', 'mod3']
Пример #2
0
 def test_fasta_files(self):
     t = MQParam(TEMPLATE_PATH)
     t.add_fasta_files(('test1', 'test2'),
                       parse_rules={'identifierParseRule': r'>([^\s]*)'})
     assert len(t._root.find('fastaFiles')) == 2
     assert t._root.find('fastaFiles')[0].find("fastaFilePath").text == 'test1'
     assert t._root.find('fastaFiles')[0].find("identifierParseRule").text == '>([^\\s]*)'
Пример #3
0
    def test_add_infiles(self):
        t = MQParam(TEMPLATE_PATH)
        t.add_infiles([('/path/Test1.mzXML', '/path/Test2.mzXML'),
                       ('/path/Test3.mzXML', '/path/Test4.mzXML')])

        assert [e.text for e in t._root.find('filePaths')] == ['/path/Test1.mzXML',
                                                               '/path/Test2.mzXML',
                                                               '/path/Test3.mzXML',
                                                               '/path/Test4.mzXML']

        assert [e.text for e in t._root.find('paramGroupIndices')] == ['0', '0', '1', '1']
        assert t[1]
Пример #4
0
    def test_exp_design(self, tmpdir):
        # default experimental design when None is specified
        t = MQParam(TEMPLATE_PATH)
        design = t._make_exp_design((0, 0), ('./Test1.mzXML', './Test2.mzXML'))
        assert design['Name'] == ('./Test1.mzXML', './Test2.mzXML')
        assert design['Fraction'] == ('32767', '32767')

        # valid experimental design
        e1 = tmpdir / "e1.txt"
        e1.write(
            'Name\tExperiment\tFraction\tPTM\nTest1\te1\nTest2\te1\t\tfalse')
        t.exp_design = str(e1)
        design = t._make_exp_design((0, 0), ('./Test1.mzXML', './Test2.mzXML'))

        assert design == {
            'Name': ['./Test1.mzXML', './Test2.mzXML'],
            'Experiment': ['e1', 'e1'],
            'Fraction': ['32767', '32767'],
            'PTM': ['False', 'false'],
            'paramGroup': (0, 0)
        }

        # invalid header
        e2 = tmpdir / "e2.txt"
        e2.write('Name\tExperiment\tFraction\tPTM\tparamGroup\n')
        t.exp_design = str(e2)

        with pytest.raises(Exception):
            design = t._make_exp_design(('./Test2.mzXML', ), (0, ))
Пример #5
0
    def test_simple_param(self):
        t = MQParam(TEMPLATE_PATH)
        t.set_simple_param('minUniquePeptides', 4)
        assert t._root.find('.minUniquePeptides').text == '4'

        with pytest.raises(ValueError):
            t.set_simple_param('foo', 3)
Пример #6
0
    def test_from_yaml(self, tmpdir):
        conf1 = tmpdir / "conf1.yml"
        conf1.write(r"""
        numThreads: 4
        fastaFiles: [test1.fasta,test2.fasta]
        parseRules:
          identifierParseRule: ^>.*\|(.*)\|.*$
        paramGroups:
          - files: [Test1.mzXML,Test2.mzXML] # paramGroup 0
            fixedModifications: [mod1,mod2]
            lfqMode: 1
          - files: [Test3.mzXML,Test4.mzXML] # paramGroup 1
            labelMods:
              - []
              - []
              - [label1,label2]
        """)

        t = MQParam(TEMPLATE_PATH)
        t._from_yaml(str(conf1))
        assert t['numThreads'] == '4'
        assert [child.text for child in t[1]._root.find('labelMods')] == ['', 'label1;label2']
Пример #7
0
    def test_translate(self):
        t = MQParam(TEMPLATE_PATH)
        t.add_infiles([('/posix/path/to/Test1.mzXML',
                        '/posix/path/to/Test2.mzXML'),
                       ('/path/dummy.mzXML',)])  # mqparam is not designed for windows

        t._root.find('filePaths')[2].text = r'D:\Windows\Path\Test3.mzXML'

        t.translate(('/galaxy/working/Test3.mzXML',
                     '/galaxy/working/Test1.mzXML',
                     '/galaxy/working/Test2.mzXML',
                     '/galaxy/working/Test4.mzXML'))

        assert [e.text for e in t._root.find('filePaths')] == ['/galaxy/working/Test1.mzXML',
                                                               '/galaxy/working/Test2.mzXML',
                                                               '/galaxy/working/Test3.mzXML']
Пример #8
0
    def test_validity_check(self):
        design = {'Name': ['Test1', 'Test2'],
                  'Fraction': ['2', 32767],
                  'PTM': ['False', 'False'],
                  'Experiment': ['e1', 'e1'],
                  'paramGroup': [0, 0]}

        assert MQParam._check_validity(design, 2) is None

        design['Name'][0] = None
        with pytest.raises(Exception):
            MQParam._check_validity(design, 2)
        design['Name'][0] = 'Test1'

        design['Experiment'][0] = ''
        with pytest.raises(ValueError):
            MQParam._check_validity(design, 2)
        design['Experiment'][0] = 'e1'

        design['Fraction'][0] = 'foo'
        with pytest.raises(ValueError):
            MQParam._check_validity(design, 2)
Пример #9
0
parser.add_argument('--version', '-v', help="""A version number. Raises exception if it doesn't
match the MaxQuant version of the template. For usage in the Galaxy tool.""")

# in case numThreads is a environment variable, otherwise it can be specified in the yaml file as well
parser.add_argument('--num_threads', '-t', help="Number of threads to specify in mqpar.")
args = parser.parse_args()

# edit file names, working dir is unknown at the time of galaxy tool configfile creation
if args.yaml:
    with open(args.yaml) as f:
        conf_dict = yaml.safe_load(f.read())

        for n, pg in enumerate(conf_dict['paramGroups']):
            for num, fl in enumerate(pg['files']):
                if not fl.startswith('/'):
                    conf_dict['paramGroups'][n]['files'][num] = os.path.join(os.getcwd(), fl)
    with open('yaml', 'w') as f:
        yaml.safe_dump(conf_dict, stream=f)
        args.yaml = 'yaml'

kwargs = dict(yaml=args.yaml)
if args.substitution_rx:
    kwargs['substitution_rx'] = args.substitution_rx
mqparam = MQParam(args.template, args.exp_design, **kwargs)
if args.version and mqparam.version != args.version:
    raise Exception('mqpar version is ' + mqparam.version + '. Tool uses version {}.'.format(args.version))
mqparam.set_simple_param('numThreads', args.num_threads)

mqparam.write(args.mqpar_out if args.mqpar_out else 'mqpar.xml')
Пример #10
0
from mqparam import MQParam

parser = argparse.ArgumentParser()

arguments = ('--infiles',
             '--version',
             '--num_threads',
             '--substitution_rx',
             '--fasta_files',
             '--description_parse_rule',
             '--identifier_parse_rule',
             'mqpar')

for arg in arguments:
    parser.add_argument(arg)

args = parser.parse_args()

mqpar_out = os.path.join(os.getcwd(), 'mqpar.xml')
infiles = [os.path.join(os.getcwd(), f) for f in args.infiles.split(',')]
mqparam = MQParam(args.mqpar, None, substitution_rx=args.substitution_rx)
if mqparam.version != args.version:
    raise Exception('mqpar version is ' + mqparam.version + '. Tool uses version {}.'.format(args.version))
mqparam.translate(infiles)
mqparam.add_fasta_files(args.fasta_files.split(','),
                        {'identifierParseRule': args.identifier_parse_rule,
                         'descriptionParseRule': args.description_parse_rule})
mqparam.set_simple_param('numThreads', args.num_threads)
mqparam.write('mqpar.xml')
Пример #11
0
 def test_version(self):
     t = MQParam(TEMPLATE_PATH)
     assert t._root.find('maxQuantVersion').text == '1.6.10.43'