attributes = {
ORGANIZATIONNAME = "Schloss Lab";
};
- buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "mothur" */;
+ buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "Mothur" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "mothur" */ = {
+ 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "Mothur" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB928A08733DD80010E9CD /* Debug */,
# Macros
#
-USEMPI ?= yes
+USEMPI ?= no
64BIT_VERSION ?= yes
USEREADLINE ?= yes
CYGWIN_BUILD ?= no
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/resource.h>
+ #include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <direct.h> //get cwd
#include <windows.h>
#include <psapi.h>
-
+ #include <direct.h>
#endif
using namespace std;
alignLength = referenceSeqs[0].length();
- chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\tdistToBestMera\tnumParents";
+ chimeraReportFile << "queryName\tbestRef\tbestSequenceMismatch\tleftParentChi,rightParentChi\tbreakPointChi\tminMismatchToChimera\tdistToBestMera\tnumParents" << endl;
// chimeraReportFile << "leftParentTri,middleParentTri,rightParentTri\tbreakPointTriA,breakPointTriB\tminMismatchToTrimera\tdistToBestMera\tnMera" << endl;
}
int lDiffs = 0;
for(int l=0;l<alignLength;l++){
- if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+// if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+ if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l]){
lDiffs++;
}
left[i][l] = lDiffs;
int rDiffs = 0;
int index = 0;
for(int l=alignLength-1;l>=0;l--){
- if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+// if(querySeq[l] != '.' && querySeq[l] != referenceSeqs[i][l]){
+ if(querySeq[l] != '.' && referenceSeqs[i][l] != '.' && querySeq[l] != referenceSeqs[i][l]){
rDiffs++;
}
right[i][index++] = rDiffs;
int mismatch = 0;
for(int i=0;i<alignLength;i++){
- if(querySeq[i] != '.' && chimeraRefSeq[i] != '.'){
+// if(querySeq[i] != '.' && chimeraRefSeq[i] != '.'){
+ if(chimeraRefSeq[i] != '.'){
if(querySeq[i] == '-' && chimeraRefSeq[i] == '-'){ /* do nothing */ }
else if(querySeq[i] == chimeraRefSeq[i]){
match++;
//***************************************************************************************************************
-SeqErrorCommand::~SeqErrorCommand(){
-
-}
+SeqErrorCommand::~SeqErrorCommand(){ /* void */ }
//***************************************************************************************************************
RefChimeraTest chimeraTest(referenceSeqs, errorChimeraFileName);
outputNames.push_back(errorChimeraFileName); outputTypes["error.chimera"].push_back(errorChimeraFileName);
+ vector<string> megaAlignVector(numRefs, "");
+
int index = 0;
bool ignoreSeq = 0;
else { minCompare.weight = 1; }
printErrorData(minCompare, numParentSeqs);
-
+
+
if(!ignoreSeq){
for(int i=0;i<minCompare.total;i++){
char letter = minCompare.sequence[i];
if(qualFileName != "" && reportFileName != ""){
report = ReportFile(reportFile);
- int origLength = report.getQueryLength();
+// int origLength = report.getQueryLength();
int startBase = report.getQueryStart();
int endBase = report.getQueryEnd();
}
misMatchCounts[minCompare.mismatches] += minCompare.weight;
numSeqs++;
+
+
+ megaAlignVector[closestRefIndex] += query.getInlineSeq() + '\n';
}
index++;
printSubMatrix();
+ string megAlignmentFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".ref-query";
+ ofstream megAlignmentFile;
+ m->openOutputFile(megAlignmentFileName, megAlignmentFile);
+
+ for(int i=0;i<numRefs;i++){
+ megAlignmentFile << referenceSeqs[i].getInlineSeq() << endl;
+ megAlignmentFile << megaAlignVector[i] << endl;
+ }
+
+
m->mothurOutEndLine();
m->mothurOut("Output File Names: "); m->mothurOutEndLine();
for (int i = 0; i < outputNames.size(); i++) { m->mothurOut(outputNames[i]); m->mothurOutEndLine(); }
int numAmbigSeqs = 0;
+ int maxStartPos = 0;
+ int minEndPos = 100000;
+
while(referenceFile){
Sequence currentSeq(referenceFile);
int numAmbigs = currentSeq.getAmbigBases();
if(numAmbigs > 0){ numAmbigSeqs++; }
+
+ int startPos = currentSeq.getStartPos();
+ if(startPos > maxStartPos) { maxStartPos = startPos; }
+
+ int endPos = currentSeq.getEndPos();
+ if(endPos < minEndPos) { minEndPos = endPos; }
referenceSeqs.push_back(currentSeq);
m->gobble(referenceFile);
}
referenceFile.close();
+ numRefs = referenceSeqs.size();
+
+ for(int i=0;i<numRefs;i++){
+ referenceSeqs[i].padToPos(maxStartPos);
+ referenceSeqs[i].padFromPos(minEndPos);
+ }
if(numAmbigSeqs != 0){
m->mothurOut("Warning: " + toString(numAmbigSeqs) + " reference sequences have ambiguous bases, these bases will be ignored\n");
- }
+ }
- numRefs = referenceSeqs.size();
}
catch(exception& e) {
m->errorOut(e, "SeqErrorCommand", "getReferences");
if(started == 1){ break; }
}
else if(q[i] != '.' && r[i] == '.'){ // query extends beyond reference
-// m->mothurOut("Warning: " + toString(query.getName()) + " extend beyond " + toString(reference.getName()) + ". Ignoring the extra bases in the query\n");
if(started == 1){ break; }
}
else if(q[i] == '.' && r[i] == '.'){ // both are missing data
else { return aligned; }
}
+//********************************************************************************************************************
+
+string Sequence::getInlineSeq(){
+ return name + '\t' + aligned;
+}
+
+
//********************************************************************************************************************
string Sequence::getPairwise(){
//********************************************************************************************************************
int Sequence::getStartPos(){
- if(endPos == -1){
+ if(startPos == -1){
for(int j = 0; j < alignmentLength; j++) {
if(aligned[j] != '.'){
startPos = j + 1;
//********************************************************************************************************************
+void Sequence::padToPos(int start){
+
+ for(int j = startPos-1; j < start-1; j++) {
+ aligned[j] = '.';
+ }
+ startPos = start;
+
+}
+
+//********************************************************************************************************************
+
int Sequence::getEndPos(){
if(endPos == -1){
for(int j=alignmentLength-1;j>=0;j--){
//********************************************************************************************************************
+void Sequence::padFromPos(int end){
+
+ for(int j = end; j < endPos; j++) {
+ aligned[j] = '.';
+ }
+ endPos = end;
+
+}
+
+//********************************************************************************************************************
+
bool Sequence::getIsAligned(){
return isAligned;
}
string getAligned();
string getPairwise();
string getUnaligned();
+ string getInlineSeq();
int getNumBases();
int getStartPos();
int getEndPos();
+ void padToPos(int);
+ void padFromPos(int);
int getAlignLength();
int getAmbigBases();
void removeAmbigBases();