Enhance your reports, presentations, email, and lab notebook. Free your data from your instrumentation.

AIADLL

AIADLL is a dynamic-link library (DLL) for Microsoft Windows that allows programs to write data in the Andi/Chromatography (formerly AIA) file format. The Andi file format is now maintained by ASTM and is available from them. The DLL can be called from C++, Visual Basic, or any other programming library that can access functions in a DLL. The easiest way to access Andi/Chromatography files is by using Chrom Merge, which can easily embed graphic representations of the data in most documents and programs. Chrom Merge can be programmed to allow direct user interaction with the data.

 The functions in the DLL come in two flavors: The original version (WriteAIAFile) writes an AIA/Andi file with a single function call, and can only write raw data. The newer version has a library of functions for creating Andi files by repeatedly appending raw data to the file, and for creating files with more information, including custom attributes, peak, and fraction information.

 AIADLL ships with a static-link library for loading  the DLL at program startup, as well as a header file (aiadll.h) with function prototypes and function pointer type definitions for dynamically accessing the DLLs functions. Complete C++ examples of the use of the library are available in test.cpp.

 

Name              WriteAIAFile

 Synopsis:        int WriteAIAFile(

char *outputFileName,

char *dataset_origin,

char *dataset_owner,

time_t dataset_date_time_stamp,

time_t injection_date_time_stamp,

char *experiment_title,

char *operator_name,

char *separation_experiment_type,

char *company_method_name,

char *company_method_id,

char *source_file_reference

char *sample_id_comments,

char *sample_id,

char *sample_name,

char *sample_type,

char *sample_injection_volume,

char *sample_amount,

char *detector_method_table_name,

char *detector_method_comments,

char *detector_method_name,

char *detector_name,

float detector_maximum_value,

float detector_minimum_value,

char *detector_unit,

char *raw_data_table_name,

char *retention_unit,

float sampling_interval,

float delay_time,

float *data,

unsigned long nData)

 

Function:        Writes an AIA file to outputFileName using the data provided in the arguments. If the file exists it is over-written.

 

Arguments:

Any of the arguments with a char * data type, except retention_unit and output_file_name, can be set to NULL and they will not be written to the file. All char * types are null-terminated strings. For most of the arguments the names are self-explanatory. The name of the variable corresponds to the name of the variable in the AIA specification.

 

outputFileName, the path name of the file to write to. If this file exists it is over-written.

dataset_origin, see AIA Specification

dataset_owner, see AIA Specification

dataset_date_time_stamp, the date and time in seconds since Jan, 1 1970 (standard DOS time). This value will be converted to the proper format by the function.

injection_date_time_stamp, the date and time in seconds since Jan, 1 1970 (standard DOS time). This value will be converted to the proper format by the function.

experiment_title, see AIA Specification

operator_name, see AIA Specification

separation_experiment_type, see AIA Specification

company_method_name, see AIA Specification

company_method_id, see AIA Specification

source_file_reference, see AIA Specification

sample_id_comments, see AIA Specification

sample_id, see AIA Specification

sample_name, see AIA Specification

sample_type, see AIA Specification

sample_injection_volume, see AIA Specification

sample_amount, see AIA Specification

detector_method_table_name, see AIA Specification

detector_method_comments, see AIA Specification

detector_method_name, see AIA Specification

detector_name, see AIA Specification

detector_maximum_value, the absolute minimum detector value. This number will be converted to a character string by the function.

detector_minimum_value, the absolute maximum detector value. This number will be converted to a character string by the function.

detector_unit, must be the same units used for detector_maximum_value and detector_minimum_value, see AIA Specification for details

raw_data_table_name, see AIA Specification

retention_unit, this is the unit that is used for the sampling interval and delay time see AIA Specification for more details

sampling_interval, see AIA Specification

delay_time, see AIA Specification

data, this points to a zero-based floating point array of data points for the chromatogram. The first point starts at delay_time

nData, this is the number of points in the chromatogram.

 

Return Value:

zero is returned if there are no errors. Error codes, which are listed below, are returned on error.

 

 

 

 

 


 

Name              AndiWriteHeader

 

Synopsis:        int AndiWriteHeader(

                        char *outputFileName,

                        char *dataset_origin,

                                    char *dataset_owner,

                                    unsigned long dataset_date_time_stamp,

                                    unsigned long injection_date_time_stamp,

                                    char *experiment_title,

                                    char *operator_name,

                                    char *separation_experiment_type,

                                    char *company_method_name,

                                    char *company_method_id,

                                    char *source_file_reference,

                                    char *sample_id_comments,

                                    char *sample_id,

                                    char *sample_name,

                                    char *sample_type,

                                    char *sample_injection_volume,

                                    char *sample_amount,

                                    char *detector_method_table_name,

                                    char *detector_method_comments,

                                    char *detector_method_name,

                                    char *detector_name,

                                    float detector_maximum_value,

                                    float detector_minimum_value,

                                    char *detector_unit,

                                    char *raw_data_table_name,

                                    char *retention_unit,

                                    float actual_sampling_interval,

                                    float actual_delay_time,

                                    int hasPeaksOrFractions,

int hasNonUniformSampling);

 

