def test_run_gprofiler_with_empty_result(self): temp_dir = tempfile.mkdtemp() try: mygprofiler = MagicMock() df = pd.DataFrame() mygprofiler.profile = MagicMock(return_value=df) tfile = os.path.join(temp_dir, 'foo') with open(tfile, 'w') as f: f.write('a,b,c,') myargs = [tfile] theargs = cdgprofilergenestotermcmd._parse_arguments( 'desc', myargs) res = cdgprofilergenestotermcmd.run_gprofiler( tfile, theargs, gprofwrapper=mygprofiler) self.assertEqual(None, res) mygprofiler.profile.assert_called_once_with( query=['a', 'b', 'c'], domain_scope='known', organism='hsapiens', user_threshold=0.00000001, no_evidences=False) finally: shutil.rmtree(temp_dir)
def test_parse_args(self): myargs = ['inputarg'] res = cdgprofilergenestotermcmd._parse_arguments('desc', myargs) self.assertEqual('inputarg', res.input) self.assertEqual(0.00000001, res.maxpval) self.assertEqual(0.05, res.minoverlap) self.assertEqual('hsapiens', res.organism) self.assertEqual(500, res.maxgenelistsize)
def test_run_gprofiler_empty_file(self): temp_dir = tempfile.mkdtemp() try: tfile = os.path.join(temp_dir, 'foo') open(tfile, 'a').close() myargs = [tfile] theargs = cdgprofilergenestotermcmd._parse_arguments( 'desc', myargs) res = cdgprofilergenestotermcmd.run_gprofiler(tfile, theargs) self.assertEqual(None, res) finally: shutil.rmtree(temp_dir)
def test_run_gprofiler_no_file(self): temp_dir = tempfile.mkdtemp() try: tfile = os.path.join(temp_dir, 'foo') myargs = [tfile] theargs = cdgprofilergenestotermcmd._parse_arguments( 'desc', myargs) try: cdgprofilergenestotermcmd.run_gprofiler(tfile, theargs) self.fail('Expected FileNotFoundError') except FileNotFoundError: pass finally: shutil.rmtree(temp_dir)
def test_run_gprofiler_with_too_many_genes(self): temp_dir = tempfile.mkdtemp() try: tfile = os.path.join(temp_dir, 'foo') # write out gene file with 5002 genes which # should return None with open(tfile, 'w') as f: for x in range(0, 5001): f.write(str(x) + ',') myargs = [tfile] theargs = cdgprofilergenestotermcmd._parse_arguments( 'desc', myargs) res = cdgprofilergenestotermcmd.run_gprofiler(tfile, theargs) self.assertEqual(None, res) finally: shutil.rmtree(temp_dir)
def test_run_gprofiler_with_valid_no_intersections_in_result(self): temp_dir = tempfile.mkdtemp() try: mygprofiler = MagicMock() df = pd.DataFrame(columns=[ 'name', 'source', 'native', 'p_value', 'description', 'intersections', 'precision', 'recall', 'term_size' ], data=[[ 'name1', 'source1', 'native1', 0.1, 'desc1', ['hi'], 0.5, 0.7, 88 ], [ 'name2', 'source2', 'native2', 0.5, 'desc2', ['bye'], 0.6, 0.8, 99 ]]) mygprofiler.profile = MagicMock(return_value=df) tfile = os.path.join(temp_dir, 'foo') with open(tfile, 'w') as f: f.write('a,b,c,') myargs = [tfile] theargs = cdgprofilergenestotermcmd._parse_arguments( 'desc', myargs) theargs.omit_intersections = True res = cdgprofilergenestotermcmd.run_gprofiler( tfile, theargs, gprofwrapper=mygprofiler) self.assertEqual('name2', res['name']) self.assertEqual([], res['intersections']) self.assertEqual(99, res['term_size']) self.assertEqual(0.5, res['p_value']) self.assertEqual('source2', res['source']) self.assertEqual('native2', res['sourceTermId']) self.assertEqual(0.522, res['jaccard']) mygprofiler.profile.assert_called_once_with( query=['a', 'b', 'c'], domain_scope='known', organism='hsapiens', user_threshold=0.00000001, no_evidences=True) finally: shutil.rmtree(temp_dir)