diagnosis.gds: Diagnose the GDS file

View source: R/gdsfmt-main.r

diagnosis.gdsR Documentation

Diagnose the GDS file

Description

Diagnose the GDS file and data information.

Usage

diagnosis.gds(gds, log.only=FALSE)

Arguments

gds

an object of class gdsn.class or gds.class

log.only

if TRUE, return a character vector of log only

Value

A list with stream and chunk information.

If gds is a "gds.class" object (i.e., a GDS file), the function returns a list with components, like:

stream

summary of byte stream

log

event log records

If gds is a "gdsn.class" object, the function returns a list with components, like:

head

total_size, chunk_offset, chunk_size

data

total_size, chunk_offset, chunk_size

...

Author(s)

Xiuwen Zheng

Examples

# cteate a GDS file
f <- createfn.gds("test.gds")

set.seed(1000)
rawval <- as.raw(rep(0:99, 50))

add.gdsn(f, "label", NULL)
add.gdsn(f, "raw", rawval)

closefn.gds(f)

##

f <- openfn.gds("test.gds")

diagnosis.gds(f)
diagnosis.gds(f$root)
diagnosis.gds(index.gdsn(f, "label"))
diagnosis.gds(index.gdsn(f, "raw"))

closefn.gds(f)

## remove fragments

cleanup.gds("test.gds")

##

f <- openfn.gds("test.gds")

diagnosis.gds(f$root)
diagnosis.gds(index.gdsn(f, "label"))
(adr <- diagnosis.gds(index.gdsn(f, "raw")))

closefn.gds(f)


## read binary data directly

f <- file("test.gds", "rb")

dat <- NULL
for (i in seq_len(length(adr$data$chunk_offset)))
{
    seek(f, adr$data$chunk_offset[i])
    dat <- c(dat, readBin(f, "raw", adr$data$chunk_size[i]))
}

identical(dat, rawval)  # should be TRUE

close(f)


# delete the temporary file
unlink("test.gds", force=TRUE)

zhengxwen/gdsfmt documentation built on April 11, 2024, 3:19 a.m.