Having an issue with Iolite, the data files all load in correctly and work okay but when I try to import the log files that's where issues start.
One of two things happen:

  • the file loads in fine, but it seems to believe that the entire analysis of 10hrs was just the first sample on the log file. There are supposed to be 287 samples but I have the data of all 287 down as sample 1 and doesn't even show any other sample
  • the file doesn't load in and just says arma::memory::acquire(): requested size is too large

An Element.
Will send the files now

Thank you for sending the files!

It would appear that it is failing to load properly because the laser state remains "On" for pretty well the entire log. iolite looks for changes in the laser state to figure out when ablation is taking place. My guess is that your system is firing the laser continuously and using a beam stop to control when to ablate. Unfortunately, there is no information in the log regarding beam stop status, so we can't work out when each sample is being ablated.

For such laser logs, it is relatively easy to write a python script that will import the log for you by making some assumptions about the timing. I did this already as below but was unable to test it because of a problem with your data files. They load fine in iolite, but the date/time stamps in the files do not include seconds or milliseconds. Being rounded to minutes is simply not good enough when trying to synchronize with the laser log which includes milliseconds.

So, there a couple of things to look into before you'll be able to use laser logs successfully:

  1. The date/time stamp of your data files. If you can't change the format of it, then you'd be better off putting everything in to 1 file.
  2. You could try changing the settings of the laser software to do laser on/off vs beam stop open/closed to control ablation. I believe this options is available in some of the laser ablation control software.

Here is the code that I started on for importing your logs. It assumes the on/off are the two lines before the next comment.

from iolite.QtGui import QFileDialog
from iolite.QtCore import QDateTime
import pandas as pd

df = pd.read_csv(QFileDialog.getOpenFileName(), encoding='latin')
comments = df.loc[df[' Comment'] == df[' Comment']][' Comment']
samples = []

ni = 0
for ii, (i, v) in enumerate(comments.iteritems()):
    si = df.index[-1] - 1 if ni >= len(comments) - 1 else comments.index[ni+1]-2
    ei = df.index[-1] if ni >= len(comments) - 1 else comments.index[ni+1]-1

    samples.append({
        'name': v,
        'startTime': QDateTime.fromString(df.at[si, 'Timestamp'], 'yyyy-MM-dd h:mm:ss.zzz'),
        'endTime': QDateTime.fromString(df.at[ei, 'Timestamp'], 'yyyy-MM-dd h:mm:ss.zzz')
    })
    ni += 1

data.createLaserLog('/Test', samples)

All the best,

  • Joe

There was an issue with GeoStar laser log files where the On/Off events weren't being correctly logged. This has been fixed for a while now, but there is a tool created by Norris Scientific to fix affected log files:

https://norsci.com/?p=geostar-tools

(the csv fixer). It might be worthwhile putting your laser log through it to see if that fixes your issue?

Cheers,
Bence