Function:                    Writes the header information for an Andi file. If the file exists it is

                                    overwritten.

 

Arguments:

           

Arguments marked with W are required. Optional variables should be set to NULL if the particular item is not required for your application. However, it is recommended that applications utilize as many data values as possible in order to provide unknown future consumers of the data with the fields that they require. Although the names of the variables

 

Any of the arguments with a char * data type, except retention_unit and output_file_name, can be set to NULL and they will not be written to the file. All char * types are null-terminated strings. For most of the arguments the names are self-explanatory. The name of the variable corresponds to the name of the variable in the Andi/Chromatography  specification. More details about the meaning of the variables can be found in there.

 

W outputFileName, the path name of the file to write to. If this file exists it is over-written.

dataset_origin - the program that made the data set

dataset_owner  - the person who made the data set

W dataset_date_time_stamp, the date and time in seconds since Jan, 1 1970 (standard

DOS time). This value will be converted to the proper format by the function.

W injection_date_time_stamp, the date and time in seconds since Jan, 1 1970 (standard DOS time). This value will be converted to the proper format by the function.

experiment_title – the title for the experiment

operator_name – the name of the instrument operator

separation_experiment_type – the name of the separation experiment

company_method_name – name of the method as specified by the company

company_method_id – ID code for the method

source_file_reference – source data file if from a translated file

sample_id_comments – comments about the sample

sample_id – ID code for the sample

sample_name – longer name of the sample

sample_type – type of sample

sample_injection_volume – volume of sample injected

sample_amount – amount of sample injected

detector_method_table_name – name of detector method

detector_method_comments – comments for detector method

detector_method_name – longer name of detector method

detector_name – name of the detector

W detector_maximum_value, the absolute minimum detector value. This number will be converted to a character string by the function.

W detector_minimum_value, the absolute maximum detector value. This number will be converted to a character string by the function.

W detector_unit, must be the same units used for detector_maximum_value and raw_data_table_name

W retention_unit, this is the unit that is used for the sampling interval and delay time

W sampling_interval – the uniform interval between raw data samples in retention_unit

W delay_time – time in retention_unit for a delay from injection to start of sampling

W  int hasPeaksOrFractions, a flag that tells the function if there is going to be any peak or fraction data. Set to non-zero if peak or fraction data will be used.

W  int hasNonUniformSampling -  zero if there is uniform sampling and only the amplitude of the data are supplied.

 

Return Value:

A handle to the Andi file is returned. If the return value is negative an error is indicated. See error codes below. The handle can be used as the cdfid argument in the following functions.

 

 

 


 

Name:             AndiOpen

 

Synopsis:        int AndiOpen( char *outputFileName )

 

Function:        Re-opens an Andi file for the purpose of adding more data to it.

 

Return:          

A handle to the Andi file is returned. If the return value is negative an error is indicated. See error codes below. The handle can be used as the cdfid argument in the following functions.

 

 

 


 

Name:             AndiAttPut

 

Synopsis:        int AndiAttPut( int cdfid, char *attrName, char *attrValue )

 

Function:        Writes a custom attribute/value pair to an Andi file. An attribute is the tag for a value. The value is a string. These can be read with Chrom Merge.

 

Arguments:   

            cdfid – the handle of the Andi file returned from AndiWriteHeader or AndiOpen.

            attrName - name of the attribute.

            attrValue  - value of the attribute.

 

 


 

Name              AndiAddPoints

 

Synopsis:                                         int AndiAddPoints(

                                                                                                                                  int cdfid,

                                    float delayTime,

                                    float samplingInterval,

                                    float *dataPoints,

long nPoints,

float *timeData)

 

Function:        Adds raw data points to an open Andi file. The function can be called repeatedly after initializing the file with AndiWriteHeader, and possibly re-opening the file with AndiOpen.

 

Arguments:   

            cdfid – the handle of the Andi file returned from AndiWriteHeader or AndiOpen.

delayTime – the delay time for this chromatogram in retention_unit. This is the same value as specified in AndiWriteHeader. It is passed to this function in order to eliminate the overhead of looking up the value each time the function is called.

samplingInterval – the uniform interval between samples in retention_unit. . This is the same value as specified in AndiWriteHeader. It is passed to this function in order to eliminate the overhead of looking up the value each time the function is called.

