Scientific Publications
The Affymetrix® GCOS SDK is a set of application programming interfaces (API) used to access the Affymetrix GCOS system. The GCOS SDK is a very thoroughly documented collection of software libraries, application programming interfaces, and sample code that illustrate and enable the use of and integration with the Affymetrix GCOS by external programs.
Overview
This documentation is intended to provide comprehensive technical detail on the use of the Affymetrix GCOS SDK in software development applications development. Additional support in the use of these application programming interfaces is available solely through the use of the Affymetrix Software Professional Services group. Use of the Affymetrix GCOS SDK is offered to those customers who understand and accept these support limitations and wish to take advantage of this high value package with their application development projects.
The GCOS SDK provides programmatic access into the GCOS system allowing for system integration, automation and customization. With the GCOS SDK a user can programmatically communicate with the GCOS Server or Desktop version. With the GCOS SDK a programmer can:
- Manage the workflow such as Sample Registration, Experiment Setup and analysis.
- Access information about the installed GCOS system including configuration information.
- Load collections of objects bases on a variety of experimental filters.
- Manage sample and experiment templates.
- Read, write, delete and update experimental data.
- Publish experimental results to a AADM compliant database.
- Create an AADM compliant database.
- Import non-GCOS generated GeneChip® array data into the GCOS system.
- Re-analyze GeneChip array data with specific parameters.
- Generate reports (RPT) for CHP data.
Language Bindings
The GCOS SDK is written as a set of DCOM interfaces. Languages that support COM such as C++, VB, VC++ and ASP can access the SDK interfaces. The GCOS SDK is also written as Java classes to support the Java language. The implementation of the Java classes uses the Java Native Interface (JNI) technology to communicate with the COM version of the SDK. With this implementation, the use of the Java interfaces is restricted to a Windows OS environment only.
Application Programming Interfaces
The interfaces are divided up into action and data objects. The majority of objects serve as containers for data. Several objects perform actions on the data container objects. Included in the action objects are a connection object which manages the database connection and an admin object to manages security and publishing tasks.

GCOS SDK Downloads
The SDK includes application programming interfaces (APIs), redistributable runtime libraries, sample code, sample programs, and documentation to help you develop and write application capable of interfacing with the GCOS system.
With the exception of the GCOS Interface Descriptions all downloads are restricted to licensed SDK users.
Note: Due to a change to how the GCOS COM components are being registered with the GCOS 1.3 software, clients of the GCOS SDK must now make a call to the CoInitializeSecurity function. This function will register security and set the default security values for the process.
An example of the call is:
CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
Download the GCOS Redistributable Runtime Library, Version 1.3d - 9/30/05 (EXE, 1.6 MB) >
This installation program will install the runtime libraries for the GCOS SDK objects for both the COM and native Java interfaces. The runtime libraries only need to be installed on a workstation without GCOS software or if you require the Java interfaces.
Download the GCOS API, Version 1.3 (EXE, 1.1 MB) >
This install program will install the type library files (TLB) required for developing against the GCOS APIs.
Download the GCOS Interface Descriptions, Version 1.2 (ZIP, 120 KB) >
This contains documentation on the application programming interfaces within the GCOS SDK.
Download JavaDocs, Version 1.2 (ZIP, 210 KB) >
Contains documentation on the application programming interfaces within the GCOS SDK in JavaDoc form.
Download VC++ Sample Programs Source Code - 5/28/2004 (ZIP, 556 KB) >
These Visual C++ applications demonstrate the use of the programming interfaces in the GCOS SDK.
Download Java Sample Programs Source Code - 5/16/2003 (ZIP, 112 KB) >
These applications demonstrate the use of the programming interfaces in the GCOS SDK. These are all built using Sun ONE Studio's Java IDE.
Download VB Sample Programs Source Code - 6/1/2004 (ZIP, 25 KB) >
These Visual Basic applications demonstrate the use of the programming interfaces in the GCOS SDK.
GCOS SDK Sample Applications
These sample application have been built to demonstrate the potential uses of the GCOS. These application are provided on an AS IS basis without warrantee or support. Source code is available for some of these applications. Send a note to DevNet@affymetrix.com to request source.
Download the HTTP wrapper to the GCOS SDK - 7/15/2005 (ZIP, 1.2 MB) >
This archive contains documentation, installation and configuration instructions and software components for a wrapper to the GCOS SDK using HTTP. This wrapper is designed to allow cross platform integration with the GCOS system.
Download VC++ Sample Program Source Code for HTTP wrapper - 10/22/2004 (ZIP, 50 KB) >
This application demonstrates the how to use the HTTP wrapper from within a VC++ application.
Download Java Sample Program Source Code for HTTP wrapper - 10/22/2004 (ZIP, 17 KB) >
This application demonstrates the how to use the HTTP wrapper from within a Java application.
Download the UNIX Publishing Components (ZIP, 1.2 MB) >
These GCOS 1.0/1.1 modified components allow the GCOS server software to publish to an AADM schema in an Oracle database residing on a UNIX/Linux server. Note that these components should only be installed on a GCOS 1.0 or 1.1 system. To enable a GCOS 1.2 and above system to publish to a UNIX server, please email DevNet@affymetrix.com for instructions.
Download the Probe Set List Export Tool (EXE, 1.1 MB) >
This tool will export to a MAGE-ML or ASCII text file the members of a probe set list that have been defined within the Affymetrix DMT software.
Download the GCOS Auto Archive Tool V1.2 (3/30/05) (EXE, 1.2 MB) >
This tool will automatically archive the GCOS data files on a weekly basis.

