Added the compute function.
This commit is contained in:
parent
88436fabdf
commit
a28696d2a7
|
@ -21,3 +21,4 @@
|
||||||
# Committed by : Sylvain Tricot <sylvain.tricot@univ-rennes1.fr> 1645806435 +0100
|
# Committed by : Sylvain Tricot <sylvain.tricot@univ-rennes1.fr> 1645806435 +0100
|
||||||
|
|
||||||
from msspec_dfm.version import __version__
|
from msspec_dfm.version import __version__
|
||||||
|
from msspec_dfm.compute import compute
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# coding: utf-8
|
||||||
|
#
|
||||||
|
# Copyright © 2022 - Rennes Physics Institute
|
||||||
|
#
|
||||||
|
# This file is part of MsSpec-DFM.
|
||||||
|
#
|
||||||
|
# MsSpec-DFM is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
# MsSpec-DFM is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with MsSpec-DFM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# Source file : src/python/msspec_dfm/version.py
|
||||||
|
# Last modified: Fri, 25 Feb 2022 17:27:32 +0100
|
||||||
|
# Committed by : Sylvain Tricot <sylvain.tricot@univ-rennes1.fr> 1645806435 +0100
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from tempfile import NamedTemporaryFile, TemporaryDirectory
|
||||||
|
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from msspec_dfm.input_file import InputFile
|
||||||
|
from msspec_dfm.eps import epsilon
|
||||||
|
|
||||||
|
from contextlib import redirect_stdout
|
||||||
|
|
||||||
|
def compute(filename=None, folder=None, logfile='-', **parameters):
|
||||||
|
# If filename is None, a temporary name is provided
|
||||||
|
if filename is None:
|
||||||
|
filename = NamedTemporaryFile().name
|
||||||
|
|
||||||
|
# If folder is None, a temporary name is provided
|
||||||
|
if folder is None:
|
||||||
|
folder = TemporaryDirectory().name
|
||||||
|
|
||||||
|
if logfile != '-':
|
||||||
|
sys.stdout.flush()
|
||||||
|
old_fd = os.dup(1)
|
||||||
|
os.close(1)
|
||||||
|
os.open(logfile, os.O_WRONLY|os.O_CREAT)
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
input_file = InputFile(filename, **parameters)
|
||||||
|
input_file.write()
|
||||||
|
epsilon(filename, folder)
|
||||||
|
for root, dirs, files in os.walk(folder):
|
||||||
|
for f in files:
|
||||||
|
data[os.path.splitext(f)[0]] = np.loadtxt(os.path.join(root, f))
|
||||||
|
|
||||||
|
if logfile != '-':
|
||||||
|
os.close(1)
|
||||||
|
os.dup(old_fd)
|
||||||
|
os.close(old_fd)
|
||||||
|
|
||||||
|
return data
|
|
@ -260,14 +260,18 @@ class InputFile:
|
||||||
'I_TI' : (0, '10d'),
|
'I_TI' : (0, '10d'),
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, filename):
|
def __init__(self, filename, **parameters):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
self.parameters = self.defaults
|
||||||
|
for key, value in parameters.items():
|
||||||
|
fmt = self.parameters[key][1]
|
||||||
|
self.parameters.update({key:(value, fmt)})
|
||||||
|
|
||||||
|
|
||||||
def _stack(self, *keys, comments=""):
|
def _stack(self, *keys, comments=""):
|
||||||
params = []
|
params = []
|
||||||
for key in keys:
|
for key in keys:
|
||||||
value, fmt = self.defaults[key]
|
value, fmt = self.parameters[key]
|
||||||
params.append((key, value, fmt))
|
params.append((key, value, fmt))
|
||||||
line = [' ',] * 49
|
line = [' ',] * 49
|
||||||
labels = []
|
labels = []
|
||||||
|
@ -299,7 +303,7 @@ class InputFile:
|
||||||
return ''.join(line)
|
return ''.join(line)
|
||||||
|
|
||||||
|
|
||||||
def write(self, **kwargs):
|
def write(self):
|
||||||
content = ""
|
content = ""
|
||||||
content += " ******************************************************************************\n"
|
content += " ******************************************************************************\n"
|
||||||
content += " * MsSpec DIELECTRIC FUNCTION MODULE *\n"
|
content += " * MsSpec DIELECTRIC FUNCTION MODULE *\n"
|
||||||
|
@ -487,6 +491,8 @@ class InputFile:
|
||||||
content += " *============================================================================*\n"
|
content += " *============================================================================*\n"
|
||||||
content += " ******************************************************************************\n"
|
content += " ******************************************************************************\n"
|
||||||
|
|
||||||
os.makedirs(os.path.dirname(self.filename), exist_ok=True)
|
abs_path = os.path.abspath(self.filename)
|
||||||
|
dir_path = os.path.dirname(abs_path)
|
||||||
|
os.makedirs(dir_path, exist_ok=True)
|
||||||
with open(self.filename, 'w') as fd:
|
with open(self.filename, 'w') as fd:
|
||||||
fd.write(content)
|
fd.write(content)
|
||||||
|
|
Loading…
Reference in New Issue