dataPoints – a pointer to the first element in an array of data points in units of detector_unit to be added to the file.

            nPoints – the number of points in dataPoints.

            timeData – a pointer to the first element in an array of time values corresponding

            to the type of each data point.

 

Return:           zero is returned on success. Error codes are listed in the table below.

 

 

 

 


 

Name:             AndiAddFractions

 

Synopsis:        int AndiAddFractions(

                                    int cdfid,

                                    float *fractionStart,

                                    float *fractionEnd,

                                    short *fractionSelect,

                                    char *fractionLabel[],

                                    long nFractions );

 

Function:        Adds fraction information to the Andi file. Unlike AndiAddPoints this function can only be called once to populate the fraction information. The data arguments to this function can be NULL if you want to omit them.

 

Arguments:

            cdfid – the handle of the Andi file returned from AndiWriteHeader or AndiOpen.

float *fractionStart – a pointer to an array of the time in retention_unit units of the start of each fraction connected.

float *fractionEnd – a pointer to an array of time in retention_unit units of the end of each fraction collected.

short *fractionSelect – a pointer to an array of integers indicating which fractions are selected. Non-zero values are selected. The meaning of a selected fraction is application specific.

char *fractionLabel[] – a pointer to an array of strings used to label each fraction. Fractions with no label should be set to “”.

            long nFractions – the number of fractions specified in the arrays of data.

 

Return:           Zero is returned when there is no error. Error codes are listed in the table below.

 

 

 


 

Name:             AndiAddPeaks

 

Synopsis:        int AndiAddPeaks(

        int cdfid,

        float *peakRetentionTime,

        float *peakAmount,

        float *peakStart,

        float *peakEnd,

        float *peakWidth,

        float *peakArea,

        float *peakAreaPercent,

        float *peakHeight,

        float *peakHeightPercent,

        float *peakBaselineStartTime,

        float *peakBaselineStartValue,

        float *peakBaselineStopTime,

        float *peakBaselineStopValue,

        char *peakStartCode[],

        char *peakStopCode[],

        float *peakRetentionIndex,

        float *peakAssymetry,

        float *peakEfficiency,

        float *peakMass,

        short *peakManual,

        char *peakName[],

        long nPeaks );

 

Function:        Adds peak information to the Andi file. Unlike AndiAddPoints this function can only be called once to populate the peak information. The data arguments to this function can be NULL if you want to omit them. Each data argument points to an array of nPeaks length that contains the data.

 

Arguments:   

            cdfid – the handle of the Andi file returned from AndiWriteHeader or AndiOpen.

peakRetentionTime – retention time

peakAmount – amount calculated for this peak

peakStart – start time in retention_unit units

peakEnd – end time in retention_unit units

peakWidth – width in retention_unit units

peakArea – area in retention_unit * detector_unit units

peakAreaPercent – area percent relative to all other peaks

peakHeight – peak height in detector_unit units

peakHeightPercent – height percent relative to all other peaks

peakBaselineStartTime – start time (X) of baseline in retention_unit units

peakBaselineStartValue – start value (Y) of baseline in detector_unit units

peakBaselineStopTime – stop time of baseline in retention_unit units

peakBaselineStopValue – stop value of baseline in detector_unit units

peakStartCode[] – peak start detection code, 2-byte string maximum

peakStopCode[] – peak stop detection code, 2-byte string maximum

peakRetentionIndex – retention index

peakAssymetry – peak assymetry

peakEfficiency – efficiency, also known as plate number

peakMass – mass of peak on column

peakManual – non-zero for manually integrated peaks

peakName[] – name of peak. 32-byte maximum

nPeaks  - number of peaks

                       

Return:           Zero is returned on success. Error codes are listed in the table below.

 

 

 

 


 

Name:             AndiClose

 

Synopsis:        int AndiClose(int cdfid)

 

Function:        Closes an Andi file opened with AndiOpen or AndiWriteHeader.

 

Arguments:   

                        cdfid – the handle of the Andi file.

 

Return:           Zero is returned on success. Error codes are listed in the table below.

 

 

 


 

AIADLL Return Codes

 

Code

Meaning

0

No error

-1

Error with function arguments

-2

Error opening the Andi file

-3

Error defining dimensions in the Andi file

-4

Error setting up attributes

-5

Error setting up attributes

-6

Error when ending definition mode for NetCDF library

-7

Error when starting definition mode for NetCDF library

-8

Error writing variables to file

-9

Error writing chromatogram data to file

-10

Error getting a dimension

-11

Error getting a variable from it's name

-12

Error getting information about a variable

 

Copyright © 2003 by Robert W. Albrecht, All rights reserved.