view test/test_query_metexp.py @ 24:385d21a8d0a0

New tool to Query multiple public repositories for elemental compositions from accurate mass values detected by high-resolution mass spectrometers
author pieter.lukasse@wur.nl
date Thu, 03 Apr 2014 16:50:45 +0200
parents 19d8fd10248e
children
line wrap: on
line source

'''Integration tests for the GCMS project'''

from pkg_resources import resource_filename  # @UnresolvedImport # pylint: disable=E0611
from GCMS import query_metexp
import os.path
import sys
import unittest


class IntegrationTest(unittest.TestCase):


#     def test_MM_calculations(self):
#         '''
#         test the implemented method for MM calculations for 
#         given chemical formulas
#         '''
#         export_to_metexp_tabular.init_elements_and_masses_map()
#         
#         formula = "C8H18O3"
#         # should be = 12.01*8 + 1.01*18 + 16*3 = 162.26
#         result = export_to_metexp_tabular.get_molecular_mass(formula)
#         self.assertEqual(162.26, result)
#         
#         formula = "CH2O3Fe2Ni"
#         # should be = 12.01*1 + 1.01*2 + 16*3 + 55.85*2 + 58.71 = 232.44
#         result = export_to_metexp_tabular.get_molecular_mass(formula)
#         self.assertAlmostEqual(232.44, result, 2)
#         
#         
#         
        

    def test_simple(self):
        '''
        Simple initial test
        '''
        # Create out folder
        outdir = "output/metexp_query/"
        if not os.path.exists(outdir):
            os.makedirs(outdir)

        #Build up arguments and run
        
        #         input_file = sys.argv[1]
        #         molecular_mass_col = sys.argv[2]
        #         formula_col = sys.argv[3]
        #         metexp_dblink_file = sys.argv[4]
        #         output_result = sys.argv[5]
        
        input_file = resource_filename(__name__, "data/metexp_query_tabular.txt")
        casid_col = "CAS"
        formula_col = "FORMULA"
        molecular_mass_col = "MM"
        metexp_dblink_file = resource_filename(__name__, "data/METEXP Test DB.txt")
        output_result = resource_filename(__name__, outdir + "metexp_query_results_added.txt")
    
        sys.argv = ['test',
                    input_file,
                    casid_col,
                    formula_col, 
                    molecular_mass_col,
                    metexp_dblink_file,
                    'GC',
                    output_result]
        
        # Execute main function with arguments provided through sys.argv
        query_metexp.main()
        
        # TODO - asserts  (base them on DB being filled with test data form metexp unit test for upload method)
        # PA

        
   

def _read_file(filename):
    '''
    Helper method to quickly read a file
    @param filename:
    '''
    with open(filename) as handle:
        return handle.read()