aiagents4pharma 1.14.0__py3-none-any.whl → 1.14.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. aiagents4pharma/configs/config.yaml +2 -1
  2. aiagents4pharma/configs/talk2biomodels/__init__.py +1 -0
  3. aiagents4pharma/configs/talk2biomodels/agents/t2b_agent/default.yaml +2 -3
  4. aiagents4pharma/configs/talk2biomodels/tools/__init__.py +4 -0
  5. aiagents4pharma/configs/talk2biomodels/tools/ask_question/__init__.py +3 -0
  6. aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +21 -7
  7. aiagents4pharma/talk2biomodels/tests/test_ask_question.py +44 -0
  8. aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +67 -69
  9. aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +26 -0
  10. aiagents4pharma/talk2biomodels/tests/test_integration.py +126 -0
  11. aiagents4pharma/talk2biomodels/tests/test_param_scan.py +68 -0
  12. aiagents4pharma/talk2biomodels/tests/test_search_models.py +28 -0
  13. aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +39 -0
  14. aiagents4pharma/talk2biomodels/tests/test_steady_state.py +90 -0
  15. aiagents4pharma/talk2biomodels/tools/ask_question.py +29 -8
  16. aiagents4pharma/talk2biomodels/tools/get_annotation.py +24 -9
  17. aiagents4pharma/talk2biomodels/tools/load_arguments.py +114 -0
  18. aiagents4pharma/talk2biomodels/tools/parameter_scan.py +91 -96
  19. aiagents4pharma/talk2biomodels/tools/simulate_model.py +14 -81
  20. aiagents4pharma/talk2biomodels/tools/steady_state.py +48 -89
  21. {aiagents4pharma-1.14.0.dist-info → aiagents4pharma-1.14.1.dist-info}/METADATA +1 -1
  22. {aiagents4pharma-1.14.0.dist-info → aiagents4pharma-1.14.1.dist-info}/RECORD +25 -16
  23. aiagents4pharma/talk2biomodels/tests/test_langgraph.py +0 -384
  24. {aiagents4pharma-1.14.0.dist-info → aiagents4pharma-1.14.1.dist-info}/LICENSE +0 -0
  25. {aiagents4pharma-1.14.0.dist-info → aiagents4pharma-1.14.1.dist-info}/WHEEL +0 -0
  26. {aiagents4pharma-1.14.0.dist-info → aiagents4pharma-1.14.1.dist-info}/top_level.txt +0 -0
@@ -5,9 +5,7 @@ Tool for simulating a model.
5
5
  """
6
6
 
7
7
  import logging
8
- from dataclasses import dataclass
9
- from typing import Type, Union, List, Annotated
10
- import basico
8
+ from typing import Type, Annotated
11
9
  from pydantic import BaseModel, Field
12
10
  from langgraph.types import Command
13
11
  from langgraph.prebuilt import InjectedState
@@ -15,76 +13,12 @@ from langchain_core.tools import BaseTool
15
13
  from langchain_core.messages import ToolMessage
16
14
  from langchain_core.tools.base import InjectedToolCallId
17
15
  from .load_biomodel import ModelData, load_biomodel
16
+ from .load_arguments import ArgumentData, add_rec_events
18
17
 
19
18
  # Initialize logger
20
19
  logging.basicConfig(level=logging.INFO)
21
20
  logger = logging.getLogger(__name__)
22
21
 
23
- @dataclass
24
- class TimeData:
25
- """
26
- Dataclass for storing the time data.
27
- """
28
- duration: Union[int, float] = 100
29
- interval: Union[int, float] = 10
30
-
31
- @dataclass
32
- class SpeciesData:
33
- """
34
- Dataclass for storing the species data.
35
- """
36
- species_name: List[str] = Field(description="species name", default=None)
37
- species_concentration: List[Union[int, float]] = Field(
38
- description="initial species concentration",
39
- default=None)
40
-
41
- @dataclass
42
- class TimeSpeciesNameConcentration:
43
- """
44
- Dataclass for storing the time, species name, and concentration data.
45
- """
46
- time: Union[int, float] = Field(description="time point where the event occurs")
47
- species_name: str = Field(description="species name")
48
- species_concentration: Union[int, float] = Field(
49
- description="species concentration at the time point")
50
-
51
- @dataclass
52
- class RecurringData:
53
- """
54
- Dataclass for storing the species and time data
55
- on reocurring basis.
56
- """
57
- data: List[TimeSpeciesNameConcentration] = Field(
58
- description="species and time data on reocurring basis",
59
- default=None)
60
-
61
- @dataclass
62
- class ArgumentData:
63
- """
64
- Dataclass for storing the argument data.
65
- """
66
- time_data: TimeData = Field(description="time data", default=None)
67
- species_data: SpeciesData = Field(
68
- description="species name and initial concentration data",
69
- default=None)
70
- recurring_data: RecurringData = Field(
71
- description="species and time data on reocurring basis",
72
- default=None)
73
- simulation_name: str = Field(
74
- description="""An AI assigned `_` separated name of
75
- the simulation based on human query""")
76
-
77
- def add_rec_events(model_object, recurring_data):
78
- """
79
- Add reocurring events to the model.
80
- """
81
- for row in recurring_data.data:
82
- tp, sn, sc = row.time, row.species_name, row.species_concentration
83
- basico.add_event(f'{sn}_{tp}',
84
- f'Time > {tp}',
85
- [[sn, str(sc)]],
86
- model=model_object.copasi_model)
87
-
88
22
  class SimulateModelInput(BaseModel):
89
23
  """
