Skip to content

Commit

Permalink
remove debug print and add usage example notebook
Browse files Browse the repository at this point in the history
  • Loading branch information
KedoKudo committed Feb 17, 2025
1 parent a266b93 commit 8626668
Show file tree
Hide file tree
Showing 2 changed files with 287 additions and 6 deletions.
287 changes: 287 additions & 0 deletions notebook/sammy.param/example.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,287 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Overview\n",
"\n",
"This notebook demonstrates how to use the `sammy.paramter` module to load, construct and manipulate the parameter file (`*.par`) of the SAMMY suite."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pathlib\n",
"import tempfile\n",
"\n",
"from pleiades.sammy.parfile import SammyParameterFile"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Construct a parameter object manually\n",
"\n",
"Let's build a simple parameter file from scratch."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"entries=[ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=1), ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=2)]\n"
]
}
],
"source": [
"from pleiades.sammy.parameters.helper import VaryFlag\n",
"from pleiades.sammy.parameters.resonance import ResonanceCard, ResonanceEntry\n",
"\n",
"resonance_0 = ResonanceEntry(\n",
" resonance_energy=0.0253,\n",
" capture_width=0.1,\n",
" channel1_width=0.2,\n",
" channel2_width=0.3,\n",
" channel3_width=0.4,\n",
" vary_energy=VaryFlag.NO,\n",
" vary_capture_width=VaryFlag.NO,\n",
" vary_channel1_width=VaryFlag.YES,\n",
" vary_channel2_width=VaryFlag.NO,\n",
" vary_channel3_width=VaryFlag.YES,\n",
" igroup=1,\n",
")\n",
"\n",
"resonance_1 = ResonanceEntry(\n",
" resonance_energy=0.0253,\n",
" capture_width=0.1,\n",
" channel1_width=0.2,\n",
" channel2_width=0.3,\n",
" channel3_width=0.4,\n",
" vary_energy=VaryFlag.NO,\n",
" vary_capture_width=VaryFlag.NO,\n",
" vary_channel1_width=VaryFlag.NO,\n",
" vary_channel2_width=VaryFlag.YES,\n",
" vary_channel3_width=VaryFlag.NO,\n",
" igroup=2,\n",
")\n",
"\n",
"resonance_card = ResonanceCard(entries=[resonance_0, resonance_1])\n",
"\n",
"print(resonance_card)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"parameters=RadiusParameters(effective_radius=1.0, true_radius=2.0, channel_mode=1, vary_effective=<VaryFlag.YES: 1>, vary_true=<VaryFlag.NO: 0>, spin_groups=[1, 2, 3], channels=[1, 2, 3]) particle_pair=None orbital_momentum=None relative_uncertainty=None absolute_uncertainty=None\n"
]
}
],
"source": [
"from pleiades.sammy.parameters.radius import RadiusCard, RadiusParameters\n",
"\n",
"radius_parameters = RadiusParameters(\n",
" effective_radius=1.0,\n",
" true_radius=2.0,\n",
" channel_mode=1,\n",
" vary_effective=VaryFlag.YES,\n",
" vary_true=VaryFlag.NO,\n",
" spin_groups=[1, 2, 3],\n",
" channels=[1, 2, 3],\n",
")\n",
"\n",
"radius_card = RadiusCard(parameters=radius_parameters)\n",
"\n",
"print(radius_card)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"now let's create a parameter object to hold everything"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fudge=0.2 resonance=ResonanceCard(entries=[ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=1), ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=2)]) external_r=None broadening=None unused_correlated=None normalization=None radius=RadiusCard(parameters=RadiusParameters(effective_radius=1.0, true_radius=2.0, channel_mode=1, vary_effective=<VaryFlag.YES: 1>, vary_true=<VaryFlag.NO: 0>, spin_groups=[1, 2, 3], channels=[1, 2, 3]), particle_pair=None, orbital_momentum=None, relative_uncertainty=None, absolute_uncertainty=None) data_reduction=None orres=None paramagnetic=None user_resolution=None isotope=None\n"
]
}
],
"source": [
"par_file = SammyParameterFile(\n",
" fudge=0.2,\n",
" resonance=resonance_card,\n",
" radius=radius_card,\n",
")\n",
"\n",
"print(par_file)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can also view the string format before writing to a file"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 1\n",
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 2\n",
"\n",
"0.2000 \n",
"RADII are in KEY-WORD format\n",
"Radius= 1.0 2.0\n",
"Flags= 1 0\n",
"Group= 1 Channels= 1 2 3\n",
"Group= 2 Channels= 1 2 3\n",
"Group= 3 Channels= 1 2 3\n",
"\n"
]
}
],
"source": [
"print(par_file.to_string())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"then we can write the parameter object to a file"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 1\n",
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 2\n",
"\n",
"0.2000 \n",
"RADII are in KEY-WORD format\n",
"Radius= 1.0 2.0\n",
"Flags= 1 0\n",
"Group= 1 Channels= 1 2 3\n",
"Group= 2 Channels= 1 2 3\n",
"Group= 3 Channels= 1 2 3\n",
"\n"
]
}
],
"source": [
"with tempfile.TemporaryDirectory() as tmpdir:\n",
" par_file_path = pathlib.Path(tmpdir) / \"sammy.par\"\n",
" par_file.to_file(par_file_path)\n",
"\n",
" with open(par_file_path, \"r\") as f:\n",
" print(f.read())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load from string/file\n",
"\n",
"We can also directly load a parameter file from a string or a file."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fudge=0.2 resonance=ResonanceCard(entries=[ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=1), ResonanceEntry(resonance_energy=0.0253, capture_width=0.1, channel1_width=0.2, channel2_width=0.3, channel3_width=0.4, vary_energy=<VaryFlag.NO: 0>, vary_capture_width=<VaryFlag.NO: 0>, vary_channel1=<VaryFlag.NO: 0>, vary_channel2=<VaryFlag.NO: 0>, vary_channel3=<VaryFlag.NO: 0>, igroup=2)]) external_r=None broadening=None unused_correlated=None normalization=None radius=RadiusCard(parameters=RadiusParameters(effective_radius=1.0, true_radius=2.0, channel_mode=1, vary_effective=<VaryFlag.YES: 1>, vary_true=<VaryFlag.NO: 0>, spin_groups=[3], channels=[1, 2, 3]), particle_pair=None, orbital_momentum=None, relative_uncertainty=None, absolute_uncertainty=None) data_reduction=None orres=None paramagnetic=None user_resolution=None isotope=None\n",
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 1\n",
" 2.5300E-02 1.0000E-01 2.0000E-01 3.0000E-01 4.0000E-01 0 0 0 0 0 2\n",
"\n",
"0.2000 \n",
"RADII are in KEY-WORD format\n",
"Radius= 1.0 2.0\n",
"Flags= 1 0\n",
"Group= 3 Channels= 1 2 3\n",
"\n"
]
}
],
"source": [
"with tempfile.TemporaryDirectory() as tmpdir:\n",
" par_file_path = pathlib.Path(tmpdir) / \"sammy.par\"\n",
" par_file.to_file(par_file_path)\n",
"\n",
" par_file_read = SammyParameterFile.from_file(par_file_path)\n",
" print(par_file_read)\n",
" print(par_file_read.to_string())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "pleiades-j7m2QWN6-py3.13",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
6 changes: 0 additions & 6 deletions src/pleiades/sammy/parfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,15 +214,9 @@ def from_string(cls, content: str) -> "SammyParameterFile":
if not group: # Skip empty groups
continue

for line in group:
print(line)

# Check first line for header to determine card type
card_type, card_class = cls._get_card_class_with_header(group[0])

print(card_type, card_class)
print("-----")

if card_class:
# Process card with header
try:
Expand Down

0 comments on commit 8626668

Please sign in to comment.