/* * Copy the file contents. */ bool CELConversionUtilities::Copy(CelFileData &inFile, CCELFileData &outFile, CELFileConversionOptions *options) { // Set the dimensions outFile.SetDimensions(inFile.GetRows(), inFile.GetCols()); // Set the intensities, stdv and pixels FloatVector values; int n = inFile.GetNumCells(); inFile.GetIntensities(0, n, values); for (int i=0; i<n; i++) { outFile.SetIntensity(i, values[i]); } values.clear(); inFile.GetStdev(0, n, values); for (int i=0; i<n; i++) { outFile.SetStdv(i, values[i]); } Int16Vector pixels; inFile.GetNumPixels(0, n, pixels); for (int i=0; i<n; i++) { outFile.SetPixels(i, pixels[i]); } // Set the outliers and masks. XYCoordVector xy; inFile.GetOutlierCoords(xy); n = (int) xy.size(); for (int i=0; i<n; i++) { outFile.SetOutlier(xy[i].xCoord, xy[i].yCoord, true); } xy.clear(); inFile.GetMaskedCoords(xy); n = (int) xy.size(); for (int i=0; i<n; i++) { outFile.SetMask(xy[i].xCoord, xy[i].yCoord, true); } // Set the header. outFile.SetGridCorners(GetGrid(inFile)); if((options != NULL)&&(options->m_ChipType != NULL)) { outFile.SetChipType(options->m_ChipType); } else { outFile.SetChipType(StringUtils::ConvertWCSToMBS(inFile.GetArrayType()).c_str()); } // Make sure the algorithm name is "Percentile" so it can import into GCOS. outFile.SetAlgorithmName("Percentile"); //outFile.SetAlgorithmName(StringUtils::ConvertWCSToMBS(inFile.GetAlgorithmName()).c_str()); // Add the first four algorithm parameters required by GCOS. FindAndAddAlgorithmParameter("Percentile", "75", inFile, outFile); FindAndAddAlgorithmParameter("CellMargin", "2", inFile, outFile); FindAndAddAlgorithmParameter("OutlierHigh", "1.500", inFile, outFile); FindAndAddAlgorithmParameter("OutlierLow", "1.004", inFile, outFile); // Set the CellMargin SetCellMargin(inFile, outFile, 2); ParameterNameValueTypeVector algParams; inFile.GetAlgorithmParameters(algParams); n = (int) algParams.size(); string tag; string value; for (int i=0; i<n; i++) { tag = StringUtils::ConvertWCSToMBS(algParams[i].GetName()); value = StringUtils::ConvertWCSToMBS(algParams[i].ToString()); // Filter the first four required GCOS algorithm parameters. if (tag == "Percentile" || tag == "CellMargin" || tag == "OutlierHigh" || tag == "OutlierLow") { continue; } // Don't include the grid parameters added by the converter. if (tag.length() > strlen("Grid") && strncmp(tag.c_str(), "Grid", strlen("Grid")) == 0) continue; // Add the parameter; outFile.AddAlgorithmParameter(tag.c_str(), value.c_str()); } if((options != NULL)&&(options->m_DATFileName != NULL)) { std::string datHeader = CELFileConversionOptions::newDatName(GetDatHeader(inFile).c_str(), options->m_DATFileName); if(datHeader == "") { return false; } else { outFile.GetHeader().SetDatHeader(datHeader.c_str()); } } else { outFile.GetHeader().SetDatHeader(GetDatHeader(inFile).c_str()); } outFile.GetHeader().SetHeader(outFile.GetHeader().GetHeader().c_str()); return true; }