Minimal example =============== Below you can see a very minimal DLIS file example with two 1D channels (one of which serves as the index) and a single 2D channel. .. code-block:: python import numpy as np # for creating mock datasets from dlis_writer import DLISFile, enums # create a DLISFile object # this also initialises Storage Unit Label and File Header with minimal default information df = DLISFile() # add Origin df.add_origin("MY-ORIGIN") # number of rows for creating the datasets # all datasets (channels) belonging to the same frame must have the same number of rows n_rows = 100 # define channels with numerical data and additional information # 1) the first channel is also the index channel of the frame; # must be 1D, ideally should be monotonic and equally spaced ch1 = df.add_channel('DEPTH', data=np.arange(n_rows) / 10, units=enums.Unit.METER) # 2) second channel; in this case 1D and unitless ch2 = df.add_channel("RPM", data=(np.arange(n_rows) % 10).astype(float)) # 3) third channel - an image channel (2D data) ch3 = df.add_channel("AMPLITUDE", data=np.random.rand(n_rows, 5)) # define frame, referencing the above defined channels main_frame = df.add_frame("MAIN-FRAME", channels=(ch1, ch2, ch3), index_type=enums.FrameIndexType.BOREHOLE_DEPTH) # when all the required objects have been added, write the data and metadata to a physical DLIS file df.write('./new_dlis_file.DLIS')