GCOS SDK Action Objects
Admin Object
The Admin object manages the information pertaining to GCOS security including roles, functional privileges within a role and users within a role. In addition, the Admin object manages information pertaining to server-side service based tasks. Currently the only service based task supported by GCOS is publishing. The publishing task works as a queue-based mechanism, allowing you to write experimental and analysis information to the Admin database, which continuously gets queried by the GcdoService object. The GcdoService object manages the publishing operations for all experiments in the Admin database publishing queue.
Connection Object
The Connection object manages the database connection to the process database on the GCOS server.
Manager Object
The Manager object manages the loading of collections of data container objects.
PublishData Object
The PublishData object pushes the experimental and analysis information from the process database and files into a publish (AADM) database. This object should only be used if the intent is to publish a single experiment or analysis at a time. Otherwise the Admin object should be used.
Workflow Object
The Workflow object manages how experimental information is processed in the GCOS system.
Note: it is important to understand that no physical files are generated when using the Workflow object. Rather, information is merely recorded in the process database. In order to generate a DAT file you must use the Microarray Suite software. In order to programmatically generate CEL and CHP file use the Analysis object.
Import Object
The Import object controls how experimental information is imported into the GCOS system. An experiment must be associated with an assay (i.e. Expression), a sample and an image DAT file when being imported into the GCOS system. An experiment can have 1 or more CEL files and each CEL file can have 1 or more CHP files when being imported into GCOS.
Note: it is important to understand that no physical files are generated when using the Import object. Rather, information is merely recorded in the process database. It is the responsibility of the calling application to copy/move files to the GCOS server's data file location which can be determined by the UNCDataPath property of the Connection object.
Analysis Controller Object
The Analysis object is used to control how experimental information is analyzed in the GCOS system. The purpose of the Analysis Controller Component is to invoke an analysis. Analysis components perform the analysis. The Analysis Controller resides on the GCOS server. The Analysis Controller will invoke the Analysis Components. Analysis Components will run the algorithms. Neither the Analysis Controller nor the Analysis Components will have a user interface. Errors will be reported back via an error string. The Analysis Components will read user-modifiable algorithm parameters by means of the Userset object. The Analysis Controller component will be implemented as out-of-process DCOM object.
Note: Use the analysis object API to generate CEL and CHP file programmatically. The object will not only generate these analysis files, but also record the information in the process database by making calls into the Workflow object.

GCOS SDK Data Objects
Algorithm Object
The Algorithm object contains information about an algorithm.
Assay Object
The Assay object contains information about an assay (ie. "Expression").
Chip Object
The Chip object contains information about a physical chip (array).
ChipType Object
The ChipType object contains information about a probe array type.
Experiment Object
The Experiment object contains information about an experiment.
FileType Object
The FileType object contains information about a file (ie. DAT, CEL or CHP).
Sample Object
The Sample object contains information about a sample.
Vessel Object
The Vessel object contains information about a physical vessel.
Note: only the Barcode, Type, Comment and NewBarcode properties is currently supported in this object. This object is only used as a parameter to the Workflow object's RegisterSample and AutomateExperiment methods calls. It servers no other purpose other than to register a sample and exists for legacy reasons.
Process Object
The Process object contains information about a process for a particular assay (ie. Scan, Hybridization).
Queue Object
The Queue object contains information about an item on a process queue.
UserSet Object
The UserSet object contains information about a user defined expression analysis parameter set.
Environment Object
The Environment object contains information about an process environment (ie. scan information).
Template Object
The Template object contains information about a template.
Attribute Object
The Attribute object contains information about a template's attribute.
Parameter Object
The Parameter object contains information about a controlled attribute's parameter or environment's parameter.

