@@ -512,7 +512,7 @@ void CometFragmentIndex::AddFragments(vector<PlainPeptideIndex>& g_vRawPeptides,
512
512
if (dCalcPepMass > g_massRange.dMaxMass || dCalcPepMass < g_staticParams.options .dPeptideMassLow )
513
513
return ;
514
514
515
- if (!g_bIndexPrecursors[BIN (dCalcPepMass)])
515
+ if (!g_staticParams. options . iFragIndexSkipReadPrecursors && ! g_bIndexPrecursors[BIN (dCalcPepMass)])
516
516
return ;
517
517
518
518
unsigned int uiCurrentFragmentPeptide = -1 ;
@@ -632,11 +632,19 @@ bool CometFragmentIndex::WritePlainPeptideIndex(ThreadPool *tp)
632
632
{
633
633
FILE *fp;
634
634
bool bSucceeded;
635
+ bool bSwapIdxExtension = false ;
635
636
string strOut;
636
637
637
638
string strIndexFile;
638
639
639
- strIndexFile = g_staticParams.databaseInfo .szDatabase + string (" .idx" );
640
+ if (strstr (g_staticParams.databaseInfo .szDatabase + strlen (g_staticParams.databaseInfo .szDatabase ) - 4 , " .idx" ))
641
+ {
642
+ strIndexFile = g_staticParams.databaseInfo .szDatabase ; // .idx specified but not present to create it
643
+ g_staticParams.databaseInfo .szDatabase [strlen (g_staticParams.databaseInfo .szDatabase ) - 4 ] = ' \0 ' ;
644
+ bSwapIdxExtension = true ; // need to make database regular fasta, then RunSearch to get plain peptides, then swap back
645
+ }
646
+ else
647
+ strIndexFile = g_staticParams.databaseInfo .szDatabase + string (" .idx" ); // fasta specified so add .idx extension
640
648
641
649
if ((fp = fopen (strIndexFile.c_str (), " wb" )) == NULL )
642
650
{
@@ -656,19 +664,27 @@ bool CometFragmentIndex::WritePlainPeptideIndex(ThreadPool *tp)
656
664
if (!bSucceeded)
657
665
return bSucceeded;
658
666
659
- // tp->fillPool( g_staticParams.options.iNumThreads < 0 ? 0 : g_staticParams.options.iNumThreads-1);
660
667
if (g_massRange.dMaxMass - g_massRange.dMinMass > g_massRange.dMinMass )
661
668
g_massRange.bNarrowMassRange = true ;
662
669
else
663
670
g_massRange.bNarrowMassRange = false ;
664
671
665
672
if (bSucceeded)
666
673
{
674
+ g_staticParams.options .bCreateIndex = true ;
675
+ g_staticParams.bIndexDb = false ;
676
+
667
677
// this step calls RunSearch just to pull out all peptides
668
678
// to write into the .idx pepties/proteins file
669
679
bSucceeded = CometSearch::RunSearch (0 , 0 , tp);
680
+
681
+ g_staticParams.options .bCreateIndex = false ;
682
+ g_staticParams.bIndexDb = true ;
670
683
}
671
684
685
+ if (bSwapIdxExtension)
686
+ strcat (g_staticParams.databaseInfo .szDatabase , " .idx" );
687
+
672
688
if (!bSucceeded)
673
689
{
674
690
char szErrorMsg[SIZE_ERROR];
@@ -877,7 +893,7 @@ bool CometFragmentIndex::ReadPlainPeptideIndex(void)
877
893
if (g_bPlainPeptideIndexRead)
878
894
return 1 ;
879
895
880
- if (g_staticParams.options .bCreateIndex )
896
+ if (g_staticParams.options .bCreateIndex && ! strstr (g_staticParams. databaseInfo . szDatabase + strlen (g_staticParams. databaseInfo . szDatabase ) - 4 , " .idx " ) )
881
897
strIndexFile = g_staticParams.databaseInfo .szDatabase + string (" .idx" );
882
898
else // database already is .idx
883
899
strIndexFile = g_staticParams.databaseInfo .szDatabase ;
@@ -1069,6 +1085,7 @@ bool CometFragmentIndex::ReadPlainPeptideIndex(void)
1069
1085
int iLen;
1070
1086
char szPeptide[MAX_PEPTIDE_LEN];
1071
1087
1088
+ g_vRawPeptides.clear ();
1072
1089
for (size_t it = 0 ; it < tNumPeptides; ++it)
1073
1090
{
1074
1091
tTmp = fread (&iLen, sizeof (int ), 1 , fp);
@@ -1091,7 +1108,6 @@ bool CometFragmentIndex::ReadPlainPeptideIndex(void)
1091
1108
1092
1109
g_pvProteinsList.clear ();
1093
1110
g_pvProteinsList.reserve (tSize);
1094
-
1095
1111
for (size_t it = 0 ; it < tSize; ++it)
1096
1112
{
1097
1113
size_t tNumProteinOffsets;
@@ -1126,13 +1142,15 @@ bool CometFragmentIndex::ReadPlainPeptideIndex(void)
1126
1142
1127
1143
int iTmp;
1128
1144
char szTmp[MAX_PEPTIDE_LEN];
1145
+ MOD_SEQS.clear ();
1129
1146
for (unsigned long i = 0 ; i < ulSizeModSeqs; ++i)
1130
1147
{
1131
1148
tTmp = fread (&iTmp, sizeof (int ), 1 , fp); // read length
1132
1149
tTmp = fread (szTmp, 1 , iTmp, fp);
1133
1150
szTmp[iTmp]=' \0 ' ;
1134
1151
MOD_SEQS.push_back (szTmp);
1135
1152
}
1153
+ MOD_NUMBERS.clear ();
1136
1154
for (unsigned long i = 0 ; i < ulModNumSize; ++i)
1137
1155
{
1138
1156
ModificationNumber sTmp ;
0 commit comments