From 5982a56cd7072c321306afad3c01c84710079066 Mon Sep 17 00:00:00 2001 From: Sylvain Tricot Date: Mon, 23 Jun 2025 13:58:23 +0200 Subject: [PATCH] Fix log file parameter in calculator for spec The 'txt' keyword of the calculator is working for spec. This option is still not working for phagen due to stdout descriptor hardcoded in the Fortran code of phagen. Will fix it later. --- src/msspec/calculator.py | 12 +++++++----- src/msspec/spec/fortran/common_sub/read_data.f | 3 +++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/msspec/calculator.py b/src/msspec/calculator.py index af2b6f4..52c2f9e 100644 --- a/src/msspec/calculator.py +++ b/src/msspec/calculator.py @@ -17,7 +17,7 @@ # along with this msspec. If not, see . # # Source file : src/msspec/calculator.py -# Last modified: Thu, 13 Mar 2025 11:20:31 +0100 +# Last modified: Mon, 23 Jun 2025 13:58:23 +0200 # Committed by : Sylvain Tricot @@ -113,13 +113,14 @@ class _MSCALCULATOR(Calculator): def __init__(self, spectroscopy='PED', algorithm='expansion', polarization=None, dichroism=None, spinpol=False, folder='./calc', txt='-', **kwargs): + self.txt = txt stdout = sys.stdout - if isinstance(txt, str) and txt != '-': - stdout = open(txt, 'w') + #if isinstance(txt, str) and txt != '-': + # stdout = open(txt, 'w') #elif isinstance(txt, buffer): # stdout = txt - elif txt == None: - stdout = open('/dev/null', 'a') + #elif txt == None: + # stdout = open('/dev/null', 'a') #set_log_output(stdout) ######################################################################## LOGGER.debug('Initialization of %s', self.__class__.__name__) @@ -172,6 +173,7 @@ class _MSCALCULATOR(Calculator): self.global_parameters, self.phagen_parameters, self.spec_parameters) # initialize all parameters with defaults values + self.spec_parameters.output_log = txt LOGGER.info("Set default values =========================================") for p in (list(self.global_parameters) + list(self.muffintin_parameters) + diff --git a/src/msspec/spec/fortran/common_sub/read_data.f b/src/msspec/spec/fortran/common_sub/read_data.f index adee88e..38bb40b 100644 --- a/src/msspec/spec/fortran/common_sub/read_data.f +++ b/src/msspec/spec/fortran/common_sub/read_data.f @@ -922,6 +922,9 @@ C READ(ICOM,34) OUTFILE2,IUO2 READ(ICOM,34) OUTFILE3,IUO3 READ(ICOM,34) OUTFILE4,IUO4 + IF(.NOT.(OUTFILE1.EQ.'-')) THEN + OPEN(UNIT=IUO1, FILE=OUTFILE1, STATUS='UNKNOWN') + ENDIF C IUSCR=MAX0(ICOM,IUI2,IUI3,IUI4,IUI5,IUI6,IUI7,IUI8,IUI9,IUO1,IUO2, &IUO3,IUO4)+1