90
24
  Input schema for the SimulateModel tool.
@@ -138,29 +72,30 @@ class SimulateModelTool(BaseTool):
138
72
  # of the BasicoModel class
139
73
  duration = 100.0
140
74
  interval = 10
141
- dic_species_data = {}
75
+ dic_species_to_be_analyzed_before_experiment = {}
142
76
  if arg_data:
143
77
  # Prepare the dictionary of species data
144
- if arg_data.species_data is not None:
145
- dic_species_data = dict(zip(arg_data.species_data.species_name,
146
- arg_data.species_data.species_concentration))
147
- # Add recurring events (if any) to the model
148
- if arg_data.recurring_data is not None:
149
- add_rec_events(model_object, arg_data.recurring_data)
78
+ if arg_data.species_to_be_analyzed_before_experiment is not None:
79
+ dic_species_to_be_analyzed_before_experiment = dict(
80
+ zip(arg_data.species_to_be_analyzed_before_experiment.species_name,
81
+ arg_data.species_to_be_analyzed_before_experiment.species_concentration))
82
+ # Add reocurring events (if any) to the model
83
+ if arg_data.reocurring_data is not None:
84
+ add_rec_events(model_object, arg_data.reocurring_data)
150
85
  # Set the duration and interval
151
86
  if arg_data.time_data is not None:
152
87
  duration = arg_data.time_data.duration
153
88
  interval = arg_data.time_data.interval
154
89
  # Update the model parameters
155
- model_object.update_parameters(dic_species_data)
90
+ model_object.update_parameters(dic_species_to_be_analyzed_before_experiment)
156
91
  logger.log(logging.INFO,
157
92
  "Following species/parameters updated in the model %s",
158
- dic_species_data)
93
+ dic_species_to_be_analyzed_before_experiment)
159
94
  # Simulate the model
160
95
  df = model_object.simulate(duration=duration, interval=interval)
161
96
  logger.log(logging.INFO, "Simulation results ready with shape %s", df.shape)
