예제 #1
0
LocusWithAlleles :: LocusWithAlleles (const RGString& inputLine) : RGPersistent (), mLineNumber (0), mMaxRFU (0) {

	RGStringArray tokens;
	RGStringArray delimiters;
	RGString locusString (inputLine);
	locusString.FindAndReplaceAllSubstrings ("\t\t", "\t");
	RGStringTokenizer tokenizer (locusString);
	tokenizer.AddDelimiter ("\t");

	tokenizer.Split (tokens, delimiters);
	int size = tokens.Length ();
	int rfu;
	double fit;
	double residual;
	LocusAllele* newAllele;
	int i;

	if (size >= 8) {

		for (i=0; i<8; i++) {

			if ((tokens [i].Length () == 0) || (tokens [i] == "\t"))
				return;
		}

		mLineNumber = tokens [0].ConvertToInteger ();
		mLocusName = tokens [1];

		rfu = tokens [2].ConvertToInteger ();
		residual = tokens [3].ConvertToDouble ();
		fit = tokens [4].ConvertToDouble ();
		newAllele = new LocusAllele (rfu, residual, fit);
		InsertAllele (newAllele);

		rfu = tokens [5].ConvertToInteger ();
		residual = tokens [6].ConvertToDouble ();
		fit = tokens [7].ConvertToDouble ();
		newAllele = new LocusAllele (rfu, residual, fit);
		InsertAllele (newAllele);
	}
}
예제 #2
0
RGString LocusData :: FormXMLString () {

	RGString Result;

	if (AlleleStringIsEmpty ())
		return Result;

	RGTPtrDList<RGString> temp;
	RGString sixTabs = "\t\t\t\t\t\t";
	RGString sevenTabs = "\t\t\t\t\t\t\t";
	RGString eightTabs = "\t\t\t\t\t\t\t\t";
	Result << sixTabs << "<Locus>\n";
	Result << sevenTabs << "<Name>" << (char*)mLocusName.GetData () << "</Name>\n";
	RGString* nextAllele;

	while (mAlleleList.entries () > 0) {

		nextAllele = mAlleleList.RemoveFirst ();
		nextAllele->FindAndReplaceAllSubstrings ("\"", "");
		temp.append (nextAllele);
		Result << sevenTabs << "<Allele>\n";
		Result << eightTabs << "<Name>" << (char*)nextAllele->GetData () << "</Name>\n";
		Result << eightTabs << "<BioID>0</BioID>\n";
		Result << sevenTabs << "</Allele>\n";
	}

	Result << sixTabs << "</Locus>\n";

	//cout << (char*) Result.GetData ();

	while (temp.entries () > 0) {

		nextAllele = temp.RemoveFirst ();
		mAlleleList.append (nextAllele);
	}

	return Result;
}
예제 #3
0
void CoreBioComponent :: ReportXMLSmartSampleTableRowWithLinks (RGTextOutput& text, RGTextOutput& tempText) {

	RGString type;

	if (mIsNegativeControl)
		type = "-Control";

	else if (mIsPositiveControl)
		type = "+Control";

	else
		type = "Sample";

	RGString pResult;

	RGString SimpleFileName (mName);
	size_t startPos = 0;
	size_t endPos;
	size_t length = SimpleFileName.Length ();
	
	if (SimpleFileName.FindLastSubstringCaseIndependent (DirectoryManager::GetDataFileType (), startPos, endPos)) {

		if (endPos == length - 1)
			SimpleFileName.ExtractAndRemoveLastCharacters (4);
	}

	SimpleFileName.FindAndReplaceAllSubstrings ("\\", "/");
	startPos = endPos = 0;

	if (SimpleFileName.FindLastSubstring ("/", startPos, endPos)) {

		SimpleFileName.ExtractAndRemoveSubstring (0, startPos);
	}
	
	text << CLevel (1) << "\t\t<Sample>\n";
	text << "\t\t\t<Name>" << xmlwriter::EscAscii (SimpleFileName, &pResult) << "</Name>\n";
	text << "\t\t\t<SampleName>" << xmlwriter::EscAscii (mSampleName, &pResult) << "</SampleName>\n";
	text << "\t\t\t<RunStart>" << mRunStart.GetData () << "</RunStart>\n";
	text << "\t\t\t<Type>" << type.GetData () << "</Type>\n" << PLevel ();

	int trigger = Notice::GetMessageTrigger ();
//	int channelHighestLevel;
//	bool channelAlerts = false;
	int cbcHighestMsgLevel = GetHighestMessageLevelWithRestrictionSM ();
	RGDListIterator it (*mSmartMessageReporters);
	SmartMessageReporter* nextNotice;
	bool includesExportInfo = false;

	while (nextNotice = (SmartMessageReporter*) it ()) {

		if (nextNotice->HasViableExportInfo ()) {

			includesExportInfo = true;
			break;
		}
	}

	if (((cbcHighestMsgLevel > 0) && (cbcHighestMsgLevel <= trigger)) || includesExportInfo) {

//		text << CLevel (1) << "\t\t\t<SampleAlerts>\n" << PLevel ();

		// get message numbers and report
		ReportXMLSmartNoticeObjects (text, tempText, " ");

//		text << CLevel (1) << "\t\t\t</SampleAlerts>\n" << PLevel ();
	}

	mDataChannels [mLaneStandardChannel]->ReportXMLILSSmartNoticeObjects (text, tempText, " ");
	int i;

	//for (i=1; i<=mNumberOfChannels; i++) {

	//	//if (i == mLaneStandardChannel)
	//	//	continue;

	//	channelHighestLevel = mDataChannels [i]->GetHighestMessageLevelWithRestrictionSM ();

	//	if ((channelHighestLevel > 0) && (channelHighestLevel <= trigger)) {

	//		channelAlerts = true;
	//		break;
	//	}
	//}

//	if (channelAlerts) {

		text << CLevel (1) << "\t\t\t<ChannelAlerts>\n" << PLevel ();

		for (i=1; i<=mNumberOfChannels; i++) {

			if (i == mLaneStandardChannel)
				continue;

			mDataChannels [i]->ReportXMLSmartNoticeObjects (text, tempText, " ");
		}

		text << CLevel (1) << "\t\t\t</ChannelAlerts>\n" << PLevel ();
//	}

	mMarkerSet->ResetLocusList ();
	Locus* nextLocus;

	while (nextLocus = mMarkerSet->GetNextLocus ()) {

		nextLocus->ReportXMLSmartSampleTableRowWithLinks (text, tempText, " ");
	}

	if (mIsPositiveControl)
		text << CLevel (1) << "\t\t\t<PositiveControl>" << mPositiveControlName << "</PositiveControl>\n";

	text << CLevel (1) << "\t\t</Sample>\n" << PLevel ();
}