GCOS SDK Release Notes
This section describes changes to each revision and update of the GCOS SDK.
GCOS VERSION 1.2 UPDATES - COM SDK
- Added a new Report object to support generation of RPT files.
- Added a new Transfer object to support generation and restoration of CAB files.
- Added IsPublishingSupported method to the Assay object to identify if publishing is supported for the give assay.
- Added PublishingOS property to the Connection object to determine which operating system is supported for publishing (UNIX or windows). Windows is the default operating system for the commercial software.
- Added PublishDatabase property to the Environment object to identify the publish database name for supporting the LoadParameters method when the ProcessType property is set to PUBLISH_PROCESS.
- Added SystemUser and SystemDateTime properties to the Process object to identify the user and datetime stamp of the given process.
- Added LoadAlgorithms and GetNextAlgorithm methods and AlgorithmCount property to the ChipType object to read all algorithms associated with the given probe array type.
- Added the AssayName property to the ChipType object to capture the assay name for a given probe array type. This property is populated when calling the Read method.
- Added LoadPublishDBs method to the Experiment object to return all publish database names that the given experiment has been published to.
- Added the AlgorithmName, ProgID, and ProbeArrayType properties to the FileType object to capture the algorithm name, algorithm server identify, probe array type for the given file name. These properties are populated when calling the Read method.
- Added the LoadPublishDBs method to the FileType object to return all publish database names that the given file has been published to.
- Added the ProtocolTypes property to the Manager object to capture an array of assay names for filtering. This property is used in conjunction with the LoadChipTypes, LoadSamples, LoadExperiments, LoadFiles, LoadProjects, LoadProcessQueue, LoadAlgorithms, and GetObjectName methods.
- Added a new OBJ_PUB_DB OBJ_NAME_TYPE enumerant type to use in conjunction with the Manager object's GetObjectName method. Setting this enumerant and calling GetObjectName will return the list of publish database names associated with the experiment set in the ExpName property or file set in the FileName property.
GCOS VERSION 1.2 UPDATES - JAVA SDK
- The changes listed above in the COM SDK section also apply to the Java SDK with the following differences.
- Only the LoadAlgorithms method was added to the ChipType object. It returns an array of Algorithm objects.
GCOS VERSION 1.0 UPDATES - COM SDK
- Added a new Project object to support querying samples and experiment by a given project.
- Added a new Device object to store and read scanner and fluidic device information.
- Added a new FileAccess object to manage data file access on the server.
- Added a UsersetFlag property to the Algorithm object to indicate if the algorithm supports usersets.
- Added an ExpirationDate property to the Chip object to capture the expiration date of a physical array.
- Added LoadExperiments and GetNextExperiment methods and an ExperimentCount property to the Chip object to read all experiments associated with a given physical array.
- Added an AlgorithmProgID property to the ChipType object to capture the analysis server identifier for a given probe array type.
- Added a BarcodePartNumber property to the ChipType object to capture the part number associated with a give probe array type.
- Added DeviceName, FluidicsType and ScannerType properties to the IEnvironment object to identify the device name and type when reading the environment parameters.
- Added an Chip property to the Experiment object to capture the physical array associated with the experiment. This property must be assigned before passing in the Experiment object to the Workflow object's CreateExperiment method.
- Added a Description property to the Experiment object to capture experimental description information.
- Added LoadParentFiles and GetNextParentFile methods and ParentFileCount property to the FileType object to read all parent files associated with the given file.
- Added an AssayName property to the Import object to capture the name of the assay associated with the experiment data to be imported.
- Added a ProgID property to the Manager object to capture an analysis server identifier when reading data.
- Added a LoadDevices method to the Manager object to read all device names in the system.
- Added a GetObjectName method to the Manager object to read all sample, experiment, projects, DAT file, CEL file or CHP files.
- Added a DeleteUser method to the Manager object to delete a user from the system.
- Added a DateEdit property to the Parameter object to capture the date the parameter was lasted edited.
- Added LoadAssays and GetNextAssay methods and AssayCount property to the Sample object to read all assays associated with the given sample.
- Added a DeviceName property to the UserSet object to identify the device name used to read environment information.
- Added a ProgID property to the Workflow object to capture an analysis server identifier.
- Added a new OBJ_NAME_TYPE enumerant type to use in conjunction with the Manager object's GetObjectName method.
- Added a new DEVICE_OBJECT OBJECT_TYPE enumerant.
- Added new M18_SCANNER and M10_SCANNER SCANNER_TYPE enumerants.
- Added a new FLUIDICS_TYPE enumerant type.
GCOS VERSION 1.0 UPDATES - JAVA SDK
- The changes listed above in the COM SDK section also apply to the Java SDK with the following differences.
- Only the LoadExperiment method was added to the Chip object. It returns an array of Experiment objects.
- Only the LoadParentFiles method was added to the FileType object. It returns an array of FileType objects.
- GetObjectNames has an 's' at the end of method name in the Manager object.
- Only the LoadAssays method was added to the Sample object. It returns an array of Assay objects.



