The TSCreator file format is structured as a tab-delimited text file. The tabs are used to separate cells, each cell containing some data. This structure means that the datafiles can be opened directly in a spreadsheet program like Excel or OpenOffice.org Calc. This is recommended because the cells will then neatly aligned. When done editing, save the file as a tab-delimited text file.

Note: TSCreator supports non-English characters through the Unicode character set (UTF-8 or UTF-16).

General layout

The datafile starts with a header, followed by the data columns. The header is separated from the data columns by a blank line. The columns are also separarated from each other by a blank line. No data column definition can have any blank lines.

Each line has several cells, each separated by a tab. A spreadsheet program will automatically place tabs for you between cells. The rest of this guide will assume that the file is being edited by a spreadsheet program.

For the rest of the guide, words appearing in CAPS surrounded by <angle brackets> mean text that you enter.
Required cells are marked with a red asterisk: *required

All features in this file are available as of TSC PRO 1.3.5. If a feature requires a later version, the required version is marked in blue superscript: 1.4

File Header

Every data file must begin with a header which includes some information about the datafile. The header consists of the following lines:

*format version: <VERSION>
*date: <DATE>
age units: <UNITS>
default chronostrat: USGS or UNESCO
chart title:1.4 A title for the chart

<VERSION> is the version of the datafile format, NOT of TSCreator. As functionality is added to TSC we have to increment this number. Currently use "1.5" *required
<DATE> is the date of the datapack, in mm/dd/yyyy format. *required
<UNITS> refers to the unit of the data columns' age value. The default is Myr. For core samples you can use m (meters) or ft (feet) or any unit you deem appropriate.
The default chronostrat is the default option for the color scheme used to color periods, epochs, stages, etc. The two choices are USGS and World Geol. Map (Paris) (default).

Example:


format version:	1.5
date:	04/01/2009
age units:	m
default chronostrat:	USGS

Groups

Data columns can be grouped together under one heading using a meta or grouping column.
A grouping is created on a single line:

*<GROUP TITLE>   *:   *<CHILD COLUMN 1> <CHILD COLUMN 2> <CHILD COLUMN 3> _METACOLUMN_OFF
or
_METACOLUMN_ON
_TITLE_OFF1.5
or
_TITLE_ON
   <POPUP>

<GROUP TITLE > is the name of the group. *required
The second cell must contain just a colon (:) *required
Next follows a list of the columns belonging to this group. There can be as many as needed, including other groups. *At least one child column is required
By default, groups are on. A group can be turned off by adding a _METACOLUMN_OFF as if it were a child column. To include the group or any of its child columns in the generated chart the user will have to enable it in TSC's Settings. _METACOLUMN_ON explicitly says to make the group on.
_TITLE_OFF can be used to turn off displaying the title on the generated chart. The title will still appear in the Settings. Default is _TITLE_ON
A popup can be included at the end of the line by leaving a blank cell in a spreadsheet, or two consecutive tabs in a text editor, followed by the text of the popup. See below for more on popups.

Example:

Standard Chronostratigraphy	:	Era	Period	Series	Stage	Substage

 

Data Columns

File Header

Every data column begins with a one-line header, followed by the column data. Some columns have additional, optional, headers.
The format of this universal header is:

*<TITLE> *<TYPE> <WIDTH> <COLOR> notitle on or off <POPUP>

<TITLE> is the name of the column. *required
<TYPE> is the type of the column. This has to match one of the types below. *required
<WIDTH> is the width of the column, in SVG units. These are analogous to pixels, but not exactly. The default for most columns is 100.
<COLOR> is the background color of the column, specified as red/green/blue where each color is an integer value from 0 to 255. For example, an aqua background would be 0/255/255.
By default, the title (specified by <TITLE>) will be shown on the chart. Sometimes it is prefered that it isn't, and this can be done by including a "notitle" (without the quotes) in this cell.
<POPUP> is the popup text. See information about popups below.

Specifying interval-based data: the TOP approach

Some columns (ex. block, chron, facies, range) display data that is inherently an interval. For all such cases the TSCreator approach is for each datapoint to specify only the base of the interval. The top of the interval is taken to be the base of the previous interval. Of course this requires specifying the top of the topmost interval. This is done using a label "TOP". The specified age will then be used as the top of the first interval.
It is also possible to have gaps in the column by having another "TOP" anywhere in the column.

Block columns

*<TITLE> *block <WIDTH> <COLOR> notitle on or off <POPUP>

