Пример #1
0
 def test_global_eff(self):
     # Load regular data
     expected_medium = {
         'EX_MNXM83': 2000.0, 
         'EX_pi_e': 2000.0, 
         'EX_fe3_e': 1000.0
     }
     specie_missing_id = 'MNXM83'
     medium = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.c.csv'))
     medium = crossref_medium_id(
         df=medium,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     exchange = self.rpsbml.build_exchange_reaction('c')
     df = merge_medium_exchange(
         medium = medium,
         exchange_reaction = exchange
     )
     rpsbml = add_missing_specie(
         self.rpsbml,
         df,
         'c'
     )
     cobra_model = None
     with NamedTemporaryFile(dir=self.temp_d, delete=False) as tempf:
         rpsbml.write_to_file(tempf.name)
         cobra_model=cobra_io.read_sbml_model(tempf.name, use_fbc_package=True)
     cobra_model.medium = df_to_medium(df)
     self.assertEqual(
         cobra_model.medium,
         expected_medium
     )
     tempf.close()
     remove(tempf.name)
Пример #2
0
 def test_add_missing_specie(self):
     # Load regular data
     specie_missing_id = 'MNXM83'
     medium = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.c.csv'))
     medium = crossref_medium_id(
         df=medium,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     exchange = self.rpsbml.build_exchange_reaction('c')
     df = merge_medium_exchange(
         medium = medium,
         exchange_reaction = exchange
     )
     rpsbml = add_missing_specie(
         self.rpsbml,
         df,
         'c'
     )
     # Return type
     self.assertIsInstance(rpsbml, rpSBML)
     # Values
     species = rpsbml.getModel().getListOfSpecies()
     self.assertEqual(
         len([x for x in species if x.getId() == specie_missing_id]),
         1
     )
     specie = rpsbml.getModel().getSpecies(specie_missing_id)
     self.assertTrue(specie.getBoundaryCondition())
Пример #3
0
    def test_df_to_medium(self):
        # Load.
        medium_a = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.a.csv'))
        dfa = crossref_medium_id(
            df=medium_a,
            model=self.rpsbml,
            compartment_id='MNXC2'
        )
        exchange = self.rpsbml.build_exchange_reaction('c')
        dfa = merge_medium_exchange(
            medium = dfa,
            exchange_reaction = exchange
        )
 
        # Return Type.
        dfad = dfa.drop(columns=['reaction_name'])
        medium = df_to_medium(dfad)
        self.assertIsInstance(medium, Dict)
        dfad = dfa.drop(columns=['reaction_name'])
        medium = df_to_medium(dfad)
        self.assertIsInstance(medium, Dict)
        medium = df_to_medium(dfa)
        self.assertIsInstance(medium, Dict)
        # Values.
        self.assertEqual(
            sum([x.startswith('EX') for x in medium.keys()]),
            dfa.shape[0]
        )
Пример #4
0
 def test_merge_medium_exchange(self):
     # Load
     medium = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.a.csv'))
     medium = crossref_medium_id(
         df=medium,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     exchange = self.rpsbml.build_exchange_reaction('c')
     df = merge_medium_exchange(
         medium = medium,
         exchange_reaction = exchange
     )
     # Return type.
     self.assertIsInstance(
         df,
         pd.DataFrame
     )
     # Values.
     self.assertEqual(
         df.shape,
         (331, len(exchange.columns)+len(df.columns)-2)
     )
     self.assertEqual(
         df[self.__MEDIUM_HEADER_COMPOUND_ID].isna().sum(),
         331-2
     )
     self.assertTrue(pd.api.types.is_float_dtype(df[self.__MEDIUM_HEADER_BOUND]))
Пример #5
0
 def test_crossref_medium_id(self):
     # Load.
     medium = load_medium_file(os_path.join(self.medium_path, 'medium.annotation.b.csv'))
     # Return type.
     df = crossref_medium_id(
         df=None,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     self.assertEqual(df, None)
     df = crossref_medium_id(
         df=medium,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     self.assertTrue(isinstance(df, pd.DataFrame))
     # Values.
     self.assertEqual(
         ['M_pi_e', 'M_fe3_e', 'M_pi_e', 'M_pi_e'],
         df['model_id'].tolist()[:4]
     )
     self.assertEqual(
         df['model_id'].isna().sum(),
         2
     )
     df = crossref_medium_id(
         df=medium,
         model=self.rpsbml,
         compartment_id='MNXC'
     )
     self.assertEqual(
         df['model_id'].isna().sum(),
         6
     )
Пример #6
0
 def test_load_medium_file(self):
     df = load_medium_file(os_path.join(self.medium_path, 'medium.io.a.tsv'))
     # Return type
     self.assertTrue(isinstance(df, pd.DataFrame))
     # Basic io profile
     self.assertTrue(is_df_medium_defined(df))
     df = load_medium_file(os_path.join(self.medium_path, 'medium.io.d.csv'))
     self.assertFalse(is_df_medium_defined(df))
     df = load_medium_file(os_path.join(self.medium_path, 'medium.io.a.xlsx'))
     self.assertFalse(is_df_medium_defined(df))
     df = load_medium_file(os_path.join(self.medium_path, 'medium.io.a.csv'))
     self.assertTrue(is_df_medium_defined(df))
     # Type expected
     self.assertTrue(pd.api.types.is_float_dtype(df[self.__MEDIUM_HEADER_BOUND]))
     self.assertEqual(
         sum(
             df['rp_compound'].apply(lambda x: isinstance(x, rpCompound) or pd.isna(x))
         ),
         len(df['rp_compound'])
     )
     # Challenge on column labels
     df_columns = df.columns.tolist()
     df_columns.remove('rp_compound')
     self.assertEqual(
         sorted(df_columns),
         sorted(self.__MEDIUM_HEADER)
     )
     tmp_file = tempfile.NamedTemporaryFile(
             suffix='.csv', 
             dir=self.temp_d,
             delete=False
     )
     for ix in range(len(self.__MEDIUM_HEADER)):
         tmp_header = deepcopy(self.__MEDIUM_HEADER)
         tmp_header = tmp_header.pop(ix)
         df_tmp = df[tmp_header]
         df_tmp.to_csv(
             tmp_file.name, 
             index=False
         )
         df_tmp = load_medium_file(tmp_file.name)
         self.assertFalse(is_df_medium_defined(df_tmp))
         tmp_file.close()
         remove(tmp_file.name)
Пример #7
0
 def test_merge_medium(self):
     medium_a = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.a.csv'))
     medium_b = load_medium_file(os_path.join(self.medium_path, 'medium.fmt.b.csv'))
     dfa = crossref_medium_id(
         df=medium_a,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     dfb = crossref_medium_id(
         df=medium_b,
         model=self.rpsbml,
         compartment_id='MNXC2'
     )
     df = merge_medium(first=None, second=dfa)
     self.assertIsInstance(df, pd.DataFrame)
     df = merge_medium(first=dfa, second=None)
     self.assertIsInstance(df, pd.DataFrame)
     df = merge_medium(first=dfa, second=pd.DataFrame())
     self.assertEqual(
         df.shape, 
         dfa.shape
     )
     df = merge_medium(first=pd.DataFrame(), second=dfa)
     self.assertEqual(
         df.shape, 
         dfa.shape
     )
     # Values
     df = merge_medium(dfa, dfb)
     self.assertIsInstance(df, pd.DataFrame) # Return type
     self.assertEqual(
         df.shape[0],
         3
     )
     self.assertNotIn('MNXM9', df[self.__MEDIUM_HEADER_COMPOUND_ID])
     df = merge_medium(dfb, dfa)
     self.assertEqual(
         df.shape[0],
         3
     )
     self.assertNotIn('14791', df[self.__MEDIUM_HEADER_COMPOUND_ID])