@@ -388,66 +388,76 @@ def GetStratigraphicLog(
388388):
389389 response = {"errorFlag" : False }
390390 resp = GetStratigraphicInformationGroup (root )
391+
391392 if resp ["errorFlag" ]:
392- response = resp
393- else :
394- siGroup = resp ["value" ]
395- data = []
393+ return resp
394+ siGroup = resp ["value" ]
395+ data = []
396+
397+ try :
398+ # Get max valid index
396399 maxValidIndex = min (
397400 siGroup .dimensions ["index" ].size , siGroup .getncattr ("index_MaxValid" )
398401 )
399- thickness_calculator_data = []
400- thickness_calculator_active_flags = []
401-
402- # Select all option
402+
403+ # Check if variables exist in the group
404+ if "thicknessCalculator" not in siGroup .variables or "thicknessCalculatorActiveFlags" not in siGroup .variables :
405+ errStr = "Missing 'thicknessCalculator' or 'thicknessCalculatorActiveFlags' in the NetCDF file."
406+ if verbose :
407+ print (errStr )
408+ return {"errorFlag" : True , "errorString" : errStr }
409+
410+ # Fetch thickness calculator and active flags
411+ thickness_calculator_data = siGroup .variables ["thicknessCalculator" ][:]
412+ thickness_calculator_active_flags = siGroup .variables ["thicknessCalculatorActiveFlags" ][:]
413+
414+ # Select all layers
403415 if (
404- indexList == []
416+ not indexList
405417 and len (indexRange ) == 2
406- and indexRange [0 ] == 0
407- and indexRange [1 ] == 0
418+ and indexRange == (0 , 0 )
408419 ):
409- # Select all
410- for i in range (0 , maxValidIndex ):
411- data .append ((siGroup .variables .get ("stratigraphicLayers" )[i ]))
412- thickness_calculator_data .append (siGroup .variables .get ("thicknessCalculator" )[:])
413- thickness_calculator_active_flags .append (siGroup .variables .get ("thicknessCalculatorActiveFlags" )[:])
414-
415- # Select based on list of indices option
416- elif indexList != []:
420+ for i in range (maxValidIndex ):
421+ data .append (siGroup .variables ["stratigraphicLayers" ][i ])
422+
423+ # Select based on list of indices
424+ elif indexList :
417425 for i in indexList :
418- if int (i ) >= 0 and int (i ) < maxValidIndex :
419- data .append ((siGroup .variables .get ("stratigraphicLayers" )[i ]))
420- thickness_calculator_data .append (siGroup .variables .get ("thicknessCalculator" )[:])
421- thickness_calculator_active_flags .append (siGroup .variables .get ("thicknessCalculatorActiveFlags" )[:])
422-
423- # Select based on indices range option
426+ if 0 <= int (i ) < maxValidIndex :
427+ data .append (siGroup .variables ["stratigraphicLayers" ][i ])
428+
429+ # Select based on index range
424430 elif (
425431 len (indexRange ) == 2
426- and indexRange [0 ] >= 0
427- and indexRange [1 ] >= indexRange [0 ]
432+ and 0 <= indexRange [0 ] < indexRange [1 ] <= maxValidIndex
428433 ):
429434 for i in range (indexRange [0 ], indexRange [1 ]):
430- if int (i ) >= 0 and int (i ) < maxValidIndex :
431- data .append ((siGroup .variables .get ("stratigraphicLayers" )[i ]))
432- thickness_calculator_data .append (siGroup .variables .get ("thicknessCalculator" )[:])
433- thickness_calculator_active_flags .append (siGroup .variables .get ("thicknessCalculatorActiveFlags" )[:])
434-
435+ data .append (siGroup .variables ["stratigraphicLayers" ][i ])
436+
435437 else :
436- errStr = "Non-implemented filter option"
438+ errStr = "Invalid filter option for stratigraphic log retrieval. "
437439 if verbose :
438440 print (errStr )
439- response = {"errorFlag" : True , "errorString" : errStr }
440- return response
441+ return {"errorFlag" : True , "errorString" : errStr }
441442
443+ # Construct response
442444 response ["value" ] = {
443445 "stratigraphicLayers" : data ,
444- "thicknessCalculatorData" : thickness_calculator_data ,
445- "thicknessCalculatorActiveFlags" : thickness_calculator_active_flags ,
446+ "thicknessCalculatorData" : thickness_calculator_data . tolist (),
447+ "thicknessCalculatorActiveFlags" : thickness_calculator_active_flags . tolist (),
446448 }
449+
450+ except Exception as e :
451+ errStr = f"(ERROR) Exception during stratigraphic log retrieval: { str (e )} "
452+ if verbose :
453+ print (errStr )
454+ return {"errorFlag" : True , "errorString" : errStr }
455+
447456 return response
448457
449458
450459
460+
451461# Set drillhole log
452462def SetDrillholeLog (root , data , append = False , verbose = False ):
453463 """
0 commit comments