Following the header is the actual data. The base age of each block is specified on its own line:

* *<LABEL> *<AGE> <LINESTYLE> <POPUP> <COLOR>1.4

Note that the line begins with an empty cell (or a tab in a text editor).

<LABEL> is the label that goes inside the block. *required
<AGE> is the base age of the block. *required
<LINESTYLE> specifies the type of line at the base of the block. It can be one of the following:


<POPUP> see below for information about popups.

<COLOR> is the background color of that particular cell, and that cell only. It can be specified as "r/g/b" where each of r,g,b is an integer from 0 to 255 representing red, green, and blue, respectively.

The first row in a block column should specify the TOP of the first block, see the note above about TOPs.

Examples:

Period	block		USGS-Named		off
	TOP	145.5				
	Jurassic	199.6	2			


Series	block	120	USGS-Named	notitle
	TOP	145.5
	Late	199.6	2	Lower Jurassic is my popup

Chron columns

*<TITLE> *chron <WIDTH> <COLOR> notitle on or off <POPUP>

Chron columns are often displayed in three columns on the chart. The leftmost shows the polarity, and middle is a block column which shows the LABEL, and the rightmost is a block column which shows the SERIES. All three are automatically created based on the data below.
It is possible to NOT automatically generate the two block columns by specifying "chron-only" as the column type instead of "chron". 1.4

Before any data is given we need to establish what series the data is in. This is done using a line like the following. The series can be changed at any time.

*<SERIESNAME> (leave blank) <WIDTH OF SERIES COL>

<SERIESNAME> is the name of the series.*required If you would like to stop a series, begin a new one with <SERIESNAME> just a space, or in 1.4 you can use the string "BASE" (no quotes).
For historical reasons leave the next cell blank (two tabs in a row in a text editor).
<WIDTH OF SERIES COL> allows you to set the width of the rightmost block column which shows the series.

The actual data can now follow:

* *<POLARITY> <LABEL> *<AGE> <POPUP>

Note the blank cell at the start of the line.
<POLARITY> can be: *required

<LABEL> will be placed in the middle block column right beside the polarity. If multiple adjacent lines have identical <LABEL>, then they will be merged in the block column. The label can be blank (empty cell, or two tabs in a text editor).
<AGE> is the base age.*required
<POPUP> will appear in the leftmost chron column. See below for more information about popups.

Examples:

Geomagnetic Polarity	chron				
Austria series		Hettangian magnetic polarity intervals are not correlated to ammonite zones.  Pattern is schematic only.
	TOP		202
	N		202.47		
	R		204.18		
	R		204.56		
	No Data		205.7		
Newark Basin series		Series_Popup_text
	TOP		206
	N	l+	206.66		
	N	j+	213.5		
	R	i-	215.852		
	N	h+	218.348		
	R	g-	219.668		Data popup text
	N	f+	220.82		
	R	e-	221.445		
	N	d+	222.229		

Facies columns

Facies columns are exactly the same as CHRON COLUMNS, except the column type is "facies" instead of "chron" and <POLARITY> can be:

Similarly to chron columns, it is possible to NOT automatically generate the two companion block columns by specifying "facies-only" as the column type instead of "facies". 1.4

Facies column pattern widths

pattern width example
Example of pattern widths

Facies columns show the grain size by varying the width of the box containing the pattern like in the example on the left.

The patterns built into TSCreator already have widths associated with them. These widths are changeable by specifying them in the datafile. Note that pattern widths are global throughout TSCreator, so changing them in one datafile will also change them in all currently loaded columns.

The widths are specified in a manner similar to a data column. First comes a header:

*patternwidths *patternwidths

Followed by the pattern name and its width:

*  *<PATTERN NAME> *<PATTERN WIDTH>

<PATTERN NAME> is the facies pattern name, like in the facies column.
<PATTERN WIDTH> is the width of the pattern, as a percentage of the column width. Valid values are from 0 to 100. We do not recommend using a value less than 50 because that can make the pattern hard to see if the user makes the column narrow.

Example:

patternwidths	patternwidths
	Halite	70
	Gypsum-Anhydrite	75
	Evaporite	72.5
	Saline	72.5
	Brackish	75
	Soil	70
	Coal	80
	Pelagic_marl	80
	Shallow-marine_marl	80

Event columns (LAD/FAD/EVENT)

