diff -Nru comet-ms-2017014/Comet.cpp comet-ms-2018012/Comet.cpp --- comet-ms-2017014/Comet.cpp 2018-02-21 09:43:02.000000000 +0000 +++ comet-ms-2018012/Comet.cpp 2018-10-17 13:05:18.000000000 +0000 @@ -35,7 +35,7 @@ ICometSearchManager *pSearchMgr); void LoadParameters(char *pszParamsFile, ICometSearchManager *pSearchMgr); void PrintParams(); -bool ValidateInputMsMsFile(char *pszInputFileName); +bool ValidateInputFile(char *pszInputFileName); int main(int argc, char *argv[]) @@ -228,7 +228,8 @@ sscanf(szParamBuf, "%*s %*s %128s %12s %12s", szVersion, szRev1, szRev2); - if (pSearchMgr->IsValidCometVersion(string(szVersion))) + if (pSearchMgr->IsValidCometVersion(string(szVersion)) + || strstr(szVersion, "2017.01")) // also compatible with 2017.01 params { bValidParamsFile = true; sprintf(szVersion, "%s %s %s", szVersion, szRev1, szRev2); @@ -637,6 +638,15 @@ sprintf(szParamStringVal, "%d", iIntParam); pSearchMgr->SetParam("skip_researching", szParamStringVal, iIntParam); } +/* + else if (!strcmp(szParamName, "skip_updatecheck")) + { + sscanf(szParamVal, "%d", &iIntParam); + szParamStringVal[0] = '\0'; + sprintf(szParamStringVal, "%d", iIntParam); + pSearchMgr->SetParam("skip_updatecheck", szParamStringVal, iIntParam); + } +*/ else if (!strcmp(szParamName, "peff_verbose_output")) { sscanf(szParamVal, "%d", &iIntParam); @@ -923,7 +933,7 @@ sprintf(szParamStringVal, "%d", iIntParam); pSearchMgr->SetParam("override_charge", szParamStringVal, iIntParam); } - else if (!strcmp(szParamName, "correct_mass")) + else if (!strcmp(szParamName, "correct_mass")) // hidden param { iIntParam = 0; sscanf(szParamVal, "%d", &iIntParam); @@ -937,7 +947,7 @@ sscanf(szParamVal, "%d", &iIntParam); szParamStringVal[0] = '\0'; sprintf(szParamStringVal, "%d", iIntParam); - pSearchMgr->SetParam("assume_IL_equal", szParamStringVal, iIntParam); + pSearchMgr->SetParam("equal_I_and_L", szParamStringVal, iIntParam); } else if (!strcmp(szParamName, "max_fragment_charge")) { @@ -1129,7 +1139,7 @@ strncpy(pInputFile->szFileName, cmd, i); pInputFile->szFileName[i] = '\0'; - if (!ValidateInputMsMsFile(pInputFile->szFileName)) + if (!ValidateInputFile(pInputFile->szFileName)) { return false; } @@ -1303,12 +1313,12 @@ "#\n\ # masses\n\ #\n\ -peptide_mass_tolerance = 3.00\n\ -peptide_mass_units = 0 # 0=amu, 1=mmu, 2=ppm\n\ +peptide_mass_tolerance = 20.00\n\ +peptide_mass_units = 2 # 0=amu, 1=mmu, 2=ppm\n\ mass_type_parent = 1 # 0=average masses, 1=monoisotopic masses\n\ mass_type_fragment = 1 # 0=average masses, 1=monoisotopic masses\n\ -precursor_tolerance_type = 0 # 0=MH+ (default), 1=precursor m/z; only valid for amu/mmu tolerances\n\ -isotope_error = 0 # 0=off, 1=0/1 (C13 error), 2=0/1/2, 3=0/1/2/3, 4=-8/-4/0/4/8 (for +4/+8 labeling)\n\ +precursor_tolerance_type = 1 # 0=MH+ (default), 1=precursor m/z; only valid for amu/mmu tolerances\n\ +isotope_error = 3 # 0=off, 1=0/1 (C13 error), 2=0/1/2, 3=0/1/2/3, 4=-8/-4/0/4/8 (for +4/+8 labeling)\n\ \n\ #\n\ # search enzyme\n\ @@ -1391,6 +1401,7 @@ clip_nterm_methionine = 0 # 0=leave sequences as-is; 1=also consider sequence w/o N-term methionine\n\ spectrum_batch_size = 0 # max. # of spectra to search at a time; 0 to search the entire scan range in one loop\n\ decoy_prefix = DECOY_ # decoy entries are denoted by this string which is pre-pended to each protein accession\n\ +equal_I_and_L = 1 # 0=treat I and L as different; 1=treat I and L as same\n\ output_suffix = # add a suffix to output base names i.e. suffix \"-C\" generates base-C.pep.xml from base.mzXML input\n\ mass_offsets = # one or more mass offsets to search (values substracted from deconvoluted precursor mass)\n\ \n\ @@ -1464,7 +1475,7 @@ } // PrintParams -bool ValidateInputMsMsFile(char *pszInputFileName) +bool ValidateInputFile(char *pszInputFileName) { FILE *fp; if ((fp = fopen(pszInputFileName, "r")) == NULL) diff -Nru comet-ms-2017014/CometSearch/CometCheckForUpdates.cpp comet-ms-2018012/CometSearch/CometCheckForUpdates.cpp --- comet-ms-2017014/CometSearch/CometCheckForUpdates.cpp 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometCheckForUpdates.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -0,0 +1,217 @@ +/* + Copyright 2012 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "CometCheckForUpdates.h" + + +CometCheckForUpdates::CometCheckForUpdates() +{ +} + + +CometCheckForUpdates::~CometCheckForUpdates() +{ +} + + +static void fail (int test, const char * format, ...) +{ + if (test) + { + va_list args; + va_start (args, format); + vfprintf (stderr, format, args); + va_end (args); + exit (EXIT_FAILURE); + } +} + + +void CometCheckForUpdates::CheckForUpdates(char *szOut) +{ + +#ifndef NOUPDATECHECK +#define BSIZE 4096 // hold return buffer from webpage + + struct addrinfo hints, *res, *res0; + int error; + int s; // Get one of the web pages here + const char *host = "comet-ms.sourceforge.net"; + const char *page = "current_version.htm"; + +#ifdef WIN32 +#define snprintf _snprintf +#define close _close + WSADATA wsaData; + if (WSAStartup(0x202, &wsaData) != 0) + { + printf(" Error - WSAStartup initialization failure.\n"); + exit(1); + } +#endif + + memset (&hints, 0, sizeof (hints)); + + hints.ai_family = PF_UNSPEC; // Don't specify what type of internet connection. + hints.ai_socktype = SOCK_STREAM; + error = getaddrinfo (host, "http", & hints, & res0); + fail(error, gai_strerror (error)); + s = -1; + + for (res = res0; res; res = res->ai_next) + { + s = socket(res->ai_family, res->ai_socktype, res->ai_protocol); + fail(s < 0, "socket: %s\n", strerror (errno)); + if (connect(s, res->ai_addr, res->ai_addrlen) != 0) + { + fprintf(stderr, "connect: %s\n", strerror (errno)); + close(s); + exit(EXIT_FAILURE); + } + break; + } + + if (s != -1) + { + int status; // This holds return values from functions. + char szMsg[BSIZE]; // szMsg is the request message that we will send to the server. + char *pStr; + + status = snprintf(szMsg, BSIZE, "GET /%s HTTP/1.0\r\nHost: %s\r\nUser-Agent: Comet\r\n\r\n", page, host); + fail(status == -1 || status>BSIZE, "snprintf failed.\n"); + + status = send(s, szMsg, strlen (szMsg), 0); // Send the request + fail(status == -1, "send failed: %s\n", strerror (errno)); + + while (1) + { + int bytes; // The number of bytes received. + char buf[BSIZE+10]; // Our receiving buffer. + bytes = recvfrom(s, buf, BSIZE, 0, 0, 0); // Get "BSIZE" bytes from "s". + + if (bytes == 0) // Stop once there is nothing left to print. + break; + + fail(bytes == -1, "%s\n", strerror (errno)); + buf[bytes] = '\0'; // Nul-terminate the string before printing. + + if ((pStr = strstr(buf, "Comet 20"))!=NULL && strstr(buf, " rev. ")) + { + char szOnlineVersion[128]; + char szCurrentVersion[128]; + + strcpy(szOnlineVersion, pStr+6); + while ((szOnlineVersion[strlen(szOnlineVersion)-1]) < 32 || (szOnlineVersion[strlen(szOnlineVersion)-1])>126) + szOnlineVersion[strlen(szOnlineVersion)-1] = '\0'; // strip termination chars + + strcpy(szCurrentVersion, comet_version); + + if (strcmp(szCurrentVersion, szOnlineVersion) < 0 && !g_staticParams.options.bOutputSqtStream) + sprintf(szOut+strlen(szOut), " **UPDATE AVAILABLE**"); + + break; + } + + // parse out line containing string "Comet 20" for version e.g. "Comet 2018.01 rev. 5". + } + } + + freeaddrinfo(res0); + + SendAnalyticsHit(); // google analytics tracking +#ifdef WIN32 + WSACleanup(); +#endif + +#endif +} + + +void CometCheckForUpdates::SendAnalyticsHit(void) +{ + int portno = 80; + char *host = "www.google-analytics.com"; + + struct hostent *server; + struct sockaddr_in serv_addr; + int sockfd, bytes, sent, total; + + char postData[1024]; + char message[1024]; + memset(message, 0, 1024); + sprintf(postData, "v=1&tid=UA-35341957-1&cid=555&t=event&ec=comet&ea=exe&el=%s", comet_version); + snprintf(message, 1024, + "POST /collect HTTP/1.1\r\n" + "Host: %s\r\n" + "Content-type: application/x-www-form-urlencoded\r\n" + "Content-length: %d\r\n\r\n" + "%s\r\n", host, (int)strlen(postData), postData); + + // create the socket + sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); +#ifdef WIN32 + if (sockfd == INVALID_SOCKET) + { + WSACleanup(); + return; + } +#else + if (sockfd == -1) + return; +#endif + + // lookup the ip address + server = gethostbyname(host); + if (server == NULL) + return; + + // fill in the structure + memset(&serv_addr,0,sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(portno); + memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); + + // connect the socket + if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) != 0) + return; + + // send the request + total = strlen(message); +#ifdef WIN32 + bytes = send(sockfd, message, total, 0); + // no point in checking return value here as the + // analytics message was sent or it wasn't + closesocket(sockfd); + WSACleanup(); +#else + sent = 0; + do + { + bytes = write(sockfd,message+sent,total-sent); + if (bytes < 0) + { + printf("ERROR writing message to socket"); + return; + } + if (bytes == 0) + break; + sent+=bytes; + } while (sent < total); + + // close the socket + close(sockfd); +#endif +} diff -Nru comet-ms-2017014/CometSearch/CometCheckForUpdates.h comet-ms-2018012/CometSearch/CometCheckForUpdates.h --- comet-ms-2017014/CometSearch/CometCheckForUpdates.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometCheckForUpdates.h 2018-06-13 06:57:56.000000000 +0000 @@ -0,0 +1,55 @@ +/* + Copyright 2013 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _COMETCHECKFORUPDATES_H_ +#define _COMETCHECKFORUPDATES_H_ + +#include "Common.h" +#include "CometDataInternal.h" + +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#endif + +class CometCheckForUpdates +{ +public: + CometCheckForUpdates(); + ~CometCheckForUpdates(); + + static void CheckForUpdates(char *szOut); + +private: + static void SendAnalyticsHit(void); + +}; + +#endif // _COMETCHECKFORUPDATES_H_ diff -Nru comet-ms-2017014/CometSearch/CometDataInternal.h comet-ms-2018012/CometSearch/CometDataInternal.h --- comet-ms-2017014/CometSearch/CometDataInternal.h 2018-02-21 09:43:06.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometDataInternal.h 2018-06-13 06:57:56.000000000 +0000 @@ -97,13 +97,14 @@ int bOutputOutFiles; int bClipNtermMet; // 0=leave sequences alone; 1=also consider w/o N-term methionine int bSkipAlreadyDone; // 0=search everything; 1=don't re-search if .out exists + int bSkipUpdateCheck; // 0=do not check for updates; 1=check for updates int bMango; // 0=normal; 1=Mango x-link ms2 input int bVerboseOutput; int bNoEnzymeSelected; int bShowFragmentIons; int bPrintExpectScore; int bOverrideCharge; - int bCorrectMass; + int bCorrectMass; // in cases where Thermo chooses precursor m/z outside of selection window int bTreatSameIL; double dMinIntensity; double dRemovePrecursorTol; @@ -140,6 +141,7 @@ bOutputOutFiles = a.bOutputOutFiles; bClipNtermMet = a.bClipNtermMet; bSkipAlreadyDone = a.bSkipAlreadyDone; + bSkipUpdateCheck = a.bSkipUpdateCheck; bMango = a.bMango; bVerboseOutput = a.bVerboseOutput; bNoEnzymeSelected = a.bNoEnzymeSelected; @@ -619,6 +621,7 @@ options.bOutputOutFiles = 0; options.bSkipAlreadyDone = 1; + options.bSkipUpdateCheck = 0; options.bMango = 0; options.bVerboseOutput = 0; options.iDecoySearch = 0; @@ -637,7 +640,7 @@ options.iMSLevel = 2; options.dMinIntensity = 0.0; options.dPeptideMassLow = 600.0; - options.dPeptideMassHigh = 5000.0; + options.dPeptideMassHigh = 8000.0; strcpy(options.szActivationMethod, "ALL"); // End of mzXML specific parameters. diff -Nru comet-ms-2017014/CometSearch/CometPostAnalysis.cpp comet-ms-2018012/CometSearch/CometPostAnalysis.cpp --- comet-ms-2017014/CometSearch/CometPostAnalysis.cpp 2018-02-21 09:43:04.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometPostAnalysis.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -696,8 +696,8 @@ iMaxFragCharge = pQuery->_spectrumInfoInternal.iMaxFragCharge; - // DECOY_SIZE is the minimum # of decoys required or else this function is - // called. So need generate iLoopMax more xcorr scores for the histogram. + // DECOY_SIZE is the minimum # of decoys required or else this function isn't + // called. So need to generate iLoopMax more xcorr scores for the histogram. int iLoopMax = DECOY_SIZE - pQuery->iHistogramCount; int iLastEntry; diff -Nru comet-ms-2017014/CometSearch/CometPreprocess.cpp comet-ms-2018012/CometSearch/CometPreprocess.cpp --- comet-ms-2017014/CometSearch/CometPreprocess.cpp 2018-02-21 09:43:04.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometPreprocess.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -1145,6 +1145,22 @@ pScoring->_pepMassInfo.dPeptideMassTolerancePlus = pScoring->_pepMassInfo.dExpPepMass + pScoring->_pepMassInfo.dPeptideMassTolerance + 8.1; } + else if (g_staticParams.tolerances.iIsotopeError == 5) // search -1, 0, +1, +2, +3 isotope windows + { + pScoring->_pepMassInfo.dPeptideMassToleranceMinus = pScoring->_pepMassInfo.dExpPepMass + - pScoring->_pepMassInfo.dPeptideMassTolerance - 3.0 * C13_DIFF * PROTON_MASS; + + pScoring->_pepMassInfo.dPeptideMassTolerancePlus = pScoring->_pepMassInfo.dExpPepMass + + pScoring->_pepMassInfo.dPeptideMassTolerance + 1.0 * C13_DIFF * PROTON_MASS; + } + else if (g_staticParams.tolerances.iIsotopeError == 6) // search -3, -2, -1, 0, +1, +2, +3 isotope windows + { + pScoring->_pepMassInfo.dPeptideMassToleranceMinus = pScoring->_pepMassInfo.dExpPepMass + - pScoring->_pepMassInfo.dPeptideMassTolerance - 3.0 * C13_DIFF * PROTON_MASS; + + pScoring->_pepMassInfo.dPeptideMassTolerancePlus = pScoring->_pepMassInfo.dExpPepMass + + pScoring->_pepMassInfo.dPeptideMassTolerance + 3.0 * C13_DIFF * PROTON_MASS; + } else // Should not get here. { char szErrorMsg[256]; diff -Nru comet-ms-2017014/CometSearch/CometSearch.cpp comet-ms-2018012/CometSearch/CometSearch.cpp --- comet-ms-2017014/CometSearch/CometSearch.cpp 2018-02-21 09:43:06.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometSearch.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -68,7 +68,7 @@ char szErrorMsg[256]; sprintf(szErrorMsg, " Error - new(_ppbDuplFragmentArr[%d]). bad_alloc: %s.\n", iArraySize, ba.what()); sprintf(szErrorMsg+strlen(szErrorMsg), "Comet ran out of memory. Look into \"spectrum_batch_size\"\n"); - sprintf(szErrorMsg+strlen(szErrorMsg), "parameters to address mitigate memory use.\n"); + sprintf(szErrorMsg+strlen(szErrorMsg), "parameters to mitigate memory use.\n"); string strErrorMsg(szErrorMsg); g_cometStatus.SetStatus(CometResult_Failed, strErrorMsg); logerr(szErrorMsg); @@ -299,10 +299,23 @@ char *pStr2; pStr += iLenAttributeMod; - if ( (pStr2 = strchr(pStr, ' '))!=NULL) - iLen = pStr2 - pStr; - else - iLen = strlen(szPeffLine) - (pStr - szPeffLine); + pStr2 = pStr; + + // need to find closing parenthesis + int iTmp=0; // count of number of open parenthesis + while (1) + { + if ((iTmp == 0 && *pStr2 == ' ') || *pStr2 == '\r' || *pStr2=='\n') + break; + else if (*pStr2 == '(') + iTmp++; + else if (*pStr2 == ')') + iTmp--; + + *pStr2++; + } + + iLen = pStr2 - pStr; if ( iLen > iLenAllocMods) { @@ -323,7 +336,22 @@ } strncpy(szMods, pStr, iLen); - szMods[iLen]=0; + szMods[iLen]='\0'; + + if ( (pStr2 = strrchr(szMods, ')'))!=NULL) + { + pStr2++; + *pStr2 = '\0'; + } + else + { + char szErrorMsg[512]; + sprintf(szErrorMsg, " Error: PEFF entry '%s' missing mod closing parenthesis\n", dbe.strName.c_str()); + string strErrorMsg(szErrorMsg); + g_cometStatus.SetStatus(CometResult_Failed, strErrorMsg); + logerr(szErrorMsg); + return false; + } int iPos; string strModID; @@ -338,6 +366,9 @@ iPos = 0; + if (strModEntry.length() < 8) // strModEntry should look like "(1|XXX:1|name" + break; + // at this point, strModEntry should look like (118,121|MOD:00000 if (strModEntry[0]=='(' && isdigit(strModEntry[1])) //handle possible '?' in the position field ; need to check that strModEntry looks like "(number" { @@ -367,7 +398,7 @@ if (g_staticParams.options.bVerboseOutput) { char szErrorMsg[512]; - sprintf(szErrorMsg, "Warning: %s, %s=(%d|%s) ignored\n", dbe.strName.c_str(), szAttributeMod, iPos, strModID.c_str()); + sprintf(szErrorMsg, "Warning: %s, %s=(%d|%s) ignored; modentry: %s\n", dbe.strName.c_str(), szAttributeMod, iPos, strModID.c_str(), strModEntry.c_str()); string strErrorMsg(szErrorMsg); g_cometStatus.SetStatus(CometResult_Failed, strErrorMsg); logerr(szErrorMsg); @@ -393,7 +424,7 @@ if (g_staticParams.options.bVerboseOutput) { char szErrorMsg[512]; - sprintf(szErrorMsg, "Warning: %s, %s=(%d|%s) ignored\n", dbe.strName.c_str(), szAttributeMod, iPos, strModID.c_str()); + sprintf(szErrorMsg, "Warning: %s, %s=(%d|%s) ignored; modentry: %s\n", dbe.strName.c_str(), szAttributeMod, iPos, strModID.c_str(), strModEntry.c_str()); string strErrorMsg(szErrorMsg); g_cometStatus.SetStatus(CometResult_Failed, strErrorMsg); logerr(szErrorMsg); @@ -407,10 +438,23 @@ char *pStr2; pStr += iLenAttributeVariant; - if ( (pStr2 = strchr(pStr, ' '))!=NULL) - iLen = pStr2 - pStr; - else - iLen = strlen(szPeffLine) - (pStr - szPeffLine); + pStr2 = pStr; + + // need to find closing parenthesis + int iTmp=0; // count of number of open parenthesis + while (1) + { + if ((iTmp == 0 && *pStr2 == ' ') || *pStr2 == '\r' || *pStr2=='\n') + break; + else if (*pStr2 == '(') + iTmp++; + else if (*pStr2 == ')') + iTmp--; + + *pStr2++; + } + + iLen = pStr2 - pStr; if ( iLen > iLenAllocMods) { @@ -430,7 +474,22 @@ } strncpy(szMods, pStr, iLen); - szMods[iLen]=0; + szMods[iLen]='\0'; + + if ( (pStr2 = strrchr(szMods, ')'))!=NULL) + { + pStr2++; + *pStr2 = '\0'; + } + else + { + char szErrorMsg[512]; + sprintf(szErrorMsg, " Error: PEFF entry '%s' missing variant closing parenthesis\n", dbe.strName.c_str()); + string strErrorMsg(szErrorMsg); + g_cometStatus.SetStatus(CometResult_Failed, strErrorMsg); + logerr(szErrorMsg); + return false; + } // parse VariantSimple entries string strMods(szMods); @@ -1380,17 +1439,19 @@ // This function will return true if unmodified peptide mass + any combination of // PEFF mod is within mass tolerance of any peptide query bool CometSearch::WithinMassTolerancePeff(double dCalcPepMass, - vector* vPeffArray) + vector* vPeffArray, + int iStartPos, + int iEndPos) { int i; -/* + +/* // Print out list of PEFF mods - int ii; for (i=0; i<(int) (*vPeffArray).size(); i++) { printf("*** OK %d. position %d\n", i, (*vPeffArray).at(i).iPosition); - for (ii=0; ii<(int)(*vPeffArray).at(i).vectorWhichPeff.size(); ii++) + for (int ii=0; ii<(int)(*vPeffArray).at(i).vectorWhichPeff.size(); ii++) { printf(" ... %f %f\n", (*vPeffArray).at(i).vectorMassDiffMono.at(ii), @@ -1401,63 +1462,36 @@ // number of residues with a PEFF mod int n = (int)(*vPeffArray).size(); - - vector a(n); - vector len(n); - int j; - - for (i = 0 ; i < n ; i++) - { - // number of mods at each residue position - len[i] = (int)(*vPeffArray).at(i).vectorWhichPeff.size(); - - a[i]=0; - } - double dMassAddition; - bool bFirst=true; - // permute through all combination of PEFF mods; return true if any are of right mass - while (1) + // permute through each PEFF mod; return true if any are of right mass; only 1 PEFF mod at a time + + for (i=0 ; i= iStartPos && (*vPeffArray).at(i).iPosition <=iEndPos) { - dMassAddition = 0.0; - for (i=0; i0) - dMassAddition += (*vPeffArray).at(i).vectorMassDiffMono.at(a[i]-1); - } + dMassAddition = (*vPeffArray).at(i).vectorMassDiffMono.at(ii); - // if dCalcPepMass + dMassAddition is within mass tol, add these mods + // if dCalcPepMass + dMassAddition is within mass tol, add these mods - // At this stage here, just need to see if any PEFF combination is within mass tolerance - // of any entry. If so, simply return true here and will repeat the PEFF permutations later. + // At this stage here, just need to see if any PEFF mod addition is within mass tolerance + // of any entry. If so, simply return true here and will repeat the PEFF permutations later. - // Do a binary search on list of input queries to find matching mass. - int iPos=BinarySearchMass(0, g_pvQuery.size(), dCalcPepMass + dMassAddition); - - // Seek back to first peptide entry that matches mass tolerance in case binary - // search doesn't hit the first entry. - while (iPos>0 && g_pvQuery.at(iPos)->_pepMassInfo.dPeptideMassTolerancePlus >= dCalcPepMass) - iPos--; + // Do a binary search on list of input queries to find matching mass. + int iPos=BinarySearchMass(0, g_pvQuery.size(), dCalcPepMass + dMassAddition); - if (iPos != -1) - return true; - } - else - bFirst=false; + // Seek back to first peptide entry that matches mass tolerance in case binary + // search doesn't hit the first entry. + while (iPos>0 && g_pvQuery.at(iPos)->_pepMassInfo.dPeptideMassTolerancePlus >= dCalcPepMass) + iPos--; - for (j=n-1; j>=0; j--) - { - if (++a[j]<=len[j]) - break; - else - a[j]=0; + if (iPos != -1) + return true; + } } - - if (j<0) - break; } return false; @@ -1687,23 +1721,26 @@ else if (g_staticParams.tolerances.iIsotopeError == 2) { double dC13diff = C13_DIFF; + double d2C13diff = C13_DIFF + C13_DIFF; for (int i=0; i_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance)) + || (fabs(dTmpDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) { return true; } } return false; } - else if (g_staticParams.tolerances.iIsotopeError == 2) + else if (g_staticParams.tolerances.iIsotopeError == 3) { double dC13diff = C13_DIFF; double d2C13diff = C13_DIFF + C13_DIFF; + double d3C13diff = C13_DIFF + C13_DIFF + C13_DIFF; for (int i=0; i_pepMassInfo.dPeptideMassTolerance) || (fabs(dTmpDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) + || (fabs(dTmpDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) { return true; } } return false; } - else if (g_staticParams.tolerances.iIsotopeError == 3) + else if (g_staticParams.tolerances.iIsotopeError == 4) + { + for (int i=0; i_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - 4.0070995) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - 8.014199) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + 4.0070995) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + 8.014199) <= pQuery->_pepMassInfo.dPeptideMassTolerance)) + { + return true; + } + } + return false; + } + else if (g_staticParams.tolerances.iIsotopeError == 5) { double dC13diff = C13_DIFF; double d2C13diff = C13_DIFF + C13_DIFF; @@ -1731,24 +1786,31 @@ if ( (fabs(dTmpDiff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) || (fabs(dTmpDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) || (fabs(dTmpDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) + || (fabs(dTmpDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance)) { return true; } } return false; } - else if (g_staticParams.tolerances.iIsotopeError == 4) + else if (g_staticParams.tolerances.iIsotopeError == 6) { + double dC13diff = C13_DIFF; + double d2C13diff = C13_DIFF + C13_DIFF; + double d3C13diff = C13_DIFF + C13_DIFF + C13_DIFF; + for (int i=0; i_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff - 4.0070995) <= pQuery->_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff - 8.014199) <= pQuery->_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff + 4.0070995) <= pQuery->_pepMassInfo.dPeptideMassTolerance) - || (fabs(dTmpDiff + 8.014199) <= pQuery->_pepMassInfo.dPeptideMassTolerance)) + if ( (fabs(dTmpDiff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dTmpDiff + d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) { return true; } @@ -1828,6 +1890,40 @@ } return false; } + else if (g_staticParams.tolerances.iIsotopeError == 5) + { + double dC13diff = C13_DIFF; + double d2C13diff = C13_DIFF + C13_DIFF; + double d3C13diff = C13_DIFF + C13_DIFF + C13_DIFF; + + if ( (fabs(dMassDiff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff + dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance)) + { + return true; + } + return false; + } + else if (g_staticParams.tolerances.iIsotopeError == 6) + { + double dC13diff = C13_DIFF; + double d2C13diff = C13_DIFF + C13_DIFF; + double d3C13diff = C13_DIFF + C13_DIFF + C13_DIFF; + + if ( (fabs(dMassDiff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff - d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff + dC13diff) <= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff + d2C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance) + || (fabs(dMassDiff + d3C13diff)<= pQuery->_pepMassInfo.dPeptideMassTolerance)) + { + return true; + } + return false; + } else { char szErrorMsg[256]; @@ -2265,8 +2361,9 @@ else pQuery->_pDecoys[siLowestDecoySpScoreIndex].szPrevNextAA[1] = szProteinSeq[iEndPos + 1]; +//FIX this iPefPos-1 makes no sense! Is it correct?? // store PEFF info; +1 and -1 to account for PEFF in flanking positions - if (_proteinInfo.iPeffOrigResiduePosition-1 != -9 && (iStartPos <= _proteinInfo.iPeffOrigResiduePosition+1) && (_proteinInfo.iPeffOrigResiduePosition-1 <=iEndPos)) + if (_proteinInfo.iPeffOrigResiduePosition != -9 && (iStartPos-1 <= _proteinInfo.iPeffOrigResiduePosition) && (_proteinInfo.iPeffOrigResiduePosition <= iEndPos+1)) { pQuery->_pDecoys[siLowestDecoySpScoreIndex].iPeffOrigResiduePosition = _proteinInfo.iPeffOrigResiduePosition - iStartPos; pQuery->_pDecoys[siLowestDecoySpScoreIndex].cPeffOrigResidue = _proteinInfo.cPeffOrigResidue; @@ -2374,7 +2471,7 @@ pQuery->_pResults[siLowestSpScoreIndex].szPrevNextAA[1] = szProteinSeq[iEndPos + 1]; // store PEFF info; +1 and -1 to account for PEFF in flanking positions - if (_proteinInfo.iPeffOrigResiduePosition-1 != -9 && (iStartPos <= _proteinInfo.iPeffOrigResiduePosition+1) && (_proteinInfo.iPeffOrigResiduePosition-1 <=iEndPos)) + if (_proteinInfo.iPeffOrigResiduePosition != -9 && (iStartPos-1 <= _proteinInfo.iPeffOrigResiduePosition) && (_proteinInfo.iPeffOrigResiduePosition <= iEndPos+1)) { pQuery->_pResults[siLowestSpScoreIndex].iPeffOrigResiduePosition = _proteinInfo.iPeffOrigResiduePosition - iStartPos; pQuery->_pResults[siLowestSpScoreIndex].cPeffOrigResidue = _proteinInfo.cPeffOrigResidue; @@ -2950,7 +3047,8 @@ else iLenProteinMinus1 = _proteinInfo.iProteinSeqLength - 1; - if ((int)dbe->vectorPeffMod.size() > 0) + // do not apply PEFF mods to a PEFF variant peptide + if (_proteinInfo.iPeffOrigResiduePosition < 0 && (int)dbe->vectorPeffMod.size() > 0) { bool bMatch; @@ -3381,7 +3479,6 @@ } } - bool bValid = true; // since we're varying iEndPos, check enzyme consistency first @@ -3576,7 +3673,7 @@ } if (bPeff) - bDoPeffAnalysis = WithinMassTolerancePeff(dTmpCalcPepMass, &vPeffArray); + bDoPeffAnalysis = WithinMassTolerancePeff(dTmpCalcPepMass, &vPeffArray, iStartPos, iTmpEnd); } if (iWhichQuery != -1 || bDoPeffAnalysis) @@ -3600,7 +3697,6 @@ // iTmpEnd-iStartPos+3 = length of peptide +2 (for n/c-term) PermuteMods(szProteinSeq, iWhichQuery, 1, pbDuplFragment, &bDoPeffAnalysis, &vPeffArray, dbe); - } } @@ -3739,7 +3835,9 @@ if (iWhichMod == 9) { if (!MergeVarMods(szProteinSeq, iWhichQuery, pbDuplFragment, bDoPeffAnalysis, vPeffArray, dbe)) + { return false; + } } else { @@ -3890,7 +3988,7 @@ } -// FIX: 'false' is never returned by this function, why? +// alwasy need to return true so permutations of variable mods continues bool CometSearch::MergeVarMods(char *szProteinSeq, int iWhichQuery, bool *pbDuplFragment, @@ -3933,7 +4031,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iLenPeptide] != 0) // conflict in two variable mods on n-term - return false; + return true; // store the modification number at modification position piVarModSites[iLenPeptide] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; //FIX: check this logic @@ -3953,7 +4051,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iLenPeptide+1] != 0) // conflict in two variable mods on c-term - return false; + return true; // store the modification number at modification position piVarModSites[iLenPeptide+1] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; //FIX: check this logic @@ -3982,7 +4080,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iPos] != 0) // conflict in two variable mods on same residue - return false; + return true; // store the modification number at modification position piVarModSites[iPos] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; @@ -3999,7 +4097,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iPos] != 0) // conflict in two variable mods on same residue - return false; + return true; // store the modification number at modification position piVarModSites[iPos] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; @@ -4015,7 +4113,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iPos] != 0) // conflict in two variable mods on same residue - return false; + return true; // store the modification number at modification position piVarModSites[iPos] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; @@ -4031,7 +4129,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iPos] != 0) // conflict in two variable mods on same residue - return false; + return true; // store the modification number at modification position piVarModSites[iPos] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; @@ -4047,7 +4145,7 @@ if (_varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]) { if (piVarModSites[iPos] != 0) // conflict in two variable mods on same residue - return false; + return true; // store the modification number at modification position piVarModSites[iPos] = _varModInfo.varModStatList[j].iVarModSites[piVarModCharIdx[j]]; @@ -4117,117 +4215,77 @@ int n = (int)(*vPeffArray).size(); // number of residues with a PEFF mod +/* vector a(n); vector len(n); - int j; - - for (i=0; i= _varModInfo.iStartPos && (*vPeffArray).at(i).iPosition <= _varModInfo.iEndPos) { - dMassAddition = 0.0; - - // For each iteration of PEFF mods, start with fresh state of variable mods - memcpy(piVarModSites, piTmpVarModSites, _iSizepiVarModSites); + for (int ii=0; ii<(int)(*vPeffArray).at(i).vectorWhichPeff.size(); ii++) + { + dMassAddition = (*vPeffArray).at(i).vectorMassDiffMono.at(ii); - // Now have permutations of PEFF. First, add PEFF masses and see if within mass tolerance - for (i=0; i0) - dMassAddition += (*vPeffArray).at(i).vectorMassDiffMono.at(a[i]-1); - } + // For each iteration of PEFF mods, start with fresh state of variable mods + memcpy(piVarModSites, piTmpVarModSites, _iSizepiVarModSites); - // if dCalcPepMass + dMassAddition is within mass tol, add these mods + // if dCalcPepMass + dMassAddition is within mass tol, add these mods - // Validate that total mass is within tolerance of some query entry - double dTmpCalcPepMass = dCalcPepMass + dMassAddition; + // Validate that total mass is within tolerance of some query entry + double dTmpCalcPepMass = dCalcPepMass + dMassAddition; - // With PEFF mods added in, find if new mass is within any query tolerance - iWhichQuery = WithinMassTolerance(dTmpCalcPepMass, szProteinSeq, _varModInfo.iStartPos, _varModInfo.iEndPos); + // With PEFF mods added in, find if new mass is within any query tolerance + iWhichQuery = WithinMassTolerance(dTmpCalcPepMass, szProteinSeq, _varModInfo.iStartPos, _varModInfo.iEndPos); - bool bValidPeffPosition = true; - if (iWhichQuery != -1) - { - for (int ii=_varModInfo.iStartPos; ii<=_varModInfo.iEndPos; ii++) + if (iWhichQuery != -1) { - // See if there's a PEFF mod at this 'i' sequence location based on current permutation of PEFFs - for (i=0; i0) - { - if ((*vPeffArray).at(i).iPosition > _varModInfo.iEndPos) - { - bValidPeffPosition = false; - break; - } - else if (ii == (*vPeffArray).at(i).iPosition) - { - // make sure PEFF mod location doesn't conflict with existing variable mod - if (piVarModSites[ii - _varModInfo.iStartPos] == 0) - { - // PEFF mods are encoded as negative values to reference appropriate PeffModStruct entry - // Sadly needs to be offset by -1 because first PEFF index is 0 - piVarModSites[ii - _varModInfo.iStartPos] = -1 -(*vPeffArray).at(i).vectorWhichPeff.at(a[i]-1); // use negative values for PEFF mods - } - else - { - bValidPeffPosition = false; - break; - } - } - } + // PEFF mods are encoded as negative values to reference appropriate PeffModStruct entry + // Sadly needs to be offset by -1 because first PEFF index is 0 + piVarModSites[iTmpModPosition] = -1 -(*vPeffArray).at(i).vectorWhichPeff.at(ii); // use negative values for PEFF mods + } + else + { + bValidPeffPosition = false; + break; } - } - // FIX: add test here as piVarModSites must contain a negative PEFF value + // FIX: add test here as piVarModSites must contain a negative PEFF value - if (bValidPeffPosition) - { - // Need to check if mass is ok + if (bValidPeffPosition) + { + // Need to check if mass is ok - // Do a binary search on list of input queries to find matching mass. - iWhichQuery = BinarySearchMass(0, g_pvQuery.size(), dTmpCalcPepMass); + // Do a binary search on list of input queries to find matching mass. + iWhichQuery = BinarySearchMass(0, g_pvQuery.size(), dTmpCalcPepMass); - // Seek back to first peptide entry that matches mass tolerance in case binary - // search doesn't hit the first entry. - while (iWhichQuery>0 && g_pvQuery.at(iWhichQuery)->_pepMassInfo.dPeptideMassTolerancePlus >= dCalcPepMass) - iWhichQuery--; + // Seek back to first peptide entry that matches mass tolerance in case binary + // search doesn't hit the first entry. + while (iWhichQuery>0 && g_pvQuery.at(iWhichQuery)->_pepMassInfo.dPeptideMassTolerancePlus >= dCalcPepMass) + iWhichQuery--; - // Only if this PEFF mod (plus possible variable mods) is within mass tolerance, continue - if (iWhichQuery != -1) - { - // FIX: add test here as piVarModSites must contain a negative PEFF value - CalcVarModIons(szProteinSeq, iWhichQuery, pbDuplFragment, piVarModSites, dTmpCalcPepMass, iLenPeptide, dbe); + // Only if this PEFF mod (plus possible variable mods) is within mass tolerance, continue + if (iWhichQuery != -1) + { + // FIX: add test here as piVarModSites must contain a negative PEFF value + CalcVarModIons(szProteinSeq, iWhichQuery, pbDuplFragment, piVarModSites, dTmpCalcPepMass, iLenPeptide, dbe); + } } } + //else move onto next permutation of PEFF mods } - //else move onto next permutation of PEFF mods - } - else - bFirst=false; - - for (j=n-1; j>=0; j--) - { - if (++a[j]<=len[j]) - break; - else - a[j]=0; - } - - if (j<0) - break; } } else diff -Nru comet-ms-2017014/CometSearch/CometSearch.h comet-ms-2018012/CometSearch/CometSearch.h --- comet-ms-2017014/CometSearch/CometSearch.h 2018-02-21 09:43:06.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometSearch.h 2018-06-13 06:57:56.000000000 +0000 @@ -104,7 +104,9 @@ int iStartPos, int iEndPos); bool WithinMassTolerancePeff(double dCalcPepMass, - vector* vPeffArray); + vector* vPeffArray, + int iStartPos, + int iEndPos); void XcorrScore(char *szProteinSeq, int iStartResidue, int iEndResidue, diff -Nru comet-ms-2017014/CometSearch/CometSearchManager.cpp comet-ms-2018012/CometSearch/CometSearchManager.cpp --- comet-ms-2017014/CometSearch/CometSearchManager.cpp 2018-02-21 09:43:06.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometSearchManager.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -29,6 +29,7 @@ #include "CometDataInternal.h" #include "CometSearchManager.h" #include "CometStatus.h" +#include "CometCheckForUpdates.h" #undef PERF_DEBUG @@ -403,14 +404,8 @@ else szReadingFrame[0]=0; - if (g_staticParams.tolerances.iIsotopeError==1) - strcpy(szIsotope, "ISOTOPE1"); - else if (g_staticParams.tolerances.iIsotopeError==2) - strcpy(szIsotope, "ISOTOPE2"); - else if (g_staticParams.tolerances.iIsotopeError==3) - strcpy(szIsotope, "ISOTOPE3"); - else if (g_staticParams.tolerances.iIsotopeError==4) - strcpy(szIsotope, "ISOTOPE4"); + if (g_staticParams.tolerances.iIsotopeError>0) + sprintf(szIsotope, "ISOTOPE%d", g_staticParams.tolerances.iIsotopeError); szPeak[0]='\0'; if (g_staticParams.ionInformation.iTheoreticalFragmentIons==1) @@ -639,7 +634,7 @@ GetParamValue("isotope_error", g_staticParams.tolerances.iIsotopeError); if ((g_staticParams.tolerances.iIsotopeError < 0) - || (g_staticParams.tolerances.iIsotopeError > 4)) + || (g_staticParams.tolerances.iIsotopeError > 6)) { g_staticParams.tolerances.iIsotopeError = 0; } @@ -678,6 +673,8 @@ GetParamValue("skip_researching", g_staticParams.options.bSkipAlreadyDone); +// GetParamValue("skip_updatecheck", g_staticParams.options.bSkipUpdateCheck); + GetParamValue("mango_search", g_staticParams.options.bMango); GetParamValue("peff_verbose_output", g_staticParams.options.bVerboseOutput); @@ -800,19 +797,20 @@ if (GetParamValue("override_charge", iIntData)) { - if (iIntData > 0) + if (iIntData >= 0) g_staticParams.options.bOverrideCharge = iIntData; } if (GetParamValue("correct_mass", iIntData)) { - if (iIntData > 0) + if (iIntData >= 0) g_staticParams.options.bCorrectMass = iIntData; } if (GetParamValue("equal_I_and_L", iIntData)) { - g_staticParams.options.bTreatSameIL = iIntData; + if (iIntData >= 0) + g_staticParams.options.bTreatSameIL = iIntData; } if (GetParamValue("precursor_charge", intRangeData)) @@ -1399,11 +1397,17 @@ if (!g_staticParams.options.bOutputSqtStream) { - sprintf(szOut, " Comet version \"%s\"\n\n", comet_version); + sprintf(szOut, " Comet version \"%s\"", comet_version); +// if (!g_staticParams.options.bSkipUpdateCheck) +// CometCheckForUpdates::CheckForUpdates(szOut); + sprintf(szOut+strlen(szOut), "\n\n"); + logout(szOut); fflush(stdout); } + bool bBlankSearchFile = false; + for (int i=0; i<(int)g_pvInputFiles.size(); i++) { bSucceeded = UpdateInputFile(g_pvInputFiles.at(i)); @@ -1453,22 +1457,26 @@ { if (iAnalysisType == AnalysisType_EntireFile) { -#ifdef CRUX - sprintf(szOutputSQT, "%s%s.target.sqt", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); -#else sprintf(szOutputSQT, "%s%s.sqt", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputSQT, "%s%s.target.sqt", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); + } #endif } else { -#ifdef CRUX - sprintf(szOutputSQT, "%s%s.%d-%d.target.sqt", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); -#else sprintf(szOutputSQT, "%s%s.%d-%d.sqt", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputSQT, "%s%s.%d-%d.target.sqt", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); + } #endif } @@ -1515,22 +1523,26 @@ { if (iAnalysisType == AnalysisType_EntireFile) { -#ifdef CRUX - sprintf(szOutputTxt, "%s%s.target.txt", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); -#else sprintf(szOutputTxt, "%s%s.txt", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputTxt, "%s%s.target.txt", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); + } #endif } else { -#ifdef CRUX - sprintf(szOutputTxt, "%s%s.%d-%d.target.txt", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); -#else sprintf(szOutputTxt, "%s%s.%d-%d.txt", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputTxt, "%s%s.%d-%d.target.txt", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); + } #endif } @@ -1578,22 +1590,26 @@ { if (iAnalysisType == AnalysisType_EntireFile) { -#ifdef CRUX - sprintf(szOutputPepXML, "%s%s.target.pep.xml", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); -#else sprintf(szOutputPepXML, "%s%s.pep.xml", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputPepXML, "%s%s.target.pep.xml", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix); + } #endif } else { -#ifdef CRUX - sprintf(szOutputPepXML, "%s%s.%d-%d.target.pep.xml", - g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); -#else sprintf(szOutputPepXML, "%s%s.%d-%d.pep.xml", g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); +#ifdef CRUX + if (g_staticParams.options.iDecoySearch == 2) + { + sprintf(szOutputPepXML, "%s%s.%d-%d.target.pep.xml", + g_staticParams.inputFile.szBaseName, g_staticParams.szOutputSuffix, iFirstScan, iLastScan); + } #endif } @@ -1670,6 +1686,7 @@ } } + int iTotalSpectraSearched = 0; if (bSucceeded) { //MH: Allocate memory shared by threads during spectral processing. @@ -1688,7 +1705,6 @@ // We want to read only MS2/MS3 scans. SetMSLevelFilter(mstReader); - int iTotalSpectraSearched = 0; // We need to reset some of the static variables in-between input files CometPreprocess::Reset(); @@ -1998,48 +2014,68 @@ { fclose(fpout_pepxml); fpout_pepxml = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputPepXML); } if (NULL != fpoutd_pepxml) { fclose(fpoutd_pepxml); fpoutd_pepxml = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputDecoyPepXML); } if (NULL != fpout_percolator) { fclose(fpout_percolator); fpout_percolator = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputPercolator); } if (NULL != fpout_sqt) { fclose(fpout_sqt); fpout_sqt = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputSQT); } if (NULL != fpoutd_sqt) { fclose(fpoutd_sqt); fpoutd_sqt = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputDecoySQT); } if (NULL != fpout_txt) { fclose(fpout_txt); fpout_txt = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputTxt); } if (NULL != fpoutd_txt) { fclose(fpoutd_txt); fpoutd_txt = NULL; + if (iTotalSpectraSearched == 0) + unlink(szOutputDecoyTxt); } + if (iTotalSpectraSearched == 0) + bBlankSearchFile = true; + if (!bSucceeded) break; } - return bSucceeded; + if (bBlankSearchFile) + return 1; + else + return bSucceeded; } diff -Nru comet-ms-2017014/CometSearch/CometSearch.vcxproj comet-ms-2018012/CometSearch/CometSearch.vcxproj --- comet-ms-2017014/CometSearch/CometSearch.vcxproj 2018-02-21 09:43:04.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometSearch.vcxproj 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {887C017B-8E91-4CCE-85C6-4D36D4033F1B} - CometSearch - - - - StaticLibrary - true - MultiByte - - - StaticLibrary - true - MultiByte - - - StaticLibrary - false - true - MultiByte - - - StaticLibrary - false - true - MultiByte - - - - - - - - - - - - - - - - - - - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - $(SolutionDir)$(Platform)\$(Configuration)\ - - - $(Platform)\$(Configuration)\ - - - - Level3 - MaxSpeed - ..\pthreads-w32\include;..\MSToolkit\include; - AnySuitable - true - Speed - true - true - true - false - Default - MultiThreadedDebugDLL - false - false - StreamingSIMDExtensions2 - Fast - false - ProgramDatabase - - - true - - - - - Level3 - Disabled - ..\pthreads-w32\include;..\MSToolkit\include; - Fast - - - true - - - - - Level3 - MaxSpeed - false - true - ..\pthreads-w32\include;..\MSToolkit\include; - AnySuitable - Speed - true - true - false - StreamingSIMDExtensions2 - Fast - false - _MBCS;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - - - true - true - true - - - - - Level3 - MaxSpeed - false - true - ..\MSToolkit\include; - AnySuitable - Speed - true - true - StreamingSIMDExtensions2 - Fast - false - false - WIN32;WIN64;_WIN64;_MBCS;%(PreprocessorDefinitions);_CRT_SECURE_NO_DEPRECATE - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -Nru comet-ms-2017014/CometSearch/CometSearch.vcxproj.filters comet-ms-2018012/CometSearch/CometSearch.vcxproj.filters --- comet-ms-2017014/CometSearch/CometSearch.vcxproj.filters 2018-02-21 09:43:04.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometSearch.vcxproj.filters 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff -Nru comet-ms-2017014/CometSearch/CometWritePepXML.cpp comet-ms-2018012/CometSearch/CometWritePepXML.cpp --- comet-ms-2017014/CometSearch/CometWritePepXML.cpp 2018-02-21 09:43:14.000000000 +0000 +++ comet-ms-2018012/CometSearch/CometWritePepXML.cpp 2018-06-13 06:57:56.000000000 +0000 @@ -117,7 +117,7 @@ // Grab file extension from file name if ( (pStr = strrchr(g_staticParams.inputFile.szFileName, '.')) == NULL) { - char szErrorMsg[256]; + char szErrorMsg[1024]; sprintf(szErrorMsg, " Error - in WriteXMLHeader missing last period in file name: %s\n", g_staticParams.inputFile.szFileName); string strErrorMsg(szErrorMsg); @@ -482,7 +482,7 @@ fprintf(fpout, " assumed_charge=\"%d\"", pQuery->_spectrumInfoInternal.iChargeState); fprintf(fpout, " index=\"%d\"", iWhichQuery+1); - if (mzXML) + if (pQuery->_spectrumInfoInternal.dRTime > 0.0) fprintf(fpout, " retention_time_sec=\"%0.1f\">\n", pQuery->_spectrumInfoInternal.dRTime); else fprintf(fpout, ">\n"); @@ -553,7 +553,7 @@ if ( ((double) (iMinLength - iDiffCt)/iMinLength) < 0.75) { if (pOutput[i].fXcorr > 0.0 && pOutput[j].fXcorr >= 0.0) - dDeltaCn = (pOutput[i].fXcorr - pOutput[j].fXcorr)/pOutput[i].fXcorr; + dDeltaCn = 1.0 - pOutput[j].fXcorr/pOutput[i].fXcorr; else if (pOutput[i].fXcorr > 0.0 && pOutput[j].fXcorr < 0.0) dDeltaCn = 1.0; else @@ -580,7 +580,7 @@ { if (pOutput[i].fXcorr > 0.0 && pOutput[i+1].fXcorr >= 0.0) { - dDeltaCnStar = (pOutput[i].fXcorr - pOutput[i+1].fXcorr)/pOutput[i].fXcorr; + dDeltaCnStar = 1.0 - pOutput[i+1].fXcorr/pOutput[i].fXcorr; if (isEqual(dDeltaCnStar, 0.0)) // note top two xcorrs could be identical so this gives a dDeltaCnStar = 0.001; // non-zero deltacnstar value to denote deltaCn is not explicit } @@ -731,7 +731,9 @@ szModPep[0]='\0'; bool bNterm = false; + bool bNtermVariable = false; bool bCterm = false; + bool bCtermVariable = false; double dNterm = 0.0; double dCterm = 0.0; @@ -743,11 +745,14 @@ { bNterm = true; - // pepXML format reports modified c-term mass (vs. mass diff) + // pepXML format reports modified term mass (vs. mass diff) dNterm = g_staticParams.precalcMasses.dNtermProton - PROTON_MASS + g_staticParams.massUtility.pdAAMassFragment[(int)'h']; if (pOutput[iWhichResult].piVarModSites[pOutput[iWhichResult].iLenPeptide] > 0) + { dNterm += g_staticParams.variableModParameters.varModList[(int)pOutput[iWhichResult].piVarModSites[pOutput[iWhichResult].iLenPeptide]-1].dVarModMass; + bNtermVariable = true; + } if (pOutput[iWhichResult].szPrevNextAA[0]=='-' && !isEqual(g_staticParams.staticModifications.dAddNterminusProtein, 0.0)) dNterm += g_staticParams.staticModifications.dAddNterminusProtein; @@ -764,14 +769,17 @@ dCterm = g_staticParams.precalcMasses.dCtermOH2Proton - PROTON_MASS - g_staticParams.massUtility.pdAAMassFragment[(int)'h']; if (pOutput[iWhichResult].piVarModSites[pOutput[iWhichResult].iLenPeptide+1] > 0) + { dCterm += g_staticParams.variableModParameters.varModList[(int)pOutput[iWhichResult].piVarModSites[pOutput[iWhichResult].iLenPeptide+1]-1].dVarModMass; + bCtermVariable = true; + } if (pOutput[iWhichResult].szPrevNextAA[1]=='-' && !isEqual(g_staticParams.staticModifications.dAddCterminusProtein, 0.0)) dCterm += g_staticParams.staticModifications.dAddCterminusProtein; } // generate modified_peptide string - if (bNterm) + if (bNtermVariable) sprintf(szModPep+strlen(szModPep), "n[%0.0f]", dNterm); for (i=0; i_spectrumInfoInternal.iScanNumber); + fprintf(fpout, "%0.6f\t", pQuery->_pepMassInfo.dExpPepMass - PROTON_MASS); //ExpMass + fprintf(fpout, "%0.6f\t", pOutput[iWhichResult].dPepMass - PROTON_MASS); //CalcMass iMinLength = 999; for (i=0; i #ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN #include #include #define STRCMP_IGNORE_CASE(a,b) _strcmpi(a,b) @@ -47,7 +48,7 @@ #include #endif -#define comet_version "2017.01 rev. 4" +#define comet_version "2018.01 rev. 2" #define copyright "(c) University of Washington" // Redefined how the bin offset is interpreted and applied. The valid range for the offset is diff -Nru comet-ms-2017014/CometSearch/Makefile comet-ms-2018012/CometSearch/Makefile --- comet-ms-2017014/CometSearch/Makefile 2018-02-21 09:43:04.000000000 +0000 +++ comet-ms-2018012/CometSearch/Makefile 2018-06-13 06:57:56.000000000 +0000 @@ -1,37 +1,39 @@ -CXX = g++ -GCC = gcc -MSTOOLKIT = ../MSToolkit -override CXXFLAGS += -O3 -Wall -Wextra -Wno-write-strings -static -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -I. -I$(MSTOOLKIT)/include - -COMETSEARCH = Threading.o CometInterfaces.o CometSearch.o CometPreprocess.o CometPostAnalysis.o CometMassSpecUtils.o CometWriteOut.o CometWriteSqt.o CometWritePepXML.o CometWritePercolator.o CometWriteTxt.o CometSearchManager.o - -all: $(COMETSEARCH) - ar rcs libcometsearch.a $(COMETSEARCH) - -clean: - rm -f *.o libcometsearch.a - -Threading.o: Threading.cpp Threading.h - ${CXX} ${CXXFLAGS} Threading.cpp -c -CometSearch.o: CometSearch.cpp Common.h CometData.h CometDataInternal.h CometSearch.h CometInterfaces.h ThreadPool.h - ${CXX} ${CXXFLAGS} CometSearch.cpp -c -CometPreprocess.o: CometPreprocess.cpp Common.h CometData.h CometDataInternal.h CometPreprocess.h CometInterfaces.h $(MSTOOLKIT) - ${CXX} ${CXXFLAGS} CometPreprocess.cpp -c -CometMassSpecUtils.o: CometMassSpecUtils.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometMassSpecUtils.cpp -c -CometPostAnalysis.o: CometPostAnalysis.cpp Common.h CometData.h CometDataInternal.h ThreadPool.h CometPostAnalysis.h CometMassSpecUtils.h CometInterfaces.h CometDecoys.h - ${CXX} ${CXXFLAGS} CometPostAnalysis.cpp -c -CometWriteOut.o: CometWriteOut.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteOut.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometWriteOut.cpp -c -CometWriteSqt.o: CometWriteSqt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteSqt.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometWriteSqt.cpp -c -CometWritePepXML.o: CometWritePepXML.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePepXML.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometWritePepXML.cpp -c -CometWritePercolator.o: CometWritePercolator.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePercolator.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometWritePercolator.cpp -c -CometWriteTxt.o: CometWriteTxt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteTxt.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometWriteTxt.cpp -c -CometSearchManager.o: CometSearchManager.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometSearchManager.cpp -c -CometInterfaces.o: CometInterfaces.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h - ${CXX} ${CXXFLAGS} CometInterfaces.cpp -c +CXX = g++ +GCC = gcc +MSTOOLKIT = ../MSToolkit +override CXXFLAGS += -O3 -Wall -fpermissive -Wextra -Wno-write-strings -static -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -I. -I$(MSTOOLKIT)/include + +COMETSEARCH = Threading.o CometInterfaces.o CometSearch.o CometPreprocess.o CometPostAnalysis.o CometMassSpecUtils.o CometWriteOut.o CometWriteSqt.o CometWritePepXML.o CometWritePercolator.o CometWriteTxt.o CometSearchManager.o CometCheckForUpdates.o + +all: $(COMETSEARCH) + ar rcs libcometsearch.a $(COMETSEARCH) + +clean: + rm -f *.o libcometsearch.a + +Threading.o: Threading.cpp Threading.h + ${CXX} ${CXXFLAGS} Threading.cpp -c +CometSearch.o: CometSearch.cpp Common.h CometData.h CometDataInternal.h CometSearch.h CometInterfaces.h ThreadPool.h + ${CXX} ${CXXFLAGS} CometSearch.cpp -c +CometPreprocess.o: CometPreprocess.cpp Common.h CometData.h CometDataInternal.h CometPreprocess.h CometInterfaces.h $(MSTOOLKIT) + ${CXX} ${CXXFLAGS} CometPreprocess.cpp -c +CometMassSpecUtils.o: CometMassSpecUtils.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometMassSpecUtils.cpp -c +CometPostAnalysis.o: CometPostAnalysis.cpp Common.h CometData.h CometDataInternal.h ThreadPool.h CometPostAnalysis.h CometMassSpecUtils.h CometInterfaces.h CometDecoys.h + ${CXX} ${CXXFLAGS} CometPostAnalysis.cpp -c +CometWriteOut.o: CometWriteOut.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteOut.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometWriteOut.cpp -c +CometWriteSqt.o: CometWriteSqt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteSqt.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometWriteSqt.cpp -c +CometWritePepXML.o: CometWritePepXML.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePepXML.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometWritePepXML.cpp -c +CometWritePercolator.o: CometWritePercolator.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePercolator.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometWritePercolator.cpp -c +CometWriteTxt.o: CometWriteTxt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteTxt.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometWriteTxt.cpp -c +CometCheckForUpdates.o: CometCheckForUpdates.cpp Common.h CometCheckForUpdates.h + ${CXX} ${CXXFLAGS} CometCheckForUpdates.cpp -c +CometSearchManager.o: CometSearchManager.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h CometCheckForUpdates.h + ${CXX} ${CXXFLAGS} CometSearchManager.cpp -c +CometInterfaces.o: CometInterfaces.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometInterfaces.cpp -c Binary files /tmp/tmpfq1yaN/YdyrUwCmhs/comet-ms-2017014/CometWrapper/app.ico and /tmp/tmpfq1yaN/XSt9Ug9MuX/comet-ms-2018012/CometWrapper/app.ico differ Binary files /tmp/tmpfq1yaN/YdyrUwCmhs/comet-ms-2017014/CometWrapper/app.rc and /tmp/tmpfq1yaN/XSt9Ug9MuX/comet-ms-2018012/CometWrapper/app.rc differ diff -Nru comet-ms-2017014/CometWrapper/AssemblyInfo.cpp comet-ms-2018012/CometWrapper/AssemblyInfo.cpp --- comet-ms-2017014/CometWrapper/AssemblyInfo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/AssemblyInfo.cpp 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,56 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "stdafx.h" + +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("CometWrapper")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("")]; +[assembly:AssemblyProductAttribute("CometWrapper")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) 2013")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff -Nru comet-ms-2017014/CometWrapper/CometDataWrapper.h comet-ms-2018012/CometWrapper/CometDataWrapper.h --- comet-ms-2017014/CometWrapper/CometDataWrapper.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/CometDataWrapper.h 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,264 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// CometWrapper.h + +#pragma once + +#include "CometData.h" +#include +#include + +using namespace System; +using namespace msclr::interop; +using namespace System::Runtime::InteropServices; + +namespace CometWrapper { + + public enum class InputType + { + Unknown = -1, + MS2 = 0, + MZXML, + MZML, + CMS2 + }; + + public enum class AnalysisType + { + Unknown = 0, + DTA, + SpecificScan, + SpecificScanRange, + EntireFile + }; + + public ref class IntRangeWrapper + { + public: + IntRangeWrapper() { _pIntRange = new IntRange(); } + IntRangeWrapper(IntRange &intRangeParam) { _pIntRange = new IntRange(intRangeParam); } + IntRangeWrapper(int iStart, int iEnd) { _pIntRange = new IntRange(iStart, iEnd); } + virtual ~IntRangeWrapper() + { + if (NULL != _pIntRange) + { + delete _pIntRange; + _pIntRange = NULL; + } + } + + int get_iStart() {return _pIntRange->iStart;} + void set_iStart(int iStart) {_pIntRange->iStart = iStart;} + + int get_iEnd() {return _pIntRange->iEnd;} + void set_iEnd(int iEnd) {_pIntRange->iEnd = iEnd;} + + IntRange* get_IntRangePtr() {return _pIntRange;} + + private: + IntRange* _pIntRange; + }; + + public ref class DoubleRangeWrapper + { + public: + DoubleRangeWrapper() { _pDoubleRange = new DoubleRange(); } + DoubleRangeWrapper(DoubleRange &doubleRangeParam) { _pDoubleRange = new DoubleRange(doubleRangeParam); } + DoubleRangeWrapper(double dStart, double dEnd) { _pDoubleRange = new DoubleRange(dStart, dEnd); } + virtual ~DoubleRangeWrapper() + { + if (NULL != _pDoubleRange) + { + delete _pDoubleRange; + _pDoubleRange = NULL; + } + } + + int get_dStart() {return _pDoubleRange->dStart;} + void set_dStart(double dStart) {_pDoubleRange->dStart = dStart;} + + int get_dEnd() {return _pDoubleRange->dEnd;} + void set_dEnd(double dEnd) {_pDoubleRange->dEnd = dEnd;} + + DoubleRange* get_DoubleRangePtr() {return _pDoubleRange;} + + private: + DoubleRange* _pDoubleRange; + }; + + public ref class VarModsWrapper + { + public: + VarModsWrapper() { _pVarMods = new VarMods(); } + VarModsWrapper(VarMods &varMods) { _pVarMods = new VarMods(varMods);} + virtual ~VarModsWrapper() + { + if (NULL != _pVarMods) + { + delete _pVarMods; + _pVarMods = NULL; + } + } + + int get_BinaryMod() {return _pVarMods->iBinaryMod;} + void set_BinaryMod(int iBinaryMod) {_pVarMods->iBinaryMod = iBinaryMod;} + + int get_RequireThisMod() {return _pVarMods->bRequireThisMod;} + void set_RequireThisMod(int bRequireThisMod) {_pVarMods->bRequireThisMod = bRequireThisMod;} + + int get_MaxNumVarModAAPerMod() {return _pVarMods->iMaxNumVarModAAPerMod;} + void set_MaxNumVarModAAPerMod(int iMaxNumVarModAAPerMod) {_pVarMods->iMaxNumVarModAAPerMod = iMaxNumVarModAAPerMod;} + + int get_VarModTermDistance() {return _pVarMods->iVarModTermDistance;} + void set_VarModTermDistance(int iVarModTermDistance) {_pVarMods->iVarModTermDistance = iVarModTermDistance;} + + int get_WhichTerm() {return _pVarMods->iWhichTerm;} + void set_WhichTerm(int iWhichTerm) {_pVarMods->iWhichTerm = iWhichTerm;} + + int get_VarModMass() {return _pVarMods->dVarModMass;} + void set_VarModMass(double dVarModMass) {_pVarMods->dVarModMass = dVarModMass;} + + System::String^% get_VarModChar() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pVarMods->szVarModChar))));} + void set_VarModChar(System::String^ varModChar) + { + std::string stdVarModChar = marshal_as(varModChar); + strcpy(_pVarMods->szVarModChar, stdVarModChar.c_str()); + } + + VarMods* get_VarModsPtr() {return _pVarMods;} + + private: + VarMods *_pVarMods; + }; + + public ref class EnzymeInfoWrapper + { + public: + EnzymeInfoWrapper() { _pEnzymeInfo = new EnzymeInfo(); } + EnzymeInfoWrapper(EnzymeInfo &enzymeInfo) { _pEnzymeInfo = new EnzymeInfo(enzymeInfo);} + virtual ~EnzymeInfoWrapper() + { + if (NULL != _pEnzymeInfo) + { + delete _pEnzymeInfo; + _pEnzymeInfo = NULL; + } + } + + EnzymeInfo* get_EnzymeInfoPtr() {return _pEnzymeInfo;} + + int get_AllowedMissedCleavge() {return _pEnzymeInfo->iAllowedMissedCleavage;} + void set_AllowedMissedCleavge(int iAllowedMissedCleavage) {_pEnzymeInfo->iAllowedMissedCleavage = iAllowedMissedCleavage;} + + int get_SearchEnzymeOffSet() {return _pEnzymeInfo->iSearchEnzymeOffSet;} + void set_SearchEnzymeOffSet(int iSearchEnzymeOffSet) {_pEnzymeInfo->iSearchEnzymeOffSet = iSearchEnzymeOffSet;} + + int get_SampleEnzymeOffSet() {return _pEnzymeInfo->iSampleEnzymeOffSet;} + void set_SampleEnzymeOffSet(int iSampleEnzymeOffSet) {_pEnzymeInfo->iSampleEnzymeOffSet = iSampleEnzymeOffSet;} + + System::String^% get_SearchEnzymeName() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSearchEnzymeName))));} + void set_SearchEnzymeName(System::String^ searchEnzymeName) + { + std::string stdSearchEnzymeName = marshal_as(searchEnzymeName); + strcpy(_pEnzymeInfo->szSearchEnzymeName, stdSearchEnzymeName.c_str()); + } + + System::String^% get_SearchEnzymeBreakAA() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSearchEnzymeBreakAA))));} + void set_SearchEnzymeBreakAA(System::String^ searchEnzymeBreakAA) + { + std::string stdSearchEnzymeBreakAA = marshal_as(searchEnzymeBreakAA); + strcpy(_pEnzymeInfo->szSearchEnzymeBreakAA, stdSearchEnzymeBreakAA.c_str()); + } + + System::String^% get_SearchEnzymeNoBreakAA() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSearchEnzymeNoBreakAA))));} + void set_SearchEnzymeNoBreakAA(System::String^ searchEnzymeNoBreakAA) + { + std::string stdSearchEnzymeNoBreakAA = marshal_as(searchEnzymeNoBreakAA); + strcpy(_pEnzymeInfo->szSearchEnzymeNoBreakAA, stdSearchEnzymeNoBreakAA.c_str()); + } + + System::String^% get_SampleEnzymeName() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSampleEnzymeName))));} + void set_SampleEnzymeName(System::String^ sampleEnzymeName) + { + std::string stdSampleEnzymeName = marshal_as(sampleEnzymeName); + strcpy(_pEnzymeInfo->szSampleEnzymeName, stdSampleEnzymeName.c_str()); + } + + System::String^% get_SampleEnzymeBreakAA() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSampleEnzymeBreakAA))));} + void set_SampleEnzymeBreakAA(System::String^ sampleEnzymeBreakAA) + { + std::string stdSampleEnzymeBreakAA = marshal_as(sampleEnzymeBreakAA); + strcpy(_pEnzymeInfo->szSampleEnzymeBreakAA, stdSampleEnzymeBreakAA.c_str()); + } + + System::String^% get_SampleEnzymeNoBreakAA() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pEnzymeInfo->szSampleEnzymeNoBreakAA))));} + void set_SampleEnzymeNoBreakAA(System::String^ sampleEnzymeNoBreakAA) + { + std::string stdSampleEnzymeNoBreakAA = marshal_as(sampleEnzymeNoBreakAA); + strcpy(_pEnzymeInfo->szSampleEnzymeNoBreakAA, stdSampleEnzymeNoBreakAA.c_str()); + } + + private: + EnzymeInfo *_pEnzymeInfo; + }; + + public ref class InputFileInfoWrapper + { + public: + InputFileInfoWrapper() { _pInputFileInfo = new InputFileInfo(); } + InputFileInfoWrapper(InputFileInfo &inputFileInfo) { _pInputFileInfo = new InputFileInfo(inputFileInfo);} + virtual ~InputFileInfoWrapper() + { + if (NULL != _pInputFileInfo) + { + delete _pInputFileInfo; + _pInputFileInfo = NULL; + } + } + + InputFileInfo* get_InputFileInfoPtr() {return _pInputFileInfo;} + + InputType get_InputType() {return static_cast(_pInputFileInfo->iInputType);} + void set_InputType(InputType inputType) {_pInputFileInfo->iInputType = static_cast(inputType);} + + AnalysisType get_AnalysisType() {return static_cast(_pInputFileInfo->iAnalysisType);} + void set_AnalysisType(AnalysisType analysisType) {_pInputFileInfo->iAnalysisType = static_cast(analysisType);} + + int get_FirstScan() {return _pInputFileInfo->iFirstScan;} + void set_FirstScan(int iFirstScan) {_pInputFileInfo->iFirstScan = iFirstScan;} + + int get_LastScan() {return _pInputFileInfo->iLastScan;} + void set_LastScan(int iLastScan) {_pInputFileInfo->iLastScan = iLastScan;} + + System::String^% get_FileName() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pInputFileInfo->szFileName))));} + void set_FileName(System::String^ fileName) + { + std::string stdFileName = marshal_as(fileName); + strcpy(_pInputFileInfo->szFileName, stdFileName.c_str()); + } + + System::String^% get_BaseName() { return gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(_pInputFileInfo->szBaseName))));} + void set_BaseName(System::String^ baseName) + { + std::string stdBaseName = marshal_as(baseName); + strcpy(_pInputFileInfo->szBaseName, stdBaseName.c_str()); + } + + private: + InputFileInfo *_pInputFileInfo; + }; +} diff -Nru comet-ms-2017014/CometWrapper/CometWrapper.cpp comet-ms-2018012/CometWrapper/CometWrapper.cpp --- comet-ms-2017014/CometWrapper/CometWrapper.cpp 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/CometWrapper.cpp 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,452 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// This is the main DLL file. + +#pragma region Includes + +#include "stdafx.h" +#include +#include +#include + +#include "CometWrapper.h" +using namespace CometWrapper; + +using namespace System::Runtime::InteropServices; + +#pragma endregion + + +CometSearchManagerWrapper::CometSearchManagerWrapper() +{ + // Instantiate the native C++ class + _pSearchMgr = GetCometSearchManager(); + + _pvInputFilesList = new vector(); +} + +CometSearchManagerWrapper::~CometSearchManagerWrapper() +{ + ReleaseCometSearchManager(); + + // CometSearchManager releases all the objects stored in the vector, we just + // need to release the vector itself here. + if (NULL != _pvInputFilesList) + { + delete _pvInputFilesList; + _pvInputFilesList = NULL; + } +} + +bool CometSearchManagerWrapper::DoSearch() +{ + if (!_pSearchMgr) + { + return false; + } + + return _pSearchMgr->DoSearch(); +} + +bool CometSearchManagerWrapper::AddInputFiles(List ^inputFilesList) +{ + if (!_pSearchMgr) + { + return false; + } + + int numFiles = inputFilesList->Count; + for (int i = 0; i < numFiles; i++) + { + InputFileInfoWrapper^ inputFile = inputFilesList[i]; + _pvInputFilesList->push_back(inputFile->get_InputFileInfoPtr()); + } + + _pSearchMgr->AddInputFiles(*_pvInputFilesList); + + return true; +} + +bool CometSearchManagerWrapper::SetOutputFileBaseName(System::String^ baseName) +{ + if (!_pSearchMgr) + { + return false; + } + + const char* pszBaseName = _marshalContext.marshal_as(baseName); + _pSearchMgr->SetOutputFileBaseName(pszBaseName); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, System::String^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + std::string stdStringValue = marshal_as(value); + + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, stdStringValue); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, System::String^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringValue; + if (!_pSearchMgr->GetParamValue(stdStringName, stdStringValue)) + { + return false; + } + + + value = gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(stdStringValue.c_str())))); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, int value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, value); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, int %value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + int iValue; + if (!_pSearchMgr->GetParamValue(stdStringName, iValue)) + { + return false; + } + + + value = iValue; + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, double value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, value); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, double% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + double dValue; + if (!_pSearchMgr->GetParamValue(stdStringName, dValue)) + { + return false; + } + + + value = dValue; + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, IntRangeWrapper^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + IntRange *pIntRange = value->get_IntRangePtr(); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, *pIntRange); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, IntRangeWrapper^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + IntRange intRangeParam(0, 0); + if (!_pSearchMgr->GetParamValue(stdStringName, intRangeParam)) + { + return false; + } + + value = gcnew IntRangeWrapper(intRangeParam); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, DoubleRangeWrapper^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + DoubleRange *pDoubleRange = value->get_DoubleRangePtr(); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, *pDoubleRange); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, DoubleRangeWrapper^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + DoubleRange doubleRangeParam(0.0, 0.0); + if (!_pSearchMgr->GetParamValue(stdStringName, doubleRangeParam)) + { + return false; + } + + value = gcnew DoubleRangeWrapper(doubleRangeParam); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, VarModsWrapper^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + VarMods *pVarMods = value->get_VarModsPtr(); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, *pVarMods); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, VarModsWrapper^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + VarMods varModsParam; + if (!_pSearchMgr->GetParamValue(stdStringName, varModsParam)) + { + return false; + } + + value = gcnew VarModsWrapper(varModsParam); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(System::String^ name, System::String^ strValue, EnzymeInfoWrapper^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + EnzymeInfo *pEnzymInfo = value->get_EnzymeInfoPtr(); + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, *pEnzymInfo); + + return true; +} + + +bool CometSearchManagerWrapper::GetParamValue(System::String^ name, EnzymeInfoWrapper^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + EnzymeInfo enzymeInfoParam; + if (!_pSearchMgr->GetParamValue(stdStringName, enzymeInfoParam)) + { + return false; + } + + value = gcnew EnzymeInfoWrapper(enzymeInfoParam); + + return true; +} + +bool CometSearchManagerWrapper::SetParam(String^ name, String^ strValue, List^ value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + std::string stdStringStrValue = marshal_as(strValue); + + vector vectorMassOffsets; + int numItems = value->Count; + for (int i = 0; i < numItems; i++) + { + vectorMassOffsets.push_back(value[i]); + } + sort(vectorMassOffsets.begin(), vectorMassOffsets.end()); + + _pSearchMgr->SetParam(stdStringName, stdStringStrValue, vectorMassOffsets); + + return true; +} + +bool CometSearchManagerWrapper::GetParamValue(String^ name, List^% value) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStringName = marshal_as(name); + vector vectorMassOffsets; + if (!_pSearchMgr->GetParamValue(stdStringName, vectorMassOffsets)) + { + return false; + } + + int numItems = vectorMassOffsets.size(); + for (int i = 0; i < numItems; i++) + { + value->Add(vectorMassOffsets[i]); + } + + return true; +} + +bool CometSearchManagerWrapper::ValidateCometVersion(String^ version, bool% isValid) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdVersion = marshal_as(version); + isValid = _pSearchMgr->IsValidCometVersion(stdVersion); + return true; +} + +bool CometSearchManagerWrapper::IsSearchError(bool% bError) +{ + if (!_pSearchMgr) + { + return false; + } + + bError = _pSearchMgr->IsSearchError(); + return true; +} + +bool CometSearchManagerWrapper::GetStatusMessage(System::String^% strStatusMsg) +{ + if (!_pSearchMgr) + { + return false; + } + + std::string stdStrStatusMsg; + _pSearchMgr->GetStatusMessage(stdStrStatusMsg); + strStatusMsg = gcnew String(Marshal::PtrToStringAnsi(static_cast(const_cast(stdStrStatusMsg.c_str())))); + + return true; +} + +bool CometSearchManagerWrapper::CancelSearch() +{ + if (!_pSearchMgr) + { + return false; + } + + _pSearchMgr->CancelSearch(); + return true; +} + +bool CometSearchManagerWrapper::IsCancelSearch(bool% bCancel) +{ + if (!_pSearchMgr) + { + return false; + } + + bCancel = _pSearchMgr->IsCancelSearch(); + return true; +} + +bool CometSearchManagerWrapper::ResetSearchStatus() +{ + if (!_pSearchMgr) + { + return false; + } + + _pSearchMgr->ResetSearchStatus(); + return true; +} \ No newline at end of file diff -Nru comet-ms-2017014/CometWrapper/CometWrapper.h comet-ms-2018012/CometWrapper/CometWrapper.h --- comet-ms-2017014/CometWrapper/CometWrapper.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/CometWrapper.h 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,70 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// CometWrapper.h + +#pragma once + +#include "Common.h" +#include "CometDataWrapper.h" +#include "CometInterfaces.h" +#include + +using namespace System; +using namespace System::Collections::Generic; +using namespace msclr::interop; +using namespace CometInterfaces; + +namespace CometWrapper { + public ref class CometSearchManagerWrapper + { + public: + CometSearchManagerWrapper(); + virtual ~CometSearchManagerWrapper(); + + bool DoSearch(); + // Need to convert vector to List and back + bool AddInputFiles(List ^inputFilesList); + bool SetOutputFileBaseName(String^ baseName); + bool SetParam(String^ name, String^ strValue, String^ value); + bool GetParamValue(String^ name, String^% value); + bool SetParam(String^ name, String^ strValue, int value); + bool GetParamValue(String^ name, int %value); + bool SetParam(String^ name, String^ strValue, double value); + bool GetParamValue(String^ name, double% value); + bool SetParam(String^ name, String^ strValue, IntRangeWrapper^ value); + bool GetParamValue(String^ name, IntRangeWrapper^% value); + bool SetParam(String^ name, String^ strValue, DoubleRangeWrapper^ value); + bool GetParamValue(String^ name, DoubleRangeWrapper^% value); + bool SetParam(String^ name, String^ strValue, VarModsWrapper^ value); + bool GetParamValue(String^ name, VarModsWrapper^% value); + bool SetParam(String^ name, String^ strValue, EnzymeInfoWrapper^ value); + bool GetParamValue(String^ name, EnzymeInfoWrapper^% value); + bool SetParam(String^ name, String^ strValue, List^ value); + bool GetParamValue(String^ name, List^% value); + bool ValidateCometVersion(String^ version, bool% isValid); + bool IsSearchError(bool% bError); + bool GetStatusMessage(String^% strStatusMsg); + bool CancelSearch(); + bool IsCancelSearch(bool% bCancel); + bool ResetSearchStatus(); + + private: + ICometSearchManager *_pSearchMgr; + msclr::interop::marshal_context _marshalContext; + vector* _pvInputFilesList; + }; +} diff -Nru comet-ms-2017014/CometWrapper/MSFileReaderWrapper.cpp comet-ms-2018012/CometWrapper/MSFileReaderWrapper.cpp --- comet-ms-2017014/CometWrapper/MSFileReaderWrapper.cpp 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/MSFileReaderWrapper.cpp 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,141 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#pragma region Includes + +#include "stdafx.h" +#include +#include +#include "MSFileReaderWrapper.h" +#include +#include "CometWrapper.h" + +using namespace CometWrapper; +using namespace CometWrapper; +using namespace System::Runtime::InteropServices; + +#pragma endregion + + +MSFileReaderWrapper::MSFileReaderWrapper() +{ + // Instantiate the native C++ class + _pMSReader = new MSReader(); +} + +MSFileReaderWrapper::~MSFileReaderWrapper() +{ + if (NULL != _pMSReader) + { + delete _pMSReader; + _pMSReader = NULL; + } +} + +bool MSFileReaderWrapper::ReadPeaks(String^ msFileName, int scanNum, MSSpectrumTypeWrapper msSpectrumType, List ^peaks) +{ + if (NULL == _pMSReader) + { + return false; + } + + vector msLevel; + msLevel.push_back((MSSpectrumType)msSpectrumType); + _pMSReader->setFilter(msLevel); + + const char* pszMSFileName = _marshalContext.marshal_as(msFileName); + char szMSFileName[512]; + szMSFileName[0] = '\0'; + strcpy(szMSFileName, pszMSFileName); + Spectrum spec; + if (!_pMSReader->readFile(szMSFileName, spec, scanNum)) + { + return false; + } + + if (0 == spec.size()) + { + return false; + } + + for (int i = 0; i < spec.size(); i++) + { + peaks->Add(gcnew Peak_T_Wrapper(spec.at(i))); + } + + return true; +} + +bool MSFileReaderWrapper::ReadPrecursorPeaks(String^ msFileName, int fragmentScanNum, MSSpectrumTypeWrapper msFragmentSpectrumType, List ^precursorPeaks, int% ms1ScanNum) +{ + ms1ScanNum = 0; + + if (NULL == _pMSReader) + { + return false; + } + + int scanNum = fragmentScanNum; + if (scanNum <= 0) + { + return false; + } + + int msLevelFragment = (int)msFragmentSpectrumType; + if (msLevelFragment == 0) + { + return false; + } + + const char* pszMSFileName = _marshalContext.marshal_as(msFileName); + char szMSFileName[512]; + szMSFileName[0] = '\0'; + strcpy(szMSFileName, pszMSFileName); + + // The MS level of the precursor is one less than that of the fragment + vector msLevel; + int msLevelPrecursor = msLevelFragment - 1; + msLevel.push_back((MSSpectrumType)msLevelPrecursor); + _pMSReader->setFilter(msLevel); + + // Loop and decrement the scanNum, trying each time to get the precursor + // peaks at that scan. When it finally succeeds, that is the closest + // precursor scan. + Spectrum spec; + scanNum--; + while ((!_pMSReader->readFile(szMSFileName, spec, scanNum)) && (scanNum > 0)) + { + scanNum--; + + if (fragmentScanNum - scanNum > 50) + return false; + } + + if (0 == spec.size()) + { + return false; + } + + ms1ScanNum = scanNum; + + for (int i = 0; i < spec.size(); i++) + { + precursorPeaks->Add(gcnew Peak_T_Wrapper(spec.at(i))); + } + + return true; +} + diff -Nru comet-ms-2017014/CometWrapper/MSFileReaderWrapper.h comet-ms-2018012/CometWrapper/MSFileReaderWrapper.h --- comet-ms-2017014/CometWrapper/MSFileReaderWrapper.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/MSFileReaderWrapper.h 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,84 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// MSFileReaderWrapper.h + +#pragma once + +#include "MSReader.h" +#include "Spectrum.h" +#include +#include + +using namespace MSToolkit; +using namespace System; +using namespace System::Collections::Generic; +using namespace msclr::interop; + +namespace CometWrapper { + + public enum class MSSpectrumTypeWrapper + { + MS1, + MS2, + MS3, + ZS, + UZS, + IonSpec, + SRM, + REFERENCE, + Unspecified, + MSX + }; + + public ref class Peak_T_Wrapper + { + public: + Peak_T_Wrapper() { _pPeak = new Peak_T(); } + Peak_T_Wrapper(Peak_T &peak) { _pPeak = new Peak_T(peak);} + virtual ~Peak_T_Wrapper() + { + if (NULL != _pPeak) + { + delete _pPeak; + _pPeak = NULL; + } + } + + Peak_T* get_Peak_T_Ptr() {return _pPeak;} + double get_mz() {return _pPeak->mz;} + void set_mz(double mz) {_pPeak->mz = mz;} + + float get_intensity() {return _pPeak->intensity;} + void set_intensity(float intensity) {_pPeak->intensity = intensity;} + + private: + Peak_T* _pPeak; + }; + + public ref class MSFileReaderWrapper + { + public: + MSFileReaderWrapper(); + virtual ~MSFileReaderWrapper(); + bool ReadPeaks(String^ msFileName, int scanNum, MSSpectrumTypeWrapper msSpectrumType, List ^peaks); + bool ReadPrecursorPeaks(String^ msFileName, int fragmentScanNum, MSSpectrumTypeWrapper msFragmentSpectrumType, List ^precursorPeaks, int% ms1ScanNum); + + private: + MSReader* _pMSReader; + msclr::interop::marshal_context _marshalContext; + }; +} \ No newline at end of file diff -Nru comet-ms-2017014/CometWrapper/ReadMe.txt comet-ms-2018012/CometWrapper/ReadMe.txt --- comet-ms-2017014/CometWrapper/ReadMe.txt 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/ReadMe.txt 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,38 @@ +======================================================================== + DYNAMIC LINK LIBRARY : CometWrapper Project Overview +======================================================================== + +AppWizard has created this CometWrapper DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your CometWrapper application. + +CometWrapper.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +CometWrapper.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +CometWrapper.cpp + This is the main DLL source file. + +CometWrapper.h + This file contains a class declaration. + +AssemblyInfo.cpp + Contains custom attributes for modifying assembly metadata. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff -Nru comet-ms-2017014/CometWrapper/resource.h comet-ms-2018012/CometWrapper/resource.h --- comet-ms-2017014/CometWrapper/resource.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/resource.h 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff -Nru comet-ms-2017014/CometWrapper/Stdafx.cpp comet-ms-2018012/CometWrapper/Stdafx.cpp --- comet-ms-2017014/CometWrapper/Stdafx.cpp 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/Stdafx.cpp 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,21 @@ +/* + Copyright 2015 University of Washington + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// stdafx.cpp : source file that includes just the standard includes +// CometWrapper.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" diff -Nru comet-ms-2017014/CometWrapper/Stdafx.h comet-ms-2018012/CometWrapper/Stdafx.h --- comet-ms-2017014/CometWrapper/Stdafx.h 1970-01-01 00:00:00.000000000 +0000 +++ comet-ms-2018012/CometWrapper/Stdafx.h 2018-06-13 06:58:06.000000000 +0000 @@ -0,0 +1,7 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, +// but are changed infrequently + +#pragma once + + diff -Nru comet-ms-2017014/debian/changelog comet-ms-2018012/debian/changelog --- comet-ms-2017014/debian/changelog 2018-03-02 10:34:35.000000000 +0000 +++ comet-ms-2018012/debian/changelog 2018-11-18 09:05:33.000000000 +0000 @@ -1,10 +1,17 @@ +comet-ms (2018012-1) unstable; urgency=low + + * New upstream release. + * New version of the build system patch. + * Bump-up Standards-Version to 4.2.1 (no changes needed). + * Update the Vcs fields to match the salsa location. + + -- Filippo Rusconi Sun, 18 Nov 2018 10:05:33 +0100 + comet-ms (2017014-2) unstable; urgency=medium * Fix problem with library linking in the Makefile. Thanks to Gianfranco Costamagna for re-reporting that bug - (Closes: #891750). In fact, he saw that the rules duplicated code and the - Makefile such that the Makefile did not direct compilation, since that - compilation was local. + (inconsistencies in the build process). Not closing the bug yet. -- Filippo Rusconi Fri, 02 Mar 2018 11:34:35 +0100 diff -Nru comet-ms-2017014/debian/control comet-ms-2018012/debian/control --- comet-ms-2017014/debian/control 2018-03-02 10:34:35.000000000 +0000 +++ comet-ms-2018012/debian/control 2018-11-18 09:05:33.000000000 +0000 @@ -8,10 +8,10 @@ libmstoolkit-dev (>= 82), libmstoolkit-dev (<< 83), docbook-to-man -Standards-Version: 4.1.1 +Standards-Version: 4.2.1 Homepage: http://sourceforge.net/projects/comet-ms/ -Vcs-Git: https://anonscm.debian.org/git/debichem/packages/comet-ms.git -Vcs-Browser: https://anonscm.debian.org/git/debichem/packages/comet-ms.git +Vcs-Browser: https://salsa.debian.org/debichem-team/comet-ms.git +Vcs-Git: https://salsa.debian.org/debichem-team/comet-ms.git Package: comet-ms Architecture: any diff -Nru comet-ms-2017014/debian/patches/makefile-to-handle-lib-debian-way-of-doing-things.patch comet-ms-2018012/debian/patches/makefile-to-handle-lib-debian-way-of-doing-things.patch --- comet-ms-2017014/debian/patches/makefile-to-handle-lib-debian-way-of-doing-things.patch 2018-03-01 11:40:07.000000000 +0000 +++ comet-ms-2018012/debian/patches/makefile-to-handle-lib-debian-way-of-doing-things.patch 2018-11-18 09:05:33.000000000 +0000 @@ -1,90 +1,37 @@ -Patch to produce Makefile_s such that libmstoolkitlite is used from the Debian package - +Patch to handle stuff in the classical Debian way (so libraries...) diff --git a/CometSearch/Makefile b/CometSearch/Makefile -index dd647ca..8b116c8 100644 +index d109c04..cee4f58 100644 --- a/CometSearch/Makefile +++ b/CometSearch/Makefile -@@ -1,37 +1,38 @@ --CXX = g++ --GCC = gcc --MSTOOLKIT = ../MSToolkit --override CXXFLAGS += -O3 -Wall -Wextra -Wno-write-strings -static -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -I. -I$(MSTOOLKIT)/include -- --COMETSEARCH = Threading.o CometInterfaces.o CometSearch.o CometPreprocess.o CometPostAnalysis.o CometMassSpecUtils.o CometWriteOut.o CometWriteSqt.o CometWritePepXML.o CometWritePercolator.o CometWriteTxt.o CometSearchManager.o -- --all: $(COMETSEARCH) -- ar rcs libcometsearch.a $(COMETSEARCH) -- --clean: -- rm -f *.o libcometsearch.a -- --Threading.o: Threading.cpp Threading.h -- ${CXX} ${CXXFLAGS} Threading.cpp -c --CometSearch.o: CometSearch.cpp Common.h CometData.h CometDataInternal.h CometSearch.h CometInterfaces.h ThreadPool.h -- ${CXX} ${CXXFLAGS} CometSearch.cpp -c --CometPreprocess.o: CometPreprocess.cpp Common.h CometData.h CometDataInternal.h CometPreprocess.h CometInterfaces.h $(MSTOOLKIT) -- ${CXX} ${CXXFLAGS} CometPreprocess.cpp -c --CometMassSpecUtils.o: CometMassSpecUtils.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometMassSpecUtils.cpp -c --CometPostAnalysis.o: CometPostAnalysis.cpp Common.h CometData.h CometDataInternal.h ThreadPool.h CometPostAnalysis.h CometMassSpecUtils.h CometInterfaces.h CometDecoys.h -- ${CXX} ${CXXFLAGS} CometPostAnalysis.cpp -c --CometWriteOut.o: CometWriteOut.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteOut.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometWriteOut.cpp -c --CometWriteSqt.o: CometWriteSqt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteSqt.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometWriteSqt.cpp -c --CometWritePepXML.o: CometWritePepXML.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePepXML.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometWritePepXML.cpp -c --CometWritePercolator.o: CometWritePercolator.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePercolator.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometWritePercolator.cpp -c --CometWriteTxt.o: CometWriteTxt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteTxt.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometWriteTxt.cpp -c --CometSearchManager.o: CometSearchManager.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometSearchManager.cpp -c --CometInterfaces.o: CometInterfaces.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h -- ${CXX} ${CXXFLAGS} CometInterfaces.cpp -c -+CXX = g++ -+GCC = gcc +@@ -1,10 +1,12 @@ + CXX = g++ + GCC = gcc +-MSTOOLKIT = ../MSToolkit +-override CXXFLAGS += -O3 -Wall -fpermissive -Wextra -Wno-write-strings -static -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -I. -I$(MSTOOLKIT)/include +MSTOOLKIT = mstoolkit +override CXXFLAGS += -O3 -Wall -Wextra -Wno-write-strings -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -I. -I/usr/include/lib$(MSTOOLKIT) -+ -+COMETSEARCH = Threading.o CometInterfaces.o CometSearch.o CometPreprocess.o CometPostAnalysis.o CometMassSpecUtils.o CometWriteOut.o CometWriteSqt.o CometWritePepXML.o CometWritePercolator.o CometWriteTxt.o CometSearchManager.o -+ + + COMETSEARCH = Threading.o CometInterfaces.o CometSearch.o CometPreprocess.o CometPostAnalysis.o CometMassSpecUtils.o CometWriteOut.o CometWriteSqt.o CometWritePepXML.o CometWritePercolator.o CometWriteTxt.o CometSearchManager.o CometCheckForUpdates.o + +LIBS = -l$(MSTOOLKIT) + -+all: $(COMETSEARCH) -+ -+clean: -+ rm -f *.o -+ -+Threading.o: Threading.cpp Threading.h -+ ${CXX} ${CXXFLAGS} Threading.cpp -c -+CometSearch.o: CometSearch.cpp Common.h CometData.h CometDataInternal.h CometSearch.h CometInterfaces.h ThreadPool.h -+ ${CXX} ${CXXFLAGS} CometSearch.cpp -c + all: $(COMETSEARCH) + ar rcs libcometsearch.a $(COMETSEARCH) + +@@ -15,7 +17,7 @@ Threading.o: Threading.cpp Threading.h + ${CXX} ${CXXFLAGS} Threading.cpp -c + CometSearch.o: CometSearch.cpp Common.h CometData.h CometDataInternal.h CometSearch.h CometInterfaces.h ThreadPool.h + ${CXX} ${CXXFLAGS} CometSearch.cpp -c +-CometPreprocess.o: CometPreprocess.cpp Common.h CometData.h CometDataInternal.h CometPreprocess.h CometInterfaces.h $(MSTOOLKIT) +CometPreprocess.o: CometPreprocess.cpp Common.h CometData.h CometDataInternal.h CometPreprocess.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} ${LIBS} CometPreprocess.cpp -c -+CometMassSpecUtils.o: CometMassSpecUtils.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometMassSpecUtils.cpp -c -+CometPostAnalysis.o: CometPostAnalysis.cpp Common.h CometData.h CometDataInternal.h ThreadPool.h CometPostAnalysis.h CometMassSpecUtils.h CometInterfaces.h CometDecoys.h -+ ${CXX} ${CXXFLAGS} CometPostAnalysis.cpp -c -+CometWriteOut.o: CometWriteOut.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteOut.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometWriteOut.cpp -c -+CometWriteSqt.o: CometWriteSqt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteSqt.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometWriteSqt.cpp -c -+CometWritePepXML.o: CometWritePepXML.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePepXML.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometWritePepXML.cpp -c -+CometWritePercolator.o: CometWritePercolator.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWritePercolator.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometWritePercolator.cpp -c -+CometWriteTxt.o: CometWriteTxt.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometWriteTxt.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometWriteTxt.cpp -c -+CometSearchManager.o: CometSearchManager.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometSearchManager.cpp -c -+CometInterfaces.o: CometInterfaces.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometSearch.h CometPostAnalysis.h CometWriteOut.h CometWriteSqt.h CometWriteTxt.h CometWritePepXML.h CometWritePercolator.h Threading.h ThreadPool.h CometSearchManager.h CometInterfaces.h -+ ${CXX} ${CXXFLAGS} CometInterfaces.cpp -c + ${CXX} ${CXXFLAGS} CometPreprocess.cpp -c + CometMassSpecUtils.o: CometMassSpecUtils.cpp Common.h CometData.h CometDataInternal.h CometMassSpecUtils.h CometInterfaces.h + ${CXX} ${CXXFLAGS} CometMassSpecUtils.cpp -c diff --git a/Makefile b/Makefile -index cfafe47..1eefdbf 100644 +index 847a148..8ba5a41 100644 --- a/Makefile +++ b/Makefile -@@ -1,24 +1,25 @@ +@@ -1,24 +1,27 @@ CXX = g++ -MSTOOLKIT = MSToolkit +MSTOOLKIT = mstoolkit @@ -94,30 +41,29 @@ +override CXXFLAGS += -O3 -Wall -Wextra -Wno-char-subscripts -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__LINUX__ -I/usr/include/lib$(MSTOOLKIT) -I$(COMETSEARCH) +EXECNAME = comet-ms OBJS = Comet.o --DEPS = CometSearch/CometData.h CometSearch/CometDataInternal.h CometSearch/CometPreprocess.h CometSearch/CometWriteOut.h CometSearch/CometWriteSqt.h CometSearch/OSSpecificThreading.h CometSearch/CometMassSpecUtils.h CometSearch/CometSearch.h CometSearch/CometWritePepXML.h CometSearch/CometWriteTxt.h CometSearch/Threading.h CometSearch/CometPostAnalysis.h CometSearch/CometSearchManager.h CometSearch/CometWritePercolator.h CometSearch/Common.h CometSearch/ThreadPool.h CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp -+DEPS = CometSearch/CometInterfaces.h CometSearch/CometData.h CometSearch/CometDataInternal.h CometSearch/CometPreprocess.h CometSearch/CometWriteOut.h CometSearch/CometWriteSqt.h CometSearch/OSSpecificThreading.h CometSearch/CometMassSpecUtils.h CometSearch/CometSearch.h CometSearch/CometWritePepXML.h CometSearch/CometWriteTxt.h CometSearch/Threading.h CometSearch/CometPostAnalysis.h CometSearch/CometSearchManager.h CometSearch/CometWritePercolator.h CometSearch/Common.h CometSearch/ThreadPool.h CometSearch/CometInterfaces.cpp CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp + DEPS = CometSearch/CometData.h CometSearch/CometDataInternal.h CometSearch/CometPreprocess.h CometSearch/CometWriteOut.h CometSearch/CometWriteSqt.h CometSearch/OSSpecificThreading.h CometSearch/CometMassSpecUtils.h CometSearch/CometSearch.h CometSearch/CometCheckForUpdates.h CometSearch/CometWritePepXML.h CometSearch/CometWriteTxt.h CometSearch/Threading.h CometSearch/CometPostAnalysis.h CometSearch/CometSearchManager.h CometSearch/CometWritePercolator.h CometSearch/Common.h CometSearch/ThreadPool.h CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometCheckForUpdates.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp --LIBPATHS = -L$(MSTOOLKIT) -L$(COMETSEARCH) --LIBS = -lcometsearch -lmstoolkitlite -lm -lpthread ++OBJ_DEPS = CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometCheckForUpdates.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp ++ ++LIBPATHS = -L/usr/lib ++LIBS = -lmstoolkitlite -lm -lpthread ++ + LIBPATHS = -L$(MSTOOLKIT) -L$(COMETSEARCH) + LIBS = -lcometsearch -lmstoolkitlite -lm -lpthread -ifdef MSYSTEM - LIBS += -lws2_32 -endif -+OBJ_DEPS = CometSearch/CometInterfaces.o CometSearch/CometMassSpecUtils.o CometSearch/CometSearch.o CometSearch/CometWritePepXML.o CometSearch/CometWriteTxt.o CometSearch/CometPostAnalysis.o CometSearch/CometSearchManager.o CometSearch/CometWritePercolator.o CometSearch/Threading.o CometSearch/CometPreprocess.o CometSearch/CometWriteOut.o CometSearch/CometWriteSqt.o -comet.exe: $(OBJS) - cd $(MSTOOLKIT) ; make lite ; cd ../CometSearch ; make - ${CXX} $(CXXFLAGS) $(OBJS) $(LIBPATHS) $(LIBS) -o ${EXECNAME} - --Comet.o: Comet.cpp $(DEPS) -- ${CXX} ${CXXFLAGS} Comet.cpp -c -+LIBPATHS = -L/usr/lib -+LIBS = -lmstoolkitlite -lm -lpthread -+ +comet-ms: $(OBJS) + cd CometSearch ; make + echo "done" + ${CXX} $(CXXFLAGS) $(OBJ_DEPS) $(OBJS) $(LIBPATHS) $(LIBS) -o ${EXECNAME} -+ + +-Comet.o: Comet.cpp $(DEPS) +- ${CXX} ${CXXFLAGS} Comet.cpp -c +Comet.o: Comet.cpp $(OBJ_DEPS) + ${CXX} ${CXXFLAGS} $(OBJ_DEPS) Comet.cpp -c Binary files /tmp/tmpfq1yaN/YdyrUwCmhs/comet-ms-2017014/icon/comet.ico and /tmp/tmpfq1yaN/XSt9Ug9MuX/comet-ms-2018012/icon/comet.ico differ Binary files /tmp/tmpfq1yaN/YdyrUwCmhs/comet-ms-2017014/icon/CometUI.ico and /tmp/tmpfq1yaN/XSt9Ug9MuX/comet-ms-2018012/icon/CometUI.ico differ diff -Nru comet-ms-2017014/Makefile comet-ms-2018012/Makefile --- comet-ms-2017014/Makefile 2018-02-21 09:43:06.000000000 +0000 +++ comet-ms-2018012/Makefile 2018-06-13 06:57:58.000000000 +0000 @@ -4,7 +4,7 @@ override CXXFLAGS += -O3 -Wall -Wextra -static -Wno-char-subscripts -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__LINUX__ -I$(MSTOOLKIT)/include -I$(COMETSEARCH) EXECNAME = comet.exe OBJS = Comet.o -DEPS = CometSearch/CometData.h CometSearch/CometDataInternal.h CometSearch/CometPreprocess.h CometSearch/CometWriteOut.h CometSearch/CometWriteSqt.h CometSearch/OSSpecificThreading.h CometSearch/CometMassSpecUtils.h CometSearch/CometSearch.h CometSearch/CometWritePepXML.h CometSearch/CometWriteTxt.h CometSearch/Threading.h CometSearch/CometPostAnalysis.h CometSearch/CometSearchManager.h CometSearch/CometWritePercolator.h CometSearch/Common.h CometSearch/ThreadPool.h CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp +DEPS = CometSearch/CometData.h CometSearch/CometDataInternal.h CometSearch/CometPreprocess.h CometSearch/CometWriteOut.h CometSearch/CometWriteSqt.h CometSearch/OSSpecificThreading.h CometSearch/CometMassSpecUtils.h CometSearch/CometSearch.h CometSearch/CometCheckForUpdates.h CometSearch/CometWritePepXML.h CometSearch/CometWriteTxt.h CometSearch/Threading.h CometSearch/CometPostAnalysis.h CometSearch/CometSearchManager.h CometSearch/CometWritePercolator.h CometSearch/Common.h CometSearch/ThreadPool.h CometSearch/CometMassSpecUtils.cpp CometSearch/CometSearch.cpp CometSearch/CometCheckForUpdates.cpp CometSearch/CometWritePepXML.cpp CometSearch/CometWriteTxt.cpp CometSearch/CometPostAnalysis.cpp CometSearch/CometSearchManager.cpp CometSearch/CometWritePercolator.cpp CometSearch/Threading.cpp CometSearch/CometPreprocess.cpp CometSearch/CometWriteOut.cpp CometSearch/CometWriteSqt.cpp LIBPATHS = -L$(MSTOOLKIT) -L$(COMETSEARCH) LIBS = -lcometsearch -lmstoolkitlite -lm -lpthread Binary files /tmp/tmpfq1yaN/YdyrUwCmhs/comet-ms-2017014/resource.h and /tmp/tmpfq1yaN/XSt9Ug9MuX/comet-ms-2018012/resource.h differ