void DataSetUpdaterTest::CreateReferenceFile() { // Create the data object. GenericData data; data.Header().SetFilename(TEST_FILE); DataGroupHeader dgHdr(L"data"); DataSetHeader dsHdr; dsHdr.SetName(L"test"); dsHdr.AddAsciiColumn(L"string8", 64); dsHdr.AddUnicodeColumn(L"string16", 64); dsHdr.AddByteColumn(L"int8"); dsHdr.AddShortColumn(L"int16"); dsHdr.AddIntColumn(L"int32"); dsHdr.AddUByteColumn(L"uint8"); dsHdr.AddUShortColumn(L"uint16"); dsHdr.AddUIntColumn(L"uint32"); dsHdr.AddFloatColumn(L"float"); dsHdr.SetRowCnt(3); dgHdr.AddDataSetHdr(dsHdr); data.Header().AddDataGroupHdr(dgHdr); data.Header().GetGenericDataHdr()->SetFileTypeId("affymetrix.test.data"); // Write the data object to the file GenericFileWriter writer(&data.Header()); writer.WriteHeader(); DataGroupWriter &dataGroupWriter = writer.GetDataGroupWriter(0); dataGroupWriter.WriteHeader(); //int iSet=0; DataSetWriterIt beginSet; DataSetWriterIt endSet; dataGroupWriter.GetDataSetWriters(beginSet, endSet); beginSet->WriteHeader(); int32_t dataSetSz = beginSet->GetDataSetSize(); int32_t offset = writer.GetFilePos(); writer.SeekFromCurrentPos(dataSetSz + 1); beginSet->UpdateNextDataSetOffset(); dataGroupWriter.UpdateNextDataGroupPos(); writer.SeekFromBeginPos(offset); // Write the data. beginSet->Write("first_row", 64); beginSet->Write(L"first_row", 64); beginSet->Write((int8_t) 1); beginSet->Write((int16_t) 1); beginSet->Write((int32_t) 1); beginSet->Write((u_int8_t) 1); beginSet->Write((u_int16_t) 1); beginSet->Write((u_int32_t) 1); beginSet->Write(1.0f); beginSet->Write("second_row", 64); beginSet->Write(L"second_row", 64); beginSet->Write((int8_t) 2); beginSet->Write((int16_t) 2); beginSet->Write((int32_t) 2); beginSet->Write((u_int8_t) 2); beginSet->Write((u_int16_t) 2); beginSet->Write((u_int32_t) 2); beginSet->Write(2.0f); beginSet->Write("third_row", 64); beginSet->Write(L"third_row", 64); beginSet->Write((int8_t) 3); beginSet->Write((int16_t) 3); beginSet->Write((int32_t) 3); beginSet->Write((u_int8_t) 3); beginSet->Write((u_int16_t) 3); beginSet->Write((u_int32_t) 3); beginSet->Write(3.0f); }
/* * Read the file contents into the data object. */ void GridControlFileReader::Read(const std::string &fileName, GridControlData& data) { // Clear the old data and read the file. data.Clear(); GenericFileReader reader; GenericData gdata; reader.SetFilename(fileName); reader.ReadHeader(gdata); // Check the file identifier if (gdata.FileIdentifier() != GRD_FILE_TYPE_IDENTIFIER) { affymetrix_calvin_exceptions::InvalidFileTypeException e(L"Calvin",L"Default Description, Please Update!",affymetrix_calvin_utilities::DateTime::GetCurrentDateTime().ToString(),std::string(__FILE__),(u_int16_t)__LINE__,0); throw e; } // Get the header parameters. ParameterNameValueType param; gdata.Header().GetGenericDataHdr()->FindNameValParam(GRD_ROWS_PARAMETER_NAME, param); data.SetRows(param.GetValueInt32()); gdata.Header().GetGenericDataHdr()->FindNameValParam(GRD_COLUMNS_PARAMETER_NAME, param); data.SetColumns(param.GetValueInt32()); // Get the XY coordinates from the dataSets. FeatureCoordinate coord; u_int16_t x; u_int16_t y; int nRows; DataSet *dataSet; // First the B1 probes. dataSet = gdata.DataSet(GRD_FILE_COORDINATE_GROUP_NAME, GRD_FILE_B1_SET_NAME); if (dataSet->Open() == false) { affymetrix_calvin_exceptions::DataSetNotOpenException e(L"Calvin",L"Default Description, Please Update!",affymetrix_calvin_utilities::DateTime::GetCurrentDateTime().ToString(),std::string(__FILE__),(u_int16_t)__LINE__,0); throw e; } nRows = dataSet->Rows(); data.ResizeB1(nRows); for (int iRow=0; iRow<nRows; iRow++) { dataSet->GetData(iRow, 0, x); dataSet->GetData(iRow, 1, y); coord.x = x; coord.y = y; data.SetB1(iRow, coord); } dataSet->Close(); dataSet->Delete(); // Next the B2 probes. dataSet = gdata.DataSet(GRD_FILE_COORDINATE_GROUP_NAME, GRD_FILE_B2_SET_NAME); if (dataSet->Open() == false) { affymetrix_calvin_exceptions::DataSetNotOpenException e(L"Calvin",L"Default Description, Please Update!",affymetrix_calvin_utilities::DateTime::GetCurrentDateTime().ToString(),std::string(__FILE__),(u_int16_t)__LINE__,0); throw e; } nRows = dataSet->Rows(); data.ResizeB2(nRows); for (int iRow=0; iRow<nRows; iRow++) { dataSet->GetData(iRow, 0, x); dataSet->GetData(iRow, 1, y); coord.x = x; coord.y = y; data.SetB2(iRow, coord); } dataSet->Close(); dataSet->Delete(); // Last the NS probes. dataSet = gdata.DataSet(GRD_FILE_COORDINATE_GROUP_NAME, GRD_FILE_NS_SET_NAME); if (dataSet->Open() == false) { affymetrix_calvin_exceptions::DataSetNotOpenException e(L"Calvin",L"Default Description, Please Update!",affymetrix_calvin_utilities::DateTime::GetCurrentDateTime().ToString(),std::string(__FILE__),(u_int16_t)__LINE__,0); throw e; } nRows = dataSet->Rows(); data.ResizeNS(nRows); for (int iRow=0; iRow<nRows; iRow++) { dataSet->GetData(iRow, 0, x); dataSet->GetData(iRow, 1, y); coord.x = x; coord.y = y; data.SetNS(iRow, coord); } dataSet->Close(); dataSet->Delete(); }
/* * Create a results file with the CEL file header and other parameters. */ void CopyNumberResultWriter::CreateResultFile(affymetrix_fusion_io::FusionCELData& cel, const std::string& fileName) { try { // Create the results file with the header. CHPMultiDataData *data = new CHPMultiDataData(fileName); data->SetEntryCount(CopyNumberMultiDataType, numberProbeSets, maxProbeSetNameLength[CopyNumberMultiDataType], columns); if (numberCytoRegions > 0) data->SetEntryCount(CytoMultiDataType, numberCytoRegions, maxProbeSetNameLength[CytoMultiDataType],cytoRegionColumns); if (numberGenotypeProbeSets > 0) data->SetEntryCount(GenotypeMultiDataType, numberGenotypeProbeSets, maxProbeSetNameLength[GenotypeMultiDataType], genotypeColumns); data->SetAlgName(StringUtils::ConvertMBSToWCS(algName)); data->SetAlgVersion(StringUtils::ConvertMBSToWCS(algVersion)); data->SetArrayType(cel.GetChipType()); GenericDataHeader *gdh = data->GetFileHeader()->GetGenericDataHdr(); ParameterNameValueType param; param.SetName(PROGRAM_NAME); param.SetValueText(StringUtils::ConvertMBSToWCS(programName)); gdh->AddNameValParam(param); param.SetName(L"program-version"); param.SetValueText(StringUtils::ConvertMBSToWCS(programVersion)); gdh->AddNameValParam(param); param.SetName(PROGRAM_COMPANY); param.SetValueText(StringUtils::ConvertMBSToWCS(programCompany)); gdh->AddNameValParam(param); ParameterNameValueTypeList params = algParams; param.SetName(L"ArraySet"); param.SetValueText(cel.GetChipType()); params.push_back(param); data->AddAlgParams(params); data->AddSummaryParams(summaryParams); DataSetHeader *dsh = data->GetDataSetHeader(CopyNumberMultiDataType); for (ParameterNameValueTypeList::iterator it=chrStartStop.begin(); it!=chrStartStop.end(); it++) dsh->AddNameValParam(*it); GenericData *gdata = cel.GetGenericData(); if (gdata != NULL) gdh->AddParent(*gdata->Header().GetGenericDataHdr()); CHPMultiDataFileWriter *writer = new CHPMultiDataFileWriter(*data); delete writer; delete data; // Create a buffer writer object outputFiles.clear(); outputFiles.push_back(fileName); vector<MultiDataType> dataTypes; dataTypes.push_back(CopyNumberMultiDataType); if (numberCytoRegions > 0) dataTypes.push_back(CytoMultiDataType); if (numberGenotypeProbeSets > 0) dataTypes.push_back(GenotypeMultiDataType); bufferWriter = new CHPMultiDataFileBufferWriter(); bufferWriter->Initialize(&outputFiles, dataTypes, maxProbeSetNameLength); } catch (CalvinException &ex) { string err = "Error creating the output file: " + fileName; wstring msg = ex.ToString(); if (msg.empty() == false) err += " " + StringUtils::ConvertWCSToMBS(msg); throw err; } catch (...) { string err = "Error creating the output file: " + fileName; throw err; } }