Event columns are used to show the First appearance of something (FAD), the Last appearance of something (LAD), or an Event.

*<TITLE> *event <WIDTH> <COLOR> notitle on or off <POPUP>

Deviations from column defaults:
The default <WIDTH> of an Event column is 150.
By default, event columns are OFF. To specify one to be on, use the "on" keyword in the appropriate cell as shown above.

The three types of data an Event column can display are split into three sections. Each section is optional, but at least one must exist. Each section has a header:

*<TYPE>

Where <TYPE> can be one of the following: *required

After the type, the points follow:

* *<LABEL> *<AGE> <LINESTYLE> <POPUP>

Note that the line begins with an empty cell (or a tab in a text editor).

<LABEL> is the label that goes inside the block. *required
<AGE> is the base age of the block. *required
<LINESTYLE> specifies the type of line at the base of the block. It can be one of the following:


<POPUP> see below for information about popups.

Example:

FAD/LAD	event	200	nocolor
LAD					
	Limbosporites lundbladii	205.7
	A. laevigatus	205.7
	R. tuberculatus	205.7	some popup text
	G. rudis	206.97
FAD		
	V. ignacii (common)	210.98
	U. imperialis	249.9		

Range columns

Range columns show ranges. For example, when a certain critter lived and how its abundance changed over time.

*<TITLE> *range <WIDTH> <COLOR> notitle on or off <POPUP>

Note that a range colun's width is based on the number of critters in the time frame. It calculates the width that it needs. The width from the header (<WIDTH>) is ignored by a range column.

Ranges are automatically parsed from the points given next:

* *<LABEL> *<AGE> <ABUNDANCE> <POPUP>

Note the empty cell at the beginning of the line.

<LABEL> is the name of the critter, or whatever the range represents. *required
<AGE> is the base age of this part of the range, or the age of a sample. *required
<ABUNDANCE> specifies the thickness of the line that will be used to draw the range:

Note that since ranges are intervals of time, and since <AGE> only specifies the base of the range, the top must be specified first. This can be done using a TOP abundance. If no TOP exists, then the topmost range point is used as a TOP. Note above about TOPs

Example:

Range	range
	donald	0
	donald	1	rare
	donald	2
	donald	3	frequent
	donald	4	flood
	mickey	3
	mickey	4	rare
	mickey	5	missing
	mickey	6	flood
	mickey	6	sample
	mickey	4.5	sample
	mickey	3.3	sample
	goofy	4
	goofy	6	abundant
	pluto	0	rare
	pluto	3	frequent
	pluto	5	flood
	minnie	5
	minnie	6	abundant
	scroodge	2
	scroodge	4	flood
	scroodge	6	frequent

Sequence/Trend columns

Sequences and Trends have identical formats except for the name of the column. The differences on the chart are a different background color, and the different drawing of severities.

*<TITLE> sequence
*or
trend
<WIDTH> <COLOR> notitle on or off <POPUP>

After the column header comes the actual data. Each line is specified like this:

* <LABEL> SB
*or
MFS
*<AGE> *<SEVERITY> <POPUP>

Note the empty cell at the beginning of the line.

<LABEL> is the label for the event, it is optional.
The direction can be either: *required

<AGE> is as usual *required
The Severity can be one of the following: *required

Example:

SomeSequence	sequence			
	name	SB	201.5	Major
	name2	MFS	202.5	Medium	Popup text goes here.
	name3	SB	203.5	Minor	

Graph/Point columns

Graph/Point columns draw an X vs. Age graph.

The drawing style of the graph can be selected with an optional line immediately following the main column header.

*<TITLE> *point <WIDTH> <COLOR> notitle on or off <POPUP>
*<POINT TYPE> line
or
noline
<FILL COLOR> <RANGE LOW> <RANGE HIGH> smoothed

<POINT TYPE> is *required if the optional second line is present, but can be omitted if none of the extra options are desired. It can be one of the following:

line or noline: whether or not to draw a black line connecting the points
<FILL COLOR> a color specified in r/g/b format, or "nofill", to fill the area between the points/line and the edge of the column.
<RANGE LOW> and <RANGE HIGH> specify the range of the graph in the X dimension. Both values must either be present or omitted. If omitted, TSCreator automatically calculates the range so that all points fit inside.
smoothed: Whether or not to smooth the line connecting the points. Smoothing is done using a Bezier curve. The smoothed curve passes through every point and maxima/minima are preserved.

Following the header are the points:

