/*
 * Get the DAT header from the DAT file header object.
 */
string CELConversionUtilities::GetDatHeader(CelFileData &inFile)
{
    std::wstring datHeader;

    GenDataHdrVectorIt begin, end;
    inFile.GetFileHeader()->GetGenericDataHdr()->GetParentIterators(begin, end);

    // Find the DAT generic header
    for (GenDataHdrVectorIt ii = begin; ii != end; ++ii)
    {
        std::string s = ii->GetFileTypeId();
        if (ii->GetFileTypeId() == SCAN_ACQUISITION_DATA_TYPE)
        {

            // found the right header, now look for the parameter
            ParameterNameValueType nvt;
            if (ii->FindNameValParam(DAT_HEADER_PARAM_NAME, nvt))
            {
                if (nvt.GetParameterType() == ParameterNameValueType::TextType)
                    datHeader = nvt.GetValueText();
            }
            else if (ii->FindNameValParam(PARTIAL_DAT_HEADER_PARAM_NAME, nvt))
            {
                if (nvt.GetParameterType() == ParameterNameValueType::TextType)
                {
                    std::wstring partialDatHeader = nvt.GetValueText();

                    u_int16_t min = 0;
                    u_int16_t max = 0;

                    // Find the max and min parameters and append to the string.
                    if (ii->FindNameValParam(MAX_PIXEL_INTENSITY_PARAM_NAME, nvt))
                    {
                        if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
                            max = nvt.GetValueUInt16();
                    }

                    if (ii->FindNameValParam(MIN_PIXEL_INTENSITY_PARAM_NAME, nvt))
                    {
                        if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
                            min = nvt.GetValueUInt16();
                    }

                    wchar_t buf[30];
                    FormatString2(buf, 30, L"[%d..%d]", min, max);
                    datHeader = buf;
                    datHeader += partialDatHeader;
                }
            }
            break;
        }
    }
    return StringUtils::ConvertWCSToMBS(datHeader);
}
void CHPMultiDataFileReaderTest::testRead()
{
    affymetrix_calvin_data::ProbeSetMultiDataExpressionData ex;
    affymetrix_calvin_data::ProbeSetMultiDataGenotypeData gn;
	ParameterNameValueType param;

	CHPMultiDataData data2;
	CHPMultiDataFileReader reader;
	reader.SetFilename("../data/CHP_MultiData_file");
	reader.Read(data2);

	CPPUNIT_ASSERT(data2.GetAlgName() == L"sig");
	CPPUNIT_ASSERT(data2.GetAlgVersion() == L"1.0");
	CPPUNIT_ASSERT(data2.GetArrayType() == L"test3");
	CPPUNIT_ASSERT(data2.GetEntryCount(ExpressionMultiDataType) == 1);
	CPPUNIT_ASSERT(data2.GetEntryCount(GenotypeMultiDataType) == 2);

    // expression
    CPPUNIT_ASSERT(data2.GetNumMetricColumns(ExpressionMultiDataType) == 0);
    data2.GetExpressionEntry(ExpressionMultiDataType, 0, ex);
	CPPUNIT_ASSERT_DOUBLES_EQUAL(ex.quantification, 10.0f, 0.0001f);
	CPPUNIT_ASSERT(ex.name == "ex1");

    // genotype
    CPPUNIT_ASSERT(data2.GetNumMetricColumns(GenotypeMultiDataType) == 2);
    CPPUNIT_ASSERT(data2.GetMetricColumnName(GenotypeMultiDataType, 0) == L"int");
    CPPUNIT_ASSERT(data2.GetMetricColumnName(GenotypeMultiDataType, 1) == L"float");

    data2.GetGenotypeEntry(GenotypeMultiDataType, 0, gn);
	CPPUNIT_ASSERT(gn.call == 1);
	CPPUNIT_ASSERT_DOUBLES_EQUAL(gn.confidence, 11.0f, 0.0001f);
	CPPUNIT_ASSERT(gn.name == "gn1");
    CPPUNIT_ASSERT(gn.metrics.size() == 2);
    param = gn.metrics[0];
    CPPUNIT_ASSERT(param.GetParameterType() == ParameterNameValueType::Int32Type);
    CPPUNIT_ASSERT(param.GetValueInt32() == 1);
    param = gn.metrics[1];
    CPPUNIT_ASSERT(param.GetParameterType() == ParameterNameValueType::FloatType);
    CPPUNIT_ASSERT_DOUBLES_EQUAL(param.GetValueFloat(), 2.0f, 0.00001f);

    data2.GetGenotypeEntry(GenotypeMultiDataType, 1, gn);
	CPPUNIT_ASSERT(gn.call == 2);
	CPPUNIT_ASSERT_DOUBLES_EQUAL(gn.confidence, 22.0f, 0.0001f);
	CPPUNIT_ASSERT(gn.name == "gn2");
    CPPUNIT_ASSERT(gn.metrics.size() == 2);
    param = gn.metrics[0];
    CPPUNIT_ASSERT(param.GetParameterType() == ParameterNameValueType::Int32Type);
    CPPUNIT_ASSERT(param.GetValueInt32() == 2);
    param = gn.metrics[1];
    CPPUNIT_ASSERT(param.GetParameterType() == ParameterNameValueType::FloatType);
    CPPUNIT_ASSERT_DOUBLES_EQUAL(param.GetValueFloat(), 3.0f, 0.00001f);
}
Esempio n. 3
0
std::wstring CalvinCELDataAdapter::GetDatHeader()
{
	std::wstring datHeader;

	//GenDataHdrVectorIt begin, end; 
	GenericDataHeader* gdh = calvinCel.GetFileHeader()->GetGenericDataHdr()->FindParent(SCAN_ACQUISITION_DATA_TYPE);
	if (gdh)
	{
		// found the right header, now look for the parameter
		ParameterNameValueType nvt;
		if (gdh->FindNameValParam(DAT_HEADER_PARAM_NAME, nvt))
		{
			if (nvt.GetParameterType() == ParameterNameValueType::TextType)
				datHeader = nvt.GetValueText();
		}
		else if (gdh->FindNameValParam(PARTIAL_DAT_HEADER_PARAM_NAME, nvt))
		{
			if (nvt.GetParameterType() == ParameterNameValueType::TextType)
			{
				std::wstring partialDatHeader = nvt.GetValueText();

				u_int16_t min = 0;
				u_int16_t max = 0;

				// Find the max and min parameters and append to the string.
				if (gdh->FindNameValParam(MAX_PIXEL_INTENSITY_PARAM_NAME, nvt))
				{
					if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
						max = nvt.GetValueUInt16();
				}

				if (gdh->FindNameValParam(MIN_PIXEL_INTENSITY_PARAM_NAME, nvt))
				{
					if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
						min = nvt.GetValueUInt16();
				}

				wchar_t buf[30]=L"";
				FormatString2(buf, 30, L"[%d..%d]", min, max);
				datHeader = buf;
				datHeader += partialDatHeader;
			}
		}
	}
	return datHeader;
}
void CELConversionUtilities::SetCellMargin(CelFileData &inFile, CCELFileData &outFile, int defaultValue)
{
    ParameterNameValueType nvt;
    if (inFile.FindAlgorithmParameter(L"CellMargin", nvt))
    {
        if (nvt.GetParameterType() == ParameterNameValueType::Int32Type)
        {
            outFile.GetHeader().SetMargin(nvt.GetValueInt32());
        }
        else if(nvt.GetParameterType() == ParameterNameValueType::AsciiType)
        {
            outFile.GetHeader().SetMargin(atoi(nvt.GetValueAscii().c_str()));
        }
    }
    else
    {
        outFile.GetHeader().SetMargin(defaultValue);
    }
}
/*
 * Get the grid from the parameters.
 */