162
97
  dic_simulated_data = {
163
- 'name': arg_data.simulation_name,
98
+ 'name': arg_data.experiment_name,
164
99
  'source': sys_bio_model.biomodel_id if sys_bio_model.biomodel_id else 'upload',
165
100
  'tool_call_id': tool_call_id,
166
101
  'data': df.to_dict()
@@ -177,12 +112,10 @@ class SimulateModelTool(BaseTool):
177
112
  # Return the updated state of the tool
178
113
  return Command(
179
114
  update=dic_updated_state_for_model|{
180
- # update the state keys
181
- # "dic_simulated_data": df.to_dict(),
182
115
  # update the message history
183
116
  "messages": [
184
117
  ToolMessage(
185
- content=f"Simulation results of {arg_data.simulation_name}",
118
+ content=f"Simulation results of {arg_data.experiment_name}",
186
119
  tool_call_id=tool_call_id
187
120
  )
188
121
  ],
@@ -5,8 +5,7 @@ Tool for parameter scan.
5
5
  """
6
6
 
7
7
  import logging
8
- from dataclasses import dataclass
9
- from typing import Type, Union, List, Annotated
8
+ from typing import Type, Annotated
10
9
  import basico
11
10
  from pydantic import BaseModel, Field
12
11
  from langgraph.types import Command
@@ -15,83 +14,20 @@ from langchain_core.tools import BaseTool
15
14
  from langchain_core.messages import ToolMessage
16
15
  from langchain_core.tools.base import InjectedToolCallId
17
16
  from .load_biomodel import ModelData, load_biomodel
17
+ from .load_arguments import ArgumentData, add_rec_events
18
18
 
19
19
  # Initialize logger
20
20
  logging.basicConfig(level=logging.INFO)
21
21
  logger = logging.getLogger(__name__)
22
22
 
23
- @dataclass
24
- class TimeData:
25
- """
26
- Dataclass for storing the time data.
27
- """
28
- duration: Union[int, float] = 100
29
- interval: Union[int, float] = 10
30
-
31
- @dataclass
32
- class SpeciesData:
33
- """
34
- Dataclass for storing the species data.
35
- """
36
- species_name: List[str] = Field(description="species name", default=[])
37
- species_concentration: List[Union[int, float]] = Field(
38
- description="initial species concentration",
39
- default=[])
40
-
41
- @dataclass
42
- class TimeSpeciesNameConcentration:
43
- """
44
- Dataclass for storing the time, species name, and concentration data.
45
- """
46
- time: Union[int, float] = Field(description="time point where the event occurs")
47
- species_name: str = Field(description="species name")
48
- species_concentration: Union[int, float] = Field(
49
- description="species concentration at the time point")
50
-
51
- @dataclass
52
- class ReocurringData:
53
- """
54
- Dataclass for species that reoccur. In other words, the concentration
55
- of the species resets to a certain value after a certain time interval.
56
- """
57
- data: List[TimeSpeciesNameConcentration] = Field(
58
- description="time, name, and concentration data of species that reoccur",
59
- default=[])
60
-
61
- @dataclass
62
- class ArgumentData:
63
- """
64
- Dataclass for storing the argument data.
65
- """
66
- time_data: TimeData = Field(description="time data", default=None)
67
- species_data: SpeciesData = Field(
68
- description="species name and initial concentration data")
69
- reocurring_data: ReocurringData = Field(
70
- description="""Concentration and time data of species that reoccur
71
- For example, a species whose concentration resets to a certain value
72
- after a certain time interval""")
73
- steadystate_name: str = Field(
74
- description="""An AI assigned `_` separated name of
75
- the steady state experiment based on human query""")
76
-
77
- def add_rec_events(model_object, reocurring_data):
78
- """
79
- Add reocurring events to the model.
80
- """
81
- for row in reocurring_data.data:
82
- tp, sn, sc = row.time, row.species_name, row.species_concentration
83
- basico.add_event(f'{sn}_{tp}',
84
- f'Time > {tp}',
85
- [[sn, str(sc)]],
86
- model=model_object.copasi_model)
87
-
88
- def run_steady_state(model_object, dic_species_data):
23
+ def run_steady_state(model_object,
24
+ dic_species_to_be_analyzed_before_experiment):
89
25
  """
90
26
  Run the steady state analysis.
91
27
 
92
28
  Args:
93
29
  model_object: The model object.
94
- dic_species_data: Dictionary of species data.
30
+ dic_species_to_be_analyzed_before_experiment: Dictionary of species data.
95
31
 
96
32
  Returns:
97
33
  DataFrame: The results of the steady state analysis.
@@ -99,7 +35,7 @@ def run_steady_state(model_object, dic_species_data):
99
35
  # Update the fixed model species and parameters
100
36
  # These are the initial conditions of the model
101
37
  # set by the user
102
- model_object.update_parameters(dic_species_data)
38
+ model_object.update_parameters(dic_species_to_be_analyzed_before_experiment)
103
39
  logger.log(logging.INFO, "Running steady state analysis")
104
40
  # Run the steady state analysis
105
41
  output = basico.task_steadystate.run_steadystate(model=model_object.copasi_model)
@@ -108,7 +44,30 @@ def run_steady_state(model_object, dic_species_data):
108
44
  raise ValueError("A steady state was not found")
109
45
  logger.log(logging.INFO, "Steady state analysis successful")
110
46
  # Store the steady state results in a DataFrame
111
- df_steady_state = basico.model_info.get_species(model=model_object.copasi_model)
47
+ df_steady_state = basico.model_info.get_species(model=model_object.copasi_model).reset_index()
48
+ # print (df_steady_state)
49
+ # Rename the column name to species_name
50
+ df_steady_state.rename(columns={'name': 'species_name'},
51
+ inplace=True)
52
+ # Rename the column concentration to steady_state_concentration
53
+ df_steady_state.rename(columns={'concentration': 'steady_state_concentration'},
54
+ inplace=True)
55
+ # Rename the column transition_time to steady_state_transition_time
56
+ df_steady_state.rename(columns={'transition_time': 'steady_state_transition_time'},
57
+ inplace=True)
58
+ # Drop some columns
59
+ df_steady_state.drop(columns=
60
+ [
61
+ 'initial_particle_number',
62
+ 'initial_expression',
63
+ 'expression',
64
+ 'particle_number',
65
+ 'type',
66
+ 'particle_number_rate',
67
+ 'key',
68
+ 'sbml_id',
69
+ 'display_name'],
70
+ inplace=True)
112
71
  logger.log(logging.INFO, "Steady state results with shape %s", df_steady_state.shape)
113
72
  return df_steady_state
114
73
 
@@ -118,10 +77,10 @@ class SteadyStateInput(BaseModel):
118
77
  """
119
78
  sys_bio_model: ModelData = Field(description="model data",
120
79
  default=None)
121
- arg_data: ArgumentData = Field(description=
122
- """time, species, and reocurring data
123
- as well as the steady state data""",
124
- default=None)
80
+ arg_data: ArgumentData = Field(
81
+ description="time, species, and reocurring data"
82
+ " that must be set before the steady state analysis"
83
+ " as well as the experiment name", default=None)
125
84
  tool_call_id: Annotated[str, InjectedToolCallId]
126
85
  state: Annotated[dict, InjectedState]
127
86
 
@@ -129,12 +88,10 @@ class SteadyStateInput(BaseModel):
129
88
  # Pydantic class and not having type hints can lead to unexpected behavior.
130
89
  class SteadyStateTool(BaseTool):
131
90
  """
132
- Tool for steady state analysis.
91
+ Tool to bring a model to steady state.
133
92
  """
134
93
  name: str = "steady_state"
135
- description: str = """A tool to simulate a model and perform
136
- steady state analysisto answer questions
137
- about the steady state of species."""
94
+ description: str = "A tool to bring a model to steady state."
138
95
  args_schema: Type[BaseModel] = SteadyStateInput
139
96
 
140
97
  def _run(self,
@@ -155,7 +112,7 @@ class SteadyStateTool(BaseTool):
155
112
  Returns:
156
113
  Command: The updated state of the tool.
157
114
  """
158
- logger.log(logging.INFO, "Calling steady_state tool %s, %s",
115
+ logger.log(logging.INFO, "Calling the steady_state tool %s, %s",
159
116
  sys_bio_model, arg_data)
160
117
  # print (f'Calling steady_state tool {sys_bio_model}, {arg_data}, {tool_call_id}')
161
118
  sbml_file_path = state['sbml_file_path'][-1] if len(state['sbml_file_path']) > 0 else None
@@ -164,21 +121,23 @@ class SteadyStateTool(BaseTool):
164
121
  # Prepare the dictionary of species data
165
122
  # that will be passed to the simulate method
166
123
  # of the BasicoModel class
167
- dic_species_data = {}
124
+ dic_species_to_be_analyzed_before_experiment = {}
168
125
  if arg_data:
169
126
  # Prepare the dictionary of species data
170
- if arg_data.species_data is not None:
171
- dic_species_data = dict(zip(arg_data.species_data.species_name,
172
- arg_data.species_data.species_concentration))
127
+ if arg_data.species_to_be_analyzed_before_experiment is not None:
128
+ dic_species_to_be_analyzed_before_experiment = dict(
129
+ zip(arg_data.species_to_be_analyzed_before_experiment.species_name,
130
+ arg_data.species_to_be_analyzed_before_experiment.species_concentration))
173
131
  # Add reocurring events (if any) to the model
174
132
  if arg_data.reocurring_data is not None:
175
133
  add_rec_events(model_object, arg_data.reocurring_data)
176
134
  # Run the parameter scan
177
- df_steady_state = run_steady_state(model_object, dic_species_data)
135
+ df_steady_state = run_steady_state(model_object,
136
+ dic_species_to_be_analyzed_before_experiment)
178
137
  # Prepare the dictionary of scanned data
179
138
  # that will be passed to the state of the graph
180
139
  dic_steady_state_data = {
181
- 'name': arg_data.steadystate_name,
140
+ 'name': arg_data.experiment_name,
182
141
  'source': sys_bio_model.biomodel_id if sys_bio_model.biomodel_id else 'upload',
183
142
  'tool_call_id': tool_call_id,
184
143
  'data': df_steady_state.to_dict(orient='records')
@@ -198,9 +157,9 @@ class SteadyStateTool(BaseTool):
198
157
  # Update the message history
199
158
  "messages": [
200
159
  ToolMessage(
201
- content=f'''Steady state analysis of
202
- {arg_data.steadystate_name}
203
- are ready''',
160
+ content=f"Steady state analysis of"
161
+ f" {arg_data.experiment_name}"
162
+ " was successful.",
204
163
  tool_call_id=tool_call_id
205
164
  )
206
165
  ],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aiagents4pharma
3
- Version: 1.14.0
3
+ Version: 1.14.1
4
4
  Summary: AI Agents for drug discovery, drug development, and other pharmaceutical R&D
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -1,10 +1,12 @@
1
1
  aiagents4pharma/__init__.py,sha256=5muWWIg89VHPybfxonO_5xOMJPasKNsGdQRhozDaEmk,177
2
2
  aiagents4pharma/configs/__init__.py,sha256=hNkSrXw1Ix1HhkGn_aaidr2coBYySfM0Hm_pMeRcX7k,76
3
- aiagents4pharma/configs/config.yaml,sha256=8y8uG6Dzx4-9jyb6hZ8r4lOJz5gA_sQhCiSCgXL5l7k,65
4
- aiagents4pharma/configs/talk2biomodels/__init__.py,sha256=5ah__-8XyRblwT0U1ByRigNjt_GyCheu7zce4aM-eZE,68
3
+ aiagents4pharma/configs/config.yaml,sha256=4t7obD0gOSfqnDDZZBB53ZC7zsmk7QDcM7T_1Hf1wIQ,112
4
+ aiagents4pharma/configs/talk2biomodels/__init__.py,sha256=safyFKhkd5Wlirl9dMZIHWDLTpY2oLw9wjIM7ZtLIHk,88
5
5
  aiagents4pharma/configs/talk2biomodels/agents/__init__.py,sha256=_ZoG8snICK2bidWtc2KOGs738LWg9_r66V9mOMnEb-E,71
6
6
  aiagents4pharma/configs/talk2biomodels/agents/t2b_agent/__init__.py,sha256=-fAORvyFmG2iSvFOFDixmt9OTQRR58y89uhhu2EgbA8,46
7
- aiagents4pharma/configs/talk2biomodels/agents/t2b_agent/default.yaml,sha256=Oi89_BbxfQc6SGW1pC-hyZMqOIkiAMOlNwpCa4VCXk0,327
7
+ aiagents4pharma/configs/talk2biomodels/agents/t2b_agent/default.yaml,sha256=w0ES09GSuY61x7C9FSx9auwhoGc6xVeG51roe6tT4Bk,317
8
+ aiagents4pharma/configs/talk2biomodels/tools/__init__.py,sha256=WxK7h5n39l-NSMvjLZyxDqzwWlVA6mQ69gzsbJ17vEk,72
9
+ aiagents4pharma/configs/talk2biomodels/tools/ask_question/__init__.py,sha256=-fAORvyFmG2iSvFOFDixmt9OTQRR58y89uhhu2EgbA8,46
8
10
  aiagents4pharma/talk2biomodels/__init__.py,sha256=2ICwVh1u07SZv31Jd2DKHobauOxWNWY29_Gqq3kOnNQ,159
9
11
  aiagents4pharma/talk2biomodels/agents/__init__.py,sha256=sn5-fREjMdEvb-OUan3iOqrgYGjplNx3J8hYOaW0Po8,128
10
12
  aiagents4pharma/talk2biomodels/agents/t2b_agent.py,sha256=13aSlBZBWtjXOLq7c99u33c923fi2Ab0VW--eX5gF-o,3366
@@ -16,23 +18,30 @@ aiagents4pharma/talk2biomodels/models/__init__.py,sha256=5fTHHm3PVloYPNKXbgNlcPg
16
18
  aiagents4pharma/talk2biomodels/models/basico_model.py,sha256=PH25FTOuUjsmw_UUxoRb-4kptOYpicEn4GqS0phS3nk,4807
17
19
  aiagents4pharma/talk2biomodels/models/sys_bio_model.py,sha256=JeoiGQAvQABHnG0wKR2XBmmxqQdtgO6kxaLDUTUmr1s,2001
18
20
  aiagents4pharma/talk2biomodels/states/__init__.py,sha256=YLg1-N0D9qyRRLRqwqfLCLAqZYDtMVZTfI8Y0b_4tbA,139
19
- aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py,sha256=44vRJwc2NlVLQQr1Smipr02YzXHOyqUVSNlg7rFjli0,950
21
+ aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py,sha256=WriIk_MH9XyUD-WAcIFVjHZMegwrh2-zQpXleTzpHEU,1332
20
22
  aiagents4pharma/talk2biomodels/tests/__init__.py,sha256=Jbw5tJxSrjGoaK5IX3pJWDCNzhrVQ10lkYq2oQ_KQD8,45
21
23
  aiagents4pharma/talk2biomodels/tests/test_api.py,sha256=7Kz2r5F5tjmn3F0LoM33oP-21W633936YHiyf5toGg0,1716
24
+ aiagents4pharma/talk2biomodels/tests/test_ask_question.py,sha256=yRkKK9HLB1bGGWm_WwOckwaUmmRfRAD9z2NFFGLIGTY,1560
22
25
  aiagents4pharma/talk2biomodels/tests/test_basico_model.py,sha256=y82fpTJMPHwtXxlle1cGQ_2Bewwpxi0aJSVrVAYLhN0,2060
23
- aiagents4pharma/talk2biomodels/tests/test_get_annotation.py,sha256=lgdWNl6g1hiTcUbcmgn2bUk5_-8EUpSNa0MMpIMGeDA,7301
24
- aiagents4pharma/talk2biomodels/tests/test_langgraph.py,sha256=QLAL4nmHrioTD-w-9OE0wQi5JdWJJ59PejNbDzCSvw4,15170
26
+ aiagents4pharma/talk2biomodels/tests/test_get_annotation.py,sha256=mKOacH28OB6xpFPygAlhBUQS93gnI5j-jAfSGu6uQMI,7465
27
+ aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py,sha256=6kChSc_MCnzXlDao_R8pKdhIELlg3MZrUa7hg8piJ4E,883
28
+ aiagents4pharma/talk2biomodels/tests/test_integration.py,sha256=ZsBXWSFLIcdzrO8obLJx8Ib2f9AAW3BI7H9Eqjdc5to,5057
29
+ aiagents4pharma/talk2biomodels/tests/test_param_scan.py,sha256=vRbnn4uVWFbfZbU4gVCjHi5WDCUrErut8ElzAPE5y84,2648
30
+ aiagents4pharma/talk2biomodels/tests/test_search_models.py,sha256=8ODFubLxWYD3I3KQWuUnJ2GZRzMjFpXInFBLxKxG_ME,929
31
+ aiagents4pharma/talk2biomodels/tests/test_simulate_model.py,sha256=GjLE1DZpcKUAFSmoHD86vkfK0b5LJPM8a4WYyraazig,1487
32
+ aiagents4pharma/talk2biomodels/tests/test_steady_state.py,sha256=zt15KQoQku6jyzvpJXwINGTyhEnQl8wX81ueHlxnUCA,3467
25
33
  aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py,sha256=HSmBBViMi0jYf4gWX21IbppAfDzG0nr_S3KtKS9fZVQ,2165
26
34
  aiagents4pharma/talk2biomodels/tools/__init__.py,sha256=ZiOdSFaeHW6y3hdtBfsKf0vSb3MuCLuy9MDyjARggb4,322
27
- aiagents4pharma/talk2biomodels/tools/ask_question.py,sha256=qpltsgyLFFwLYQeapQHASFRDCNiWsJkmTH_sUrfJ_Fg,3708
35
+ aiagents4pharma/talk2biomodels/tools/ask_question.py,sha256=hWXg7o0sTMDWH1ZnxtashTALvXpvNoaomfcniEhw-Bw,4684
28
36
  aiagents4pharma/talk2biomodels/tools/custom_plotter.py,sha256=HWwKTX3o4dk0GcRVTO2hPrFSu98mtJ4TKC_hbHXOe1c,4018
29
- aiagents4pharma/talk2biomodels/tools/get_annotation.py,sha256=Ifbbz08YFI1ifAy3t0tYkr45-k7inO8lZePvCSe5ZfA,11835
37
+ aiagents4pharma/talk2biomodels/tools/get_annotation.py,sha256=jCGkidvafuk1YzAH9GFwaVUF35maXTjg6XqBg_zLk44,12475
30
38
  aiagents4pharma/talk2biomodels/tools/get_modelinfo.py,sha256=qA-4FOI-O728Nmn7s8JJ8HKwxvA9MZbst7NkPKTAMV4,5391
39
+ aiagents4pharma/talk2biomodels/tools/load_arguments.py,sha256=bffNIlBDTCSFYiZprA73yi8Jbb8z3Oh2decVNh1UnZc,4162
31
40
  aiagents4pharma/talk2biomodels/tools/load_biomodel.py,sha256=pyVzLQoMnuJYEwsjeOlqcUrbU1F1Z-pNlgkhFaoKpy0,689
32
- aiagents4pharma/talk2biomodels/tools/parameter_scan.py,sha256=aIyL_m46s3Q74ieJOZjZBM34VCjBKSMpEtckhdZofbE,12139
41
+ aiagents4pharma/talk2biomodels/tools/parameter_scan.py,sha256=aNh94LgBgVXBIczuNkbSsOZ9j54YVEdZWmZbZr7Nk8k,12465
33
42
  aiagents4pharma/talk2biomodels/tools/search_models.py,sha256=Iq2ddofOOfZYtAurCISq3bAq5rbwB3l_rL1lgEFyFCI,2653
34
- aiagents4pharma/talk2biomodels/tools/simulate_model.py,sha256=sWmFVnVvJbdXXTqn_7gQl5UW0tv4FyU5yLXWLweLs_M,7059
35
- aiagents4pharma/talk2biomodels/tools/steady_state.py,sha256=itUXFTYO525D695LQlGb1ObwSuvHk0A5mXtgdCproqo,8102
43
+ aiagents4pharma/talk2biomodels/tools/simulate_model.py,sha256=qXs9lg9XgA7EaRiX3wBS8w_ug8tI-G3pzhcRg6dTRio,5060
44
+ aiagents4pharma/talk2biomodels/tools/steady_state.py,sha256=j3ckuNlUtv7lT922MbN0JhT9H0JpWAdx2mLPwao6uu8,7123
36
45
  aiagents4pharma/talk2cells/__init__.py,sha256=zmOP5RAhabgKIQP-W4P4qKME2tG3fhAXM3MeO5_H8kE,120
37
46
  aiagents4pharma/talk2cells/agents/__init__.py,sha256=38nK2a_lEFRjO3qD6Fo9a3983ZCYat6hmJKWY61y2Mo,128
38
47
  aiagents4pharma/talk2cells/agents/scp_agent.py,sha256=gDMfhUNWHa_XWOqm1Ql6yLAdI_7bnIk5sRYn43H2sYk,3090
@@ -84,8 +93,8 @@ aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py,sh
84
93
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py,sha256=tW426knki2DBIHcWyF_K04iMMdbpIn_e_TpPmTgz2dI,113
85
94
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py,sha256=Bx8x6zzk5614ApWB90N_iv4_Y_Uq0-KwUeBwYSdQMU4,924
86
95
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py,sha256=8eoxR-VHo0G7ReQIwje7xEhE-SJlHdef7_wJRpnvFIc,4116
87
- aiagents4pharma-1.14.0.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
88
- aiagents4pharma-1.14.0.dist-info/METADATA,sha256=yGCN0sRc2dixfRh-UAPk2uLZLBjb5WUaSd0VwROU7qY,8609
89
- aiagents4pharma-1.14.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
90
- aiagents4pharma-1.14.0.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
91
- aiagents4pharma-1.14.0.dist-info/RECORD,,
96
+ aiagents4pharma-1.14.1.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
97
+ aiagents4pharma-1.14.1.dist-info/METADATA,sha256=zwewL1DN0qEv3L7l901tNdc6PaX1wrKvRIkZ0dFIqHU,8609
98
+ aiagents4pharma-1.14.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
99
+ aiagents4pharma-1.14.1.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
100
+ aiagents4pharma-1.14.1.dist-info/RECORD,,