* *<AGE> *<X VALUE>

Note the empty cell at the beginning of the line.

<AGE> is the Y coordinate of the point *required
<X VALUE> is the X coordinate of the point *required

Example with options:

SomeGraph	point
nopoints	line	nofill	0	6
	205	0	mylabel	Popup text
	206	5		Popuptext

Example without options:

SomeGraph	point
	205	0	mylabel	Popup text
	206	5		Popuptext

Overlapping Graph columns1.5

It is possible to stack several graph columns on top of each other to make a compound graph. For example, to stack two graphs one would make one graph column with one curve followed by another with the second curve. The second, "child" graph column must immediately follow the first "parent" graph column. The child's column type is "point-overlay". Both graphs will be placed on the same scale, the parent's, and the child columns will also use the parent's column options (background color, width, placement, etc). The child may specify its own point options, though, including switching from left to right side.
CompoundGraph	point					
nopoints						right
	1	10				
	2	9				
	3	7				
	3.1	1.3	
	3.9	1.1	
	5	1.5	
	5.3	9	


CompoundGraph	point-overlay					
rect	0/0/255					left
	1	8				
	2	5				
	3	3				
	3.1	1.1	
	3.9	1.0	
	5	1.3	
	5.3	9

This feature became available in TSCreator 4.0.2.

Blank columns

A blank column is meant to leave space in the graph which is later filled in with some custom drafting.

*<TITLE> *blank <WIDTH> <COLOR> notitle on or off <POPUP>

Blank columns contain no data, so just the column header is sufficient.

Freehand columns

Freehand columns allow straight drafting and can be used to draw on top of other columns.

*<TITLE> *freehand <WIDTH> <COLOR> notitle on or off <POPUP>

Note that a freehand column can also have a type of "freehand-overlay" or "freehand-underlay". That means that this freehand column will be drawn on top of, or under, the last column specified in the datafile before this freehand column.

Images:

*image *<FILENAME> <TOPAGE>1.4 <BASEAGE>1.4

<FILENAME> is the filename for the image file. This should be a relative path from this datafile. For example, if you put your images in a subdirectory "images" located in the same directory as the datafile, the path can be "images/something.jpg".
Supported formats are JPG, PNG, SVG. *required

If <TOPAGE> and <BASEAGE> are specified then the image is assumed to be centered both horizontally and vertically between those ages. If you'd like more control, you can use these extra two lines:

*agetype *<TYPE> <TOPAGE> <BASEAGE>
*xtype *<TYPE>    

where <TYPE> can be:

Note that the xtype line is optional, center is the default.

Example:

Scotese PALEOMAP	freehand	720	0/0/0			Scotese, C.R., 2002,  http://www.scotese.com, (PALEOMAP website).
image	000.jpg
	agetype	center	0	7
	xtype	center
image	014.jpg	7	21

Transect columns

Transect columns show the changes of facies in a certain direction, such as showing the stratigraphy between two wells. This is done using polygons and the same patterns used in a facies column.

A transect column's datafile format is an extension of the Facies column format into two dimensions. There is a grid of points, which lines connecting the points and forming polygons. Each polygon can have a pattern fill.

*<TITLE> *transect <WIDTH> <COLOR> notitle on or off <POPUP>

The point grid follows:

* * [x coordinate] [x coordinate] [x coordinate] ...
* [age coordinate]        
* [age coordinate]        
* [age coordinate]        
* ...        

Each of the shaded cells has both an age and an x-coordinate and can contain an 'X' which means there is a point there. X-coordinates are percentages (values from 0 to 100) of the column width. Points are linked together with lines to form polygons. Lines are a series of cells containing an 'L'. Each 'X', i.e. point, should be used in all polygons that go through that point. This way you are guaranteed to not have any gaps between polygons. Here is an example column with the resulting chart to the right:

Practise transect transect 200                      
    0 10 15 20 30 40 50 60 70 80 90 100
  15 x L L L x L L L L L L x
    L Sandstone     L         Claystone   L
    L         L:lapping           L
    L           L         L
    L             L       L
  22 x L L L L L L x L L L x
    L                     L
    L Sandstone               L L x
    L               L L   L
    L           L L L     L
  * L         x         Claystone L
    L           L L L     L
    L               L L   L
  26 L                 L L x
    L                     L
  27 x L L L L L:wavy L L L L L x
  28                        
  30 x L L L L L:wavy L L L L L x
    L       Granitic             L
  33 x L L L L L L L L L L x
