Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"id": "7cebdc29",
"metadata": {},
"outputs": [],
Expand Down Expand Up @@ -35,12 +35,12 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"id": "9a256639",
"metadata": {},
"outputs": [],
"source": [
"recording_ids = [\"d6bd64e6-6371-4649-a013-9192923a1e60\"] # can have several ids"
"recording_ids = [\"d6bd64e6-6371-4649-a013-9192923a1e60\"]"
]
},
{
Expand All @@ -53,31 +53,28 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"id": "8e26f8b0",
"metadata": {},
"outputs": [],
"source": [
"icm_conf = ion_channel_modeling.IonChannelFittingScanConfig(\n",
" initialize=ion_channel_modeling.IonChannelFittingScanConfig.Initialize(\n",
" recordings=[IonChannelRecordingFromID(id_str=id_) for id_ in recording_ids],\n",
" suffix=\"Kv1_1\",\n",
" ion=\"k\",\n",
" temperature=35,\n",
" ),\n",
" recordings=tuple([IonChannelRecordingFromID(id_str=recording_id) for recording_id in recording_ids]),\n",
" # ion_channel_name=\"Kv1_1\"\n",
" ),\n",
" info=Info(\n",
" campaign_name=\"Ion Channel Modeling Campaigne Test 001\",\n",
" campaign_description=\"Just testing\",\n",
" ),\n",
" minf_eq=ion_channel_equations.SigFitMInf(),\n",
" mtau_eq=ion_channel_equations.ThermoFitMTauV2(),\n",
" hinf_eq=ion_channel_equations.SigFitHInf(),\n",
" htau_eq=ion_channel_equations.SigFitHTau(),\n",
" gate_exponents=ion_channel_modeling.IonChannelFittingScanConfig.GateExponents(\n",
" equations=ion_channel_modeling.IonChannelFittingScanConfig.Equations(\n",
" mtau_eq=\"Double exponential denominator with slope constraint\",\n",
" hinf_eq=\"Sigmoid\",\n",
" htau_eq=\"Sigmoid\",\n",
" minf_eq=\"Sigmoid\",\n",
" m_power=1,\n",
" h_power=1,\n",
" ),stimulus_voltage_exclusion=ion_channel_modeling.IonChannelFittingScanConfig.StimulusVoltageExclusion(), # here the default values are used\n",
" stimulus_timings=ion_channel_modeling.IonChannelFittingScanConfig.StimulusTimings(), # here the default values are used\n",
" )\n",
")\n",
"\n",
"# Validated Config\n",
Expand All @@ -94,30 +91,10 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"id": "32853aaf",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'IonChannelFittingSingleConfig' object has no attribute '_single_entity'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m~/venvs/venv-py312/lib/python3.12/site-packages/pydantic/main.py:970\u001b[0m, in \u001b[0;36mBaseModel.__getattr__\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 968\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 969\u001b[0m \u001b[38;5;66;03m# Note: self.__pydantic_private__ cannot be None if self.__private_attributes__ has items\u001b[39;00m\n\u001b[0;32m--> 970\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__pydantic_private__\u001b[49m\u001b[43m[\u001b[49m\u001b[43mitem\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 971\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n",
"\u001b[0;31mKeyError\u001b[0m: '_single_entity'",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[6], line 14\u001b[0m\n\u001b[1;32m 12\u001b[0m grid_scan\u001b[38;5;241m.\u001b[39mmultiple_value_parameters(display\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 13\u001b[0m grid_scan\u001b[38;5;241m.\u001b[39mcoordinate_parameters(display\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m---> 14\u001b[0m \u001b[43mgrid_scan\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdb_client\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdb_client\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m obi\u001b[38;5;241m.\u001b[39mrun_tasks_for_generated_scan(grid_scan, db_client\u001b[38;5;241m=\u001b[39mdb_client)\n",
"File \u001b[0;32m~/softwares/obi-one/obi_one/core/scan_generation.py:248\u001b[0m, in \u001b[0;36mScanGenerationTask.execute\u001b[0;34m(self, db_client)\u001b[0m\n\u001b[1;32m 246\u001b[0m \u001b[38;5;66;03m# Create the campaign generation entity\u001b[39;00m\n\u001b[1;32m 247\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m db_client \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mform, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcreate_campaign_generation_entity\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m--> 248\u001b[0m single_entities \u001b[38;5;241m=\u001b[39m [\u001b[43msc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msingle_entity\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m sc \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_single_configs]\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mform\u001b[38;5;241m.\u001b[39mcreate_campaign_generation_entity(single_entities, db_client\u001b[38;5;241m=\u001b[39mdb_client)\n",
"File \u001b[0;32m~/venvs/venv-py312/lib/python3.12/site-packages/pydantic/main.py:988\u001b[0m, in \u001b[0;36mBaseModel.__getattr__\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 986\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 987\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, item):\n\u001b[0;32m--> 988\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getattribute__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mitem\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Raises AttributeError if appropriate\u001b[39;00m\n\u001b[1;32m 989\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 990\u001b[0m \u001b[38;5;66;03m# this is the current error\u001b[39;00m\n\u001b[1;32m 991\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m)\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m object has no attribute \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mitem\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n",
"File \u001b[0;32m~/softwares/obi-one/obi_one/scientific/tasks/ion_channel_modeling.py:404\u001b[0m, in \u001b[0;36mIonChannelFittingSingleConfig.single_entity\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 402\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 403\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msingle_entity\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m--> 404\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_single_entity\u001b[49m\n",
"File \u001b[0;32m~/venvs/venv-py312/lib/python3.12/site-packages/pydantic/main.py:972\u001b[0m, in \u001b[0;36mBaseModel.__getattr__\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 970\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_private__[item] \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 971\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[0;32m--> 972\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m)\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m object has no attribute \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mitem\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 973\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 974\u001b[0m \u001b[38;5;66;03m# `__pydantic_extra__` can fail to be set if the model is not yet fully initialized.\u001b[39;00m\n\u001b[1;32m 975\u001b[0m \u001b[38;5;66;03m# See `BaseModel.__repr_args__` for more details\u001b[39;00m\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
"\u001b[0;31mAttributeError\u001b[0m: 'IonChannelFittingSingleConfig' object has no attribute '_single_entity'"
]
}
],
"outputs": [],
"source": [
"import tempfile\n",
"\n",
Expand All @@ -127,9 +104,9 @@
" \"\"\"\n",
" Very strange issue with adding assets when a relative path is used here. Need to look into after CNS.\n",
" \"\"\"\n",
" # grid_scan = obi.GridScanGenerationTask(form=validated_sim_conf, coordinate_directory_option=\"ZERO_INDEX\", output_root='../../obi-output/circuit_simulations/grid_scan')\n",
" grid_scan = obi.GridScanGenerationTask(form=validated_icm_conf, coordinate_directory_option=\"ZERO_INDEX\", output_root='../../../../obi-output/ion_channel_fitting')\n",
" # grid_scan = obi.GridScanGenerationTask(form=validated_icm_conf, coordinate_directory_option=\"ZERO_INDEX\", output_root='/Users/james/Documents/obi/code/obi-output/circuit_simulations/grid_scan')\n",
" grid_scan = obi.GridScanGenerationTask(form=validated_icm_conf, coordinate_directory_option=\"ZERO_INDEX\", output_root=temp_dir)\n",
" # grid_scan = obi.GridScanGenerationTask(form=validated_icm_conf, coordinate_directory_option=\"ZERO_INDEX\", output_root=temp_dir)\n",
" grid_scan.multiple_value_parameters(display=True)\n",
" grid_scan.coordinate_parameters(display=True)\n",
" grid_scan.execute(db_client=db_client)\n",
Expand All @@ -146,18 +123,10 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"id": "29d8c336",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error 500: {\"detail\":\"'CircuitSimulationSingleConfig' object has no attribute 'output_root'\"}\n"
]
}
],
"outputs": [],
"source": [
"import requests\n",
"\n",
Expand Down Expand Up @@ -224,7 +193,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "venv-py312",
"display_name": "obi-one (3.12.9)",
"language": "python",
"name": "python3"
},
Expand All @@ -238,7 +207,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.8"
"version": "3.12.9"
}
},
"nbformat": 4,
Expand Down
Loading
Loading