GridCoordinatesType CELConversionUtilities::GetGrid(CelFileData &inFile)
{
    GridCoordinatesType grid;
    ParameterNameValueType nvt;

    grid.lowerleft.x = grid.lowerleft.y = 0;
    grid.upperleft.x = grid.upperleft.y = 0;
    grid.lowerright.x = grid.lowerright.y = 0;
    grid.upperright.x = grid.upperright.y = 0;

    if (inFile.FindAlgorithmParameter(GRIDULX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperleft.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDULY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperleft.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDURX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperright.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDURY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperright.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLRX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerright.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLRY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerright.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLLX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerleft.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLLY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerleft.y = (int) nvt.GetValueFloat();

    return grid;
}
Esempio n. 6
0
int CalvinCELDataAdapter::GetCellMargin()
{
	ParameterNameValueType nvt;
	if (calvinCel.FindAlgorithmParameter(CELLMARGIN_PARAM_NAME, nvt))
	{
		switch(nvt.GetParameterType())
		{
		case ParameterNameValueType::Int32Type:
			return nvt.GetValueInt32();
			break;
		case ParameterNameValueType::Int16Type:
			return (int)nvt.GetValueInt16();
			break;
		case ParameterNameValueType::Int8Type:
			return (int)nvt.GetValueInt8();
			break;
		case ParameterNameValueType::UInt32Type:
			return (int)nvt.GetValueUInt32();
			break;
		case ParameterNameValueType::UInt16Type:
			return (int)nvt.GetValueUInt16();
			break;
		case ParameterNameValueType::UInt8Type:
			return (int)nvt.GetValueUInt8();
			break;
		case ParameterNameValueType::AsciiType:
			return (int)atoi(nvt.GetValueAscii().c_str());
		default:
			return 0;
			break;
		}
	}
	else
	{
		return 0;
	}
}
/** 
 * No more probesets will be processed, this is a chance to finish outputting
 * results and clean up.
 * @param qMethod - Quantification method that was used.
 * @return true if success, false otherwise.
 */
bool QuantMethodExprCCCHPReport::finish(QuantMethod &qMethod) 
{
    // Sanity to check we saw all the probe sets we were expecting.
    if (m_CurrentProbeSetCount != m_Info.m_NumProbeSets) {
        Err::errAbort("QuantMethodExprCCCHPReport::finish() - Expecting: " + ToStr(m_Info.m_NumProbeSets) +
            " but got: " + ToStr(m_CurrentProbeSetCount) + ". Command Console CHP file will be corrupt.");
    }

    // Flush remaining signal entries in the buffer.
    m_ExpressionQuantificationBufferWriter.FlushBuffer();

    // Rewrite CHP files to get chip summary entires
    Verbose::out(1,"Creating final files for CHP output");
    Verbose::progressBegin(1, ToStr("Finalizing Expression CHP Files"), 
                           m_CHPFileNames.size(), 1, m_CHPFileNames.size());
    try {
        for (unsigned int chip = 0; chip < m_CHPFileNames.size(); chip++) {
            // open up tmp chp file to pull results from
            GenericData data;
            GenericFileReader reader;
            std::string filename = m_CHPFileNames[chip]+".tmp";
            reader.SetFilename(filename);
            reader.ReadHeader(data);

            GenericDataHeader* hdr = data.Header().GetGenericDataHdr();
            GenericDataHeader updateHdr;
            for (int source = 0; source < m_ChipSummaries.size(); source++) {
                ChipSummary::metricDefVec_t metricDefs = m_ChipSummaries[source]->getMetricDefs();
                for (int i = 0; i < metricDefs.size(); i++) {
                    ChipSummary::Metric metric;
                    if (!m_ChipSummaries[source]->getMetric(chip, metricDefs[i].m_name, metric)) {
                        Err::errAbort("QuantMethodExprCCCHPReport: metric '" + metricDefs[i].m_name +
                                      "' was not found");
                    }
                    std::wstring mName(CHIP_SUMMARY_PARAMETER_NAME_PREFIX);
                    mName += StringUtils::ConvertMBSToWCS(metric.m_Name);
                    ParameterNameValueType param;
                    if (hdr->FindNameValParam(mName, param) == false) {
                        Err::errAbort("QuantMethodExprCCCHPReport: metric name '" + StringUtils::ConvertWCSToMBS(mName) +
                                      "' could not be found in the header of " + filename);
                    }

                    switch (param.GetParameterType()) {
                    case ParameterNameValueType::Int8Type:
                        param.SetValueInt8((int8_t)metric.m_Integer);
                        break;
                    
                    case ParameterNameValueType::UInt8Type:
                        param.SetValueUInt8((u_int8_t)metric.m_Integer);
                        break;
                    
                    case ParameterNameValueType::Int16Type:
                        param.SetValueInt16((int16_t)metric.m_Integer);
                        break;
                    
                    case ParameterNameValueType::UInt16Type:
                        param.SetValueUInt16((u_int16_t)metric.m_Integer);
                        break;
                    
                    case ParameterNameValueType::Int32Type:
                        param.SetValueInt32((int32_t)metric.m_Integer);
                        break;
                    
                    case ParameterNameValueType::UInt32Type:
                        param.SetValueUInt32((u_int32_t)metric.m_Integer);
                        break;
                
                    case ParameterNameValueType::FloatType:
                        param.SetValueFloat((float)metric.m_Double);
                        break;
                
                    case ParameterNameValueType::TextType:
                        param.SetValueText(StringUtils::ConvertMBSToWCS(metric.m_String), (int) metric.m_String.length());
                        break;
                
                    case ParameterNameValueType::AsciiType:
                        if (metric.m_String.size() > 256) {
                            Err::errAbort("QuantMethodExprCCCHPReport: string header parameter too long, name = '" +
                                          metric.m_Name + "', value = '" + metric.m_String + "'");
                        }
                        param.SetValueAscii(metric.m_String, (int) metric.m_String.length());
                        break;

                    default:
                        Err::errAbort("QuantMethodExprCCCHPReport: unknown header parameter type found in file " +
                                      filename);
                    }
                    updateHdr.AddNameValParam(param);
                }
            }
            std::ofstream os;
            Fs::aptOpen(os, filename, std::ios::out|std::ios::binary|std::ios::in);
            if (!os) {
                Err::errAbort("QuantMethodExprCCCHPReport: file " + filename +
                              " could not be opened for writing");
            }
            GenericDataHeaderUpdater updater;
            updater.Update(os, updateHdr, *hdr);
            os.close();

            Verbose::progressStep(1);
        }
    } catch (...) {
        removeAllChps();
        Err::errAbort("Error in creating final CHP output.");
    }
    Verbose::progressEnd(1, ToStr("Done."));

    // Remove .tmp extension
    for (unsigned int i = 0; i < m_CHPFileNames.size(); i++) {
        std::string from = m_CHPFileNames[i] + ".tmp";
        std::string to = m_CHPFileNames[i];
        if (!Fs::fileRename(from.c_str(),to.c_str())) {
            removeAllChps();
            Err::errAbort("Unable to rename '" + from + "' to '" + to + "'");
        }
    }
    removeTmpChps();

    return true;
}
Esempio n. 8
0
/*
 * Get the grid coordinates.
 */
affymetrix_fusion_io::FGridCoords CalvinCELDataAdapter::GetGridCorners()
{
	affymetrix_fusion_io::FGridCoords zeroGrid;
	affymetrix_fusion_io::FGridCoords grid;
	ParameterNameValueType nvt;

	if (calvinCel.FindAlgorithmParameter(GRIDULX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.upperleft.x = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDULY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.upperleft.y = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDURX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.upperright.x = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDURY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.upperright.y = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDLRX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.lowerright.x = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDLRY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.lowerright.y = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDLLX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.lowerleft.x = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}

	if (calvinCel.FindAlgorithmParameter(GRIDLLY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
	{
		grid.lowerleft.y = nvt.GetValueFloat();
	}
	else
	{
		return zeroGrid;
	}
	return grid;

}