Transect ex1

Notice that not all of the lines in the grid have an age. When an age (or an X coordinate) is missing TSC will linearly interpolate between the two closest ages (or X coordinates) to find the missing age (or X coordinate). For example, the age of the point of the "spike" of claystone (cell marked with *) is interpolated to be 24.5.

Notice also how the "L" cells are used. A line is NOT drawn at a coordinate just because there is an "L" at that position. The "L"s are only a means of linking points. The path taken by the "L"s does not matter as long as it is continous (no breaks) and unambigous (two lines don't meet in the middle).

It is possible to give lines a style like this: "L:<style>". <style> can be one of the following:

Note: When two lines with styles are close together in the final chart, the amplitude of the wave/jagged portion may be reduced to make sure that the lines do not intersect.

Like is shown in the example, a polygon is a set of points ("X"s) joined by lines ("L"s) to form a closed region and a pattern somewhere in that region. These are pattern names like "Granitic" or "Sandstone". The pattern may be specified multiple times to make the table easier to read, but all instances must be the same.

THERE IS ANOTHER WAY TO INPUT TRANSECTS USING A DRAFTING PACKAGE LIKE CorelDraw or Adobe Illustrator.


This is done by creating a template which is then filled in with polygons in the drafting package. The filled-in template is the loaded back into TSC where the polygons are extracted and the user has tools to get rid of unwanted gaps/overlapping. The finished product can be added as a column to TSC or saved out as a datafile, which is a slight extension of the format above.

The template can be generated using the "Save Transect Template..." option in the File menu of the Image Editor. A window like this appears:

Enter the ages you are interested in working in and click Save Template As. Open the resulting SVG file in your drafting package and it should look similar to this:

Also note that the patterns/swatches list has been filled with all the patterns loaded into TSC.

Now fill the red box with polygons and fill the polygons with one of the included patterns/swatches. You can show unconformities or interfingering by taking the wavy/interfinger lines in the template, making a copy of them, and crossing them with whatever lines you want to be wavy/interfingered. Here is an example:

Note that the Base Age has also been changed. You also do not have to cramp everything into the small box, you can make the box bigger by resizing it, even though it was kept small here to fit into the guide.

Once the template is done, save it and load it into TSC using "Load Transect Column from Template..." from the File menu of the Image Editor. A window like this appears:

There are three main options to help with loading: point merge distance, and snap to grid for age and X. Point merge distance helps to make sure that points which are shared between two polygons are found correctly.
For example, here is what one part of the above template looks like when zoomed in 800%:

Notice the two points in the lower left and the space between them. Those are intended to be coincident, so the points should be the same and there should be no gap. The points are within the point merge distance so TSC merges them and there is no gap:

The grid simply forces all points to fall on the specified grid. This helps align everything.

If you look closely, you will notice that there are some lines in the preview highlighted red. That means that there are intersections in the template, which is not allowed. One can play with the point merge distance and grid and see if that takes care of the problem, but in this case it won't. Zooming in closely on the region of the template we notice that one polygon doesn't have a point where the neighboring polygons do:

Note that there is no point in the blue polygon, while there are points in the brown and yellow polygons. This is the source of the gap and the intersection shown in the preview. Adding this missing vertex to the blue polygon in the drafting package and reloading the template fixes the problem.

Once there are no problems in the template you can add the transect as a column to TSC or save it out to a datafile.
Note that this saved datafile stores lines and polygons separately from the point grid in a listed immediately following the point grid. This is to guarantee that the saved polygons are unambigous. When copying the saved column into your own datapack, be sure to copy the entire grid and polygon set.

Popups

Popups, or mouseover info, is extra information which doesn't fit on a static, printed graph. When enabled in Settings, popups appear as highlighted areas on the chart. When the user clicks, a window pops up with extra information. Nearly all data types in TSCreator support a popup. All column headers support one as well.

Since the "Information and References" section in Settings also displays the popup text of the selected column's header popup, that is a good place to put references and citations for the data in the column.

Popups can also contain hyperlinks. The format is exactly like in HTML. For example, a link to the TSCreator homepage would be written like this:
TSCreator homepage

Complete Examples

The best way to make sense of all this information is to see an actual datafile. We've prepared a very stripped down version of the default dataset to use as an example in plain text or as HTML (looks similar to a spreadsheet). You can download the txt sample file at: https://timescalecreator.org/download/download.php